1

当我将冻结的 PB 模型转换为 tensorflow 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
4

1 回答 1

2

不准确性与模型的输入有关。确保在两个版本(python 和 js)中用于创建表示图像的张量的操作 - cropping、 、 ... 是相似的。reshaping

于 2019-02-26T19:03:42.470 回答