3.7 检测、分割与视觉基础模型
分类回答「图里是什么」。但绝大多数真实视觉系统的输出不是一句话,而是一组带位置信息的结构:检测要给出「哪里有某个目标」的框,分割要给出「每个像素属于什么」。
从分类走到检测/分割,不只是「输出不同」,而是评测口径、损失函数、训练样本构造方式全都要换。这一节把这些换法逐项讲清,并给出一个反复出现的判断:检测与分割任务上,准确率是最没有信息量的指标之一。
3.7.1 四类任务的输出结构
给定输入图像 :
- 图像分类:输出单个类别 (或类别分布)。
- 目标检测(object detection):输出一个变长集合
- 语义分割(semantic segmentation):输出与输入同分辨率的标签图 ,不区分同一类别的不同个体。
- 实例分割(instance segmentation):输出若干实例,每个实例带一个像素级掩码 与类别 ——既分类别又分个体。
三处结构性变化:
- 输出长度可变:分类的输出维度固定( 个 logits),检测的输出个数随图片变化。这直接冲突于「固定维度张量」的框架设计,也引入了「模型该输出几个框」这个新问题。
- 排列不变性:若模型预测了 3 个框,把它们重排顺序不应改变损失值。因此检测损失不能简单地逐位置比较(那是把框当成有序列表),必须用集合匹配(在 DETR 里做成匈牙利匹配,3.7.5;在两阶段 / 单阶段里用锚框 + 指定正负样本的方式绕过)。
- 背景的压倒性比例:一张 224×224 图里,感兴趣目标的像素可能不到 。这意味着「所有位置都判背景」的模型能得到极高的像素准确率却毫无用处——这就是本节反复强调「不能只看准确率」的算术根源(例 3.7.1)。
从分类到「定位 + 分类」最朴素的做法是滑动窗口:用一个固定大小的窗口在图上逐位置、逐尺度滑动,每裁出一个窗口就送进 CNN 分类器判断「这里有没有目标」。它概念直白、易于实现,也正好把 3.2.5 的感受野与步幅用在实际任务上——3.10 节的 Lab 2 就从它起步。
它的低效是可以量化的: 图上用 窗口、步幅 4 滑动,位置数为 ;再叠加 5 个尺度,需要 次独立前向。而相邻窗口的输入几乎完全重叠——计算被浪费了。这正是「共享卷积特征」的动机:卷积本身已经在所有位置滑动,何必再手动循环(见 3.7.3)。
3.7.2 IoU、NMS 与 AP:三个必须能算的量
两个框 的交并比(intersection over union)为交面积除以并面积:
它同时是匹配判据(判定预测框是否算命中)、评估阈值(AP@0.5 等)与损失函数的基础(GIoU / DIoU / CIoU 等都是它的可微化改造)。
如果用「交面积 / 预测框面积」,那么把框做得极大就能让这个比值变高——退化成一个"我全都框住"的作弊策略。用交集除以并集则同时惩罚「漏」与「多」:大框覆盖了目标但超出很多时,并集变大、IoU 变小。所以 IoU 是一个同时约束位置与尺度的度量,这是它能当匹配与评估标准的原因。
它也有一个著名的缺陷:当两个框不相交时 IoU 恒为 0,梯度消失,无法指导「该往哪个方向靠近」。这直接催生了 GIoU(在并集运算之外再引入最小闭包框,使不重叠时仍有非零梯度)、DIoU(加入中心点距离)、CIoU(再加长宽比一致性)等改进,它们被广泛用作检测框回归损失。
检测器通常在同一个目标附近输出多个高度重叠的候选框。非极大值抑制(non-maximum suppression)的去重流程:
1. 把候选框按置信度 p 从高到低排序
2. 取当前最高分的框 B,保留它
3. 删除所有与 B 的 IoU > 阈值的剩余框(阈值常取 0.5;该阈值是超参数)
4. 重复 2-3,直到没有剩余框
直觉:同一目标附近的多个预测框互相 IoU 很高,而不同目标之间 IoU 通常较低。所以「高分框吃掉与自己高度重叠的低分框」就能去重。「非极大值抑制」这个名字就来自这个动作——只保留局部极大值。
代价一:阈值敏感。阈值太小(如 0.3)→ 相邻的不同目标(如人群中的两张脸)互相抑制,造成漏检;阈值太大(如 0.8)→ 同一目标的多个框都保留,造成重复框。这也解释了为什么「NMS 的阈值」经常出现在检测器的调参清单里。
代价二:它对遮挡场景不友好。两个真实目标若高度重叠(例如一个人被另一个人挡住大半),高分框会把真实存在的低分目标框抑制掉。Soft-NMS(用分数衰减代替硬删除)等改进就是为了缓解这一点。
补充:NMS 是不可微的、也是串行的,因此无法直接嵌进训练图、也不利于并行加速。DETR 一类方法的动机之一就是用集合预测的训练方式从根上避免需要 NMS(3.7.5)。
计算某个类别的 AP:
1. 收集该类别的所有预测(跨全部测试图),按置信度 p 从高到低排序
2. 逐个判定:与某个未被匹配的 GT 的 IoU ≥ 阈值 → TP(并按"一个 GT 只匹配一次"的规则占位),
否则 → FP;被漏掉的 GT 计入 FN
3. 维护累计 TP、FP,得到每个 rank 的 precision = TP/(TP+FP) 与 recall = TP/|GT|
4. 用插值法求 PR 曲线下的面积,得到 AP
两种常见口径:
- VOC 风格:11 点插值。在 recall = 0, 0.1, ..., 1.0 上取"右侧最大 precision"再平均。
- COCO 风格:101 点 recall + precision 单调包络(全点插值),并对 IoU 阈值
0.50:0.05:0.95 共 10 个阈值求平均。COCO 报告的 "AP"(常写作 mAP)即这 10 个阈值的均值;
AP50 / AP75 分别是 IoU=0.5 / 0.75 单阈值下的 AP。
mAP = 各类别 AP 的平均值。
(COCO 的阈值集合、101 点 recall 与 10 阈值平均的口径可直接对照官方评测代码 pycocotools;VOC 的 11 点插值表述以 VOC 官方评测说明为准——该处官方出处需核实。)
某类别共有 个真实目标(已标注、不重叠)。模型输出 12 个预测,按置信度从高到低排列,它们是否为 TP(与某个未被匹配的 GT 的 IoU ≥ 0.5)依次为:
(a)写出每个 rank 的 precision 与 recall;(b)用 11 点插值求 AP;(c)计算「把全部像素 / 全部位置都判为背景」这种平凡预测的准确率,并说明为什么准确率在这里没有信息量。
(a) 逐个 rank 累计 TP 与 FP:
| rank | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 判定 | TP | TP | FP | TP | FP | TP | TP | FP | TP | FP | TP | FP |
| 累计 TP | 1 | 2 | 2 | 3 | 3 | 4 | 5 | 5 | 6 | 6 | 7 | 7 |
| 累计 FP | 0 | 0 | 1 | 1 | 2 | 2 | 2 | 3 | 3 | 4 | 4 | 5 |
| precision | 1.000 | 1.000 | 0.667 | 0.750 | 0.600 | 0.667 | 0.714 | 0.625 | 0.667 | 0.600 | 0.636 | 0.583 |
| recall | 0.1 | 0.2 | 0.2 | 0.3 | 0.3 | 0.4 | 0.5 | 0.5 | 0.6 | 0.6 | 0.7 | 0.7 |
(b)11 点插值:在 处取「recall ≥ r 的所有样本中最大的 precision」(即右侧包络):
| 0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | 1.0 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 最大 precision | 1.000 | 1.000 | 1.000 | 0.750 | 0.714 | 0.714 | 0.667 | 0.636 | 0 | 0 | 0 |
换成 COCO 风格的做法(先做 precision 单调包络,再对 recall 积分)会得到约 ——同一组预测、两种口径差出 个百分点。这提醒我们:报告 AP 时必须说清口径,否则数字不可比较。
(c)平凡预测的准确率:设图中共有 100 万个候选位置,其中 10 个是真实目标。全部判背景的正确率
但它把 10 个真实目标全部漏掉了(recall ,precision 未定义/无意义)。所以在这种极端类不平衡下,准确率是一个几乎无信息的指标——必须看 precision / recall、AP,或者至少是平衡后的指标。这正是 Lab 2 里反复强调的判断(3.10 节)。
∎3.7.3 两阶段与单阶段检测
- 锚框(anchor box):在特征图的每个位置预先放置 个不同尺度 / 长宽比的参考框,模型不直接回归"目标在哪",而是回归相对锚框的偏移量。这解决了「没有参考时,坐标回归的目标值尺度差异过大」的优化问题。
- 两阶段(two-stage):先由区域提议(region proposal)产生候选框(可能有上千个),再对候选框做分类 + 位置精修。
- 单阶段(one-stage):不做独立的提议步骤,直接在密集位置上同时预测类别与框偏移。
有用的原因(优化视角):直接回归绝对坐标时,目标值可能横跨 0–400(像素),而且不同图片的尺度差异大——这让回归头的输出分布很宽,难收敛。改为回归相对锚框的偏移(如 、)后,目标值集中在 附近,且尺度被归一化,优化容易得多。这也是 3.1 归纳偏置思想在回归任务上的又一次应用:把先验结构(目标大致是什么形状尺度)写进参数化方式。
代价:锚框引入一堆超参数(尺度、长宽比、每位置个数、与真值匹配的 IoU 阈值)。它们与数据集强相关——在人群检测和遥感舰船检测上最优的锚框配置完全不同。而且密集锚框会产生极端的正负样本不平衡(背景锚框可能占 以上),这正是 focal loss 一类「让难样本主导梯度」的损失出现的背景。DETR 的动机之一就是彻底去掉锚框与 NMS(3.7.5)。
| 两阶段(R-CNN 系) | 单阶段(YOLO / SSD 系) | |
|---|---|---|
| 流程 | 提议 → 对候选框分类 + 回归 | 一次前向在密集位置直接预测 |
| 代表 | R-CNN(2014)、Fast R-CNN(2015)、Faster R-CNN(2015)、FPN(2016) | YOLO(2015)、SSD(2015) |
| 速度 | 相对慢 | 相对快,适合实时 |
| 早期精度 | 通常更高(两阶段对候选框做了二次精修) | 早期略逊,主因是正负样本极不平衡;focal loss 等设计大幅缩小差距 |
| 关键组件 | RoI pooling / RoIAlign、RPN、特征金字塔 | 多尺度特征图、锚框 / 无锚框(anchor-free)、focal loss |
演进的三条腿(值得记住的因果链):① R-CNN → Fast R-CNN:把「每个候选框单独跑一次 CNN」改成「整图跑一次 CNN,再在特征图上裁剪 RoI」,消除重复计算;② Fast → Faster:把「候选框生成」也做成可学习网络(RPN),从而端到端可训;③ FPN:把深层语义与浅层高分辨率通过自顶向下 + 横向连接融合,使小目标也能被检出——这是几乎所有现代检测器都会用的结构。
3.7.4 语义分割:FCN、U-Net、DeepLab
- 全卷积网络(FCN):把分类网络尾部的全连接层替换为卷积层,从而接受任意尺寸输入、输出与输入同分辨率的稠密预测图。中间的下采样丢掉的分辨率用上采样(转置卷积或插值)恢复。
- 编码器—解码器(encoder–decoder):编码器逐级下采样提取语义(感受野变大、分辨率变小),解码器逐级上采样恢复分辨率;并在对应尺度之间加跳连(skip connection),把编码器保留的高分辨率细节直接送给解码器。
下采样是不可逆的信息损失(3.2.7 已经说明转置卷积只能放大形状、不能恢复信息)。但语义分割要的恰恰是像素级边界,而边界信息主要保存在浅层高分辨率特征里。
于是出现了矛盾:想分类准确 → 需要深、需要大感受野 → 需要下采样 → 分辨率丢失 → 边界变糊。跳连就是调停这个矛盾的机制:让解码器同时看到「深层语义」与「浅层边界」。U-Net 把这个结构做成了对称的 U 形,成为医学影像分割的经典选择(医学图像数据少、边界精度要求高,这个结构恰好对上)。
空洞卷积是第三条路(3.2.2):不下采样,靠扩张核扩大感受野。它的优点是不损失分辨率,缺点是计算量大、且空洞采样会漏掉细结构。DeepLab 系列把空洞卷积与空间金字塔池化(在多个空洞率上并联)结合,同时捕捉多尺度上下文。
| 方法 | 核心机制 | 优点 | 代价 |
|---|---|---|---|
| FCN(2014,arXiv:1411.4038) | 全卷积 + 上采样 | 首个端到端像素级预测,概念奠基 | 上采样过粗,边界精度差 |
| U-Net(2015,arXiv:1505.04597) | 对称编解码 + 同尺度跳连 | 小数据也能训好;边界锐利;医学影像标配 | 参数量随跳连通道数上升;全分辨率计算量大 |
| DeepLabv3+(2018,arXiv:1802.02611) | 空洞卷积 + 多空洞率空间金字塔 + 编解码 | 多尺度上下文;不损失分辨率 | 空洞采样可能漏细结构;算力较高 |
评估指标:语义分割最常用的两个量是
其中 是预测为类 的像素集合、 是真值集合。mIoU 是更可信的主指标——因为它对每个类别单独计算再平均,不会被大量容易的背景像素主导(与 例 3.7.1 的教训一致)。
实例分割要求区分同一类别的不同个体,输出「每个实例的掩码 + 类别」。Mask R-CNN(2017,arXiv:1703.06870)在 Faster R-CNN 的检测分支旁并联一个掩码分支:对每个候选框输出一个 通道、 的掩码(每个类别一个通道),取对应类别通道后按候选框缩放回原尺寸。它同时完成检测与实例分割。
一个设计细节值得注意:掩码分支对每个类别独立输出一个掩码,而不是让掩码与类别联合建模。这样做的前提是分类与掩码解耦——让分类分支负责"是什么",掩码分支只负责"像素级的形状",两者各司其职。
另外 RoIAlign(把候选区域对齐采样到固定尺寸)替换了早期 RoIPool 的量化取整,避免了特征图与输入坐标之间的错位,这对像素级掩码的精度至关重要——这是「一个取整操作毁掉一个小目标的精度」这类问题的经典案例。
3.7.5 DETR:把检测变成集合预测
DETR(2020,arXiv:2005.12872)用一个 Transformer 编解码器直接输出 个预测( 固定且大于图中目标数的上限),每个预测是「类别 + 框」。训练时用匈牙利匹配(bipartite matching,即二分图最小代价完美匹配)把 个预测与真值集合一一配对,再对配对上的预测计算集合损失:
其中未匹配到真值的预测被指定为「无目标」(no object)类别。原文的表述是:使用二分匹配的集合损失(bipartite matching set-based loss)直接做端到端的目标检测。
关键在「一对一匹配」:匈牙利匹配强制每个真值只被一个预测负责(反之每个预测最多匹配一个真值)。于是模型在训练中学到的是「不要输出重复框」——重复框会在匹配阶段被指派为「无目标」,其损失会惩罚这种重复。NMS 的作用(去重)被训练目标本身吸收了,推理时不再需要。
代价(必须如实说明):① 收敛慢——一对一匹配提供的监督信号比「密集锚框 + 多对多匹配」稀疏得多(每个预测只在一个位置得到正监督),因此 DETR 需要显著更长的训练轮数;这一点由 Deformable DETR(2020,arXiv:2010.04159)明确批评并改进,后者用可变形注意力只关注少数采样点,同时提升收敛速度与小目标性能。② 小目标性能较弱——原始 DETR 的注意力在整图上做,高分辨率细节被稀释;后续工作大多恢复到多尺度特征图。
小目标为什么难: 图里一个 的小目标只占 的像素;如果 token 网格是 ,它可能不够一个 token。所以任何全局注意力 + 粗网格的架构天然对小目标不友好——这是 3.5 节与本节共同的结论。
3.7.6 视觉基础模型:SAM 的提示式分割
Segment Anything Model(SAM,2023,arXiv:2304.02643)把分割从「针对某一类目标训练一个模型」改成「给定一个提示,返回对应的掩码」。提示可以是:
- 一组点(前景 / 背景)、
- 一个框、
- 一个粗略掩码、
- 文本(在 SAM 的原始形式中主要由前三种构成;文本提示在后续的多模态工作中接入)。
模型在提示条件下输出掩码,因此同一个模型可以分割任意物体,无需针对新类别重新训练。原文报告的训练数据规模是 11M 图像上的 1B(十亿)个掩码,数据集名 SA-1B。SAM 2(2024,arXiv:2408.00714)把这套范式扩展到视频,用流式记忆处理时序。
之前的语义 / 实例分割模型都是封闭类别的:训练时见过哪几类,就只能分割哪几类。要加一个新类别,就得重新标注数据、重新训练。
SAM 的路线是:把「分割什么」从模型的参数里挪到用户的提示里。参数只负责「怎么把提示扩展成一个连贯的物体掩码」,因此它可以泛化到训练时没见过的物体。这与大语言模型的 few-shot 提示是同一个思想:把任务规格从训练阶段搬到推理阶段。
代价与边界(必须写清楚):① 掩码质量依赖提示质量——一个落在物体边缘的点可能给出完全不同的结果;② 它不输出语义标签——SAM 给的是"这块像素属于同一个物体",而不知道它是什么,因此实际系统通常把 SAM 当作「分割后端」,前面接一个检测器或分类器;③ 大模型(ViT-H 图像编码器约 6 亿参数量级)的推理成本不低;④ 训练数据的标注偏差会被继承(3.9 节)。
分类阶段(你需要知道"是什么"):骨干([3.4](sec34.md)–[3.5](sec35.md))+ 分类头
↓
定位阶段(你需要知道"在哪"):检测器([3.7.3](#sec-3.7.3))或 DETR 类集合预测([3.7.5](#sec-3.7.5))
↓
精细边界(你需要像素级精度):分割网络([3.7.4](#sec-3.7.4))或提示式模型(本小节)
↓
语义(你需要"这是什么"的标签):接一个分类器 / 多模态模型([3.8 节](sec38.md))
一个反复出现的工程判断:不要用一个大模型同时解决所有环节。真实系统通常是「多个专门组件的流水线」,因为每一环的失败模式不同、可独立调试、可独立替换。端到端单模型在研究与演示中很漂亮,但在需要可解释、可追责的生产系统里,分环节流水线往往更实用。
- 「检测看准确率就够了」:错得很彻底。背景位置占绝大多数,全判背景就能有极高的"准确率"却零召回(例 3.7.1)。检测/分割必须看 precision / recall / AP / mIoU。
- 「AP 与 mAP 是同一件事」:AP 是单个类别的 PR 曲线下面积;mAP 是各类别 AP 的平均。而在 COCO 口径下,官方报告里那个写作 "AP" 的量本身已经是「10 个 IoU 阈值上的平均」,所以「COCO 的 AP」同时跨类别与跨阈值两次平均。报数字时必须说明口径。
- 「NMS 是检测的必要步骤」:它是训练目标没做去重时的补救措施。DETR 用一对一匹配从训练层面消除重复,因此推理不需要 NMS。
- 「IoU 既能当损失也能当指标,所以可以直接拿来做梯度」:IoU 在框不重叠时恒为 0、梯度消失,必须用 GIoU / DIoU / CIoU 这类可微且有非零梯度的替代量。
- 「转置卷积能恢复下采样丢掉的信息」:不能(3.2.7)。分割的边界精度靠跳连 / 高分辨率特征保住,而不是靠上采样算子本身。
- 「SAM 是一个分割一切类别的模型」:它输出的是掩码(物体的边界)而不是语义标签。它不回答"这是什么",只回答"哪块像素属于同一个东西"——把它当成分类器是最常见的误用。
- 「数据模型越大就不需要标注了」:SAM 的 B 掩码本身就是海量标注(半自动标注流水线),它的能力建立在标注规模上,而不是"不需要标注"。
Q1 两个框 、,求它们的 IoU。(面积按坐标差计算,边界不算入。)
Q2 检测器在同一张脸上输出了 5 个框(IoU 互相都在 0.8 以上)。NMS 的阈值设 0.3 与设 0.8 分别会发生什么?请给出两种失败模式的名称。
Q3 用一句话解释:为什么「全部判背景」的 99.9% 准确率是无用的?在有 1 万个候选位置、10 个真实目标的检测任务里,请把这个数字算出来。
Q4 FCN 与 U-Net 的关键差别是什么?为什么医学影像分割偏爱 U-Net?
Q5 DETR 为什么不需要 NMS?它的主要代价是什么?
Q6 SAM 的「提示式分割」在工程上解决了什么问题?它的两条主要局限是什么?
参考要点
Q1 交:、 → 。面积各为 。并 。IoU 。
Q2 阈值 :这 5 个框互相 IoU 均 ,所以 NMS 只保留最高分的那一个 → 去重成功。但如果附近有另一张真实但低分的脸(与自己那张脸的框 IoU 也 ),它会被误删 → 漏检。阈值 :互抑制减弱,同一张脸可能保留多个框 → 重复框。所以两个失败模式分别是「阈值过小 → 漏检」与「阈值过大 → 重复框」。
Q3 准确率 ,但 recall (一个目标都没找到),precision 无意义。这类指标被大量负例"稀释"的现象是类不平衡的典型后果;检测任务应看 AP / precision-recall。
Q4 FCN 把全连接换成卷积、用上采样恢复分辨率,但没有跳连,因此高分辨率细节在下采样时已丢失、边界较粗;U-Net 用对称编解码 + 同尺度跳连把浅层细节直接送进解码器。医学影像(如 CT / MRI 的器官与病灶边界)通常数据量小、但对边界精度要求高,U-Net 的跳连正好同时满足「小数据可训」与「边界锐利」。
Q5 因为训练用一对一匈牙利匹配:每个真值只被一个预测负责,重复预测会被指派为"无目标"并受到损失惩罚,因此模型自己学会了不输出重复框,NMS 的作用被训练目标吸收。代价:① 监督信号比密集锚框稀疏,收敛明显更慢(由 Deformable DETR 明确指出);② 原始版本对小目标不友好(全局注意力 + 粗网格使小目标细节被稀释)。
Q6 它把「分割什么」从模型参数搬到推理时的提示里,因此同一个模型可以分割训练时没见过的物体,不必为每个类别重新标注与训练。局限:① 不输出语义标签(只给边界,不知道"是什么"),实际系统需要接分类器或多模态模型;② 掩码质量依赖提示质量,且模型规模大、推理成本高(另外训练数据的标注偏差会被继承)。
只看 mIoU 无法指导改进。真正有用的是按物体尺寸分组统计,因为分割的误差分布高度依赖目标大小:
| 分组(按目标面积占比) | 常见失败模式 | 主要嫌疑 |
|---|---|---|
| 大目标(>15%) | 内部空洞、边界模糊 | 上采样太粗 / 跳连不足 / 类别不均衡 |
| 中目标(1%–15%) | 边界偏移一两个像素 | 通常可接受;若 IoU 明显低,检查标注一致性 |
| 小目标(<1%) | 完全漏检或整块错类 | 下采样过度(跳距 太大,3.3.2)、空洞采样漏掉细结构 |
| 细长目标(电线、道路、血管) | 断裂成多段 | 空洞卷积的网格效应 / 仅用方形感受野 |
三条诊断顺序(先便宜后昂贵):① 可视化——把预测与真值叠加成对比图,比看数字快十倍;② 按尺寸分组统计——定位到是哪一类目标在贡献误差;③ 检查标注一致性——多人标注的同一批图像若 IoU 只有 左右,那么模型的 已经接近标注上限,继续调模型是徒劳。第三条最常被忽略,也最容易导致"永远调不上去"的困境。
关于 mAP 与 AP 的一个常见混淆:在 COCO 口径下,官方榜单上写作 AP 的那个数字,本身已经是「10 个 IoU 阈值上的平均」;而 mAP 这个缩写在不同社区指代不同——有时指「跨类别平均的 AP」,有时就是 COCO 的 AP。报告数字时必须写清是三件事中的哪几件:跨类别?跨 IoU 阈值?还是单类别单阈值? 不写就无法复现,也无法与别人的结果比较。
- Girshick et al., Rich feature hierarchies for accurate object detection and semantic segmentation(2014,arXiv:1311.2524)——R-CNN;Fast R-CNN(2015,arXiv:1504.08083);Ren et al., Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(2015,arXiv:1506.01497)。
- Redmon et al., You Only Look Once: Unified, Real-Time Object Detection(2015,arXiv:1506.02640);Liu et al., SSD: Single Shot MultiBox Detector(2015,arXiv:1512.02325);Lin et al., Feature Pyramid Networks for Object Detection(2016,arXiv:1612.03144)。
- Lin et al., Focal Loss for Dense Object Detection(2017,arXiv:1708.02002)——正负样本极不平衡的解法。
- Long et al., Fully Convolutional Networks for Semantic Segmentation(2014,arXiv:1411.4038);Ronneberger et al., U-Net: Convolutional Networks for Biomedical Image Segmentation(2015,arXiv:1505.04597);Chen et al., Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation(DeepLabv3+,2018,arXiv:1802.02611)。
- He et al., Mask R-CNN(2017,arXiv:1703.06870)。
- Carion et al., End-to-End Object Detection with Transformers(2020,arXiv:2005.12872);Zhu et al., Deformable DETR(2020,arXiv:2010.04159)。
- Rezatofighi et al., Generalized Intersection over Union(GIoU,2019,arXiv:1902.09630);Zheng et al., Distance-IoU Loss(DIoU/CIoU,2019,arXiv:1911.08287)。
- Kirillov et al., Segment Anything(2023,arXiv:2304.02643);Ravi et al., SAM 2: Segment Anything in Images and Videos(2024,arXiv:2408.00714)。COCO 评测口径对照官方代码
pycocotools(iouThrs=[.5:.05:.95]、101 点 recall、maxDets=[1,10,100])。
本节小结:检测与分割的输出是变长集合 / 稠密标签图,因此评测与损失必须换——IoU 是匹配与评估的共同基础,NMS 是训练未做去重时的补救,AP 必须说清口径(VOC 11 点 vs COCO 101 点 + 10 个 IoU 阈值),而准确率在极端类不平衡下没有信息量(例 3.7.1)。检测有「两阶段精修」与「单阶段密集预测」两条路线,分割有「跳连保细节」(U-Net)与「空洞卷积保分辨率」(DeepLab)两条路线,DETR 用集合预测从训练层面消除重复框与锚框(代价是收敛慢),SAM 把分割任务规格搬到提示里、成为可复用的分割后端。下一节把视觉接到语言上:多模态的对齐、生成与编辑。