ICCV 2021 | FcaNet: Frequency Channel Attention Networks 中的频率分析

这篇文章详细解析了FcaNet中基于2DDiscreteCosineTransform(DCT)的频率通道注意力网络,讨论了DCT的计算逻辑,特别强调了GAP操作与DCT低频成分的关系,并通过实验研究了不同频率分量对性能的影响。
摘要由CSDN通过智能技术生成

ICCV 2021 | FcaNet: Frequency Channel Attention Networks 中的频率分析

文章是围绕 2D 的 DCT 进行展开的,本文针对具体的计算逻辑进行梳理和解析。

f ( u , v ) = α u α v H W ∑ i = 0 H − 1 ∑ j = 0 W − 1 f ( i , j ) cos ⁡ ( 2 i + 1 ) u π 2 H cos ⁡ ( 2 j + 1 ) v π 2 W = ∑ i = 0 H − 1 [ α u H cos ⁡ ( 2 i + 1 ) u π 2 H ] ∑ j = 0 W − 1 [ α v W cos ⁡ ( 2 j + 1 ) v π 2 W ] x ( i , j ) = ∑ i = 0 H − 1 A u i ∑ j = 0 W − 1 A v j x ( i , j ) = ∑ i = 0 H − 1 ∑ j = 0 W − 1 x ( i , j ) B u , v i , j ,   u ∈ { 0 , 1 , … , H − 1 } ,   v ∈ { 0 , 1 , … , W − 1 } α u = { 1 u = 0 2 u ≠ 0 , α v = { 1 v = 0 2 v ≠ 0 , x = ∑ u = 0 H − 1 ∑ v = 0 W − 1 f ( u , v ) B u , v i , j \begin{align} \\ f(u,v) &= \sqrt{\frac{\alpha_{u}\alpha_{v}}{HW }} \sum^{H-1}_{i=0} \sum^{W-1}_{j=0} f(i,j) \cos\frac{(2i+1)u\pi}{2H} \cos\frac{(2j+1)v\pi}{2W} \\ & = \sum^{H-1}_{i=0} \left[ \sqrt{ \frac{\alpha_{u}}{H} }\cos\frac{(2i+1)u\pi}{2H}\right] \sum^{W-1}_{j=0} \left[ \sqrt{ \frac{\alpha_{v}}{W} }\cos\frac{(2j+1)v\pi}{2W} \right] x(i,j) \\ & = \sum^{H-1}_{i=0} A^{i}_{u} \sum^{W-1}_{j=0} A^{j}_{v} x(i,j) \\ & = \sum^{H-1}_{i=0} \sum^{W-1}_{j=0} x(i,j) B^{i,j}_{u,v}, \, u \in \{0, 1, \dots, H-1\}, \, v \in \{0, 1, \dots, W-1\} \\ \alpha_{u} & = \left\{ \begin{matrix} 1 & u = 0 \\ 2 & u \ne 0, \end{matrix} \right. \quad \alpha_{v} = \left\{ \begin{matrix} 1 & v = 0 \\ 2 & v \ne 0, \end{matrix} \right. \\ x & = \sum^{H-1}_{u=0} \sum^{W-1}_{v=0} f(u,v) B^{i,j}_{u,v} \end{align} f(u,v)αux=HWαuαv i=0H1j=0W1f(i,j)cos2H(2i+1)uπcos2W(2j+1)vπ=i=0H1[Hαu cos2H(2i+1)uπ]j=0W1[Wαv cos2W(2j+1)vπ]x(i,j)=i=0H1Auij=0W1Avjx(i,j)=i=0H1j=0W1x(i,j)Bu,vi,j,u{0,1,,H1},v{0,1,,W1}={12u=0u=0,αv={12v=0v=0,=u=0H1v=0W1f(u,v)Bu,vi,j

实际上这里是将 2D 图像的空间索引 i , j i,j i,j 看做了时域索引,而频域分量的空间位置则由 h , w h,w h,w 索引。从上面的推导中可以看到,正反变换使用的系数是一样的。这就体现出了 DCT 的简洁性。

矩阵形式为:

f ∈ R H × W = A H ⊤ x A W = A ⊤ x A i f   H = W A H = [ ( i = 0 , u = 0 ) … ( i = 0 , u = H − 1 ) ⋮ ⋮ ⋮ ( i = H − 1 , u = 0 ) … ( i = H − 1 , u = H − 1 ) ] ∈ R H × H A W = [ ( j = 0 , v = 0 ) … ( j = 0 , v = W − 1 ) ⋮ ⋮ ⋮ ( j = W − 1 , v = 0 ) … ( j = W − 1 , v = W − 1 ) ] ∈ R W × H x = A H ⊤ f A W ( H = W 时, A H 与 A W 在是正交的, H ≠ W 时不清楚 ) \begin{align} f & \in \mathbb{R}^{H \times W} = A^{\top}_{H}xA_{W} = A^{\top}xA \quad if \, H=W \\ A_{H} & = \begin{bmatrix} (i=0,u=0) & \dots & (i=0,u=H-1) \\ \vdots & \vdots & \vdots \\ (i=H-1,u=0) & \dots & (i=H-1,u=H-1) \\ \end{bmatrix} \in \mathbb{R}^{H \times H} \\ A_{W} & = \begin{bmatrix} (j=0,v=0) & \dots & (j=0,v=W-1) \\ \vdots & \vdots & \vdots \\ (j=W-1,v=0) & \dots & (j=W-1,v=W-1) \\ \end{bmatrix} \in \mathbb{R}^{W \times H} \\ x & = A^{\top}_{H}fA_{W} (H=W时,A_{H}与A_{{W}}在是正交的,H \ne W时不清楚) \end{align} fAHAWxRH×W=AHxAW=AxAifH=W= (i=0,u=0)(i=H1,u=0)(i=0,u=H1)(i=H1,u=H1) RH×H= (j=0,v=0)(j=W1,v=0)(j=0,v=W1)(j=W1,v=W1) RW×H=AHfAW(H=W时,AHAW在是正交的,H=W时不清楚)

文中证明了 SEBlock 中的 GAP 操作就是 DCT 中的最低频率的组件。

f ( 0 , 0 ) = ∑ i = 0 H − 1 ∑ j = 0 W − 1 x ( i , j ) B 0 , 0 i , j = ∑ i = 0 H − 1 ∑ j = 0 W − 1 x ( i , j ) = GAP ( x ) H W \begin{align} f(0,0) = \sum^{H-1}_{i=0}\sum^{W-1}_{j=0}x(i,j)B^{i,j}_{0,0} = \sum^{H-1}_{i=0}\sum^{W-1}_{j=0}x(i,j) = \text{GAP}(x)HW \end{align} f(0,0)=i=0H1j=0W1x(i,j)B0,0i,j=i=0H1j=0W1x(i,j)=GAP(x)HW

所以作者们在 GAP 的基础上进一步补充了其他的频率成分。考虑变换的公式,假定 H = W = 7 H=W=7 H=W=7,则其中的基函数可以直接得出:

α u 7 cos ⁡ ( 2 i + 1 ) u π 14 = α u 7 cos ⁡ ( π u 7 ( i + 0.5 ) ) ,   u ∈ { 0 , 1 , … , 6 } \begin{align} \sqrt{ \frac{\alpha_{u}}{7} } \cos\frac{(2i+1)u\pi}{14} = \sqrt{ \frac{\alpha_{u}}{7} } \cos\left( \pi \frac{u}{7} (i+0.5) \right), \, u \in \{0, 1, \dots, 6\} \end{align} 7αu cos14(2i+1)uπ=7αu cos(π7u(i+0.5)),u{0,1,,6}

对应于代码中的:

def build_filter(self, pos, freq, POS):
    result = math.cos(math.pi * freq * (pos + 0.5) / POS) / math.sqrt(POS) 
    if freq == 0:
        return result
    else:
        return result * math.sqrt(2)

这里的 freq 实际上对应的就是前式里的 u u u v v v。因此,对于 7 × 7 7 \times 7 7×7 的数据,实际上存在 49 个分量,作者们通过大量的实验对不同分量单独使用时的效果进行了汇总:

在这里插入图片描述

通过对得分由高到低排序得到 49 个 ( u , v ) (u,v) (u,v) 对,在代码中直接按情况选择即可

参考链接

  • 《数字图像处理》图像表征:离散傅里叶变换(DFT)、离散余弦变换(DCT)、主成分分析(PCA)- zhiwei 的文章 - 知乎 https://zhuanlan.zhihu.com/p/563668048
  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值