ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks【阅读笔记】
这篇文章思路其实很简单,主要利用卷积权重的可加性,其中的一些实验结论挺有趣的。
现在的模型存在两个问题:
- 模型需要过多计算资源。
- 定制新的结构需要大量的人力和时间。
本文作者希望,在不增加额外计算消耗的同时提升表现。
目前针对CNN结构的研究主要集中于两个方向:
- 层与层之间如何相互连接(简单堆叠;恒等映射;稠密连接等)
- 不同层的输出是如何组合以增强模型的表示能力的。
本文研究的是卷积核中不同位置权重的关系。
解决方案:
提出了非对称卷积模块,包含三个并行的卷积层(\(d\times d\), \(1\times d\), \(d\times 1\))。训练完成后,将两个非对称卷积的权重加到方形卷积核的中心(卷积权重具有可加性,"obvious but has long been ignored")。
优点:
- 没有引入任何超参数,因此可以与不同结构网络结合且不需微调。
- 易于实现。
- 相比原始结构,不需要额外的预测时计算消耗。
作者通过实验,发现卷积核的中心十字位置更为重要。通过加入非对称的卷积核,可以增强中心骨架的能力,使得模型对于旋转形变具有更强的鲁棒性。
非对称卷积通常被用于模型压缩和加速。用一对\(1\times d\), \(d\times 1\)的卷积来代替\(d\times d\)卷积,以减小计算量。
卷积权重可加性
\(I*K^{(1)}+I*K^{(2)}=I*(K^{(1)}\oplus K^{(2)})\),其中\(I\)为矩阵,\(K^{(1)},K^{(2)}\)为两个尺寸可兼容(小的可以叠放于大的之上)的二维卷积核,\(\oplus\)为逐元加法。
因为做法比较简单,主要记录一下一些实验结果。
实验结果
1. 在不同数据集上,使用不同backbone,ACNet都可以带来提升。
2. 关于ACNet有效性的实验。
主要实验水平卷积核;垂直卷积核以及不同分支中BN的有效性。
上表结果表明,去除任意分支都会导致表现下降。尽管加入水平或垂直卷积都可以提升表现,但是他们的效果有所差别。这可能是由于在时间操作中,对水平和垂直方向的处理是不同的。比如在训练时,通常进行了随机水平翻转而没有进行垂直翻转。这导致当模型见到一张垂直翻转的图像时,原始的3x3卷积可能会产生无意义的特征。但是水平卷积在这样的情况下却不受影响,其输出时一样的,仍能提取出正确的特征。因此ACB(特别是其中的水平卷积)可能可以提升模型针对旋转形变时的鲁棒性,使模型在针对未见数据时有更好的泛化能力。
之后用旋转形变的图像测试模型(逆时针90°旋转,180°旋转,上下翻转)。每个模型的准确率都显著下降,但是拥有水平卷积的模型在针对180°旋转和上下翻转的情况时,准确率相对较高。
3. 关于卷积中不同位置的重要性
加入水平和垂直卷积实际上可以看作对方形卷积骨架部分的一种增强方式,这可能也是ACB有效的原因。
实验中将卷积中的权重随机置零,通过观察模型准确率的下降说明卷积不同位置的重要程度。(图中的sparsity ratio计算方式是去掉的权重数/卷积核总权重数)
可以看到,对于正常的卷积核,骨架部分(中心十字)更重要,而去除四角部分带来的损失更小。
通过计算每个位置的平均相对重要程度,也可以发现中心位置更重要。而ACNet则扩大了这种不同位置之间重要性不平衡的现象。
如果这对不对称卷积不加在骨架位置,而是在边缘位置进行叠加。边缘位置的重要性也被增强了,但并不能显著减弱其他位置的重要性。这样操作的准确率也不如在骨架部分进行相加。因此,ACNet的有效性可能就是由于增强了骨架部分的能力。