在numpy数组上运行Tensorflow classify_image

时间:2016-11-15 15:06:42

标签: python numpy tensorflow

我有一个实时应用程序,我试图对来自Feed的图片进行分类。 classify_images示例包含:

image_data = tf.gfile.FastGFile(image, 'rb').read()
#...
with tf.Session() as sess:
    predictions = sess.run(softmax_tensor,
        {'DecodeJpeg/contents:0': image_data})

其中image是图像文件的路径。但是,我没有从文件中读取图像,我将它们作为numpy数组接收。在以前获取的图像上运行Tensorflow会话的最佳方法是什么?此外,最佳做法是事先创建一个会话和一个图形,并且每当获取新帧时,在新图像上运行现有会话,而不是创建新图形和新会话?

编辑:

我试过了:

images_placeholder = tensorflow.placeholder(tensorflow.int32)
predictions = sess.run(softmax_tensor,
                       {images_placeholder: image})

它有效!谢谢sygi!

编辑2:

这会在一段时间后崩溃而没有错误消息,并且每个帧都预测了相同的标签。我甚至在每一帧都创建了一个新的images_place对象,但我仍然得到相同的标签。

1 个答案:

答案 0 :(得分:1)

  

在a上运行Tensorflow会话的最佳方法是什么?   以前获得的图像?

我认为最好的方法是创建一个tf.placeholder,在模型中使用它,最后在feed dict中传递numpy数组。

  

是预先创建一个会话和一个图形的最佳做法,   并且每当获取新帧时,运行现有会话   新图像,而不是创建新图表和新会话?

最好重复使用一个图表和一个会话。当您创建图形时,它会被“编译”以将您编写的代码更改为高效的GPU实现。你创建了很多图表 - 你会花很多时间做同样的“编译”。此外,当您重用一个会话时,您可以重用变量,防止它们从RAM传递到GPU内存。