Ich möchte Googles Tensorflow verwenden, um ähnliche Bilder zu einem Eingabebild zurückzugeben.Tensorflow zurück ähnliche Bilder
Ich habe Tensorflow von http://www.tensorflow.org (mit PIP-Installation - Pip und Python 2.7) auf Ubuntu14.04 auf einer virtuellen Maschine CPU installiert.
Ich habe das trainierte Modell Inception-V3 (Anfang-2015-12-05.tgz) von http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz heruntergeladen, die auf IMAGEnet großen Visual Recognition Herausforderung unter Verwendung der Daten von 2012 trainiert, aber ich denke, dass es sowohl das neuronale Netz hat und der Klassifizierer darin (als Aufgabe war es, die Kategorie vorherzusagen). Ich habe auch die Datei classify_image.py heruntergeladen, die ein Bild in 1 der 1000 Klassen im Modell klassifiziert.
Also ich habe ein zufälliges Bild image.jpg, dass ich laufen, um das Modell zu testen. wenn ich den Befehl ausführen:
python /home/amit/classify_image.py --image_file=/home/amit/image.jpg
Ich erhalte den folgenden Ausgang: (Klassifizierung erfolgt über softmax)
I tensorflow/core/common_runtime/local_device.cc:40] Local device intra op parallelism threads: 3
I tensorflow/core/common_runtime/direct_session.cc:58] Direct session inter op parallelism threads: 3
trench coat (score = 0.62218)
overskirt (score = 0.18911)
cloak (score = 0.07508)
velvet (score = 0.02383)
hoopskirt, crinoline (score = 0.01286)
nun an Hand die Aufgabe ist es, Bilder zu finden, die auf das Eingangsbild ähnlich sind (image.jpg) aus einer Datenbank mit 60.000 Bildern (jpg-Format und in einem Ordner unter/home/amit/images). Ich glaube, dass dies getan werden kann, indem die endgültige Klassifizierungsschicht aus dem Modell inception-v3 entfernt wird und der Merkmalsatz des Eingabebildes verwendet wird, um den Kosinusabstand von dem Merkmal zu finden, das alle 60.000 Bilder gesetzt hat, und wir können die Bilder mit weniger Abstand zurückgeben (cos 0 = 1)
Bitte schlagen Sie mir den Weg für dieses Problem vor und wie mache ich das mit Python API.
Ich habe ein paar Lösungen im Kopf, aber ich würde das Problem mehr verstehen mag. Ich nehme an, dass Sie versuchen, alle "Trenchcoats" in den 60.000 Bildern zu finden. Wenn das der Fall ist, können Sie einfach alle 60.000 Bilder durch Inception ausführen, die Bilder extrahieren, bei denen "Trenchcoat" als Top 5 angezeigt wird (fügen Sie einen Schwellenwert hinzu, wenn Sie möchten), und Sie sind fertig. Antwortet das? – jkschin
Danke für die Hilfe. Aber die Sache ist die Bilddatei image.jpg oben ist eigentlich ein Saree, und ich möchte nicht auf die 1000 Klassen im Modell beschränkt werden. Auch wenn ich eine Möglichkeit finde, neue Klassen hinzuzufügen, wird es ein sehr breiter Klassifikator sein und die Beschriftung von Bildern wird eine mühsame Aufgabe sein. Also dachte ich daran, die Klassifizierungsschicht aus dem trainierten Modell zu entfernen und dann den Merkmalsvektor zu verwenden, um die nächsten Bilder zu berechnen. –
Rechts. Die Problemstellung lautet also: "Wie kann ich bei 60.000 Bildern alle Sarees mit einer modifizierten Version von Inception zusammenfassen?". – jkschin