Datasets documentation
Buat dataset mesh
Buat dataset mesh
Ada dua metode untuk membuat dan membagikan dataset mesh. Panduan ini akan menunjukkan cara Anda:
Buat dataset mesh dari file lokal di python dengan Dataset.push_to_hub(). Ini adalah cara mudah yang hanya membutuhkan beberapa langkah di python.
Buat dataset mesh dengan
MeshFolderdan beberapa metadata. Ini adalah solusi tanpa kode untuk membuat dataset mesh dengan cepat yang berisi beberapa ribu file 3D.
Anda dapat mengontrol akses ke dataset Anda dengan meminta pengguna untuk membagikan informasi kontak mereka terlebih dahulu. Lihat panduan Gated datasets untuk informasi lebih lanjut tentang cara mengaktifkan fitur ini di Hub.
File lokal
Anda dapat memuat dataset Anda sendiri menggunakan path ke file mesh Anda. Gunakan fungsi cast_column() untuk mengambil kolom berisi path file mesh, lalu mengubahnya menjadi fitur Mesh:
>>> from datasets import Dataset, Mesh
>>> 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())
>>> mesh_dataset[0]["mesh"]
<trimesh.Scene(len(geometry)=33)>Lalu unggah dataset ke Hugging Face Hub menggunakan Dataset.push_to_hub():
mesh_dataset.push_to_hub("<username>/my_dataset")Hal ini akan membuat repositori dataset yang berisi dataset mesh Anda:
my_dataset/README.md my_dataset/data/train-00000-of-00001.parquet
MeshFolder
MeshFolder adalah pembangun dataset yang dirancang untuk memuat dataset mesh dengan beberapa ribu file mesh dengan cepat tanpa mengharuskan Anda menulis kode apa pun.
Lihat hierarki pola Split untuk mempelajari lebih lanjut tentang bagaimana
MeshFoldermembuat split dataset berdasarkan struktur repositori dataset Anda.
MeshFolder secara otomatis menyimpulkan label kelas dari dataset Anda berdasarkan nama direktori. Simpan dataset Anda dalam struktur direktori seperti:
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
Jika dataset mengikuti struktur MeshFolder, maka Anda dapat memuatnya langsung dengan load_dataset():
>>> from datasets import load_dataset
>>> dataset = load_dataset("path/to/folder")Ini setara dengan meneruskan meshfolder secara manual di load_dataset() dan direktori di data_dir:
>>> dataset = load_dataset("meshfolder", data_dir="/path/to/folder")Anda juga dapat menggunakan meshfolder untuk memuat dataset yang melibatkan beberapa split. Untuk melakukannya, direktori dataset Anda harus memiliki struktur berikut:
folder/train/diya/brass_diya.glb folder/train/kalash/copper_kalash.glb folder/test/diya/clay_diya.ply folder/test/kalash/temple_kalash.stl
Jika semua file mesh berada dalam satu direktori atau tidak berada pada level struktur direktori yang sama, kolom
labeltidak akan ditambahkan secara otomatis. Jika Anda membutuhkannya, tetapkandrop_labels=Falsesecara eksplisit.
Jika ada informasi tambahan yang ingin Anda sertakan tentang dataset Anda, seperti teks caption atau metadata aset 3D, tambahkan sebagai file metadata.csv di folder Anda. Anda juga dapat menggunakan file JSONL metadata.jsonl atau file Parquet metadata.parquet.
folder/train/metadata.csv folder/train/0001.glb folder/train/0002.ply folder/train/0003.stl
Anda juga dapat mengompres file mesh Anda, dan dalam hal ini setiap file zip harus berisi file mesh dan metadata.
folder/train.zip folder/test.zip folder/validation.zip
File metadata.csv Anda harus memiliki field file_name atau *_file_name yang menghubungkan file mesh dengan metadata mereka:
file_name,caption
0001.glb,A brass diya with a small bowl and raised wick holder
0002.ply,A copper kalash with a rounded body and narrow neck
0003.stl,A carved jharokha window with an arched frameatau menggunakan metadata.jsonl:
{"file_name": "0001.glb", "caption": "A brass diya with a small bowl and raised wick holder"}
{"file_name": "0002.ply", "caption": "A copper kalash with a rounded body and narrow neck"}
{"file_name": "0003.stl", "caption": "A carved jharokha window with an arched frame"}Di sini, file_name harus berupa nama file mesh yang berada di samping file metadata. Secara lebih umum, ini harus berupa path relatif dari direktori yang berisi metadata ke file mesh.
Anda dapat menunjuk ke lebih dari satu mesh di setiap baris dalam dataset Anda, misalnya jika input dan output Anda sama-sama berupa file mesh:
{"input_file_name": "0001.glb", "output_file_name": "0001_output.glb"}
{"input_file_name": "0002.ply", "output_file_name": "0002_output.ply"}
{"input_file_name": "0003.stl", "output_file_name": "0003_output.stl"}Anda juga dapat mendefinisikan daftar mesh. Dalam hal itu, Anda perlu menamai field file_names atau *_file_names. Berikut adalah contohnya:
{"parts_file_names": ["0001_bowl.glb", "0001_wick_holder.glb"], "label": "diya"}
{"parts_file_names": ["0002_body.ply", "0002_neck.ply"], "label": "kalash"}
{"parts_file_names": ["0003_frame.stl", "0003_arch.stl"], "label": "jharokha"}Captioning Mesh
Dataset captioning mesh memiliki teks yang menggambarkan mesh 3D. Contoh metadata.csv mungkin terlihat seperti:
file_name,text
0001.glb,A brass diya with a small bowl and raised wick holder
0002.ply,A copper kalash with a rounded body and narrow neck
0003.stl,A carved jharokha window with an arched frameMuat dataset dengan MeshFolder, dan kolom text untuk caption mesh akan dibuat:
>>> dataset = load_dataset("meshfolder", data_dir="/path/to/folder", split="train")
>>> dataset[0]["text"]
"A brass diya with a small bowl and raised wick holder"Unggah dataset ke Hub
Setelah Anda membuat dataset, Anda dapat membagikannya ke Hub dengan metode push_to_hub(). Pastikan Anda telah menginstal pustaka huggingface_hub dan telah masuk ke akun Hugging Face Anda (lihat tutorial Upload with Python untuk detail lebih lanjut).
Unggah dataset Anda dengan push_to_hub():
>>> from datasets import load_dataset
>>> dataset = load_dataset("meshfolder", data_dir="/path/to/folder", split="train")
>>> dataset.push_to_hub("username/my-mesh-captioning-dataset")