目标检测项目核心笔记:从任务定义到算法流程
目标检测项目核心笔记:从任务定义到算法流程
目标检测是计算机视觉的核心任务之一,核心目标是 “识别图像中物体类别 + 定位物体位置”,需解决多任务协同、尺度不均、遮挡干扰等挑战。这份笔记系统梳理目标检测的数据集、标注格式、评估指标及主流算法,构建从理论到实战的完整知识框架。
一、目标检测任务核心认知
1. 任务定义与核心挑战
- 核心目标:同时完成 “分类”(识别物体类别,如人、车、狗)和 “回归”(定位物体位置,用边界框表示)两大任务,输出 “类别 + 边界框坐标”。
- 四大核心挑战:
- 多任务协同:分类任务关注全局特征,回归任务关注局部位置,需平衡两者损失;
- 目标数量与种类繁多:图像中可能包含 0~N 个物体,且类别差异大(如小到猫、大到汽车);
- 目标尺度不均:同一类物体可能因距离镜头远近呈现不同尺寸(如远处的人 vs 近处的人);
- 外部环境干扰:遮挡(如物体被部分遮挡)、噪声(如模糊、光照变化)会降低检测精度。
二、目标检测常用数据集
数据集是模型训练与评估的基础,主流数据集在类别数量、标注规模上各有侧重,适配不同训练需求:
数据集 | 类别数量 | 图像数量 | 目标标注数量 | 核心特点 |
---|---|---|---|---|
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)
标注格式定义 “物体类别 + 边界框坐标” 的存储方式,不同数据集采用不同格式,核心是确保坐标能准确映射到图像像素位置:
1. 三大主流格式对比
格式 | 坐标表示方式 | 归一化情况 | 适用数据集 | 示例(假设图像尺寸 1000×800px,物体左上角 (100,600)、右下角 (250,700)) |
---|---|---|---|---|
YOLO (TXT) | (Cx, Cy, W, H) | 是(坐标范围 0~1) | YOLO 系列模型 | 中心点 Cx=175/1000=0.175,Cy=650/800=0.8125;宽 W=150/1000=0.15,高 H=100/800=0.125 → (0.175, 0.8125, 0.15, 0.125) |
VOC (XML) | (Xmin, Ymin, Xmax, Ymax) | 否(像素值) | VOC 数据集、Faster R-CNN | 左上角 (100,600),右下角 (250,700) → (100, 600, 250, 700) |
COCO (JSON) | (Xmin, Ymin, W, H) | 否(像素值) | COCO 数据集 | 左上角 (100,600),宽 150,高 100 → (100, 600, 150, 100) |
2. 坐标映射逻辑
- 归一化意义:YOLO 格式通过将坐标除以图像宽高(Cx = 物体中心 x / 图像宽,W = 物体宽 / 图像宽),使坐标不受图像尺寸影响,适配不同分辨率图像训练;
- 格式转换:不同格式可通过公式互转(如 VOC→YOLO:Cx=(Xmin+Xmax)/(2× 宽),Cy=(Ymin+Ymax)/(2× 高),W=(Xmax-Xmin)/ 宽,H=(Ymax-Ymin)/ 高)。
四、目标检测核心评估指标
评估指标用于量化模型检测精度,从 “边界框准确性”“分类正确性”“整体性能” 三个维度综合判断:
1. 基础指标:IoU(交并比)
- 定义:衡量预测边界框(Pred)与真实边界框(GT)的重叠程度,公式为:\(IoU = \frac{Pred \cap GT}{Pred \cup GT}\)
- 取值范围:0~1,IoU=1 表示完全重叠,IoU=0 表示无重叠;
- 核心作用:判断预测框是否 “准确命中” 物体,通常设定阈值(如 0.5),IoU > 阈值则认为检测正确,否则错误。
2. 分类与定位结合指标:TP/FP/TN/FN
基于 IoU 和类别置信度,将检测结果分为四类,是后续 Precision、Recall 计算的基础:
指标 | 定义 | 目标检测场景解释 |
---|---|---|
TP(真正例) | 真实为正样本(有物体),预测为正样本(检测到物体)且分类正确 | 预测框与 GT 的 IoU > 阈值,且类别预测正确(如 GT 是 “狗”,预测也是 “狗”) |
FP(假正例) | 真实为负样本(无物体),预测为正样本 | 预测框与所有 GT 的 IoU <阈值(误检,如将背景误判为 “猫”),或类别预测错误 |
TN(真负例) | 真实为负样本,预测为负样本 | 背景区域未被误检,无实际意义(目标检测更关注物体是否被正确检测,TN 通常忽略) |
FN(假负例) | 真实为正样本,预测为负样本 | 存在 GT 但未被检测到(漏检,如图像中有 “人” 但模型未输出对应预测框) |
3. 整体性能指标:Precision、Recall、AP、mAP
(1)Precision(精确率 / 查准率)与 Recall(召回率 / 查全率)
- Precision:预测为正样本中真正为正样本的比例,衡量 “检测结果的可靠性”(避免误检):\(Precision = \frac{TP}{TP + FP}\)
- Recall:真实正样本中被正确预测的比例,衡量 “检测的全面性”(避免漏检):\(Recall = \frac{TP}{TP + FN}\)
- 权衡关系:Precision 与 Recall 通常呈负相关(如提高置信度阈值会减少 FP、提升 Precision,但可能增加 FN、降低 Recall)。
(2)P-R 曲线与 AP(Average Precision)
- P-R 曲线:以 Recall 为横轴、Precision 为纵轴,通过调整置信度阈值绘制的曲线;曲线下面积越大,模型性能越好;
- AP 计算(11 点法):取 Recall=0,0.1,...,1.0 共 11 个点,每个点对应 “该 Recall 及以上的最大 Precision”,再求平均值:示例:若 11 个点的 Precision 分别为 [1, 0.666, 0.4285, 0.4285, 0.4285, 0, 0, 0, 0, 0, 0],则 AP=(1+0.666+0.4285×3)/11≈26.84%;
- 物理意义:单类物体的检测精度,AP 越高,该类物体的检测效果越好。
(3)mAP(mean AP)
- 定义:所有类别的 AP 的算术平均值,衡量模型对多类别物体的综合检测能力;
- 注意:COCO 数据集采用 “积分法” 计算 AP(而非 11 点法),通过对 P-R 曲线进行积分得到更精确的结果,但核心逻辑一致。
五、目标检测算法分类与流程
根据是否生成 “候选区域(Proposal)”,目标检测算法分为Two-Stage(两阶段) 和One-Stage(单阶段) 两大类,各有优劣:
1. 传统方法:滑动窗口法(已淘汰)
- 核心逻辑:用固定尺寸 / 比例的窗口在图像上滑动,对每个窗口进行分类,判断是否包含物体;
- 缺点:需人工设计窗口尺寸,存在大量冗余计算(多数窗口为背景),定位精度低,已被深度学习方法取代。
2. 深度学习方法:Anchor-Based 与 Anchor-Free
(1)Anchor-Based(基于锚框)
- 核心思想:预先在图像上设置大量 “锚框(Anchor Box)”(不同尺度、长宽比的矩形框),模型对每个锚框预测 “类别置信度” 和 “坐标偏移量”;
- Anchor 定义:由
scale
(面积大小,如 128²、256²)和aspect ratio
(长宽比,如 1:1、1:2、2:1)决定,覆盖不同尺寸和形状的物体; - 代表算法:
- Two-Stage:先生成候选区域(Proposal),再对候选区域分类回归,精度高但速度慢;
- 发展线:R-CNN → SPP-Net → Fast R-CNN → Faster R-CNN(用 RPN 网络替代传统候选区域生成,大幅提升速度);
- One-Stage:直接对锚框分类回归,无候选区域步骤,速度快但精度略低;
- 代表:YOLO 系列(v1-v5,速度与精度平衡)、SSD 系列(多尺度检测,适配小目标)。
- Two-Stage:先生成候选区域(Proposal),再对候选区域分类回归,精度高但速度慢;
(2)Anchor-Free(无锚框)
- 核心思想:无需预设锚框,直接从特征图中预测物体的 “中心点” 或 “关键点”,再回归边界框尺寸;
- 优势:避免锚框设计的人工成本,减少冗余计算,对不规则形状物体适配性更好;
- 代表算法:CornerNet(预测物体左上角和右下角关键点)、CenterNet(预测物体中心点和宽高)。
3. 两大算法流程对比
(1)Two-Stage 算法流程(以 Faster R-CNN 为例)
- 特征提取:用 CNN(如 ResNet)对输入图像提取特征图;
- 候选区域生成(RPN):在特征图上滑动,对预设锚框预测 “前景 / 背景概率” 和 “坐标偏移”,筛选出高质量候选区域(Proposal);
- ROI Pooling:将不同尺寸的候选区域统一为固定尺寸,便于后续分类回归;
- 分类与回归:用全连接层对候选区域预测 “物体类别” 和 “精确边界框坐标”;
- NMS(非极大值抑制):去除同一物体的重复预测框(保留置信度最高的框,删除 IoU > 阈值的其他框)。
(2)One-Stage 算法流程(以 YOLO 为例)
- 特征提取:用 CNN(如 DarkNet)提取特征图;
- 网格划分与锚框分配:将图像划分为 S×S 网格,每个网格分配预设锚框;
- 分类与回归:每个锚框直接预测 “类别置信度” 和 “坐标偏移”;
- NMS:过滤重复预测框,输出最终检测结果;
- 优势:流程简化,无候选区域步骤,推理速度比 Two-Stage 快 10~100 倍,适合实时检测场景(如自动驾驶、视频监控)。
4. 关键后处理:NMS(非极大值抑制)
- 作用:去除同一物体的重复预测框,保留最优结果;
- 步骤:
- 设定置信度阈值(如 0.5),过滤掉低置信度预测框;
- 按置信度降序排列剩余候选框;
- 选取置信度最高的框 A 加入输出列表,计算 A 与其他框的 IoU,删除 IoU > 阈值(如 0.5)的框;
- 重复步骤 3,直到候选框列表为空,输出最终检测结果。