Denoise-Funktion zu langsam, Optimierungsmöglichkeiten?

  • Hallo,


    ich habe mich vor langer Zeit für eine Denoise-Funktion entschieden, die optimale Ergebnisse bei kurzen Testclips bringt.

    Bei Clips in Stundenlänge läuft das bei mir aber mehrere Stunden bzw. Tage.


    Ich glaube, dass ich da eine optimale Varinate gewählt habe, die aber keinen praktischen Mehrwert gegenüber anderen Varianten bringt.


    Ich brauche da eigentlich eine Empfehlung, wie

    • ich Avisynth beschleunigen könnte
    • oder die Funktion optimieren könnte (ohne sichtbaren Verlust).

    Hier die Funktion denoise (clip c):



    LoadPlugin ("E:\Projekt_Capture_Win_7\Plugins\mvtools2.dll")

    function denoise (clip c)

    {

    erg = Mdegrain2i2 (c, 4, 0)

    return (erg)

    }


    function MDegrain2i2 (clip source, int "overlap", int "dct")

    {

    overlap = default (overlap, 0) # overlap value (0 to 4 for blksize=8)

    dct = default (dct, 0) # use dct=1 for clip with light flicker


    fields = source.SeparateFields () # separate by fields

    super = fields.MSuper ()


    backward_vec2 = super.MAnalyse (isb = true, delta = 2, overlap=overlap, dct=dct)

    forward_vec2 = super.MAnalyse (isb = false, delta = 2, overlap=overlap, dct=dct)

    backward_vec4 = super.MAnalyse (isb = true, delta = 4, overlap=overlap, dct=dct)

    forward_vec4 = super.MAnalyse (isb = false, delta = 4, overlap=overlap, dct=dct)

    erg = fields.MDegrain2 (super, backward_vec2, forward_vec2, backward_vec4, forward_vec4, thSAD=400)

    erg = erg.Weave()

    return (erg)

    }


    Gruß

    Highwayman

  • FatFaster : Hast Du das mal ausprobiert?

    KMAnalyse(..) finde ich das irgendwie nicht auf der Seite.

    Importieren von:

    Code
    1. LoadPlugin("I:\Hybrid\32bit\avisynthPlugins\cuda\AvsCUDA.dll")
    2. LoadPlugin("I:\Hybrid\32bit\avisynthPlugins\cuda\KFM.dll")

    Liefert mir ein:

    Zitat

    There is no fucntion named 'KMAnalyse'

    Wenn ich 'KMAnalyse' aufrufen will. Sprich wenn die ein 'KMAnalyse' implementieren, dann ist die Frage: Wo?


    Cu Selur

  • Okay, KMAnalyse kommt mit KTGMC, aber KMAnalyse hat keinen Parameter 'dct', was hier nicht so wichtig wäre, da Highwayman den eh nicht nutzt.

    Problem ist wenn ich:

    verwende bekomme ich ein:

    Zitat

    KMAnalyse: blksizex != overlapx * 2

    Lasse ich den 'overlap'-Parameter weg geht es, wird aber vermutlich andere Ergebnisse als mit dem Parameter liefern.

    => Muss Highwayman für sich entscheiden, ob dies einen Geschwindigkeitszuwachs bringt, für den er auf den Overlap verzichten kann.


    Cu Selur

  • Hast du mal den speed verglichen cuda und non cuda?


    EDIT

    Habe es mal auch ausprobiert. Man kann overlap auf 8 stellen, dann meckert der nicht.

    mit overlap 8 oder ohne overlap bekomme ich jeweils knapp 1,5fps mit 1080p. Ohne die K variante sind es 3,7fps (overlay auf 4) und ohne overlay 13fps.


    Habe es allerdings über avsw.Eval() in Vapoursynth gemacht, ka ob das cuda beeinflusst. Habe meine Nvidia GPU erst seit gestern :D

  • Vapoursynth variante 16fps

    Mit overlay = 0 sind es ~40fps

  • Neuere mvtools2.dll (von https://github.com/pinterf/mvtools/releases) die eventuelle die CPU besser nutzt ist das Einzige was mit einfällt.

    Dafür scheint mein Avisynth zu alt zu sein: ... is not an Avisynth 2.5 plugin


    Ich nutze Avisynth zusammen mit AvsPmod 2.5.1 unter Windows 7 und weiß nicht, welche Baustellen entstehen, wenn ich Avisynth durch eine neue Version ersetze. Evtl. baue ich das parallel unter Win 10 auf.

  • Ich habe mir erst einmal den overlap-Parameter vorgenommen.


    In MDegrain2i2 ist der Default-Wert ja 0. Keine Ahnung, warum ich den damals auf 4 eingestellt habe.


    Und hier ist ja schon ein enormer Performance-Unterschied.

    Meine Werte für einen 4-Minuten-Clip (SD, 720 x 576, Lagarith --> YUY2):


    overlap = 4: ~3.5 fps, ca. 27 Minuten

    overlap = 0: ~11.5 fps, ca. 9 Minuten


    Das ergibt bei einem 1h-Band: 6 3/4 h gegen 2 1/4 h.

    Das wäre schon einmal sehr viel besser.


    Kann jemand beantworten, was der overlap-Parameter genau bewirkt? Auf den ersten Blick sehe ich keinen Unterschied.


    FatFaster : 40 fps klingt natürlich super. Python schreckt mich nicht, nutze ich zusammen mit AvsPmod.

    Was genau ist Vapoursynth? Wie kann es einbunden werden?

  • Vapoursynth ist das modernere Avisynth. Statt der avs scriptsprache nutzt es Python (mit all den Vorteilen).

    Für den Anfang könntest du VapourSynth Portable FATPACK - 64Bit, Editor, Plugins, Scripts, Apps & Abenteuer! nutzen, da ist quasi alles dabei als portable Paket. Nutze den Vapoursynth editor. Da sind auch ein paar Beispiele wie man dann encoded.


    VFW geht mit der portable Version (noch) nicht. Du kannst die Skripte also nicht Virtualdub öffnen, es sei den du fügst das in die registry ein: https://forum.doom9.org/showthread.php?p=1864051#post1864051 (Pfad anpassen!)


    40fps auf 8 kernen.... Ich glaube aber nur mit 3ghz je kern. Komischerweise sind meine bios OC settings futsch.


    Overlay = 4 müsste die Genauigkeit auf ein halbes Pixel verbessern.

  • Wenn ich jetzt unter Win 10 eine neue Umgebung aufbaue, auf welche Standards / Versionen sollte ich dann bauen?

    Für die Filterung und den Austausch von Frames brauche ich


    Avisynth

    AvsPmos

    VirtualDub


    und diverse Filter, meist 32-Bit.


    Avisynth+ 64 Bit ?


    Highwayman.

  • Overlay = 4 müsste die Genauigkeit auf ein halbes Pixel verbessern.

    Ich bin mir nicht sicher, ob Overlay = 4 irgendetwas verändert.

    oriA = ori.xMdegrain2i2 (0, 0)

    oriB = ori.xMdegrain2i2 (4, 0)

    return stackhorizontal (oriA, oriB, Overlay (oriA, oriB, mode = "subtract"))


    Das dritte Bild zeigt tiefe Schwärze.

    Ich weiß nicht, ob das etwas aussagt.

  • http://avs-plus.net/get-started.php

    Editing tools

    • AvsPmod is our recommended editor. It gives you instant preview, support for direct visual comparison, syntax highlighting, code completion, and many other features. There is currently no official release for AviSynth+, so we recommend you get it from here (for 32-bits). An official release which will add support for 64-bit AviSynth+ is expected soon.
    • Users of Notepad++ will be delighted that there is a language add-on for AviSynth.
    • And of course you can use any text editor too to edit scripts.


    D.h. von AvsPmod gibt es noch keine offizielle Version für Avisynth+ ??

  • Du kannst 32 und 64bit parallel betreiben. Die stören sich nicht. Du kannst auch die Avisynth.dll jederzeit durch eine andere ersetzen und schon hast du eine "andere" version.


    Ich persönlich habe das so bei mir aufgebaut:


    VersionString: AviSynth+ 0.1 (r2772, MT, i386)

    PluginDir2_5 (HKLM, x86): D:\AvisynthRepository\AVSPLUS_x86\plugins

    PluginDir+ (HKLM, x86): D:\AvisynthRepository\SCRIPTS

    VersionString: AviSynth+ 0.1 (r2772, MT, x86_64)

    PluginDir2_5 (HKLM, x64): D:\AvisynthRepository\AVSPLUS_x64\plugins

    PluginDir+ (HKLM, x64): D:\AvisynthRepository\SCRIPTS


    Dadurch Teilen sich 32 und 64Bit die scripte.
    Ich habe den Universal Avisynth Installer benutzt, da kann man auch die Pfade schneller/einfacher anpassen: https://forum.doom9.org/showthread.php?t=172124


    Du solltest VirtualDub2 ab jetzt auch nutzen, das unterstützt auch 16bit 32bit? Farbtiefe.

  • Es gibt eig. keinen Grund bei der alten Version zu bleiben. 99.9999999% der Filter funktionieren da auch.

    Eine neuere AvsPmod version gibt es hier https://forum.doom9.org/showthread.php?t=175823

    Was heißt offizielle version, es wird halt von jemandem weiterentwickelt.... der/die ursprünglichen Entwickler machen da schon länger nix mehr dran.


    p.s http://avs-plus.net ist veraltet. Hier runterladen https://github.com/pinterf/AviSynthPlus