caffe mit Multi-Label-Bildern
Ich habe einen Datensatz von Bildern, die mehrere Bezeichnungen haben; Es sind 100 Klassen im dataset, und jedes Bild mit 1 bis 5 Etiketten mit Ihnen verbunden.
Ich bin nach der Anweisung in der folgenden URL:
https://github.com/BVLC/caffe/issues/550
Er sagt, dass ich brauche, um einen text zu generieren-Datei mit der Auflistung der Bilder und deren Beschriftungen, wie in
/home/my_test_dir/picture-foo.jpg 0 /home/my_test_dir/picture-foo1.jpg 1
In meinem Fall, da ich multi-label-Bilder, funktioniert es einfach Beschriftungen hinzufügen, wie im folgenden?
/home/my_test_dir/picture-foo.jpg 0 2 5 /home/my_test_dir/picture-foo1.jpg 1 4
Habe ich das Gefühl, dass es wohl nicht zu sein, dass einfach, und wenn ich Recht habe, was Schritt, und wie sollte ich die Integration der multi-label-ness der Datensatz in den Prozess der Einrichtung Caffe?
InformationsquelleAutor der Frage ytrewq | 2015-09-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Shai s Antwort ist nicht mehr up-to-date.
Caffe unterstützt multi-label/matrix-ground truth für im HDF5 und LMDB-Formate.
Die python-snippet in diese github Kommentar zeigt, wie Sie zu konstruieren multi-label LMDB ground truth (siehe Shai ' s Antwort für im HDF5-format).
Unterscheidet sich von der Konstruktion der single-label Bild-Datensätze, die eine lmdb ist aufgebaut für die Bilder, während eine zweite separate lmdb ist konstruiert für die multi-label-ground truth Daten. Der Ausschnitt beschäftigt sich mit der räumlichen multi-label-ground truth nützlich für die pixel-Weise der Kennzeichnung der Bilder.
Die Reihenfolge, in der die Daten geschrieben, um die lmdb ist entscheidend. Die Reihenfolge der ground truth muss mit der Reihenfolge der Bilder.
Verlust Schichten wie SOFTMAX_LOSS, EUCLIDEAN_LOSS, SIGMOID_CROSS_ENTROPY_LOSS unterstützen auch multi-label-Daten.
Allerdings ist die Genauigkeit der layer ist immer noch ein single-label-Daten. Möchten Sie vielleicht zu Folgen, dies github issue zu verfolgen, wenn diese Funktion Hinzugefügt wird, Caffe.
InformationsquelleAutor der Antwort ypx
caffe unterstützt multilabel. Sie können die Etiketten in n-heißen Vektoren, z.B. [0,1,1,0,0,1,...] . Sie müssen gestalten Sie die Etiketten, um n*k*1*1 Tensoren und verwenden sigmoid cross-Entropie oder euklidischen, nicht softmax (die Kräfte Summe(Ausgänge)=1 )
InformationsquelleAutor der Antwort jeremy_rutman
AFAIK aktuellen Caffe-version unterstützt nicht die lmdb/leveldb Datensätze für Bilder mit multilabels. Sie können jedoch (und sollten wohl) bereiten Sie Ihre Eingaben in im HDF5-format. Caffe im HDF5-input-layer ist viel flexibler und ermöglicht es Ihnen, mehrere Etiketten pro Eingang.
Diese Antwort gibt eine kurze Beschreibung, wie man erstellen Sie im HDF5-Eingang für caffe.
Einem anderen Problem, das Sie ansprechen müssen, ist die Tatsache, dass Sie daran interessiert sind, nicht nur in multi-label pro Bild, aber auch mit unterschiedlichen Anzahl der Etiketten pro Bild. Wie definieren Sie Ihre Verlust pro Bild, pro Etikett? es könnte der Fall sein, dass Sie würde haben schreiben Sie Ihre eigene Verlust-Ebene.
Es gibt einige Verlust Schichten, unterstützt "ignorieren " label":,, wenn ein bestimmten input-label wird dem Bild zugewiesen, ohne Verlust wird berechnet für den jeweiligen Bild. Siehe, z.B.
AccuracyLayer
undSoftmaxWithLossLayer
.InformationsquelleAutor der Antwort Shai