为什么要将两个图像相乘以查看相关性?

Why do you multiply the two images to see the correlation?

我对 CP Viton 模块有一些疑问:

feature_A = feature_A.transpose(2,3).contiguous().view(b,c,h*w)

feature_B = feature_B.view(b,c,h*w).transpose(1,2)

# perform matrix mult.
feature_mul = torch.bmm(feature_B,feature_A)
print(feature_mul.size()) #torch.Size([4, 192, 192])

在此代码

  1. 对于矩阵的乘法,不知道为什么他们弄成b,hw,hw.

  2. 据说像下面这样乘以图像的形状是为了提取相关性,但我不知道为什么。我说的是 bmm 部分。

空间相关性包括计算每个 (feature_A[k,:,i], feature_B[k,:,j]) 特征对的特征向量的点积。因此,您首先需要展平空间维度,这会在两个张量上产生大小为 h*w 的维度。您的两个操作数将具有 (b, c, hw)(b, hw, c) 的形状。作为应用 bmm 的结果,您最终得到形状为 (b, hw, hw)

的张量