天天看點

【模型推理】ncnn 模型轉換及量化流程

  ​

​歡迎關注我的公衆号 [極智視界],回複001擷取Google程式設計規範​

  ​

​O_o​

​​   ​

​>_<​

​​   ​

​o_O​

​​   ​

​O_o​

​​   ​

​~_~​

​​   ​

​o_O​

  本文介紹一下 ncnn 模型轉換及量化流程,以 from_darknet yolov4 為例。

  關于 ncnn 的 ubuntu 和 windows 安裝方法可以參考我之前寫的:《【嵌入式AI】ubuntu 安裝 ncnn》、《【經驗分享】win10 qmake 建構 ncnn vs 工程》。

文章目錄

  • ​​1、模型轉換​​
  • ​​2、圖優化​​
  • ​​3、int8 量化​​
  • ​​3.1 優化模型​​
  • ​​3.2 建立校準表​​
  • ​​3.3 量化模型​​
  • ​​3.4 加載 int8 模型進行推理​​

1、模型轉換

./darknet2ncnn yolov4.cfg yolov4.weights yolov4.param yolov4.bin 1      

  末尾 1 表示三個 yolo 分支合并,若為 0 表示三個 yolo 分支獨立輸出。

2、圖優化

./ncnnoptimize yolov4.param yolov4.bin yolov4-opt.param yolov4-opt.bin 0      

3、int8 量化

3.1 優化模型

./ncnnoptimize yolov4.param yolov4.bin yolov4-opt.param yolov4-opt.bin 0      

3.2 建立校準表

find images/ -type f > imagelist.txt
./ncnn2table yolov4-opt.param yolov4-opt.bin imagelist.txt yolov4.table mean=[104,117,123] norm=[0.017,0.017,0.017] shape=[224,224,3] pixel=BGR thread=8 method=kl      

3.3 量化模型

./ncnn2int8 yolov4-opt.param yolov4-opt.bin yolov4-int8.param yolov4-int8.bin yolov4.table      

3.4 加載 int8 模型進行推理

ncnn::Net yolov4;
yolov4.load_param("yolov4-int8.param");
yolov4.load_model("yolov4-int8.bin");
...
ncnn::Extractor ex = yolov4.create_extractor();
ex.input("data", in);
ex.extract("output", out);
...      

  以上以很簡潔的方式分享了一下 ncnn from_darknet 的模型轉換及量化推理流程。希望會對你的學習有一些幫助。

掃描下方二維碼即可關注我的微信公衆号【極智視界】,擷取更多AI經驗分享,讓我們用極緻+極客的心态來迎接AI !

繼續閱讀