今天看CAPS源码时发现在计算x1
在I2
中对应位置的概率分布(对应于论文的3.2 Differentiable Matching Layer)有两种方式correlation
和distance
:
-
correlation
: 将I1
和I2
的 feature mapf1
和f2
作矩阵乘法,然后求softmax作为概率分布p
:
p = s o f t m a x ( f 1 ⋅ f 2 T ) p = softmax(f_1·f_2^T) p=softmax(f1⋅f2T)sim = feat1.bmm(feat2.transpose(1, 2)) prob = F.softmax(sim, dim=-1)
理解为两图像的feature map中的值越大的两点越可能是预期匹配点。
-
distance
:通过求f1
和f2
的欧式距离(不确定能不能这么理解)确定概率分布p
,距离越近概率越大:
p = s o f t m a x ( − ( f 1 2 + ( f 2 2 ) T − 2 f 1 f 2 T ) ) p = softmax(-(f_1^2 + (f_2^2)^T - 2f_1f_2^T)) p=softmax(−(f12+(f22)T−2f1f2T))dist = torch.sum(feat1**2, dim=-1, keepdim=True) + \ torch.sum(feat2**2, dim=-1, keepdim=True).transpose(1, 2) - \ 2 * feat1.bmm(feat2.transpose(1, 2)) prob = F.softmax(-dist, dim=-1)
理解为两图像的feature map中的值相差越小的两点越可能是预期匹配点。