ZilinGao / Global-Second-order-Pooling-Convolutional-Networks

Global Second-order Pooling Convolutional Networks (cvpr2019 GSoP)
MIT License
129 stars 29 forks source link

about c*c ---> 1*c #11

Closed foralliance closed 1 year ago

foralliance commented 3 years ago

@ZilinGao ! 您好! 在Figure1中,通过2阶方式得到C×C的covariance matrix,很好理解,您paper中给出的理论描述也很清晰:its ith row indicates statistical dependency of channel i with all channels。 据我了解,很多non-local方法都是直接将这个C×C的covariance matrix视为attention map,和原始特征作用来修正。

而在您这篇paper中,后面多了额外的2步:row-wise conv+conv。以此来得到1×C的向量,将其视为attention map在修正原始特征。 这个就有点看不懂了,此时这个1×C的向量每个元素的含义是什么呢?

麻烦了!!感谢!!

Hsuey commented 2 years ago

@foralliance 请问你这里理解了吗?我对cc -> 4c -> 1c 这几步也不是很懂,能跟我解答一下吗?

ZilinGao commented 2 years ago

@foralliance 请问你这里理解了吗?我对c_c -> 4c -> 1_c 这几步也不是很懂,能跟我解答一下吗?

你好 ,感谢对GSoP工作的关注!

GSoP通过计算通道之间的相关性,建模通道重要性,并用来激励每个通道的特征。

其中,协方差矩阵的尺寸为$C \times C$,其中的第i行表示第i个通道与其他各个通道的相关性。通过对每行的协方差进行独立的卷积 (即:row-wise conv. $C\times C \rightarrow 4C $),获得每个通道重要性的表达;再利用卷积层,对不同channel之间的重要性进行交互,最终得到一个与输入tensor 通道数相同的矢量 ($ 4C \rightarrow C $),该矢量的每个元素作为激励权重,施加到输入特征上。

希望上述回复可以解决您的困惑。

Hsuey commented 2 years ago

@ZilinGao 感谢您的解答! 但是我对这个卷积运算(row-wise conv,C×C → 4C)还是不太理解,请问能提供row-wise conv的具体计算公式吗?

ZilinGao commented 2 years ago

@ZilinGao 感谢您的解答! 但是我对这个卷积运算(row-wise conv,C×C → 4C)还是不太理解,请问能提供row-wise conv的具体计算公式吗?

记协方差矩阵 $P\in \mathbf R ^{C_1\times C_2}$, (此处$C_1=C_2$); 卷积参数为$K\in \mathbf R^{N \times C_1 \times C_2}$,row-wise conv.输出记为$Q\in \mathbf R^{C_1\times N}$, $N=4$. 省略卷积过程中的bias, 那么row-wise conv. 可以表示为:

$Q_{i,n} = \sumj P{i,j} \cdot K_{n,i,j}.$

该过程在实现过程中可以利用分组卷积方便地实现。