先附代码和文章,可以先结合来看
代码:GitHub - LeapLabTHU/ACmix: Official repository of ACmix (CVPR2022)
文章:[2111.14556] On the Integration of Self-Attention and Convolution (arxiv.org)
ACmix是卷积网络和transformer两种强大的网络优势的集合,具有较低的计算开销,同时也能提升网络性能,在卷积网络和transformer各行其是的今天,是一种融合两种优势的不错方法。
这篇文章此次先介绍下ACmix的结构和代码,该结构的具体应用有时间更新。
首先,该作者认为一个kxk卷积可以看做是由kxk个1x1卷积的拼接构成的,而transformer中的线性层也可以看做是一个1x1的卷积,这是这篇文章成立的前提。
其次,作者在此基础上探索将两者的优势结合,提出如下图所示的结构,在两者都是由1x1卷积构成的前提下,将1x1卷积进行不同的组合构成卷积或者self-Attention,再将两种结构并行连接。
首先卷积部分,当一个3x3卷积滑过一张图时,可分为两阶段,第一阶段是采用9个1x1卷积分别对图片做卷积操作,第二阶段是将得到的9个特征图按照一定的方式排列求和。例如,3x3卷积核的左上角的点不能与图片右上角像素点做乘积,而图片左上角像素点只与卷积核左上角权重相乘,则相应位置的1x1卷积应该往左上方偏移一个像素同时舍弃掉最右列与最下排的像素点,同理,可分析出9个1x1卷积的排列方式如下图所示: