4K UHD Denoising mit FFT3DGPU,FFT3DFilter,neo_fft3d (Performance,Bugs,VapourSynth-Umsetzung,...)

  • Was mir spontan einfällt, ist dass fft3dgpu bw/bh 48 nicht unterstützt, was bei fft3dfilter standard ist.

    Bei fft3dgpu gibt's nur bw/bh 32 und 64.

    QTGMC ist ja "nur" ein avsi skript, das man modden könnte?!? Aber vielleicht stell ich mir das auch zu einfach vor bzw. verstehe da was nicht so ganz.

    EDIT: Hier gab's übrigens eine zeitliche Überschneidung und meine Frage wurde obenstehend bereits beantwortet :)

    3 Mal editiert, zuletzt von mogobime (30. April 2022 um 02:13)

  • Mal geschaut, sneo_FFT3D wird in Zs_RF_Shared.avsi definiert:

    Code
    Function sneo_FFT3D(clip input, float "sigma", float "beta", int "bw", int "bh", int "bt", int "ow", int "oh", float "kratio", float "sharpen", float "scutoff", float "svr", float "smin", float "smax", bool "measure", bool "interlaced", int "wintype", int "pframe", int "px", int "py", bool "pshow", float "pcutoff", float "pfactor", float "sigma2", float "sigma3", float "sigma4", float "degrid", float "dehalo", float "hr", float "ht", int "y", int "u", int "v", int "l", int "t", int "r", int "b", int "opt", int "ncpu")
    {
    y=Default(y,3)
    u=Default(u,3)
    v=Default(v,3)
    try { input.neo_fft3d(sigma=sigma, beta=beta, bw=bw, bh=bh, bt=bt, ow=ow, oh=oh, kratio=kratio, sharpen=sharpen, scutoff=scutoff, svr=svr, smin=smin, smax=smax, measure=measure, interlaced=interlaced, wintype=wintype, pframe=pframe, px=px, py=py, pshow=pshow, pcutoff=pcutoff, pfactor=pfactor, sigma2=sigma2, sigma3=sigma3, sigma4=sigma4, degrid=degrid, dehalo=dehalo, hr=hr, ht=ht, y=y, u=u, v=v, l=l, t=t, r=r, b=b, opt=opt, ncpu=ncpu)
    } catch(error_msg) {
    plane = y==3 && u!=3 && v!=3 ? 0 : y!=3 && u==3 && v!=3 ? 1 : y!=3 && u!=3 && v==3 ? 2 : y!=3 && u==3 && v==3 ? 3 : 4
    input.FFT3DFilter(sigma=sigma, beta=beta, bw=bw, bh=bh, bt=bt, ow=ow, oh=oh, kratio=kratio, sharpen=sharpen, scutoff=scutoff, svr=svr, smin=smin, smax=smax, measure=measure, interlaced=interlaced, wintype=wintype, pframe=pframe, px=px, py=py, pshow=pshow, pcutoff=pcutoff, pfactor=pfactor, sigma2=sigma2, sigma3=sigma3, sigma4=sigma4, degrid=degrid, dehalo=dehalo, hr=hr, ht=ht , plane=plane, ncpu=ncpu) }
    }

    Da wird erst neo_fft3d versucht und wenn das nicht geht FFT3DFilter.

    -> da müsste man entsprechend einen FFt3dgpu Aufruf reinpacken.

  • Zitat

    zu fft3dgpu und QTGMC in Avisynth: da müsstes das QTGMC Skript geändert werden.

    In der

    Zeile:


    Code

    1. https://gleitz.info/forum/index.ph…deLine_1_9635benoiseWindow.sneo_FFT3D( u=ChromaNoise ? 3 : 2,v=ChromaNoise ? 3 : 2, sigma=Sigma, bt=noiseTD, ncpu=FftThreads )

    müsste ein FFT3dGPU aufruf rein

    Wird unter AviSynth auch neo_fft3d verwendet? Dachte das wird nur in Vapoursynth benutzt bzw. kann nur dort benutzt werden...

  • Da FFT3DGPU etwas anders funktioniert:

    Code
    FFT3DGPU(clip, float "sigma", float "beta", int "bw", int "bh", int "bt", float "sharpen", int "plane", int "mode", int "bordersize", int "precision", bool "NVPerf", float "degrid", float "scutoff", float "svr", float "smin", float "smax", float "kratio", int "ow", int "oh", int "wintype" , int "interlaced", float "sigma2", float "sigma3", float "sigma4", bool "oldfft" )

    müsste man das entsprechend ändern. Man müsste 'nur'

    a. die Parameter auf die Bereiche die FFT3DGPu verwendet einschränken

    b. den eigentlichen Aufruf anpassen

    -> geht, aber keine Ahnung wie sehr das Sinn macht.

    Zitat

    Wird unter AviSynth auch neo_fft3d verwendet? Dachte das wird nur in Vapoursynth benutzt bzw. kann nur dort benutzt werden...

    Nope, in Avisynth wird schon ne Weile in QTGMC auch neo_FFT3D verwendet.

    Nebenbei: Unter Avisynth ist vielleicht CQTGMC, siehe: https://forum.doom9.org/showthread.php?t=183823 interessant.

    Cu Selur

  • Zitat

    Nope, in Avisynth wird schon ne Weile in QTGMC auch neo_FFT3D verwendet.

    Hä, das kann eigentlich nicht sein, So sieht mein Avs-skript aus, wenn ich QTGMC nutze, da wird die fft3dfilter.dll geladen, deswegen crasht es auch, wenn ich im AviSynth Ordner die dll durch die gpu-version ersetze:

  • Nicht hier,..

    [Blockierte Grafik: https://i.ibb.co/z4jRXqt/qtgmc.png]

    -> Laut meinem internen git logs steht am 2020-11-02 "Avisynth: QTGMC use neo-fft3d",....

    Zitat

    a wird die fft3dfilter.dll geladen, deswegen crasht es auch, wenn ich im AviSynth Ordner die dll durch die gpu-version ersetze:

    Ne, das Crashed weil das keinen Sinn macht.

    Cu Selur

  • da war kein anderer Filter und ~73fps für QTGMC(Preset="Slower") scheint mir auch okay.

    Vermute es bringt nur so viel wenn es alleine genutzt wird. :)

    Du hast mich falsch verstanden, QTGMC verwendet ja auch weitere (andere) Filter. FFT3D ist das nur ein kleines Rädchen. Bremsen tun die anderen Filter in QTGMC, sodass ein schnelleres fft3d nichts bringt in diesem Fall.

  • Zitat

    Du hast mich falsch verstanden, QTGMC verwendet ja auch weitere (andere) Filter. FFT3D ist das nur ein kleines Rädchen. Bremsen tun die anderen Filter in QTGMC, sodass ein schnelleres fft3d nichts bringt in diesem Fall.

    Ah okay. :)

    Zitat

    Du bist in der Deinterlacer section, ich hab QTGMC in der Denoiser section genutzt, das wird der Unterschied sein.

    Ja, da wird neo i.d.R. nicht verwendet. :) (mift da ist das Sharpness auch kaputt)

    Aber FFT3DFilter da durch FFT3DGPU zu ersten klappt trotzdem nicht. :)

    -> hab dir nen Link geschickt

  • Zitat

    Ja, da wird neo i.d.R. nicht verwendet. :) (mift da ist das Sharpness auch kaputt)

    Aber FFT3DFilter da durch FFT3DGPU zu ersten klappt trotzdem nicht. :)

    Ist mir aufgefallen :) Gibt schon noch ein paar Unterschiede außer dass bw/bh 48 nicht funktioniert.

    Mindestens mode muss auch in der default-einstellung auf jeden Fall immer gesetzt werden, den gibt's bei fft3dfilter nicht (Jedenfalls macht's Hybrid so).

    Ist möglicherweise sogar eher der Grund warum QTGMC da streikt.

  • Du hast mich falsch verstanden, QTGMC verwendet ja auch weitere (andere) Filter. FFT3D ist das nur ein kleines Rädchen. Bremsen tun die anderen Filter in QTGMC, sodass ein schnelleres fft3d nichts bringt in diesem Fall.

    Dass die Verwendung von EZDenoise bei Selur die Performance von 73fps auf 47fps absinken lässt, spricht gegen einen marginalen Anteil von fft3dfilter.

    Und erst dann wird aus QTGMC - als Denoiser eingesetzt - auch ein vollwertiger Denoiser so wie ich das verstehe. Sonst wird ja nur das temporal smoothing verwendet, was imho hauptsächlich beim reinen Deinterlacing Sinn macht.

  • Ist vielleicht nicht optimal, aber wenn da x264 files draus macht, die ähnlich groß sind und die Abweichung zwischen script output und encode ziemlich ähnlich ist, werden die files schon nicht grundverschieden sein.

    Leider geht beim MSU Video Quality Measurement Tool (ist dieselbe website wo ich den VirtualDub GPU Denoiser her hatte) im free Modus nur SD Auflösung, sonst hätte ich die encodeden files auch direkt miteinander vergleichen könen.

  • Macht meiner Ansicht nach keinen Sinn hier SSIM/PSNR/... an zu schauen.

    Gleiche SSIM/PSRN/... Werte sagt nichts über die Quelle aus.

    Das einzige was Du da misst ist wie weit der Output des Encodes sich vom Output des jeweiligen Skripts (der nicht identisch ist) unterscheidet.

    Man kännte mit https://github.com/HomeOfVapourSy…apourSynth-VMAF im Skript sehen wie weit FFT3DFilter&Co jeweils von der Quelle abweichen, aber das sagt auch nicht viel aus,....

    -> Scheint mir ein Fehler hier Fehler-/Qualitätsmetirken herranziehen zu wollen.

    Cu Selur

  • Ursprünglich ging's mir ja eigentlich die ganze Zeit hauptsächlich um einen performanten GPU Denoiser, der auch bei 4K nicht einbricht.

    Ist das eigentlich aufwändig fft3dgpu als AviSynth filter in VapourSynth zum laufen zu bekommen, oder muss man bloß ein avs-Skript irgendwie in VapourSynth importieren?

    Wäre mal interessant wenigstens mal für testzwecke zu wissen, ob die Bildfehler bei 4K bei den genannten Mode + bw/bh + precision Konstellationen verschwinden, und ob das Multithreading besser funktioniert, also der Speed steigt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!