Ein 2021-Leitfaden zur semantischen Segmentierung

Quellknoten: 872271

Einleitung / Intro

Deep Learning war bei der Arbeit mit Bildern als Daten sehr erfolgreich und befindet sich derzeit in einem Stadium, in dem es in mehreren Anwendungsfällen besser funktioniert als Menschen. Die wichtigsten Probleme, die Menschen mit Computer Vision lösen wollten, sind: Bildklassifizierung, Objekterkennung und Segmentierung in aufsteigender Reihenfolge ihrer Schwierigkeit.

In der einfachen alten Aufgabe der Bildklassifizierung sind wir nur daran interessiert, die Beschriftungen aller Objekte zu erhalten, die in einem Bild vorhanden sind. Bei der Objekterkennung gehen wir noch einen Schritt weiter und versuchen mit Hilfe von Begrenzungsrahmen zu wissen, an welchen Objekten sich alle Objekte in einem Bild befinden. Die Bildsegmentierung erreicht eine neue Ebene, indem versucht wird, die genaue Grenze der Objekte im Bild genau herauszufinden.

Quelle http://cs224d.stanford.edu/index.html

In diesem Artikel werden wir dieses Konzept der Bildsegmentierung durchgehen und die relevanten Anwendungsfälle sowie verschiedene neuronale Netzwerkarchitekturen diskutieren, die zur Erzielung der zu untersuchenden Ergebnisse, Metriken und Datensätze beitragen.

Was ist Bildsegmentierung?

Wir wissen, dass ein Bild nichts anderes als eine Sammlung von Pixeln ist. Die Bildsegmentierung ist der Prozess des Klassifizierens jedes Pixels in einem Bild, das zu einer bestimmten Klasse gehört, und kann daher als Klassifizierungsproblem pro Pixel angesehen werden. Es gibt zwei Arten von Segmentierungstechniken

Source http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf
  1. Semantische Segmentierung : - Bei der semantischen Segmentierung wird jedes Pixel klassifiziert, das zu einem bestimmten Label gehört. Es unterscheidet sich nicht zwischen verschiedenen Instanzen desselben Objekts. Wenn ein Bild beispielsweise zwei Katzen enthält, werden durch die semantische Segmentierung alle Pixel beider Katzen mit derselben Bezeichnung versehen
  2. Instanzsegmentierung : - Die Instanzsegmentierung unterscheidet sich von der semantischen Segmentierung dadurch, dass jeder Instanz eines bestimmten Objekts im Bild eine eindeutige Bezeichnung zugewiesen wird. Wie im Bild oben zu sehen ist, werden allen 3 Hunden unterschiedliche Farben zugewiesen, dh unterschiedliche Bezeichnungen. Bei der semantischen Segmentierung hätten alle die gleiche Farbe erhalten.

Wir kommen nun zu dem Punkt, an dem wir einen solchen Algorithmus benötigen würden

Anwendungsfälle der Bildsegmentierung

Handschrifterkennung : - Junjo et al. Haben gezeigt, wie die semantische Segmentierung verwendet wird, um Wörter und Zeilen aus handgeschriebenen Dokumenten zu extrahieren 2019-Forschungspapier handgeschriebene Zeichen zu erkennen

Quelle

Google Portrait-Modus : - Es gibt viele Anwendungsfälle, in denen es unbedingt erforderlich ist, den Vordergrund vom Hintergrund zu trennen. Im Hochformat von Google können wir beispielsweise sehen, dass der Hintergrund unscharf ist, während der Vordergrund unverändert bleibt, um einen coolen Effekt zu erzielen

Quelle: - https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

YouTube-Geschichten : - Google hat kürzlich eine Funktion für YouTube-Storys veröffentlicht, mit der Inhaltsersteller beim Erstellen von Storys unterschiedliche Hintergründe anzeigen können.

Quelle: - https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

Virtuelles Make-up : - Das Aufbringen eines virtuellen Lippenstifts ist jetzt mit Hilfe der Bildsegmentierung möglich

Quelle: - https://www.theverge.com/2017/3/16/14946086/sephora-virtual-assistant-ios-app-update-ar-makeup

4.Virtuelles Anprobieren : - Das virtuelle Anprobieren von Kleidung ist eine interessante Funktion, die in Geschäften mit spezieller Hardware erhältlich war, mit der ein 3D-Modell erstellt wurde. Mit Deep Learning und Bildsegmentierung kann dasselbe jedoch mit nur einem 2D-Bild erzielt werden

Quelle: - https://arxiv.org/pdf/1807.07688.pdf

Visuelle Bildsuche : - Die Idee, Kleidung zu segmentieren, wird auch in Bildabrufalgorithmen im E-Commerce verwendet. Mit Pinterest / Amazon können Sie beispielsweise jedes Bild hochladen und ähnliche Produkte erhalten, indem Sie eine Bildsuche durchführen, die auf der Segmentierung des Stoffanteils basiert

Quelle: - https://github.com/paucarre/tiefvision

Selbstfahrende Autos : - Selbstfahrende Autos benötigen ein umfassendes Verständnis ihrer Umgebung auf einem pixelgenauen Niveau. Daher wird die Bildsegmentierung verwendet, um Spuren und andere notwendige Informationen zu identifizieren

Quelle: - https://medium.com/intro-to-artificial-intelligence/semantic-segmentation-udaitys-self-driving-car-engineer-nanodegree-c01eb6eaf9d

Mit Nanonets können Fortune 500-Unternehmen mithilfe der semantischen Segmentierung ein besseres Kundenerlebnis in großem Maßstab ermöglichen.

Methoden und Techniken

Vor dem Aufkommen des Deep Learning wurden klassische Techniken des maschinellen Lernens wie SVM, Random Forest und K-means Clustering verwendet, um das Problem der Bildsegmentierung zu lösen. Aber wie bei den meisten bildbezogenen Problemstellungen hat Deep Learning umfassend besser funktioniert als die vorhandenen Techniken und ist jetzt zur Norm geworden, wenn es um semantische Segmentierung geht. Lassen Sie uns die Techniken überprüfen, die zur Lösung des Problems verwendet werden

Vollständiges Faltungsnetzwerk

Die allgemeine Architektur eines CNN besteht aus wenigen Faltungs- und Poolschichten, gefolgt von wenigen vollständig verbundenen Schichten am Ende. Das 2014 veröffentlichte Papier von Fully Convolutional Network argumentiert, dass die endgültige vollständig verbundene Schicht als eine 1 × 1-Faltung angesehen werden kann, die die gesamte Region abdeckt.

Quelle: - https://arxiv.org/abs/1411.4038

Daher können die endgültigen dichten Schichten durch eine Faltungsschicht ersetzt werden, die das gleiche Ergebnis erzielt. Der Vorteil dabei ist jedoch, dass die Größe der Eingabe nicht mehr festgelegt werden muss. Wenn dichte Schichten verwendet werden, ist die Größe der Eingabe beschränkt, und wenn eine Eingabe unterschiedlicher Größe bereitgestellt werden muss, muss die Größe geändert werden. Durch Ersetzen einer dichten Schicht durch Faltung besteht diese Einschränkung jedoch nicht.

Auch wenn eine größere Bildgröße als Eingabe bereitgestellt wird, ist die erzeugte Ausgabe eine Feature-Map und nicht nur eine Klassenausgabe wie bei einem normalen Bild mit Eingabegröße. Auch das beobachtete Verhalten der endgültigen Feature-Map stellt die Heatmap der erforderlichen Klasse dar, dh die Position des Objekts wird in der Feature-Map hervorgehoben. Da die Ausgabe der Feature-Map eine Heatmap des erforderlichen Objekts ist, handelt es sich um gültige Informationen für unseren Anwendungsfall der Segmentierung.

Da die auf der Ausgabeschicht erhaltene Merkmalskarte aufgrund des Satzes der durchgeführten Faltungen eine Abwärtsabtastung ist, möchten wir sie unter Verwendung einer Interpolationstechnik hochabtasten. Bilineares Up-Sampling funktioniert, aber das Papier schlägt vor, gelernte Up-Sampling mit Entfaltung zu verwenden, die sogar ein nichtlineares Up-Sampling lernen kann.

Der Abwärtsabtastteil des Netzwerks wird als Codierer und der Aufwärtsabtastteil als Decodierer bezeichnet. Dies ist ein Muster, das wir in vielen Architekturen sehen werden, dh das Reduzieren der Größe mit dem Codierer und das anschließende Abtasten mit dem Decodierer. In einer idealen Welt möchten wir die Stichprobe nicht mithilfe von Pooling herunterfahren und die gesamte Größe beibehalten, aber dies würde zu einer großen Anzahl von Parametern führen und wäre rechnerisch nicht durchführbar.

Quelle: - https://arxiv.org/abs/1411.4038

Obwohl die erhaltenen Ausgabeergebnisse anständig waren, ist die beobachtete Ausgabe rau und nicht glatt. Der Grund dafür ist der Informationsverlust auf der letzten Merkmalsschicht aufgrund des 32-fachen Downsamplings unter Verwendung von Faltungsschichten. Jetzt wird es für das Netzwerk sehr schwierig, 32x Upsampling mit diesen kleinen Informationen durchzuführen. Diese Architektur heißt FCN-32

Um dieses Problem anzugehen, wurden in dem Papier zwei weitere Architekturen vorgeschlagen: FCN-2, FCN-16. In FCN-8 werden Informationen aus der vorherigen Pooling-Schicht zusammen mit der endgültigen Feature-Map verwendet. Daher besteht die Aufgabe des Netzwerks nun darin, 16-fache Abtastung zu lernen, was im Vergleich zu FCN-16 besser ist. FCN-32 versucht es noch besser zu machen, indem Informationen aus einer weiteren vorherigen Pooling-Schicht aufgenommen werden.

BEI

U-Net baut von oben auf dem vollständig gefalteten Netzwerk auf. Es wurde für medizinische Zwecke gebaut, um Tumore in der Lunge oder im Gehirn zu finden. Es besteht auch aus einem Codierer, der das Eingabebild auf eine Merkmalskarte heruntertastet, und dem Decodierer, der die Merkmalskarte auf die Eingabebildgröße unter Verwendung gelernter Entfaltungsschichten abtastet.

Quelle: - https://arxiv.org/abs/1505.04597

Der Hauptbeitrag der U-Net-Architektur sind die Verknüpfungsverbindungen. Wir haben oben in FCN gesehen, dass wir, da wir ein Bild als Teil des Encoders heruntergesampelt haben, viele Informationen verloren haben, die im Encoderteil nicht einfach wiederhergestellt werden können. FCN versucht, dies zu beheben, indem Informationen aus Pooling-Layern vor dem endgültigen Feature-Layer abgerufen werden.

U-Net schlägt einen neuen Ansatz zur Lösung dieses Problems des Informationsverlusts vor. Es wird vorgeschlagen, Informationen von der entsprechenden Abwärtsabtastschicht im Codierer an jede Aufwärtsabtastschicht im Decodierer zu senden, wie in der obigen Abbildung zu sehen ist, wodurch feinere Informationen erfasst werden, während gleichzeitig die Berechnung niedrig gehalten wird. Da die Schichten am Anfang des Codierers mehr Informationen hätten, würden sie den Aufwärtsabtastvorgang des Decodierers unterstützen, indem sie feine Details liefern, die den Eingabebildern entsprechen, wodurch die Ergebnisse erheblich verbessert werden. Das Papier schlug auch die Verwendung einer neuartigen Verlustfunktion vor, die wir unten diskutieren werden.

DeepLab

Deeplab von einer Gruppe von Forschern von Google hat eine Vielzahl von Techniken vorgeschlagen, um die vorhandenen Ergebnisse zu verbessern und eine feinere Ausgabe bei geringeren Rechenkosten zu erzielen. Die 3 wichtigsten Verbesserungen, die im Rahmen der Forschung vorgeschlagen wurden, sind

1) Atrous Windungen
2) Atrous räumliches Pyramiden-Pooling
3) Verwendung bedingter Zufallsfelder zur Verbesserung der endgültigen Ausgabe
Lassen Sie uns über all dies diskutieren

Atrische Faltung

Eines der Hauptprobleme beim FCN-Ansatz ist das übermäßige Downsizing aufgrund aufeinanderfolgender Pooling-Vorgänge. Aufgrund einer Reihe von Pools wird das Eingabebild um das 32-fache nach unten abgetastet, was wiederum nach oben abgetastet wird, um das Segmentierungsergebnis zu erhalten. Das 32-fache Downsampling führt zu einem Informationsverlust, der für die Erzielung einer guten Ausgabe in einer Segmentierungsaufgabe von entscheidender Bedeutung ist. Auch die Entfaltung zur 32-fachen Aufwärtsabtastung ist eine rechen- und speicherintensive Operation, da zusätzliche Parameter bei der Bildung einer erlernten Abtastung beteiligt sind.

Das Papier schlägt die Verwendung der Atrous-Faltung oder der Lochfaltung oder der erweiterten Faltung vor, die dazu beiträgt, einen großen Kontext unter Verwendung der gleichen Anzahl von Parametern zu verstehen.

Source:- https://www.mdpi.com/1424-8220/19/24/5361/htm

Die erweiterte Faltung vergrößert den Filter, indem Nullen (sogenannte Löcher) angehängt werden, um die Lücke zwischen den Parametern zu füllen. Die Anzahl der Löcher / Nullen, die zwischen den Filterparametern ausgefüllt werden, wird als Termdilatationsrate bezeichnet. Wenn die Rate gleich 1 ist, ist es nichts anderes als die normale Faltung. Wenn die Rate gleich 2 ist, wird zwischen jedem anderen Parameter eine Null eingefügt, wodurch der Filter wie eine 5 × 5-Faltung aussieht. Jetzt hat es die Fähigkeit, den Kontext der 5 × 5-Faltung zu erhalten, während 3 × 3-Faltungsparameter vorliegen. In ähnlicher Weise geht das Empfangsfeld für Rate 3 auf 7 × 7.

In Deeplab werden die letzten Pooling-Schichten ersetzt, um Schritt 1 anstelle von 2 zu haben, wodurch die Abwärtsabtastrate auf nur 8x gehalten wird. Dann wird eine Reihe von heftigen Windungen angewendet, um den größeren Kontext zu erfassen. Zum Training wird die mit der Ausgabe gekennzeichnete Maske um das 8-fache abgetastet, um jedes Pixel zu vergleichen. Zur Folgerung wird die bilineare Aufwärtsabtastung verwendet, um eine Ausgabe derselben Größe zu erzeugen, die bei niedrigeren Rechen- / Speicherkosten ausreichend gute Ergebnisse liefert, da für die bilineare Aufwärtsabtastung im Gegensatz zur Entfaltung für die Aufwärtsabtastung keine Parameter erforderlich sind.

ASP

Spatial Pyramidal Pooling ist ein in SPPNet eingeführtes Konzept zur Erfassung von Informationen mit mehreren Maßstäben aus einer Feature-Map. Vor der Einführung von SPP werden Eingabebilder mit unterschiedlichen Auflösungen geliefert und die berechneten Feature-Maps zusammen verwendet, um die mehrskaligen Informationen zu erhalten. Dies erfordert jedoch mehr Berechnung und Zeit. Mit Spatial Pyramidal Pooling können mehrskalige Informationen mit einem einzigen Eingabebild erfasst werden.

Quelle: - http://kaiminghe.com/eccv14sppnet/index.html

Mit dem SPP-Modul erzeugt das Netzwerk 3 Ausgänge mit den Dimensionen 1 × 1 (dh GAP), 2 × 2 und 4 × 4. Diese Werte werden durch Konvertieren in einen 1d-Vektor verkettet, wodurch Informationen in mehreren Maßstäben erfasst werden. Ein weiterer Vorteil der Verwendung von SPP besteht darin, dass Eingabebilder jeder Größe bereitgestellt werden können.

ASPP nimmt das Konzept der Verschmelzung von Informationen aus verschiedenen Maßstäben und wendet es auf atröse Windungen an. Der Eingang wird mit unterschiedlichen Dilatationsraten gefaltet und die Ausgänge davon werden miteinander verschmolzen.

Quelle: - http://liangchiehchen.com/projects/DeepLab.html

Wie zu sehen ist, wird der Eingang mit 3 × 3-Filtern der Dilatationsraten 6, 12, 18 und 24 gefaltet und die Ausgänge werden miteinander verkettet, da sie von gleicher Größe sind. Ein 1 × 1-Faltungsausgang wird ebenfalls zu dem verschmolzenen Ausgang hinzugefügt. Um auch die globalen Informationen bereitzustellen, wird die GAP-Ausgabe nach dem Up-Sampling ebenfalls oben hinzugefügt. Der verschmolzene Ausgang von 3 × 3 variierten erweiterten Ausgängen, 1 × 1 und GAP-Ausgang wird durch 1 × 1-Faltung geleitet, um die erforderliche Anzahl von Kanälen zu erreichen.

Da das zu segmentierende Bild in der Eingabe eine beliebige Größe haben kann, helfen die mehrskaligen Informationen von ASPP bei der Verbesserung der Ergebnisse.

Verbesserung der Ausgabe mit CRF

Pooling ist eine Operation, die dazu beiträgt, die Anzahl der Parameter in einem neuronalen Netzwerk zu verringern, aber auch eine Eigenschaft der Invarianz mit sich bringt. Invarianz ist die Qualität eines neuronalen Netzwerks, die von geringfügigen Übersetzungen der Eingabe nicht beeinflusst wird. Aufgrund dieser Eigenschaft, die beim Pooling erhalten wird, ist die von einem neuronalen Netzwerk erhaltene Segmentierungsausgabe grob und die Grenzen sind nicht konkret definiert.

Quelle: - http://liangchiehchen.com/projects/DeepLab.html

Um dies zu bewältigen, schlägt das Papier die Verwendung eines grafischen Modells CRF vor. Das bedingte Zufallsfeld führt einen Nachbearbeitungsschritt durch und versucht, die Ergebnisse zu verbessern, die zum Definieren von Shaper-Grenzen erzeugt werden. Dabei wird ein Pixel nicht nur anhand seiner Beschriftung, sondern auch anhand anderer Pixelbeschriftungen klassifiziert. Wie aus der obigen Abbildung ersichtlich ist, wird die vom neuronalen Netzwerk erzeugte Grobgrenze nach dem Durchlaufen der CRF verfeinert.

Deeplab-v3 führte eine Chargennormalisierung ein und schlug eine Dilatationsrate multipliziert mit (1,2,4) innerhalb jeder Schicht in einem Resnet-Block vor. Im Rahmen dieses Dokuments wurde auch das Hinzufügen von Funktionen auf Bildebene zum ASPP-Modul vorgeschlagen, die in der obigen Diskussion zu ASPP erörtert wurden

Quelle: - https://arxiv.org/pdf/1706.05587.pdf

Deeplab-v3 + schlug vor, einen Decoder anstelle einer einfachen bilinearen Abtastung 16x zu verwenden. Der Decoder nimmt einen Hinweis von dem Decoder, der von Architekturen wie U-Net verwendet wird, die Informationen von Encoder-Schichten verwenden, um die Ergebnisse zu verbessern. Der Encoderausgang wird 4x unter Verwendung einer bilinearen Up-Abtastung hochgetastet und mit den Merkmalen des Encoders verkettet, der nach Durchführung einer 4 × 3-Faltung erneut 3x up-abgetastet wird. Dieser Ansatz liefert bessere Ergebnisse als eine direkte 16-fache Abtastung. Es wird auch vorgeschlagen, anstelle des Resnet eine modifizierte Xception-Architektur als Teil des Encoders zu verwenden, und jetzt werden zusätzlich zu den Atrous-Faltungen tiefentrennbare Faltungen verwendet, um die Anzahl der Berechnungen zu verringern.

Globales Faltungsnetzwerk

Quelle: - https://arxiv.org/pdf/1703.02719.pdf

Bei der semantischen Segmentierung werden zwei Aufgaben gleichzeitig ausgeführt

i) Klassifizierung
ii) Lokalisierung

Die Klassifizierungsnetzwerke sind so erstellt, dass sie für Translation und Rotation unveränderlich sind, sodass Standortinformationen keine Bedeutung haben, während bei der Lokalisierung genaue Details zum Standort abgerufen werden müssen. Somit sind diese beiden Aufgaben von Natur aus widersprüchlich. Die meisten Segmentierungsalgorithmen messen der Lokalisierung mehr Bedeutung bei, dh dem zweiten in der obigen Abbildung, und verlieren somit den globalen Kontext aus den Augen. In dieser Arbeit schlägt der Autor eine Möglichkeit vor, auch der Klassifizierungsaufgabe Bedeutung zu verleihen und gleichzeitig die Lokalisierungsinformationen nicht zu verlieren

Quelle: - https://arxiv.org/pdf/1703.02719.pdf

Der Autor schlägt vor, dies zu erreichen, indem große Kernel als Teil des Netzwerks verwendet werden, wodurch dichte Verbindungen und damit mehr Informationen ermöglicht werden. Dies wird mit Hilfe eines GCN-Blocks erreicht, wie in der obigen Abbildung zu sehen ist. Der GCN-Block kann als akxk-Faltungsfilter betrachtet werden, wobei k eine Zahl größer als 3 sein kann. Um die Anzahl der Parameter zu verringern, wird der akxk-Filter weiter in 1 xk- und kx1-, kx1- und 1xk-Blöcke aufgeteilt, die dann summiert werden. Somit wird durch Erhöhen des Wertes k ein größerer Kontext erfasst.

Darüber hinaus schlägt der Autor einen Boundary Refinement-Block vor, der einem in Resnet gezeigten Restblock ähnelt, der aus einer Verknüpfungsverbindung und einer Restverbindung besteht, die summiert werden, um das Ergebnis zu erhalten. Es wird beobachtet, dass ein Grenzverfeinerungsblock zu einer Verbesserung der Ergebnisse an der Segmentierungsgrenze führte.

Die Ergebnisse zeigten, dass der GCN-Block die Klassifizierungsgenauigkeit von Pixeln näher an der Objektmitte verbesserte, was auf die Verbesserung hinweist, die durch die Erfassung des Kontexts mit großer Reichweite verursacht wurde, während der Boundary Refinement-Block dazu beitrug, die Genauigkeit von Pixeln näher an der Grenze zu verbessern.

Mehr als einmal sehen - KSAC für semantische Segmentierung

Die Deeplab-Familie verwendet ASPP, damit mehrere Empfangsfelder Informationen mit unterschiedlichen atrösen Faltungsraten erfassen. Obwohl ASPP bei der Verbesserung der Segmentierung von Ergebnissen von großem Nutzen war, gibt es einige inhärente Probleme, die aufgrund der Architektur verursacht werden. In ASPP werden keine Informationen zwischen den verschiedenen parallelen Schichten ausgetauscht, was sich auf die Generalisierungsleistung der Kernel in jeder Schicht auswirkt. Da jede Schicht unterschiedliche Sätze von Trainingsmustern abdeckt (kleinere Objekte zu kleinerer Atrous-Rate und größere Objekte zu größeren Atrous-Raten), wäre die Datenmenge für jede parallele Schicht geringer, was die allgemeine Generalisierbarkeit beeinträchtigt. Auch die Anzahl der Parameter im Netzwerk steigt linear mit der Anzahl der Parameter und kann somit zu einer Überanpassung führen.

Quelle: - https://arxiv.org/pdf/1908.09443.pdf

Um all diese Probleme zu lösen, schlägt der Autor eine neuartige Netzwerkstruktur mit dem Namen Kernel-Sharing Atrous Convolution (KSAC) vor. Wie in der obigen Abbildung zu sehen ist, wird anstelle eines anderen Kernels für jede parallele Schicht ASPP ein einzelner Kernel gemeinsam genutzt, wodurch die Generalisierungsfähigkeit des Netzwerks verbessert wird. Durch die Verwendung von KSAC anstelle von ASPP werden 62% der Parameter gespeichert, wenn Dilatationsraten von 6,12 und 18 verwendet werden.

Ein weiterer Vorteil der Verwendung einer KSAC-Struktur besteht darin, dass die Anzahl der Parameter unabhängig von der Anzahl der verwendeten Dilatationsraten ist. So können wir so viele Raten wie möglich hinzufügen, ohne die Modellgröße zu erhöhen. ASPP liefert die besten Ergebnisse mit den Raten 6,12,18, aber die Genauigkeit nimmt mit 6,12,18,24 ab, was auf eine mögliche Überanpassung hinweist. Die KSAC-Genauigkeit verbessert sich jedoch immer noch erheblich, was auf die verbesserte Generalisierungsfähigkeit hinweist.

Diese Kernel-Sharing-Technik kann auch als Erweiterung des Feature-Space angesehen werden, da derselbe Kernel auf mehrere Raten angewendet wird. Ähnlich wie die Eingabeerweiterung zu besseren Ergebnissen führt, sollte die im Netzwerk durchgeführte Funktionserweiterung dazu beitragen, die Darstellungsfähigkeit des Netzwerks zu verbessern.

Videosegmentierung

Für Anwendungsfälle wie selbstfahrende Autos, Robotik usw. ist eine Echtzeitsegmentierung des beobachteten Videos erforderlich. Die bisher diskutierten Architekturen sind so ziemlich auf Genauigkeit und nicht auf Geschwindigkeit ausgelegt. Wenn sie also pro Bild für ein Video angewendet werden, wird das Ergebnis mit sehr geringer Geschwindigkeit erzielt.

Auch im Allgemeinen gibt es in einem Video viele Überlappungen in Szenen über aufeinanderfolgende Frames hinweg, die zur Verbesserung der Ergebnisse und der Geschwindigkeit verwendet werden können, die bei einer Analyse pro Frame nicht ins Bild kommen. Verwenden Sie diese Hinweise, um Architekturen zu diskutieren, die speziell für Videos entwickelt wurden

STFCN

Spatio-Temporal FCN schlägt vor, FCN zusammen mit LSTM für die Videosegmentierung zu verwenden. Wir wissen bereits, wie FCN zum Extrahieren von Features zum Segmentieren eines Bildes verwendet werden kann. LSTM sind eine Art neuronaler Netze, die im Laufe der Zeit sequentielle Informationen erfassen können. STFCN kombiniert die Leistung von FCN mit LSTM, um sowohl räumliche als auch zeitliche Informationen zu erfassen

Quelle: - https://arxiv.org/abs/1608.05971

Wie aus der obigen Abbildung ersichtlich ist, besteht STFCN aus einem räumlich-zeitlichen FCN-Modul, gefolgt von einer Entfaltung. Die von einem FCN erstellte Feature-Map wird an das Spatio-Temporal-Modul gesendet, das auch eine Eingabe vom Modul des vorherigen Frames enthält. Das Modul, das auf diesen beiden Eingaben basiert, erfasst die zeitlichen Informationen zusätzlich zu den räumlichen Informationen und sendet sie, wobei die Entfaltung ähnlich wie in FCN auf die ursprüngliche Bildgröße hochgetastet wird

Da sowohl FCN als auch LSTM als Teil von STFCN zusammenarbeiten, ist das Netzwerk durchgängig trainierbar und übertrifft Single-Frame-Segmentierungsansätze. Es gibt ähnliche Ansätze, bei denen LSTM durch GRU ersetzt wird, aber das Konzept der Erfassung sowohl der räumlichen als auch der zeitlichen Informationen ist dasselbe

Semantische Video-CNNs durch Representation Warping

In diesem Artikel wird die Verwendung des optischen Flusses über benachbarte Frames als zusätzliche Eingabe vorgeschlagen, um die Segmentierungsergebnisse zu verbessern

Quelle: - https://arxiv.org/abs/1708.03088

Der vorgeschlagene Ansatz kann als Plug-In in jede Standardarchitektur eingebunden werden. Die wichtigste Zutat ist das NetWarp-Modul. Um die Segmentierungskarte zu berechnen, wird der optische Fluss zwischen dem aktuellen Rahmen und dem vorherigen Rahmen berechnet, dh Ft, und wird durch eine FlowCNN geleitet, um Λ (Ft) zu erhalten. Dieser Prozess wird als Flusstransformation bezeichnet. Dieser Wert wird durch ein Warp-Modul geleitet, das auch die Feature-Map einer Zwischenschicht als Eingabe verwendet, die durch Durchlaufen des Netzwerks berechnet wurde. Dies ergibt eine verzerrte Merkmalskarte, die dann mit der Zwischenmerkmalskarte der aktuellen Schicht kombiniert wird, und das gesamte Netzwerk wird durchgehend trainiert. Mit dieser Architektur wurden SOTA-Ergebnisse für CamVid- und Cityscapes-Video-Benchmark-Datensätze erzielt.

Clockwork Convnets für die semantische Videosegmentierung

In diesem Artikel wird vorgeschlagen, die Ausführungsgeschwindigkeit eines neuronalen Netzwerks für Segmentierungsaufgaben in Videos zu verbessern, indem die Tatsache ausgenutzt wird, dass sich semantische Informationen in einem Video im Vergleich zu Informationen auf Pixelebene langsam ändern. Daher ändern sich die Informationen in den letzten Ebenen im Vergleich zu den ersten Ebenen viel langsamer. Das Papier schlägt verschiedene Zeiten vor

Quelle: - https://arxiv.org/abs/1608.03609

Die obige Abbildung zeigt den Änderungsratenvergleich für einen mittleren Schichtpool4 und eine tiefe Schicht fc7. Links sehen wir, dass beide Ebenen eine Änderung zeigen, da sich in den Frames viele Änderungen ergeben, die Änderung für Pool4 jedoch höher ist. Rechts sehen wir, dass sich in den Frames nicht viel ändert. Daher zeigt Pool4 eine marginale Veränderung, während fc7 fast keine Veränderung zeigt.

Die Forschung verwendet dieses Konzept und legt nahe, dass in Fällen, in denen sich die Frames nicht wesentlich ändern, die Features / Ausgaben nicht erneut berechnet werden müssen und die zwischengespeicherten Werte des vorherigen Frames verwendet werden können. Da die Änderungsrate mit den Schichten variiert, können verschiedene Uhren für verschiedene Schichten eingestellt werden. Wenn die Uhr tickt, werden die neuen Ausgaben berechnet, andernfalls werden die zwischengespeicherten Ergebnisse verwendet. Die Taktrate kann statisch festgelegt oder dynamisch gelernt werden

Quelle: - https://arxiv.org/abs/1608.03609

Videosemantische Segmentierung mit geringer Latenz

Dieses Dokument verbessert die obige Diskussion, indem die Frames adaptiv ausgewählt werden, um die Segmentierungskarte zu berechnen oder das zwischengespeicherte Ergebnis anstelle eines festen Timers oder einer Heuristik zu verwenden.

Quelle: - https://arxiv.org/abs/1804.00389

Das Papier schlägt vor, das Netzwerk in zwei Teile zu unterteilen: Funktionen auf niedriger Ebene und Funktionen auf hoher Ebene. Die Kosten für die Berechnung von Low-Level-Features in einem Netzwerk sind im Vergleich zu höheren Features viel geringer. Die Forschung schlägt vor, die Netzwerkfunktionen auf niedriger Ebene als Indikator für die Änderung der Segmentierungskarte zu verwenden. In ihren Beobachtungen fanden sie eine starke Korrelation zwischen der Änderung von Merkmalen auf niedriger Ebene und der Änderung der Segmentierungskarte. Um zu verstehen, ob berechnet werden muss, ob die höheren Merkmale berechnet werden müssen, wird die geringere Merkmalsdifferenz über zwei Frames gefunden und verglichen, wenn sie einen bestimmten Schwellenwert überschreitet. Dieser gesamte Prozess wird durch ein kleines neuronales Netzwerk automatisiert, dessen Aufgabe es ist, niedrigere Merkmale von zwei Rahmen zu nehmen und eine Vorhersage darüber zu geben, ob höhere Merkmale berechnet werden sollten oder nicht. Da die Netzwerkentscheidung auf den Eingaberahmen basiert, ist die getroffene Entscheidung im Vergleich zu dem obigen Ansatz dynamisch.

Segmentierung für Punktwolken

Daten, die von einem Sensor wie Lidar stammen, werden in einem Format namens Point Cloud gespeichert. Die Punktwolke ist nichts anderes als eine Sammlung ungeordneter 3D-Datenpunkte (oder beliebiger Dimensionen). Es ist eine spärliche Darstellung der Szene in 3D und CNN kann in einem solchen Fall nicht direkt angewendet werden. Auch jede Architektur, die für den Umgang mit Punktwolken entwickelt wurde, sollte berücksichtigen, dass es sich um eine ungeordnete Menge handelt und daher viele mögliche Permutationen aufweisen kann. Das Netzwerk sollte also permutationsinvariant sein. Auch die in der Punktwolke definierten Punkte können durch den Abstand zwischen ihnen beschrieben werden. Daher enthalten nähere Punkte im Allgemeinen nützliche Informationen, die für Segmentierungsaufgaben nützlich sind

PunktNet

PointNet ist ein wichtiges Papier in der Geschichte der Forschung zu Punktwolken, bei dem Deep Learning zur Lösung der Aufgaben der Klassifizierung und Segmentierung eingesetzt wird. Lassen Sie uns die Architektur von Pointnet studieren

Quelle: - https://arxiv.org/abs/1612.00593

Die Eingabe des Netzwerks für n Punkte ist eine nx 3-Matrix. Die nx 3-Matrix wird unter Verwendung einer gemeinsam genutzten Multi-Perzeptron-Schicht (vollständig verbundenes Netzwerk) auf nx 64 abgebildet, die dann auf nx 64 und dann auf nx 128 und nx 1024 abgebildet wird. Das maximale Pooling wird angewendet, um einen 1024-Vektor zu erhalten, der in k konvertiert wird Ausgänge durch Durchlaufen von MLPs mit den Größen 512, 256 und k. Schließlich werden k Klassenausgaben ähnlich wie bei jedem Klassifizierungsnetzwerk erzeugt.

Die Klassifizierung befasst sich nur mit den globalen Merkmalen, aber für die Segmentierung sind auch lokale Merkmale erforderlich. Daher werden die lokalen Merkmale aus der Zwischenschicht bei nx 64 mit globalen Merkmalen verkettet, um eine angst 1088-Matrix zu erhalten, die über mlp von 512 und 256 gesendet wird, um zu nx 256 zu gelangen, und dann durch MLPs von 128 und m, um m Ausgabeklassen für jeden Punkt zu erhalten in Punktwolke.

Das Netzwerk umfasst auch eine Eingabetransformation und eine Feature-Transformation als Teil des Netzwerks, deren Aufgabe es ist, die Form der Eingabe nicht zu ändern, sondern affinen Transformationen, dh Translation, Rotation usw., eine Invarianz hinzuzufügen.

A-CNN

Quelle: - https://arxiv.org/abs/1904.08017

A-CNN schlägt die Verwendung ringförmiger Windungen vor, um räumliche Informationen zu erfassen. Wir wissen von CNN, dass Faltungsoperationen die lokalen Informationen erfassen, die für ein Verständnis des Bildes wesentlich sind. A-CNN hat eine neue Faltung namens Ringförmige Faltung entwickelt, die auf Nachbarschaftspunkte in einer Punktwolke angewendet wird.

Die Architektur nimmt als Eingabe nx 3 Punkte und findet Normalen für diese, die zum Ordnen von Punkten verwendet werden. Eine Teilstichprobe von Punkten wird unter Verwendung des FPS-Algorithmus genommen, was zu ni x 3 Punkten führt. Auf diese wird ringförmige Faltung angewendet, um auf 128 Dimensionen zu erhöhen. Die ringförmige Faltung wird an den Nachbarschaftspunkten durchgeführt, die unter Verwendung eines KNN-Algorithmus bestimmt werden.

Ein weiterer Satz der obigen Operationen wird ausgeführt, um die Dimensionen auf 256 zu erhöhen. Dann wird ein mlp angewendet, um die Dimensionen auf 1024 zu ändern, und Pooling wird angewendet, um einen globalen 1024-Vektor zu erhalten, der der Punktwolke ähnlich ist. Dieser gesamte Teil wird als Encoder betrachtet. Zur Klassifizierung wird die globale Ausgabe des Encoders durch mlp geleitet, um Ausgaben der Klasse c zu erhalten. Für die Segmentierungsaufgabe werden sowohl die globalen als auch die lokalen Merkmale als PointCNN ähnlich betrachtet und dann durch einen MLP geleitet, um m Klassenausgaben für jeden Punkt zu erhalten.

Metrik

Lassen Sie uns die Metriken diskutieren, die im Allgemeinen verwendet werden, um die Ergebnisse eines Modells zu verstehen und zu bewerten.

Pixelgenauigkeit

Die Pixelgenauigkeit ist die grundlegendste Metrik, mit der die Ergebnisse validiert werden können. Die Genauigkeit wird erhalten, indem das Verhältnis der korrekt klassifizierten Pixel zu den Gesamtpixeln genommen wird

Genauigkeit = (TP + TN) / (TP + TN + FP + FN)

Der Hauptnachteil einer solchen Technik ist, dass das Ergebnis gut aussehen kann, wenn eine Klasse die andere überwältigt. Nehmen wir zum Beispiel an, die Hintergrundklasse deckt 90% des Eingabebildes ab. Wir können eine Genauigkeit von 90% erzielen, indem wir einfach jedes Pixel als Hintergrund klassifizieren

Schnittpunkt über Union

IOU ist definiert als das Verhältnis der Schnittmenge von Grundwahrheit und vorhergesagten Segmentierungsausgaben über ihre Vereinigung. Wenn wir für mehrere Klassen berechnen, wird die IOU jeder Klasse berechnet und ihr Mittelwert ermittelt. Es ist eine bessere Metrik im Vergleich zur Pixelgenauigkeit, als ob jedes Pixel als Hintergrund in einer 2-Klassen-Eingabe angegeben wird. Der IOU-Wert ist (90/100 + 0/100) / 2, dh 45% IOU, was eine bessere Darstellung im Vergleich zu 90 ergibt % Richtigkeit.

Quelle: - https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection

Frequenzgewichtete IOU

Dies ist eine Erweiterung der mittleren IOU, die wir besprochen haben und die zur Bekämpfung des Klassenungleichgewichts verwendet wird. Wenn eine Klasse den größten Teil der Bilder in einem Datensatz dominiert, wie z. B. Hintergrund, muss sie im Vergleich zu anderen Klassen abgewogen werden. Anstatt den Mittelwert aller Klassenergebnisse zu ermitteln, wird daher ein gewichteter Mittelwert basierend auf der Häufigkeit des Klassenbereichs im Datensatz verwendet.

F1-Punktzahl

Die in der Klassifizierung F1 Score häufig verwendete Metrik kann auch für Segmentierungsaufgaben verwendet werden, um das Klassenungleichgewicht zu beheben.

Quelle: - https://en.wikipedia.org/wiki/F1_score

Durchschnittliche Präzision

Der Bereich unter der Präzisions-Rückruf-Kurve für einen ausgewählten Schwellenwert-IOU-Durchschnitt über verschiedene Klassen wird zur Validierung der Ergebnisse verwendet.

Verlustfunktionen

Die Verlustfunktion wird verwendet, um das neuronale Netzwerk zur Optimierung zu führen. Lassen Sie uns einige beliebte Verlustfunktionen für die semantische Segmentierungsaufgabe diskutieren.

Kreuzentropieverlust

Als Gesamtfunktion kann ein einfacher Durchschnitt des Kreuzentropieklassifizierungsverlusts für jedes Pixel im Bild verwendet werden. Dies leidet jedoch erneut unter dem Klassenungleichgewicht, das FCN mithilfe von Klassengewichten korrigieren möchte

UNet versucht, dies zu verbessern, indem den Pixeln in der Nähe der Grenze, die Teil der Grenze sind, im Vergleich zu den inneren Pixeln ein höheres Gewicht beigemessen wird, da sich das Netzwerk dadurch mehr auf die Identifizierung von Grenzen konzentriert und keine grobe Ausgabe liefert.

Fokusverlust

Der Fokusverlust wurde entwickelt, um das Netzwerk auf schwierige Beispiele zu konzentrieren, indem mehr Gewicht angegeben wird, und um auch mit extremen Klassenungleichgewichten umzugehen, die bei einstufigen Objektdetektoren beobachtet werden. Dasselbe kann auch bei semantischen Segmentierungsaufgaben angewendet werden

Würfelverlust

Die Würfelfunktion ist nichts anderes als eine F1-Punktzahl. Diese Verlustfunktion versucht direkt, die F1-Punktzahl zu optimieren. Ebenso kann der direkte IOU-Score auch zur Optimierung verwendet werden

Tversky-Verlust

Es ist eine Variante des Würfelverlusts, die FN und FP ein unterschiedliches Gewichtsalter verleiht

Hausdorff Entfernung

Es ist eine Technik, die verwendet wird, um die Ähnlichkeit zwischen den Grenzen der Grundwahrheit und der vorhergesagten zu messen. Sie wird berechnet, indem der maximale Abstand von einem Punkt in einer Grenze zum nächstgelegenen Punkt in der anderen ermittelt wird. Die direkte Reduzierung der Grenzverlustfunktion ist ein aktueller Trend und liefert nachweislich bessere Ergebnisse, insbesondere in Anwendungsfällen wie der Segmentierung medizinischer Bilder, bei denen die Identifizierung der genauen Grenze eine Schlüsselrolle spielt.

Der Vorteil der Verwendung eines Grenzverlusts im Vergleich zu einem auf Regionen basierenden Verlust wie IOU oder Dice Loss besteht darin, dass er nicht von Klassenungleichgewichten beeinflusst wird, da nicht die gesamte Region für die Optimierung berücksichtigt wird, sondern nur die Grenze.

Quelle https://en.wikipedia.org/wiki/Hausdorff_distance

Die beiden hier betrachteten Begriffe beziehen sich auf zwei Grenzen, dh die Grundwahrheit und die Ausgabevorhersage.

LabelMe :-

Bildanmerkungstool in Python geschrieben.
Unterstützt Polygonanmerkungen.
Open Source und kostenlos.
Läuft unter Windows, Mac, Ubuntu oder über Anaconda, Docker
Verknüpfung :- https://github.com/wkentaro/labelme

Quelle: - https://github.com/wkentaro/labelme

Computer Vision Annotation Tool: -

Von Intel entwickeltes Video- und Bildanmerkungstool
Kostenlos und online verfügbar
Läuft unter Windows, Mac und Ubuntu
Verknüpfung :- https://github.com/opencv/cvat

Vgg Bild Annotator: -

Kostenloses Open Source-Tool für Bildanmerkungen
Einfache HTML-Seite <200 KB und kann offline ausgeführt werden
Unterstützt Polygonanmerkungen und Punkte.
Verknüpfung :- https://github.com/ox-vgg/via

Quelle: - https://github.com/ox-vgg/via

Rectlabel: -

Bezahltes Annotation Tool für Mac
Kann Kern-ML-Modelle verwenden, um die Bilder vorab zu kommentieren
Unterstützt Polygone, kubische Bezier, Linien und Punkte
Verknüpfung :- https://github.com/ryouchinsa/Rectlabel-support

Etikettenbox: -

Bezahltes Anmerkungswerkzeug
Unterstützt das Stiftwerkzeug für schnellere und genauere Anmerkungen
Verknüpfung :- https://labelbox.com/product/image-segmentation

Datensätze

Im Rahmen dieses Abschnitts werden verschiedene beliebte und in der Öffentlichkeit verfügbare Datensätze erörtert, anhand derer Sie mit dem Training beginnen können.

Pascal-Kontext

Dieser Datensatz ist eine Erweiterung des Pascal VOC 2010-Datensatzes und geht über den ursprünglichen Datensatz hinaus, indem er Anmerkungen für die gesamte Szene bereitstellt und über 400 Klassen realer Daten enthält.

Quelle: - https://cs.stanford.edu/~roozbeh/pascal-context/
Quelle: - https://cs.stanford.edu/~roozbeh/pascal-context/

Verknüpfung :- https://cs.stanford.edu/~roozbeh/pascal-context/

COCO-Datensatz

Der COCO-Stuff-Datensatz enthält 164 Bilder des ursprünglichen COCO-Datensatzes mit Anmerkungen auf Pixelebene und ist ein gängiger Benchmark-Datensatz. Es umfasst 172 Klassen: 80 Dingklassen, 91 Stoffklassen und 1 Klasse 'unbeschriftet'

Quelle: - http://cocodataset.org/#home

Verknüpfung :- http://cocodataset.org/

Cityscapes-Datensatz

Dieser Datensatz besteht aus Segmentierungsgrundwahrheiten für Straßen, Fahrspuren, Fahrzeuge und Objekte auf der Straße. Der Datensatz enthält 30 Klassen und 50 Städte, die unter verschiedenen Umwelt- und Wetterbedingungen gesammelt wurden. Hat auch einen Videodatensatz mit fein kommentierten Bildern, die für die Videosegmentierung verwendet werden können. KITTI und CamVid sind ähnliche Arten von Datensätzen, die zum Trainieren selbstfahrender Autos verwendet werden können.

Quelle: - https://www.cityscapes-dataset.com/

Verknüpfung :- https://www.cityscapes-dataset.com/

Lits Datensatz

Der Datensatz wurde im Rahmen einer Herausforderung zur Identifizierung von Tumorläsionen aus Leber-CT-Scans erstellt. Der Datensatz enthält 130 CT-Scans von Trainingsdaten und 70 CT-Scans von Testdaten.

Quelle: - https://competitions.codalab.org/competitions/17094

Verknüpfung :- https://competitions.codalab.org/competitions/17094

CCP-Datensatz

Cloth Co-Parsing ist ein Datensatz, der im Rahmen des Forschungspapiers Clothing Co-Parsing durch gemeinsame Bildsegmentierung und Kennzeichnung erstellt wird. Der Datensatz enthält mehr als 1000 Bilder mit Anmerkungen auf Pixelebene für insgesamt 59 Tags.

Quelle: - https://github.com/bearpaw/clothing-co-parsing

Quelle :- https://github.com/bearpaw/clothing-co-parsing

Pratheepan-Datensatz

Ein Datensatz, der für die Aufgabe der Hautsegmentierung basierend auf Bildern von Google erstellt wurde und 32 Gesichtsfotos und 46 Familienfotos enthält

Quelle: - http://cs-chan.com/downloads_skin_dataset.html

Verknüpfung :- http://cs-chan.com/downloads_skin_dataset.html

Inria Luftbildkennzeichnung

Ein Datensatz von Flugsegmentierungskarten, die aus gemeinfreien Bildern erstellt wurden. Hat eine Fläche von 810 km² und hat 2 Klassen Gebäude und Nichtgebäude.

Quelle: - https://project.inria.fr/aerialimagelabeling/
Quelle: - https://project.inria.fr/aerialimagelabeling/

Verknüpfung :- https://project.inria.fr/aerialimagelabeling/

S3DIS

Dieser Datensatz enthält die Punktwolken von sechs großen Innenteilen in 3 Gebäuden mit über 70000 Bildern.

Quelle: - http://buildingparser.stanford.edu/dataset.html

Verknüpfung :- http://buildingparser.stanford.edu/dataset.html

Zusammenfassung

Wir haben eine Taxonomie verschiedener Algorithmen diskutiert, die zur Lösung des Anwendungsfalls der semantischen Segmentierung verwendet werden können, sei es für Bilder, Videos oder Punktwolken sowie deren Beiträge und Einschränkungen. Wir haben auch die Möglichkeiten zur Auswertung der Ergebnisse und der Datensätze untersucht, mit denen begonnen werden soll. Dies sollte ein umfassendes Verständnis der semantischen Segmentierung als allgemeines Thema vermitteln.

Beginnen Sie mit, um eine Liste mit weiteren Ressourcen für die semantische Segmentierung zu erhalten https://github.com/mrgloom/awesome-semantic-segmentation.

Weiterführende Literatur


Vielleicht interessieren Sie sich auch für unsere neuesten Beiträge zu:

Update:
Weiteres Lesematerial hinzugefügt.

Quelle: https://nanonets.com/blog/semantic-image-segmentation-2020/

Zeitstempel:

Mehr von KI & Maschinelles Lernen