繁体   English   中英

如何正确将 tflite_graph.pb 转换为 detect.tflite

[英]How to convert tflite_graph.pb to detect.tflite properly

I am using tensorflow object-detection api for training a custom model using ssdlite_mobilenet_v2_coco_2018_05_09 from tensorflow model zoo .

我成功地训练了 model 并使用本教程中提供的脚本对其进行了测试。

这是问题所在,我需要一个detect.tflite才能在我的目标机器(嵌入式系统)中使用它。 但是当我真的用我的 model 制作一个 tflite 时,它几乎什么也没输出,当它输出时,它是一个错误的检测 为了制作 .tflite 文件,我首先使用export_tflite_ssd_graph.py ,然后使用此命令在toco上使用 toco,按照文档和一些谷歌搜索:

toco --graph_def_file=$OUTPUT_DIR/tflite_graph.pb --output_file=$OUTPUT_DIR/detect.tflite --input_shapes=1,300,300,3 --input_arrays=normalized_input_image_tensor --output_arrays='TFLite_Detection_PostProcess','TFLite_Detection_PostProcess:1','TFLite_Detection_PostProcess:2','TFLite_Detection_PostProcess:3' --allow_custom_ops

此外,我使用 ssd_mobilenet_v3_small_coco detect.tflite 文件对其进行测试时,我用于来自 .tflite 的检测任务的代码工作正常。

问题出在toco命令上。 我使用的一些文件已经过时并误导了我。 toco已弃用,我应该改用tflite_convert工具。

这是我使用的完整命令(从您的培训目录运行):

tflite_convert --graph_def_file tflite_inference_graph/tflite_graph.pb --output_file=./detect.tflite --output_format=TFLITE --input_shapes=1,300,300,3 --input_arrays=normalized_input_image_tensor --output_arrays='TFLite_Detection_PostProcess','TFLite_Detection_PostProcess:1',' TFLite_Detection_PostProcess:2','TFLite_Detection_PostProcess:3' --inference_type=QUANTIZED_UINT8 --mean_values=128 --std_dev_values=127 --change_concat_input_ranges=false --allow_custom_ops

我在 ssdlite_mobilenet_v2_coco_2018_05_09 model 上进行了培训,并将其添加到 my.config 文件的末尾。

 graph_rewriter {
  quantization {
    delay: 400
    weight_bits: 8
    activation_bits: 8
  }
}

我还使用此命令在 tflite_inference_graph 目录中生成 tflite_graph.pb:

python export_tflite_ssd_graph.py --pipeline_config_path 2020-05-17_train_ssdlite_v2/ssd_mobilenet_v2_coco.config --trained_checkpoint_prefix 2020-05-17_train_ssdlite_v2/train/model.ckpt-1146 --output_directory 2020-05-17_train_ssdlite_v2/tflite_inference_graph --add_postprocessing_op=true

注意:我想在我的嵌入式系统上使用量化的 model。 这就是我在配置文件中添加 graph_rewriter 并在我的 tflite_convert 命令中添加 --inference_type=QUANTIZED_UINT8 的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM