Skip to content
RepMLPNet: Hierarchical Vision MLP with Re-parameterized Locality 阅读笔记

  • Xiaohan Ding,Honghao Chen,Xiangyu Zhang,Jungong Han,Guiguang Ding
  • Beijing National Research Center for Information Science and Technology (BNRist)
  • School of Software, Tsinghua University, Beijing, China
  • Institute of Automation, Chinese Academy of Sciences
  • MEGVII Technology
  • Computer Science Department, Aberystwyth University, SY23 3FL, UK
  • CVPR 2022
  • Code

背景

卷积网络的成功中局部先验发挥着重要的作用,但是传统卷积网络无法很好的处理长距离依赖关系,只能通过加深网络结构缓解问题,而过深的网络导致最终特征图分辨率过小通道数过多反而不利于特征提取。为了解决卷积网络的长距离依赖问题,一些方法采用类似MLP的机制,因为对于全连接层(FC)来说可以获得任意两点之间的关系信息,但是MLP将特征图Flatten的做法会导致位置关系的丢失。

本文提出了RepMLPNet,其中通过Locality Injection的方法为FC引入位置信息,并且通过结构重参数化机制减少网络在推理时的参数量和计算量,增加推理速度。

图1


Method

经过重参数化的Locality Injection

基础公式表示

  • 对于卷积操作,有张量MRn×c×h×w,其中n表示batch size,c为通道数,h为高度,w为宽度。使用FW来表示卷积核和FC核。因此对于一个核为k×k的卷积运算来说有:

    M(out)=CONV(M(in),F,p)

    其中M(out)Rn×o×h×wo为卷积输出通道,p指Padding大小,FRo×c×k×k为卷积核。

  • 对于FC操作,输入维度为p,输出维度为qV(in)Rn×p表示输入,V(out)Rn×q表示输出,FC核为WRq×p,则有矩阵乘法(MMUL)公式:

    V(out)=MMUL(V(in),W)=V(in)WT

    假设FC以M(in)作为输入,M(out)作为输出,所以需要Reshape操作(缩写为RS)转换为向量,即V(in)=RS(M(in),(n,chw)),所以上述公式改写为:

    M(out)=MMUL(M(in),W)

Locality Injection

如图1所示,通道感知机和局部感知机在训练时是并行的,都使用M(in)作为输入,可以通过如下方法将局部感知机融合进通道感知机中。

首先,假设FC核为W(ohw,chw),卷积核为F(o,c,k,k),Padding大小为p,则可以构建一个同时包含局部感知机和通道感知机的FC操作(核为W),即

MMUL(M(in),W)=MMUL(M(in),W)+CONV(M(in),F,p)

又因为对于任意FC核W(1)W(2)存在:

MMUL(M(in),W(1))+MMUL(M(in),W(2))=MMUL(M(in),W(1)+W(2))

所以可以寻找一个FC核W(F,p)使满足:

MMUL(M(in),W(F,p))=CONV(M(in),F,p)

以替换公式(1)中的卷积操作。

因为卷积操作可以被看作在空间位置上带有共享权重的稀疏FC,所以对于任意M(in),F,p都存在对应的FC核W(F,p),因此* 问题的关键就在于寻找这个FC核的计算方法*。

下述方法即为寻找W(F,p)的过程:

首先,根据“基础公式表示”的FC公式,一个核为W(F,p)的FC的操作即为

V(out)=V(in)W(F,p)T

此时引入一个Identity矩阵I(chw,chw),得到

V(out)=V(in)(IW(F,p)T)

同时为了纠正张量尺寸,添加Reshape,有

V(out)=V(in)RS(IW(F,p)T,(chw,ohw))

可以注意到IW(F,p)T可通过一个输入特征图从I Reshape到M(I),核为F的卷积操作得到,即:

IW(F,p)T=CONV(RS(I,(chw,c,h,w)),F,p)=CONV(M(I),F,p)

因此,综合公式(4)、(6)、(7),核W(F,p)计算推导为

W(F,p)T=RS(IW(F,p)T,(chw,ohw))W(F,p)T=RS(CONV(M(I),F,p),(chw,ohw))W(F,p)=RS(CONV(M(I),F,p),(chw,ohw))T

根据上述过程,总结一下就是一个卷积核等效的FC核是对Identity矩阵进行卷积和适当Reshape的结果,且该过程可微。

RepMLPNet

RepMLPBlock Components

图2

  • 全局感知机:输入维度(n,c,h,w)经过AvgPool后变为向量(n,c,1,1)然后经过两个FC层。

  • 通道感知机:如果FC层的输入输出通道相等,那么常规的FC层会产生(chw)2个参数,带来很大的参数量。一个比较自然的想法是参照深度卷积,对每个通道做FC操作,因此只需要计算c个通道的FC,即参数量为c(hw)2。但是该参数量仍然过大,并且这样做会丢失通道之间的依赖关系,因此本文采用分组共享参数的方式构建“Set-Sharing FC”层。其中,对于输入张量,分为s个Set,每组的多通道共享权重集合,因此参数量减少为s(hw)2。如图2所示,n=1,c=4,s=2,相当于将输入的4通道划分为2组,每个组有自己的权重集合。

    其具体计算过程为:因为划分为s组,所以有cs个通道,考虑batch size则有ncs个维度为(s,h,w)的张量,即(n,c,h,w)(ncs,s,h,w)。将ncs个张量分别Flatten,得到维度为(ncs,shw)的FC输入张量,然后再对每个张量做FC操作,因此FC操作的参数量为s(hw)2=s(hw)2。但是该方法与参照深度卷积的FC操作相比并不能减少计算量。实际操作时,“Set-Sharing FC”将(ncs,shw) Reshape为(ncs,shw,1,1)然后使用1x1卷积进行计算。

  • 局部感知机:其中使用的卷积为深度卷积。

    通过Locality Injection将局部感知机融合进通道感知机的过程:

    首先明确局部感知机包含一个卷积操作和一次Batch Normalization,其中FRs×1×k×k为卷积核,μ,σ,γ,βRs分别为BN操作中的均值、标准差、Scaling因子与bias。所以根据BN计算公式,有:

    γiCONV(M,F,p)μiσi+βi=CONV(M,γiFσi,p)γiμiσi+βi

    假设存在Fi,:,:,:=γiFi,:,:,:σibi=γiμiσi+βi,则公式(9)可简写为:

    γiCONV(M,F,p)i,:,:,:μiσi+βi=CONV(M,F,p)i,:,:,:+b,1is

    因此,通过公式(8)可以转换每个卷积操作,产生FC核并叠加到通道感知机中。

分层架构设计

图3

与常规MLP模型的初始大幅降采样后使用小Size计算不同,文中的模型采用卷积网络中常见的分层设计。对于输入图片,采用一个4x4且Stride=4的卷积进行4倍下采样,对于后面的每个阶段,采用Embedding层减半尺寸并加倍通道数。网络规模如下表所示:


实验与结果

图像分类

在相同的设置下,RepMLPNetT256在精度上比MLP-Mixer高出0.5%,而前者的FLOPs只有后者的1/4。在简单的训练方法下,ResMLP和MLP-Mixer明显下降,例如,在没有300个epoch DeiT式训练的情况下,ResMLP-S12的准确性下降了8.9%(76.6%→67.7%)。在FLOPs相当的情况下,MLP比CNN快,例如,RepMLPNet-D256的FLOPs比ResNeXt-101高,但运行速度是后者的1.6倍。

语义分割

消融实验

上次更新于: