Конвертировать замороженный график для tfLite для Coral с помощью tflite_convert
Я использую MobileNetV2 и пытаюсь заставить его работать на Google Coral. Кажется, все работает, кроме Coral Web Compiler, выдает случайную ошибку, Uncaught application failure
, Поэтому я думаю, что проблема заключается в необходимых промежуточных шагах. Например, я использую это с tflite_convert
tflite_convert \
--graph_def_file=optimized_graph.pb \
--output_format=TFLITE \
--output_file=mobilenet_v2_new.tflite \
--inference_type=FLOAT \
--inference_input_type=FLOAT \
--input_arrays=input \
--output_arrays=final_result \
--input_shapes=1,224,224,3
Что я делаю не так?
1 ответ
Это наиболее вероятно, потому что ваша модель не квантуется. Устройства Edge TPU в настоящее время не поддерживают вывод модели на основе числа с плавающей запятой. Для достижения наилучших результатов, вы должны включить квантование во время обучения (описано в ссылке). Однако вы также можете применить квантование во время преобразования TensorFlow Lite.
С квантованием после обучения вы жертвуете точностью, но можете проверить что-то быстрее. Когда вы конвертируете свой график в формат TensorFlow Lite, установите inference_type
в QUANTIZED_UINT8
, Вам также необходимо применить параметры квантования (mean/range/std_dev) в командной строке.
tflite_convert \
--graph_def_file=optimized_graph.pb \
--output_format=TFLITE \
--output_file=mobilenet_v2_new.tflite \
--inference_type=QUANTIZED_UINT8 \
--input_arrays=input \
--output_arrays=final_result \
--input_shapes=1,224,224,3 \
--mean_values=128 --std_dev_values=127 \
--default_ranges_min=0 --default_ranges_max=255
Затем вы можете передать квантованный .tflite
файл для компилятора модели.
Более подробную информацию о требованиях к модели Edge TPU можно найти в моделях TensorFlow на Edge TPU.