2017-10-05 4 views
0

Ich versuche Tensorflow faster_rcnn_resnet101-Modell, um mehrere Objekte in einem 642 * 481 Bild zu erkennen. Ich habe zwei Möglichkeiten ausprobiert, aber keine hat zufriedenstellende Ergebnisse erzielt.Tensorflow-Objekterkennung Problem

1) Auf diese Weise habe ich die Objekte (50 * 160 Rechteck) von Trainingsbildern abgeschnitten (Trainingsbilder könnten eine andere Größe als 642 * 481 Testbild haben). Ich verwende diese beschnittenen Bilder, um faster_rcnn_resnet101 zu trainieren. Sieht so aus, als hätte es ein gutes Ergebnis, wenn das Testset auch ein zugeschnittenes Bild derselben Größe ist. Aber für das 642 * 481-Testbild konnte es dort mehrere Objekte mit guten Ergebnissen nicht erkennen.

Dann denke ich, vielleicht das Modell skaliert das Testbild um die 50 * 160 so abgestimmt, so dass die Details verloren gingen. In diesem Gedanken versuchte ich einen anderen Weg

2) Ich kopierte jede zugeschnittene Bilder in einen 642 * 481 weißen Hintergrund jeweils (im Grunde Padding). Daher hat jedes Trainingsbild dieselbe Größe wie das Testbild. Die Position der zugeschnittenen Bilder, die auf den Hintergrund kopiert werden, wird absichtlich als zufällig festgelegt. Es hat jedoch immer noch keine gute Erkennung auf dem Testbild. Um seine Leistung zu testen, verwende ich GIMP, um Fenster, die Objekte enthalten und andere Teile außerhalb der Fenster mit weißen Pixeln zu ersetzen. Das Ergebnis ist viel besser. Wenn wir nur ein Objektfenster im Bild behalten und andere Teile weiß machen, ist das Ergebnis super.

Also meine Frage ist, was passiert hinter denen? Wie kann ich es erreichen, dass mehrere Objekte in den Testbildern erfolgreich erkannt werden? Vielen Dank.

Antwort

0

Die Idee ist, dass Sie Trainingsbilder mit mehreren Instanzen von Objekten während des Trainings verwenden sollten. Mit anderen Worten, Sie müssen nicht zuschneiden! Vor allem, dass deine Bilder nicht sehr groß sind.

Allerdings müssen Sie die Objekte identifizieren (beschriften). Dies bedeutet, die Begrenzungsbox jedes Objekts in einem Bild zu kennen. Außerdem sollten diese Daten zusammen mit dem Originalbild in einer Datei tfrecord zusammengefügt werden. Es gibt eine gute Anleitung here mit dem gesamten Prozess. In Ihrem Fall würden Sie alle Objekte im Quellbild (642x481) beschriften, anstatt nur den "Waschbären". Wenn Ihre Objekte mehrere Klassen haben, stellen Sie sicher, dass Sie sie so beschriften!

Wenn Sie mit diesen Bildern trainieren, die die Objekte in ihren Kontexten enthalten, dann wird das Netzwerk lernen, ähnliche Bilder zu erkennen, die Objekte im Kontext haben.