前言:图像分割是指像素级别的图像识别,即标注出图像中每个像素所属的对象类别。
语义分割更注重类别之间的区分,而实例分割更注重个体之间的区别。
DeepLab是由Google团队提出的一系列图像分割算法。
DeepLab v1 (2014年)
创新点:
- 空洞卷积(Atrous Conv);
<解决编码过程中信号不断被下采样,细节丢失的问题> - 全连接条件随机场(Fully-connected Conditional Random Field)。
<由于conv层提取的特征具有平移不变性,这就限制了定位精度。因此引入全连接CRF来提高模型捕获结构信息的能力,解决精分割问题。>
CRF 意在给相邻的像素进行建模,相近的像素更可能是同一个 label,定义每个像素属于某个 label 的概率,通过迭代来优化结果。Fully connected CRF避免了使用short-range CRF带来的平滑效果。
DeepLab v2
Paper(TPAMI 2017)
与v1不同点:
- 空洞空间金字塔池化 ASPP(Atrous spatial pyramid pooling )
- 将v1使用的backbone VGG16替换成了 Resnet101
ASPP
可用于解决不同检测目标大小差异的问题:通过在给定的特征层上使用不同dilation的空洞卷积,可以有效的进行重采样。构建不同感受野的卷积核,用来获取多尺度物体信息。
DeepLab v3
主要创新点就是改进v2的ASPP模块
,一个1×1的卷积和3个3×3的空洞卷积,每个卷积核有256个且都有BN层,包含图像及特征(全局平均池化)。
- 加入了BN层;
- 将v2中的ASPP中尺寸3×3,dilation=24的空洞卷积替换成一个普通的1×1卷积,以保留滤波器中间部分的有效权重;(随着空洞率的增大,滤波器中有效权重的个数在减少)
- 增加了全局平均池化以便更好的捕捉全局信息。
authors将解决多尺度物体问题的方法分成四类:
(a) 图像金字塔-----把输入图片缩放成不同尺度,经过同一个网络,最终融合多尺度下的物体信息
(b)编码解码----编码器的高层次的特征容易捕获更长的距离信息,在解码器阶段使用编码器阶段的信息帮助恢复目标的细节和空间维度
(c)在原网络最后层增加额外的context模块,如DenseCRF,或者串联几个不同感受野的卷积模块
(d)空间金字塔池化----采用空间金字塔池化可以捕获多个层次的上下文
DeepLab v3+
主要工作:
- 将原DeepLabv3当作encoder,添加decoder得到新的模型(DeepLab v3+);把spatial pyramid pooling module和Encoder-Decoder融合成一体:
- 用
modify xception
作为backbone----把Xception和Depthwise separable convolution应用到Atrous Spatial Pyramid Pooling和decoder中。
修改点:
更深的Xception结构,并不修改entry flow network结构
所有的max pooling结构被stride=2的深度可分离卷积代替
每个3x3的depthwise convolution都跟BN和Relu
整体网络结构: