MNN是一个功能很强大的深度学习模型推理框架,目的是加速推理,为了使很多比较大模型进行落地,比如在手机端运行
使用之前需要准备一下环境
这里我是在linux上使用的
一、环境准备
git clone https://github.com/alibaba/MNN.git
cd MNN
cd schema && ./generate.sh
mkdir build && cd build
cmake -DMNN_BUILD_DEMO=ON ..
make -j8
如需要全局下使用命令,可以自行设置环境变量,这里我是自行设置了的。
注意,这个只能在cmake3.0及其以上的版本才行,如果需要安装可以参考(点一下) ,实测可以
当环境准备好以后,我们就可以测一下了
在使用之前 ,需要说明的是,mnn并不能直接使用TF/CAFFE/TFLITE等训练保存的模型,需要转换然后就可以使用
mnn提供了python方式的转换
需要提前安装
pip install MNN
二、模型的转换与使用
1.转换tflite模型文件
这是一个图像分割的模型
下载好模型以后,就可以转换了,模型我是放置在/opt/modeldata/路径下的
mnnconvert -f TFLITE --modelFile /opt/modeldata/deeplabv3_257_mv_gpu.tflite --MNNModel deeplabv3_257_mv_gpu.mnn
实测一下:
segment.out deeplabv3_257_mv_gpu.mnn /opt/images/000000000139.jpg output.jpg
结果:
2.转换tf的模型文件
这是一个姿态预测的模型
mnnconvert -f TF --modelFile /opt/modeldata/model-mobilenet_v1_075.pb --MNNModel model-mobilenet_v1_075.mnn
测试一下:
multiPose.out model-mobilenet_v1_075.mnn /opt/images/123.jpg output1.jpg
模型转换前后,大小没有多少变化
至此,说明可以成功进行推理