Запустите инструмент точности tflite на официальной модели tenorflow resnet50 - PullRequest
0 голосов
/ 13 октября 2018

Я скачал официальную модель resnet50, представленную здесь: https://github.com/tensorflow/models/tree/master/official/resnet. Мне понадобилась квантованная версия tflite этой модели, и поэтому я преобразовал модель в формат tflite следующим образом:

toco --output_file /tmp/resnet50_quant.tflite --saved_model_dir <path/to/saved_model_dir> --output_format TFLITE  --quantize_weights QUANTIZE_WEIGHTS

После этого я решил запустить инструмент точности tflite , чтобы убедиться, что точность этой модели все еще приемлема.Хотя, похоже, я столкнулся со следующей проблемой:

bazel run -c opt --copt=-march=native --cxxopt='--std=c++11'   --   //tensorflow/contrib/lite/tools/accuracy/ilsvrc:imagenet_accuracy_eval --model_file=/tmp/resnet50_quant.tflite --ground_truth_images_path=<path/to/images> --ground_truth_labels=/tmp/validation_labels.txt --model_output_labels=/tmp/tf_labels.txt --output_file_path=/tmp/accuracy_output.txt --num_images=0
INFO: Analysed target //tensorflow/contrib/lite/tools/accuracy/ilsvrc:imagenet_accuracy_eval (0 packages loaded).
INFO: Found 1 target...
Target //tensorflow/contrib/lite/tools/accuracy/ilsvrc:imagenet_accuracy_eval up-to-date:
  bazel-bin/tensorflow/contrib/lite/tools/accuracy/ilsvrc/imagenet_accuracy_eval
INFO: Elapsed time: 14.589s, Critical Path: 14.28s
INFO: 3 processes: 3 local.
INFO: Build completed successfully, 4 total actions
INFO: Running command line: bazel-bin/tensorflow/contrib/lite/tools/accuracy/ilsvrc/imagenet_accuracy_eval '--model_file=/tmp/resnet50_quant.tflite' '--ground_truth_images_path=<path/to/images>' '--ground_truth_labels=/tmp/validation_labels.txt' '--model_output_labels=/tmp/tf_labels.txt' '--output_file_path=/tmp/accuracy_output.txt' 'INFO: Build completed successfully, 4 total actions
2018-10-12 15:30:06.237058: E tensorflow/contrib/lite/tools/accuracy/ilsvrc/imagenet_accuracy_eval.cc:155] Starting evaluation with: 4 threads.
2018-10-12 15:30:06.536802: E tensorflow/contrib/lite/tools/accuracy/ilsvrc/imagenet_accuracy_eval.cc:98] Starting model evaluation: 50000
2018-10-12 15:30:06.565334: W tensorflow/core/framework/op_kernel.cc:1273] OP_REQUIRES failed at run_tflite_model_op.cc:89 : Invalid argument: Data shapes mismatch for tensors: 0 expected: [64,224,224,3] got: [1,224,224,3]
2018-10-12 15:30:06.565453: F tensorflow/contrib/lite/tools/accuracy/ilsvrc/imagenet_model_evaluator.cc:222] Non-OK-status: eval_pipeline->Run(CreateStringTensor(image_label.image), CreateStringTensor(image_label.label)) status: Invalid argument: Data shapes mismatch for tensors: 0 expected: [64,224,224,3] got: [1,224,224,3]
     [[{{node stage_run_tfl_model_output}} = RunTFLiteModel[input_type=[DT_FLOAT], model_file_path="/tmp/resnet50_quant.tflite", output_type=[DT_FLOAT], _device="/job:localhost/replica:0/task:0/device:CPU:0"](stage_inception_preprocess_output)]]

Похоже, проблема в том, что официальная модель повторной сети имеет входной тензор [64, 224, 224, 3], тогда как инструмент обеспечения точности обеспечиваетвход [1, 224, 224, 3].Итак, официальная модель, похоже, ожидает серию из 64 изображений, и, следовательно, инструмент точности не работает.

Мне было интересно, что мне нужно сделать, чтобы инструмент точности работал на официальной модели resnet50?Я предполагаю, что хотя входным тензором для resnet 50 является [64, 224, 224, 3], должен быть способ пропустить одно изображение через модель.

1 Ответ

0 голосов
/ 08 февраля 2019

Есть два способа сделать это:

  1. Измените размер ввода вашей модели на [1, 224, 224, 3] и запустите инструмент.Вы можете попробовать посмотреть this и затем изменить this file соответственно.

  2. В качестве альтернативы можно изменить тот же инструмент, чтобы он подавал 64 изображения ввремя вместо 1. Вы можете посмотреть на тот же файл кода, на который я указал выше, и ввести 64 за раз вместо 1.

Если вы ищете долгосрочную поддержкурассмотрите возможность отправки запроса на Github, где мы можем поддерживать пакетирование.

...