【问题标题】:How to convert model trained on custom data-set for the Edge TPU board?如何为 Edge TPU 板转换在自定义数据集上训练的模型?
【发布时间】:2020-05-07 20:47:45
【问题描述】:

我已经使用张量流对象检测 API 训练了我的自定义数据集。我运行我的“预测”脚本,它在 GPU 上运行良好。现在,我想将模型转换为 lite 并在 Google Coral Edge TPU 板上运行以检测我的自定义对象。我浏览了 Google Coral Board 网站提供的文档,但我发现它非常混乱。 如何在 Google Coral Edge TPU Board 上转换和运行它? 谢谢

【问题讨论】:

    标签: tensorflow object-detection tensorflow-datasets google-coral tensorflow-lite


    【解决方案1】:

    如果不阅读文档,将很难继续。我不确定你的“预测脚本”是什么意思,但我假设脚本加载了一个 .pb tensorflow 模型,加载了一些图像数据,并对其进行推理以产生预测结果。这意味着您在以下管道的“冻结图”阶段拥有一个 .pb 张量流模型:

    图片取自coral.ai

    下一步是使用训练后量化技术将您的 .pb 模型转换为“完全量化的 .tflite 模型”。这样做的文档是here。我还创建了一个 github gist,其中包含 Post Training Quantization here 的示例。生成 .tflite 模型后,您需要通过 edgetpu_compiler 编译模型。尽管您需要了解的有关 edgetpu 编译器的所有信息都在该链接中,但出于您的目的,编译模型非常简单:

    $ edgetpu_compiler your_model_name.tflite
    

    这将创建一个与 EdgeTPU 兼容的your_model_name_edgetpu.tflite 模型。现在,如果在这个阶段,您没有创建与 edgetpu 兼容的模型,而是遇到了某种类型的错误,那么这意味着您的模型不符合 models-requirements 部分中发布的要求。

    生成编译模型后,您可以将其部署到 edgetpu 设备上。目前有 2 个主要 API 可用于对模型进行推理:

    最终,有许多演示示例可以在模型here 上运行推理。

    【讨论】:

      【解决方案2】:

      前面的答案适用于一般分类模型,但不适用于 TF 对象检测 API 训练的模型。

      您不能在 TF 对象检测 API 模型上使用 TF Lite 转换器进行训练后量化。

      为了在 EdgeTPU-s 上运行对象检测模型:

      1. 您必须在模型配置中添加以下内容,以量化感知训练模式训练模型:

      graph_rewriter { 量化{ 延迟:48000 重量位:8 激活位:8 } }

      这可能不适用于模型动物园中提供的所有模型,请先尝试量化模型。

      1. 训练后,导出冻结图:object_detection/export_tflite_ssd_graph.py

      2. 在冻结图上运行 tensorflow/lite/toco 工具,使其与 TFLite 兼容

      3. 最后在 .tflite 文件上运行 edgetpu_complier

      您可以在此处找到更深入的指南: https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/running_on_mobile_tensorflowlite.md

      【讨论】:

      猜你喜欢
      • 2023-01-31
      • 2017-12-11
      • 2018-09-25
      • 2021-05-17
      • 2019-05-25
      • 2021-08-30
      • 2017-06-19
      • 2021-07-07
      • 2017-07-27
      相关资源
      最近更新 更多