1 puan yazan GN⁺ 2024-04-03 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2024-04-03
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/

    • Epic daha önce fotogrametri şirketi Quixel'i satın aldığı için, Matrix city'yi yaparken fotoğraf tarama asset kütüphanesini kullanmış olma ihtimali yüksek
      İlginç olan, böyleyse asıl yazı gerçek nesnelerden yeniden oluşturulmuş bir şeyi yeniden oluşturuyor demektir
    • The Matrix Awakens demosundaki bazı asset'ler Unreal Engine Marketplace'te ayrı paketler olarak yayımlandı: [1] harita, [2] binalar·kalabalıklar·araçlar
      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
    • Oyun motoru verisi kullanırsanız her görüntüye karşılık gelen kesin kamera pozunu elde edebilirsiniz
      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ı
    • Tamamen modellenmiş bir Unreal Engine sahnesi varsa, splat'leri eğitim aşaması olmadan üretmek mümkün olamaz mı diye merak ediyorum
      Matrix city gibi bir sahnede veriyi yeniden üretmek için uzun süre eğitim yapmaya gerek yokmuş gibi görünüyor
    • Videoların hepsi Matrix City değil; bazıları gerçek mekânlar
  • 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

    • Gerçekten harika; kodun olduğu bir GitHub var mı merak ediyorum
      İ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 ve OSM bina konturlarıyla bir şeyler deniyordum; bu yöntem çok daha iyi görünüyor
      aframe-loader-3dtiles-component'e bakmayı planlıyorum
    • xitter kullanmayanlar için kod deposu bağlantısını buraya da koyabilirseniz iyi olur
  • “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

    • Eski usul SIGGRAPH tarzı gerçek zamanlı
      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
    • LOD ve blok kullanan ilk 3DGS gibi görünüyor, dolayısıyla optimizasyon için alan olabilir
      Sanal prodüksiyon gibi kullanım alanlarında işe yarayabilir, ama mobil için değil gibi
    • Eski GPU benchmark'larının da ilk çıktığında 10fps çalışıp zaman içinde değiştiğini hatırlatıyor
      https://www.techpowerup.com/forums/attachments/all-cards-png...
    • Ne yazık ki birçok 3DGS/NeRF araştırması böyle
      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
    • Yeni nesil tüketici GPU'su 5090'ın A100'den iki kat hızlı olup 8 bin dolar olmayacağını düşünüyorum
      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.

    • Olasılıkları çok fazla. Unreal Engine’de kullanılan patentli teknolojilere benziyor ama farklı bir yaklaşım.
      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ğı.
    • Tek haneli katsayılarla yavaş değil. Şu anda bile Unreal veya Unity’de 200~400fps kolayca alınabiliyor.
      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.
    • Fotogrametri, yansıtıcı yüzeyler gibi belirli malzemelerde zorlanıyor.
      İ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.
    • Gerçek dünyayı fotogerçekçi 3D olarak yeniden oluşturma gerçekçilik tarafında şu anda onunla yarışabilecek pek bir şey yok.
      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.
    • Neyin çıkmaz sokağı olduğu önemli.
      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.

  • Hangi lisansla yayımlanacağını merakla bekliyorum.
    Bunu kullanan açık kaynak bir oyun görmek isterim.

    • Performanstan bağımsız olarak, oyunlarda gerçekten kullanmak için önce sahneyi dinamik hale getirmenin genelleştirilmiş bir yolunu bulmak gerekiyor.
      Üç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.
    • Bu, temelde tuhaf şekilli noktalardan oluşan çok büyük bir nokta bulutu, bu yüzden gerçekten zor.
      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?

    • Diğer yanıtlar gerçekten düşünmeden ya da araştırmadan yazılmış gibi.
      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ış.
    • Bu oyun render’ı değil, 3D yeniden oluşturma.
    • Fotoğraflardan render edildiğini düşünüyorum.
    • Bu bir oyun motoru değil; gerçek fotoğrafları Gaussian 3D bakış açısına dönüştüren bir şey.
  • 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

    • Nesnenin motion vector değerlerini ayrı bir render texture'a render etmek yeterli
      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