Datasets documentation

Mesh verilerini yükle

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Mesh verilerini yükle

Mesh veri kümeleri, trimesh.Trimesh veya trimesh.Scene nesneleri içeren Mesh türünde sütunlara sahiptir.

Mesh veri setleriyle çalışmak için mesh bağımlılığının yüklü olması gerekir. Nasıl yükleneceğini öğrenmek için kurulum kılavuzuna göz atın.

Bir mesh veri seti yüklediğinizde ve mesh sütununu çağırdığınızda, mesh'ler trimesh ile çözümlenir:

>>> from datasets import load_dataset, Mesh

>>> dataset = load_dataset("VINAY-UMRETHE/My-Mesh-Dataset", split="train")
>>> dataset[0]["mesh"]
<trimesh.Scene(len(geometry)=33)>

Dosya içeriğine bağlı olarak trimesh, bir trimesh.Trimesh nesnesi veya bir trimesh.Scene nesnesi döndürebilir.

Satır indeksini önce, ardından mesh sütununu kullanarak mesh veri setine erişin - dataset[0]["mesh"] - böylece veri setindeki tüm mesh dosyalarının çözümlenmesini önleyin. Aksi takdirde, büyük bir veri setiniz varsa bu yavaş ve zaman alıcı bir süreç olabilir.

Herhangi bir tür veri setinin nasıl yükleneceğine dair bir kılavuz için genel yükleme kılavuzuna göz atın.

Yerel dosyalar

Bir veri setini mesh yollarından yükleyebilirsiniz. Mesh dosya yollarını içeren bir sütunu kabul etmek için cast_column() fonksiyonunu kullanın ve onu Mesh özelliğiyle bir trimesh nesnesine çözümlen:

>>> from datasets import Dataset, Mesh

>>> dataset = Dataset.from_dict({"mesh": ["path/to/model_1.glb", "path/to/model_2.ply", "path/to/model_3.stl"]}).cast_column("mesh", Mesh())
>>> dataset[0]["mesh"]
<trimesh.Scene(len(geometry)=33)>

Mesh veri setinin alt yatan yolunu veya baytlarını mesh nesnesini çözmek istemeden yüklemek istiyorsanız, Mesh özelliğinde decode=False olarak ayarlayın:

>>> dataset = load_dataset("VINAY-UMRETHE/My-Mesh-Dataset", split="train").cast_column("mesh", Mesh(decode=False))
>>> dataset[0]["mesh"]
{'bytes': b'...',
 'path': '00001.glb'}

Mesh özelliği .glb, .ply ve .stl dosyalarını destekler. Dosya içeriğine bağlı olarak trimesh, bir trimesh.Trimesh nesnesi veya bir trimesh.Scene nesnesi döndürebilir.

MeshFolder

Bir özel veri yükleyici yazma gerektirmeyen MeshFolder veri seti oluşturucusuyla bir veri seti de yükleyebilirsiniz. Bu, MeshFolder'in binlerce 3D dosya içeren mesh veri setlerini hızlı bir şekilde oluşturmak ve yüklemek için kullanılmasını sağlar. Mesh veri seti yapınız şu şekilde olmalıdır:

folder/train/diya/brass_diya.glb
folder/train/diya/clay_diya.ply
folder/train/diya/festival_diya.stl

folder/train/kalash/copper_kalash.glb
folder/train/kalash/pooja_kalash.ply
folder/train/kalash/temple_kalash.stl

Veri kümesi MeshFolder yapısını izliyorsa, doğrudan load_dataset() ile yükleyebilirsiniz:

>>> from datasets import load_dataset

>>> dataset = load_dataset("username/dataset_name")
>>> # OR locally:
>>> dataset = load_dataset("/path/to/folder")

Yerel veri kümeleri için bu, load_dataset() içinde meshfolder'ı ve data_dir içindeki dizini manuel olarak geçmeye eşdeğerdir:

>>> dataset = load_dataset("meshfolder", data_dir="/path/to/folder")

Ardından ağları trimesh nesneleri olarak erişebilirsiniz:

>>> dataset["train"][0]
{"mesh": <trimesh.Scene(len(geometry)=33)>, "label": 0}

Üstveri dosyasındaki bilgileri yok saymak için load_dataset() içinde drop_metadata=True değerini ayarlayın:

>>> from datasets import load_dataset

>>> dataset = load_dataset("username/dataset_with_metadata", drop_metadata=True)

Bir metadata dosyanız yoksa, MeshFolder etiket adını dizin adından otomatik olarak çıkarır. Otomatik olarak oluşturulan etiketleri kaldırmak istiyorsanız, drop_labels=True olarak ayarlayın. Bu durumda, veri setiniz yalnızca bir mesh sütunu içerecektir:

>>> from datasets import load_dataset

>>> dataset = load_dataset("username/dataset_without_metadata", drop_labels=True)

Son olarak filters argümanı, etikete veya meta verilerdeki bir koşula dayalı olarak veri setinin yalnızca bir alt kümesini yüklemenizi sağlar. Bu, meta veriler Parquet formatındaysa özellikle faydalıdır, çünkü bu format hızlı filtrelemeyi mümkün kılar. Varsayılan olarak veri seti filtrelemeden önce tamamen indirildiği için, bu argümanı streaming=True ile kullanmanız da önerilir.

>>> filters = [("label", "=", 0)]
>>> dataset = load_dataset("username/dataset_name", streaming=True, filters=filters)

Kendi MeshFolder veri setinizi oluşturmaya ilişkin daha fazla bilgi için Mesh veri seti oluşturma kılavuzuna göz atın.

Mesh çözümleme

Varsayılan olarak, bir veri setinde gezindiğinizde ağlar (meshes) sıralı olarak trimesh.Trimesh veya trimesh.Scene nesneleri olarak çözümlenir.

trimesh nesneleri olarak çözümlenen mesh'lerle ilgilenmiyorsanız ve bunun yerine yol veya baytlara erişmek istiyorsanız, çözümlenmeyi devre dışı bırakabilirsiniz:

>>> dataset = dataset.decode(False)

Not: IterableDataset.decode() şu anda yalnızca akış veri setleri için kullanılabilir.

Update on GitHub