问题:
下图引用自:https://blog.csdn.net/u011974639/article/details/78897066
因此这个任务本身就是矛盾的。从定位的角度来看,模型结构应该是完全卷积的,不应该使用全连接或全局的池化,因为这些层将丢弃位置信息;从分类的角度看,模型需要对输入的变换保持不变——对象可以移动、旋转或重新缩放,但分类结果不发生改变,因此需要更为大的核,才能保证具有较强的鲁棒性。
现在的大多数模型主要考虑的是定位问题,而没有考虑到分类问题,这对于分类任务不是应该最先考虑的。
图A是一个分类的模型,就像是圆锥形,由底层向上提取高纬度的全局特征用于分类(不同层数有融合),但是分辨率太低,空间信息丢失过多,不利于定位;图B是定位模型,尽可能地保证能够图像分辨率足够高,然而,由于分类器是局部连接而不是全局连接到特征图,因此分类器很难处理输入上的不同变换(旋转等)。图C作者提出的模型,这种模型在保证了定位的分辨率的同时,通过不同的局部特征图的密集连接,得到了综合的考虑。
方法:
Global Convolutional Network (GCN)
-
B中的GCN模块是一个全局的卷积模块(调整k可达到全局),因为参数太多使用了可分离卷积来替代。
-
A是总体模型,其中基本定位结构还是降采和升采的那套结构,只不过加入GCN模块能够使网络更加在意在分类能力上的表现。
-
C是边界精炼模块(BR,也可以叫边界对齐模块),它利用残差模块来实现,相当于学习一下预测输出与标准应有的误差,然后进行修正。
论文中将C表示为公式 :
结果1:
下面这个是对比试验的几个模型
A是作者提出的,B是baseline,C是直接的k * k的卷积核,D是用3 * 3 小的卷积核堆积成的和A一样参数量的结构。它们的比较对象是GCN模块
1、A上的不同的k的测试结果
结果随着核的增大而变得更好,证明作者的分析是正确的,专注于分类的方向是对的。
2、A和C模块的对比结果
GCN模型随着参数的增加效果变好,而C模型随着参数的增加,反而效果变坏了,可能有由于参数巨大而导致不能拟合。
3、A和D对比(D不使用非线性激活函数,达到相同感受野)
由于GCN使用了可分离卷积,当k > 7的时候,3 * 3的卷积核构成与我们的可分离卷积构成的相同的感受野的时候,用的参数更加的多。
4、降低D的stack层数
随着层数的下降,D的表现越来越低,而且参数远大于GCN,因此GCN模型更加有效。
5、解释模型(distance<7)
上图为边缘统计和分割结果的内部统计(distance<7成为边界区域),结果表明我们的模型专注于内部的分类,而边缘区域主要还是靠定位,而我们提出的BR也有助于提升边缘定位的准确性,联合我们的GCN能够达到很好的效果。
结果2:ResNet-GCN
bottleneck module
考虑到好的效果所以将GCN模块直接替代预训练模型里面的bottleneck module,而且使参数和计算成本尽量保持一致。细节如下:
最终的结果为
可以看出我们的基于GCN的ResNet模型应用于分类的效果没有ResNet效果好,但是在分割数据集上继续微调以后,效果超过了ResNet50。
结论
提出了GCN更多的关注于内部的分类,提出的BR对于边界进行了分割学习,论证了大尺寸核原理的正确性,通过使用可分离卷积,在大尺度核、参数量、VRF(Valid Receptive Field)之间达到了一种平衡。
另外,用它替换用于分割的时候的残差网络中的bottleneck module,可以有效地提升分割的准确性。但不适用于分类任务。
PASCAL VOC 2012 (82.2%) and Cityscapes (76.9%).