背景:手機端需要調用深度學習模型的計算。
方案:python訓練模型–>轉到MNN框架模型–>放入C++調用(SDK)–>Java調用SDK(JNI).
CentOS Linux release 7.9.2009 (Core)
Linux iZuf627r0ggzf84xn57fuvZ 3.10.0-1160.62.1.el7.x86_64
Tesla V100 32G CUDA11
Miniconda3
推薦Linux系統,不推薦Windows系統。
安裝:
sudo yum install cmake3 protobuf -y
注意: CMake 3.0 or higher is required, 所以:
sudo ln -s /usr/bin/cmake3 /usr/bin/cmake
直接查看文檔:https://github.com/alibaba/MNN/blob/master/README_CN.md
工具
MNN-Converter:模型轉換工具,由Frontends和Graph Optimize構成。前者負責支持不同的訓練框架,MNN當前支持Tensorflow(Lite)、Caffe、ONNX(PyTorch/MXNet的模型可先轉為ONNX模型再轉到MNN)和Torchscripts;後者通過算子融合、算子替代、布局調整等方式優化圖,一般離線運行。
MNN-Compress: 模型壓縮工具,在一定的精度誤差許可下,對MNN模型進行壓縮,減少模型體積,提升運行性能。
MNN-Express :支持帶控制流的模型運行,支持調用 MNN 的算子進行自定義的計算。
MNN-CV :類似 OpenCV ,但核心計算功能基於 MNN 實現的圖像處理算法庫
MNN-Train :MNN 訓練模塊,支持各平台訓練
參考:https://www.yuque.com/mnn/cn/demo_project
下載MNN工程:
git clone https://github.com/alibaba/MNN.git
編譯前的選擇:vim CMakeLists.txt
我看CMakeLists.txt裡的都很有用,我都手動ON上了,以後學習過程中說不定就用了:
編譯:
cd path/to/MNN
# 生成 schema ,可選
cd schema && ./generate.sh
# 進行編譯
cd path/to/MNN # 注意回到根目錄
mkdir build && cd build
cmake -DMNN_BUILD_DEMO=ON ..
make -j
在系統中構建這個MNN後,就能使用MNN提供的眾多工具了。
代碼和介紹:https://github.com/xddun/MNN_Demos
https://blog.csdn.net/wl1710582732/article/details/107731147