上一篇笔记完成经典 CNN 架构收尾(ResNet 破解深层瓶颈),并初步接触图像分割与目标检测基础。本节课聚焦视觉识别四大核心任务(分类、语义分割、目标检测、实例分割),深入拆解 语义分割技术演进(滑动窗口→全卷积)、目标检测方案迭代(R-CNN→一阶段方法) 及 实例分割实现逻辑(Mask R-CNN),核心回答 “如何让 CNN 从‘分类’走向‘像素级 / 目标级精细识别’”。
课程链接:https://www.bilibili.com/video/BV1V54y1B7K3/?spm_id_from=333.788.player.switch&vd_source=a42184218f2a2585e044c7563e890c29&p=11
一、视觉识别四大任务:从 “整体分类” 到 “精细区分”
四大核心任务的区别是视觉识别基础框架,具体对比如下:
| 分类(Classification) | 判断图像整体类别 | “猫”(1 个类别标签) | 不考虑空间位置 |
|
语义分割 (Semantic Segmentation) |
逐像素分配类别标签 | “草、猫、树、天空”(像素级) | 不区分同类实例 |
|
目标检测 (Object Detection) |
定位目标 + 判断类别 | “狗(x1,y1,w1,h1)、猫(x2,y2,w2,h2)” | 输出边界框 |
|
实例分割 (Instance Segmentation) |
定位目标 + 判类别 + 区分同类实例 | “狗 1(像素区 A)、狗 2(像素区 B)” | 兼具检测与分割能力 |
视觉识别四大任务
二、语义分割:逐像素分类的技术演进
1. 核心定义
为图像每个像素分配类别标签(如 “天空”“牛”“草地”),不区分同一类别的不同实例,最终输出与原图像尺寸一致的类别掩码图。
配图建议:文档第 3 页 —— 展示像素级类别标注示例。
2. 早期思路:滑动窗口(效率痛点)
- 操作逻辑:滑动固定尺寸窗口,以窗口中心点像素为预测对象,遍历全图生成分割结果。
- 核心问题:重叠区域特征反复计算,效率极低(如 512×512 图像需处理数十万窗口)。
滑动窗口
3. 关键突破:全卷积网络(FCN)设计
- 核心创新:用卷积层替代传统 CNN 的全连接层,可接受任意尺寸输入,一次性输出像素级预测。
- 流程:输入(3×H×W)→多轮卷积(输出 D×H×W)→1×1 卷积(转通道数为类别数 C,输出 C×H×W)→argmax(输出 H×W 分割图)。
- 总的来说,全卷积网络解决了:1.早期滑动窗口方法的效率极低问题;2.传统 CNN 输入尺寸固定、无法输出像素级预测的局限
全卷积网络
4. 核心难题:下采样与上采样协同
(1)下采样:解决显存危机
通过最大池化或步长>1 的卷积缩小特征图尺寸(如 H×W→H/2×W/2),减少显存占用,同时扩大感受野。
(2)上采样:恢复像素尺寸
- 反池化(Unpooling):非可学习操作,包括最近邻反池化(像素复制扩展)、最大反池化(记录池化时最大值位置并恢复)。
反池化
- 转置卷积(Transpose Convolution):可学习操作,通过卷积核反向滑动扩大尺寸,需处理重叠区域求和,是主流方案。
可学习操作的转置卷积
三、目标检测:“定位 + 分类” 的方案迭代
1. 任务本质:单目标 vs 多目标
- 单目标:图像含 1 个目标,输出 “类别 + 1 个边界框(x,y,w,h)”。
单目标检测
- 多目标:图像含多个目标,输出 “每个目标的类别 + 边界框”。
多目标检测
2. 单目标检测:回归建模与多任务损失
- 网络设计:分类网络(如 AlexNet)基础上,全连接层后增两个分支:分类分支(Softmax 激活,交叉熵损失)、回归分支(无激活,L2 损失)。
两个分支
- 总损失:分类损失 + λ× 回归损失(λ 平衡系数)。

3. 多目标检测困境
- 输出维度不固定:目标数量不同导致输出参数数量变化。
- 计算量爆炸:遍历所有可能区域(不同位置 / 尺寸 / 长宽比)成本极高。
多目标检测:输出维度不固定
多目标检测:计算量爆炸
4. 方案演进:两阶段与一阶段
(1)两阶段检测(精度优先)
- R-CNN(痛点:效率低):Selective Search 生成~2000 候选区域→逐区域提特征→SVM 分类 + 回归器修正,效率低(单图数十秒)。
区域建议(Selective Search)
R-CNN
- Fast R-CNN:全图提特征→RoI Pool 统一区域尺寸→多任务输出,效率提升(单图 2-3 秒),但 RoI Pool 存在对齐误差。
Fast R-CNN对比R-CNN的优化
RoI Pool 统一区域尺寸
- Faster R-CNN:RPN(区域建议网络)生成候选区域(替代 Selective Search)→RoI Align(修正对齐误差)→端到端训练,速度近实时(单图~0.2 秒)。
Faster R-CNN的两阶段网络结构
(2)一阶段检测(速度优先)
- YOLO:图像划分为 S×S 网格,每个网格预测 B 个边界框 + 类别概率,速度快(~45 帧 / 秒),小目标精度低。
- SSD:多尺度特征图预测目标,平衡速度与精度。
- RetinaNet:用 focal loss 解决正负样本不平衡,提升精度。
一阶段检测
5. 精度影响因素
- 主干网络:深层宽网络(如 ResNet-101)优于浅层窄网络。
- 基础架构:两阶段精度高于一阶段。
- 图像尺寸:尺寸越大,小目标精度越高。
- 区域建议个数:个数越多,漏检率越低(两阶段)。
精度影响因素
四、实例分割:Mask R-CNN 的 “检测 + 分割” 融合
1. 与语义分割的区别
语义分割仅区分类别,实例分割需同时区分类别与同类实例。


2. 核心设计:Faster R-CNN 加掩码分支
- 流程:全图特征提取→RPN 生成候选区域→RoI Align 处理→三分支输出(分类、回归、掩码)。
基于Faster R-CNN
- 掩码分支:预测 28×28 二进制掩码(1 属该实例,0 不属),再上采样至原区域尺寸。
区域建议——RPN
Mask R-CNN结构示意图
3. 训练与效果
- 损失:分类损失 + 回归损失 + 掩码损失(交叉熵)。
- 功能:同时完成目标检测、实例分割、人体姿态估计。
Mask R-CNN训练阶段使用的Mask样例
Mask R-CNN实例分割结果
Mask R-CNN检测姿态
五、开源框架:实战工具支持
- TensorFlow Detection API:支持 Faster R-CNN、SSD、Mask R-CNN,文档完善。
- Caffe2 Detectron(Detectron2):支持 Mask R-CNN、RetinaNet,性能优。
- 优势:提供预训练模型,支持自定义数据集微调。
六、学习感悟:技术演进核心逻辑
七、结语
本节课覆盖视觉识别核心任务的技术演进:语义分割解决像素级分类,目标检测解决定位 + 分类,实例分割实现实例级精细区分。




