在您阅读本节内容前,我们建议您先阅读我们的 工具链算子支持约束列表-ONNX Operator Support List 章节,对地平线支持的算子及约束条件进行了解。或在您导出ONNX模型后,可以先参考 验证模型 章节的内容,验证模型是否能被地平线支持完成正常转换部署。
基于公开DL框架训练得到的浮点模型是转换工具的输入,目前转换工具支持的DL框架如下:
| 框架 | 地平线工具链 |
|---|---|
| Caffe | 支持 |
| PyTorch | 支持(转ONNX) |
| TensorFlow | 支持(转ONNX) |
| PaddlePaddle | 支持(转ONNX) |
| MXNet | 支持(转ONNX) |
| 其他框架 | 请联系地平线 |
以上框架中,Caffe导出的caffemodel是直接支持的,PyTorch、TensorFlow和MXNet是通过转到ONNX实现间接支持,ONNX目前支持的opset版本是opset10-19。
对于不同框架到ONNX的转换,目前都有对应的标准化方案,参考如下:
Pytorch2Onnx:PyTorch官方API支持直接将模型导出为ONNX模型,参考链接:
https://pytorch.org/tutorials/advanced/super_resolution_with_onnxruntime.html 。
Tensorflow2Onnx:基于ONNX社区的 onnx/tensorflow-onnx 进行转换,参考链接:
PaddlePaddle2Onnx:PaddlePaddle官方API支持直接将模型导出为ONNX模型,参考链接:
https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/onnx/export_cn.html 。
MXNet2Onnx:MXNet官方API支持直接将模型导出为ONNX模型,参考链接:
https://github.com/dotnet/machinelearning/blob/master/test/Microsoft.ML.Tests/OnnxConversionTest.cs 。
更多框架的ONNX转换支持,参考链接:
https://github.com/onnx/tutorials#converting-to-onnx-format 。