卷積神經網絡訓練與硬體加速器實作
圖像識别系統的第二部分是 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 網絡結構。

按照圖 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 所示的僞代碼實作。