1

我刚刚开始学习如何使用图像识别,所以几天前我开始学习本教程。由于我是新手,我决定使用教程中使用的同一组图像来确保我做的一切都是正确的。在花了一段时间训练模型之后,我一直在尝试对从 Google 下载的不同图像进行测试,看看是否有任何测试有效。到目前为止,无论我展示什么图像,预测模型都只会给出完全相同的误报(如下所示)。

-- After Classification --
mechanic  :  100.0
waiter  :  0.0
police  :  0.0
pilot  :  0.0
judge  :  0.0
firefighter  :  0.0
farmer  :  0.0
engineer  :  0.0
doctor  :  0.0
chef  :  0.0

在这个特定的测试中,我将它与穿着工作服的医生的图像进行对比,但是当向消防员和警察展示时,它有相同的反应,我不知道我做错了什么。我试图搜索其他有类似问题的人,但我的谷歌技能似乎让我失望了。我还尝试在 3 台不同的计算机上构建和测试相同的模型,每次都得到相同的结果。这是我正在使用的所有代码:

from imageai.Classification.Custom import ClassificationModelTrainer
from imageai.Classification.Custom import CustomImageClassification


# === Variables === #
modelDir = "idenprof-jpg\\idenprof\\models\\model_ex-009_acc-0.658504.h5"
jsonDir = "idenprof-jpg\\idenprof\\json\\model_class.json"
imageToTestDir = "doctorImg.jpg"


def Train(trainDirectory_):
    model_trainer = ClassificationModelTrainer()
    model_trainer.setModelTypeAsResNet50()
    model_trainer.setDataDirectory(trainDirectory_)
    model_trainer.trainModel(num_objects=10, num_experiments=200, enhance_data=True, batch_size=16, show_network_summary=True)

def Test(modelDir_, jsonDir_, imageToTestDir_):
    prediction = CustomImageClassification()
    prediction.setModelTypeAsResNet50()
    prediction.setModelPath(modelDir_)
    prediction.setJsonPath(jsonDir_)
    prediction.loadModel(num_objects = 10, classification_speed = 'fastest')

    predictions, probabilities = prediction.classifyImage(imageToTestDir_, result_count = 10)
    print("-- After Classification --")
    for eachPrediction, eachProbability in zip(predictions, probabilities):
        print(eachPrediction, " : ", eachProbability)


#Train("idenprof-jpg\\idenprof")
Test(modelDir, jsonDir, imageToTestDir)

使用 Python v3.8、ImageAI v2.1.6、Keras v2.6.0、TensorFlow v2.6.0。所有的文件路径都是正确的(我在这个代码片段中缩短了它们)并且没有抛出任何错误,所以它应该是逻辑错误。另外,我知道我在这里的模型只有 65.85% 的准确度,但我认为这也不是问题所在,因为我昨天制作了一个只有 2 种对象类型和 97% 准确度的模型,但它只会输出无论我展示什么图像,相同的“100.0 匹配”误报。如果我不得不猜测,本教程可能有些内容已经过时并且无法正常工作(或者至少不能像以前那样工作),但我不知道它可能是什么。如果有人知道它可能是什么,我将非常感激!谢谢

4

0 回答 0