PINTO0309/onnx2tf

A tool for converting ONNX files to LiteRT/TFLite/TensorFlow, PyTorch native code (nn.Module), TorchScript (.pt), state_dict (.pt), Exported Program (.pt2), and Dynamo ONNX. It also supports direct conversion from LiteRT to PyTorch.

解决的问题

onnx2tf 是一个旨在将 AI 模型从 ONNX 格式转换为各种其他框架的转换工具。它主要通过将 ONNX 文件转换为 LiteRT(原 TFLite)和 TensorFlow 来解决在移动或边缘设备上部署模型的问题,同时还提供了将模型转换为原生 PyTorch 代码、TorchScript 和其他 PyTorch 兼容格式的路径。

工作原理

该工具提供两条主要的转换执行路径:

  1. flatbuffer_direct(默认): 一条绕过传统 TensorFlow 转换过程的高速路径。它执行 ONNX 图预处理并直接降低到 ModelIR,然后直接导出为 FlatBuffer(TFLite)文件。这条路径可能比传统路径快得多(最高可达 100 倍)。
  2. tf_converter(传统): 使用标准 TensorFlow Lite Converter 的兼容性路径。

除了 TFLite,该工具还可以生成原生 PyTorch nn.Module 包,包括 state_dict 文件和 Exported Programs,允许模型在 PyTorch 中以 eager 推理模式运行。

适用人群

它面向需要在不同深度学习框架之间移植模型的 ML 工程师和开发人员,特别是从 ONNX 转换到 TensorFlow/LiteRT 或 PyTorch,以确保与特定硬件加速器或部署目标的兼容性。

亮点

  • 多框架支持: 将 ONNX 转换为 LiteRT/TFLite、TensorFlow 和原生 PyTorch 代码。
  • 高性能: flatbuffer_direct 后端比传统转换方法提供巨大的加速。
  • 全面的算子支持:tf_converter 路径支持大量 ONNX 算子。
  • 精度验证: 可以生成精度报告,将转换后模型的输出与原始 ONNX 模型进行比较。
  • 双向转换: 支持从 LiteRT 直接转换回 PyTorch。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目