本节摘要:目标检测是计算机视觉的承上启下任务——比分类难,是分割和跟踪的基础。本节梳理它的应用版图,帮你理解为什么这个领域这么热。
阅读完本节,你应当能够:
目标检测是视觉任务的"中间件":
很多复杂任务以检测结果为输入,检测是基础能力。例如多目标跟踪(MOT)第一步就是逐帧检测,再用卡尔曼滤波或相似度匹配把同一目标连成轨迹;姿态估计往往先检测到人,再在人的区域里找关键点。可以说,检测做不好,下游任务跟着遭殃。
| 场景 | 检测目标 | 特点 |
|---|---|---|
| 自动驾驶 | 车、人、交通标志 | 实时性、安全性要求极高 |
| 安防监控 | 人、人脸、异常行为 | 全天候、密集场景 |
| 工业质检 | 缺陷、产品 | 高精度、高速产线 |
| 医疗影像 | 病灶、器官 | 高精度、小目标 |
| 零售 | 商品、货架 | 商品识别、库存 |
| 农业 | 果实、病虫害 | 大范围、野外 |
| 机器人 | 抓取目标 | 实时交互 |
这七个场景只是缩影。快递分拣、考古遗址、野生动物监测、体育赛事分析都在用检测。判断一个业务是否适合检测:如果它需要"在图像里找出若干对象并知道它们在哪",就是检测任务的菜。
自动驾驶是检测最严苛的场景:
自动驾驶对检测有三层要求:一是时延硬约束,决策模块在等检测结果,超过时限就会错过刹车窗口;二是精度上限要求,远处小目标(几十像素的行人)漏检后果严重;三是可靠性,雨雾天、逆光、夜间都要稳定。因此自动驾驶感知常采用多模型冗余:视觉用 YOLO 系保证实时,激光雷达点云用 3D 检测器,两者结果做融合校验。
YOLO 系列因速度快成为自动驾驶感知的主流选择之一。
安防监控的特点是全天候长视频流:一台摄像头一年跑几百万帧,模型要能扛住光照变化、人群密集、目标尺度跨度大。工程上常用"检测 + 跟踪 + 属性识别"的级联:检测定位人,跟踪维持身份,再对轨迹做行为分析。这类场景对模型速度的要求同样很高,边缘盒子(NVR)上部署轻量 YOLO 是常见方案。
工业质检用检测找产品缺陷:
质检与通用检测不同:缺陷样本少而难采集,正常样本占绝大多数,属于典型的长尾问题。业界做法是先合成缺陷样本或迁移学习预热,再用小目标友好的检测器(带 FPN)在特定区域检测。有时还会用无监督异常检测(重建误差)先粗筛,再让检测器精定位。产线节拍按秒计,模型推理必须跑到毫秒级。
医疗场景对假阴性零容忍:漏检一个病灶可能误诊。因此模型往往先低阈值多检出,再由医生复核,或用集成模型投票。肺结节通常只有几毫米,在 CT 切片上占几十像素,需要高分辨率特征和小目标优化。标注需要专业医生,成本高,常用半监督、预训练微调来缓解。医疗检测更看重灵敏度与特异性曲线(ROC/AUC),而不只是 mAP。
| 需求 | 推荐 |
|---|---|
| 实时(<30ms) | YOLO 系列、SSD |
| 高精度离线 | Faster R-CNN、Cascade R-CNN |
| 边缘设备 | YOLOv5n/s + 量化 |
| 小目标密集 | RetinaNet、带 FPN 的检测器 |
选型前先明确三个数字:时延预算(多久出一帧结果)、精度指标(mAP@0.5 还是 mAP@[0.5:0.95])、算力资源(GPU 还是 ARM)。用一段伪代码辅助判断:
def pick_detector(latency_ms, need_high_accuracy, edge_device): if edge_device: return "YOLOv5n/s + INT8量化" if latency_ms < 30: return "YOLOv8s / YOLOX" if need_high_accuracy: return "Cascade R-CNN / Faster R-CNN+FPN" return "YOLOv8m / RetinaNet"
⚠️ 常见误区:什么场景都用最准的模型。实时场景用太慢的模型会卡死,边缘设备用大模型会爆显存。按延迟、精度、算力三角选型。
💡 关键直觉:检测是视觉任务链中间件,下游接分割/跟踪/姿态。应用版图广:自动驾驶(实时安全)、安防、工业质检(高精度)、医疗(小目标)。按实时性、精度、算力选型。
下一节讲检测难在哪。