首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Run_inference_for_single_image(图像,图形)- Tensorflow,目标检测

Run_inference_for_single_image(图像,图形)- Tensorflow,目标检测
EN

Stack Overflow用户
提问于 2018-04-10 09:49:50
回答 3查看 5.8K关注 0票数 3

参考tutorial.ipynb。我想知道是否可以运行目录中的所有图像。

而不是写一个for循环,运行一个“run_inference_for_single_image(图像,图形)”。是否有一种方法可以对目录中的所有图像运行推断,或者对多个图像运行推断。链接

代码语言:javascript
复制
  for f in files:
    if f.lower().endswith(('.png', '.jpg', '.jpeg')):
      image_path = files_dir + '/' + f
       .... // Read image etc.
      output_dict = run_inference_for_single_image(image_np, detection_graph)

这每次都会创建tf.session,我认为它的计算成本很高。如果我错了,请纠正我。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-25 07:35:17

我从google - creating-object-detection-application-tensorflow上找到了这个教程。在查看了它的github页面 --> 应用程序 --> app.py之后,我们只需要在每次检测对象时运行github页面函数。

票数 3
EN

Stack Overflow用户

发布于 2018-06-26 00:05:22

如您所知,“run_inference_for_single_image”方法每次都会创建。如果您想要对多个图像进行推断,您应该更改代码,

  • 方法调用 文件中f的图像= []:if f.lower().endswith((‘..png’,'.jpg','.jpeg')):image_path = files_dir + '/‘+f映像=.//读取图像等images.append(图像) output_dicts =run_inference_for_multiple_images(图像,detection_graph)
  • run_inference_for_multiple_images def run_inference_for_multiple_images(图像,笔画):使用graph.as_default():使用tf.Session()作为sess: output_dicts = []作为索引,图像在枚举(图像):.与对单个图像output_dicts.append(output_dict)返回output_dicts的推断相同

此代码将在每次只创建一次tf.session的情况下执行。

票数 5
EN

Stack Overflow用户

发布于 2018-10-11 06:11:23

根据GPU的计算能力和图像的大小,可以对批量图像进行推理。

步骤1:将所有测试图像堆叠在一个数组中:

代码语言:javascript
复制
for image_path in glob.glob(PATH_TO_TEST_IMAGES_DIR + '/*.jpg'):
    image_np = io.imread(image_path)  #
    image_array.append(image_np)
image_array = np.array(image_array)

步骤2:对批处理运行推断:(批大小越大可能导致内存不足)

代码语言:javascript
复制
  BATCH_SIZE = 5
  for i in range(0, image_array.shape[0],BATCH_SIZE):
    output_dict = sess.run(tensor_dict, feed_dict={image_tensor: image_array[i:i+BATCH_SIZE]})


    print("number of images inferenced = ", i+BATCH_SIZE)
    output_dict_array.append(output_dict)

确保image_tensor和image_array的尺寸匹配。在这个例子中,image_array是(?,高度,宽度,3)

一些小贴士:

  1. 您可能希望只加载一次图形,因为加载只需几秒钟。
  2. 我注意到在加载图像时使用skimage.io.imread()或cv2.imread()非常快。这些函数直接将图像作为numpy数组加载。
  3. skimage或opencv保存图像的速度比matplotlib快。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49750520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档