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.

[参考译文] AM62A7:TI AM68A/AM62A 是否支持 paddleocr(OCR 模型)?

Guru**** 2924050 points

Other Parts Discussed in Thread: AM68A

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1649280/am62a7-does-ti-am68a-am62a-have-support-for-paddleocr-ocr-model

器件型号: AM62A7
主题: AM68A 中讨论的其他器件

尊敬的团队:
目前我正在在 AM62A 和 AM68A 平台上调试 PaddleOCR
。 我发现大多数层都不受 TIDL 的支持(并且在通过 TIDL 进行推理时无法获得正确的结果)。

您能否提供有关如何正确配置 edgeai-tidl-tools 以构建此模型的建议?   或者、您是否还有其他已成功调试和验证您可以推荐的 OCR 模型。 谢谢。

日志:

| Conv    | p2o.Conv.29    |沿水平和垂直尺寸的条带必须相同      |
| AveragePool | p2o.AveragePole.0 |不支持具有跨度 (3x2) 的内核大小 (3x2)                |
| ReduceMean | p2o.ReduceMean.0 |第 273 层 — 操作类型 ReduceMean、未知输入维度、TIDL 不支持|
| Sub     | p2o.Sub.0      |第 274 层 — 运算类型子模块,未知输入维度,TIDL 不支持    |
|转置 |转置_token_0  |第 275 层 — 运算类型转置,未知输入维度,TIDL |不支持
| ReduceMean | p2o.ReduceMean.2 | TIDL 不支持的层类型                        |
|切片   | p2o.Slice.6    |第 286 层 — 操作类型切片,未知输入尺寸,TIDL 不支持   |
|切片   | p2o.Slice.4    |第 289 层 — 操作类型切片,未知输入尺寸,TIDL 不支持   |
|切片   | p2o.Slice.8    |第 295 层 — 操作类型切片,未知输入尺寸,TIDL 不支持   |
|挤压  | p2o.挤压.1   |第 287 层 — 运算型挤压,未知输入尺寸,TIDL 不支持  |
|转置 |转置_token_4  |第 290 层 — 运算类型转置,未知输入维度,TIDL |不支持
|转置 |转置_token_6  |第 296 层 — 运算类型转置,未知输入维度,TIDL |不支持
|转置 | p2o.Transpose.2  |第 288 层 — 运算类型转置,未知输入尺寸,TIDL 不支持 |
|切片   | p2o.Slice.15   |第 333 层 — 工序类型切片,未知输入尺寸,TIDL 不支持   |
| Slice   | p2o.Slice.13   |第 336 层 — 操作类型切片,未知输入尺寸,TIDL 不支持   |
|切片   | p2o.Slice.17   |第 342 层 — 操作类型切片,未知输入尺寸,TIDL 不支持   |
|挤压  | p2o.挤压.4   |第 334 层 — 运算型挤压,未知输入尺寸,TIDL 不支持  |
|转置 |转置_token_11 |第 337 层 — 运算类型转置,未知输入维度,TIDL |不支持
|转置 |转置_token_13 |第 343 层 — 运算类型转置,未知输入维度,TIDL 不支持|
|转置 | p2o.Transpose.5  |第 335 层 — 运算类型转置,未知输入尺寸,TIDL 不支持 |
---------------------------------------------------------------------------------------------------------------------

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

    尊敬的 Yongbing:

    我看了一位现场团队成员提供的模型。

    模型中的图层看起来都是受支持的(虽然可能运行不是最佳状态-- HardSwish 在 11.01 SDK 中是原生支持的,但我看到它已在模型中分解成模型中的单个操作)。  

    |转置 | p2o.Transpose.5  | Layer 335 — 运算类型转置,未知输入维度,TIDL 不支持  
    [/报价]

    这意味着您的模型没有经历“形状推理“。 这是模型输入尺寸用于跟踪模型和确定中间张量尺寸的地方。 我们需要这样做来预先分配内存并计划如何优化使用该内存(这是一种称为“内存规划“的标准做法)。 当模型中存在“动态“形状时、会显示相同的误差、这些形状通常表示为变量、如“image_height“或“num_classs“。 不支持动态形状。  

    您将需要为 ONNX 模型运行形状推理。 要运行形状推理,您只需要在运行适当的函数之前定义输入张量形状 — 有关详细信息,请参见 ONNX 文档[1]。  

    还有一个名为“onnxsim “ 又名 onnx-简化[2]的工具,可以很好地组合运算符并消除不必要的运算符(包括在模型导出过程中生成的用于处理形状特定层的一些运算符)。 我们通常在 TIDL 导入之前运行该函数。  

    请注意、在某些情况下、形状推理和 onnxsim 无法确定张量形状。 这些模型对于通过 TIDL 加速将具有挑战性、并且应该探索替代结构/架构 — 否则,CPU 上的许多层可能会以显著降低的性能运行。  

    [1] https://onnx.ai/onnx/api/shape_inference.html 

    [2] https://pypi.org/project/onnxsim 

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

    嗨、Reese、我未能通过 onnxsim 和 tidl、编译 PPOCR、您能为我试一下吗? 谢谢。

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

    尊敬的 Yongbing:

    除了已显示的错误日志之外、您能否提供任何错误日志? 我们确实已经有了模型。 您通常需要先将动态形状设置为静态、然后运行形状推理、以便模型(用 netron.app 可视化生成)显示张量尺寸。  

    BR、
    Reese