Image processing 如何在Pytorch中有效地找到两个点集之间的对应关系,而无需嵌套for循环?
我现在有两个点集(张量)A和B,形状像 A.size()>>(50,3),例如:[[0,0,0],[0,1,2],…,[1,1,1]] B.大小()>>(10,3) 其中,第一个尺寸表示点数,第二个尺寸表示坐标(x、y、z)Image processing 如何在Pytorch中有效地找到两个点集之间的对应关系,而无需嵌套for循环?,image-processing,computer-vision,pytorch,tensor,Image Processing,Computer Vision,Pytorch,Tensor,我现在有两个点集(张量)A和B,形状像 A.size()>>(50,3),例如:[[0,0,0],[0,1,2],…,[1,1,1]] B.大小()>>(10,3) 其中,第一个尺寸表示点数,第二个尺寸表示坐标(x、y、z) 在某种程度上,这个问题也可以简化为“寻找两个张量之间的公共元素”。有没有一种不使用嵌套循环的快速方法可以做到这一点?您可以使用以下方法快速计算所有50x10距离: d2=((A[:,无,:]-B[无,…])**2)和(dim=2) 获得所有成对距离后,如果距离不超过阈值,
在某种程度上,这个问题也可以简化为“寻找两个张量之间的公共元素”。有没有一种不使用嵌套循环的快速方法可以做到这一点?您可以使用以下方法快速计算所有50x10距离:
d2=((A[:,无,:]-B[无,…])**2)和(dim=2)
获得所有成对距离后,如果距离不超过阈值,则可以选择“相似”距离:
(d2
返回“相似”点的a-idx、b-idx
对
如果要精确匹配点,可以执行以下操作:
((a[:,None,:]==b[None,…]).all(dim=2)).nonzero()
您可以使用以下方法快速计算所有50x10距离:
d2=((A[:,无,:]-B[无,…])**2)和(dim=2)
获得所有成对距离后,如果距离不超过阈值,则可以选择“相似”距离:
(d2
返回“相似”点的a-idx、b-idx
对
如果要精确匹配点,可以执行以下操作:
((a[:,None,:]==b[None,…]).all(dim=2)).nonzero()
所谓公共元素,是指(x,y,z)的公共集吗?所谓公共元素,是指(x,y,z)的公共集吗?非常感谢!这是一个非常简单有效的答案,非常有效。非常感谢!这是一个非常简单有效的答案,效果非常理想