Kann Can Caffe Pixel eines Bildes direkt klassifizieren?

8

Ich würde gerne Pixel eines Bildes zu "is street" oder "is not street" klassifizieren. Ich habe einige Trainingsdaten aus dem KITTI-Datensatz und ich habe gesehen, dass Caffe eine IMAGE_DATA Layertyp. Die Beschriftungen befinden sich in Form von Bildern derselben Größe wie das Eingabebild.

Neben Caffe war meine erste Idee, dieses Problem zu lösen, indem ich Bildflecke um das Pixel herum gab, die klassifiziert werden sollten (zB 20 Pixel nach oben / links / rechts / unten, was zu 41 × 41 = 1681 Features pro Pixel I führt) möchte klassifizieren.
Wenn ich Caffe aber sagen könnte, wie man die Etiketten verwendet, ohne diese Bildkorrekturen manuell erstellen zu müssen (und der Schichttyp IMAGE_DATA scheint darauf hinzuweisen, dass dies möglich ist), würde ich das bevorzugen.

Kann Can Caffe Pixel eines Bildes direkt klassifizieren? Wie würde eine solche prototypische Netzwerkdefinition aussehen? Wie gebe ich Caffe die Informationen über die Etiketten?

Ich schätze, die Eingabeschicht wäre etwas wie

%Vor%

Allerdings bin ich mir nicht sicher, was crop_size genau bedeutet. Ist es wirklich zentriert? Wie geht Caffe mit den Eckpixeln um? Was ist new_height und new_width gut für?

    
Martin Thoma 12.05.2015, 18:36
quelle

2 Antworten

7

Es scheint, dass Sie vollkonvolutionelle Netzwerke für die semantische Segmentierung ausprobieren können

Caffe wurde in diesem Papier zitiert: Ссылка

Auch hier ist das Modell: Ссылка

Auch diese Präsentation kann hilfreich sein: Ссылка

    
mrgloom 08.09.2015, 08:37
quelle
8

Kann Caffe Pixel klassifizieren? Theoretisch denke ich, die Antwort ist Ja. Ich habe es nicht selbst versucht, aber ich glaube nicht, dass dich irgendetwas davon abhält.

Eingaben:
Sie benötigen zwei IMAGE_DATA -Schichten: eine, die das RGB-Bild lädt, und eine andere, die das entsprechende Label-Maskenbild lädt. Beachten Sie, dass Sie bei Verwendung des Dienstprogramms convert_imageset nicht jeden Satz einzeln mischen können. Sie können ein Bild nicht mit seiner Etikettenmaske abgleichen.

Ein IMAGE_DATA layer hat zwei "Tops" für "data" und eins für "label" Ich schlage vor, dass Sie die "label" s beider Eingabeschichten auf den Index der image / label-mask setzen und a hinzufügen Dienstprogramm-Layer, der überprüft, dass die Indizes immer übereinstimmen, dies verhindert, dass Sie an den falschen Label-Masken trainieren;)

Beispiel:

%Vor%

Verlustschicht:
Jetzt können Sie mit den Eingabedaten alles machen, was Sie wollen, aber um schließlich eine pixelweise Beschriftung zu erhalten, benötigen Sie einen pixelweisen Verlust. Daher muss Ihre letzte Ebene (vor dem Verlust) eine Vorhersage mit der selben Breite und Höhe als "label-mask" erstellen. Nicht alle Verlust-Layer können mit mehreren Labels umgehen, aber "EuclideanLoss" ( zum Beispiel) können, sollten Sie also eine Verlustschicht wie

haben %Vor%

Ich denke, "SoftmaxWithLoss" hat eine neuere Version, die in diesem Szenario verwendet werden kann, aber Sie müssen es selbst überprüfen. In diesem Fall sollte "prediction" die Form 2-mal-für-w haben (da Sie 2 Etiketten haben).

Zusätzliche Hinweise:
Sobald Sie die Eingabegröße in den Parametern von "ImageData" festgelegt haben, legen Sie die Größe aller Blobs des Netzes fest. Sie müssen die Etikettengröße auf die gleiche Größe einstellen. Sie müssen sorgfältig überlegen, wie Sie mit Bildern unterschiedlicher Form und Größe umgehen.

    
Shai 13.05.2015 06:23
quelle