客户端服务器端实时对象检测

时间:2018-12-12 06:52:34

标签: python swift object-detection coreml

我计划在智能手机中实现实时对象检测功能。对于ios,我知道我可以将CoreML与微小的YOLO结合使用来完成此功能。但是,智能手机的检测速度较慢,准确性也不高。

因此,我希望我可以在Python服务器中构建对象检测。智能手机将捕获帧或使用实时流媒体将帧传递到服务器。然后,服务器会将结果返回到智能手机。智能手机将显示边界框。是否有可能在更少的延迟内完成所有事情?

1 个答案:

答案 0 :(得分:0)

您确定它的速度慢且准确性不好吗?

TinyYOLO在iPhone XS上以200 FPS运行,甚至 full YOLO-v3在最新设备上也以实时帧速率运行。有关示例,请参见:https://github.com/Ma-Dan/YOLOv3-CoreML

MobileNetV2 + SSDLite最高可达到90 FPS。

您实际上并不会以这些超高速运行这些模型,但这表明它们具有实时运行的能力。即使在较旧的设备上,SSDLite仍可实现实时速度。

(当然,更快的R-CNN并不是移动设备上的速度怪兽。)

假设您需要达到30 FPS。这意味着您每帧有33毫秒的时间将帧发送到服务器,对其进行处理,然后将边界框发送回客户端。也许您可以使其对单个用户的运行速度足够快,但是如果成千上万的用户一次尝试执行此操作,那么如何使服务器运行得足够快呢?

您必须将请求排队,并分批处理以获得最佳吞吐量,但这也会增加延迟。

通过在服务器上执行此操作,您实际上要解决三个问题:1)使其足够快,2)使其可扩展,3)付费。

我并不是说不能使用服务器来完成此操作,但不要过早注销设备上的对象检测。