1 poin oleh GN⁺ 2 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2 jam lalu
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

    • Contoh-contohnya juga membingungkan. Semuanya terlihat seperti gambar yang dirender/diekspor sempurna dari model 3D, dan untuk penggunaan seperti itu rasanya ini bukan yang paling berguna
      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

    • Menurut saya itu benar jika diasumsikan orangnya memang paham alat CAD. Belakangan ini saya memakai printer 3D, dan meskipun saya tahu apa yang saya inginkan, bisa mengukur dimensinya, dan bisa membuat sketsa di kertas, proses menjadikannya model 3D yang layak di alat seperti FreeCAD sering kali sangat merepotkan
      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
    • Pertanyaan bagus
      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
    • Seperti sering terjadi di bidang AI generatif, ini juga terlihat seperti solusi untuk masalah yang sebenarnya tidak ada
    • Kalau seseorang bisa menggambar furnitur dengan pensil lalu menekan tombol untuk mendapatkan gambar CAD yang lumayan bagus dan bisa diedit, ini akan menjadi alat yang luar biasa bagi orang seperti tukang kayu
    • Menurut saya justru lebih cocok jika yang dihasilkan adalah CAD berbentuk kode dengan label yang jelas. Dengan begitu kita bisa mengambil jangka sorong dan mengecek apakah semua ukurannya benar
  • 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

  • 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

    • Ironisnya, image Docker justru dibuat untuk menghindari masalah dependensi seperti itu
  • 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

    • Saya juga sedang mencoba membuat program CAD dalam Rust, jadi saya melihat situs hosting-nya, tetapi saya kurang paham apa yang seharusnya sudah berfungsi dan apa yang belum
      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 lupa menyebutkan, ini terhubung dengan Claude, jadi Anda bisa melakukan vibe CAD seperti di artikel asli dengan beberapa langkah tambahan. Saya juga ingin segera mencoba melatih model serupa
      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

    • Bisa dipakai untuk menghasilkan dari sketsa, atau menyalin komponen yang tidak Anda miliki