【问题标题】:Tensorflow Object detection with multiple camera使用多个摄像头进行 TensorFlow 对象检测
【发布时间】:2017-11-10 10:14:21
【问题描述】:

我试过 GitHub 代码Object-Detector-App

这适用于延迟为 1 秒的单台摄像机,但当我尝试多台摄像机时,(两个、三个....) 为此,我为每个摄像机的图形和会话创建了多个线程,并且我得到的高延迟取决于摄像机的数量。 a) 我使用的是 NVIDIA Quadpro GP100,摄像头输入为 HD(1920x1080) b) 我正在使用 SSD_VI_COCO_11_06_2017

我在 tensorflow 中研究了线程和队列的概念,我搜索了很多但找不到实用的方法。

我想知道我是否以正确的方式处理多个摄像头进行物体检测,或者有什么更好的方法吗?

【问题讨论】:

    标签: python-3.x tensorflow-gpu


    【解决方案1】:

    首先确保您正在读取来自多个摄像头的帧而没有延迟。如果将 opencv 与 python 包装器一起使用,请注意 read() 的底层实现对于 usb 网络摄像头和 ip 摄像头的工作方式不同。 Usb 摄像头可以轻松堆叠,而 ip 摄像头可能需要 python 线程和队列才能有效地读取帧。

    除非您需要这么大的图像,否则请在将它们输入到 feed dict 之前调整它们的大小。

    30+ FPS 应该很容易用那个 gpu 实现。常见问题是加载图表并为每个推理启动一个新会话。如果使用一个 gpu,则无需为每个摄像头打开一个新的图形/会话。在循环外打开一个图形和一个会话,并在一个循环中推断来自所有相机的图像。这可以一个接一个地进行,也可以分批进行。例如。将四个形状 (1, 512, 512, 3) 的图像堆叠到一个形状 (4, 512, 512, 3) 的数组中,如果 gpu 可以将它们装入内存,所有四个图像的推理将并行发生。

    它可能看起来像这样:

    加载图表并打开会话

    为读取帧并填充队列的每个相机启动线程

    启动单个推理线程,从队列中读取帧,然后按顺序或批量推理帧

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 2021-10-05
      • 2019-03-12
      相关资源
      最近更新 更多