Tensorflow.js转换后的模型预测的结果与冻结模型不同/不准确

时间:2019-02-26 08:19:36

标签: tensorflow machine-learning image-recognition tensorflow.js tensorflowjs-converter

当我将冻结的PB模型转换为张量流JS模型时,我失去了所有具有预测性的准确性。谁能告诉我为什么以及我做错了什么?

我已经完成了以下操作-我已经用自己的数据集重新训练了ImageNet模型,如下所述: https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#0

例如,当我运行以下命令时,使用冻结的模型可以获得准确的结果:

python3 -m scripts.label_image \
    --graph=tf_files/retrained_graph.pb  \
    --image=/mnt/c//Users/Harry/Pictures/220px-Afghane.jpg

它给出的跟踪输出位于:

afghan hound (score=0.98313)
briard (score=0.00433)
lhasa (score=0.00401)
sussex spaniel (score=0.00346)
otterhound (score=0.00116)

我已使用tensorflow JS转换器通过以下命令将冻结的模型转换为Tensorflow JS:

tensorflowjs_converter \
    --input_format=tf_frozen_model \
    --output_node_names='final_result' \
    'C:/Code/tensorflow-for-poets-2/tf_files/retrained_graph.pb' \
    'C:/tensorflow output 2'

当我在tensorflow JS模型上使用与冻结模型相同的图像进行预测时,我得到了可怕的结果:

加载模型:

const MODEL_URL = 'assets/dog-model/tensorflowjs_model.pb';
const WEIGHTS_URL = 'assets/dog-model/weights_manifest.json';
loadFrozenModel(MODEL_URL, WEIGHTS_URL).then(
  result => (this.model = result) 
);

预测结果:

const image = tf.browser
  .fromPixels(this.staticImage.nativeElement)
  .resizeNearestNeighbor([224, 224])
  .toFloat()
  .sub(meanImageNetRGB)
  .expandDims();
console.log(image);

const prediction = this.model.predict(image);

输出:

yorkshire terrier: 0.2447875738143921
komondor: 0.22793063521385193
ibizan hound: 0.0579879954457283
saluki: 0.04560968279838562
maltese dog: 0.04430125281214714

1 个答案:

答案 0 :(得分:1)

误差与模型输入有关。 确保用于创建表示两个版本(python和js)中的图像的张量的操作croppingreshaping,...都是相同的。