研零学习笔记
前言
博客的目录很有用,可以快速检索想要看的学习笔记,也可以直接把目录当缩写字典用。
希望论文部分能做成可以直接扔到组会周报上用的东西。
一、关键概念与缩写
1. IoU(Intersection over Union)
交并比,它衡量两个边框(或区域)重叠得有多好——也就是预测框与真实框的重合程度,是许多目标检测模型的核心指标之一。
IoU = 交集面积 ÷ 并集面积
具体到算法实现计算:
设预测框为\((x_1^{(p)},y_1^{(p)},x_2^{(p)},y_2^{(p)})\),真实框为\((x_1^{(g)},y_1^{(g)},x_2^{(g)},y_2^{(g)})\)。
则交集坐标:
交集和并集面积:
交并比IoU即为:
有些模型会使用IoU的改进版本,例如GIoU解决了当两个框不相交时IoU = 0,梯度无法提供有用方向的问题。GIoU在IoU基础上增加了“惩罚框未重叠的距离”,公式为:
其中\(C\)是包含预测框和真值框的最小外接矩形。
2. GT(Ground Truth)
3. O2O(One to One)& O2M(One to Many)
4. AP(Average Precision)
在目标检测任务中常用的评价指标是,用于衡量模型在不同阈值下的检测性能。AP 指标通常结合 精度(Precision) 和 召回率(Recall) 来计算:
表示模型预测为正的样本中,有多少是真正的正样本。
表示所有真实正样本中,有多少被模型正确预测。
AP 是 Precision-Recall 曲线下的面积(AUC),反映模型在不同置信度阈值下的整体性能:
其中 \(P(r)\) 表示在召回率 \(r\) 时的精度。AP 衡量模型在不同置信度阈值下精度和召回率的整体表现,值越大表示模型性能越好。
AP包含一些变体:
-
\(AP_{50}\) 与 \(AP_{75}\) 引入了IoU阈值:
- \(AP_{50}\):IoU ≥ 0.5 时算作 True Positive(TP),表示在较宽松匹配条件下的平均精度。
- \(AP_{75}\):IoU ≥ 0.75 时算作 TP,表示在严格匹配条件下的平均精度。
-
\(AP_{S}, AP_{M}, AP_{L}\)
这些指标用于衡量模型在不同目标尺寸上的性能:- \(AP_{S}\)(Small):小目标的 AP,COCO 定义面积 < \(32^2\) 像素
- \(AP_{M}\)(Medium):中等目标的 AP,面积在 \(32^2 \le \text{area} < 96^2\)
- \(AP_{L}\)(Large):大目标的 AP,面积 ≥ \(96^2\)
这种划分可以分析模型在不同尺度目标上的检测能力,通常小目标最难检测。
-
在 COCO 评测中,常用 mAP 指标,即 AP@[0.5:0.95],在 IoU 从 0.5 到 0.95(步长 0.05)之间取平均,全面衡量模型性能。
二、论文
1. DETR(DEtection TRansformer)
论文:End-to-End Object Detection with Transformers。
学习笔记搬了一些这篇博客的。
DETR 通过引入 Transformer ,将目标检测任务视为集合预测问题,首次实现了端到端的目标检测(整个检测流程从输入图像到最终预测框的生成,完全由一个可微的神经网络自动完成,不需要任何手工启发式步骤),无需NMS后处理和anchor设计(相较于 YOLO ),显著简化了模型训练和部署流程。论文的核心贡献包括设计了基于二分图匹配的目标函数,确保输出的独特性,并通过 Transformer 的 encoder-decoder 架构实现了高效的目标检测。

如上图所示, DETR 框架的大致流程为:
- CNN 提取特征(其中 Backbone 可采用 ResNet50 或 ResNet101 ,相应的模型分别称为 DETR 和 DETR-R101 ;
- 特征拉直,送到 encoder-decoder 中,encoder 进一步学习全局信息,为接下来的 decoder 最后出预测框做铺垫;
- decoder 生成框的输出,当你有了图像特征之后,还会有一个 object query (限定了共有多少输出框,本方法中输出框限定为 \(N\) 个, \(N\) 需要远大于目标数量,文中取 \(N=100\) ),通过 query 和特征在 decoder 里进行自注意力操作,得到输出的框;
- loss 计算,通过二分图匹配,计算 100个 预测的框和 2 个 GT 框的 matching loss ,决定100个预测框哪两个是独一无二对应到红黄色的 GT 框,匹配的框去算目标检测的 loss 。
上述的是 DETR 训练的步骤,而在 DETR 的推理过程中,步骤1、2、3一致,步骤4不需要,直接在最后的输出上用一个阈值卡一个输出的置信度,置信度比较大保留。
DETR 的主要特色在于步骤4,它将目标检测视为一个 “集合预测” 问题,通过二分图匹配得到一个可训练的 Loss 。具体而言:
-
令 \(\hat{y}=\{\hat{y}_i\}_{i=1}^N\) 为模型输出的 \(N\) 个预测(每个预测均包含类别概率分布与归一化边框,即 \(\hat{y}_i=(\hat{p}_i,\hat{b}_i)\) ,其中 \(\hat{b}_i\in[0,1]^4\) );
-
令 \(y=\{y_j\}\) 为该图的GT集合,为了方便O2O匹配,将GT集用特殊类(∅)填充至长度 \(N\) ,预测匹配到特殊类即表示该预测被废弃不用,不出现在最终预测输出内;
-
构建代价矩阵,对每一对 \((y_i,\hat{y}_j)\) 计算配对代价 \(\mathcal{L}_{\text{match}}(y_i,\hat{y}_j)\);
-
现在我们的目标是寻找一个配对方案使得总体配对代价最小,即
\[\hat{\sigma} = \arg\min_{\sigma\in S_N} \sum_{i=1}^{N} \mathcal{L}_{\text{match}}(y_i, \hat{y}_{\sigma(i)}) \]显然这是一个一对一指派问题,可以用匈牙利算法求解,时间复杂度\(O(n^3)\)(匈牙利求解指派问题可以看这篇博客)。
上面的式子中
\[\mathcal{L}_{\text{match}}(y_i,\hat{y}_j) = -\mathbf{1}_{\{c_i\neq \varnothing\}}\,\hat{p}_j(c_i) + \mathbf{1}_{\{c_i\neq \varnothing\}}\,\mathcal{L}_{\text{box}}(b_i,\hat{b}_j) \\ \mathcal{L}_{\text{box}}(b,\hat{b}) =\lambda_{\text{iou}}\cdot L_{\text{GIoU}}(b,\hat{b})+ \lambda_{L1}\cdot \|b-\hat b\|_1 \]即一个匹配造成的代价包括分类代价和框代价\(\mathcal{L}_{\text{box}}(b,\hat{b})\)(显然这和一个预测的组成是对应的),其中框代价又使用了 GIoU 和 L1 的线性组合。
-
得到最优匹配 \(\hat\sigma\) 后,我们就可以计算用于反向传播的损失了(论文称为 Hungarian loss):
\[\mathcal{L}_{\text{Hungarian}}(y,\hat{y}) = \sum_{i=1}^N \Big[ -\log \hat{p}_{\hat\sigma(i)}(c_i)+ \mathbf{1}_{\{c_i\neq\varnothing\}}\,\mathcal{L}_{\text{box}}(b_i,\hat{b}_{\hat\sigma(i)}) \Big] \]

论文训练得到的模型在COCO数据集上效果较好,但是在小目标检测上仍面临挑战。
2. DEIM(DETR with Improved Matching for Fast Convergence)
论文:DEIM: DETR with Improved Matching for Fast Convergence。
DETR 存在两个主要问题:
- O2O 匹配机制为每个目标仅分配一个正样本,极大地限制了正样本数量;
- DETR 采用少量(\(N=100\))随机初始化的查询。这些查询与目标缺乏空间对齐,导致训练中出现大量低质量匹配,即匹配框与目标的交并比 IoU 较低但置信度分数较高的情况。
这两个问题导致 DETR 仍存在监督稀疏、收敛速度缓慢的缺陷。
DEIM 提出了一套训练框架,通过尝试解决上述两个问题显著加快了 DETR 系列在实时检测任务上的收敛速度并提升最终精度。
-
针对问题一,DEIM 提出了 Dense O2O 策略,该策略保留了 O2O 的一对一匹配结构,但通过一些简单的手段增加了每张图像的目标数,实现了更密集的监督。例如如下图所示, DEIM 方法将原始图像复制为四个象限,并将它们组合成一张合成图像,同时保持原始图像尺寸。这将目标数从1增加到4,实现了与O2M相当的监督水平,同时保持了匹配结构不变,且无需增加复杂性和计算开销。

具体到实验中,DEIM 采用了两种数据增强手段,分别是如上图所示的图像拼接方法(Mosaic)和把两张图以某比例叠加的方法(Mixup),两种方法均有效增加了正样本数量。
-
针对问题二,DEIM 提出了一种新的损失:匹配感知损失(Matchability-Aware Loss, MAL)。
DETR 使用的损失计算方法是面向 IoU 的 VariFocal Loss (VFL),在 DETR 中,它可表示为:
\[\text{VFL}(p, q, y) = \begin{cases} - q ( q \log(p) + (1 - q) \log(1 - p) ), & q > 0 \\ - \alpha p^\gamma \log(1 - p), & q = 0 \end{cases} \]其中, \(q\) 表示预测边界框与其目标框之间的 IoU 。对于前景样本(\(q>0\)),目标标签设为 \(q\) ;对于背景样本(\(q=0\)),目标标签为0。
然而, VFL 在优化低质量匹配时存在两个关键局限性:
- 低质量匹配: VFL 主要关注高质量匹配(高 IoU )。对于低质量匹配(低 IoU ),损失仍然较小,模型无法优化低质量边界框的预测(如下图所示);
- 负样本: VFL 将无重叠的匹配视为负样本,这减少了正样本数量,限制了有效训练。

为解决这些问题,DEIM 提出了 MAL ,这种损失将匹配质量直接纳入损失函数,使其对低质量匹配更敏感。 MAL 的公式为:
\[\text{MAL}(p, q, y) = \begin{cases} -q^\gamma \log(p) - (1 - q^\gamma)\log(1 - p), & y = 1 \\ -p^\gamma \log(1 - p), & y = 0 \end{cases} \]与 VFL 相比, MAL 将 IoU 权重项从 \(q\) 调整到 \(q^\gamma\),这样在低 IoU 的样本上 MAL 相比 VFL 会给出更大的梯度,加快训练效率;而在高 IoU 区域,MAL 与 VFL 表现相似,不影响高质量匹配的性能。


浙公网安备 33010602011771号