Paper:Octave Convolution
Github:Offical 和 UnOffical
Octave是指八音阶,在音乐中降低八音阶代表频率减半。
自然图像中的信息可以被分解为低频信息和高频信息,低频信息通常是全局结构而高频信息通常是细节信息。类似,卷积的输出特征图也可看作是低频信息和高频信息的混合。
Ocave Convolution将特征图进行分解
,从而消耗更少的内存
和计算资源
。另外OctConv通过对低频信息的特殊处理,扩大了感受野
,提高了识别效果。
CNNs在很多计算机视觉任务上已经取得了很大的成功。目前主要通过较少参数冗余和特征图的channel数来解决。然而特征图
在空间上也存在冗余,每一个位置独立存储特征,忽略了相邻位置的公共信息
,事实上这些信息可一起存储处理。
低频信息变化缓慢,信息量少
高频信息变化剧烈,信息量多
通过相邻位置间的信息共享,可减小低频信息组的空间分辨率,从而有效扩大感受野。
通过将卷积特征图分为高频和低频两组,同时对低频部分的信息进行压缩,可以减少空间的信息冗余。
OctConv是一种即插即用式卷积,不需要修改网络结构或进行超参数调整。
低频组的特征分辨率只有高频组分辨率的一半
高频信息:
Y p , q H = Y p , q H → H + Y p , q L → H Y_{p, q}^{H}=Y_{p, q}^{H \rightarrow H}+Y_{p, q}^{L \rightarrow H} Yp,qH=Yp,qH→H+Yp,qL→H = ∑ i , j ∈ N k W i + k − 1 2 , j + k − 1 2 H → H j + k − 1 2 ⊤ X p + i , q + j H + ∑ i , j ∈ N k W i + k − 1 2 , j + k − 1 2 L → H X ( ⌊ p 2 ] + i ) , ( ⌊ q 2 ⌋ + 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)} =i,j∈Nk∑Wi+2k−1,j+2k−1H→Hj+2k−1⊤Xp+i,q+jH+i,j∈Nk∑Wi+2k−1,j+2k−1L→HX(⌊2p]+i),(⌊2q⌋+j)
低频信息:
Y p , q L = Y p , q L → L + Y p , q H → L Y_{p, q}^{L}=Y_{p, q}^{L \rightarrow L}+Y_{p, q}^{H \rightarrow L} Yp,qL=Yp,qL→L+Yp,qH→L = ∑ i , j ∈ N k W i + k − 1 2 , j + k − 1 2 L → L , j + k − 1 2 ⊤ X p + i , q + j L + ∑ i , j ∈ N k W i + k − 1 2 , j + k − 1 2 H → L X ( 2 ∗ p + 0.5 + i ) , ( 2 ∗ q + 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} =i,j∈Nk∑Wi+2k−1,j+2k−1L→L,j+2k−1⊤Xp+i,q+jL+i,j∈Nk∑Wi+2k−1,j+2k−1H→LX(2∗p+0.5+i),(2∗q+0.5+j)H
文中分析了两种降采样方式:stride convolution与average pooling。最终采取了后者。因为如图所示,stride convolution会造成一定程度上特征偏移,带特征融合中造成特征不对齐,进而影响性能。
上式可简化为:
Y H = f ( X H ; W H → H ) + upsample ( f ( X L ; W L → H ) Y L = f ( X L ; W L → L ) + f ( pool ( X H , 2 ) ; W H → L ) ) \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} YHYL=f(XH;WH→H)+ upsample (f(XL;WL→H)=f(XL;WL→L)+f(pool(XH,2);WH→L))
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
.
参考:https://blog.csdn.net/weixin_37993251/article/details/89333099#commentBox