- GenCAD là một mô hình có thể tạo 3D CAD, toàn bộ lịch sử lệnh CAD được tham số hóa và chương trình CAD chỉ từ đầu vào hình ảnh
- B-rep phức tạp cho việc huấn luyện AI, còn mesh·voxel·point cloud tuy dễ thu thập dữ liệu hơn nhưng phải đánh đổi độ chính xác và khả năng chỉnh sửa
- Sau khi tạo chuỗi lệnh CAD tham số từ hình ảnh, có thể chuyển đổi chúng thành mô hình khối 3D thông qua geometry kernel
- Mô hình kết hợp Transformer tự hồi quy, học tương phản, mô hình khuếch tán tiềm ẩn và bộ giải mã để tạo và khôi phục biểu diễn tiềm ẩn của hình ảnh và lệnh CAD
- Có thể tạo nhiều mẫu CAD từ cùng một hình ảnh, đồng thời hỗ trợ truy xuất có điều kiện theo hình ảnh để tìm 3 kết quả hàng đầu trong khoảng 7.000 chương trình CAD
Tổng quan
- GenCAD là mô hình tạo CAD có điều kiện theo hình ảnh, xuất ra không chỉ 3D CAD mà còn cả toàn bộ lịch sử lệnh CAD được tham số hóa và chương trình CAD
- Các cấu trúc dữ liệu CAD như B-rep rất phức tạp nên khó huấn luyện mô hình AI một cách hiệu quả; trong khi đó các biểu diễn như mesh·voxel·point cloud tuy dễ thu thập dữ liệu hơn nhưng phải hy sinh độ chính xác và khả năng chỉnh sửa của mô hình CAD thực tế
- GenCAD tạo chuỗi lệnh CAD tham số từ hình ảnh rồi chuyển chúng thành mô hình khối 3D bằng geometry kernel
- Mục tiêu là tự động hóa quy trình mô hình hóa 3D chính xác và có thể chỉnh sửa dựa trên hình ảnh, phục vụ công việc kỹ thuật, sản xuất và khám phá không gian thiết kế
Cấu trúc mô hình và tính năng
-
Kiến trúc
- Bộ mã hóa Transformer tự hồi quy học biểu diễn tiềm ẩn của chuỗi lệnh CAD
- Mô hình dựa trên học tương phản học biểu diễn tiềm ẩn chung giữa chuỗi lệnh CAD và hình ảnh CAD
- Mô hình khuếch tán tiềm ẩn tạo biểu diễn tiềm ẩn của chuỗi lệnh CAD với điều kiện là hình ảnh CAD
- Mô hình giải mã chuyển biểu diễn tiềm ẩn CAD thành chuỗi lệnh CAD tham số
-
Tạo CAD
- GenCAD có thể tạo mô hình CAD từ đầu vào ảnh render
- Ngay cả với cùng một hình ảnh đầu vào, hệ thống vẫn có thể tạo nhiều mẫu CAD để cung cấp tính đa dạng mẫu
-
Tìm kiếm CAD
- Hỗ trợ tìm kiếm CAD có điều kiện theo hình ảnh và tìm ra 3 chương trình CAD hàng đầu trong tập khoảng 7.000 chương trình CAD
-
Tài liệu
- arXiv: bài báo GenCAD
- Video: video demo
- Code: kho mã GenCAD
1 bình luận
Ý kiến từ Hacker News
Tôi đã chạy thử vài tiếng, nhưng với đầu vào không phải từ dữ liệu huấn luyện thì ngay cả hình rất đơn giản cũng không tạo ra được kết quả dùng được
Trên GitHub còn ghi độ tin cậy chỉ khoảng 60% ngay cả với dữ liệu huấn luyện nội bộ, nên hình ảnh ở màn hình đầu tạo cảm giác khá dễ gây hiểu lầm
Tôi đã tạo 10 ảnh có độ phức tạp tương tự ví dụ và chạy mỗi ảnh khoảng 50 lần, nhưng không có lần nào hoạt động đúng; hiếm lắm mới xuất ra thứ gì đó thì cũng sai hoàn toàn
Ở trạng thái hiện tại thì khá misleading và có vẻ cần làm thêm rất nhiều
Nếu có thể tạo mô hình CAD tham số hóa từ phác thảo vẽ tay thì sẽ thực sự rất tuyệt
Nghe thì thú vị, nhưng tôi không chắc tính thực dụng của nó. Phần tốn thời gian trong bản vẽ CAD là xác định chính xác kích thước, khoảng cách, độ lớn, dung sai của từng feature và thiết lập ràng buộc để sau này có thể sửa dễ dàng, mà cái này không làm được những việc đó chút nào
Có thể bạn sẽ vẽ thứ mình muốn dưới dạng phác thảo 2D rồi sinh ra, nhưng phần khó cuối cùng vẫn phải tự làm
Tôi khá quen OpenSCAD, nhưng chỉ cần phức tạp hơn một chút là bắt đầu bí. Gần đây tôi còn làm một chiếc vòi nước cho bồn rửa bếp Lego Duplo của con
Nếu có một công cụ AI/LLM tốt giúp giảm thời gian phải đi tìm trên web cách extrude một hình tròn dọc theo đường cong sau khi nhập sketch và tham số, rồi xem tutorial, thì tôi sẽ thực sự biết ơn
Nhân tiện, các công cụ AI hiện có lại khá hợp với OpenSCAD, nên nếu bạn cần mô hình tham số hóa có thể tạo từ các hình đơn giản thì tôi rất khuyến nghị hướng này
Ở chỗ làm cũ, có lý do khá hợp lý để chúng tôi dành nhiều thời gian cho việc này. Point cloud tạo ra từ camera gắn trên đầu chất lượng kém khiến mô hình trở nên rất phức tạp
Ví dụ, nếu nhìn vào point cloud của Ikea LACK (https://www.ikea.com/gb/en/p/lack-nest-of-tables-set-of-2-wh...) thì nó sẽ cực kỳ phức tạp. Vì thế chỉ riêng việc tương tác một chút cũng đã tốn chi phí tính toán lớn (https://www.researchgate.net/publication/221064696/figure/fi...)
Vì vậy có rất nhiều nghiên cứu về việc biến point cloud thành mô hình “CAD” được đơn giản hóa. Chẳng hạn bàn LACK được biểu diễn bằng khoảng 40 tam giác thay vì 400.000 tam giác
Một cách tiếp cận là kiểu “point cloud này trông giống cái bàn, vậy hãy tạo ra nhiều bàn ứng viên rồi xem cái nào khớp”. Để làm vậy, cần một mô hình hiểu được CAD tham số hóa và có thể tạo nhiều cái bàn với các tham số điều chỉnh được cho đến khi khớp
Cách có thể dễ hơn là lấy point cloud, để mô hình ảnh đã được huấn luyện trên mô hình CAD vẽ nó thành ảnh 2D, rồi dùng công cụ như thế này để lấy ra mô hình thật
Nó không hiệu quả lắm nhưng có thể hoạt động. Cũng có nhiều mục đích kém lành mạnh hơn như kiểu đạo nhái tự động
Khi xem xét để cải thiện CAD AI của mình, tôi đã thấy những nỗ lực tương tự như cái này[0]. Đây là các hướng đi có tiềm năng lớn, nhưng theo tôi các project hoặc bộ trọng số hiện tại chưa có đủ dữ liệu huấn luyện hoặc thời gian huấn luyện để hoạt động tốt với mô hình tùy ý
MeshCoder về cơ bản chỉ hoạt động trên các mô hình thuộc dữ liệu huấn luyện. Tôi chưa dùng GenCAD, nhưng các bình luận khác đã xác nhận nghi ngờ của tôi
[0]: https://daibingquan.github.io/MeshCoder/
[1]: https://grandpacad.com
Kiểu này thực ra đã có thể làm khá dễ với OpenSCAD từ lâu rồi. Tôi đã tạo rất nhiều mô hình đẹp và phức tạp theo cách đó, thậm chí còn làm cả kho lưu trữ prompt để chỉ cho LLM cách thực hiện, trong đó có nhiều mô hình do tôi tạo
https://github.com/cjtrowbridge/vibe-modeling
Để so sánh, một trong các thiết kế gần đây của tôi ở mức này, mà tôi vẫn sẽ gọi là một trường hợp rất đơn giản[4]
Tôi không phải kỹ sư cơ khí được đào tạo đang làm việc thương mại, chỉ là một lập trình viên thiết kế lúc rảnh thôi
[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...
Tôi muốn xem nó hoạt động tốt đến mức nào với ảnh chụp linh kiện thật hoặc bản vẽ tay, nhưng vừa bắt đầu thiết lập Docker image thì đủ kiểu phụ thuộc chưa cài đã lỗi tung lên
Nhìn các ví dụ thì tôi nghi rằng nếu không phải ảnh vốn được tạo từ CAD thì ngay từ đầu nó đã khó hoạt động tốt
Ai thấy kiểu này thú vị thì có khả năng cũng sẽ thích OpenSCAD. Bạn có thể tạo mô hình CAD 3D bằng mã
https://openscad.org/
Nếu tác giả có đọc được, tôi mong video tự phát sẽ bị bỏ đi. Lúc đang nghe thứ khác trên điện thoại, nó luôn cướp âm thanh rồi làm gián đoạn
Mã nguồn mở Rust nhân CAD BRep của tôi cũng có thể đáng quan tâm: https://github.com/ecto/vcad
Bản host nằm ở https://vcad.io
Tôi cũng có viết chút ít về những gì đi vào một ứng dụng CAD: https://campedersen.com/tessellation
Việc một người trong 4 tháng viết khoảng 115 nghìn dòng chỉ riêng crate Rust nghe khá đáng ngờ, chưa kể frontend còn thêm 100 nghìn dòng nữa
Tôi cũng tò mò vì sao lại chọn tessellation “ngay lập tức”. Vừa tạo hình tròn xong là đã có nhiều đoạn thẳng trông giống hình tròn, nên với ràng buộc tiếp tuyến có vẻ sẽ sớm thất bại. Không rõ đó là giới hạn hiện tại hay là một phần trong chiến lược của kernel
Tôi cũng đã viết về lần thử đầu tiên: https://campedersen.com/cad0
Tôi không thật sự hiểu loại này. Phần khó không phải là vẽ kỹ thuật và dựng mô hình, mà là lập trình CAM
Tôi còn chưa tìm được chương trình mã nguồn mở nào có thể nhập mô hình 3D và thiết lập đường chạy dao trong UI, nên việc LLM tạo đường chạy dao từ mô hình còn có vẻ khó hơn nhiều
Có thể tôi đang bỏ sót gì đó, nhưng nếu ngay từ đầu đã có ảnh render thì rất có thể bạn cũng đã có CAD rồi. Demo thì đẹp đấy, nhưng tôi không hiểu trường hợp sử dụng là gì