我刚刚开始学习如何使用图像识别,所以几天前我开始学习本教程。由于我是新手,我决定使用教程中使用的同一组图像来确保我做的一切都是正确的。在花了一段时间训练模型之后,我一直在尝试对从 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 匹配”误报。如果我不得不猜测,本教程可能有些内容已经过时并且无法正常工作(或者至少不能像以前那样工作),但我不知道它可能是什么。如果有人知道它可能是什么,我将非常感激!谢谢