Deep Learning in der optischen Flussberechnung

Mit dem Aufkommen vieler verschiedener neuronaler Netzwerkarchitekturen gehören viele klassische Computer Vision-Techniken der Vergangenheit an. Immer seltener verwenden Menschen SIFT und HOG zur Objekterkennung und MBH zur Aktionserkennung. Wenn sie es verwenden, Ă€hneln sie eher handgefertigten Zeichen fĂŒr die entsprechenden Gitter. Heute werden wir uns eines der klassischen CV-Probleme ansehen, bei denen die klassischen Methoden immer noch die FĂŒhrung ĂŒbernehmen, wĂ€hrend DL-Architekturen sie trĂ€ge in den Hinterkopf atmen.



Optische DurchflussschÀtzung


Die Aufgabe der Berechnung des optischen Flusses zwischen zwei Bildern (normalerweise zwischen benachbarten Bildern eines Videos) besteht darin, ein Vektorfeld zu konstruieren Odie gleiche GrĂ¶ĂŸe im Übrigen O(i,j)entspricht dem scheinbaren Pixelverschiebungsvektor (i,j)vom ersten bis zum zweiten Frame. Indem wir ein solches Vektorfeld zwischen allen benachbarten Bildern des Videos erstellen, erhalten wir ein vollstĂ€ndiges Bild davon, wie sich bestimmte Objekte darauf bewegt haben. Mit anderen Worten, dies ist die Aufgabe, alle Pixel in einem Video zu verfolgen. Der optische Strom wird sehr hĂ€ufig verwendet - bei Aufgaben zur Aktionserkennung können Sie sich beispielsweise mit einem solchen Vektorfeld auf die Bewegungen konzentrieren, die auf dem Video auftreten, und sich von seinem Kontext entfernen [7]. Noch hĂ€ufigere Anwendungen sind visuelle KilometerzĂ€hler, Videokomprimierung, Nachbearbeitung (z. B. HinzufĂŒgen eines Zeitlupeneffekts) und vieles mehr.



Es gibt Raum fĂŒr einige Unklarheiten - was genau wird aus mathematischer Sicht als sichtbare Verzerrung angesehen? Normalerweise wird angenommen, dass die Pixelwerte ohne Änderungen von einem Bild zum nĂ€chsten gehen, mit anderen Worten:

I(i,j,t)=I(i+ui,j+uj,t+1),

wo I(i,j,t)- PixelintensitÀt in Koordinaten (i,j)dann optischer Fluss (ui,uj)zeigt, wo sich dieses Pixel zum nÀchsten Zeitpunkt bewegt hat (d. h. im nÀchsten Bild).

Auf dem Bild sieht es so aus:





Das Visualisieren eines Vektorfeldes direkt mit Vektoren ist visuell, aber nicht immer bequem. Daher besteht die zweite ĂŒbliche Methode darin, mit Farbe zu visualisieren:





Jede Farbe in diesem Bild codiert einen bestimmten Vektor. Der Einfachheit halber werden Vektoren, die lÀnger als 20 sind, zugeschnitten, und der Vektor selbst kann anhand der Farbe aus dem folgenden Bild wiederhergestellt werden:



Mehr Katzenfluss!













Klassische Methoden haben eine ziemlich gute Genauigkeit erreicht, die manchmal ihren Preis hat. Wir werden die Fortschritte betrachten, die neuronale Netze bei der Lösung dieses Problems in den letzten 4 Jahren erzielt haben.

Daten und Metriken


Zwei Wörter darĂŒber, welche DatensĂ€tze zu Beginn unserer Geschichte (d. H. 2015) verfĂŒgbar und beliebt waren und wie sie die QualitĂ€t des resultierenden Algorithmus messen.

Middlebury

Ein winziger Datensatz von 8 Bildpaaren mit kleinen Offsets, der jedoch auch jetzt noch zur Validierung von Algorithmen zur Berechnung des optischen Flusses verwendet wird.



Kitty

Dies ist ein Datensatz, der fĂŒr Anwendungen fĂŒr selbstfahrende Autos gekennzeichnet und mit LIDAR-Technologie zusammengestellt wurde. Es wird hĂ€ufig zur Validierung von Algorithmen zur Berechnung des optischen Flusses verwendet und enthĂ€lt viele ziemlich komplizierte FĂ€lle mit scharfen ÜbergĂ€ngen zwischen Frames.



Sintel

Ein weiterer sehr verbreiteter Maßstab, der auf der Grundlage des offenen und in Blender gezeichneten Cartoon Sintel in zwei Versionen erstellt wurde, die als sauber und endgĂŒltig bezeichnet werden. Der zweite ist viel komplizierter, weil enthĂ€lt viele atmosphĂ€rische Effekte, Rauschen, UnschĂ€rfe und andere Probleme fĂŒr die Algorithmen zur Berechnung des optischen Flusses.


EPE

Die Standardfehlerfunktion fĂŒr die Aufgabe zur Berechnung des optischen Flusses ist Endpunktfehler oder EPE. Dies ist einfach der euklidische Abstand zwischen dem berechneten Algorithmus und dem wahren optischen Fluss, gemittelt ĂŒber alle Pixel.

Flownet (2015)


Als die Autoren (von den UniversitĂ€ten MĂŒnchen und Freiburg) 2015 mit dem Aufbau einer neuronalen Netzwerkarchitektur fĂŒr die Berechnung des optischen Flusses begannen, hatten sie zwei Probleme: Es gab keinen großen markierten Datensatz fĂŒr diese Aufgabe, und das manuelle Markieren wĂ€re schwierig (versuchen Sie zu markieren, wo ich mich bewegt habe) Erstens jedes Pixel des Bildes im nĂ€chsten Bild. Diese Aufgabe war ganz anders als alle Aufgaben, die zuvor mit Hilfe von CNN-Architekturen gelöst wurden. TatsĂ€chlich ist dies eine Aufgabe der Pixel-fĂŒr-Pixel-Regression, wodurch sie der Aufgabe der Segmentierung (Pixel-fĂŒr-Pixel-Klassifizierung) Ă€hnelt, aber anstelle eines Bildes haben wir zwei Eingaben, und intuitiv sollten die Zeichen irgendwie den Unterschied zwischen den beiden Bildern zeigen. Als erste Iteration wurde beschlossen, nur zwei RGB-Frames als Eingabe zu platzieren (nachdem tatsĂ€chlich ein 6-Kanal-Bild empfangen wurde), zwischen denen wir den optischen Strom berechnen möchten, und U-net als Architektur mit einer Reihe von Änderungen zu verwenden. Dieses Netzwerk wurde FlowNetS genannt (S steht fĂŒr Simple):





Wie Sie dem Diagramm entnehmen können, fÀllt der Encoder nicht auf, der Decoder unterscheidet sich in mehreren Punkten von den klassischen Optionen:

  1. Die Vorhersage des optischen Flusses erfolgt nicht nur von der letzten Ebene, sondern auch von allen anderen. Um die Grundwahrheit fĂŒr die i-te Ebene des Decoders zu erhalten, wird das ursprĂŒngliche Ziel (d. H. Der optische Strom) einfach (fast das gleiche wie das Bild) auf die gewĂŒnschte Auflösung reduziert, und das auf der i-ten Ebene erhaltene PrĂ€dikat geht weiter, t es wird mit einer Merkmalskarte verkettet, die aus dieser Ebene hervorgeht. Die allgemeine Funktion des Lernverlusts ist eine gewichtete Summe der Verluste von allen Ebenen des Decoders, wĂ€hrend die Gewichtung selbst umso grĂ¶ĂŸer ist, je nĂ€her die Ebene an der Netzwerkausgabe liegt. Die Autoren geben keine ErklĂ€rung dafĂŒr, warum dies getan wird, aber höchstwahrscheinlich liegt der Grund darin, dass scharfe Bewegungen auf frĂŒhen Ebenen besser zu erkennen sind, dann sind die Vektoren im optischen Strom mit niedrigerer Auflösung nicht so groß.
  2. Das Diagramm zeigt, dass die Eingangsauflösung der Bilder 384 x 512 betrĂ€gt und die Ausgabe viermal kleiner ist. Die Autoren stellten fest, dass, wenn Sie diese Ausgabe durch einfache bilineare Interpolation auf 384 x 512 erhöhen, die gleiche QualitĂ€t erzielt wird, als wĂŒrden Sie zwei weitere Ebenen des Decoders anschließen. Sie können auch den Variationsansatz [2] verwenden, der die QualitĂ€t beweist (+ v in der Tabelle mit QualitĂ€t).
  3. Wie in U-net werden Attributkarten vom Codierer an den Decodierer gesendet und wie in der Abbildung gezeigt verkettet.



Um zu verstehen, wie die Autoren versucht haben, ihre Basislinie zu verbessern, mĂŒssen Sie wissen, wie die Korrelation zwischen Bildern ist und warum sie bei der Berechnung des optischen Flusses hilfreich sein kann. Wenn wir also zwei Bilder haben und wissen, dass das zweite das nĂ€chste Bild im Video relativ zum ersten ist, können wir versuchen, den Bereich um den Punkt im ersten Bild (fĂŒr den wir eine Verschiebung zum zweiten Bild finden möchten) mit Bereichen gleicher GrĂ¶ĂŸe im zweiten Bild zu vergleichen. Unter der Annahme, dass die Verschiebung pro Zeiteinheit nicht zu groß sein könnte, kann der Vergleich nur in einer bestimmten Nachbarschaft des Startpunkts betrachtet werden. Hierzu wird eine Kreuzkorrelation verwendet. Lassen Sie uns anhand eines Beispiels veranschaulichen.

Nehmen Sie zwei benachbarte Bilder des Videos. Wir möchten feststellen, wo sich ein bestimmter Punkt vom ersten zum zweiten Bild verschoben hat. Angenommen, ein Bereich um diesen Punkt hat sich auf die gleiche Weise verschoben. In der Tat werden benachbarte Pixel in einem Video normalerweise zusammen versetzt, wie z höchstwahrscheinlich sind sie visuell Teil eines Objekts. Diese Annahme wird beispielsweise in differenziellen AnsĂ€tzen aktiv verwendet, die in [5], [6] ausfĂŒhrlicher gelesen werden können.

fig, ax = plt.subplots(1, 2, figsize=(20, 10)) ax[0].imshow(frame1) ax[1].imshow(frame2); 



Versuchen wir, einen Punkt in der Mitte der Pfote des KĂ€tzchens zu finden und ihn im zweiten Bild zu finden. Nehmen Sie einen Bereich um ihn herum.

 patch1 = frame1[90:190, 140:250] plt.imshow(patch1); 



Wir berechnen die Korrelation zwischen diesem Bereich (in der englischen Literatur wird hĂ€ufig eine Vorlage oder ein Patch aus dem ersten Bild geschrieben) und dem zweiten Bild. Die Vorlage „geht“ einfach durch das zweite Bild und berechnet den folgenden Wert zwischen sich und Teilen gleicher GrĂ¶ĂŸe im zweiten Bild:



Je grĂ¶ĂŸer der Wert dieses Werts ist, desto mehr sieht die Vorlage wie das entsprechende StĂŒck im zweiten Bild aus. Mit OpenCV kann dies folgendermaßen geschehen:

 corr = cv2.matchTemplate(frame2, patch1, cv2.TM_CCORR_NORMED) plt.imshow(corr, cmap='gray'); 

Weitere Details finden Sie in [7].

Das Ergebnis ist wie folgt:



Wir sehen einen klaren Peak, der weiß angezeigt wird. Finden Sie es im zweiten Frame:

 min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(corr) h, w, _ = patch1.shape top_left = max_loc bottom_right = (top_left[0] + w, top_left[1] + h) frame2_copy = frame2.copy() cv2.rectangle(frame2_copy, top_left, bottom_right, 255, 2) plt.imshow(frame2_copy); 



Wir sehen, dass der Fuß korrekt gefunden wurde. Anhand dieser Daten können wir verstehen, in welche Richtung er sich vom ersten zum zweiten Bild bewegt hat, und den entsprechenden optischen Fluss berechnen. ZusĂ€tzlich stellt sich heraus, dass dieser Vorgang gegenĂŒber photometrischen Verzerrungen, d. H. Wenn die Helligkeit im zweiten Bild stark ansteigt, bleibt der Kreuzkorrelationspeak zwischen den Bildern bestehen.

In Anbetracht all dessen entschieden sich die Autoren, die sogenannte Korrelationsschicht in ihre Architektur einzufĂŒhren, aber es wurde beschlossen, die Korrelation nicht gemĂ€ĂŸ den Eingabebildern, sondern gemĂ€ĂŸ den Attributkarten nach mehreren Schichten des Codierers zu berĂŒcksichtigen. Eine solche Schicht hat aus offensichtlichen GrĂŒnden keine Lernparameter, obwohl sie im Wesentlichen der Faltung Ă€hnlich ist, aber anstelle von Filtern verwenden wir hier keine Gewichte, sondern einen Bereich des zweiten Bildes:



Seltsamerweise fĂŒhrte dieser Trick zu keiner signifikanten Verbesserung der QualitĂ€t der Autoren dieses Artikels. Er wurde jedoch erfolgreicher in weiteren Arbeiten angewendet, und in [9] konnten die Autoren zeigen, dass FlowNetC durch geringfĂŒgige Änderung der Trainingsparameter wesentlich besser funktionieren kann.

Die Autoren lösten das Problem mit dem Fehlen eines Datensatzes auf ziemlich elegante Weise: Sie kratzten 964 Bilder von Flickr zu den Themen "Stadt", "Landschaft", "Berg" in der Auflösung 1024 × 768 und verwendeten ihre Ernte 512 × 384 als Hintergrund, die dann einige warf StĂŒhle aus einem offenen Satz gerenderter 3D-Modelle. Dann wurden verschiedene affine Transformationen unabhĂ€ngig voneinander auf die StĂŒhle und den Hintergrund angewendet, die verwendet wurden, um das zweite Bild in einem Paar und den optischen Fluss zwischen ihnen zu erzeugen. Das Ergebnis ist wie folgt:





Ein interessantes Ergebnis war, dass die Verwendung eines solchen synthetischen Datensatzes es ermöglichte, eine relativ gute QualitĂ€t fĂŒr Daten aus einer anderen DomĂ€ne zu erzielen. Die Feinabstimmung der entsprechenden Daten hat natĂŒrlich mehr QualitĂ€ten bewiesen (+ ft in der folgenden Tabelle):



Das Ergebnis auf echten Videos ist hier zu sehen:


SpyNet (2016)


In vielen nachfolgenden Artikeln versuchten die Autoren, die QualitĂ€t zu verbessern, indem sie das Problem der schlechten Erkennung plötzlicher Bewegungen lösten. Intuitiv wird die Bewegung vom Netzwerk nicht erfasst, wenn ihr Vektor das Empfangsfeld der Aktivierung deutlich ĂŒberschreitet. Es wird vorgeschlagen, dieses Problem aufgrund von drei Dingen zu lösen: einer grĂ¶ĂŸeren Faltung, Pyramiden und dem "Verziehen" eines Bildes von einem Paar in einen optischen Strom. Alles in Ordnung.

Wenn wir also ein paar Bilder haben, in denen sich das Objekt stark verschoben hat (10+ Pixel), können wir das Bild einfach reduzieren (um das 6-fache oder mehr). Der absolute Wert des Versatzes nimmt erheblich ab, und das Netzwerk kann ihn mit grĂ¶ĂŸerer Wahrscheinlichkeit „fangen“, insbesondere wenn seine Windungen grĂ¶ĂŸer sind als der Versatz selbst (in diesem Fall werden 7x7-Windungen verwendet).



Beim Verkleinern des Bildes haben wir jedoch viele wichtige Details verloren. Daher sollten wir zur nĂ€chsten Ebene der Pyramide gehen, in der die BildgrĂ¶ĂŸe bereits grĂ¶ĂŸer ist, und dabei die Informationen berĂŒcksichtigen, die wir zuvor erhalten haben, als wir den optischen Fluss bei einer kleineren GrĂ¶ĂŸe berechnet haben. Dies erfolgt unter Verwendung des Warping-Operators, der das erste Bild gemĂ€ĂŸ der verfĂŒgbaren AnnĂ€herung des optischen Flusses (erhalten auf der vorherigen Ebene) wiedergibt. Eine Verbesserung in diesem Fall besteht darin, dass das erste Bild, das gemĂ€ĂŸ der AnnĂ€herung des optischen Flusses "geschoben" wird, nĂ€her am zweiten liegt als das ursprĂŒngliche, dh wir reduzieren erneut den absoluten Wert des optischen Flusses, den wir vorhersagen mĂŒssen (RĂŒckruf, kleiner Wert) Bewegungen werden viel besser erkannt, da sie vollstĂ€ndig in einer Faltung enthalten sind. Aus mathematischer Sicht kann der Warping-Operator mit einem Bitmap-Bild I und einer Approximation des optischen Flusses V wie folgt beschrieben werden:

w(I,V)=Iw,Iw(x)=I(x+V(x)),

wo x=(i,j)d.h. ein bestimmter Punkt im Bild I- das Bild selbst V- optischer Fluss Iw- das resultierende Bild, "eingewickelt" in den optischen Strom.

Wie kann man all dies in der CNN-Architektur anwenden? Wir legen die Anzahl der Pyramidenebenen fest kund einen Faktor, um den jedes nachfolgende Bild auf einem Niveau reduziert wird, das vom letzten beginnt n. Bezeichnen mit d(∗)und u(∗)die Downsampling- und Upsampling-Funktionen des Bildes oder des optischen Flusses um diesen Faktor.

Wir erhalten auch eine Reihe von CNN-ok { G0...Gk}, eine fĂŒr jede Ebene der Pyramide. Dann Gi-th Netzwerk akzeptiert ein paar Bilder mit iPyramidenniveau und optischer Fluss berechnet am Gi−1Niveau ( G0akzeptiert stattdessen nur einen Tensor von Nullen). In diesem Fall senden wir eines der Bilder an die Verzerrungsschicht, um den Unterschied zwischen ihnen zu verringern, und wir sagen nicht den optischen Fluss auf dieser Ebene voraus, sondern den Wert, der zu dem erhöhten (hochgetasteten) optischen Fluss von der vorherigen Ebene addiert werden muss, um den optischen Fluss zu erhalten auf dieser Ebene. In der Formel sieht es ungefĂ€hr so ​​aus:

vk=Gk(Ik1,w(Ik2,u(Vk−1)),Vk−1)


Um den optischen Stream selbst zu erhalten, fĂŒgen wir einfach das NetzwerkprĂ€dikat und den erhöhten Stream der vorherigen Ebene hinzu:

Vk=u(Vk−1)+vk.

Um die Grundwahrheit fĂŒr das Netzwerk auf dieser Ebene zu erhalten, mĂŒssen wir die entgegengesetzte Operation ausfĂŒhren: Subtrahieren Sie das PrĂ€dikat vom Ziel (auf die gewĂŒnschte Ebene reduziert) von der vorherigen Ebene der Pyramide. Schematisch sieht es so aus:



Der Vorteil dieses Ansatzes ist, dass wir jede Stufe unabhĂ€ngig unterrichten können. Die Autoren begannen mit dem Training ab Stufe 0, jedes nachfolgende Netzwerk wurde mit den Parametern des vorherigen initialisiert. Da jedes Netzwerk Gilöst das Problem viel einfacher als die vollstĂ€ndige Berechnung des optischen Flusses in einem großen Bild, dann können die Parameter viel weniger gemacht werden. So sehr, dass jetzt das gesamte Ensemble auf mobile GerĂ€te passen kann:



Das Ensemble selbst ist wie folgt (ein Beispiel fĂŒr eine Pyramide mit 3 Ebenen):



Es bleibt direkt ĂŒber Architektur zu sprechen Givernetzen und Bilanz ziehen. Jedes Netzwerk Gibesteht aus 5 Faltungsschichten, von denen jede mit der ReLU-Aktivierung endet, mit Ausnahme der letzten (die den optischen Fluss vorhersagt). Die Anzahl der Filter auf jeder Ebene betrĂ€gt jeweils { 32,64,32,16,2}. Die EingĂ€nge des neuronalen Netzwerks (das Bild, das zweite Bild, das in den optischen Strom „eingewickelt“ ist, und der optische Strom selbst) verketten sich einfach entsprechend der Dimension der KanĂ€le, sodass ihr Eingangstensor 8 hat. Die Ergebnisse sind beeindruckend:



PWC-Net (2018)


Inspiriert vom Erfolg ihrer deutschen Kollegen beschlossen die Mitarbeiter von NVIDIA, ihre Erfahrungen (und Grafikkarten) einzusetzen, um das Ergebnis weiter zu verbessern. Ihre Arbeit basierte grĂ¶ĂŸtenteils auf Ideen des VorgĂ€ngermodells (SpyNet), daher wird sich PWC-Net auch mit Pyramiden befassen, jedoch mit Faltungspyramiden, jedoch nicht mit den Originalbildern - in der richtigen Reihenfolge.

Die Verwendung von RohpixelintensitĂ€ten zur Berechnung des optischen Flusses ist nicht immer sinnvoll, da Eine starke Änderung der Helligkeit / des Kontrasts wird unsere Annahme brechen, dass sich Pixel ohne Änderungen von einem Bild zum nĂ€chsten bewegen und der Algorithmus solchen Änderungen nicht widersteht. In klassischen Algorithmen zur Berechnung des optischen Flusses werden verschiedene Transformationen verwendet, die diese Situation abschwĂ€chen. In diesem Fall haben die Autoren beschlossen, dem Modell die Möglichkeit zu geben, solche Transformationen selbst zu lernen. Daher werden anstelle der Bildpyramide in PWC-Net Faltungspyramiden verwendet (daher der erste Buchstabe in Pwc-Net), d. H. Nur Feature-Maps aus verschiedenen CNN-Layern, die hier als Feature-Pyramiden-Extraktor bezeichnet werden.

Dann ist fast alles wie in SpyNet, kurz bevor Sie bei CNN, dem so genannten optischen FlussschÀtzer, alles einreichen, was Sie brauchen, nÀmlich:

  • Bild (in diesem Fall eine Feature-Map vom Feature-Pyramiden-Extraktor),
  • der auf der vorherigen Ebene berechnete hochgetastete optische Fluss,
  • das zweite Bild, „eingewickelt“ (erinnern Sie sich an die Verzerrungsschicht, daher der zweite Buchstabe in pWc-Net), in diesen optischen Strom,

Überlegen Sie zwischen dem „verpackten“ zweiten Frame und dem ĂŒblichen ersten (ich erinnere Sie noch einmal daran, dass hier anstelle von Rohbildern Feature-Karten mit Feature-Pyramiden-Extraktor verwendet werden), was als Kostenvolumen bezeichnet wird (daher der dritte Buchstabe in pwC-Net) und was im Wesentlichen bereits vorhanden ist zuvor betrachtete Korrelation zwischen zwei Bildern.



Der letzte Schliff ist das Kontextnetzwerk, das unmittelbar nach dem optischen FlussschĂ€tzer hinzugefĂŒgt wird und die Rolle der trainierten Nachbearbeitung fĂŒr den berechneten optischen Strom spielt. Architektonische Details können unter dem Spoiler oder im Originalartikel eingesehen werden.

Intime Details
Der Merkmalspyramidenextraktor hat also fĂŒr beide Bilder die gleichen Gewichte. Undichte ReLU wird fĂŒr jede Faltung als NichtlinearitĂ€t verwendet. Um die Auflösung von Feature-Maps auf jeder nachfolgenden Ebene zu verringern, werden Faltungen mit Schritt 2 und verwendet ctlbedeutet Bild-Feature-Map tauf der Ebene l.



Optischer DurchflussschÀtzer auf der 2. Ebene der Pyramide (zum Beispiel). Hier gibt es nichts Ungewöhnliches, jede Faltung endet immer noch mit undichtem ReLU, mit Ausnahme der letzten, die den optischen Fluss vorhersagt.



Das Kontextnetzwerk befindet sich immer noch auf derselben 2. Ebene der Pyramide. Dieses Netzwerk verwendet erweiterte Faltungen mit denselben undichten ReLU-Aktivierungen, mit Ausnahme der letzten Schicht. Es empfÀngt den vom optischen FlussschÀtzer berechneten optischen Fluss und die Attribute von der zweiten Schicht vom Ende der Schicht mit demselben optischen FlussschÀtzer. Die letzte Ziffer in jedem Block bedeutet Dilatationskonstante.




Die Ergebnisse sind noch beeindruckender:



Im Vergleich zu anderen CNN-Methoden zur Berechnung des optischen Flusses erzielt PWC-Net ein Gleichgewicht zwischen QualitÀt und Anzahl der Parameter:



Es gibt auch eine hervorragende PrĂ€sentation der Autoren selbst, in der sie ĂŒber das Modell selbst und ihre Experimente sprechen:


Fazit


Die Entwicklung von Architekturen, die das Problem der optischen FlusszĂ€hlung lösen, ist ein wunderbares Beispiel dafĂŒr, wie der Fortschritt in CNN-Architekturen und deren Kombination mit klassischen Methoden das beste und beste Ergebnis liefert. Und wĂ€hrend klassische CV-Methoden immer noch an QualitĂ€t gewinnen, geben die jĂŒngsten Ergebnisse Hoffnung, dass dies behoben werden kann ...

Quellen und Links


1. FlowNet: Lernen des optischen Flusses mit Faltungsnetzwerken: Artikel , Code .
2. Optischer Fluss mit großer Verschiebung: Deskriptoranpassung bei der SchĂ€tzung der Variationsbewegung: Artikel .
3. Optische FlussschÀtzung unter Verwendung eines rÀumlichen Pyramidennetzwerks: Artikel , Code .
4. PWC-Net: CNNs fĂŒr den optischen Fluss unter Verwendung von Pyramide, Verzerrung und Kostenvolumen: Artikel , Code .
5. Was Sie ĂŒber den optischen Fluss wissen wollten, aber es war Ihnen peinlich zu fragen: Artikel .
6. Berechnung des optischen Flusses nach der Lucas-Canada-Methode. Theorie: Artikel .
7. Template Matching mit OpenCVP: Dock .
8. Quo Vadis, Aktionserkennung? Ein neues Modell und der Kinetik-Datensatz: Artikel .
9. FlowNet 2.0: Entwicklung der optischen FlussschÀtzung mit tiefen Netzwerken: Artikel , Code .

Source: https://habr.com/ru/post/de446726/


All Articles