基于CNN的R-CNN 到Fast R-CNN 再到 Faster R-CNN

CNN(基础骨干网络):就像人类的视觉皮层,负责从原始像素中提取边缘、纹理、形状等基础特征,但它本身不知道也不关心图片里有什么物体、物体在哪里。它是一个通用的"特征工厂"。

• R-CNN系列(目标检测算法):是建立在CNN工厂之上的"智能车间"。它利用CNN生产出的特征图,去完成"分类"(是什么)和"定位"(在哪里)这两个具体任务。

深度技术细节对比 (CNN vs. R-CNN vs. Fast R-CNN vs. Faster R-CNN)

特性

CNN (基础模型)

R-CNN

Fast R-CNN

Faster R-CNN

本质任务

图像级特征提取 (分类、回归)

区域级目标检测 (分类+定位)

区域级目标检测 (分类+定位)

区域级目标检测 (分类+定位)

核心架构

卷积层+池化层+全连接层

CNN骨干 + SVM分类器 + 独立回归器

CNN骨干 + RoI池化层 + 多任务头

CNN骨干 + RPN网络 + RoI池化层 + 多任务头

输入输出

输入整图,输出类别概率或特征向量。

输入整图,输出每个候选框的类别+坐标。

与R-CNN相同,但速度更快。

与R-CNN相同,达到实时。

候选区域生成

❌ 不生成

选择性搜索 (CPU, 约2000个/图)

选择性搜索 (CPU, 约2000个/图)

区域提议网络(RPN) (GPU, 约300个/图)

特征提取方式

对整图进行一次前向传播。

对每个候选区域进行2000次独立前向传播。

对整图进行一次前向传播,得到全图特征图。

与Fast R-CNN相同,一次前向传播。

RoI特征处理

❌ 不涉及

将候选区域缩放到固定尺寸(227x227)再输入CNN。

引入 RoI池化层:将特征图上不同大小的候选区域池化为固定尺寸(7x7)。

引入 RoI池化层 (或更精确的RoI Align)。

分类器/回归器

Softmax分类器 (单标签)

SVM (二分类器组合) + 独立边界框回归器

Softmax (多分类) + 联合边界框回归器 (一个网络)

同Fast R-CNN,Softmax + 联合回归

训练范式

端到端 (SGD优化)

多阶段 (分离):

  1. 微调CNN

  2. 训练SVM

  3. 训练回归器

近似端到端:

分类+回归联合训练,但候选区域生成固定。

真正端到端:

RPN与检测网络共享卷积,交替联合训练。

主要瓶颈

无法直接定位多个物体。

计算冗余 (2000次CNN)、存储巨大 (特征文件)、训练割裂。

候选区域生成 (Selective Search) 仍是CPU速度瓶颈。

RPN正负样本不平衡,对小目标特征利用不足。

更细致的演进技术点解析

  1. 从"暴力"到"共享":特征提取的革新

• R-CNN的冗余:它对2000个候选区域分别做CNN前向,导致一张图的计算量相当于处理了2000张图。

• Fast/Faster R-CNN的智慧:利用共享卷积,整图只做一次CNN。所有候选区域的特征都从这张"大特征图"上截取,计算量锐减约2000倍。

  1. 从"割裂"到"统一":训练流程的进化

• R-CNN的多阶段痛苦:首先用ImageNet预训练CNN,然后针对检测任务微调,再用提取的特征训练SVM分类器,最后还要单独训练边界框回归器。这四个步骤完全分离,误差无法反向传播修正。

• Faster R-CNN的端到端魔力:它将分类损失、边框回归损失和RPN的损失加在一起,形成了一个多任务损失函数。梯度可以同时更新CNN骨干、RPN和检测头,实现了真正的联合优化。

  1. 候选框的质量与数量:从2000到300

• 选择性搜索 vs. RPN:前者基于手工设计的低层特征(颜色、纹理),速度慢且不可学习。后者是一个全卷积网络,它通过在CNN特征图上滑动一个小窗口,在每个位置预测"这里有没有物体"以及"物体的粗略边框"。它不仅更快(GPU vs CPU),还能生成更少(约300个)但质量更高的候选框,极大减轻了后续RoI分类器的负担。

场景

推荐模型

理由

图像分类 (如猫狗识别)

CNN (如ResNet)

无需定位,经典CNN最优。

学术研究/精度优先 (如遥感、医学影像)

Faster R-CNN

两阶段框架在复杂场景下精度仍有优势,尤其适合中大型物体。

入门学习/理解原理

从R-CNN到Faster R-CNN

完整走一遍,能深刻理解目标检测的每一个核心痛点及其解决方案。

工业级实时应用 (如视频流)

YOLO/SSD (单阶段)

这是下一步的演进方向。如果连Faster R-CNN的速度仍不满足,需要探索速度更快的单阶段检测器。

🌳 R-CNN技术路线关键模型对比

模型

核心创新

主要解决/实现的目标

核心细节与贡献

R-CNN

首次将CNN用于目标检测-

1

2

4

开创范式,证明深度学习在检测上的优越性。

流程:选择性搜索生成候选框 → 缩放每个候选框 → 送入CNN提取特征 → SVM分类 + 回归器修正框-

1

3

。瓶颈:速度极慢(每张图47秒),训练流程割裂-

1

3

Fast R-CNN

RoI Pooling层 + 多任务损失函数-

1

3

4

大幅提速,实现特征共享和端到端训练(除候选框生成)。

改进:整图一次性通过CNN得到特征图,再用RoI Pooling将不同大小的候选框特征统一为固定尺寸-

2

3

。性能:速度提升213倍(0.22秒/图),精度提升-

1

3

Faster R-CNN

区域提议网络(RPN) + 锚框机制-

1

2

3

扫除最后的速度瓶颈,实现完全端到端的目标检测。

革命:用一个极小的全卷积网络RPN,在CNN特征图上滑动预测候选框,替代了耗时的选择性搜索-

1

4

。性能:检测速度达5fps,成为后续所有两阶段检测器的基准-

1

2

3

R-FCN

位置敏感得分图(Position-sensitive Score Maps)-

8

解决全卷积网络(FCN)用于检测时精度下降的问题。

背景:分类任务要求平移不变性,而检测需要平移可变性。R-FCN通过设计位置敏感得分图,将目标的位置信息编码进特征图,在保持全卷积结构高效的同时,保证了检测精度-

8

Mask R-CNN

RoIAlign层 + 并行的掩码预测分支-

8

9

10

将任务从目标检测扩展到实例分割。

核心改进:RoIAlign 使用双线性插值,避免了RoI Pooling两次量化带来的像素级错位(misalignment),使得掩码预测更精准-

8

9

。结构:它在Faster R-CNN的分类和回归分支旁,并行了第三个用于预测目标掩码(Mask)的分支-

8

9

Cascade R-CNN

级联多个检测器,并逐级提高IoU阈值-

7

8

解决单一IoU阈值无法同时优化所有质量检测结果的问题。

洞察:一个检测器只能在一个IoU阈值(如0.5)上达到最优-

8

。Cascade R-CNN通过将前一个检测器(低阈值)修正过的输出,作为后一个检测器(高阈值)的输入,从而让每个检测器都能处理"质量更高"的样本,最终整体精度大幅提升-

7

8

Cascade Mask R-CNN

将Cascade R-CNN的级联思想应用到Mask R-CNN上-

6

7

在实例分割任务中,同时实现更高的检测和分割精度。

结合方式:在Cascade R-CNN的多个级联阶段中,考虑在哪里添加以及添加多少个掩码预测分支(Mask Head)-

6

7

。在目标检测和实例分割任务上均取得了显著的精度提升-

5

7

💡 演进的核心逻辑与启示

这条技术路线的演进逻辑非常清晰:

  1. 解决效率问题:从R-CNN到Fast R-CNN再到Faster R-CNN,每一步都精准地解决了前一步最大的计算瓶颈-

1

2

3

  1. 扩展任务边界:以Faster R-CNN为基础框架,通过增加并行的、巧妙设计的任务分支(如Mask R-CNN的掩码头),将模型能力从"检测"自然延伸到"分割"等更复杂的任务-

8

9

  1. 追求极致精度:Cascade R-CNN则代表了另一类优化方向------不改变基础框架,而是通过改进训练和推理策略(级联与重采样)来深度挖掘已有架构的潜力,实现精度上限的突破-

7

8

在实际应用中,Mask R-CNN 是实例分割任务的经典首选,而 Cascade R-CNN 则是追求极致检测精度(尤其是在COCO等复杂数据集上)的强大利器-

5

7

9

。它们共同构成了R-CNN家族中最强大、应用最广泛的分支。

FPN(特征金字塔网络)和可变形卷积网络(Deformable ConvNets),正是为了解决目标检测中两个根本性的难题而生的:多尺度变化和几何形变。它们并非独立的新检测器,而是可以作为插件无缝嵌入到Faster R-CNN、Mask R-CNN等模型中,显著提升性能。

下面分别对它们进行解析。

🧩 FPN:让网络"看得全",解决多尺度问题

FPN的核心思想是让不同层级的特征图都拥有丰富的语义信息,从而让网络能同时检测大、中、小不同尺寸的目标-

1

3

  1. 它要解决什么问题?

在传统目标检测网络中,存在一个矛盾:

• 深层特征:语义信息强,但分辨率低,对小目标不敏感,容易丢失细节-

3

• 浅层特征:分辨率高,包含更多边缘、纹理等细节,适合定位小目标,但语义信息弱-

3

早期方法如图像金字塔,通过缩放图片来生成多尺度特征,但计算量巨大,无法实际应用-

1

4

。而像SSD那样直接使用网络不同层的特征,又存在语义鸿沟,低层特征不足以支撑精准识别-

1

3

  1. FPN是如何工作的?

FPN巧妙地构建了一条自顶向下的路径和横向连接,将深层语义信息传递给浅层,让每一层都"文武双全"-

1

3

• 自底向上(Bottom-up):就是正常的CNN前向过程(如ResNet),产生不同尺度的特征图,记为{C2, C3, C4, C5},它们相对于原图的步长(stride)分别为{4, 8, 16, 32}-

1

3

。特征图越小,语义越强。

• 自顶向下(Top-down)与横向连接(Lateral Connections):

  1. 对更小、语义更强的特征图(如C5)进行上采样(通常用最近邻插值),使其尺寸放大一倍-

1

2

  1. 将上采样后的特征图与自底向上对应尺寸的特征图(如C4)通过横向连接融合。融合方式是:先用1x1卷积调整C4的通道数,然后与上采样特征逐元素相加(element-wise addition)-

1

3

  1. 最后,在融合后的特征图上用3x3卷积处理,得到最终的金字塔特征层{P2, P3, P4, P5},它们分别对应{C2, C3, C4, C5}的尺寸-

1

3

  1. 带来的效果提升

• 小目标检测性能大幅提升:FPN让负责检测小目标的P2层也拥有了高层的语义信息,解决了小目标因分辨率低而"看不清"的问题。在COCO数据集上,FPN将基础Faster R-CNN的AP(平均精度)提高了2.3个点,在小物体上的召回率(AR)提升了8个点-

1

4

• 几乎不增加计算量:所有的特征图都是在网络前向传播中"顺带"计算出来的,避免了构建图像金字塔的巨大开销,运行速度可达6FPS-

1

3

🧬 可变形卷积网络:让网络"认得准",解决几何形变问题

如果说FPN解决了"尺度"问题,那么可变形卷积网络(Deformable ConvNets)解决的就是"形状"问题。它让卷积核不再死板地呆在固定网格里,而是能随着物体的形状"流动"-

5

  1. 它要解决什么问题?

标准卷积的感受野是固定的方形网格。对于形状各异(如横卧的猫、不同姿态的人)或非刚性(如弯曲的文本)的物体,固定网格很难完美覆盖其有效区域,可能会引入大量无关的背景信息,影响检测精度-

5

6

  1. 它是如何做到的?

DCN引入了两个核心模块,都是通过增加额外的可学习参数来实现"变形":

• 可变形卷积 (Deformable Convolution):在标准卷积的每个采样点上,增加一个可学习的2D偏移量(offset)-

5

8

。这个偏移量是通过在输入特征图上额外加一个卷积层计算出来的。于是,卷积核就不再是方方正正的了,而是可以根据输入特征,动态地调整采样点的位置,去"贴合"物体的实际形状-

5

7

• 可变形RoI池化 (Deformable RoI Pooling):类似地,在RoI池化的每个bin(格子)上增加一个可学习的偏移量,使得不同形状的物体能够自适应地对齐到固定大小的特征上-

5

  1. 演进:DCN v2

DCN v2在此基础上做了重要改进-

6

• 更强的建模能力:不仅在更多卷积层中使用了可变形卷积,还为每个采样点引入了可学习的调制标量(modulation scalar),让网络不仅能选择"在哪采样",还能决定"采样的重要性"-

6

• 更有效的训练:受知识蒸馏启发,引入了特征模仿(Feature Mimicking)机制,让DCN网络学习更专注于目标区域的特征,而非背景干扰-

6

这些改进让DCN v2能够更精准地聚焦于目标物体,减少背景噪声的干扰-

6

💡 总结与应用展望

这两个模块在设计理念上相辅相成,并且在实践上常常被结合使用。例如,将可变形卷积层嵌入到FPN的P2到P5各层中,可以同时提升网络对尺度变化和几何形变的适应能力-

9

10

11

。它们共同让R-CNN系列模型从"能检测"走向了"更精准"。

Deformable DETR,正如其名,是将可变形卷积的稀疏采样思想与Transformer的全局关系建模能力相结合的前沿目标检测算法。它可以看作是DETR(Detection Transformer)的一次关键进化,解决了后者在训练效率和检测精度上的核心痛点。

下面我将从它要解决的问题、核心创新、以及后续发展三个方面来为你总结。

🎯 核心问题:DETR的"慢"与"小"

在Deformable DETR之前,DETR开创性地将目标检测视为一个集合预测问题,用Transformer替代了传统检测器中繁杂的NMS、Anchor等人工设计组件,实现了真正的端到端-

1

然而,DETR有两个致命短板-

1

4

  1. 收敛极慢:DETR在COCO数据集上需要500个训练周期才能收敛,是Faster R-CNN的10到20倍-

1

。原因在于Transformer的注意力机制在初始化时,几乎均匀地关注特征图上的所有像素,需要极长的训练才能"学会"聚焦到有意义的稀疏位置-

1

4

  1. 小目标检测差:为了降低Transformer自注意力机制带来的平方级计算复杂度,DETR无法使用高分辨率特征图,导致对小目标的细节信息捕捉不足-

1

4

💡 Deformable DETR的破解之道

Deformable DETR的核心创新是提出了可变形注意力模块(Deformable Attention Module)-

1

4

它的设计非常巧妙:对于每个查询(Query),它不再与特征图上的所有位置交互,而是只关注其参考点周围一小部分(例如K个)关键采样点-

1

4

。这些采样点的位置(偏移量)是通过学习得到的,与可变形卷积的思想一脉相承-

1

6

这种设计带来的直接好处是:

• 加速收敛:由于天然地只关注局部关键点,相当于给模型提供了一个很好的"先验",避免了从全局均匀分布开始的漫长学习过程,训练周期缩短为原来的十分之一-

1

4

• 支持多尺度特征:可变形注意力机制的复杂度与特征图大小无关,因此可以自然地融合多尺度特征,无需借助FPN等额外模块,从而大幅提升小目标检测性能-

1

4

⚙️ 架构与演变

Deformable DETR的整体架构与DETR类似,但核心组件被替换为多尺度可变形注意力模块-

4

。在此基础上,它还探索了更高级的变体:

• 迭代边界框精调 (Iterative Bounding Box Refinement):解码器每一层都基于上一层的输出,对边界框进行递进式的修正,类似Cascade R-CNN的思想,逐步提升定位精度-

1

4

• 两阶段Deformable DETR:第一阶段由编码器生成高质量的候选区域(Proposals),第二阶段解码器再对这些候选区域进行精细化的检测和分类,进一步提升了性能-

1

4

🚀 发展与应用:不止于基础模型

作为强大的基线模型,Deformable DETR在学术界和工业界得到了广泛关注和进一步改进,尤其是在处理小目标和特定场景的任务中。

• 在遥感领域:针对遥感图像中目标尺度变化大、背景复杂的特点,有工作(如DLA-Deformable DETR)设计了动态层分配解码器,让模型能更灵活地利用不同尺度的特征,以提升检测精度-

2

• 在医学影像领域:针对肺结节检测中结节稀疏、与周围组织相似的问题,有研究(如Lung-DETR)将Deformable DETR与特定的数据预处理和损失函数结合,在LUNA16数据集上取得了94.2%的F1分数-

3

• 在边缘端部署:为了在保持精度的同时降低模型体积和计算量,有研究(如用于水面目标检测的改进)使用轻量级网络MobileNetV3替换原有的ResNet骨干网络,并引入注意力机制,使模型参数量减少至原版的1/3,同时精度还有所提升-

7

8

10

• 在无人机视角:针对无人机航拍图像中目标小、视角变化大的挑战,有改进工作(如SC-DeformableDETR)专注于优化多尺度特征融合和损失函数,在VisDrone等数据集上将检测精度(AP50)提升了2.5%以上-

9

可以说,Deformable DETR继承了前辈R-CNN系列"哪里不足改哪里"的演进基因,但它的战场从CNN架构转向了Transformer架构,是DETR家族中最具影响力的改进之一。它证明了在视觉任务中,稀疏、可学习的空间交互,比Transformer的全局、密集交互更加高效和有效-

6