Názor k článku Lepší kvalita DLSS: ve hře Control má Nvidia temporální stabilizaci proti shimmeringu od Jan Olšan - @AdamNa to F1 jsem se před psaním tohohle...

  • 3. 9. 2019 22:16

    Jan Olšan (neregistrovaný)

    @Adam
    Na to F1 jsem se před psaním tohohle článku nedíval, chyba.
    Ovšem to původní DLSS by spatialní mělo být, přesně tak to Nvidia popisovala v tom whitepaperu.

    Stáhl jsem si to video z F1, abych se mohl dívat snímek po snímku, a vypadá, že tam je to opravdu taky už temporální, protože je to mázlý opravdu zjevně - ale je zajímavý, že proti tomu není současně mázlej ten TAA. (Takže jo, uznávám, že to Control patrně není první s temporálním filtrováním.)

    Protože na začátku v tom Final Fantasy XV Demu (IIRC) tohle bylo přesně naopak, tam se dalo ukazovat na místa, která TAA rozmazalo tím temporálním zprůměrováním se sousedníma snímkama, ale DLSS je mělo čisté díky tomu, že temporální nebylo. (Tohle asi hrozně záleží na tom, jestli se správně kompenzuj pohyb pohybovýma vektorama - u toho FFXV asi vektory špatně používalo TAA, tady u toho F1 je zřejmě TAA používá efektivně, ale DLSS... vůbec? Není to nějakej bug, kterej už spravili? Třeba že dělají separátně temporální denoising nad tím výstupem s DLSS úplně bez kompenzace pohybu? Holt by to chtělo vědět víc o tom, jak to funguje...)

    Jinak ne až takhle šíleně, ale třeba jako v Battlefieldu může klidně rozmazávat i čistě spatiální filtr, když ho tak někdo natrénuje ,případně to prostě může být efekt té interpolace. Nějaká míra mazání textur je asi obecnej problém danej tím, jak ta interpolace pracuje. Když se různé komplexní vzory/"textury" (ve smyslu určité detailní plochy, i kdy by to byl jen náhodně vypadající šum nebo tak něco, prostě takový ty detaily v rámci nějaké plochy), na kterých se ta síť učí, downscalujou, tak ten downscaled výstup vypadá často hodně podobně pro různé takové "textury". Takže když pak při inferenci síť postupuje opačně od toho downscalovaného obrazu k tomu vyššímu/původnímu rozlišení, tak vlastně moc nemůže poznat, který z tamtěch původních vzorů, které po downscalingu vypadají stejně, má vybrat. A z tohohle důvodu to může právě nakonec produkovat takový mázlý vzhled, který rozhodování pomocí PSNR vyhodnotilo jako "podobný originálu". Takhle mi to vysvětloval jeden člověk, co se různýma algoritmama na zpracování obrazu zabývá a docela mi to vysvětlení sedí.

    Při tom upscalingu je jeden problém interpolace hran a vedle toho je zase problém těch ploch. Jsou zase postupy tzv. texture synthesis, které se zaměřují na tohle, ale asi to taky není moc snadný udělat tak, aby to fungoval fakt realisticky a bez problémů (a rychle).
    Ono u DLSS je pak samozřejmě i problém s tím, že když se do toho v jednu chvíli vrazí už příliš mnoho výkonu/komplexity (mimo to, co běží na tensor jádrech, i když ty taky mají určitou spotřebu energie), tak bylo lepší to nedělat a rovnou zvýšit rozlišení. Takže nemá smysl používat něco ultra komplexního, když je cílem ušetřit výkon.

    "Tak radši nedomýšlej, to je cesta do pekla."
    Kdybych nemohl, tak bych nemohl prakticky napsat nic ani k té temporální stabilizaci, protože to Nvidia holt moc nevysvětluje.