Unüberwachte Bildsegmentierung


10

Ich versuche, einen Algorithmus zu implementieren, bei dem bei einem gegebenen Bild mit mehreren Objekten auf einer Ebenentabelle die Ausgabe von Segmentierungsmasken für jedes Objekt erwünscht ist. Im Gegensatz zu CNNs besteht das Ziel hier darin, Objekte in einer unbekannten Umgebung zu erkennen. Was sind die besten Ansätze für dieses Problem? Gibt es auch Online-Implementierungsbeispiele?

Edit: Es tut mir leid, die Frage war vielleicht etwas irreführend. Was ich unter "unbekannter Umgebung" verstanden habe, ist, dass Objekte dem Algorithmus möglicherweise unbekannt sind. Der Algorithmus sollte nicht verstehen müssen, was das Objekt ist, sondern sollte nur das Objekt erkennen. Wie soll ich dieses Problem angehen?


"anders als in CNNs" macht keinen Sinn; CNNs sind eine Art Modell, keine Art von Aufgabe mit einem Ziel. Unüberwachte Bildsegmentierung kann auch mit CNNs durchgeführt werden
Nathan

Antworten:


4

Schnelle Antwort

Mean Shift LSH , ein Upgrade in O(n) des berühmten Mean Shift-Algorithmus in , ist für seine Bildsegmentierungsfähigkeit bekanntO(n2)

Einige Erklärungen

KO(n)K-Mittel scheitern, weil es beabsichtigt ist, elliptische Cluster und NICHT solche mit zufälliger Form zu finden.

Im Gegenteil, wir haben die mittlere Verschiebung, die automatisch die Anzahl der Cluster mit zufälligen Formen ermitteln kann - was nützlich ist, wenn Sie nicht wissen, wonach Sie suchen .

KK

Ein Hinweis zum Clustering von Bildsegmentierungen

Transformieren Sie Ihren Farbraum von RGB zu LUV, was für euklidische Entfernungen besser ist.

K

  • O(α.n)
  • O(β.n)
  • α>β

Mean Shift LSH ist langsamer, passt aber besser zu Ihren Anforderungen. Es bleibt weiterhin linear und ist mit der genannten Implementierung auch skalierbar .

PS: Mein Profilbild ist eine Anwendung des Mean Shift LSH auf mich selbst, wenn es helfen kann, herauszufinden, wie es funktioniert.


3

Möglicherweise müssen Sie sich diese Arbeit ansehen, die für CVPR 2018 eingereicht und akzeptiert wurde: Lernen, alles zu segmentieren

In dieser Arbeit versuchen sie, alles zu segmentieren, auch Objekte, die dem Netzwerk nicht bekannt sind. Die Maske R-CNN wurde verwendet, kombiniert mit einem Subnetz für das Transferlernen. Sie erzielen sehr gute Ergebnisse bei der Segmentierung von fast allem.


2

Der Stand der Technik (SOTA) für die Bildsegmentierung wäre Facebooks Mask-RCNN .

Während es normalerweise für Datensätze wie COCO oder Pascal trainiert wird, die reale Objekte enthalten, können Sie es für einen Datensatz Ihrer Wahl neu trainieren, ob real oder nicht.

Facebook bietet eine Implementierung ( Detectron ) unter der Apache2-Lizenz. Versuche es!


Eigentlich glaube ich, dass ich die Frage irreführend gestellt habe, meine schlechte. Ich habe gerade eine Bearbeitung gepostet. Kannst du sie dir noch einmal ansehen?
MuhsinFatih

2

Eigentlich wird Ihre Aufgabe überwacht. Segnetkann eine gute Architektur für Ihren Zweck sein, auf die eine ihrer Implementierungen hier zugegriffen werden kann . SegNet lernt, pixelweise Klassenbezeichnungen aus überwachtem Lernen vorherzusagen. Daher benötigen wir einen Datensatz mit Eingabebildern mit entsprechenden Grundwahrheitsbezeichnungen. Beschriftungsbilder müssen einkanalig sein, wobei jedes Pixel mit seiner Klasse .... beschriftet ist .

Schauen Sie sich auch Fully Convolutional Networks an, die für Ihre Aufgabe gut geeignet sind.


Basierend auf den Änderungen in der Frage füge ich zusätzliche Informationen hinzu. Es gibt zahlreiche Methoden, die für diese Aufgabe angewendet werden können. Grundsätzlich ist es am einfachsten, eine Hintergrundbezeichnung zu verwenden und die Klassen, die Sie nicht als Hintergrund kennen , mithilfe der genannten Architekturen zu klassifizieren. Auf diese Weise erhalten Sie Beschriftungen, die sich für die Hintergrundklasse überlappen können. Dies ist ein wahrscheinlicher Nachteil dieses Ansatzes. Der Vorteil besteht jedoch darin, dass Sie in Fällen, in denen Ihre trainierten Beschriftungen häufig in den Eingaben verwendet werden, eine relativ leichte Version der Architektur haben können erkennt die unbekannten Klassen.


Eigentlich glaube ich, dass ich die Frage irreführend gestellt habe, meine schlechte. Ich habe gerade eine Bearbeitung gepostet. Kannst du sie dir noch einmal ansehen?
MuhsinFatih

@ MuhsinFatih bearbeitet.
Medien

Es wäre sicherlich einfacher und würde eine bessere Leistung erzielen, wenn dies eine überwachte Aufgabe wäre, aber auch eine unbeaufsichtigte Bildsegmentierung ist möglich.
Nathan

@ Nathan Ich habe damals meine eigene Meinung vorgeschlagen. Auf jeden Fall ist es möglich.
Medien

1

Dies könnte etwas sein, das Sie suchen. Da Sie nach Bildsegmentierung und nicht nach semantic / instanceSegmentierung fragen , benötigen Sie vermutlich nicht die Beschriftung für jedes Segment im Bild.

Es wird die Methode aufgerufen, scene-cutdie ein Bild unbeaufsichtigt in klassenunabhängige Regionen segmentiert. Dies funktioniert sehr gut in Innenräumen.

Papierlink: arxiv

Code: Code

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.