Ich habe eine Echtzeit-Anwendung, in der ich Bilder klassifizieren, die aus einem Feed kommen, wenn sie ankommen. Das classify_images Beispiel hat:Run Tensorflow classify_image auf numpy array
image_data = tf.gfile.FastGFile(image, 'rb').read()
#...
with tf.Session() as sess:
predictions = sess.run(softmax_tensor,
{'DecodeJpeg/contents:0': image_data})
Wo image
der Pfad zur Bilddatei ist. Ich lese jedoch keine Bilder aus einer Datei, sondern empfange sie als numpige Arrays. Was ist der beste Weg, um eine Tensorflow-Sitzung auf einem zuvor erworbenen Bild auszuführen? Es ist auch die beste Vorgehensweise, eine Sitzung und ein Diagramm im Voraus zu erstellen, und wenn ein neuer Rahmen erstellt wird, führen Sie die vorhandene Sitzung für das neue Bild aus, anstatt ein neues Diagramm und eine neue Sitzung zu erstellen.
Edit:
Ich habe versucht:
images_placeholder = tensorflow.placeholder(tensorflow.int32)
predictions = sess.run(softmax_tensor,
{images_placeholder: image})
und es funktionierte! Danke Sygi!
Edit 2:
Dieser stürzt nach einer Weile ohne Fehlermeldung, und auch hat jeder Rahmen die gleichen Etiketten vorhergesagt. Ich erstelle sogar ein neues images_place-Objekt für jeden Frame, aber ich bekomme immer noch das gleiche Label.
Übrigens, es ist eine gute Übung, Platzhaltern vordefinierte Form zu geben (wenn Sie es wissen) - das Debuggen von Formen wird dann einfacher. – sygi
Was ist dein Image? Sie sollten jedes Mal verschiedene (Batch-) Bilder einspeisen. – sygi
Es ist ein neues Bild, das Code-Snippet wird in einer Schleife aufgerufen und jedes Bild aus dem Video-Feed wird in die Variable 'image' gesetzt. –