源码地址:
tensorflow
还是继续语意分割的文章:Deeplab v3《Rethinking Atrous Convolution for Semantic Image Segmentation》
What: 这篇文章到底讲了什么,说实话,阅读完了我还是有点蒙B的,咋好像没什么突出的贡献呢,还是说的空洞卷积用于语意分割(多尺度信息提取)。但还是尝试着总结了一下,总的来说,这篇文章还是讲了很多东西的:(1)清晰的分析了当前的四种提取多尺度信息的框架结构 (2)设计了多膨胀率膨胀卷积(Multi grid)的串联或并联网络提取多尺度信息 (3)解决ASPP引入膨胀卷积后卷积核权重退化问题,为此引入image-level feature (4)大量对比实验验证Multi-grid,output_stride,Multi-input,data augmentation,image pooling,ASPP的作用。
四类框架如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/0e297753d4e28995b7d37beadcce0f67.png)
Why: 为什么要写这篇文章,肯定就是因为现有方法的一些缺点引起了作者的注意,然后做了改进。这里首先分析作者为什么设计多膨胀率膨胀卷积(Multi grid)的串联或并联网络提取多尺度信息。我们直到最原始的全卷积网络是通过32倍的下采样来扩大视野,获取有效特征的。但是这个方法有个明显的缺点。就是小物体在32倍下采样下容易被忽略。为此作者主张采样膨胀卷积:保持分辨率的同时扩大视野。为了获得更好的效果,作者把想要获取多尺度的信息,于是乎,把膨胀卷积嵌入到了Deeplab V2的ASPP中去。不仅如此,作者还将resnet的block级联到设计的网络中去,分析对结果的影响。如果级联上去还是采用pooling的话,如下图,最后会是256倍的下采样,效果非常差,如下表,但是级联上去的block换成膨胀卷积就会获得非常好的结果。好吧,这一段说的有点乱...大概就是这么个思路:验证膨胀卷积的有效性,并把膨胀卷积应用到ASPP中提取多尺度信息。
下图是级联block:(a)是直接pooling (b)是替换膨胀卷积
![](https://i-blog.csdnimg.cn/blog_migrate/59deb57d1dc22a2e0cd7517e677aee42.png)
下表是用不用膨胀卷积mIOU对比结果:
![](https://i-blog.csdnimg.cn/blog_migrate/efd2f5b6f12cfbc0872e58d755923f57.png)
现在我们再来分析作者使用image-level特征的原因:这个很简单明了,就是因为将膨胀卷积嵌入到ASPP(加batch normatlization)后出现有效卷积核退化的问题,为了解决这个问题,引入了image-level 特征。那么,这里又有一个问题:什么是有效卷积核退化,我是这样理解的,就是随这膨胀率的增大,卷积核中的权值归一化后非常小,如下图,当有9个权重值,膨胀率在30以上后,基本趋向于零了,就是说这个权重没有什么用了。那么image-level特征是怎么解决的呢?好吧,认怂了,我也没看懂其中的原理,怎么一个全局平均池化就把这个权重解决了。我是这么猜的:后面接一个池化加256个1*1卷积之后再上采样,那么这里的视野可以扩大一倍,在此之前的膨胀卷积就可以缩小一倍,也就是说膨胀率可以缩小一倍,膨胀率缩小之后权重退化的问题就自动解决了。(这里属于个人臆测,内在原理是不是这样的我也不知道)
![](https://i-blog.csdnimg.cn/blog_migrate/17097d3cb01898dd13bc00d82841f7ca.png)
How: 文章提出的方法是怎么样实现的呢? 级联的实现的实现比较简单,直接将对应的卷积加池化替换成对应膨胀率的膨胀卷积就好了。image-level feature是怎么实现的呢?文章是这样说的,在模型的最后一个特征图上采用了全局平均池化,将生成的图像级特征输入到256个1×1过滤器(加入batch normalization)中,然后将特征双线性上采样到所需的空间维度。
如下图所示,作者还改进了ASPP。当输出步长等于16,ASPP由以下几部分组成:(a)一个1×1卷积和三个3×3卷积,其中3×3卷积的孔的比率为(6,12,18)(所有的滤波器个数为256且加入了batch normalization)(b)图像级特征,就是全局平均池化加256个181的卷积,如下图所示。注意,当输出步长等于8时,比率加倍。而且在产生最终logits的1×1卷积之前,所有分支的结果特征被连接并通过另一个1×1卷积(也有256个滤波器和加入了batch normalization)。
![](https://i-blog.csdnimg.cn/blog_migrate/f587eca66b4c905eed53d97cd3f77358.png)
result: 重要的结果就是下面这些表了,实验结果表明,随网络加深,膨胀卷积替换pooling可以得到更好的效果,output_strde小一点可以得到更好的结果,Multi-scale很有效,Multi-gride(1,2,1)效果最好,都相同不好,图像翻转很有用等等
![](https://i-blog.csdnimg.cn/blog_migrate/04c3272cd1a9d12199d4bba5a41755ad.png)