BBuf / onnx2X

ONNX2Pytorch
159 stars 24 forks source link

ONNX2X

ONNX作为微软的网络模型中间表示被各个框架广泛应用,包括Pytroch,TensorFlow,OneFlow,Keras,Paddle等多种深度学习训练框架。因此,一直在思考一个问题,一个TensorFlow导出来的ONNX模型是否可以借助ONNX被Pytorch框架使用呢?ONNX的理想是作为所有框架的模型的中间交换,那么我们只需要再实现ONNX到各个框架的逆转就可以完成这件事情了。本工程的目的即是尝试支持ONNX转换到各种训练框架,主要为了锻炼算子对齐和更深入的了解ONNX。

代码结构

- onnx2pytorch onnx转pytorch代码实现
- onnx2pytorch.py onnx转pytorch测试代码
- convert_models.md 转换ONNX Model Zoo里面的模型对应的命令和结果记录
- README.md 

运行环境

使用方法

使用下面的命令将各个训练框架导出的ONNX模型转换成Pytorch模型

python .\onnx2pytorch.py ...

参数列表如下:

使用示例

python .\onnx2pytorch.py --onnx_path .\models\mobilenetv2-7.onnx --simplify_path .\models\mobilenetv2-7-simplify.onnx --pytorch_path .\models\mobilenetv2-7.pth --input_shape input:1,3,224,224

模型转换失败处理方法

ONNX2Pytorch

已支持的ONNX OP

已验证支持的模型

基于ONNXRuntime和Pytorch推理之后特征值mse小于1e-7,视为转换成功

分类模型

检测模型

分割模型

TODO

相关链接