[發明專利]應用于二值化卷積神經網絡的硬件加速器及其數據處理方法有效
| 申請號: | 201911055498.0 | 申請日: | 2019-10-31 |
| 公開(公告)號: | CN110780923B | 公開(公告)日: | 2021-09-14 |
| 發明(設計)人: | 杜高明;涂振興;陳邦溢;楊振文;張多利;宋宇鯤;李楨旻 | 申請(專利權)人: | 合肥工業大學 |
| 主分類號: | G06F9/30 | 分類號: | G06F9/30;G06N3/04;G06N3/063;G06N3/08 |
| 代理公司: | 安徽省合肥新安專利代理有限責任公司 34101 | 代理人: | 陸麗莉;何梅生 |
| 地址: | 230009 安*** | 國省代碼: | 安徽;34 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 應用于 二值化 卷積 神經網絡 硬件 加速器 及其 數據處理 方法 | ||
1.一種應用于二值化卷積神經網絡的硬件加速器,其特征是:所述二值化卷積神經網絡包括:K層二值化卷積層、K層激活函數層、K批量標準化層、K層池化層以及一層全連接分類輸出層;并將所述批量標準化層中的訓練參數個數合并為一個;
所述二值化卷積神經網絡對大小為N×M的輸入二值化灰度圖片進行訓練,得到每一層的神經網絡訓練參數;
所述的硬件加速電路包括:神經網絡參數存儲模塊、矩陣生成器模塊、卷積計算陣列模塊、池化層模塊以及全局控制模塊;
所述神經網絡參數存儲模塊中預存有所述輸入二值化灰度圖片和每一層的神經網絡訓練參數;所述神經網絡訓練參數包括:權重參數、批量標準化參數;且所存入的輸入二值化灰度圖片是以數據“0”表示所述二值化灰度圖片中像素點“-1”,以數據“1”表示所述二值化灰度圖片中像素點“1”;
所述矩陣生成器模塊是由數據輸入電路、特征圖的數據寄存器組、數據輸出電路組成;
定義所述二值化卷積神經網絡中的當前層數為k,并初始化k=1;
在二值化卷積神經網絡的第k層計算下,所述全局控制模塊發送第一次矩陣生成開始信號作為輸入特征圖中若干個行的第一次滑動計算給所述矩陣生成器模塊;若k=1,則所述輸入特征圖為輸入二值化灰度圖片,若k1,則所述輸入特征圖為每一層的中間特征圖;
所述數據輸入電路接收到矩陣生成開始信號之后,并根據當前滑動計算的類型分別進行處理:
若當前滑動計算的類型為上邊緣計算,則在第一個周期的上升沿到來時,從所述神經網絡參數存儲模塊中讀出當前滑動計算下的第一行輸入特征圖的數據存入所述數據寄存器組中的第一個寄存器中;在第二個周期的上升沿到來時,將所述第一個寄存器中的數據存入第二個寄存器中,再從所述神經網絡參數存儲模塊中讀出當前滑動計算下的第二行輸入特征圖的數據存入所述數據寄存器組中的第一個寄存器中,由所述數據輸出電路輸出第一個寄存器和第二個寄存器中的數據;
若當前滑動計算的類型為非邊緣計算,則在第一個周期的上升沿到來時,從所述神經網絡參數存儲模塊中讀出當前滑動計算下的第一行輸入特征圖的數據存入所述數據寄存器組中的第一個寄存器中;在第二個周期的上升沿到來時,將所述第一個寄存器中的數據存入第二個寄存器中,再從所述神經網絡參數存儲模塊中讀出當前滑動計算下的第二行輸入特征圖的數據存入所述數據寄存器組中的第一個寄存器中;在第三個周期的上升沿到來時,將所述第二個寄存器中的數據存入第三個寄存器中,將所述第一個寄存器中的數據存入第二個寄存器中,再從所述神經網絡參數存儲模塊中讀出當前滑動計算下的第三行輸入特征圖的數據存入所述數據寄存器組中的第一個寄存器中,由所述數據輸出電路輸出第一個寄存器、第二個寄存器和第三個寄存器中的數據;
若當前滑動計算的類型為下邊緣計算,則在第一個周期的上升沿到來時,將所述第三個寄存器中存入的當前滑動計算下的倒數第三行輸入特征圖的數據移出,將所述第二個寄存器中當前滑動計算下的倒數第二行輸入特征圖的數據存入第三個寄存器中,將所述第一個寄存器中當前滑動計算下的倒數第一行輸入特征圖的數據存入第二個寄存器中,由所述數據輸出電路輸出第二個寄存器和第三個寄存器中的數據;
所述卷積計算陣列模塊是由參數讀取模塊、6:2壓縮樹模塊、輸出接口模塊組成;
在二值化卷積神經網絡的第k層計算下,所述參數讀取模塊判斷獲取數據輸出電路輸出的當前滑動計算下的數據作為輸入數據,并從所述神經網絡參數存儲模塊中讀取當前滑動計算下的神經網絡訓練參數后一起發送給所述6:2壓縮樹模塊;
所述6:2壓縮樹模塊由同或門陣列、popcount模塊和加法器組成;
所述同或門陣列接收當前滑動計算下的輸入數據和神經網絡訓練參數,并根據當前滑動計算的類型分別進行處理,得到同或結果:
若當前滑動計算的類型為上邊緣計算,且為左邊緣計算,則將權重參數的[4:5]位與第二個寄存器給出的數據的[0:1]位取同或運算,將權重參數的[7:8]位與第一個寄存器給出的數據的[0:1]位取同或運算;
若當前滑動計算的類型為上邊緣計算,且非左右邊緣計算,則將權重參數的[3:5]位與第二個寄存器給出的特征圖的數據的[a:a+2]位取同或運算,將權重參數的[6:8]位與第一個寄存器給出的數據的[a:a+2]位取同或運算,其中,0≤a≤M;
若當前滑動計算的類型為上邊緣計算,且為右邊緣計算,則將權重參數的[3:4]位與第二個寄存器給出的據的[M-1:M]位取同或運算,將權重參數的[6:7]位與第一個寄存器給出的數據的[M-1:M]位取同或運算;
若當前滑動計算的類型為非上下邊緣計算,且為左邊緣計算,則將權重參數的[1:2]位與第三個寄存器給出的數據的[0:2]位取同或運算,將權重參數的[4:5]位與第二個寄存器給出的數據的[0:2]位取同或運算,將權重參數的[7:8]位與第一個寄存器給出的數據的[0:2]位取同或運算;
若當前滑動計算的類型為非上下邊緣計算,且非左右邊緣計算,則將權重參數的[0:2]位與第三個寄存器給出的數據的[c:c+2]位取同或運算,將權重參數的[3:5]位與第二個寄存器給出的數據的[c:c+2]位取同或運算,將權重參數的[6:8]位與第一個寄存器給出的數據的[c:c+2]位取同或運算,其中,0≤c≤M;
若當前滑動計算的類型為非上下邊緣計算,且為右邊緣計算,則將權重參數的[0:1]位與第三個寄存器給出的數據的[M-1:M]位取同或運算,將權重參數的[3:4]位與第二個寄存器給出的數據的[M-1:M]位取同或運算,將權重參數的[6:7]位與第一個寄存器給出的數據的[M-1:M]位取同或運算;
若當前滑動計算的類型為下邊緣計算,且為左邊緣計算,則將權重參數的[1:2]位與第三個寄存器給出的數據的[0:1]位取同或運算,則將權重參數的[4:5]位與第二個寄存器給出的數據的[0:1]位取同或運算;
若當前滑動計算的類型為下邊緣計算,且為非左右邊緣計算,則將權重參數的[0:2]位與第三個寄存器給出的數據的[b:b+2]位取同或運算,將權重參數的[3:5]位與第二個寄存器給出的數據的[b:b+2]位取同或運算,其中,0≤b≤M;
若當前滑動計算的類型為下邊緣計算,且為右邊緣計算,則將權重參數的[0:1]位與第三個寄存器給出的數據的[M-1:M]位取同或運算,將權重參數的[3:4]位與第二個寄存器給出的數據的[M-1:M]位取同或運算;
所述popcount模塊對所述同或結果中的“1”進行計數,得到計數結果;
所述加法器將計數結果和所述批量標準化參數進行累加,得到的累加結果取符號位后,作為第k層二值化卷積層的輸出特征圖;
第k層池化層對所述第k層二值化卷積層的輸出特征圖進行池化處理,得到的池化結果作為第k+1層二值化卷積層的輸入特征圖;
若k=K時,則第K-1層池化層的輸出結果作為所述全連接分類輸出層的輸入特征圖,再經過在二值化卷積神經網絡的第K層計算,再由所述加法器得到的累加結果并取符號位后作為所述硬件加速器對所述二值化灰度圖片中數字的識別結果。
2.一種應用于二值化卷積神經網絡的硬件加速器的數據處理方法,其特征是按如下步驟進行:
步驟1、構建二值化卷積神經網絡包括:K層二值化卷積層、K層激活函數層、K批量標準化層、K層池化層以及一層全連接分類輸出層;
步驟2、利用式(1)所示的批量標準化變換公式將所述批量標準化層中的四個訓練參數E[A]、Var[A]、β、γ合并為一個參數C:
式(1)中,γ為標準化的擴展參數,β為標準化的平移參數,A為訓練時一個小批量的數量,Var[A]為一次網絡訓練時,批量標準化層每一個小批量輸入的平均值,E[A]為一次網絡訓練時,標量標準化層每一個小批量輸入的方差值,ε是網絡訓練前預先設定的一個偏移參數,Vec_Len單個輸入值的位寬;
步驟3、獲取大小為N×M的灰度數字圖片并進行二值化處理,得到輸入二值化灰度圖片;且所述輸入二值化灰度圖片是以數據“0”表示所述二值化灰度圖片中像素點“-1”,以數據“1”表示所述二值化灰度圖片中像素點“1”;
步驟4、利用所述二值化卷積神經網絡對所述輸入二值化灰度圖片進行訓練,得到每一層的神經網絡訓練參數;所述神經網絡訓練參數包括:權重參數、批量標準化參數;
步驟5、構建所述硬件加速電路包括:神經網絡參數存儲模塊、矩陣生成器模塊、卷積計算陣列模塊、池化層模塊以及全局控制模塊;并將所述輸入二值化灰度圖片和每一層的神經網絡訓練參數存入所述神經網絡參數存儲模塊中;
步驟6、定義所述二值化卷積神經網絡中的當前層數為k,并初始化k=1;
步驟7、在二值化卷積神經網絡的第k層計算下,所述全局控制模塊發送第一次矩陣生成開始信號作為輸入特征圖中若干個行的第一次滑動計算給所述矩陣生成器模塊;若k=1,則所述輸入特征圖為輸入二值化灰度圖片,若k1,則所述輸入特征圖為每一層的中間特征圖;
步驟8、所述矩陣生成器模塊接收到矩陣生成開始信號之后,并根據當前滑動計算的類型分別進行處理:
若當前滑動計算的類型為上邊緣計算,則在第一個周期的上升沿到來時,從所述神經網絡參數存儲模塊中讀出當前滑動計算下的第一行輸入特征圖的數據存入自身數據寄存器組中的第一個寄存器中;在第二個周期的上升沿到來時,將所述第一個寄存器中的數據存入第二個寄存器中,再從所述神經網絡參數存儲模塊中讀出當前滑動計算下的第二行輸入特征圖的數據存入所述第一個寄存器中;
若當前滑動計算的類型為非邊緣計算,則在第一個周期的上升沿到來時,從所述神經網絡參數存儲模塊中讀出當前滑動計算下的第一行輸入特征圖的數據存入所述第一個寄存器中;在第二個周期的上升沿到來時,將所述第一個寄存器中的數據存入第二個寄存器中,再從所述神經網絡參數存儲模塊中讀出當前滑動計算下的第二行輸入特征圖的數據存入所述第一個寄存器中;在第三個周期的上升沿到來時,將所述第二個寄存器中的數據存入第三個寄存器中,將所述第一個寄存器中的數據存入第二個寄存器中,再從所述神經網絡參數存儲模塊中讀出當前滑動計算下的第三行輸入特征圖的數據存入所述第一個寄存器中;
若當前滑動計算的類型為下邊緣計算,則在第一個周期的上升沿到來時,將所述第三個寄存器中存入的當前滑動計算下的倒數第三行輸入特征圖的數據移出,將所述第二個寄存器中當前滑動計算下的倒數第二行輸入特征圖的數據存入第三個寄存器中,將所述第一個寄存器中當前滑動計算下的倒數第一行輸入特征圖的數據存入第二個寄存器中;
步驟9、在二值化卷積神經網絡的第k層計算下,所述卷積計算陣列模塊判斷獲取矩陣生成器模塊輸出的當前滑動計算下的數據作為輸入數據,并從所述神經網絡參數存儲模塊中讀取當前滑動計算下的神經網絡訓練參數,從而根據當前滑動計算的類型分別進行處理,得到同或結果:
若當前滑動計算的類型為上邊緣計算,且為左邊緣計算,則將權重參數的[4:5]位與第二個寄存器給出的數據的[0:1]位取同或運算,將權重參數的[7:8]位與第一個寄存器給出的數據的[0:1]位取同或運算;
若當前滑動計算的類型為上邊緣計算,且非左右邊緣計算,則將權重參數的[3:5]位與第二個寄存器給出的特征圖的數據的[a:a+2]位取同或運算,將權重參數的[6:8]位與第一個寄存器給出的數據的[a:a+2]位取同或運算,其中,0≤a≤M;
若當前滑動計算的類型為上邊緣計算,且為右邊緣計算,則將權重參數的[3:4]位與第二個寄存器給出的據的[M-1:M]位取同或運算,將權重參數的[6:7]位與第一個寄存器給出的數據的[M-1:M]位取同或運算;
若當前滑動計算的類型為非上下邊緣計算,且為左邊緣計算,則將權重參數的[1:2]位與第三個寄存器給出的數據的[0:2]位取同或運算,將權重參數的[4:5]位與第二個寄存器給出的數據的[0:2]位取同或運算,將權重參數的[7:8]位與第一個寄存器給出的數據的[0:2]位取同或運算;
若當前滑動計算的類型為非上下邊緣計算,且非左右邊緣計算,則將權重參數的[0:2]位與第三個寄存器給出的數據的[c:c+2]位取同或運算,將權重參數的[3:5]位與第二個寄存器給出的數據的[c:c+2]位取同或運算,將權重參數的[6:8]位與第一個寄存器給出的數據的[c:c+2]位取同或運算,其中,0≤c≤M;
若當前滑動計算的類型為非上下邊緣計算,且為右邊緣計算,則將權重參數的[0:1]位與第三個寄存器給出的數據的[M-1:M]位取同或運算,將權重參數的[3:4]位與第二個寄存器給出的數據的[M-1:M]位取同或運算,將權重參數的[6:7]位與第一個寄存器給出的數據的[M-1:M]位取同或運算;
若當前滑動計算的類型為下邊緣計算,且為左邊緣計算,則將權重參數的[1:2]位與第三個寄存器給出的數據的[0:1]位取同或運算,則將權重參數的[4:5]位與第二個寄存器給出的數據的[0:1]位取同或運算;
若當前滑動計算的類型為下邊緣計算,且為非左右邊緣計算,則將權重參數的[0:2]位與第三個寄存器給出的數據的[b:b+2]位取同或運算,將權重參數的[3:5]位與第二個寄存器給出的數據的[b:b+2]位取同或運算,其中,0≤b≤M;
若當前滑動計算的類型為下邊緣計算,且為右邊緣計算,則將權重參數的[0:1]位與第三個寄存器給出的數據的[M-1:M]位取同或運算,將權重參數的[3:4]位與第二個寄存器給出的數據的[M-1:M]位取同或運算;
步驟10、對所述同或結果中的“1”進行計數,得到計數結果;
步驟11、采用式(2)對計數結果和所述批量標準化參數進行累加,得到累計結果Y2并取符號位后,得到中間結果;
式(2)中,X0,1是標準化單個輸入值,popcount(X0,1)代表輸入值X0,1中“1”的個數;
得到的累加結果步驟12、將所述中間結果作為第k層二值化卷積層的輸出特征圖,利用第k層池化層對所述第k層二值化卷積層的輸出特征圖進行池化處理,得到第k層池化結果;
步驟13、將第k層池化結果作為第k+1層二值化卷積層的輸入特征圖,并將k+1賦值給k后,判斷kK是否成立,若成立,則表示第K層池化層的輸出結果為所述全連接分類輸出層的輸入特征圖;
步驟14、所述全連接分類輸出層的輸入特征圖經過步驟7-步驟11的處理,得到的中間結果作為所述硬件加速器對所述二值化灰度圖片中數字的識別結果。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于合肥工業大學,未經合肥工業大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201911055498.0/1.html,轉載請聲明來源鉆瓜專利網。





