要将 Tensorflow 模型转换为 TNN 模型,首先将 Tensorflow 模型转换为 ONNX 模型,然后再将ONNX 模型转换为 TNN 模型。
将 Tensorflow 模型转换为ONNX,我们借助于 ONNX 开源社区的力量,ONNX 开源社区提供的开源的转换工具 tf2onnx,可以直接将 Tensorflow 模型转换为 ONNX 模型。在下面的文档中,会简单的介绍如何使用 tf2onnx 进行转换。我们强烈建议你去 tf2onnx 的官网,去了解 tf2onnx 的详细用法,这会帮助你更好的将 TensorFlow模型转换为 TNN 模型。当使用 tf2onnx 将 Tensorflow 模型转换为 ONNX 之后,建议参考 onnx2tnn 的相关文档,将 ONNX 模型转换为 TNN。
tf2onnx项目地址:https://github.com/onnx/tensorflow-onnx
- tensorflow (version == 1.15.0) 建议使用 tensorflow 1.15.0 的版本,目前 tensorflow 2.+ 的版本的兼容性不好, 不建议使用。
pip3 install tensorflow==1.15.0
- tf2onnx (version>= 1.5.5)
pip3 install tf2onnx
- onnxruntime(version>=1.1.0)
pip3 install onnxruntime
下面是对 test.pb 进行转换的命令,使用起来非常方便。建议大家阅读 tf2onnx 的 README.md 文件,里面有详细的对该工具各个参数的说明。
python3 -m tf2onnx.convert --graphdef test.pb --inputs input_data:0 --outputs pred:0 --opset 11 --output test.onnx --inputs-as-nchw input_data:0
该工具支持的算子的列表: support op