CityGaussian: Gaussian kullanarak gerçek zamanlı, yüksek kaliteli büyük ölçekli sahne işleme
(dekuliutesla.github.io)- CityGaussian(CityGS), 3D Gaussian Splatting'i (3DGS) şehir ölçeğindeki sahnelere genişleten ve eğitim verimliliği ile gerçek zamanlı gezinme kalitesini birlikte hedefleyen bir ECCV 2024 yöntemidir
- Büyük ölçekli sahneleri tek seferde ele almanın zorluğunu böl ve yönet eğitim ve ayrıntı düzeyi (LoD) stratejileriyle çözmektedir
- Küresel sahne önbilgisi ve uyarlanabilir eğitim verisi seçimini kullanarak blok bazlı eğitim sonuçlarını daha verimli hizalar ve pürüzsüz biçimde birleştirir
- Birleştirilmiş Gaussian primitive'leri sıkıştırarak birden fazla ayrıntı düzeyi oluşturur ve işleme sırasında blok bazında uygun ayrıntı düzeyini seçip bir araya getirir
- LoD olmadan MatrixCity'yi 25 milyon Gaussian ile ifade etmek A100 üzerinde 18 FPS'te kalırken, LoD uygulanan CityGS ortalama 36 FPS ile gerçek zamanlı işlemeyi başarır
Büyük ölçekli 3DGS için eğitim ve işleme yapısı
- 3D Gaussian Splatting (3DGS), gerçek zamanlı 3D sahne yeniden oluşturma ve yeni bakış açısı sentezinde güçlü sonuçlar göstermiş olsa da büyük ölçekli sahne eğitimi ve farklı ölçeklerde gerçek zamanlı işleme hâlâ yüksek maliyetlidir
- CityGaussian bu sorunu iki aşamada ele alır
- Böl ve yönet eğitim: Büyük ölçekli sahneyi bloklara ayırarak verimli biçimde eğitir
- LoD stratejisi: Gözlem ölçeğine göre yalnızca gereken ayrıntı düzeylerini kullanarak işleme hızını artırır
- Küresel sahne önbilgisi ve uyarlanabilir eğitim verisi seçimi, eğitim verimliliğini artırır ve ayrılmış sahne parçalarının daha doğal biçimde birleşmesine yardımcı olur
- Birleştirilen Gaussian primitive'leri, sıkıştırma sürecinden geçirilerek birden fazla ayrıntı düzeyi halinde yapılandırılır
- İşleme aşamasında blok bazlı ayrıntı düzeyi seçimi ve toplulaştırma stratejileri kullanılarak, birden çok ölçekte de hızlı görüntü üretimi sağlanır
Performans ve açık kaynak materyaller
- LoD uygulanmadığında MatrixCity sahnesi 25 milyon Gaussian ile temsil edilir ve A100 ölçütünde 18 FPS olarak ölçülür
- Bu hızın akıcı bir dolaşım deneyimi sunmak için yetersiz olduğu değerlendirilir
- LoD uygulanan CityGS, çok farklı ölçeklerde de gerçek zamanlı işlemeyi mümkün kılar ve A100'de ortalama 36 FPS olarak ölçülür
- Büyük ölçekli sahne deneylerinde CityGS, son teknoloji düzeyinde işleme kalitesi gösterir ve farklı ölçeklerdeki büyük sahnelerde tutarlı gerçek zamanlı işlemeyi destekler
- Açık materyaller
1 yorum
Hacker News görüşleri
Videodaki veri kümesinin adının Matrix city olmasına bakılırsa, birkaç yıl önce yayımlanan Unreal Engine 5 Matrix demosundan çıkarılmış olma ihtimali yüksek
Bakış açıları birbirine çok benzediği için fotoğraf gibi gerçekçi duruyor ama gerçek fotoğraflardan gelmiş gibi görünmüyor
Biraz daha bakınca doğru olduğunu gördüm: https://city-super.github.io/matrixcity/
İlginç olan, böyleyse asıl yazı gerçek nesnelerden yeniden oluşturulmuş bir şeyi yeniden oluşturuyor demektir
MatrixCity haritası farklı, ama Matrix Awakens haritasına bir ölçüde benziyor. Matrix Awakens projesinin teknik liderinin yazdığı [3] bu sayfadaki tasarım analizinde de bunu görmek mümkün
Daha da derine inip [4] GitHub kod tabanındaki MatrixPlugin bölümüne bakınca city-sample projesinin kullanıldığı açıkça belirtiliyor
[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
Bu yüzden NeRF veya Gaussian splatting eğitimi biraz kolaylaşır. Çünkü kamera pozu optimizasyon hatası yoktur
İlk NeRF makalelerinin Blender'da render edilmiş meşhur sarı Lego ekskavatörü kullanmasının nedeni de aynıydı
Matrix city gibi bir sahnede veriyi yeniden üretmek için uzun süre eğitim yapmaya gerek yokmuş gibi görünüyor
Hafta sonu Google Maps 3D tile mesh'leri ile Gaussian splat'leri birleştirmeyi denedim; tamamen aynı şey değil ama etkisi oldukça benzer ve kullanışlıydı
Kodu bağlantılı örnek 1: https://twitter.com/kfarr/status/1773934700878561396
Örnek 2: https://twitter.com/3dstreetapp/status/1775203540442697782
İlk bağlantıda geliştirici araçlarında hata çıkıyor
Uncaught (in promise) Error: Failed to fetch resource [https://tile.googleapis.com/v1/3dti](<https://tile.googleapis.com/v1/3dti>)...aframe-loader-3dtiles-component'e bakmayı planlıyorum
“Ortalama hız 36 FPS (A100 üzerinde test edildi)” denmiş; yani 8 bin dolarlık bir GPU'nuz varsa gerçek zamanlı demek gibi görünüyor
Grafik makaleleri gerçek zamanlı hıza ulaştığını söylediğinde, gerçekten gerçek zamanlı mı yoksa “parayla alınabilecek en pahalı donanımda 640x480 20fps” mi diye her zaman tekrar kontrol etmek gerekir
Eşiği yeterince düşürürseniz her şey gerçek zamanlı olabilir
Sanal prodüksiyon gibi kullanım alanlarında işe yarayabilir, ama mobil için değil gibi
https://www.techpowerup.com/forums/attachments/all-cards-png...
10 yıllık bir dizüstünde, hatta GPU olmadan bile çalıştırabileceğiniz bir şey istiyorsanız https://github.com/pierotofy/OpenSplat'e bakın. Bunu ben yaptım
Bu yüzden aşılamaz bir sorun gibi görünmüyor
3D Gaussian Splatting’in çıkmaz sokak olmadığını biri beni ikna edebilir mi?
Render tek haneli katsayılarla fazla yavaş, veri de tek haneli katsayılarla fazla büyük. Rasterization ile ray tracing karşıtlığını yeniden izliyormuşum gibi geliyor.
Rasterization her zaman ray tracing’den hızlı olacak; ray tracing 10 kat hızlanırsa rasterization da 10 kat hızlanacak.
Gaussian nokta bulutundan geleneksel geometri ve malzeme üretmek ilginç olabilir. Ama fotogrametri zaten epey uzun süredir var.
Devasa bir şehri splat’lerle gerçek zamanlı render etmeye çalışmak “doğru yön” gibi hissettirmiyor.
Havalı, eğlenceli ve ilginç; ama gerçekten faydalı hale gelip gelmeyeceğinden emin değilim. Uzman olmadığım için cidden soruyorum.
Mevcut araştırmaların çoğu performansa odaklanmıyor ve sıkıştırmayı da içeren birleşik format konusunda bile henüz uzlaşı yok.
Optimizasyon potansiyeli çok net ve farklı cihazlara göre ayarlamak da kolay. Nokta bulutu LOD’u ya da mesh culling’e benziyor.
Splat performansı görüntüleyiciler için geçici bir rekabet avantajı olabilir; ancak video sıkıştırma açma ya da diğer 3D standartlarının açık kaynak olarak yayılması gibi, birkaç yıl içinde çoğu cihazda yüksek kaliteli ve yüksek kare hızlı splat görüntüleme temel beklenti haline gelebilir.
Sonraki soru, bunun nerede kullanılacağı.
Tarayıcıda 100fps üzeri: https://current-exhibition.com/laboratorio31/
900fps: https://m-niemeyer.github.io/radsplat/
Geleneksel motorlarda 30 yıllık Ar-Ge birikimi var; araçların ve optimizasyonların yetişmesi zaman alacak.
Yine de makalelerin nereden çıktığına bakınca Apple ve Meta öne çıkıyor; bu iki şirketin ittiği metaverse/uzamsal bilişim çağını çalıştıracak teknoloji gibi görünüyor.
iPhone videosu gibi çok düşük üretim maliyetli içerikleri 3D ortamlara taşıyabilme yeteneği, geleneksel yöntemlerdeki pek çok Ar-Ge’yi yerinden edecek.
İnce yapıları ya da saç gibi ince ayrıntıları yakalamak da çok zor. 3DGS bu noktalarda güçlü.
Mevcut zayıflıkları iyileştirmeye yönelik araştırmalar da sürüyor; buna geleneksel grafik pipeline’ında kullanılabilecek mesh çıkarma yöntemleri de dahil.
Fotogrametri yalnızca yüzey verisi temiz olduğunda iyi çalışıyor; Gaussian splat’ler ise tüy, bitki örtüsü, parçacıklar ve pürüzlü yüzeyler gibi yarı hacimsel verilerde güçlü.
Parlak/yansıtıcı yüzeylere, subdivision surface özellikleri baskın hacimlere ve bakış açısına bağımlılığı yüksek malzemelere de iyi uyuyor.
Tam anlamıyla 3D fotoğraf karşılığı kullanımlar için epey havalı ve yeterince meşru bir kullanım senaryosu.
3D oyun motorları içinse, temel primitive’leri oyun motorunun gerektirdiği şekilde dinamik olarak ele almanın zor olduğunu düşünüyorum. Denemeler sürecektir; ama bu açıdan Gaussian’lar faydalı bir ara temsilden çok nihai render formatına yakın görünüyor.
Motorlarda pratik kullanım için aradaki boşluğu dolduracak başka bir şeyin icat edilmesi gerekiyor ve hâlâ çok soru var.
Diğer kullanım alanlarını bilemem; ama dünya yalnızca 3D oyunlardan ve görsel efektlerden ibaret değil.
Gauss adı verilen şeylerin çok fazla olması ve Gaussian splatting gibi yenilerinin de sürekli eklenmesi, Gauss’un ne kadar çok alana etki ettiğini yeniden görmek açısından ilginç.
Doğrudan icat etmiş olmasa da, o matematiğe büyük katkı sağlamış sayılır.
https://en.wikipedia.org/wiki/Monte_Carlo_(disambiguation)
Sadece “Science and Technology” başlığı altında bile 8 madde var.
Hangi lisansla yayımlanacağını merakla bekliyorum.
Bunu kullanan açık kaynak bir oyun görmek isterim.
Üçgen mesh’lere alternatif olarak umut verici görünüp sonra verimli biçimde animasyonlandırmanın bir yolu olmadığı anlaşılınca kaybolan pek çok örnek var.
Nokta bulutu içindeki nesnelerde “sandalye, masa, insan” gibi içsel metadata yok; bu da her türlü etkileşimi çok zorlaştırıyor.
İmkânsız değil ama şu anda pratik değil.
Üstelik gerçek zamanlı render için de çok optimize sayılmaz. Çok sayıda nokta budanmış olsa bile, düşük çözünürlüklü mesh kullanmak çok daha verimli.
Bu, Cities: Skylines gibi şeylerden çok daha iyi görünmüyor.
Yakınlaştırma ya da uzaklaştırma da yok; hep çok sınırlı kareler gösteriyor. Ben bir şeyi mi kaçırıyorum?
Makale MatrixCity’ye tekrar tekrar atıf yapıyor; yukarıda başka birinin bulduğu https://city-super.github.io/matrixcity/ de bunun tamamen sentetik veri olduğunu belirtiyor.
Anladığım kadarıyla Unreal Engine’den çıkarılmış.
pygame ile öğreniyorum; bir oyuna motion blur nasıl eklenir merak ediyorum
Örneğin pygame ile Mario yaparken Mario zıpladığında bulanık görünmesini istiyorum
9 pikselin ortalamasını alıp Mario'nun bulanık bir sürümünü oluşturmak mümkün olabilir ama diğer oyunlarda da genelde böyle mi yapılıyor bilmiyorum
Birçok oyun motion blur olmadan da çok net görünüyor, bu yüzden gerçekten kullanılıp kullanılmadığını merak ediyorum
Filmlerde bunun oldukça büyük bir unsur olduğunu ve sinematik motion blur elde etmek için 25fps çekim yapmak gerektiğini de düşünüyorum
Yani her nesnenin hızını hesaplayıp renk olarak render eder, ardından post-processing aşamasında blur efektinin şiddetini ve yönünü belirlemek için kullanırsınız
Kamera referanslı harekete de ihtiyaç olabilir. Mario için muhtemelen gerekmeyebilir ama FPS'te kamera ileri hareket ederken ekranın kenarlarının bulanıklaşmasını istersiniz
İlgili materyal: https://city-super.github.io/octree-gs/
Daha büyük sahneleri 3D Gaussians ile render etmeye yönelik oldukça gelişmiş bir yaklaşım; kod yayımlanınca hemen test etmek istiyorum