在计算机视觉领域,目标检测是一项核心且极具挑战性的任务。它不仅要求识别图像中物体的类别,还需精准定位物体在图像中的位置,广泛应用于自动驾驶、安防监控、医疗影像分析等众多场景。

一、目标检测:不止于 “识别”,更要 “定位”

1. 任务本质

目标检测的核心是双任务协同:既要完成 “类别识别”(判断图像中有什么物体),又要实现 “位置定位”(确定物体在哪里)。例如,在一张街景图中,不仅要识别出 “人”“车”“自行车”,还要用边界框标出每个物体的具体范围。

2. 三大核心挑战

尽管技术不断发展,目标检测仍面临三大关键问题,这些问题也是算法优化的核心方向:

  • 目标种类与数量繁多:现实场景中物体类别多样(如 COCO 数据集包含 80 类),且单张图像中可能存在数十个物体,增加了检测难度。
  • 目标尺度不均:同一类物体在图像中可能呈现极大的尺寸差异(如远处的汽车与近处的汽车),算法需适应多尺度检测。
  • 外部环境干扰:遮挡(如行人被树木遮挡)、噪声(如模糊图像)等因素会导致特征提取困难,影响检测精度。

二、数据集:目标检测的 “训练燃料”

高质量的标注数据集是训练目标检测模型的基础。目前业界最常用的两大数据集分别是 VOC 和 COCO,二者在规模、类别数量上存在显著差异,适用于不同场景的模型训练。

数据集

起源

图像数量

类别数量

目标标注数量

平均单图目标数

PASCAL VOC

世界级计算机视觉挑战赛

VOC 2007:9963 张VOC 2012:23080 张

4 大类、20 小类

VOC 2007:24640 个VOC 2012:54900 个

-

MS COCO

微软 2014 年出资标注

20 万个

80 类

超过 50 万个

7.2 个

  • VOC 数据集:起步早、类别少,适合入门级模型训练与算法验证,是目标检测领域的 “基准数据集”。
  • COCO 数据集:规模更大、类别更全,且包含更多小目标和复杂场景标注,更贴近真实世界应用,是当前主流模型(如 YOLO、Faster R-CNN)的主要训练数据来源。

三、Ground Truth:标注格式的 “语言规范”

Ground Truth(真值标注)是模型训练的 “标准答案”,包含物体类别和边界框坐标。不同数据集采用不同的标注格式,核心差异在于坐标表示方式,需注意是否归一化坐标定义规则

1. 三种主流标注格式对比

格式

坐标表示

归一化情况

适用场景

YOLO(TXT)

(Cₓ, Cᵧ, w, h):中心点坐标 + 宽高

是(坐标值范围 0-1)

YOLO 系列模型训练

VOC(XML)

(Xmin, Ymin, Xmax, Ymax):左上角 + 右下角

否(直接使用像素值)

VOC 数据集、Faster R-CNN 等模型

COCO(JSON)

(Xmin, Ymin, W, H):左上角坐标 + 宽高

否(直接使用像素值)

COCO 数据集、主流深度学习模型

2. 示例理解

假设一张 1000×800px 的图像中有一只狗,其边界框左上角坐标 (100,600)、宽 150px、高 100px:

  • YOLO 格式(归一化后):Cₓ=100+150/2=175 → 175/1000=0.175;Cᵧ=600+100/2=650 → 650/800=0.8125;w=150/1000=0.15;h=100/800=0.125 → 最终为 (0.175, 0.8125, 0.15, 0.125)。
  • VOC 格式:直接记录像素值 → (100, 600, 250, 700)(Xmax=100+150=250,Ymax=600+100=700)。

四、评估指标:判断模型好坏的 “标尺”

目标检测的评估需兼顾 “精度”(少错检)和 “召回率”(少漏检),核心指标包括 IoU、TP/FP/TN/FN、Precision/Recall、AP 与 mAP。

1. 基础指标:IoU(交并比)

IoU 是衡量边界框定位准确性的核心指标,计算预测框与真值框的交集面积并集面积的比值,公式如下:

IoU = \frac{Intersection}{Union}

  • 取值范围:0-1,值越大表示定位越准确。
  • 实际应用:通常设定 IoU 阈值(如 0.5),若预测框与真值框的 IoU>0.5,则认为定位有效;否则无效。

2. 样本分类:TP/FP/TN/FN

目标检测中,样本分类需结合 “类别置信度” 和 “IoU” 判断,具体定义如下:

指标

定义

目标检测场景解释

TP(真阳性)

真值为正样本,预测也为正样本

预测框类别正确,且 IoU > 阈值

FP(假阳性)

真值为负样本,预测为正样本

预测框类别错误,或 IoU < 阈值(错检)

TN(真阴性)

真值为负样本,预测也为负样本

图像中无该类物体,模型未检测(无意义,通常忽略)

FN(假阴性)

真值为正样本,预测为负样本

图像中有该类物体,模型未检测(漏检)

3. 核心评估指标:Precision 与 Recall

  • Precision(查准率):衡量预测为正样本的结果中,真正为正样本的比例,反映 “少错检” 能力:

Precision = \frac{TP}{TP + FP}

  • Recall(查全率):衡量真值为正样本的结果中,被正确预测的比例,反映 “少漏检” 能力:

Recall = \frac{TP}{TP + FN}

4. 综合指标:AP 与 mAP

  • AP(平均精度):针对单个类别,通过 P-R 曲线(以 Recall 为横轴、Precision 为纵轴)计算曲线下面积,常用 “11 点法”(取 Recall=0,0.1,...,1.0 共 11 个点的 Precision 平均值)。
  • mAP(平均精度均值):所有类别的 AP 的算术平均值,是衡量模型整体性能的核心指标(如 COCO 竞赛以 mAP@0.5 衡量模型优劣)。

五、目标检测算法:从传统到深度学习

目标检测算法经历了 “传统方法→深度学习方法” 的演进,目前深度学习方法已成为主流,可分为 “Two-Stage”(两阶段)和 “One-Stage”(单阶段)两大类。

1. 传统方法:滑动窗口法

  • 原理:人工设计固定尺寸的窗口,在图像上滑动遍历,对每个窗口进行分类,判断是否包含目标。
  • 缺点:需人工设计窗口尺寸,存在大量冗余计算,定位精度低,已被深度学习方法淘汰。

2. 深度学习方法:Anchor 的 “有无” 与 “阶段” 划分

(1)Anchor:目标检测的 “先验框”

Anchor(锚框)是深度学习方法中解决 “目标尺度不均” 的关键设计:

  • scale(尺度,如 128×128、256×256) 描述目标大小,aspect ratio(长宽比,如 1:1、1:2、2:1) 描述目标形状。
  • 基于特征图的每个像素生成多个 Anchor,覆盖不同尺度和形状的目标,减少漏检。
(2)Anchor-Based vs Anchor-Free
  • Anchor-Based(基于锚框):自顶向下设计,先预设大量 Anchor,再筛选置信度高的 Anchor 并回归调整位置(如 Faster R-CNN、YOLO v2-v5)。
  • Anchor-Free(无锚框):自底向上生成目标框,无需预设 Anchor,直接从特征图中预测目标中心和边界(如 FCOS、CenterNet),简化了模型设计。
(3)Two-Stage vs One-Stage

两类算法的核心差异在于 “是否生成候选框(Proposal)”,直接影响精度与速度的权衡:

类别

流程

代表算法

优点

缺点

Two-Stage

输入图像 → CNN 提取特征 → 生成候选框(Proposal) → 对候选框分类与回归 → NMS 输出结果

R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、Cascade R-CNN

精度高,漏检少

速度慢,不适合实时场景

One-Stage

输入图像 → CNN 提取特征 → 直接分类与回归 → NMS 输出结果

YOLO 系列、SSD 系列、RefineDet

速度快,适合实时场景(如自动驾驶)

精度略低于 Two-Stage

3. 关键步骤:NMS(非极大值抑制)

NMS 是去除重复预测框的核心步骤,确保每个目标只保留一个置信度最高的预测框:

  1. 设定置信度阈值(如 0.5),过滤低置信度预测框。
  1. 按置信度降序排列剩余预测框。
  1. 选取置信度最高的框 A 加入输出列表,删除 A。
  1. 计算剩余框与 A 的 IoU,删除 IoU > 阈值(如 0.5)的框(视为重复框)。
  1. 重复步骤 3-4,直到候选框为空。

六、总结:目标检测的技术脉络与未来方向

从 PPT 内容可知,目标检测的核心是 “解决多任务、多尺度、复杂环境的挑战”,技术演进围绕 “精度提升” 和 “速度优化” 展开:

  • 数据集从 VOC 到 COCO,规模与复杂度不断提升;
  • 标注格式从像素坐标到归一化坐标,适配不同模型需求;
  • 算法从传统滑动窗口到深度学习,从 Two-Stage 的高精度到 One-Stage 的高速度,再到 Anchor-Free 的简化设计,不断突破性能瓶颈。

未来,目标检测将向 “更高精度(如结合 Transformer 的 DETR)、更快速度(如轻量级模型 YOLO Nano)、更强泛化能力(如小样本检测、零样本检测)” 方向发展,进一步拓展在实际场景中的应用边界。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐