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.
What it solves
onnx2tf 是一个转换工具,旨在将 AI 模型从 ONNX 格式迁移到其他多种框架,主要目标为 LiteRT(前身为 TensorFlow Lite)、TensorFlow 与 PyTorch。它消除了在这些生态系统之间切换时手动重写模型的需求,支持广泛的算子以确保高度兼容性。
How it works
此工具提供两条主要的执行路径进行转换:
flatbuffer_direct(Default): 一条高速路径,绕过每个节点的 TensorFlow 转换。它会先对 ONNX 图做前处理,直接降阶为内部 ModelIR,然后直接导出为 FlatBuffer(TFLite)格式。此路径的速度可比传统路径快超过 100 倍。tf_converter(Legacy): 一条兼容性路径,使用标准的 TensorFlow Lite Converter。
除了 TFLite,工具还能生成原生 PyTorch nn.Module 包、TorchScript 与 Exported Programs(.pt2),以及 TensorFlow SavedModel 与 Keras 文件。它也支持直接从 LiteRT 转回 PyTorch。
Who it’s for
此工具适用于需要在边缘设备上部署模型(通过 LiteRT/TFLite)或在 PyTorch 与 TensorFlow/ONNX 生态系统之间迁移模型且不失功能精度的机器学习工程师和开发者。
Highlights
- Multi-Framework Support: 将 ONNX 转换为 LiteRT、TensorFlow 与原生 PyTorch 代码。
- High Performance:
flatbuffer_direct后端相较于传统方法提供显著更快的转换速度。 - Extensive Op Coverage: 支持大量 ONNX 算子,包括 Attention、GRU、LSTM 等复杂层。
- Accuracy Validation: 内置工具可生成精度报告,将输入模型(例如 ONNX)与转换后的输出(例如 TFLite 或 PyTorch)进行比较。
- PyTorch Native Export: 能输出标准的
torch.nn.Module,并附带兼容的state_dict.pth供即时推理使用。