是否可以在树莓派 3 上运行 SSD 或 YOLO 对象检测以进行活体检测(2/4 帧 x 秒)?
我已经在 python 中尝试过这个SSD实现,但每帧需要 14 秒。
是否可以在树莓派 3 上运行 SSD 或 YOLO 对象检测以进行活体检测(2/4 帧 x 秒)?
我已经在 python 中尝试过这个SSD实现,但每帧需要 14 秒。
我最近开始为我的一个项目研究对象检测,并想知道是否遗漏了一些东西来让东西落地。
我想在树莓派 3 上实现一个实时对象检测系统,用于监视例如花园的开放空间。我已经尝试了一些可用的解决方案。我不需要检测很多类(只有 3 个人、狗、自行车),所以也许可以用更少的过滤器和参数重新训练最快的选项,从而减少总计算时间。
Darknet(YOLO) [ https://github.com/pjreddie/darknet]安装默认的暗网测试 YOLOv2 和 YOLO 在树莓派 pi3 上运行,每帧每张图像运行约 450 秒。Tiny YOLO 每张图片运行了 40 秒。
Tensorflow Google 对象检测 (API)[ https://github.com/tensorflow/models/blob/master/object_detection/g3doc/installation.md]:我尝试了所有可用的网络。表现最好的是 SSD inception 网络,每张图像运行 26 秒。
Microsoft 嵌入式学习库 (ELL)[ https://github.com/Microsoft/ELL]:由于某些编译原因,我无法让它工作,但稍后会尝试再次检查。请让我知道这是否对您有用以及它在对象检测任务中的表现。
Darknet-NNPACK [ https://github.com/thomaspark-pkj/darknet-nnpack]:这里的暗网针对 arm 处理器进行了优化,并通过某种 FFT 实现实现了卷积,从而大大加快了速度。
我从中获得了最大的希望,但它有它的问题。
安装的暗网测试 YOLO(完整 v1)在 Raspberry Pi3 上运行,每个图像大约需要 45 秒,比默认的 YOLO 网络快 10 倍。Tiny YOLO 每帧运行了 1.5 秒,但没有给出任何结果。
这可能是由于模型和 cfg 文件之间的版本冲突而报告的错误。我不久前打开了一个 github(问题)[ https://github.com/thomaspark-pkj/darknet-nnpack/issues/13],但尚未收到回复。
MXnet (SSD)[ https://github.com/zhreshold/mxnet-ssd] : Mxnet 中 SSD 的端口(未使用 NNPACK 编译) MXnet SSD resnet 50 每个图像 88 秒 MXnet SSD inceptionv3 每个图像 35 秒
Caffe-YOLO[ https://github.com/yeahkun/caffe-yolo]:在 yolo_small 上运行 caffe 每帧 24 秒。在 yolo_tiny 上运行 caffe 每帧需要 5 秒。除非可以解决darknet-nnpack问题,否则这看起来是我尝试过的最快的。
我设法在树莓派上运行 MobileNetSSD 并获得大约 4-5 fps 的问题是您可能会获得大约 80-90% 的 pi 资源,从而导致相机 RSTP 连接在大量活动期间失败并丢失大量帧并获得帧上有大量伪影,所以我不得不购买 NCS 棒并将其插入 pi,现在我可以达到 4 fps,但 pi 资源非常低,约为 30%。带有 mobilenet ssd 的 ncs 处理一张图像大约需要 0.80 秒。
一种选择是使用 Movidius NCS,只有在模型小得多的情况下才使用 raspberry。
关于 NCS 实施:您应该能够让 Mobilenet-SSD 以 ~8fps 的速度运行。有一些适用于简单用例的示例。我目前正在使用与 Darknet 参考模型类似的对象检测器,它在 NCS 上以 ~15fps 的速度运行,但由于该模型尚不可用。一旦它运行良好,我将开源它。