论文:deeplab v3(语义分割)
作者:互联网
Rethinking Atrous Convolution for Semantic Image Segmentation
论文:https://arxiv.org/abs/1706.05587
代码:deeplab_v3 和 other
全局特性或上下文相关
许多工作证明了全局特性或上下文相关有助于语义分割。全局特性或上下文相关会产生长期依赖问题,即模型会遗忘比较久的信息。
解决方法:
第一种方法是增大卷积核的步幅,“长期”(步数)变短了,也就缓解遗忘症。
第二种方法是增大感受野,“长期”(步数)变短了,也就缓解遗忘症:
- 最直接就是增大卷积核,但是会增加计算量;
- 图像金字塔(Image Pyramid),多尺度输入(输入尺度越小,感受野越大),最后合并;
- Encoder-Decoder,Encoder使用CNNs提取特征,分辨率减小的过程就是感受野增大的过程;
- 空洞卷积(Atrous Convolution),这其实相当于增大卷积核,可以通过修改空洞率调节;
- 空间金字塔池化(Spatial pyramid pooling),复制网络中原始的最后一个块的几个副本,并将它们级联排列,它并行地包含了几个空洞卷积;
- 上下文模块,以级联的方式对远程上下文进行编码;
使用空洞卷积提取密集特征
考虑二维信号,对于输出y上的每个位置i和一个滤波器w,在输入特征映射x上应用空洞卷积:
y
[
i
]
=
∑
k
x
[
i
+
r
⋅
k
]
w
[
k
]
y[i] =\sum_k x[i + r · k]w[k]
y[i]=k∑x[i+r⋅k]w[k]
其中,k 为滤波器大小,r 为空洞率。
空洞卷积还允许我们明确地控制在完全卷积网络中计算特征响应(特征图)的密度。这里,我们用output_stride(输出步幅)表示输入图像空间分辨率与最终输出分辨率的比值。
对于部署用于图像分类任务的dcnn,最终的特征响应比输入图像维数小32倍(5次下采样, 2 5 = 32 2^5=32 25=32),因此output_stride = 32。
如果想将dcnn中计算的特征响应的空间密度增加一倍(即output_stride = 16),则将降低分辨率的最后 池化 或 卷积 层的stride设置为1,以避免信号抽取。然后,将所有后续的卷积层替换为空洞率为 r = 2 的空洞卷积层。这使得我们可以提取更密集的特征响应,而不需要学习任何额外的参数。
更深层次的空洞卷积
我们首先探索用级联排列的空洞卷积设计模块。具体来说,我们复制了最后一个ResNet块的几个副本,在图3中表示为block4,并将它们层叠排列。在这些block中有3个3 × 3的卷积,最后一个卷积包含了除了最后一个block之外的stride 2,类似于原始ResNet。
这个模型背后的动机是,引入的步幅(第一种方法)使得在更深的块中很容易捕获较远的信息。
例如,整个图像特征可以总结在最后一个小分辨率特征图中,如图3 (a)所示。但是,我们发现连续的步幅对语义分割是有害的(见下表),因为细节信息被抽取,因此,我们对由期望的输出步幅值决定的空洞率进行空洞卷积,如图3 (b)所示,其中output_stride = 16。
在这个模型中,我们用级联到block7的ResNet块进行实验(即,额外的block5、block6、block7作为block4的副本),如果没有应用空洞卷积,则输出stride = 256。
output_stride | 8 | 16 | 32 | 64 | 128 | 256 |
---|---|---|---|---|---|---|
mIOU | 75.18 | 73.88 | 70.06 | 59.99 | 42.34 | 20.29 |
多重网格方法
多重网格方法采用了不同规模的网格层次,我们在模型中采用了block4到block7内不同的空洞率。
定义 Multi Grid = ( r 1 , r 2 , r 3 ) \text{Multi Grid} = (r_1, r_2, r_3) Multi Grid=(r1,r2,r3) 为block4到block7中三个卷积层的空洞率。卷积层的最终空洞率等于单位空洞率与相应空洞率的乘积。例如,当输出stride = 16和 Multi Grid = ( 1 , 2 , 4 ) \text{Multi Grid} =(1,2,4) Multi Grid=(1,2,4) 时,三个卷积在block4中的速率分别为 r = 2 ⋅ ( 1 , 2 , 4 ) = ( 2 , 4 , 8 ) r= 2·(1,2,4)=(2,4,8) r=2⋅(1,2,4)=(2,4,8)。
空洞空间金字塔池化ASPP
四个具有不同空洞率的平行空洞卷积被应用在特征图的顶部。ASPP是受到空间金字塔池化(spatial pyramid pooling)成功的启发,该方法表明,对不同尺度的特征进行重采样可以有效地对任意尺度的区域进行准确高效的分类。在ASPP中包含了批标准化BN。
不同速率的ASPP可以有效地捕获多尺度信息。然而,我们发现,随着采样率变大,有效的滤波器权值(即,应用于有效特征区域的权值,而不是填充的零)的数量会变小。当对具有不同速率的65 × 65特征图应用3 × 3滤波器时,如下图所示。在空洞率接近特征图大小的极端情况下,3 × 3滤波器,退化为一个简单的1 × 1滤波器,因为只有中心滤波器的权重是有效的。
为了克服这一问题并将全局上下文信息纳入模型,我们使用全局平均池化在模型的最后一个特征映射上池化,将得到的图像级特征与256个滤波器进行1 × 1卷积,然后双线性地将特征上采样到所需的空间维度。最后,我们改进后的ASPP由
- (a) 一个1×1卷积和3个3 × 3卷积组成,当output_stride = 16 时,空洞率为(6,12,18)(均采用256滤波器和BN)。
- (b)图像级特征,如图5所示。注意,当output_stride = 8 时,空洞率翻倍。然后,所有分支的结果特征被合并,并通过另一个1 × 1卷积(也有256个滤波器和批量归一化)在最后的1 × 1卷积产生最终输出。
标签:deeplab,滤波器,卷积,语义,stride,空洞,v3,output,特征 来源: https://blog.csdn.net/czt_666/article/details/118255890