实验环境:
系统:Ubuntu18.04
硬件设备:PC设备和树莓派4B
编译教程:
MNN框架主要分为三部分:推理,训练和转换。推理:在端侧加载MNN模型进行推理的阶段。训练:训练框架上,根据训练数据训练出模型的阶段。转换:将其他训练框架模型转换为MNN模型的阶段。
因此我们的编译也需要分三部分来进行编译。
首先下载MNN:(我这个是使用码云进行了加速)
git clone https://gitee.com/zhanzzw/MNN.git
环境要求:
- cmake(建议使用3.10或以上版本)、
- protobuf(使用3.0或以上版本)
- gcc(使用4.9或以上版本)
编译推理部分:
cd /path/to/MNN
./schema/generate.sh
mkdir build && cd build && cmake .. && make -j8
编译训练部分:
cd MNN/build
cmake .. -DMNN_BUILD_TRAIN=ON
make -j8
编译完成之后运行:
./runTrainDemo.out
如果显示出下面结果说明训练部分编译成功:
Usage: ./runTrainDemo.out CASENAME [ARGS]
Valid Case:
DataLoaderDemo
DataLoaderTest
DistillTrainQuant
ImageDatasetDemo
LinearRegress
MatMulGradTest
MnistInt8Train
MnistTrain
MnistTrainSnapshot
MobilenetV2PostTrain
MobilenetV2Train
MobilenetV2TrainQuant
MobilenetV2Transfer
NNGrad
NNGradV2
NNGradV3
OctaveMnist
PostTrain
PostTrainMobilenet
QuanByMSE
QuanMnist
TestMSE
转换部分编译:
cd MNN/
./schema/generate.sh
cd build
cmake .. -DMNN_BUILD_CONVERTER=true && make -j4
到此为止MNN的训练,推理和转换三部分已经编译成功了。
运行MNN的demo:
姿态检测demo:
代码:demo/exec/multiPose.cpp
准备工作:
cd MNN/build
cmake -DMNN_BUILD_DEMO=ON ..
make -j8
- 下载原始的Tensorflow模型。链接: https://pan.baidu.com/s/1QbEgh1kUjl2Kpi2ouwWfUA 提取码: rusy
- 使用模型转换工具将pb模型转换为 MNN 模型。
cd MNN/build ./MNNConvert -f TF --modelFile model-mobilenet_v1_075.pb --MNNModel donkey.mnn --bizCode biz
- 将转换之后的donkey.mnn模型复制到MNN/demo/exec文件夹下,执行行姿态检测。
cd MNN/demo/exec ./multiPose.out donkey.mnn input.jpg pose.png
其他demo也是类似这样执行。