- GenCAD adalah model yang dapat menghasilkan 3D CAD, riwayat perintah CAD terparametrisasi lengkap, dan program CAD hanya dari input gambar
- B-rep rumit untuk pembelajaran AI, sementara mesh, voxel, dan point cloud lebih mudah diperoleh datanya tetapi mengorbankan akurasi dan kemudahan modifikasi
- Setelah menghasilkan urutan perintah CAD terparametrisasi dari gambar, hasilnya dapat diubah menjadi model solid 3D melalui geometry kernel
- Dengan menggabungkan Transformer autoregresif, contrastive learning, model difusi laten, dan decoder, model ini menghasilkan serta memulihkan representasi laten gambar dan perintah CAD
- Dapat membuat beberapa sampel CAD dari gambar yang sama, serta mendukung pencarian bersyarat gambar untuk menemukan 3 teratas dari sekitar 7.000 program CAD
Ringkasan
- GenCAD adalah model generasi CAD berbasis kondisi gambar yang menghasilkan bukan hanya 3D CAD, tetapi juga riwayat perintah CAD terparametrisasi lengkap dan program CAD
- Struktur data CAD seperti B-rep sangat kompleks sehingga sulit untuk melatih model AI secara efisien, sementara representasi seperti mesh, voxel, dan point cloud lebih mudah diperoleh datanya tetapi mengorbankan akurasi serta kemudahan pengeditan model CAD nyata
- GenCAD menghasilkan urutan perintah CAD terparametrisasi dari gambar, lalu mengubahnya menjadi model solid 3D dengan geometry kernel
- Tujuannya adalah mengotomatisasi pemodelan 3D yang presisi dan dapat diedit berbasis gambar untuk pekerjaan rekayasa, manufaktur, dan eksplorasi ruang desain
Komposisi model dan fungsi
-
Arsitektur
- Encoder Transformer autoregresif mempelajari representasi laten dari urutan perintah CAD
- Model berbasis contrastive learning mempelajari representasi laten bersama antara urutan perintah CAD dan gambar CAD
- Model difusi laten menghasilkan representasi laten urutan perintah CAD dengan gambar CAD sebagai kondisi
- Model decoder mengubah representasi laten CAD menjadi urutan perintah CAD terparametrisasi
-
Generasi CAD
- GenCAD dapat menghasilkan model CAD dari input rendering gambar
- Bahkan dengan input gambar yang sama, GenCAD dapat menghasilkan beberapa sampel CAD untuk memberikan keragaman sampel
-
Pencarian CAD
- Mendukung pencarian CAD berbasis kondisi gambar, dan menemukan 3 program CAD teratas dari kumpulan sekitar 7.000 program CAD
-
Materi
- arXiv: makalah GenCAD
- Video: video demo
- Code: repositori kode GenCAD
1 komentar
Komentar Hacker News
Sudah saya coba jalankan selama beberapa jam, tetapi untuk input yang bukan bagian dari data pelatihan, model ini bahkan tidak bisa menghasilkan gambar sangat sederhana dengan hasil yang layak
Di GitHub tertulis bahwa bahkan pada data pelatihannya sendiri tingkat keandalannya hanya sekitar 60%, jadi gambar di halaman pertama terasa cukup menyesatkan
Saya membuat 10 gambar dengan tingkat kompleksitas mirip contoh dan menjalankannya sekitar 50 kali untuk tiap gambar, tetapi tidak ada satu pun yang bekerja dengan benar, dan ketika sesekali menghasilkan sesuatu pun hasilnya sepenuhnya salah
Dalam kondisi sekarang, ini terasa cukup misleading dan tampaknya masih butuh banyak pekerjaan
Akan sangat bagus jika bisa membuat model CAD terparameterisasi dari sketsa gambar tangan
Menarik, tetapi saya tidak yakin seberapa praktis ini. Bagian yang memakan waktu dari gambar CAD adalah menentukan dimensi, jarak, ukuran, toleransi, dan sebagainya untuk tiap feature secara presisi, lalu menambahkan constraint agar nanti mudah diubah, dan ini sama sekali tidak membantu bagian itu
Mungkin kita bisa menggambar yang diinginkan sebagai sketsa 2D lalu menghasilkannya, tetapi pada akhirnya bagian yang sulit tetap harus dikerjakan sendiri
Saya cukup terbiasa dengan OpenSCAD, tetapi begitu sedikit lebih kompleks saya sering mentok. Belakangan ini saya membuat keran untuk wastafel dapur Lego Duplo milik anak saya
Kalau ada alat AI/LLM yang bagus, tempat saya bisa memasukkan sketsa dan parameter lalu mengurangi waktu yang habis untuk mencari di web dan menonton tutorial tentang cara mengekstrusi lingkaran sepanjang kurva, saya akan sangat berterima kasih
Sebagai catatan, alat AI yang ada sekarang cukup cocok dengan OpenSCAD, jadi jika Anda butuh model terparameterisasi yang bisa dibuat dari bentuk-bentuk sederhana, saya sangat merekomendasikan alur kerja ini
Di pekerjaan lama, alasan kami menghabiskan banyak waktu untuk ini cukup masuk akal. Point cloud yang dihasilkan dari kamera kepala berkualitas buruk membuat model menjadi sangat kompleks
Misalnya, kalau melihat point cloud meja Ikea LACK (https://www.ikea.com/gb/en/p/lack-nest-of-tables-set-of-2-wh...), hasilnya akan sangat kompleks. Jadi untuk bisa sedikit interaktif saja biaya komputasinya besar (https://www.researchgate.net/publication/221064696/figure/fi...)
Karena itu ada banyak riset untuk mengubah point cloud menjadi model “CAD” yang disederhanakan. Jadi meja LACK direpresentasikan bukan sebagai 400 ribu segitiga, melainkan kira-kira 40 segitiga
Salah satu caranya adalah pendekatan seperti, “point cloud ini terlihat seperti meja, jadi mari hasilkan banyak kandidat meja dan lihat apakah cocok.” Untuk itu, kita perlu memahami CAD parametrik dan punya model yang bisa membuat banyak meja dengan parameter yang bisa disesuaikan sampai cocok
Pendekatan yang mungkin lebih mudah adalah mengambil point cloud, lalu model gambar yang dilatih pada model CAD menggambar model itu sebagai gambar 2D, kemudian memakai alat seperti ini untuk mendapatkan model sebenarnya
Tidak efisien, tetapi mungkin bisa berhasil. Ada juga banyak penggunaan yang kurang diinginkan seperti plagiarisme otomatis
Saat meninjau ini untuk memperbaiki CAD AI saya sendiri, saya melihat percobaan serupa[0]. Ini solusi-solusi dengan potensi besar, tetapi menurut saya proyek atau bobot saat ini belum punya data pelatihan atau waktu pelatihan yang cukup untuk bekerja baik pada model acak
MeshCoder pada dasarnya hanya bekerja pada model berbasis data pelatihan. Saya belum mencoba GenCAD, tetapi komentar lain mengonfirmasi kecurigaan saya
[0]: https://daibingquan.github.io/MeshCoder/
[1]: https://grandpacad.com
Cara seperti ini sudah lama bisa dilakukan dengan mudah di OpenSCAD. Saya sudah membuat banyak model keren dan kompleks dengan cara ini, dan juga membuat repositori prompt untuk menunjukkan ke LLM bagaimana melakukannya, termasuk banyak model buatan saya sendiri
https://github.com/cjtrowbridge/vibe-modeling
Sebagai perbandingan, salah satu desain terbaru saya seperti ini, dan saya pun masih akan menyebutnya contoh yang sangat sederhana[4]
Saya bukan insinyur mesin terlatih yang bekerja secara komersial, hanya programmer yang mendesain di waktu luang
[1] - https://github.com/cjtrowbridge/vibe-modeling/blob/main/outp...
[2] - https://github.com/cjtrowbridge/vibe-modeling/blob/main/outp...
[3] - https://github.com/cjtrowbridge/vibe-modeling/blob/main/outp...
[4] - https://object.ceph-eu.hswaw.net/q3k-personal/fe3e54e6df604a...
Saya ingin melihat seberapa baik ini bekerja pada foto komponen nyata atau gambar tangan, tetapi begitu mencoba menyiapkan image Docker, berbagai dependensi yang belum terpasang langsung bermasalah dalam segala cara
Dari contoh-contohnya, saya jadi curiga bahwa ini memang tidak akan bekerja baik jika inputnya bukan gambar yang sejak awal dihasilkan dari CAD
Siapa pun yang tertarik pada hal seperti ini kemungkinan juga akan menyukai OpenSCAD. Anda bisa membuat model CAD 3D dengan kode
https://openscad.org/
Kalau penulisnya membaca ini, saya harap video autoplay-nya dihapus. Saat saya sedang mendengarkan hal lain di ponsel, itu selalu merebut audio dan memutusnya
Kernel CAD BRep open source saya dalam Rust mungkin juga menarik: https://github.com/ecto/vcad
Versi hosting-nya ada di https://vcad.io
Saya juga menulis sedikit tentang apa saja yang masuk ke dalam aplikasi CAD: https://campedersen.com/tessellation
Agak mencurigakan bahwa satu orang menulis sekitar 115 ribu baris crate Rust hanya dalam 4 bulan, dan frontend-nya masih terpisah lagi 100 ribu baris
Saya juga penasaran kenapa memilih tessellation “instan”. Begitu membuat lingkaran, langsung muncul banyak segmen garis yang tampak seperti lingkaran, dan untuk constraint tangen sepertinya akan cepat gagal. Saya penasaran apakah itu keterbatasan saat ini, atau memang bagian dari strategi kernel
Saya juga menulis tentang percobaan pertama saya: https://campedersen.com/cad0
Saya kurang paham jenis ini. Bagian yang sulit bukan drafting dan modeling, melainkan pemrograman CAM
Saya bahkan belum menemukan program open source yang bisa mengimpor model 3D lalu mengatur toolpath di UI, jadi LLM yang menghasilkan toolpath dari model tampak lebih sulit lagi
Mungkin saya melewatkan sesuatu, tetapi kalau sejak awal sudah ada rendering gambar, kemungkinan besar CAD-nya juga sudah ada. Demo yang keren, tetapi saya tidak tahu apa kegunaannya