Datasets documentation

Buat dataset mesh

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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 MeshFolder dan 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 MeshFolder membuat 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 label tidak akan ditambahkan secara otomatis. Jika Anda membutuhkannya, tetapkan drop_labels=False secara 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 frame

atau 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 frame

Muat 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")
Update on GitHub