CityGaussian: Kết xuất cảnh quy mô lớn chất lượng cao theo thời gian thực bằng Gaussian
(dekuliutesla.github.io)- CityGaussian(CityGS) là một phương pháp tại ECCV 2024 mở rộng 3D Gaussian Splatting(3DGS) cho các cảnh quy mô đô thị, đồng thời nhắm đến hiệu quả huấn luyện và chất lượng khám phá theo thời gian thực
- Giải quyết hạn chế khó xử lý cảnh quy mô lớn cùng lúc bằng cách chia nhỏ vấn đề với huấn luyện chia để trị và chiến lược mức độ chi tiết(LoD)
- Tận dụng thông tin tiên nghiệm về cảnh toàn cục và lựa chọn dữ liệu huấn luyện thích ứng để căn chỉnh kết quả huấn luyện theo từng khối hiệu quả hơn và hợp nhất mượt mà
- Nén các Gaussian primitive đã được hợp nhất để tạo nhiều mức độ chi tiết, rồi khi kết xuất sẽ chọn và tổng hợp mức độ chi tiết phù hợp theo từng khối
- Nếu biểu diễn MatrixCity bằng 25 triệu Gaussian mà không dùng LoD, tốc độ trên A100 chỉ đạt 18 FPS; còn CityGS có LoD đạt trung bình 36 FPS, thực hiện được kết xuất thời gian thực
Cấu trúc huấn luyện và kết xuất cho 3DGS quy mô lớn
- 3D Gaussian Splatting(3DGS) đã cho thấy thế mạnh trong tái dựng cảnh 3D theo thời gian thực và tổng hợp góc nhìn mới, nhưng huấn luyện cảnh quy mô lớn và kết xuất thời gian thực ở nhiều tỷ lệ vẫn còn là gánh nặng lớn
- CityGaussian xử lý vấn đề này theo hai giai đoạn
- Huấn luyện chia để trị: chia cảnh quy mô lớn thành các khối để huấn luyện hiệu quả
- Chiến lược LoD: chỉ sử dụng mức độ chi tiết cần thiết theo tỷ lệ quan sát để tăng tốc độ kết xuất
- Thông tin tiên nghiệm về cảnh toàn cục và lựa chọn dữ liệu huấn luyện thích ứng giúp nâng cao hiệu quả huấn luyện, đồng thời hỗ trợ hợp nhất các mảnh cảnh tách rời một cách tự nhiên hơn
- Các Gaussian primitive đã hợp nhất được đưa qua quá trình nén để cấu thành nhiều mức độ chi tiết
- Ở giai đoạn kết xuất, hệ thống dùng chiến lược chọn và tổng hợp mức độ chi tiết theo từng khối, giúp tạo khung hình nhanh ngay cả ở nhiều tỷ lệ
Hiệu năng và tài liệu công khai
- Nếu không áp dụng LoD, cảnh MatrixCity được biểu diễn bằng 25 triệu Gaussian và đo được 18 FPS trên A100
- Tốc độ này được đánh giá là khó mang lại trải nghiệm roaming mượt mà
- CityGS có áp dụng LoD có thể kết xuất thời gian thực ngay cả ở những tỷ lệ rất khác nhau, đạt trung bình 36 FPS trên A100
- Trong các thử nghiệm cảnh quy mô lớn, CityGS cho chất lượng kết xuất ở mức tiên tiến và hỗ trợ kết xuất thời gian thực nhất quán trên các cảnh quy mô lớn ở nhiều tỷ lệ
- Tài liệu công khai
1 bình luận
Các ý kiến trên Hacker News
Nhìn tên dataset trong video là Matrix city, khả năng cao nó được trích xuất từ bản demo Unreal Engine 5 Matrix được công bố vài năm trước
Các góc nhìn rất giống nhau nên trông chân thực như ảnh chụp, nhưng có vẻ không đến từ ảnh thật
Tìm thêm thì đúng là vậy: https://city-super.github.io/matrixcity/
Thú vị là nếu vậy thì bài gốc đang tái dựng lại một thứ vốn đã được tái dựng từ vật thể thật
Bản đồ MatrixCity thì khác, nhưng cũng khá giống bản đồ của Matrix Awakens. Có thể thấy điều này trong phần phân tích thiết kế ở trang [3] do technical lead của dự án Matrix Awakens viết
Đi sâu hơn, nếu xem phần MatrixPlugin trong codebase GitHub [4], có ghi rõ rằng họ đã dùng dự án city-sample
[1] https://www.unrealengine.com/marketplace/en-US/product/city-...
[2] https://www.unrealengine.com/marketplace/en-US/learn/city-sa...
[3] https://quentinmarmier.artstation.com/projects/xYeKNO
[4] https://github.com/city-super/MatrixCity
Vì thế việc huấn luyện NeRF hoặc Gaussian splatting trở nên dễ hơn một chút, do không có sai số tối ưu hóa tư thế camera
Đây cũng là lý do các bài báo NeRF ban đầu dùng chiếc máy xúc Lego màu vàng nổi tiếng được render bằng Blender
Với một cảnh như Matrix city, có vẻ không cần tốn nhiều thời gian huấn luyện chỉ để tái hiện dữ liệu
Cuối tuần tôi đã thử ghép mesh tile 3D của Google Maps với Gaussian splat; không hoàn toàn giống nhau, nhưng hiệu ứng khá tương tự và hữu ích
Ví dụ 1 có link code: https://twitter.com/kfarr/status/1773934700878561396
Ví dụ 2: https://twitter.com/3dstreetapp/status/1775203540442697782
Ở link đầu tiên, devtools báo lỗi
Uncaught (in promise) Error: Failed to fetch resource [https://tile.googleapis.com/v1/3dti](<https://tile.googleapis.com/v1/3dti>)...Tôi định xem thử aframe-loader-3dtiles-component
“Tốc độ trung bình là 36 FPS (thử nghiệm trên A100)” tức là có vẻ nó là thời gian thực nếu bạn có GPU giá $8k
Khi một bài báo đồ họa nói đã đạt tốc độ thời gian thực, luôn phải kiểm tra lại xem nó thật sự là thời gian thực, hay là “640x480 20fps trên phần cứng đắt nhất có thể mua bằng tiền”
Nếu hạ tiêu chuẩn đủ thấp thì cái gì cũng có thể thành thời gian thực
Nó có thể trở nên hữu ích cho các mục đích như virtual production, nhưng có lẽ không dành cho mobile
https://www.techpowerup.com/forums/attachments/all-cards-png...
Nếu muốn thứ có thể chạy trên laptop 10 năm tuổi, thậm chí không cần GPU, hãy xem https://github.com/pierotofy/OpenSplat. Tôi là người tạo ra nó
Vì vậy đây không có vẻ là vấn đề không thể vượt qua
Ai có thể thuyết phục tôi rằng 3D Gaussian splatting không phải là ngõ cụt không?
Render thì quá chậm ở mức chênh một chữ số lần, dữ liệu cũng quá lớn ở mức chênh một chữ số lần. Cảm giác như đang xem lại cuộc đối đầu giữa rasterization và ray tracing
Rasterization sẽ luôn nhanh hơn ray tracing, và nếu ray tracing nhanh hơn 10 lần thì rasterization cũng sẽ nhanh hơn 10 lần
Việc tạo ra hình học và vật liệu truyền thống từ đám mây điểm Gaussian có thể thú vị. Nhưng phép đo ảnh đã tồn tại từ khá lâu rồi
Cố gắng render thời gian thực cả một thành phố khổng lồ bằng splat không có cảm giác là “hướng đi đúng”
Nó ngầu, vui và thú vị, nhưng tôi không chắc liệu nó có thực sự hữu ích hay không. Tôi không phải chuyên gia nên hỏi nghiêm túc
Phần lớn nghiên cứu hiện nay không tập trung vào hiệu năng, và thậm chí còn chưa có đồng thuận về định dạng tích hợp, bao gồm cả nén
Khả năng tối ưu hóa là rất rõ ràng, và cũng dễ điều chỉnh cho nhiều thiết bị. Tương tự LOD cho đám mây điểm hoặc mesh culling
Hiệu năng splat có thể là lợi thế cạnh tranh tạm thời của trình xem, nhưng giống như giải nén video hay các chuẩn 3D khác đã phổ biến dưới dạng mã nguồn mở, trong vài năm tới việc xem splat chất lượng cao, khung hình cao có thể sẽ trở thành điều kiện mặc định trên hầu hết thiết bị
Câu hỏi tiếp theo là sẽ dùng nó vào đâu
Trên trình duyệt hơn 100fps: https://current-exhibition.com/laboratorio31/
900fps: https://m-niemeyer.github.io/radsplat/
Các engine truyền thống đã tích lũy 30 năm R&D, nên công cụ và tối ưu hóa sẽ cần thời gian để bắt kịp
Tuy vậy, nhìn vào nguồn gốc các bài báo thì có rất nhiều từ Apple và Meta, và đây có vẻ là công nghệ sẽ vận hành kỷ nguyên metaverse/spatial computing mà hai công ty đó đang thúc đẩy
Khả năng chuyển nội dung có chi phí sản xuất rất thấp như video iPhone sang môi trường 3D sẽ thay thế rất nhiều R&D theo cách truyền thống
Việc bắt được chi tiết cực nhỏ như cấu trúc mảnh hoặc tóc cũng rất khó. 3DGS mạnh ở những phần đó
Cũng đang có nghiên cứu nhằm cải thiện các điểm yếu hiện tại, bao gồm cả phương pháp trích xuất mesh có thể dùng trong pipeline đồ họa truyền thống
Phép đo ảnh chỉ hoạt động tốt khi dữ liệu bề mặt sạch, còn Gaussian splat mạnh với dữ liệu bán thể tích như lông, thảm thực vật, hạt, bề mặt gồ ghề
Nó cũng phù hợp với bề mặt bóng/phản chiếu, các thể tích có tính chất bề mặt phân mảnh mạnh, và vật liệu phụ thuộc nhiều vào góc nhìn
Nếu là trường hợp sử dụng tương đương ảnh 3D hoàn chỉnh thì khá tuyệt, và là ứng dụng hoàn toàn có lý
Nếu dành cho engine game 3D, tôi cho rằng khó xử lý động các primitive cơ bản theo cách engine game yêu cầu. Các nỗ lực sẽ vẫn tiếp diễn, nhưng từ góc nhìn này Gaussian trông giống định dạng render cuối hơn là một biểu diễn trung gian hữu ích
Để dùng thực tế trong engine, cần phát minh ra thứ gì đó khác để lấp khoảng trống đó, và vẫn còn rất nhiều câu hỏi
Tôi không biết các mục đích khác, nhưng thế giới đâu chỉ gồm game 3D và hiệu ứng hình ảnh
Có quá nhiều thứ mang tên Gauss, và việc cái tên đó vẫn tiếp tục được gắn vào những thứ mới như Gaussian splatting khiến tôi thấy thú vị khi nghĩ lại Gauss đã ảnh hưởng tới bao nhiêu lĩnh vực
Không phải ông trực tiếp phát minh ra, nhưng có thể nói ông đã đóng góp lớn cho phần toán học đó
https://en.wikipedia.org/wiki/Monte_Carlo_(disambiguation)
Chỉ riêng mục “Science and Technology” đã có 8 cái
Tôi tò mò nó sẽ được phát hành theo giấy phép nào
Tôi muốn thấy một game mã nguồn mở dùng cái này
Trong lịch sử đã có nhiều trường hợp trông đầy hứa hẹn như một lựa chọn thay thế cho mesh tam giác, rồi biến mất khi người ta nhận ra không có cách animation hiệu quả
Các đối tượng trong đám mây điểm không có metadata nội tại kiểu “ghế, bàn, người”, nên mọi tương tác đều rất khó
Không phải là bất khả thi, nhưng hiện tại chưa thực tế
Hơn nữa nó cũng không thực sự được tối ưu cho render thời gian thực. Dù đã cắt tỉa rất nhiều điểm, dùng mesh độ phân giải thấp vẫn hiệu quả hơn nhiều
Cái này trông không hơn Cities: Skylines là bao
Không có zoom in hay zoom out, và lúc nào cũng chỉ cho thấy những khung hình rất giới hạn. Tôi có bỏ lỡ điều gì không?
Bài báo liên tục tham chiếu MatrixCity, và https://city-super.github.io/matrixcity/ mà một người khác ở trên tìm được cũng nói rõ đó là dữ liệu hoàn toàn tổng hợp
Theo tôi hiểu thì nó được trích xuất từ Unreal Engine
Mình đang học bằng pygame và thắc mắc làm thế nào để thêm motion blur vào game
Ví dụ khi làm Mario bằng pygame, mình muốn Mario trông bị nhòe khi nhảy
Có thể lấy trung bình 9 pixel để tạo một phiên bản Mario bị nhòe, nhưng không rõ các game khác thường có làm như vậy không
Nhiều game cũng rất sắc nét mà không có motion blur, nên mình tò mò liệu thực tế có dùng không
Trong phim thì đây là một yếu tố khá lớn, và mình cũng nhớ rằng để có motion blur kiểu điện ảnh thì phải quay ở 25fps
Tức là tính vận tốc của từng đối tượng rồi render thành màu, sau đó dùng nó ở bước hậu xử lý để quyết định cường độ và hướng của hiệu ứng blur
Có thể cũng cần chuyển động theo góc nhìn camera. Với Mario thì có lẽ không, nhưng trong FPS, khi camera tiến về phía trước, bạn sẽ muốn các rìa màn hình bị nhòe
Tài liệu liên quan: https://city-super.github.io/octree-gs/
Đây là một cách tiếp cận khá cao cấp để render các cảnh lớn hơn bằng 3D Gaussians, nên nếu code được phát hành thì mình muốn thử nghiệm ngay