實驗環境:
系統: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也是類似這樣執行。