为什么要将两个图像相乘以查看相关性?
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])
在此代码
对于矩阵的乘法,不知道为什么他们弄成b,hw,hw.
据说像下面这样乘以图像的形状是为了提取相关性,但我不知道为什么。我说的是 bmm
部分。
空间相关性包括计算每个 (feature_A[k,:,i], feature_B[k,:,j])
特征对的特征向量的点积。因此,您首先需要展平空间维度,这会在两个张量上产生大小为 h*w
的维度。您的两个操作数将具有 (b, c, hw)
和 (b, hw, c)
的形状。作为应用 bmm
的结果,您最终得到形状为 (b, hw, hw)
的张量
我对 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])
在此代码
对于矩阵的乘法,不知道为什么他们弄成b,hw,hw.
据说像下面这样乘以图像的形状是为了提取相关性,但我不知道为什么。我说的是
bmm
部分。
空间相关性包括计算每个 (feature_A[k,:,i], feature_B[k,:,j])
特征对的特征向量的点积。因此,您首先需要展平空间维度,这会在两个张量上产生大小为 h*w
的维度。您的两个操作数将具有 (b, c, hw)
和 (b, hw, c)
的形状。作为应用 bmm
的结果,您最终得到形状为 (b, hw, hw)