So erkennen Sie Pappkartons mit Neural Network

7

Ich versuche, ein neuronales Netzwerk darin zu schulen, wie man Pappkartons zusammen mit mehreren Klassen von Personen (Personen) erkennt.

Obwohl es einfach ist, Personen zu erkennen und korrekt zu klassifizieren, ist es unglaublich schwierig, Pappkartons zu erkennen.

Die Boxen sehen folgendermaßen aus:

Geben Sie hier die Bildbeschreibung ein

Mein Verdacht ist, dass die Box eines Objekts zu einfach ist und das neuronale Netzwerk es schwer hat, es zu erkennen, da es zu wenig Merkmale gibt, um sie aus dem Objekt zu extrahieren.

Die Aufteilung des Datensatzes sieht folgendermaßen aus:

personA: 1160
personB: 1651
personC: 2136
person: 1959
box: 2798

Personen tragen unterschiedliche Sicherheitsartikel, basierend auf den klassifizierten Artikeln, während sie als ganze Person erkannt werden, nicht nur als Artikel.

Ich habe versucht zu verwenden:

ssd300_incetpionv2
ssd512_inceptionv2
faster_rcnn_inceptionv2

All dies erkennt und klassifiziert Personen viel besser als Kisten. Ich kann nicht genau angeben mAP(habe es nicht).

Irgendwelche Ideen?

Vielen Dank.

Martin Brišiak
quelle
Haben Sie ein flacheres Netzwerk ausprobiert? Das sollte mit weniger komplexen Funktionen gut funktionieren.
S van Balen

Antworten:

5

Wie du gesagt hast:

Mein Verdacht ist, dass die Box eines Objekts zu einfach ist und das neuronale Netzwerk es schwer hat, es zu erkennen, da es zu wenig Merkmale gibt, um sie aus dem Objekt zu extrahieren.

... und genau das ist das Problem bei dieser Aufgabe. Ich empfehle Ihnen, Ihr Netzwerk mit einer ganzen Menge Bildverbesserung zu trainieren. Wenn Sie Keras / TensorFlow 2.0 verwenden, verfügen diese über integrierte Funktionen, die dies tun.

Ich empfehle Ihnen auch, ein erstes Modell zu trainieren und dann die Bilder genau zu studieren, die Ihr Netzwerk für Boxen hält, aber nicht (die falsch positiven). Zu diesem Zeitpunkt wählen Sie die "richtigen" Fälle zusammen mit den falsch positiven Fällen aus und erstellen eine Teilmenge des Datensatzes, über den Sie verfügen. Dieser Unterdatensatz kann nützlich sein, um das Netzwerk darin zu schulen, zwischen tatsächlichen Feldern und Objekten zu unterscheiden, die wie Felder aussehen.

Noch einmal: Verwenden Sie eine enorme Menge an Bildvergrößerung. Das ist mein Hauptpunkt und das würde ich tun.

Leevo
quelle
-1

Ich schlage vor, ein vorab trainiertes Modell zu verwenden.

Hier ist der vollständige Code einer vorab trainierten Klassifizierung von Bildern mit mehreren Klassen, die ich kürzlich durchgeführt habe: https://datascience.stackexchange.com/a/52772/71442

Es gibt verschiedene vorab trainierte Modelle, die Sie ausprobieren können: https://keras.io/applications/

Mit vorgefertigten Modellen können Sie die Faltungsschichten großer Modelle „wiederverwenden“ und Ihre Klassen darüber trainieren. Dies kann hilfreich sein, um die spezifischen Funktionen zu finden, die den Boxen zugeordnet sind.

Boxen sollten aufgrund ihrer unterschiedlichen und einheitlichen Form und Farbe leicht zu erkennen sein. Daher denke ich, dass es hilfreich sein kann, ein vorab trainiertes Modell auszuprobieren, das in ähnlichen (kastenartigen) Klassen trainiert wird.

Wenn alle Felder braun sind (wie im Beispielbild), können Sie möglicherweise sogar Felder anhand der Farbmuster erkennen. NN kann das.

Insgesamt ist es schwer zu sagen, was schief gelaufen ist, ohne Ihr Modell zu sehen. Die Modellarchitektur kann hier relevant sein.

Peter
quelle
Ich habe ein Coco-Pretrained-Modell verwendet. Die von
mir
Ja sicher, ich habe es gesehen. Aber ich weiß nicht, was genau Coco ist. Vielleicht funktioniert ein anderes Modell besser. Auch die Modellarchitektur kann eine große Rolle spielen (ich meine das Modell selbst, das sehe ich in Ihrer Frage nicht). Trotzdem ist es ein bisschen „interessant“, dass man an so einfachen Objekten nicht gut trainieren kann.
Peter
-1

Sie können versuchen, vorhandene Tensorflow-Modelle zu verwenden, die für große Datensätze wie MS-COCO, Kitti und Open Images usw. vorab trainiert wurden. Anschließend können Sie ein bestimmtes Modell, das Sie für Ihren Datensatz wünschen, fein abstimmen.

Eine Liste aller verfügbaren Modelle finden Sie hier: https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md

Eine gute Quelle zum Einrichten eines Objektdetektors: https://www.youtube.com/watch?v=Rgpfk6eYxJA (Keine Sorge, wenn Sie Linux-Benutzer sind, kann dasselbe Tutorial auch in Linux-Systemen angepasst werden.)

Sie können ein Tool wie labellmg verwenden, um Ihre Bilder für das Training zu kennzeichnen ( https://github.com/tzutalin/labelImg ).

Hoffe das hilft.

Jitesh Malipeddi
quelle
3
Ich habe das getan, die Frage ist, warum Boxen schwerer zu erkennen sind
Martin Brišiak