Quantize MobileFa ceNet с TFLITE не удалось - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь найти решение для запуска распознавания лиц на камере AI. И обнаружил, что MobileFa cenet ( код из sirius-ai ) отлично подходит как легкая модель!

Мне удалось преобразовать в TFLITE с помощью F32 формат с хорошей точностью. Однако когда я потерпел неудачу при квантовании в uint8 с помощью следующей команды:

tflite_convert --output_file tf-lite/MobileFacenet_uint8_128.tflite 
--graph_def_file tf-lite/MobileFacenet.pb 
--input_arrays "input" 
--input_shapes "1,112,112,3" 
--output_arrays output 
--output_format TFLITE 
--mean_values 128 
--std_dev_values 127.5 
--default_ranges_min 0 
--default_ranges_max 255 
--inference_type QUANTIZED_UINT8 
--inference_input_type QUANTIZED_UINT8

Этот поток помогает преобразовать в TFLITE, но не говорит о квантовании. Может ли кто-нибудь дать несколько предложений? Большое спасибо !!

1 Ответ

1 голос
/ 09 июля 2020

Использование tflite_convert требует определения --saved_model_dir или --keras_model_file. При использовании TF2.x вы должны использовать --enable_v1_converter, если вы хотите преобразовать в квантованный tflite из замороженного графа.

EDIT:

То, что вы сейчас делаете, называется «фиктивным квантованием», который может использоваться для проверки времени вывода квантованной сети. Чтобы правильно квантовать сеть, информация о минимуме / максимуме слоев должна быть введена в нее с помощью поддельных узлов количественного анализа.

Пожалуйста, см. эту суть , например, коды о том, как это сделать. Эта запись в блоге также содержит некоторую информацию об обучении с учетом квантования.

...