移动端图像AI识别之目标检测(OD)方案调研

133 阅读5分钟

image.png

背景

需求背景简要描述:针对城市市容市貌管理中出现的单车违停、游摊小贩店外经营和暴露垃圾等等场景,希望能有一种经济 便捷的手段来进行巡查,事件识别,记录上报;我们每天用的手机的配置性能配置也越来越高,综合考虑电动车🛵安装支架放置一个手机会是一个平衡经济效益 便捷 和效果的很好实现方式。

需求

使用特定的高性能算力配置的手机比如搭载高通骁龙8gen2 gen3的手机做目标检测&场景识别,电动车巡查速度设定为15-20 km/h 每秒钟识别处理3-7帧图像(业务需求和硬件配置),目标检测场景10个左右。

调研方向

实现目标检测的已有优秀AI模型有很多,但是对于移动端(Mobile Device)算力有限 兼容性等场景需求,专门的模型和对比数据缺乏,需要调研出一种适合既定需求背景目标,训练迭代快,部署方便的较为成熟的适合移动端的AI识别目标检测方案同时兼顾精度、速度和体积等多种因素。

方案与对比数据

前期由于时间和资源限制每种场景的训练 验证图片数据为120张,5种目标场景检测共计600 张图,标注工具使用MakeSense.

  • 移动端(Android Mobile Device)部署工具 Pytorch Moble 和Tensor Flow Lite,由于XXX 选择 YYY
  • Object Detection Model Eff YOL
  • 高通骁龙8 gen2 VS Pixel 7
  • 转到MediaPipe 上面

方案与对比数据 📊

月底出数据对比,Google First*

image.png

两个牛蛙

在移动设备上实现目标检测,EfficientDet-Lite4和YOLOv5是两种常用的模型。以下是对这两种模型的对比:

EfficientDet-Lite4

EfficientDet 是一种目标检测模型,由 Google 的研究者开发。EfficientDet-Lite4 是 EfficientDet 的一个变种,专为移动和嵌入式设备优化。

优点

  • EfficientDet-Lite4 被设计为在资源受限的设备上提供最佳的速度和准确度平衡。它比其它的 EfficientDet 变种更小、更快,但同时仍然保持了相对较高的准确度。

  • EfficientDet-Lite4 可以通过 TensorFlow Lite 在 Android、iOS 或其它嵌入式设备上运行。

缺点

  • 虽然 EfficientDet-Lite4 比其它的 EfficientDet 变种更小、更快,但其准确度可能稍低。

YOLOv5

YOLOv5 是 YOLO(You Only Look Once)系列模型的最新版本。YOLO 是一种实时目标检测系统,特别适合那些需要实时反馈的应用。

优点

  • YOLOv5 非常快,可以实现实时目标检测。在一些需要快速响应的应用中,这是一个重要的优点。

  • YOLOv5 的性能(速度和准确度)比前几个版本的 YOLO 都要好。

缺点

  • YOLOv5 是一个相对较新的模型,其稳定性和兼容性可能不如一些更成熟的模型。

  • YOLOv5 在某些复杂的场景下(例如小目标检测,密集目标检测)可能表现不如一些其他目标检测模型。

总的来说,EfficientDet-Lite4和YOLOv5都是非常优秀的移动设备上的目标检测模型,选择哪个模型取决于具体的应用需求。如果应用需要快速实时反馈,YOLOv5可能是更好的选择。如果设备的资源非常有限,或者对模型的大小和速度有严格的要求,EfficientDet-Lite4可能更加适合。

缩短从前沿研究到投入实际应用并且供所有开发者使用的整个流程。

image.png

Renference

DeepDish on a diet: low-latency, energy-efficient object-detection and tracking at the edge

PyTorch Mobile在端侧可堪大用?能否与TensorFlow Lite一较高下

使用 TensorFlow Lite 简化移动端目标检测

开发工作流程

1.​ 创建 TensorFlow Lite 模型

TensorFlow Lite 模型以名为 FlatBuffer 的专用高效可移植格式(由“.tflite”文件扩展名标识)表示。**与 TensorFlow 的协议缓冲区模型格式相比,这种格式具有多种优势,例如可缩减大小(代码占用的空间较小)以及提高推断速度(可直接访问数据,无需执行额外的解析/解压缩步骤),这样一来,TensorFlow Lite 即可在计算和内存资源有限的设备上高效地运行。

TensorFlow Lite 模型可以选择包含元数据,并在元数据中添加人类可读的模型说明和机器可读的数据,以便在设备推断过程中自动生成处理前和处理后流水线

2.​ 运行推断

推断是指在设备上执行 TensorFlow Lite 模型,以便根据输入数据进行预测的过程。**您可以通过以下方式运行推断,具体取决于模型类型:

在 Android 和 iOS 设备上,您可以使用硬件加速来提升性能。在任何一个平台上,您都可以使用 GPU 代理:在 Android 上,您可以使用 NNAPI 代理(适用于新款设备)或 Hexagon 代理(适用于旧款设备)。如需添加对新的硬件加速器的支持,您可以定义自己的代理