【深度学习】目标检测全解析:定义、数据集、评估指标与主流算法
在计算机视觉领域,目标检测是继图像分类之后的核心任务,它不仅需要识别图像中物体的类别,还需精确定位物体的位置,广泛应用于自动驾驶、安防监控、智能零售等场景。
一、目标检测基础:定义与核心挑战
1. 目标检测的定义
目标检测本质是 “多任务学习”,需同时完成两个任务:
分类任务:识别图像中存在的物体类别(如人、车、狗);
定位任务:确定每个物体在图像中的空间位置(通常用边界框表示)。
2. 核心挑战
实际场景中,目标检测面临三大关键难题:
目标种类与数量繁多:需处理数百类物体,且单张图像中物体数量不固定;
目标尺度不均:同一类物体可能在图像中呈现极大(如近景车)或极小(如远景行人)的尺寸;
外部环境干扰:物体可能被遮挡(如行人被树木遮挡)、受噪声影响(如模糊图像),导致特征提取困难。
二、目标检测关键数据集:VOC 与 COCO
数据集是目标检测模型训练与验证的基础,目前主流的公开数据集为PASCAL VOC和MS COCO,两者核心参数对比如下:
数据集 | 类别数 | 图像数量 | 标注目标数 | 核心特点 |
---|---|---|---|---|
PASCAL VOC | 4 大类(如动物、交通工具)+ 20 小类 | VOC 2007:9963 张;VOC 2012:23080 张 | VOC 2007:24640 个;VOC 2012:54900 个 | 入门级数据集,标注简洁,适合基础模型验证 |
MS COCO | 80 类(细分更细,如猫、狗、公交车等) | 约 20 万张 | 超过 50 万个 | 数据量更大、类别更多,平均每图含 7.2 个目标,更贴近真实场景 |
三、Ground Truth:三种主流标注格式解析
Ground Truth(真值标注) 是模型训练的 “标准答案”,包含物体类别和边界框坐标。不同数据集 / 框架采用不同的标注格式,核心区别在于坐标表示方式和是否归一化:
标注格式 | 坐标表示 | 归一化情况 | 适用场景 |
---|---|---|---|
YOLO(TXT 格式) | (x, y, w, h):x/y 为边界框中心点横 / 纵坐标;w/h 为边界框宽 / 高 | 是(x/y/w/h 均除以图像宽 / 高,取值范围 [0,1]) | YOLO 系列算法训练 |
VOC(XML 格式) | (Xmin, Ymin, Xmax, Ymax):左上角(Xmin,Ymin)和右下角(Xmax,Ymax)坐标 | 否(直接使用像素值) | R-CNN、SSD 等算法,VOC 数据集标注 |
COCO(JSON 格式) | (Xmin, Ymin, W, H):左上角(Xmin,Ymin)坐标;W/H 为边界框宽 / 高 | 否(直接使用像素值) | COCO 数据集标注,支持复杂场景(如实例分割) |
示例:若图像尺寸为 1000×800px,一只狗的边界框左上角 (100,600)、宽 150px、高 100px,则:
YOLO 格式(归一化后):(0.1, 0.75, 0.15, 0.125);
VOC 格式:(100, 600, 250, 700);
COCO 格式:(100, 600, 150, 100)。
四、目标检测评估指标:从 IoU 到 mean AP
评估指标是衡量模型性能的核心,目标检测的评估体系围绕 “边界框准确性” 和 “分类准确性” 展开,关键指标如下:
1. 交并比(IoU:Intersection over Union)
IoU 是衡量边界框定位准确性的核心指标,计算 “预测边界框” 与 “Ground Truth 边界框” 的交集面积与并集面积之比:
2. 样本分类:TP/FP/TN/FN
目标检测中,需结合 “类别预测” 和 “IoU” 判断样本类型,为后续 Precision/Recall 计算奠定基础:
指标 | 定义(目标检测场景) | 通俗理解 |
---|---|---|
TP(真阳性) | 预测为正样本(存在某物体),且 IoU > 阈值,Ground Truth 确为正样本 | 正确检测到物体 |
FP(假阳性) | 预测为正样本,但 IoU < 阈值,或 Ground Truth 为负样本 | 误检(把背景当物体) |
TN(真阴性) | 预测为负样本,Ground Truth 也为负样本 | 正确判断无物体 |
FN(假阴性) | 预测为负样本,但 Ground Truth 为正样本 | 漏检(没检测到真实物体) |
3. 查准率(Precision)与查全率(Recall)
查准率(Precision):衡量 “预测为正的样本中,真正为正的比例”,关注 “误检率”:
查全率(Recall):衡量 “所有真实正样本中,被正确预测的比例”,关注 “漏检率”:
权衡关系:Precision 与 Recall 通常呈负相关 —— 提高 Precision(减少误检)可能导致 Recall 下降(增加漏检),反之亦然。
4. P-R 曲线与平均精度(AP)
P-R 曲线:以 Recall 为横轴、Precision 为纵轴绘制的曲线,曲线下面积越大,模型性能越好;
AP(Average Precision):P-R 曲线下的面积,是单类别目标检测性能的核心指标。常用11 点法计算:
取 Recall 值为 [0, 0.1, 0.2, ..., 1.0](共 11 个点);
对每个 Recall 点,取该 Recall 及以上对应的最大 Precision;
计算 11 个 Precision 值的平均值,即为该类别的 AP。
5. mean AP(mAP)
定义:所有类别的 AP 的算术平均值(mean);
注意:“mean” 是简单算术平均,因 AP 已考虑单类别的 Precision-Recall 均衡;而 “average” 通常需额外设计规则(如加权),目标检测中常用 mAP 作为全局性能指标。
五、目标检测方法演进:传统到深度学习
目标检测方法经历了 “传统手工特征” 到 “深度学习端到端” 的演进,核心差异在于特征提取方式。
1. 传统方法:滑动窗口法
原理:用固定尺寸 / 比例的窗口在图像上滑动,对每个窗口提取手工特征(如 HOG、SIFT),再用分类器(如 SVM)判断是否为目标;
缺点:
需人工设计窗口尺寸 / 比例,无法适配多样目标;
大量冗余窗口导致计算量巨大;
手工特征鲁棒性差,定位精度低。
2. 深度学习方法:端到端检测
深度学习方法通过 CNN 自动提取特征,解决了传统方法的痛点,核心分为 “Anchor 相关”“两阶段(Two Stage)”“单阶段(One Stage)” 三大方向。
1)Anchor:目标检测的 “先验框”
定义:Anchor(锚点框)是预设在图像上的固定尺寸 / 比例的边界框,用于辅助定位目标;
描述方式:用 “scale(尺度,如面积大小)” 和 “aspect ratio(长宽比,如 1:1、1:2、2:1)” 定义;
位置:由 CNN 输出的 Feature Map 上的每个像素点对应到原图的位置决定。
(2)Anchor-Base vs Anchor-Free
Anchor-Base:
思路:自顶向下,先预设大量 Anchor,再筛选 / 修正 Anchor(类似滑动窗口的优化);
代表:R-CNN 系列、SSD 系列;
Anchor-Free:
思路:自底向上,无需预设 Anchor,直接从图像特征中预测目标中心和尺寸;
优势:避免 Anchor 设计的人工成本,减少计算量;
代表:YOLOv1、FCOS。
(3)两阶段(Two Stage)算法
核心思想:分两步完成检测 —— 先生成 “候选框(Proposal)”,再对候选框分类和回归;
流程:输入图像 → CNN 提取特征 → 生成 Proposal → ROI Pooling(统一特征尺寸) → 全连接层 → 类别预测 + 边界框回归 → NMS(去除重复框);
代表算法:
经典系列:R-CNN → SPP-Net → Fast R-CNN → Faster R-CNN(逐步优化速度和精度);
改进算法:Cascade R-CNN(多阶段回归提升精度)、Guided Anchoring(动态生成 Anchor);
特点:精度高,但速度较慢(两步计算)。
4)单阶段(One Stage)算法
核心思想:一步完成检测 —— 直接从 CNN 特征中预测类别和边界框,无需候选框生成;
流程:输入图像 → CNN 提取特征 → 类别预测 + 边界框回归 → NMS;
代表算法:
YOLO 系列(v1-v5):速度快,适合实时场景;
SSD 系列(SSD、DSSD、FSSD):多尺度特征融合,提升小目标检测精度;
RefineDet:结合两阶段精度和单阶段速度;
特点:速度快(端到端),精度略低于 Two Stage(近年 YOLOv5/v8 已接近 Two Stage 精度)。
六、核心技术:非极大值抑制(NMS)
NMS 是目标检测的 “后处理关键步骤”,用于去除重复的候选框,保留最优检测结果,流程如下:
1.设定置信度阈值(如 0.5):过滤掉置信度低于阈值的候选框;
2.排序:按候选框的置信度从高到低排序;
3.筛选最优框:
取置信度最高的框 A,加入输出列表,从候选框列表中删除 A;
计算候选框列表中所有框与 A 的 IoU,删除 IoU > 阈值(如 0.5)的框(认为是重复框);
4.重复步骤 3:直到候选框列表为空,输出列表即为最终检测结果。
总结与展望
本文从基础到进阶,梳理了目标检测的核心知识:
基础层:定义(分类 + 定位)与挑战(多目标、尺度、遮挡);
数据层:VOC/COCO 数据集与三种标注格式;
评估层:IoU、Precision/Recall、AP/mAP 的计算逻辑;
算法层:从传统滑动窗口到深度学习的 Two Stage/One Stage 算法,及 NMS 后处理。