(TNN框架)
模型部署:
1. 模型转换:
将在tensorflow, pytorch, caffe等平台训练得到的模型,先转为统一的onnx格式,再转换为TNN格式的模型。
tnn模型转换需要依赖的环境比较复杂,建议直接用官方构建好的docker。
docker pull turandotkay/tnn-convert:latest
验证下docker镜像能否正常使用:
docker run -it tnn-convert:latest python3 ./converter.py -h
目前支持onnx2tnn, caffe2tnn, tf2tnn, tflite2tnn
usage: python3 ./converter.py onnx2tnn -tp ONNX_PATH -in input_name -on output_name [-o OUTPUT_DIR] [-v v1.0] [-optimize] [-half] [-align]
v:指定模型的版本号,以便后期对模型进行跟踪和区分。
output_dir: 一般不太使用此参数,默认将生成对TNN模型放在当前和待转换模型相同的路径下。
optimize: 对模型进行优化,强烈开启此选项,只有在开启此选项转换模型失败时,才建议去掉此选项进行重新尝试。
half: 模型数据通过FP16进行存储,减少模型的大小。默认通过FP32方式存储模型。
align: 将转换得到的TNN模型和原模型进行对齐,确定TNN模型是否转换成功。当前仅支持单输入单输出模型和单输入多输出模型。align只支持FP32模型的校验。
所以使用align的时候不能使用half。
input_file: 指定模型对齐所需要的输入文件名称。
ref_file: 指定待对齐的输出文件名称。
example: docker run --volume=${pwd}:/workspace -it tnn-convert:latest python3 ./converter.py onnx2tnn \
/workspace/mobilenetv3-small-c7eb32fe.onnx \
-optimize \
-v v3.0 \
-align
2. 编译引擎:
针对目标平台的硬件支持情况,完成目标平台的TNN引擎编译。
移动端demo:
1. iOS demo
2. Android demo