This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] PROCESSOR-SDK-TDAX:TIDL Keras/Tensorflow 模型转换出现问题

Guru**** 2618835 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/659647/processor-sdk-tdax-problems-with-the-tidl-keras-tensorflow-model-conversion

器件型号:PROCESSOR-SDK-TDAX

您好、TI 团队、

我正在使用 TI 模型转换工具(tidl_model_import.exe)将保存为 TensorFlow *。PB 模型 的煤层模型转换为 TI 兼容格式。

从煤层到 Tensorflow 的转换是使用与以下链接中所做的类似的操作来完成的: https://github.com/amir-abdi/keras_to_tensorflow/blob/master/keras_to_tensorflow.py

我有以下问题:

1) 1)运行 tidl_model_import.exe 时收到此错误消息:

[libprotobuf fatal D:\work\vision\cnnnnnin\protobuf\protobuf-cpp-3.2.0rc2\protobuf-3。
2.0rc2\src\google/protobuf/replified_field.h:1418]检查失败:(索引)<(当前
NT_SIZE_):

该帖子还报告了以下内容:

https://e2e.ti.com/support/arm/automotive_processors/f/1021/t/638055?tisearch=e2e-sitesearch&keymatch=libprotobuf

但是、我的案例中模型定义的差异应该与 Tensorflow 的版本(在这里定义了保存的字段)相关。 我使用的是 Tensorflow 1.1、它似乎有自己的编译原型 阅读器/编写器。 TI 使用哪个版本的 Tensorflow 来验证模型转换工具? 您是否认为误差的原因在其他地方?

2) 2)网络的输入通常是图像。 您似乎正在使用*。y 文件作为输入。 如何生成.y 文件?

3) 3)我了解 的是 quantStatsTool 在 PC 上进行仿真、以测试模型转换工具的输出。  有用于 EVE 的 eve_test_dl_algo.out.exe、但我在 Vision SDK 中找不到 DSP 工具。

非常感谢您的参与
Safwan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Safwan、

    我已将您的问题转交给 TIDL 专家。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Safwan、
    1) 我们已使用 Tensorflow 1.0导入 TIDL 模型。 我们已验证了 GitHub 下方的 incepionNetV1和 MobileNet_1.0 (有关更多信息、请参阅用户指南和数据表) github.com/.../slim。
    导入工具的源代码作为 TIDL 版本的一部分提供、如果您的模型以更新的格式存储、请使用 tensorflow 中更新的 protobuf 阅读器/编写器(从*。proto 文件生成 c 文件)重新编译导入工具。

    2) 我们在示例中使用的*。y 是一个原始8位 RGB 文件(每个通道都有单独的计划)。 忽略分机号。 我们的导入工具还支持 jpeg 或 png 文件。 请参阅其他导入配置文件。

    3) 用于 EVE 和 DSP 的 PC 仿真将生成准确的结果。 因此、eve_test_dl_algo.out.exe 可用于 EVE 和 DSP。

    谢谢、此致、
    Kumar.D
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kumar、

    非常感谢您的详细答复。

    我删除了 Tensorflow 版本并安装了 Tensorflow 1.0、以便与 TI 已验证的内容兼容。 遗憾的是、出现 Sam 错误消息。

    谢谢、此致

    Safwan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Kumar、

    不幸的是、我没有运行该工具。

    我想、如果您告诉我如何将 Chkpt 文件(例如您已验证该工具的 IncepectionNetV1的 chekpt)转换为二进制 protobuf 文件、那将会有所帮助。

    谢谢、此致
    Safwan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Safwan、

    请参阅以下文件、将 ckpt 转换为冻结的图形。

    https://gist.github.com/StanislawAntol/656e3afe2d43864bb410d71e1c5789c1

    然后在上述步骤的输出上使用"tensorflow\python \tools\optimize_for_inence.py"

    示例:python "tensorflow\python \tools\optimize_for_inference.py" --input=MobileNet_v1_1.0_224.pb --output=MobileNet_v1_1.0_224_final.pb --input_names=input --output_names="softmax/Softmax"

    此致、

    Kumar.D

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Kumar、

    您的回答很有帮助。 如果不使用 optimize_for_inference.py 脚本、导入工具会生成 protobuf 错误。 当我使用它时、错误消失、这是一个正号。 我认为、这需要在工具的用户指南中加以说明。

    尽管如此,我在日志文件中看到了其他错误消息:不支持的运算符。 为了简化工作、我构建了最简单的神经网络:

    _________________________________________________________
    层(类型) 输出形状 param #===================================================================================================
    
    conv2d_1 (Conv2D) (无、225、225、16) 448
    _________________________________________________________
    ACTIVE_1 (激活)(无、225、225、16) 0
    _________________________________________________________
    flatten_1 (平展) (无、810000) 0
    _________________________________________________________
    密集_1 (密集) (无、1) 810001
    ________________________________
    ACTIVE_2 (激活)(无、1) 0
    ================================================================================================================================================
    总参数:810、449
    个可执行参数:810、449
    个不可执行参数:0 

    这是一个转换为 tensorflow 图的煤油模型。
    然后、图形被自由化并保存(与您在初始化时发布的链接中所执行的操作类似)。
    之后应用了 optimize_for_inference.py (没有此步骤、就会得到 protobuf 异常)。
    TIDL 导入工具现在输出以下日志文件:

    TF 模型文件:my.PB
    不支持的 OP 类型形状将通过传递
    不支持的操作类型条带切片将通过传递
    不支持的 OP 类型产品将通过传递
    不支持的 OP Type Pack 将通过传递
    找不到请求的输入数据:sequating_1/flatten_1/stack/0!!

    此致、谢谢

    Safwan

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Safwan、

    我们将在 用户指南中提及有关 optimize_for_in推理 的信息。

    关于 Keras 生成 的 TF 模型、我们尚未验证此类模型。 我们建议在导入 TIDL 时使用基于 TF slim 的模型。 请参阅 下面的 ncepionNetV1和 MobileNet_1.0作为构建模型的示例

    github.com/.../slim。

    谢谢、此致、

    Kumar.D