Deeplabv3算法介绍
Deeplab系列算法一直都在语义分割领域占有重要地位!目前Deeplab全系列分为deeplabv1、deeplabv2、deeplabv3、deeplabv3+四部曲。
这一部分主要介绍deeplabv3。
网络结构解析
网络组成:
Stem模块就是Conv+MaxPooling。
Res_LayersX就是ResNet模块对应的ResBlock。
Res_Layers4_copyX就是复制Res_Layers4的卷积层。
理论上整个ResNet网络最终输出特征图为32倍下采样,作者认为可能太小了,所以去掉了最后一个Maxpooling。但是感受野的也会减少2倍,因此采用扩张卷积来增加减少的感受野。
Muti-Grid(多网格):简单理解就是把ResNet基础瓶颈层中的卷积设置不同的扩张率。
单个卷积扩张率公式为
D
i
l
a
t
e
d
=
R
a
t
e
∗
(
r
1
,
r
2
,
r
3
)
Dilated =Rate*(r_1,r_2,r_3)
Dilated=Rate∗(r1,r2,r3)
已知Res_Layers4由三个瓶颈层组成,如上图所示。作者做了大量实验来找出最佳超参数
(
r
1
,
r
2
,
r
3
)
(r_1,r_2,r_3)
(r1,r2,r3),最终找出来的超参数为(1,2,1)效果最好。下图是截取原论文数据:
改进ASPP模块:
结构来源于PSPNet的空间金字塔池化的成功,它表明,在不同尺度上重新采样特征,可以准确有效地对任意尺度的区域进行分类。
对deeplabv2中的ASPP模型进行少量改进。增加一个1×1分支和Adaptive Pool分支,同时每个卷积后面加入了BN层,并将其concat拼接后用1×1卷积降维到C。
结构如下:
以上是整篇论文的网络结构,一些训练策略和数据扩充策略我就不详细展开了。