OpenMV 嵌入式目标检测模型选型
OpenMV 嵌入式目标检测模型选型
在 OpenMV 嵌入式机器视觉开发中,目标检测是机器人竞赛、障碍物识别、物料分拣最常用的功能。很多开发者会混淆 YOLO 系列与 FOMO 的适用边界,选错模型直接导致帧率不足、内存溢出、项目无法实时运行。本文整理 OpenMV CSI API 固件内置 4 类 YOLO 模型,并补充 FOMO 轻量检测模型,同时解释嵌入式开发高频名词 NPU,提供完整横向对比与选型方案。
说明:全文面向嵌入式视觉开发者,侧重工程落地选型,弱化复杂理论推导,适合机器人竞赛、单片机视觉项目查阅。
一、YOLO 系列模型简介
YOLO 全称 You Only Look Once,中文释义:只看一次,属于单阶段目标检测算法。核心逻辑:输入整张图像,一次推理直接输出目标类别、边界框坐标、置信度,无需分区域候选,是嵌入式平台主流 AI 检测方案。OpenMV 新版 CSI 固件内置 4 套 YOLO 示例,差异集中在算力消耗、检测精度、适配硬件。
1. yolo_lc_person_detector.py(YOLO-LC)
定位:极简魔改 YOLOv2 阉割版本,面向无 NPU 老款 OpenMV(H7 / H7 Plus)纯 MCU 平台
- LC = Light Compact,官方针对单核单片机裁剪优化的 YOLOv2 变体
- 内置预训练模型仅支持行人检测,原生不支持其他物体识别
- 硬件适配:OpenMV H7、H7 Plus(无 NPU),纯 CPU TFLite 软件推理可运行
- 优缺点:模型体积最小,可在老硬件跑通;帧率偏低(2~5FPS),检测精度最弱,检测对象固定
- 适用场景:存量老 OpenMV 硬件,仅人形识别,无预算更换新款摄像头
2. yolo_v2_detector.py(YOLOv2 / Tiny YOLOv2)
定位:初代轻量化 YOLO,经典入门嵌入式检测算法(2016)
- 采用 Tiny-YOLOv2 轻量化分支,网络结构完整,支持自定义数据集训练任意目标
- 硬件适配:无 NPU 的 H7 可运行但帧率极差;推荐搭配带 NPU 的 OpenMV(Nano/N6/AE3)硬件加速
- 优缺点:开源教程丰富,调参资料多;算法老旧,小目标识别效果差,整体检测精度偏低
- 适用场景:深度学习视觉入门学习,简易标志物、大物体识别项目
3. yolo_v5_detector.py(YOLOv5)
定位:工业与机器人竞赛首选轻量 YOLO(2020,Ultralytics)
- 主流选用 YOLOv5n(nano)极小量化模型,支持目标检测、实例分割,训练部署工具链成熟
- 硬件适配:必须搭载 NPU 的 OpenMV(N6/Nano/AE3);纯 H7 无 NPU 推理极慢,无法实时
- 优缺点:精度均衡,自定义训练流程完善,社区案例极多;模型体积大于 YOLOv2,依赖 AI 硬件加速
- 适用场景:智能车障碍物识别、竞赛视觉任务、小型工业在线检测(综合推荐)
4. yolo_v8_detector.py(YOLOv8)
定位:新一代通用 YOLO 框架(2023,Ultralytics)
- 支持五大任务:目标检测、实例分割、姿态关键点检测、图像分类、旋转框检测,采用 anchor-free 无锚框架构,调参简化
- 硬件适配:高性能 NPU OpenMV(N6/AE3),算力需求为 YOLO 系列最高
- 优缺点:同尺寸模型下精度优于 YOLOv5,功能最全;模型更大,对片上 RAM、NPU 算力要求更高
- 适用场景:关键点识别、物体分割、新项目完整开发,多任务融合视觉方案
二、FOMO 模型补充介绍
FOMO 全称 Faster Objects, More Objects,由 Edge Impulse 推出,是专为资源极度受限微控制器设计的轻量级目标检测算法,和 YOLO 设计思路完全不同,H7 无 NPU 单片机可实现高帧率检测。
FOMO 核心原理
传统 YOLO 需要回归目标 bounding box(框的 x,y,w,h);FOMO 不输出完整边框,仅预测目标质心(中心点坐标)+ 类别置信度。 流程:图像下采样划分网格,每个网格判断是否存在目标,输出热力图,后处理提取目标中心点,大幅减少矩阵运算量,内存占用远低于 YOLO 系列。
- 骨干网络:常用 MobileNetV2(alpha=0.35),模型极小,量化后仅几十~两百 KB
- 推理资源:可在小于 200KB RAM 的 MCU 运行,OpenMV H7 纯 CPU 可达 20~50FPS,N6 平台可突破 200FPS
- 训练方式:依托 Edge Impulse 云端平台标注训练,输出量化 TFLite 模型部署到 OpenMV
FOMO 优缺点
优势:极低算力、低内存、高帧率,无 NPU 的 H7 也能实时跑,训练标注简单,适合近距离、目标大小变化不大场景
局限:无法输出物体宽高边框;近距离重叠物体容易互相粘连误检;远距离小目标识别能力弱
FOMO 适用场景
智能车小球识别、赛道标志物定位、物料中心点抓取、H7 老硬件需要实时多目标检测项目。
重要区分:YOLO 适合需要获取物体长宽、做避障距离估算;FOMO 适合只需要目标中心点跟踪,追求极致帧率的场景。
三、全模型横向对比简表(含 FOMO)
| 示例/模型 | 原始版本 | 是否需要NPU | 检测输出 | 识别精度 | 自定义训练 | 推荐场景 |
|---|---|---|---|---|---|---|
| yolo_lc | 魔改精简YOLOv2 | 无NPU可跑 | 完整边界框 | 最低 | 内置仅行人 | 老H7摄像头,仅行人检测 |
| yolo_v2 | YOLOv2 (Tiny) | 推荐NPU | 完整边界框 | 低 | 支持 | 入门学习,大目标简易识别 |
| yolo_v5 | YOLOv5 nano | 需要NPU | 完整边界框 | 中高 | 成熟完善 | 机器人竞赛、工业检测(综合首选) |
| yolo_v8 | YOLOv8 nano | 高性能NPU | 边界框/分割/关键点 | 最高 | 功能最全 | 分割、姿态关键点、新项目开发 |
| FOMO | Edge Impulse FOMO | 无NPU可跑 | 目标中心点 | 中等 | Edge Impulse训练 | H7老硬件、中心点跟踪、追求高帧率 |
四、名词解析:NPU 是什么?
NPU(Neural Processing Unit)神经网络处理器,面向深度学习矩阵运算设计的专用硬件加速器,属于领域专用处理器(DSA)。
核心作用
CPU 是通用运算单元,擅长分支判断、逻辑控制;运行神经网络大量乘加矩阵运算时效率极低。NPU 硬件内置并行乘加阵列,专门加速 CNN、YOLO、FOMO 等深度学习模型推理,功耗更低、速度提升数十倍。
OpenMV 硬件区分
- 无 NPU:OpenMV H7 / H7 Plus,仅 Cortex-M7 CPU,所有 AI 推理依靠软件 TFLite 实现,算力弱,仅支持 YOLO-LC、FOMO;YOLOv5/v8 运行卡顿超时
- 搭载 NPU:OpenMV Nano / N6 / AE3(Ethos-U55 / Neural-ART),支持硬件加速 YOLOv5、YOLOv8,可实现 30FPS 以上实时检测
通俗总结:NPU = 摄像头内置 AI 显卡;没有 NPU,复杂 YOLO 模型跑不动。
五、补充常识:深度学习 YOLO/FOMO vs find_blobs 色块跟踪
-
find_blobs(LAB 色块识别):帧率极高(几十~上百 FPS),仅依靠颜色阈值分割;复杂背景、光线变化极易干扰,无语义识别能力(分不清红色小球和红色纸片)
-
YOLO / FOMO 深度学习:具备语义识别,抗光照、复杂背景干扰强,可以区分同类颜色不同物体;算力消耗更大,依赖硬件性能
选型优先级:能使用色块稳定识别优先 find_blobs;背景杂乱、需要区分物体种类,选用 FOMO / YOLO
六、选型建议
- 硬件:老款 OpenMV H7(无NPU)
- 只识别人:YOLO-LC
- 需要自定义目标、高帧率中心点跟踪:FOMO
- 硬件:新款 N6 / Nano / AE3(带NPU)
- 常规竞赛障碍物识别,平衡难度与性能:YOLOv5
- 需要分割、手势关键点、多任务:YOLOv8
- 入门学习历史嵌入式方案:YOLOv2
- 仅需中心点定位,追求超高帧率:FOMO
结语
OpenMV 视觉项目模型选型第一约束永远是硬件算力。优先确认摄像头是否带有 NPU,再结合项目需求判断是否需要物体完整边框,最终在 FOMO 与各版本 YOLO 之间取舍。自定义模型训练时,FOMO 依赖 Edge Impulse,YOLOv5/v8 使用 Ultralytics 原生训练框架,工具链差异较大,开发前提前规划数据集与部署流程。
浙公网安备 33010602011771号