gpt4 book ai didi

python - 如何在 Resnet 50 分类中输出置信度?

转载 作者:行者123 更新时间:2023-12-02 16:01:51 24 4
gpt4 key购买 nike

我训练了 Resnet-50 分类网络来对我的对象进行分类,并使用以下代码来评估网络。

from tensorflow.keras.models import load_model
import cv2
import numpy as np
import os

class_names = ["x", "y", "b","g", "xx", "yy", "bb","gg", "xyz","xzy","yy"]


model = load_model('transfer_resnet.h5')


model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])

imgg = cv2.imread('/path to image/a1.jpg')


img = cv2.resize(imgg,(224,224))
img = np.reshape(img,[1,224,224,3])


classes = np.argmax(model.predict(img), axis = -1)

print(classes)

for i in classes:
names = class_names[i]
print(names)



cv2.imshow("id",imgg)
key = cv2.waitKey(0)
处理后系统的输出只是对象的类别,没有显示任何置信百分比,我的问题是如何在测试期间也显示置信百分比?

最佳答案

model.predict给你每门课的信心。使用 np.argmax最重要的是,您只能获得最自信的类(class)。
因此,只需执行以下操作:

confidences = np.squeeze(model.predict(img))
我已添加 np.squeeze 删除任何单一维度,因为我们只查看单个图像,因此批量大小为 1。因此第一个维度的大小仅为 1,所以我输入 np.squeeze删除单例维度。
此外,您可以通过执行以下操作获得此图像的最佳类以及信心:
class = np.argmax(confidences)
name = class_names[class]
top_conf = confidences[class]
如果您想更进一步并显示预测中的前 5 个类别,您可以执行 np.argsort ,对预测进行排序,然后找到相应类别的索引并显示这些置信度。请注意,我将按负数排序,以便我们按降序获得置信度,因此排序的第一个索引对应于具有最高置信度的类。我还将按 100 缩放概率,以根据您的要求为您提供百分比置信度:
k = 5
confidences = np.squeeze(model.predict(img))
inds = np.argsort(-confidences)
top_k = inds[:k]
top_confidences = confidences[inds]

for i, (conf, ind) in enumerate(zip(top_confidences, top_k)):
print(f'Class #{i + 1} - {class_names[ind]} - Confidence: {100 * conf}%')
您可以修改代码以显示您想要的数量。我已经让你轻松玩了,所以如果你只想要最自信的类(class),设置 k = 1 .

关于python - 如何在 Resnet 50 分类中输出置信度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62558246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com