LEARNING LOG

第 1 课:目标检测全景综述与科研学习指南

  • 目标检测
  • IoU推导
  • 计算机视觉
  • 深度学习

[!info] 知识库导航 [[00_目标检测知识库总览_MOC|🏠 返回知识库总览 (MOC)]] | ⬅️ [[Lesson00_Curriculum_Summary_and_Open_Problems|导论 B]] | ➡️ [[Lesson02_CNN_Backbones|第02讲:CNN 骨干网络]] | 💻 [[iou_and_nms.py|配套代码:IoU与NMS]]

学习要点:建立目标检测全局技术全景,攻克边界框坐标体系、三大常用标注格式规范(COCO/VOC/YOLO)、交并比(IoU)数学矩阵广播推导与学术评估基准。


0.0 参数与符号对照字典

在目标检测基础与评估体系中,以下术语与符号是阅读经典论文与开源代码的基础字典:

符号 / 术语英文全称物理机理与代数定义工程设计直觉
Bbox\mathbf{Bbox}Bounding Box(边界框)紧密贴合目标空间外接轮廓的矩形包围框,参数化空间连续坐标目标的最小空间包络界限。
xyxy\mathbf{xyxy}Corner Coordinates(角点坐标)由左上角顶点 (x1,y1)(x_1, y_1) 与右下角顶点 (x2,y2)(x_2, y_2) 构成的连续四元组空间对角两点约束,求交运算极快。
cxcywh\mathbf{cxcywh}Center Coordinates(中心宽高)由中心点空间坐标 (cx,cy)(c_x, c_y) 与长宽尺寸 (w,h)(w, h) 构成的参数化向量符合尺度放缩与位置偏移解耦回归。
IoU\mathbf{IoU}Intersection over Union预测框与标注框交集几何面积与并集几何面积的比值,取值区间 [0,1][0, 1]空间包络重叠度的一致性度量。
NMS\mathbf{NMS}Non-Maximum Suppression基于置信度降序排序,贪心抑制空间重叠度高于阈值的冗余密集预测框密集重叠预测流的去重与极值提取。
Precision\mathbf{Precision}查准率 / 精确率检测器预测的所有正样本中标注目标所占的比例:TPTP+FP\frac{TP}{TP + FP}检出目标的纯度(虚警率的反面)。
Recall\mathbf{Recall}查全率 / 召回率标注数据集中所有标注目标被模型成功召回的比例:TPTP+FN\frac{TP}{TP + FN}标注目标的覆盖率(漏检率的反面)。
mAP\mathbf{mAP}mean Average Precision多分类任务下所有类别平均精确率(Average Precision)的算术均值目标检测综合定位与分类能力的核心度量。

0.1 核心机制与设计精要速览

1. 任务本质与核心挑战(设计动机)

  • 双任务联合优化:目标检测要求网络在单次前向推理过程中同时完成离散的类别识别概率分布预测(What)与连续的空间坐标回归(Where)。
  • 空间尺度剧烈跨度(Scale Invariance):自然场景图像中目标尺寸跨度可达数千倍(从几像素的远景无人机/微小交通标志到充满画面的卡车),检测器必须在有限感受野内兼顾特大目标与极小目标的精准定位。

2. 边界框几何表征机制(表征形式权衡)

  • 角点表示法(Corner Format / xyxy):
    • 机制:以左上角与右下角对角顶点坐标 [x1,y1,x2,y2][x_1, y_1, x_2, y_2] 表达。
    • 优势:计算多框求交面积(Intersection)时可直接使用 min⁡/max⁡\min/\max 操作,在 GPU 上向量化并行极快。
  • 中心点宽高表示法(Center Format / cxcywh):
    • 机制:以空间几何中心与矩形尺寸 [cx,cy,w,h][c_x, c_y, w, h] 表达。
    • 优势:便于神经网络以先验锚点(Anchor)或特征网格点为基准回归连续位移偏差(Offset)与尺度放缩比(Scale),更利于损失函数梯度规范化。

3. 几何度量与重叠抑制机制(评估与后处理)

  • 交并比(IoU Metric):
    • 机制:IoU=∣A∩B∣∣A∪B∣\text{IoU} = \frac{|A \cap B|}{|A \cup B|},提供尺度不变性的重合度量。
    • 局限:两框无交集时 IoU 恒为 0 导致梯度消失,推动了后续 GIoU、DIoU、CIoU、Wise-IoU 等连续惩罚项的演进。
  • 非极大值抑制(NMS Post-processing):
    • 机制:按分类置信度得分降序排序,贪心剔除与当前最高分预测框 IoU 高于抑制阈值的候选框。
    • 收益:从数以万计的密集重叠候选区中滤除冗余虚警,输出单一纯净边界框。

1. 目标检测的任务边界与视觉全景定位

在现代计算机视觉任务图谱中,目标检测处于承上启下的核心枢纽地位:

+-----------------------------------------------------------------------------+
| 图像分类 (Classification)   | 单一标签预测:输出图像所属类别与置信度        |
| 目标检测 (Object Detection)   | 水平边界框定位 + 分类:输出类别与 [x1,y1,x2,y2] |
| 旋转检测 (Oriented Bounding) | 定向边界框定位:输出类别与 [cx,cy,w,h,theta]     |
| 实例分割 (Instance Segment)   | 目标边界框 + 目标级像素二值掩码 (Instance Mask) |
| 全景分割 (Panoptic Segment)   | 前景目标实例掩码 + 背景语义纹理无缝全像素解析 |
+-----------------------------------------------------------------------------+

1.1 核心难点

  1. 分类与回归的梯度失衡:分类网络采用 Cross-Entropy 或 Focal Loss(对预测概率求导),边界框回归采用 L1/L2 或 IoU-based Loss(对空间几何参数求导)。两者的量纲差异与梯度动态范围差异直接影响多任务损失权重的配比。
  2. 极度不平衡的正负样本分布(Class Imbalance):滑窗或密集 Anchor 在整图产生 104∼10510^4 \sim 10^5 个候选框,而真正的标注目标通常只有数个到数十个,背景负样本占比超 99%,极易淹没前景梯度的反向传播。

2. 边界框坐标体系与三大标注标准全解

在工程应用与学术研究中,数据管道的第一步是统一坐标格式。常见的标注标准涵盖 MS COCO、Pascal VOC 与 YOLO 格式。

2.1 三大标准数据格式规范

+-------------------------------------------------------------------------+
| 数据集格式   | 坐标表示形式               | 空间量纲   | 存储组织载体           |
|-------------+---------------------------+-----------+------------------------|
| MS COCO     | [x_min, y_min, width, h]  | 绝对像素值 | 集中式单个 JSON 文件   |
| Pascal VOC  | [x_min, y_min, x_max, y_max]| 绝对像素值 | 每张图像对应单个 XML 文件|
| YOLO 系列   | [c_x, c_y, width, height] | [0, 1] 归一化 | 每张图像对应单个 TXT 文件 |
+-------------------------------------------------------------------------+

1. MS COCO 集中式 JSON Schema

COCO 标注格式将所有图像元数据与标注信息集中在一个 JSON 中:

{
  "images": [
    {"id": 1, "file_name": "000001.jpg", "width": 640, "height": 480}
  ],
  "annotations": [
    {
      "id": 101,
      "image_id": 1,
      "category_id": 3,
      "bbox": [100.0, 150.0, 200.0, 120.0], // [x_top_left, y_top_left, width, height]
      "area": 24000.0,
      "iscrowd": 0
    }
  ],
  "categories": [
    {"id": 3, "name": "car", "supercategory": "vehicle"}
  ]
}

2. Pascal VOC XML 树状结构

<annotation>
  <filename>000001.jpg</filename>
  <size>
    <width>640</width>
    <height>480</height>
    <depth>3</depth>
  </size>
  <object>
    <name>car</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <difficult>0</difficult>
    <bndbox>
      <xmin>100</xmin>
      <ymin>150</ymin>
      <xmax>300</xmax>
      <ymax>270</ymax>
    </bndbox>
  </object>
</annotation>

3. YOLO 归一化 TXT 格式

每张图像对应一个同名 .txt 文件,每行代表一个目标:

# <category_index> <norm_cx> <norm_cy> <norm_w> <norm_h>
2 0.312500 0.437500 0.312500 0.250000

2.2 坐标转换数学映射公式

设输入图像绝对分辨率为宽度 WW 与高度 HH:

  1. COCO [x,y,w,h][x, y, w, h] 转角点坐标 [x1,y1,x2,y2][x_1, y_1, x_2, y_2]:

    x1=x,y1=y,x2=x+w,y2=y+hx_1 = x, \quad y_1 = y, \quad x_2 = x + w, \quad y_2 = y + h
  2. 角点坐标 [x1,y1,x2,y2][x_1, y_1, x_2, y_2] 转 YOLO 归一化 [cx,cy,wnorm,hnorm][c_x, c_y, w_{\text{norm}}, h_{\text{norm}}]:

    cx=x1+x22W,cy=y1+y22H,wnorm=x2−x1W,hnorm=y2−y1Hc_x = \frac{x_1 + x_2}{2W}, \quad c_y = \frac{y_1 + y_2}{2H}, \quad w_{\text{norm}} = \frac{x_2 - x_1}{W}, \quad h_{\text{norm}} = \frac{y_2 - y_1}{H}
  3. YOLO 归一化转角点坐标 [x1,y1,x2,y2][x_1, y_1, x_2, y_2]:

x1=(cx−wnorm2)×W,y1=(cy−hnorm2)×Hx2=(cx+wnorm2)×W,y2=(cy+hnorm2)×H\begin{aligned} x_1 &= \left(c_x - \frac{w_{\text{norm}}}{2}\right) \times W, \quad y_1 = \left(c_y - \frac{h_{\text{norm}}}{2}\right) \times H \\ x_2 &= \left(c_x + \frac{w_{\text{norm}}}{2}\right) \times W, \quad y_2 = \left(c_y + \frac{h_{\text{norm}}}{2}\right) \times H \end{aligned}

3. 核心几何度量:IoU 数学推导与 GPU 张量广播计算

3.1 理论定义

IoU(A,B)=Area(A∩B)Area(A∪B)=Area(A∩B)Area(A)+Area(B)−Area(A∩B)\text{IoU}(A, B) = \frac{\text{Area}(A \cap B)}{\text{Area}(A \cup B)} = \frac{\text{Area}(A \cap B)}{\text{Area}(A) + \text{Area}(B) - \text{Area}(A \cap B)}

设预测框 A=[x1A,y1A,x2A,y2A]A = [x_1^A, y_1^A, x_2^A, y_2^A] 与标注框 B=[x1B,y1B,x2B,y2B]B = [x_1^B, y_1^B, x_2^B, y_2^B]:

  • 交集左上顶点:x1I=max⁡(x1A,x1B),y1I=max⁡(y1A,y1B)x_1^I = \max(x_1^A, x_1^B), \quad y_1^I = \max(y_1^A, y_1^B)
  • 交集右下顶点:x2I=min⁡(x2A,x2B),y2I=min⁡(y2A,y2B)x_2^I = \min(x_2^A, x_2^B), \quad y_2^I = \min(y_2^A, y_2^B)
  • 有效交集宽高:wI=max⁡(0,x2I−x1I),hI=max⁡(0,y2I−y1I)w_I = \max(0, x_2^I - x_1^I), \quad h_I = \max(0, y_2^I - y_1^I)
  • 交集面积:Area(A∩B)=wI×hI\text{Area}(A \cap B) = w_I \times h_I

3.2 高效成批(Pairwise)IoU 矩阵并行计算

在目标检测训练阶段,单张图像由密集网络输出 NN 个候选框(如 N=8400N = 8400),并存在 MM 个标注框(如 M=10M = 10)。若采用两重 Python 循环,计算时间会随 NN 和 MM 增长,训练效率会明显下降。

常见做法是利用 PyTorch 张量维度广播(Broadcasting) 机制构建批量计算算子:

import torch

def box_iou_pairwise(boxes1: torch.Tensor, boxes2: torch.Tensor) -> torch.Tensor:
    """
    计算两组矩形边界框之间的两两成对 IoU 矩阵。
    
    参数:
        boxes1: Tensor[N, 4], 格式为 [x1, y1, x2, y2]
        boxes2: Tensor[M, 4], 格式为 [x1, y1, x2, y2]
        
    返回:
        iou_matrix: Tensor[N, M], 每对框之间的交并比数值
    """
    # 1. 分别计算两组框自身的基础面积 [N] 与 [M]
    area1 = (boxes1[:, 2] - boxes1[:, 0]).clamp(min=0) * (boxes1[:, 3] - boxes1[:, 1]).clamp(min=0)
    area2 = (boxes2[:, 2] - boxes2[:, 0]).clamp(min=0) * (boxes2[:, 3] - boxes2[:, 1]).clamp(min=0)

    # 2. 利用广播机制扩展维度:[N, 1, 2] 与 [1, M, 2]
    # 计算交集区域的左上角与右下角坐标: 形状为 [N, M, 2]
    lt = torch.max(boxes1[:, None, :2], boxes2[None, :, :2])  # [N, M, 2]
    rb = torch.min(boxes1[:, None, 2:], boxes2[None, :, 2:])  # [N, M, 2]

    # 3. 计算交集有效宽高与面积: [N, M]
    wh = (rb - lt).clamp(min=0)  # [N, M, 2]
    inter = wh[:, :, 0] * wh[:, :, 1]  # [N, M]

    # 4. 计算并集面积并得出最终 IoU 矩阵: [N, M]
    union = area1[:, None] + area2[None, :] - inter
    iou = inter / union.clamp(min=1e-7)
    return iou

4. 目标检测学术评测协议与多尺度评估指标

4.1 Pascal VOC 与 MS COCO 评估标准对比

1. VOC 2007 的 11 点插值法(11-point Interpolation)

在召回率轴上采样 11 个离散点 R={0.0,0.1,0.2,…,1.0}R = \{0.0, 0.1, 0.2, \dots, 1.0\},计算每个点右侧的最大精确率并求均值:

AP11=111∑r∈Rmax⁡r~≥rp(r~)\text{AP}_{11} = \frac{1}{11} \sum_{r \in R} \max_{\tilde{r} \ge r} p(\tilde{r})

2. MS COCO 101 点连续插值法(All-point Interpolation)

在召回率轴上采样 101 个密集插值点(步长 0.01),有效消除曲线细小锯齿波动:

APCOCO=1101∑r∈{0.0,0.01,…,1.0}max⁡r~≥rp(r~)\text{AP}_{\text{COCO}} = \frac{1}{101} \sum_{r \in \{0.0, 0.01, \dots, 1.0\}} \max_{\tilde{r} \ge r} p(\tilde{r})

4.2 会议论文核心指标矩阵

会议论文学术论文强制要求报告完整的 MS COCO 六联指标:

  • mAP50\mathbf{\text{mAP}_{50}}:IoU 匹配阈值固定为 0.50 时的全类别平均 AP(经典宽松定位指标)。
  • mAP75\mathbf{\text{mAP}_{75}}:IoU 匹配阈值固定为 0.75 时的全类别平均 AP(严格高精度几何定位指标)。
  • mAP50:95\mathbf{\text{mAP}_{50:95}}(或简称 AP\mathbf{\text{AP}}):IoU 阈值从 0.50 到 0.95 以 0.05 为步长取 10 个梯度点的算术平均值,综合考察检测器在不同容差要求下的鲁棒性。
  • APS\mathbf{\text{AP}_S}:小目标(像素几何面积 area<322\text{area} < 32^2 像素)检测平均精度。
  • APM\mathbf{\text{AP}_M}:中等目标(322≤area≤96232^2 \le \text{area} \le 96^2 像素)检测平均精度。
  • APL\mathbf{\text{AP}_L}:大目标(area>962\text{area} > 96^2 像素)检测平均精度。

5. 科研复现与学术规范纪律

  1. 基线随机性固化(Seed Locking):实验中必须同时锁定 Python 原生 random.seed、NumPy np.random.seed 以及 PyTorch torch.manual_seed 与 torch.cuda.manual_seed_all,并配置 cudnn.deterministic = True,避免浮点非确定性引发伪涨点。
  2. 消融实验对齐(Identical Training Budget):严禁在改动模型结构的同时微调学习率或增加 Epoch 数。所有对比必须保持相同的优化器、数据增强策略与硬件 batch size。
  3. 指标防伪:在最终论文投稿前,务必使用官方评测脚本(如 pycocotools)独立运行生成 JSON 评估结果,严禁手动修改评估日志。

6. 本地运行记录

以下截图来自本机 PyTorch 环境中的当前轮执行记录;本课对应模块均为 PASS。

IoU 与 NMS

IoU 梯度模拟