论文:ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric
Convolution Blocks
论文链接:https://arxiv.org/abs/1908.03930
代码链接:https://github.com/DingXiaoH/ACNet
图像分类领域,从VGG到DenseNet那几年是比较活跃的,最近两年这个领域的论文越来越少见了,要做出有影响力的工作也越来越难。而这两年这个领域的主要方向集中在:1、网络结构搜索,比如EfficientNet算目前效果比较好的代表作。2、更好的特征表达,这部分跟第一部分并不是完全独立的,主要是把特征复用、特征细化做得更加极致,代表作有HRNet、Res2Net等。
当然,以上这些不是这篇博客要讲的内容,这篇博客要介绍的是ICCV2019上的一篇论文:ACNet,全称是Asymmetric Convolution Net,翻译过来就是非对称卷积网络。这篇论文也是从更好的特征表达角度切入实现效果提升,不过更重要的是:没有带来额外的超参数,而且在推理(或者叫验证、部署,本质上都是只执行前向计算)阶段没有增加计算量,在我看来后者更有吸引力。
在开始介绍ACNet之前,先来看一个关于卷积计算的式子,式子中I表示一个二维矩阵,可以看做是卷积层的输入,也就是输入特征图,K(1)和K(2)分别表示2个二维卷积核,这2个卷积核的宽和高是一样的,那么下面这个式子的意思就是:先进行K(1)和I卷积,K(2)和I卷积后再对结果进行相加,与先进行K(1)和K(2)的逐点相加后再和I进行卷积得到的结果是一致的。这是ACNet能够在推理阶段不增加任何计算量的原因。
接下来直接通过Figure1来看ACNet的思想。整体上ACNet的思想分为训练和推理阶段,训练阶段重点在于强化特征提取,实现效果提升;推理阶段重点在于卷积核融合,实现0计算量增加。
训练阶段:因为3 ×\times× 3尺寸的卷积核是目前大部分网络的标配,所以这篇论文的实验都是针对3 ×\times× 3尺寸进行的。训练阶段简单来说就是将现有网络(假设用Net_origin表示,比如ResNet)中每一个3 ×\times×