Datasets documentation
Mesh verilerini yükle
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
meshbağı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
meshsü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
MeshFolderveri 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