DeeplabV3 MobileNetV2 Quantization for USB Coral TPU,具有自定义输入



我一直按照 https://github.com/tensorflow/models/blob/394baa9f21424d3522ccfbdcee8acd3840891ff6/research/deeplab/g3doc/quantize.md 中的步骤量化USB Coral TPU的DeeplabV3 MobileNetV2模型,但我无法让它工作。

即使我从底部提供的模型(不是8_bits,原始模型(开始,我也无法让它运行。我什至对两种模型都遇到了不同的问题。

对于deeplabv3_mnv2_pascal_train_aug:
- 用于量化的deeplab/train.py脚本成功运行。
-deeplab/export_model.py脚本步骤有效。
-tflite_convert也有效。
- EdgeTPU 编译器收到神秘的错误消息:Internal compiler error. Aborting!

对于deeplabv3_mnv2_dm05_pascal_trainaug: - 用于量化运行的deeplab/train.py脚本得到:ValueError: Total size of new array must be unchanged for MobilenetV2/Conv/weights lh_shape: [(3, 3, 3, 16)], rh_shape: [(3, 3, 3, 32)]我尝试了这个解决方案,但没有成功。

  • 直接使用 .pb 文件,具有量化感知训练的deeplab/train.py会失败,并导致 python 崩溃。

  • 在python中直接进行后量化是有效的。

  • edgetpu_compiler有效。
  • 但是一旦在 TPU 上运行,我们就会得到 0.87 TPS,很可能是因为 edgetpu-converter 无法将所有转换为 edgtpu。

任何使其正常工作的指导都会很棒。我也对不遵循张量流指南的解决方案持开放态度。

我相信您已经与我们联系,我的同事已经分享了该程序,但我会在这里将其提及以供其他人参考:

python deeplab/export_model.py 
--checkpoint_path=../../deeplabv3_mnv2_dm05_pascal_trainaug_8bit/model.ckpt 
--quantize_delay_step=0 
--crop_size=55 
--crop_size=55 
--model_variant="mobilenet_v2" 
--decoder_output_stride="" 
--export_path=../../deeplabv3_mnv2_dm05_pascal_trainaug_8bit/frozen_inference_graph.pb 
--depth_multiplier=0.5 
tflite_convert 
--graph_def_file=../../frozen_inference_graph.pb 
--output_file=../../frozen_inference_graph.tflite 
--output_format=TFLITE 
--input_shape=1,55,55,3 
--input_arrays="MobilenetV2/MobilenetV2/input" 
--inference_type=QUANTIZED_UINT8 
--inference_input_type=QUANTIZED_UINT8 
--std_dev_values=128 
--mean_values=128 
--change_concat_input_ranges=true 
--output_arrays="ArgMax"

更改 deeplab/common 中的值.py

flags.DEFINE_float('depth_multiplier', 1,...

flags.DEFINE_float('depth_multiplier', 0.5,...

相关内容

  • 没有找到相关文章

最新更新