RtinaFace Mxnet模型转TNN,附Reshape层踩坑
背景说明
我从下面这个位置获取到的RetinaFace模型是mxnet的:
- yangfly: RetinaFace-MobileNet0.25 (baidu cloud:nzof).
TNN提供的模型转换选项如下:
{onnx2tnn,caffe2tnn,tf2tnn,tflite2tnn}
并不支持mxnet直接转换成tnn,那只能将mxnet模型先转换其他格式再转为tnn.
我尝试过从mxnet转为onnx但是会遇到各种问题:
如SoftmaxActivation、UpSampling等算子不支持、以及onnx和mxnet版本不匹配等等
更糟心的是千辛万苦解决了转换路上的问题得到的onnx模型居然不能正确加载或运行…
在此我记录一个能正确转换到tnn的方式,方便后来的人少走弯路,能抛砖引玉就更妙了
模型转换过程
先将mxnet转为caffe,再用tnn转换工具将caffe转为tnn
其实仔细看tnn给的pyhton转换脚本,它的转换过程是caffe->onnx->tnn
哦~,老套路,onnx做中间模型
所以总的转换路线为:
mxnet->caffe->onnx->tnn
我的环境
16.04.1-Ubuntu
Python 3.7.2 (default, Jan 26 2021, 16:01:45)
mxne