目标是想做一个简单的可视化界面展示预测图片结果的(做的二分类问题,判别输入图像的真假),现在遇到的问题是可以对结果进行预测,但是默认为假。
#可视化界面结果显示部分代码片段如下所示,
result = classfication.detect_image(img)# 测算一下该img属于某个label的概率
max_index = np.argmax(result) # 找出概率最高的
label = ["这是假指纹。","这是真指纹。"]
self.label.setText(label[max_index])
self.label.setAlignment(Qt.AlignCenter)
其中result语句对应的classfication.detect_image(计算图片概率)的代码如下:
def detect_image(self, image):
with torch.no_grad():
photo = torch.from_numpy(image)
if self.cuda:
photo = photo.cuda()
preds = torch.softmax(self.model(photo)[0], dim=-1).cpu().numpy()
probability = np.max(preds)
想请问一下是哪边发生了问题?
根据你提供的代码片段,可能出现问题的地方有两个:
这很可能是因为在你的模型中,真和假的标签分别是 0 和 1,而在 label
列表中,假和真的顺序与模型中定义的不一样。你可以尝试更改 label
列表的顺序:
label = ["这是真指纹。", "这是假指纹。"]
在你提供的片段中,你调用了 setText
和 setAlignment
方法来设置 QLabel 的文本和对齐方式,但是并没有看到你如何将该 QLabel 添加到你的 GUI 界面中。因此,你需要确保正确的创建了 QLabel,并将其添加到目标布局中。
如果你仍然无法确定问题所在,你可以通过以下方式进行排查:
检查你的模型是否已经训练好,是否可以正确地分类输入图像。你可以使用测试数据集来评估模型的分类效果,检查模型是否能够输出正确的预测结果。
在可视化界面中添加调试语句或打印语句,输出计算结果、标签值、预测概率等信息。这样可以让你更清楚地知道代码的执行过程,进而确定问题所在。
希望这些解答对你有所帮助。