1.下載ncnn源碼(注意儘量下載高版本,低版本可能會報opencv錯)
https://github.com/Tencent/ncnn/tree/20200616
2.編譯安裝(一般不會出現問題,注意cmake 版本不要太低,我的是3.5)
git clone https://github.com/Tencent/ncnn
cd ncnn
mkdir build && cd build
cmake ..
make -j
make install
編譯完成的轉換工具在ncnn/build/tools 目錄下,可以看到 caffe 目錄下已經生成了 caffe2ncnn 和 ncnn2mem 這兩個可執行文件。caffe2ncnn可的作用是將caffe模型生成ncnn 模型,ncnn2mem可對模型進行加密。
3.模型轉換
將舊版caffe模型轉換至新模型:
因爲ncnn只支持轉換新版的caffe模型,所以需要先把自己訓練的caffe模型轉換爲新版的caffe模型。新版caffe框架中自帶了轉換的工具,使用如下:
/home/jinghong/JH/jinghong_project/prac/MobileNetv2-SSDLite/caffe/build/tools/upgrade_net_proto_text deploy_hand.prototxt deploy_hand_new.prototxt
/home/jinghong/JH/jinghong_project/prac/MobileNetv2-SSDLite/caffe/build/tools/upgrade_net_proto_binary mobilenet_iter_113000.caffemodel mobilenet_iter_113000_new.caffemodel
4. 新版caffe模型轉ncnn模型 (mobilenet_ssd 是我生成的ncnn模型)
cd /home/jinghong/ncnn/build/tools/caffe
./caffe2ncnn deploy_hand_new.prototxt mobilenet_iter_113000_new.caffemodel mobilenet_ssd.param mobilenet_ssd.bin
注意生成的ncnn格式的模型中,.param可以理解爲網絡的配置文件,.bin可以理解爲網絡的參數(各種權重)文件。
若需要對模型進行加密,可用如下命令:
./ncnn2mem mobilenet_ssd.param mobilenet_ssd.bin mobilenet_ssd.id.h mobilenet_ssd.mem.h