caffe2ncnn
一、准備工作
安裝opencv
安裝protobuf
下載ncnn源碼並編譯
git clone https://github.com/Tencent/ncnn
cd ncnn
mkdir build && cd build
cmake ..
make -j4
make install
二、具體操作
(1)、如果是舊版Caffe模型,需要在Caffe環境中轉換為新版Caffe模型;
~/caffe/build/tools/upgrade_net_proto_text deploy.prototxt new_deplpy.prototxt
~/caffe/build/tools/upgrade_net_proto_binary bvlc_alexnet.caffemodel new_bvlc_alexnet.caffemodel
執行后,即可生成一個新版的Cafffe模型;
(2)、編譯NCNN源碼,編譯成功后,會在源碼中生成一個build文件夾;
(3)、終端進入ncnn/build/tools/caffe目錄下,會發現生成一個caffe2ncnn的可執行文件。
(4)、執行如下命令:(caffe文件名和生成的ncnn文件名需要自己設置)
./caffe2ncnn new_deploy.prototxt new.caffemodel demo.param demo.bin
執行完成之后在ncnn/build/tools/caffe下就可以看到生成的param和bin文件了。
三、轉換后模型驗證
驗證思路:
1、對caffe和ncnn進行相同的預處理,使結果保持一致,例如指定圖片的大小、將HWC通道轉換為CHW、減均值、歸一化處理等操作;
2、輸入一張圖片,使用Resnet50 Caffe模型運行,得出結果;
進入caffe/build/examples文件下執行resnet50的可執行文件,輸入圖片,得到預測值的索引和概率的結果
3、同樣地,輸入同張圖片,使用Resnet50 NCNN模型運行,得出結果;
進入ncnn/build/examples文件下執行resnet的可執行文件,輸入圖片,得到預測值的索引和概率的結果
4、將兩個得出的結果進行比較,觀察是否大致相同。如果結果大致相同,則模型轉換成功;如果結果差距較大,則模型轉換失敗。