阿里MNN端上深度神经网络推理引擎的实践记录

一、环境搭建

1.1.MNN官方文档

中文文档 · 语雀

1.2.Clone MNN代码

git clone https://github.com/alibaba/MNN.git

1.3.框架概况

MNN框架主要分为三部分:推理,训练和转换。推理:在端侧加载MNN模型进行推理的阶段。训练:训练框架上,根据训练数据训练出模型的阶段。转换:将其他训练框架模型转换为MNN模型的阶段。

1.4.Mac环境所需工具安装

brew install protobuf

brew install cmake

二、工具链编译

2.1.编译推理部分:

./schema/generate.sh

mkdir build && cd build && cmake .. && make -j8

编译完成后本地出现MNN的动态库。

2.2.编译训练部分:

cd MNN/build

cmake .. -DMNN_BUILD_TRAIN=ON

make -j8

得到一些训练框架以及demo程序

2.3.转换部分编译:

cd path/to/MNN

# 生成 schema ,可选

cd schema && ./generate.sh

cd build

cmake .. -DMNN_BUILD_CONVERTER=true && make -j4

得到可执行文件,MNNConvert,用于转换模型,MNN提供了多种格式的转换

包括:TensorFlow、TensorFlow Lite、Caffe、ONNX、TorchScript、PyTorch

详细查看:模型转换 · 语雀

至此完成了工具链的编译,得到产物,包括转换工具以及一些demo的可执行文件,如MultiPose.out用于姿态检测,segment.out用于图像分割。

三、在Mac上尝试姿态检测demo

示例工程 · 语雀

3.1.下载Tensorflow原始模型文件

https://github.com/czy2014hust/posenet-python/raw/master/models/model-mobilenet_v1_075.pb

3.2.将模型转换成MNN格式模型

./MNNConvert -f TF --modelFile model.pb --MNNModel pose.mnn --bizCode biz

补充Mnn可视化工具下载:Releases · lutzroeder/netron · GitHub,可以看到模型的节点和参数

3.3.执行姿态检测

执行结果:

./multiPose.out pose.mnn input.png pose.png

main, 381, cost time: 6.079000 ms

main, 405, cost time: 0.146000 ms

可得到一张新的图片pose.png,跟文档中demo一样的效果。

四、iOS图像识别demo

4.1.获取模型

执行./tools/script/get_model.sh,将会去下载工程中要使用到的模型文件,执行完成后在resource->model文件夹下看到。iOS demo使用的是MobileNet的模型CNN模型之MobileNet - 知乎

4.2.运行iOS工程

在demo->iOS中执行pod install引入MNN仓库,然后打开playground.xcworkspace,接入真机运行该工程

4.3.查看使用效果

如图中文字列出的分别是,识别到的结果,以及可能性概率,以及耗时。

五、目的

可以看出,想要简单的实现端上的图像识别等功能,只需要集成了MNN工程,并加入已经训练好的模型,针对执行结果做不同的处理即可实现,非常的容易上手。如果是针对业务开展的,公司内部算法团队能提供训练好的模型,在端上即可达到,无需转发至云端。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值