MeshGPT: Tạo mesh tam giác bằng transformer chỉ gồm decoder
(nihalsid.github.io)- MeshGPT tạo mesh tam giác dưới dạng chuỗi token, hướng tới việc sinh ra các mesh có cạnh sắc nét và phép tam giác hóa gọn gàng như các mô hình do con người tạo ra
- Khác với kết quả iso-surfacing dày đặc, hệ thống trực tiếp tạo ra cấu trúc mesh compact hơn bằng cách lấy mẫu từ từ vựng hình học đã học
- Bộ mã hóa-giải mã dựa trên graph convolution và vector quantization trước tiên học một từ vựng embedding chứa hình học cục bộ và topo
- Transformer chỉ gồm decoder dự đoán chỉ mục tiếp theo dựa trên các embedding trước đó, và sau khi huấn luyện sẽ lấy mẫu chuỗi từ từ vựng để tạo mesh mới
- Trên nhiều danh mục khác nhau, mô hình cho thấy shape coverage tăng 9% và điểm FID cải thiện 30 điểm, đồng thời cũng có thể dùng cho hoàn thiện mesh từng phần và tạo 3D asset cho cảnh
Cách MeshGPT tạo mesh
- MeshGPT xem mesh tam giác như một chuỗi tam giác, tạo token từ từ vựng hình học đã học rồi giải mã chúng thành các mặt tam giác
- Kết quả hướng tới các mesh clean, coherent, compact, với sharp edges và độ trung thực cao là những đặc điểm cốt lõi
- So với các baseline hiện có, mô hình tạo ra mesh gọn hơn mà vẫn giữ được chi tiết hình học sắc nét
- baseline có thể bỏ lỡ chi tiết, tạo mesh bị tam giác hóa quá mức, hoặc xuất ra hình dạng quá đơn giản
- Trong các so sánh định lượng trên nhiều danh mục, mô hình cho kết quả tốt hơn các phương pháp tạo mesh mới nhất
- shape coverage tăng 9%
- điểm FID cải thiện 30 điểm
Pipeline huấn luyện và ứng dụng
- Trước tiên, mô hình học một từ vựng embedding hình học cho mesh tam giác từ một tập lớn các shape
- sử dụng mạng encoder-decoder
- bao gồm vector quantization ở nút thắt cổ chai
- dùng graph convolution để embedding chứa thông tin về hình học mesh cục bộ và topo
- Từ vựng đã học được tổ chức thành chuỗi, và decoder có thể khôi phục chúng trở lại thành các tam giác
- Transformer đảm nhiệm việc dự đoán chuỗi token của từ vựng đã học
- nhận các embedding trước đó làm đầu vào và dự đoán chỉ mục embedding tiếp theo
- sau khi huấn luyện xong, mô hình trực tiếp lấy mẫu chuỗi từ từ vựng để tạo mesh
- Khi được cung cấp mesh từng phần, mô hình có thể suy luận nhiều kết quả shape completion khả dĩ
- trong quá trình người dùng chỉnh sửa partial input mesh, hệ thống cũng có thể hiển thị các ví dụ completion
- Mô hình cũng có thể được dùng để tạo 3D asset cho cảnh, và có ví dụ lấp đầy một căn phòng bằng các asset do MeshGPT tạo ra
Tài liệu và các công trình liên quan
- Tài liệu liên quan
- Các công trình liên quan được nhắc đến
- PolyGen: An Autoregressive Generative Model of 3D Meshes: tạo mesh bằng transformer để sinh điểm và transformer tạo face dùng pointer network
- BSP-Net: mạng tạo compact mesh bằng binary space partitioning
- AtlasNet: A Papier-Mâché Approach to Learning 3D Surface Generation: biểu diễn 3D shape như một tập các phần tử bề mặt tham số
- Mesh Diffusion: dùng mô hình 3D diffusion để tạo 3D mesh được tham số hóa bằng deformable marching tetrahedra
1 bình luận
Ý kiến trên Hacker News
Tôi nghĩ một ý tưởng mang tính cách mạng thật sự trông sẽ như thế này. Bài báo có rất nhiều chi tiết, và chúng ta cũng đã biết transformer có khả năng mở rộng
Tôi nghĩ nhiều công ty sẽ dùng ý tưởng này để huấn luyện các pipeline tạo asset 3D đa dụng. Ý tưởng “trước tiên dùng graph convolution để học một bộ từ vựng các embedding lượng tử hóa tiềm ẩn, để các embedding này nắm được thông tin hình học mesh cục bộ và topo; sau đó sắp thứ tự các embedding này và để decoder khôi phục chúng thành các tam giác nhằm tái tạo mesh một cách hiệu quả” nhìn lại thì vừa đẹp vừa hiển nhiên đến lạ
Phần “như một cách tiếp cận thực dụng để biểu diễn mesh M cho sinh tự hồi quy, ta định nghĩa các token cần sinh là một chuỗi các tam giác” cũng thật sự rất hay
Thứ thật sự thu hút tôi trong lĩnh vực này là https://yiconghong.me/LRM/, một mô hình tái dựng 3D lớn tạo mesh 3D từ một ảnh đơn và được huấn luyện trên hàng triệu mô hình 3D đa dạng
ResNet tích chập cũng có vẻ mở rộng được trong thị giác và ngôn ngữ: (cv) https://arxiv.org/abs/2301.00808, (cv) https://arxiv.org/abs/2110.00476, (nlp) https://github.com/HazyResearch/safari
Perceptron đa tầng cũng có vẻ mở rộng được: (cv) https://arxiv.org/abs/2105.01601, (cv) https://arxiv.org/abs/2105.03404
Tất nhiên cũng không có lý do mạnh mẽ để bỏ attention, nhưng tôi nghĩ gần như chẳng có ai thử ném một mô hình perceptron đa tầng hay tích chập quy mô 1 tỷ tham số vào bài toán. Attention, transformer và khả năng mở rộng của chúng đã nhận được nỗ lực khổng lồ, đến mức mỗi năm có hàng nghìn bài báo; khó thấy mức độ đó ở các kiến trúc khác
Một trong những lý do bài The ResNet Strikes Back hay là vì nó nhắc ta đừng bị cuốn theo hype, và rằng các tiến bộ thường được kết hợp với nhau. Kể từ thời ResNet ban đầu, chúng ta đã học được nhiều kỹ thuật huấn luyện; khi áp dụng chúng cho ResNet, hiệu năng tốt hơn nhiều và khoảng cách thu hẹp đáng kể. Ít nhất là trong lĩnh vực thị giác mà tôi nghiên cứu; môi trường phải có bài để sống sót và cơ chế review chạy theo trào lưu rất dễ khiến nghiên cứu dồn về một hướng
Với tư cách là một kỹ sư machine learning có chơi Blender và làm game như sở thích một chút, tôi thấy khá ấn tượng, nhưng nếu chỉ nhìn các ví dụ đồ nội thất hạn chế thì nó vẫn chưa ở mức thực dụng
Một modeler lành nghề có thể tạo những mesh như thế này trong chưa đầy 5 phút, và việc sinh vẫn cần được seed bằng polygon
Bước tiếp theo có lẽ là để LLM điều khiển việc tạo seed, rồi thêm mô hình ảnh vào phần tự hồi quy của cấu trúc. Khi đó có thể chúng ta sẽ thật sự thấy asset cho game di động
Trong nhiều trường hợp, ngay cả khi mất nhiều thời gian hơn chuyên gia và chất lượng kém hơn, nếu lựa chọn thực tế thay thế là không có gì cả thì công cụ như thế này vẫn tốt hơn
Nếu chỉ phải trả 1–2 đô la cho mỗi model và có ngay asset tùy chỉnh phù hợp để đưa vào game của tôi thì tuyệt quá
Điểm cốt lõi là trao công cụ cho người không chuyên, đồng thời giúp các modeler lành nghề thoát khỏi những việc như tạo 10.000 biến thể ghế cho game AAA tương lai để tập trung vào việc thú vị hơn. Họ có thể tạo ra những nhân vật độc đáo, hoặc các mô hình tương lai mới không có trong dữ liệu huấn luyện và thật sự cần trí tưởng tượng cùng chuyên môn
Các hệ thống procedural như Blender Geometry Nodes cũng đã có thể tạo ra vô số biến thể của những mô hình như vậy. Dù vậy, tốc độ tiến bộ vẫn đáng kinh ngạc
Tôi tin rằng bạn càng có nhiều kinh nghiệm với một use case cụ thể thì càng khai thác được nhiều giá trị hơn từ mô hình machine learning
Đáng tiếc là chính những người đó thường lại là nhóm kháng cự việc áp dụng nhất, dù chưa thực sự luyện tập đến mức có thể dùng nó hữu ích. Có lẽ một phần vấn đề là họ kỳ vọng nó như cây đũa thần. Thực ra nó chỉ là một công cụ mới như PhotoShop, Blender, Microsoft Word hay PowerPoint mà thôi
Phần lớn mọi người mở các ứng dụng đó, bấm vài cái vô nghĩa một lúc rồi sớm rời đi và không quay lại nữa. “AI” cũng vậy
Nghề mình chọn là sản xuất 3D/phim dạo này có cảm giác như đang ở trong chiến hào. Vừa thú vị vừa đáng sợ.
Một lợi thế lớn khác là khả năng tổ hợp. Nếu mô hình có thể tạo ra một cái cốc và một cái bàn, thì coi như nó cũng biết cách tạo ra cái cốc đặt trên bàn.
Hãy tưởng tượng việc có thể tạo ra các bánh răng phức tạp và linh kiện cơ khí phù hợp với dự án chỉ trong nháy mắt, rồi đặt chúng chính xác vào vị trí và góc xoay mong muốn. Rất giống cách GitHub Copilot hoạt động.
Trước mắt thì vẫn an toàn, nhưng phải học cách tận dụng công nghệ mới.
Đầu vào là gì vậy? Có phải biến truy vấn văn bản như “chair” thành mesh không?
Nhìn thì có vẻ hoàn thiện mesh mới là kiểu input/output chính, chứ không phải một tính năng phụ đơn giản.
Bản thân input có vẻ là một mesh 3D. Vì vậy mô hình dường như đang làm “hoàn thiện hình dạng”. Ví dụ như nhìn vài cái chân rồi tạo ra một cái ghế. Hoặc khi hình dạng đầu vào đã hoàn chỉnh hơn, có thể là nó tạo ra các “biến thể”.
Dù vậy, làm điểm khởi đầu thì có vẻ ổn. Có thể lấy output của một mô hình text-to-mesh khác có chất lượng thấp làm input, rồi dùng mô hình này để thu được kết quả sắc nét và nhất quán hơn.
Có cảm giác tất cả những bài toán khó còn lại, vốn không có nhiều tiến triển lớn từ thập niên 90, đều đang chờ đến lượt được giải bằng transformer theo cách nào đó. Đúng là một thời đại đáng kinh ngạc.
Bước đột phá tiếp theo sẽ là UX tạo cảnh 3D bằng VR trước các mô hình kiểu này. Nếu là môi trường có dữ liệu huấn luyện, về cơ bản ta sẽ có thể tạo ra các môi trường 3D tùy ý và gần như vĩnh viễn.
Có thể dùng diffusion model để tạo texture.
Mark đã đúng, và thật sự đã đi quá sớm.
À, Mark đó hả? haha, hiểu rồi.
Chẳng phải ghi công cho những người như Lecun còn hợp lý hơn sao? Chắc chắn việc Mark all-in vào metaverse không phải vì somehow dự đoán được deep learning sẽ bùng nổ. Ngay cả những người huấn luyện các mô hình ban đầu cũng không chắc nó sẽ hiệu quả đến mức nào.
Ngay cả nếu đây “chỉ” là tự động hoàn thiện mesh, nó vẫn cực kỳ hữu ích với 3D artist. Hiện nay có một khoảng đứt gãy giữa cách sculpt nhân vật và cách animate nhân vật. Thường cần một bước retopology rất tốn thời gian cho model.
Nếu có retopology dựa trên transformer nhận mesh thô và xuất ra topology sạch, đó sẽ là khoản tiết kiệm thời gian rất lớn.
Một ứng dụng khác là đưa output của Gaussian splatting hoặc diffusion model vào MeshGPT. Có thể lấy ngay asset dùng được với topology sạch từ text.
Có vẻ ở đây nhiều người chưa thực sự cảm nhận rằng chúng ta đang dần đi theo hướng tự động hóa chính việc tự động hóa. Và những lập trình viên có thể kiếm sống nhờ điều này sẽ chỉ là một phần rất nhỏ trong số những người hiện đang kiếm sống được.
Tôi thích lĩnh vực này. Bài paper có cả website đẹp, ví dụ và video.
Cảm giác mới mẻ hơn nhiều so với kiểu paper dày đặc abstract, introduction và chỉ tập trung vào kết quả.
Trông thật sự rất tuyệt. Có vẻ sẽ giúp ích rất nhiều cho indie game developer trong việc tạo pool asset quy mô lớn.
Thay vào đó, các công ty lớn sẽ tạo ra những trò chơi “tự làm game của riêng bạn”.
Game indie hiện nay vốn đã có cảm giác khá phái sinh. Trong trung hạn, tôi nghĩ các công ty lớn dùng công nghệ này sẽ giết chết game indie.
Wow, nó đang thật sự tốt lên. Vẫn còn chặng đường phải đi vì các cạnh kỳ lạ, nhưng ở thời điểm này cảm giác đó không còn là vấn đề thuật toán hay quá phức tạp nữa, mà giống như các cải tiến lặp lại.
Pipeline của tôi sẽ nhanh hơn rất nhiều nếu không phải đưa mọi mesh vào một thư viện procedural generation có vô số mesh modifier nhỏ được nối với driver. Thay vào đó, chỉ cần cho tất cả mesh vào một thư mục, huấn luyện mạng, rồi yêu cầu những thứ khác cùng phong cách. Có thể thấy rằng, trừ khi muốn can thiệp sáng tạo hơn, tôi sẽ không cần retopo hay các công việc thủ công khác.
Dĩ nhiên trước khi đạt hoàn toàn đến mức đó thì procedural generation vẫn tốt hơn, nhưng thật sự rất hào hứng khi thấy nó đang hoàn thiện nhanh như vậy. Hy vọng đến showcase Unreal năm sau, họ sẽ nói về tính năng Asset Generator mới.