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

问题描述 投票:0回答: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
tensorflow machine-learning image-recognition tensorflow.js tensorflowjs-converter
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.