08-目标检测学习路线与模型选型指南(工控/嵌入式/机械臂场景)

0 阅读7分钟

目标检测学习路线与模型选型指南(工控/嵌入式/机械臂场景)

大家好,我是黒漂技术佬。前三篇把环境、预处理、数据集都聊完了,今天来点宏观的——目标检测这么多模型,到底该学哪个、该用哪个?

这个问题我被问过不下五十次。工控老哥说要稳、嵌入式老哥说要小、机械臂老哥说要快。需求不同,答案完全不同。所以这篇不给你"一招鲜"的标准答案,而是帮你建立选型框架,以后遇到新场景自己能判断。

一、算法发展脉络:从两阶段到 Anchor-Free

了解发展史不是为了装逼,是为了理解每种模型的基因——知道它擅长什么、不擅长什么。

第一阶段:两阶段检测器(2014-2016)

代表模型:R-CNN → Fast R-CNN → Faster R-CNN

两阶段的意思是分两步走:第一步生成候选区域(Region Proposal),第二步对每个候选区域做分类和回归。就像相亲——先海选几个候选人,再逐一深入了解。

  • 优点:精度高,小物体检测效果好
  • 缺点:慢。Faster R-CNN 在 V100 上也才 ~7 FPS,上嵌入式设备基本不现实
  • 适合场景:对精度要求极高、对速度没严格限制的场景(比如离线图像分析)

一个关键创新是 RPN(Region Proposal Network),它让候选区域生成也用神经网络来做,实现了端到端训练。这个思想影响了后续所有检测器。

第二阶段:单阶段检测器(2016-2020)

代表模型:YOLO、SSD、RetinaNet

单阶段就是一步到位——输入图片,直接输出检测框和类别,省去了候选区域生成这一步。

SSD(Single Shot MultiBox Detector)在多个尺度的特征图上做检测,兼顾了不同大小的物体。优点是快,缺点是对小物体不太友好。

YOLO(You Only Look Once)直接把检测建模为回归问题,在特征图上划分网格,每个网格预测固定数量的框。YOLO 的设计哲学就是"够用就好"——不追求最高精度,但一定要快、要简单。

一个有趣的细节:两阶段方法精度高,单阶段方法普遍精度低一截,直到 RetinaNet 提出 Focal Loss 解决了正负样本不平衡问题。Focal Loss 的核心思想是:让模型少关注那些已经预测得很好的简单样本,多关注难样本。

第三阶段:Anchor-Free + Transformer(2020-至今)

Anchor(锚框)是预先设定的一组不同尺寸和比例的参考框,模型在这些锚框的基础上做微调。但锚框的设计依赖人工经验,而且数量巨大(一张图上可能有几万个),计算量浪费严重。

Anchor-Free 方法直接预测关键点或中心点,不再需要预设锚框。代表有 CenterNet、FCOS、YOLOX。

Transformer 的冲击就更大了。DETR(Detection Transformer) 把检测变成一个集合预测问题,用 Transformer 编码器-解码器结构替代了大量手工设计的组件。虽然初期训练慢,但架构简洁优雅。

二、主流模型能力对比

模型mAP(COCO)FPS(V100)参数量特点
Faster R-CNN~37%~7~41M精度高,速度慢
SSD~29%~46~24M速度快,小物体弱
YOLOv5s~37%~120~7M速度精度均衡
YOLOv8n~37%~200+~3M极小极快
EfficientDet-D0~34%~30~4M综合效率好
RT-DETR~53%~74~32M基于 Transformer
YOLOv11n~39%~200+~2.6M最新轻量 SOTA

数据仅供参考,不同评测环境结果不同。关键看趋势,不是绝对值。

可以看到,YOLO 系列在速度-精度平衡上做到了极致,尤其是 nano/small 版本,参数量仅几百万,FPS 却能跑到 200 以上。这也是为什么它成了工业界事实标准。

三、不同场景的选型建议

工控场景:稳定性优先

典型应用:流水线零件检测、PCB 缺陷检测、包装盒印刷质量检测。

工控环境的特点:光线可控、视角固定、物体类别少但样本量足。工业相机拍出来的图质量稳定,不像户外那样光照乱变。

选型策略:精度 > 速度。一条流水线每秒过 2 个零件,20 FPS 和 50 FPS 区别不大。但漏掉一个缺陷零件可能造成重大损失。

推荐:Faster R-CNN 做打底方案,追求精度;YOLOv5m/l 做速度优化版。如果缺陷种类多且大小不一,RetinaNet 的 Focal Loss 对长尾类别友好。

嵌入式场景:轻量化和速度优先(RK 平台)

典型应用:无人售货柜、智能门禁、手持检测设备。

嵌入式设备(如瑞芯微 RK3588、RV1126、地平线 X3)的算力只有桌面 GPU 的几十分之一。一张 NVIDIA RTX 3060 有 13 TFLOPS 算力,而 RK3588 的 NPU 只有 6 TOPS(注意单位都不一样,TFLOPS vs TOPS,差了三个数量级)。

选型策略:能跑 > 能准。模型太大连推理都跑不动,精度再高也是白搭。

推荐路径:

  1. YOLOv5n 或 YOLOv8n,在 PC 上训练,用 ONNX 导出,再通过 RKNN-Toolkit 转换成 RKNN 格式部署
  2. 量化是必须的:FP32 → INT8 量化,精度损失 1%2%,速度提升 34 倍
  3. 如果 INT8 量化后精度不够,用 YOLOv3-tiny 做降级方案——虽然精度低一点,但在嵌入式平台上优化最成熟

一个真实的经验:在 RK3588 上跑 YOLOv8n,INT8 量化后约 25 FPS,完全够无人售货柜用了。但如果你不量化,FP32 直跑可能只有 3~5 FPS,跟幻灯片似的。

机械臂场景:精度和实时性平衡

典型应用:视觉引导抓取、分拣机器人、焊接定位。

机械臂对检测的需求很特殊:既要准(抓不准就掉了),又要快(机械臂一直在动,延迟大了位置就偏了)。而且通常还需要物体位姿,不是简单的框能解决的。

选型策略:精度和速度都要,可能还要分割

推荐:

  • 抓取检测:YOLOv8s/m 做物体定位,30+ FPS 满足实时控制需求
  • 位姿估计:需要结合关键点检测或 6D 姿态估计网络,YOLOv8-pose 是不错的起点
  • 如果抓的是各种形状不规则的工件,可以考虑 Mask R-CNN 做实例分割,配合深度相机计算精确的抓取点

四、学习路线建议:从 YOLO 入手

第一步:跑通 YOLOv8(1~2 周)

  • 用 YOLOv8 官方代码训练自己的数据集(哪怕只标注 100 张图)
  • 目的不是学知识,是建立信心——看到模型真的能检出物体,你就有动力往下走了
  • 调调超参数,看看 lr、batch_size、epoch 对结果的影响

第二步:理解原理(2~4 周)

  • 阅读 YOLOv1 论文,弄懂 Grid Cell 和 Bounding Box 回归
  • 再读 YOLOv3,理解多尺度检测和 FPN(特征金字塔)
  • 重点吃透 损失函数:坐标损失、置信度损失、分类损失各干各的

第三步:横向拓展(1~2 个月)

  • 读 Faster R-CNN 论文,理解 RPN 和 ROI Pooling
  • 读 SSD 论文,理解多尺度默认框
  • 读 DETR 论文,感受一下 Transformer 是怎么做检测的

第四步:深入实战

  • 部署模型到目标平台(嵌入式、工控机)
  • 处理真实场景问题:模型过拟合怎么办、推理速度不够怎么办、新品类上线怎么快速适配

学习原则:每个阶段先动手再动脑。看完论文跑代码,跑完代码再看论文,这么反复两三轮,理解会完全不一样。一开始死磕论文理论,很容易从入门到放弃。

这个领域发展快,但核心思想没变——卷积提取特征、分类定位两步走。把基础打扎实,新模型出来无非是换了个马甲。


写到这里,入门系列四篇完结。从搭环境到选模型,该说的都说了。后面就是动手干——祝你的第一个检测模型早日跑通。