0

我一直在按照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。

任何让它工作的指导都会很棒。我也对不遵循 tensorflow 指南的解决方案持开放态度。

4

1 回答 1

0

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

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"
于 2020-06-02T15:39:13.703 回答