天天看點

基于 Zynq 的 CNN 圖像識别算法的優化與實作

卷積神經網絡訓練與硬體加速器實作 

圖像識别系統的第二部分是 CNN 加速器,CNN 加速器的實作包含訓練與推理兩個階段。

一是卷積神經網絡訓練,提取相應的權重值和偏置值,即訓練階段。二是根據網絡模型實作

卷積神經網絡,并做硬體加速,提升卷積神經網絡運算的速率,即推理階段。 

 卷積神經網絡訓練 

4.1.1 卷積神經網絡模型搭建 

本文采用的 Flowers  Recognition 資料集由 4242 張花卉圖檔組成,共  5  個類别,分别是

雛菊、郁金香、玫瑰、向日葵和蒲公英,每一類大約包含 800 張圖檔,且每張圖檔的大小大

約為 320×240。但每張圖檔并沒有縮放到統一的大小,具有的不同的比例。 

本文采用 VGG[9]網絡為卷積神經網絡模型,它是牛津大學的 Visual Geometry Group 組在

2014 年 ILSVRC 競賽中提出的。其中 VGG-11 網絡由 8 個卷積層、5 個池化層和 3 個全連接配接

層構成,輸入 224×224×3 的圖像資料,輸出 1000 類物體分類的結果。針對 Flowers Recognition

資料集的特征分布特點,本文保持 VGG-11 網絡卷積層和池化層的網絡結構不變,調整全連

接層的網絡結構,将最後三層的全連接配接層的輸出通道數分别修改為 1024、128 和 5,得到如

圖 4.1 所示的 VGG-11 網絡結構。 

基于 Zynq 的 CNN 圖像識别算法的優化與實作

按照圖 4.1 所示的網絡結構搭建卷積神經網絡,本文采用 PyTorch[17]神經網絡架構實作。

PyTorch 神經網絡架構提供在 ImageNet[57]資料集中預訓練好的 VGG-11 網絡模型,且 ImageNet

資料集中包含部分花卉圖檔,故采用遷移學習[58]的方式訓練 VGG-11 網絡。

4.1.2 參數提取 

CNN 網絡訓練完畢後,采用 PyTorch 神經網絡架構将卷積神經網絡模型及其參數儲存在

pt 檔案中。而 PyTorch 神經網絡架構提供了 load 方法,可以很友善地讀取檔案中儲存的參數,

但輸出格式為張量,無法直接使用。故先轉換為 Numpy[61]的資料格式,再提取其中的參數,

以固定的格式儲存資料,按照如算法 4.1 所示的僞代碼實作。

繼續閱讀