Pytorch 如何在暹罗神经网络测试中比较一张图片和所有数据?
我已经用Pytork建立了暹罗神经网络。但我只是通过插入两张图片来测试它,并计算相似性分数,其中0表示图片不同,1表示图片相同Pytorch 如何在暹罗神经网络测试中比较一张图片和所有数据?,pytorch,prediction,siamese-network,Pytorch,Prediction,Siamese Network,我已经用Pytork建立了暹罗神经网络。但我只是通过插入两张图片来测试它,并计算相似性分数,其中0表示图片不同,1表示图片相同 import numpy as np import os, sys from PIL import Image dir_name = "/Users/tania/Desktop/Aksara/Compare" #this should contain 26 images only X = [] for i in os.listdir(dir_name): if
import numpy as np
import os, sys
from PIL import Image
dir_name = "/Users/tania/Desktop/Aksara/Compare" #this should contain 26 images only
X = []
for i in os.listdir(dir_name):
if ".PNG" in i:
X.append(torch.from_numpy(np.array(Image.open("./Compare/" + i))))
x1 = np.array(Image.open("/Users/tania/Desktop/Aksara/TEST/Ba/B/B.PNG"))
x1 = transforms(x1)
x1 = torch.from_numpy(x1)
#x1 = torch.stack([x1])
closest = 0.0 #highest similarity
closest_letter_idx = 0 #index of closest letter 0=A, 1=B, ...
cnt = 0
for i in X:
output = model(x1,i) #assuming x1 is your input image
output = torch.sigmoid(output)
if output > closest:
closest_letter_idx = cnt
closest = output
cnt += 1
两张图片都不同,因此输出
File "test.py", line 83, in <module>
X.append(torch.from_numpy(Image.open("./Compare/" + i)))
TypeError: expected np.ndarray (got PngImageFile)
文件“test.py”,第83行,在
X.append(torch.from_numpy(Image.open(“./Compare/”+i)))
TypeError:应为np.ndarray(获取PngImageFile)
这是目录
是的,有一种方法,您可以使用softmax功能:
output = torch.softmax(output)
这将返回26个值的张量,每个值对应于图像对应于26个类中每个类的概率。因此,张量之和为1(100%)
然而,与暹罗网络相比,该方法适用于分类任务。暹罗网络在输入之间进行比较,而不是将输入分类。从你的问题来看,你似乎试图将一张图片与另外26张图片进行比较。您可以循环所有26个样本进行比较,计算并保存每个样本的相似性分数,并输出最大值(即如果您不想修改模型):
是的,有一种方法,您可以使用softmax功能:
output = torch.softmax(output)
这将返回26个值的张量,每个值对应于图像对应于26个类中每个类的概率。因此,张量之和为1(100%)
然而,与暹罗网络相比,该方法适用于分类任务。暹罗网络在输入之间进行比较,而不是将输入分类。从你的问题来看,你似乎试图将一张图片与另外26张图片进行比较。您可以循环所有26个样本进行比较,计算并保存每个样本的相似性分数,并输出最大值(即如果您不想修改模型):
评论不用于扩展讨论;此对话已结束。评论不用于扩展讨论;这段对话已经结束。