2017-05-03 2 views
0

Ich möchte wissen, wie man eine automatische Tagging für Bilder macht.Tensorflow Auto Tagging

Ich habe Tensorflow ausprobiert und das Modell mehrmals trainiert. Für den Anfang war es ziemlich gut für die Klassifizierung. Aber jetzt muss ich Auto-Tagging tun.

die Vorhersage Summenergebnis Mit tensorflow wird so immer 1.

Zum Beispiel etwas sein:

xxx.jpg Vorhersage Ergebnis: - Katze = 0,822 - Dog = 0,177 - Deer = 0,001 Die Summe wird immer 1.

sein Was wollte ich so etwas wie dieses:

xxx.jpg Vorhersageergebnis: - Katze = 0,901 - Dog = 0,811 - Deer = 0,991

Weil es vielleicht Katze, Hund und Hirsch in dem gleichen Bild in xxx.jpg sein. Genau wie Clarifai (https://www.clarifai.com/) tat.

Ich frage mich, was ist das Grundkonzept, das erreicht?

Vielen Dank.

Antwort

0

Werfen Sie einen Blick auf die letzte Schicht, die Sie gemacht haben. Wie Sie sagen, die Summe Ihrer Vorhersagen ist immer eins, das klingt wie Sie Softmax angewendet haben (https://en.wikipedia.org/wiki/Softmax_function). Wenn Sie dies entfernen, erhalten Sie Aktivierungen für jedes Objekt.

Bitte lassen Sie mich wissen, wenn dies Ihnen geholfen hat!

+0

Eigentlich habe ich das Tutorial hier https://www.tensorflow.org/versions/r0.11/how_tos/image_retraining/ verwendet. Also habe ich meinen eigenen Code für das Training nicht gemacht. Vielleicht ist es Zeit, das jetzt zu tun. Ich werde es ausprobieren und sehen, ob deine Antwort wirklich funktioniert! Vielen Dank ! – Lyn

+0

Hallo nochmal! Ich versuche bereits zu lesen und entschied mich dafür, die retrain.py aus dem Tutorial-Link, den ich bereits erwähnt habe, zu bearbeiten. Da ist es viel vereinfacht für mich. Ich habe versucht, die softmax-Ebene zu löschen, die in dieser Zeile aus der retrain.py definiert wurde: 'final_tensor = tf.nn.softmax (logits, name = final_tensor_name)'. Aber, wenn ich es gerade gelöscht habe, wird es nicht funktionieren, weil es den final_tensor_name später fehlt. Also, ich ändere es einfach in "final_tensor = tf.nn.relu (logits, name = final_tensor_name)". Aber das Ergebnis ist, der Wert kann nun über 1 hinausgehen. Zum Beispiel: cat = 1,345 - dog = 0,234543 - deer = 0. – Lyn

+0

Wie auch immer, ich habe nach dem Lesen von reluse stattdessen verwendet [http://stackoverflow.com/questions/ 42697341/how-to-use-softmax-Aktivierungsfunktion-bei-der-Output-Schicht-aber-relus-in-the-mid] – Lyn