神經網絡從算法訓練到FPGA部署 (1)--開發流程說明

       將深度神經網絡算法部署到現實場景(基於FPGA),主要包含兩部分的工作,一個是爲場景找到合適的算法,訓練出滿足要求的模型;第2個是將模型定點化後部署在FPGA上運行,主要含以下步驟:

  1. 準備工作:數據收集及TFrecord製作,數據預處理函數編寫。

        練習時從kaggle網站上獲取帶標註數據集;

        製作訓練與驗證用的Tfrecord數據文件;

        圖像增強、剪裁、pad、標準化等預處理;

        訓練及驗證用的mini-batch數據生成(隨機、多線程)

    2. 基於Tensorflow框架下VGG13,InceptionV3,Resnet50網絡改寫及適配,適配到本地數據集的類別數。在本地數據集上訓          練,精度達到要求。

    3. 網絡模型壓縮

        Xilinx公司提供了Decent_Q工具進行模型壓縮及定點,但官方只提供定點功能,帶剪枝功能的模型壓縮工具估計要另外收           費。後面個人想自己開發一個工具替代該功能。通過網絡結構及參數,將權重較小的或者值比較相近的kernel去掉,重新構         建更稀疏的網絡,保存新的網絡和權重,重新導入數據,做微調重新訓練,生成新的Pb,給xilinx的decent_Q做定點。

    4. FPGA上的部署:

        固化後的模型及參數保存,使用pb文件格式;

       FPGA上DPU集成;

       利用DNNDK工具生成DPU的運行指令;

       Petalinux系統製作及DPU後端C程序開發。

       不過如果不是卷積網絡,就無法利用xilinx的這套工具鏈。

       自己開發部署工具鏈一般包含:

       硬件:硬件加速器的開發,針對算法開發算子、調度單元、通信模塊。

       定點工具及編譯器:模型定點化,以及網絡模型、權重翻譯成指令及權重數據。

       Runtime:運行時配合的驅動以及數據預處理、後處理代碼。

     另外,mxnet、keras、pytorch這些開發框架下開發的模型,可以轉化成pb格式,這樣可以適配採用不同框架開發算法的人           員。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章