Octave Convolution阅读笔记

Paper:Octave Convolution
Github:OfficalUnOffical

Octave是指八音阶,在音乐中降低八音阶代表频率减半。

Abstract

自然图像中的信息可以被分解为低频信息和高频信息,低频信息通常是全局结构而高频信息通常是细节信息。类似,卷积的输出特征图也可看作是低频信息和高频信息的混合。

Ocave Convolution将特征图进行分解,从而消耗更少的内存计算资源。另外OctConv通过对低频信息的特殊处理,扩大了感受野,提高了识别效果。

Octave Convolution

CNNs在很多计算机视觉任务上已经取得了很大的成功。目前主要通过较少参数冗余和特征图的channel数来解决。然而特征图在空间上也存在冗余,每一个位置独立存储特征,忽略了相邻位置的公共信息,事实上这些信息可一起存储处理。
Octave Convolution阅读笔记
低频信息变化缓慢,信息量少
高频信息变化剧烈,信息量多

通过相邻位置间的信息共享,可减小低频信息组的空间分辨率,从而有效扩大感受野。

通过将卷积特征图分为高频和低频两组,同时对低频部分的信息进行压缩,可以减少空间的信息冗余。

OctConv是一种即插即用式卷积,不需要修改网络结构或进行超参数调整。

Architecture

Octave Convolution阅读笔记
低频组的特征分辨率只有高频组分辨率的一半
Octave Convolution阅读笔记
高频信息:
Yp,qH=Yp,qHH+Yp,qLHY_{p, q}^{H}=Y_{p, q}^{H \rightarrow H}+Y_{p, q}^{L \rightarrow H}=i,jNkWi+k12,j+k12HHj+k12Xp+i,q+jH+i,jNkWi+k12,j+k12LHX(p2]+i),(q2+j)=\sum_{i, j \in \mathcal{N}_{k}} W_{i+\frac{k-1}{2}, j+\frac{k-1}{2}}^{H \rightarrow H} \quad_{j+\frac{k-1}{2}}^{\top} X_{p+i, q+j}^{H} + \sum_{i, j \in \mathcal{N}_{k}} W_{i+\frac{k-1}{2}, j+\frac{k-1}{2}}^{L \rightarrow H} X_{\left(\left\lfloor\frac{p}{2}\right]+i\right),\left(\left\lfloor\frac{q}{2}\right\rfloor+ j\right)}
低频信息:
Yp,qL=Yp,qLL+Yp,qHLY_{p, q}^{L}=Y_{p, q}^{L \rightarrow L}+Y_{p, q}^{H \rightarrow L}=i,jNkWi+k12,j+k12LL,j+k12Xp+i,q+jL+i,jNkWi+k12,j+k12HLX(2p+0.5+i),(2q+0.5+j)H=\sum_{i, j \in \mathcal{N}_{k}} W_{i+\frac{k-1}{2}, j+\frac{k-1}{2}}^{L \rightarrow L},_{j+\frac{k-1}{2}}^{\top} X_{p+i, q+j}^{L}+\sum_{i, j \in \mathcal{N}_{k}} W_{i+\frac{k-1}{2}, j+\frac{k-1}{2}}^{H \rightarrow L} \quad X_{(2 * p+0.5+i),(2 * q+0.5+j)}^{H}
Octave Convolution阅读笔记
文中分析了两种降采样方式:stride convolution与average pooling。最终采取了后者。因为如图所示,stride convolution会造成一定程度上特征偏移,带特征融合中造成特征不对齐,进而影响性能。
Octave Convolution阅读笔记

上式可简化为:

YH=f(XH;WHH)+ upsample (f(XL;WLH)YL=f(XL;WLL)+f(pool(XH,2);WHL)) \begin{aligned} Y^{H} &=f\left(X^{H} ; W^{H \rightarrow H}\right)+\text { upsample }\left(f\left(X^{L} ; W^{L \rightarrow H}\right)\right.\\ Y^{L} &=f\left(X^{L} ; W^{L \rightarrow L}\right)+f\left(\operatorname{pool}\left(X^{H}, 2\right) ; W^{H \rightarrow L}\right) ) \end{aligned}

pool(X, k) is an average pooling operation with kernel size k × k and stride k. upsample(X, k) is an up-sampling operation by a factor of k via nearest interpolation.

Experimental Evaluation

Octave Convolution阅读笔记
精度相同的情况下,OctConv的FLOPs大大减少。

参考:https://blog.****.net/weixin_37993251/article/details/89333099#commentBox