Dilated Residual Networks
这篇文章来自于17年CVPR,同样是对空洞卷积的思考,但这篇文章不是把空洞卷积变着法得用在语义分割上,而是重新回到了图像分类领域,在看这篇文章的同时可以结合旷视和清华一起提出的另一篇论文DetNet一起阅读,这两篇论文都是利用了空洞卷积作为Backbone,把它的应用从分割扩展到了分类与检测。
DetNet: A Backbone network for Object Detection
但相对而言,DetNet这篇文章的内容丰富程度和DRN还是有一定的距离。
本片论文回到了图像分类的任务上,认为传统的CNN把输入图像不停的下采样到非常小的特征图会使场景的空间结构不那么清晰,不仅限制了分类的准确率,也影响到了把模型迁移到其他任务上的性能。因此文章提出使用空洞卷积作为分类网络的卷积,并通过实验证明了空洞残差网络的性能比普通残差网络的性能超出很多。同时文章也提出了类似Understanding Convolution for Semantic Segmentation中提出的griddinggridding现象,并且提出了一种不同的方式去解决这个问题。
其实所有空洞卷积的出发点都是一样的:在不降低特征图分辨率与计算开销的情况下尽可能增加卷积核的感受野。在图像分类中,一般会使用5个池化或者步进2的卷积来进行下采样得到非常小的高维特征图,尽管这种方式被证明非常有用,但实际的分类中,很可能会有这种情况出现:一张图片中有各种尺度的物体,他们之间的相对关系对理解整个图片非常重要,比如桌子加椅子就是餐厅,桌子加沙发就可能是客厅;或者说背景是一座山,但前景存在一个不大却很重要的物体,那么这个物体的**值在下采样的时候很可能会被背景的山产生的**值所覆盖掉。一旦丢失了细节信息,几乎不可能通过上采样与训练再把它们恢复出来。
Dilated Residual Networks
DRN的结构与He大神的ResNet非常相似,最大的不同在于conv_stage 4/5 这两部分。这里我们使用liGil卷积,DRN可以很容易得变成一个分割网络或者定位(Localization)网络
Degridding
文章同样观察到了griddinggridding的现象。
Removing max pooling
在原始的ResNet中,在第一个7∗77∗7的卷积后有一个max pooling,文章发现这个max pooling会导致输出高频高幅值的**值,这些高幅值的**就很容易被后面的卷积传播下去最后在顶层的空洞卷积处形成网格状**,因此文章使用卷积来代替池化。
可以看到,去除pooling后特征图变得平滑许多。
Adding layers
为了去除griddinggridding的小,比如加入一层dilation=2的卷积层与一层正常的卷积层。
Removing residual connections
然而仅仅在网络后面加卷积层也不足以完全去除griddinggridding**直接传到顶层,因此,需要把最后两层的残差连接去掉。
经过以上三步,就得到了最终的DRN,文章命名为DRN-C,而介于最初的DRN和最终的DRN之间的网络,为DRN-B
简单来说,DRN-A是基础ResNet加了dilation得到的,DRN-B是DRN-A去除max pooling加入后两层得到的,DRN-C是DRN-B最后两层去掉残差连接得到的。
经过实验发现,DRN-C-26和DRN-A-34的分类精确度差不多,在分割和定位上精度比DRN-A-50还要好。而DRB-C-42在ImageNet上的分类准确率与ResNet-101相近,但在Cityscapes的分割上,精度高4%,深度却只有ResNet-101的1/2.4。