计算机视觉-11:目标检测
图像分类把整张图压缩成一个类别,默认“图中最重要的内容只有一个”。一旦需要回答物体在哪里,这个固定长度的输出就不够了:语义分割要在每个像素上分类,目标检测要输出数量不定的“类别—边界框”集合,实例分割还要把同类物体彼此分开。任务的演进实际是在逐步保留分类过程中被丢弃的空间信息,同时处理输出规模从固定到可变带来的匹配问题。
课程先从像素级的语义分割开始,再逐步扩展到检测、实例分割和模型可视化。几类方法共享同一个矛盾:识别物体需要足够大的感受野,精确定位又需要保留高分辨率细节,网络结构通常是在这两者之间分配计算。
语义分割
语义分割的输入是一张图像,输出与输入具有相同的空间分辨率。若类别集合为草地、天空、动物等,模型要为每个像素预测其中一个类别。单个像素的颜色往往无法决定语义,例如同样的棕色可能属于动物、土地或树干,因此预测一个位置时还必须观察周围上下文。早期的滑窗方法会截取每个像素周围的图像块,用 CNN 分类中心像素;图像块足够大才能看清语境,相邻图像块却几乎完全重叠,每移动一个像素就重新计算相同的边缘和纹理,计算量主要浪费在重复工作上。
全卷积网络将整张图像一次送入卷积网络,同时生成全部位置的预测。卷积天然会在各位置共享权重,滑窗中重复出现的图像区域只需计算一次;原来“对许多图块分别分类”的过程因此变成一张特征图上的密集分类。若网络不下采样,输入 可先变为特征图 ,再由 卷积得到类别得分 。这个 卷积在每个位置把 维特征映射成 个类别分数,空间尺寸保持不变。
训练时通常对每个像素施加交叉熵。设位置 的真实类别为 ,模型对该类别给出的概率为 ,则
这个损失把整张图看成 个共享特征提取器的分类样本,每一项只惩罚真实类别的低概率。若背景占据九成像素,平均以后背景项会主导梯度,模型即使忽略小物体也能取得较低损失;类别权重、难例挖掘或 Dice 类损失会提高少数类和区域重叠的影响,使优化目标更接近实际关心的物体区域。
始终维持原始分辨率会让深层网络的每一层都处理 个位置,计算和显存很快失控。全卷积网络通常在编码端用池化或步长卷积降低分辨率:一个深层特征单元由更大的原图区域共同决定,因而更容易判断“这里属于什么物体”。代价是相邻像素被合并后,网络逐渐忘记边界究竟落在哪一列像素上。解码端再把低分辨率语义特征上采样,目标是在可承受的计算量下恢复逐像素预测。
解码端的上采样可以由固定规则完成。最近邻上采样复制输入值,只扩大网格而不产生新的边界信息;bed of nails 把输入值放到间隔位置、其余位置填零,留给后续卷积学习如何填补空隙。若下采样使用最大池化,还可以记录每个窗口中最大值的位置,并在上采样时将值放回原位置,这就是 max unpooling。它保留了“最强响应来自哪里”,但没有保存池化窗口内其余数值,因此仍不是真正的逆运算。
转置卷积把“如何填补高分辨率网格”也交给数据学习。普通步长卷积中,一个输出汇总一片输入;转置卷积让每个低分辨率输入值在高分辨率输出上铺开一个带权卷积核,不同输入铺到同一位置的贡献相加。对于核大小为 、步长为 、填充为 的例子, 输入可生成 输出。学习到的核能够根据任务恢复更合适的局部形状,不过核大小与步长配合不当会使不同位置被覆盖的次数不均,产生棋盘格伪影。
从矩阵角度看,普通卷积可表示为稀疏矩阵与输入向量相乘,转置卷积就是乘以该矩阵的转置。它得名于这个线性代数关系,并不表示对输入做逆运算。
U-Net 将下采样和上采样组织成对称的编码器—解码器,并在相同分辨率之间建立跳跃连接。深层特征回答“这是哪类物体”,浅层特征保存“边缘具体在哪里”;解码器把两者拼接后再卷积,便不必仅凭已经压缩的特征猜测边界。这样的连接也给梯度提供了较短路径,标注较少时更容易训练出稳定的定位能力。
原始 U-Net 面向标注稀缺的医学图像,训练中使用较强的形变增强,并通过 overlap-tile 方式处理大图。它的核心价值不只在于结构对称,还在于跳跃连接为解码器补回边缘和局部位置;若只依赖最深层特征,上采样只能恢复尺寸,难以凭空恢复下采样时丢失的边界。

目标检测
当图中只有一个目标时,单目标定位可以把分类与定位并排放在一个固定输出中:一支输出类别分数,用 Softmax 损失训练;另一支回归边界框 ,用 损失与真实框比较。多目标场景的困难不只多了几个坐标,目标数量本身也未知;若强行输出固定数量的框,还要说明每个槽位应该负责哪个物体。早期检测器因此先穷举大量位置、尺度和宽高比,再把问题转回“这个候选窗口是什么或是否为背景”,但逐个裁剪并运行 CNN 会使计算迅速失控。
判断一个候选框与真实目标是否对应,需要一个对物体尺寸相对公平的重叠尺度。绝对交集面积会偏向大物体,坐标距离又不能反映形状重合,因此通常使用交并比:
,完全重合为 1,互不相交为 0,分母中的并集使同样比例的错位在大小目标上具有可比性。它可用来给候选框分配正负标签,也用于评价预测是否命中目标;但两个不相交的框 IoU 都为 0,无法告诉优化器应向哪个方向移动,实际框回归因而常使用 Smooth-、GIoU 等可提供更连续梯度的损失。训练损失负责产生梯度,mAP 统计不同置信度和 IoU 阈值下的整体检测质量,二者承担的角色不能互换。
早期方法用候选区域把几乎无限的可能边界框压缩为少量更像物体的区域,再把昂贵的识别计算集中于这些位置。Selective Search 根据颜色、纹理和连通性逐步合并区域,可在 CPU 上数秒内产生约两千个候选框;它提高了召回率,却并不知道后续任务究竟要识别什么。建立在它之上的 R-CNN 分为三步:
- 由候选区域算法从输入图像中生成约两千个 RoI。
- 将每个 RoI 变形到固定大小,例如 ,分别送入在 ImageNet 上预训练的卷积网络。
- 用 SVM 对区域特征分类,并为每个区域回归四个边界框校正量 。
R-CNN 的瓶颈很明显:同一张图像的约两千个区域需要独立通过卷积网络,底层特征被重复计算。
Fast R-CNN 发现候选区域虽不同,它们依赖的底层边缘和纹理来自同一张图,于是把卷积计算移到裁剪之前。整张图只经过一次骨干网络,每个候选区域改在共享特征图上裁剪并调整到固定大小,再分别预测类别和边界框偏移量。这样保留了“逐区域判断”的灵活输出,又把最昂贵的卷积从约两千次降为一次;剩余瓶颈是候选框仍由慢且不可学习的外部算法生成。
与 R-CNN 分阶段训练 SVM 和框回归器不同,Fast R-CNN 以多任务损失联合训练区域分类与定位:
其中 表示背景,指示项 会关闭背景区域的框损失,因为背景没有唯一的“正确边界框”可供回归; 则平衡类别与坐标两种量纲不同的梯度。分类头与框回归头共享图像级特征,网络学到的特征需要同时支持辨认和定位,检测训练由此更接近端到端流程。
区域提议网络(RPN)进一步把候选框生成也交给神经网络。直接从连续坐标空间凭空生成任意框不易优化,RPN 先在特征图每个位置放置若干锚框,把检测改写为“这个参考框像不像物体,以及还要移动和缩放多少”。锚框给回归提供局部坐标系,也让不同位置共享同一套预测头;代价是尺度、长宽比和正负样本阈值需要预先设计。
若特征图为 ,每个位置放置 个不同尺度或长宽比的锚框,输出便包含 个 objectness 分数和 个边界框变换。objectness 只回答“是否存在某类物体”,暂不承担细分类,使第一阶段可以用一套通用候选框服务所有类别;排序后保留约 300 个高分框,把第二阶段的计算集中在更可能含有目标的区域。
锚框 到目标框 的常见编码为
用锚框宽高归一化平移,使同样比例的位移对大小物体尺度一致; 回归宽高比值的对数,将乘法缩放变成可正可负的加法偏移。训练时根据锚框与真实框的 IoU 选取正负样本,网络会在同一目标附近产生许多相似高分框。推理时先解码偏移量,再执行 NMS:选择当前最高分框,并删除与它 IoU 超过阈值的其余框,循环直到候选为空。它把“多个参考框看到了同一个物体”压缩成一次输出,阈值过低会误删相邻物体,过高则会留下重复检测。Faster R-CNN 用共享骨干的 RPN 取代 Selective Search,依次消除了重复卷积和外部候选算法,但两阶段结构仍以较多逐区域计算换取更精细的分类与定位。
YOLO、SSD 和 RetinaNet 等单阶段检测器省去显式的第二阶段,让密集特征图上的每个位置直接预测类别和框。所有位置可用规则张量一次并行计算,因而适合低延迟场景;同时,大多数位置都是背景,模型失去了第二阶段“先筛掉简单背景”的保护,训练更容易被海量易负样本淹没。它们通常预测:
- 每个基础框到最终框的变换 与置信度;
- 与物体类别有关的分数;具体参数化随模型而异。
例如网格为 、每格有 个基础框、类别数为 时,输出可写为 。这种结构与 RPN 相似,但预测是类别相关的。YOLO 对每个框输出物体概率、 个边界框以及类别概率,再从大量不同置信度的预测框中给出检测结果。
不同单阶段模型对类别的处理并不相同:YOLOv1 由目标中心所在的网格负责预测条件类别概率,SSD 使用包含背景的 类分类,RetinaNet 则对每类使用 sigmoid。密集预测会产生数量悬殊的前景与背景样本,RetinaNet 的 Focal Loss 通过降低易分类样本的权重缓解这种不平衡:
当样本已被高置信度正确分类时, 很小,这个本来数量庞大的易样本对总梯度的贡献便被压低; 时退化为普通交叉熵, 越大,训练越集中于难例,过大也可能忽略仍有价值的普通样本。 进一步平衡前景与背景类别,使单阶段检测器无需真正删除负样本也能改变有效训练预算。

锚框和 NMS 都在弥补同一个结构性问题:密集预测没有规定哪个位置应对哪个物体负责。DETR 改为直接预测一个无序集合,输入图像先由 CNN 提取特征,Transformer 编码器—解码器输出固定上限数量的“类别—边界框”结果,因此不需要锚框坐标系,也不必手工选择 NMS 阈值。
卷积特征加入位置编码并展平后,解码器用固定数量的可学习 object query 读取整幅图像,每个 query 可以理解为一个待填写的预测槽位,数量只需大于图中可能出现的最大目标数。槽位本身没有天然顺序,若直接逐项计算损失,同一个目标可能被多个槽位重复认领;匈牙利算法依据类别误差、 框误差和 GIoU 找到预测与真值的一对一最低代价匹配,未匹配 query 则学习“无物体”。唯一匹配从训练目标中消除了重复预测,原版 DETR 因而无需 NMS;不过 query 要通过全局注意力从头学会空间定位,缺少锚框的局部先验,收敛较慢且早期版本对小目标较弱。

实例分割要求识别同类的不同物体,并分别给出它们的像素掩码。Mask R-CNN 在 Faster R-CNN 的候选区域分支上增加小型掩码网络:每个 RoI 经 RoI Align 后得到区域特征,原有分支输出 个分类分数和每类 个框坐标,掩码分支则为每个类别预测一个 的二值掩码。相同的区域级表示也可以用于姿态预测。
完整训练目标写为
三项损失让共享 RoI 特征分别学习“是什么、框在哪里、轮廓是什么”。掩码头为每个类别保留独立输出通道,训练时只对真实类别对应通道计算逐像素二元交叉熵;类别由分类头决定,掩码头便可专注于形状,而不必在每个像素再次进行类别竞争。像素掩码对一两个像素的偏移也很敏感,因此 RoI Align 避免坐标取整造成的错位,对小物体和边缘尤其重要。

模型理解
线性分类器的权重可以直接作为图像查看,卷积网络第一层的卷积核也具有相同性质:它们的形状通常为 或 ,可直接观察到网络最初学习的颜色、边缘和纹理等模式。更深层的中间特征不再能够这样直接可视化。
显著图把反向传播从“怎样改参数能降低损失”换成“怎样改输入能提高类别分数”。先前向计算某个类别分数,再求它对输入像素的梯度;梯度就是类别分数在当前图像附近的一阶变化率。对梯度取绝对值并在 RGB 通道上取最大值,可把三个颜色方向合成空间热图,数值较大的位置表示微小改变该像素会更明显地改变预测。它衡量的是局部敏感性,梯度很小也可能来自饱和而非不重要。
类激活图(CAM)适用于最后一层卷积特征后接全局平均池化和全连接分类器的网络。设最后一层特征为 ,全局平均池化后的第 个特征为
若全连接层权重为 ,类别 的分数为
把求和顺序交换后,类别分数等于各空间位置贡献的平均,因此可将每个位置尚未做全局平均的加权和定义为类别 的激活图:
表示通道 对类别 的支持程度, 便把各通道在位置 的响应按这种支持程度相加。CAM 不需要额外反向传播,但这套推导依赖“最后卷积层—全局平均池化—线性分类器”的特定结构,不能直接搬到任意中间层。
Grad-CAM 用类别分数对特征的梯度代替固定的分类器权重,因此可选择任意一层。设激活为 , 表示通道 在该位置增加一点会怎样影响类别分数;把它在空间上平均,得到该通道对当前图像和类别的总体重要性:
最后以这些权重组合仍保留空间布局的特征通道,并用 ReLU 只保留会提高该类别分数的区域:

计算梯度时通常使用 Softmax 之前的类别 logit,避免概率归一化引入额外耦合。Grad-CAM 的空间分辨率受所选特征层限制,热区只能说明模型输出与这些区域相关,不能直接作为因果证据。课程随后提到也可以可视化 ViT 的特征,用于考察不同图像区域在视觉 Transformer 表示中的作用。
检测细节
检测头通常含全连接层或固定结构,无法直接接收大小各异的候选框。RoI Pool 将候选框从原图映射到特征图,再划成固定数量的子区域并分别做最大池化,从而把任意大小的区域变为例如 的固定表示。为了落到离散特征网格,它会对候选框和分箱边界取整;分类通常能容忍这种轻微偏移,像素级掩码却会把它放大成明显的边界误差。
RoI Align 保留连续坐标,在每个子区域的规则采样位置用周围四个网格值做双线性插值,再对采样值池化。这样输出尺寸仍然固定,区域边界却不会因整数取整而整体移动,Mask R-CNN 才能让预测掩码与原图轮廓精确对应。
Faster R-CNN 用 RPN 生成候选区域,并沿用 Fast R-CNN 的区域特征裁剪、分类和框回归。训练可联合优化四项损失:RPN 的前景/背景分类、RPN 的框回归、最终类别分类和最终框回归。
它属于两阶段检测器。第一阶段在全图上追求高召回率,宁可留下少量假阳性,也要尽量不漏掉物体;第二阶段只看筛选后的区域,用更充足的区域级计算提高类别与边界精度。这种“粗筛—精判”解释了 Faster R-CNN 通常比单阶段模型慢,却能在候选数适中时获得较高准确率。实际系统还需共同调节 NMS、锚框、RPN 正负采样和框回归参数化,任何一环召回不足都会让第二阶段无框可救。
检测器还受到骨干网络、元架构、图像尺寸和候选区域数等选择的影响。课件给出的经验结论是:Faster R-CNN 往往更慢但更准确,SSD 的速度更快但准确率较低,更大、更深的骨干网络通常更有效。
网络的中间特征也可通过反向传播理解。选取某个中间通道或某个神经元,例如 的 conv5 特征图中的一个值,计算该激活对输入像素的梯度。guided backprop 在每个 ReLU 中只反传正梯度,得到更易观察的结果。将能最大激活各神经元的图像块与这些反向传播结果并列,可帮助理解不同中间神经元偏好的视觉模式。

