Преобразованная модель Tensorflow.js, предсказывающая другие / неточные результаты, чем замороженная модель - PullRequest
0 голосов
/ 26 февраля 2019

Когда я преобразую замороженную модель 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, использующий JS-конвертор tenorflow со следующей командой:

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'

Когда я запускаю прогноз для модели JS Tensflow с тем же изображением, которое я использовал с замороженной моделью, я получаю ужасные результаты:

Загрузка модели:

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 голосов
/ 26 февраля 2019

Неточность связана с вводом в модель.Убедитесь, что операции - cropping, reshaping, ..., используемые для создания тензора, представляющего изображение в обеих версиях (python и js), одинаковы.

...