Faster R CNN模型
Faster R-CNN 是目标检测领域的 里程碑式两阶段模型(2015),首次把 Region Proposal Network(RPN) 和 检测网络 端到端地联合训练,真正实现了“实时 + 高精度”通用检测框架。下面用“一张总图 + 四条流水线 + 2025 工业落地要点”一次讲清,复制即可用。
一、总体流水线(记住这张图)
输入图像
├─ ① Conv Backbone (VGG/ResNet/Swin-T...)
│ └─ 特征图 F (H/16 × W/16 × C)
├─ ② Region Proposal Network (RPN)
│ ├─ 3×3 卷积 → 256-d
│ ├─ 分类头:object or not (1×1 conv)
│ └─ 回归头:dx, dy, dw, dh (1×1 conv)
│ └─ 生成 ~20k anchors → 2k proposals
├─ ③ RoI Pooling / Align
│ └─ 把 2k proposals 统一成 7×7 特征图
└─ ④ Detection Head (Fast R-CNN)
├─ 分类:N+1 类(含背景)
└─ 回归:N×4 精修框
二、四大核心组件(2025 视角)
表格
组件 | 2015 原始 | 2025 工业常用升级 |
---|---|---|
Backbone | VGG16 | ResNet50-FPN / Swin-T-FPN / EfficientNet-B3 |
Anchor | 3 scales × 3 ratios | 5-7 scales + 自适应锚 / 无锚(FCOS-like) |
RoI 采样 | RoI Pool (量化)→ 对齐误差 | RoI Align(双线性插值,无量化) |
Head | 2-fc | Cascade 3-stage + IoU-aware + DCNv3 |
三、关键公式(面试常问)
-
Anchor 生成
scale = [8, 16, 32] × stride(=16) → [128, 256, 512] px ratio = [0.5, 1, 2]
-
RPN 损失
L = L_cls(logits, labels) + λ L_reg(t, t*)
-
正样本:IoU>0.7;负样本:IoU<0.3;其余弃用。
-
-
RoI Align 网格
bin_size = roi_h / 7 采样 4 点双线性插值 → 无量化误差
四、2025 工业落地“四件套”
表格
场景 | 推荐配置 | 理由 |
---|---|---|
通用检测 | Res50-FPN + RoI Align + Cascade | COCO 42% AP,显存 6G,速度 18 FPS |
小目标 | Swin-T-FPN + 锚框密度×2 | AP_s↑3%,窗口注意力全局上下文 |
实时检测 | EfficientNet-B3-FPN + INT8 | TensorRT 加速,30 FPS,AP 40% |
低质量图纸 | Backbone 前插 Real-ESRGAN + Cascade | 模糊图 recall↑11%,人工复核↓92% |
五、快速体验(MMDetection 一行命令)
bash
# 安装
pip install mmdet mmcv-full
# 推理单张
python demo/image_demo.py demo.jpg \
configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py \
checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
六、面试金句
“Faster R-CNN = RPN 生成候选框 + RoI Align 统一尺寸 + 分类/回归头精修;
它是 两阶段检测奠基者,2025 年工业仍用其骨架,只是 backbone、neck、head 全部升级。”