如何在python中重塑128维图像矢量
我试图计算两幅图像之间的如何在python中重塑128维图像矢量,python,opencv,vector,Python,Opencv,Vector,我试图计算两幅图像之间的欧几里德距离。为此,我首先获取图像的128d数组,然后使用cv2.norm()获取距离。代码如下: embedder = cv2.dnn.readNetFromTorch(<model_path>) embedder.setInput(faceBlob) unknown_vector = embedder.forward() ### # SOME CODE ### for i in range(len(known_embeddings["embedding
欧几里德距离。为此,我首先获取图像的128d
数组,然后使用cv2.norm()
获取距离。代码如下:
embedder = cv2.dnn.readNetFromTorch(<model_path>)
embedder.setInput(faceBlob)
unknown_vector = embedder.forward()
###
# SOME CODE
###
for i in range(len(known_embeddings["embeddings"])):
known_vector = known_embeddings["embeddings"][i]
distance = cv2.norm(unknown_vector, known_vector)
从上面看,它们的形状不同。如何转换未知_向量
以匹配已知_向量
的形状。请帮忙。谢谢您不应该在不必要的地方使用循环。尽可能使用矢量化操作
此外,我不确定您为什么要使用opencv
,pytorch
,我认为单独使用pytorch
就足以完成这项任务(如果没有,请在评论中澄清),请参见以下内容:
import torch
embedding = torch.nn.Embedding(1000, 50)
example_vector = torch.randn(50)
# Broadcast to (1000, 50) automatically, result is of shape 1000
distances = torch.norm(example_vector.reshape(1, -1) - embedding.weight, dim=1)
距离
包含示例_向量
到每个嵌入的距离,您可以从中获取torch.max
,或min
或任何您想要的内容
import torch
embedding = torch.nn.Embedding(1000, 50)
example_vector = torch.randn(50)
# Broadcast to (1000, 50) automatically, result is of shape 1000
distances = torch.norm(example_vector.reshape(1, -1) - embedding.weight, dim=1)