使用 tensorflow hub 再训练脚本对任何新 类 图像进行再训练的任何体系结构的高度错误预测

Highly incorrect predictions by any architecture retrained on any new classes of images using tensorflow hub retraining script

我正在使用 script for retraining on flower images available here。我的输出是 INFO:tensorflow:Restoring parameters from /tmp/_retrain_checkpoint INFO:tensorflow:Final test accuracy = 92.5% (N=362) INFO:tensorflow:Save final result to : tf_files/retrained_graph.pb
因此,Inception V3 的准确率为 92.5%,tfhub_module 为 this
但是当我用

预测图像时
python -m scripts.label_image \
    --graph=tf_files/retrained_graph.pb  \
    --image=tf_files/flower_photos/roses/568715474_bdb64ccc32.jpg \
    --input_height=299 \
    --input_width=299 \
    --input_layer='Placeholder

我的输出是

Evaluation time (1-image): 3.639s         
daisy (score=0.54625)  
tulips (score=0.18089)  
roses (score=0.17955)  
dandelion (score=0.06436)  
sunflowers (score=0.02894)

对于一朵完美的玫瑰,它预测为雏菊。这个花卉数据集和另一个数据集中的几乎所有图像都会发生这种情况。 Google Codelabs 还有另一个再训练脚本。当我使用相同的花卉数据集使用此脚本进行再训练时,我获得了 ~93% 的准确率并且它也正确预测。

Evaluation time (1-image): 1.857s
roses (score=0.99969)
tulips (score=0.00030)
sunflowers (score=0.00001)
daisy (score=0.00000)
dandelion (score=0.00000)

那么,这两个脚本之间有什么区别?为什么第一个脚本在显示出非常高的最终测试准确度的情况下仍错误地预测了图像?

很难说确切的错误是什么,但我确定这不是重新训练代码。这很可能是您正在使用的测试代码。本教程中的测试代码依赖于一个 labels.txt 文件,该文件用于将矢量与其对应的标签相匹配。

每次 运行 retrain.py,labels.txt 可能会变得不同,我感觉在这种情况下,标签 if labels.txt 是以错误的顺序。不确定这是否是解决方案,只是一种直觉。

讨论和解决方案是here