图像分割
CNN图像语义分割:
- 下采样+上采样:convolution + Deconvolution/resize
- 多尺度特征融合:特征逐点相加/特征channel维度拼接
- 获得像素级别的segement map:对每个像素点进行类别判断
网络 | 父辈 | 生辰 | 增加的结构 | 丢弃的结构 | 优势 | 劣势 |
---|---|---|---|---|---|---|
VGG16 | FCN的灵感来源 | |||||
FCN | VGG16 | 2014 | 一个Deconv层(从无到有) | 所有fc层 | 简单 | 粗糙 |
DeconvNet | FCN | 2015 | Unpooling层(从无到有)、多个deconv层(层数增加)、fc层(从无到有) | |||
SegNet | DeconvNet | 2016 | 每个max_pooling的max索引 | 所有fc层 | ||
DeepLab | FCN | |||||
PSPNet | ||||||
Mask-CNN | 2017 | 真正做到像素级 |
按分割目的划分:
- 普通分割
将分属不同物体的像素区域分开
如前景和背景分开,狗的区域和猫的区域与背景分开 - 语义分割
在普通分割的基础上,分类出每一块区域的语义(即这块区域是什么物体)
如把画面中的所有物体都指出它们各自的类别 - 实例分割
在语义分割的基础上,给每个物体编号
如这个是该画面中的狗A,那个是画面中的狗B
图像的语义分割(segmantic segmentation)是计算机视觉中非常重要的任务。它的目标是为图像中的每个像素分类。如果能够快速准确地做图像分割,很多问题将会迎刃而解。因此,它的应用领域就包括但不限于:自动驾驶、图像美化、三维重建等。
FCN
Fully Convolution Networks
第一篇成功使用深度学习做图像语义分割的论文。
- 提出了全卷积网络。将全连接网络替换成了卷积网络,使得网络可以接受任意大小的图片,并输出和原图一样大小的分割图。只有这样,才能为每个像素做分类。
- 使用了反卷积层(Deconvolution)。分类神经网络的特征图一般只有原图的几分之一大小。想要映射回原图大小必须对特征图进行上采样,这就是反卷积层的作用。虽然名字叫反卷积层,但其实它并不是卷积的逆操作,更适合的名字叫做转置卷积(Transposed Convolution),作用是从小的特征图卷出大的特征图。
这是神经网络做语义分割的开山之作,需彻底理解。
DeepLab
DeepLab有v1 v2 v3,第一篇名字叫做DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs。这一系列论文引入了以下几点比较重要的方法:
第一个是带洞卷积,英文名叫做Dilated Convolution,或者Atrous Convolution。带洞卷积实际上就是普通的卷积核中间插入了几个洞。
它的运算量跟普通卷积保持一样,好处是它的“视野更大了”,比如普通3x3卷积的结果的视野是3x3,插入一个洞之后的视野是5x5。视野变大的作用是,在特征图缩小到同样倍数的情况下可以掌握更多图像的全局信息,这在语义分割中很重要。
PSPNet
Pyramid Scene Parsing Network的核心贡献是Global Pyramid Pooling,翻译成中文叫做全局金字塔池化。它将特征图缩放到几个不同的尺寸,使得特征具有更好地全局和多尺度信息,这一点在准确率提升上上非常有用。
参考:添加链接描述