低面積BWNN積體電路設計及應用於人臉辨識之研究
58
0
0
全文
(2) 中文摘要. 中文摘要 人工智慧議題在近幾年來竄起,以及類神經網路的快速發展,使得我們 的生活逐漸加入了類神經網路的應用,例如:股價預測、語音辨識、人臉辨 識,尤其在 APPLE 公司推出了加入臉部辨識的手機機型後,帶給人們更多 的便利性,也讓人臉辨識議題得到更多的關注。 然而裝載在行動裝置上勢必需要低功率且不能使用太多的硬體資源,因 此本論文的研究目的是設計低面積電路於 FPGA 上實作人臉辨識。不過利於 圖像辨識的摺積神經網路是利用浮點數做運算,這會造成硬體的消耗資源上 升,為此本論文使用二元化類神經網路來實現人臉辨識,藉由量化模型的方 式下降硬體面積,二元化類神經網路相較於摺積神經網路辨識率是較低的, 於是本論文捨棄使用量化活化函數只保留量化參數,簡稱 BWNN(Binarized Weights Neural Networks),以此可以達到與摺積神經網路相匹敵的辨識效能。 本論文亦設計 Partial output 架構,此能更加降低硬體的消耗資源,依實 驗結果顯示,本論文能兼具低面積、低消耗功率且又有著高辨識率的優點, 因此可以在更小的晶片上實現人臉辨識系統,使得在生活中能更被廣泛應用。 關鍵字:人工智慧、類神經網路、摺積類神經網路、二元化類神經網路、人 臉辨識、FPGA、Partial output accumulation. i.
(3) 目錄. 目錄 中文摘要 .................................................................................................................... i 目錄 ........................................................................................................................... ii 附表目錄 .................................................................................................................. iii 附圖目錄 .................................................................................................................. iv 第一章 緒論 ............................................................................................................. 1 第一節 研究背景 ................................................................................................. 1 第二節 研究動機 ................................................................................................. 2 第三節 研究目的與方法 ..................................................................................... 6 第四節 全文架構 ................................................................................................. 9 第二章 基礎理論及技術背景 ............................................................................... 10 第一節 BNN 與 CNN 的比較 ........................................................................... 10 第二節 Batch Normalization.............................................................................. 12 第三節 Activations............................................................................................. 13 第三章 系統架構 ................................................................................................... 15 第一節 研究流程 ............................................................................................... 15 第二節 電路架構 ............................................................................................... 16 第一項 C1 電路架構 ................................................................................... 18 第二項 S2、S4 電路架構 ........................................................................... 22 第三項 B1、B2 電路架構 .......................................................................... 25 第四項 C3 電路架構 ................................................................................... 27 第五項 F5 電路架構 ................................................................................... 36 第四章 實驗環境與效能分析 ............................................................................... 40 第一節 實驗環境與開發平台 ........................................................................... 40 第二節 軟體實驗結果 ....................................................................................... 44 第三節 硬體實驗結果與效能分析 ................................................................... 45 第五章 結論 ........................................................................................................... 50 參考文獻 ................................................................................................................. 51. ii.
(4) 附表目錄. 附表目錄 表 1-1 CNN 與 BNN 的比較 ........................................................................................ 5 表 4-1 Altera EP4SGX530KH40C2 規格 ................................................................... 41 表 4-2 Xilinx PYNQ-Z2 規格 ..................................................................................... 42 表 4-3 量化模型比較表 .............................................................................................. 44 表 4-4 BWNN 電路的各層浮點數運算個數 ............................................................. 45 表 4-5 本論文 BWNN 電路與現有電路的資源比較 ................................................ 48. iii.
(5) 附圖目錄. 附圖目錄 圖 1-1 SCNN 模型架構................................................................................................. 4 圖 1-2 BNN 模型架構 ................................................................................................... 5 圖 1-3 TNN 模型架構 ................................................................................................... 5 圖 1-4 QNN 模型架構................................................................................................... 5 圖 1-5 本論文單一運算單元的電路架構 .................................................................... 6 圖 1-6 Interleaved 與 Partial output 架構的運作範例 1............................................... 7 圖 1-7 Interleaved 與 Partial output 架構的運作範例 2............................................... 7 圖 1-8 Interleaved 與 Partial output 架構的運作範例 3............................................... 8 圖 1-9 Interleaved 與 Partial output 架構的運作範例 4............................................... 8 圖 1-10 Interleaved 與 Partial output 架構的運作範例 5............................................. 8 圖 1-11 Interleaved 與 Partial output 架構的運作範例 6 ............................................. 8 圖 2-1 BNN 摺積運算範例 ......................................................................................... 11 圖 2-2 BNN 採樣層運算範例 ..................................................................................... 12 圖 3-1 本論文研究流程圖 .......................................................................................... 15 圖 3-2 Lenet-5 模型架構 ............................................................................................. 16 圖 3-3 本論文模型架構 .............................................................................................. 16 圖 3-4 BWNN pipelined 硬體模型架構 ..................................................................... 17 圖 3-5 C1 電路架構..................................................................................................... 18 圖 3-6 C1 電路運作範例 1.......................................................................................... 19 圖 3-7 C1 電路運作範例 2.......................................................................................... 19 圖 3-8 C1 電路運作範例 3.......................................................................................... 20 圖 3-9 C1 電路運作範例 4.......................................................................................... 20 圖 3-10 Shift Register 邊界問題 ................................................................................. 21 iv.
(6) 附圖目錄 圖 3-11 S2、S4 電路架構 ........................................................................................... 22 圖 3-12 S2、S4 電路運作範例 1 ................................................................................ 23 圖 3-13 S2、S4 電路運作範例 2 ................................................................................ 24 圖 3-14 S2、S4 電路運作範例 3 ................................................................................ 24 圖 3-15 B1、B2 電路架構 .......................................................................................... 25 圖 3-16 B1、B2 電路運作範例 1 ............................................................................... 26 圖 3-17 B1、B2 電路運作範例 2 ............................................................................... 26 圖 3-18 C3 電路架構................................................................................................... 27 圖 3-19 C3 Shift Register 的大小 ............................................................................... 28 圖 3-20 C3 電路運作範例 1........................................................................................ 29 圖 3-21 C3 電路運作範例 2........................................................................................ 29 圖 3-22 論文[6]累加器設計與改善後的 Partial output accumulation 運作 1 .......... 30 圖 3-23 論文[6]累加器設計與改善後的 Partial output accumulation 運作 2 .......... 31 圖 3-24 論文[6]累加器設計與改善後的 Partial output accumulation 運作 3 .......... 31 圖 3-25 論文[6]累加器設計與改善後的 Partial output accumulation 運作 4 .......... 32 圖 3-26 C3 的 Output Buffer 範例運作 1 ................................................................... 32 圖 3-27 C3 的 Output Buffer 範例運作 2 ................................................................... 33 圖 3-28 C3 的 Output Buffer 範例運作 3 ................................................................... 34 圖 3-29 C3 的 Output Buffer 範例運作 4 ................................................................... 34 圖 3-30 C3 的 Output Buffer 範例運作 5 ................................................................... 35 圖 3-31 C3 的 Output Buffer 範例運作 6 ................................................................... 35 圖 3-32 F5 電路架構 ................................................................................................... 36 圖 3-33 F5 電路細部架構 ........................................................................................... 37 圖 3-34 F5 電路運作範例 1 ........................................................................................ 37 圖 3-35 F5 電路運作範例 2 ........................................................................................ 38 v.
(7) 附圖目錄 圖 3-36 F5 電路運作範例 3 ........................................................................................ 38 圖 3-37 F5 電路運作範例 4 ........................................................................................ 39 圖 4-1 Altera EP4SGX530KH40C2 ............................................................................ 40 圖 4-2 Xilinx PYNQ-Z2 .............................................................................................. 41 圖 4-3 Extended YaleB 28 People 資料集................................................................... 43 圖 4-4 論文[7] 4 People 資料集 .................................................................................. 43 圖 4-5 BWNN 電路的總 Latency ............................................................................... 47 圖 4-6 BWNN 於 PYNQ 實現即時人臉辨識系統 .................................................... 49. vi.
(8) 第一章 緒論. 第一章 緒論 第一節 研究背景 人工智慧(Aritificial Intelligence, 簡稱 AI)是現今許多科學家的研究項目, 然而當今火紅的學門其實早已經在 1950 年代被提出,在電腦被發明以來,許 多科學家便已開始關注如何利用電腦解決各式各樣的問題,但那時的電腦計算 速度並不如現今電腦,在硬體儲存上也無足夠的空間,所需要的數據量更不足 夠,因此成為了人工智慧發展的阻礙,而遲遲無法有所突破。直到 2000 年代, 硬體效能呈現指數成長,以及電腦計算速度提升,並涵蓋大量的統計學,再加 上大數據的興起,得以讓人工智慧快速發展,進而成為現今科技研究的熱潮。 人工智慧討論及研究的範疇十分廣泛,其中最廣為人知的類神經網路為其 中重要的理論之一。類神經網路以生物的神經網路結構作為啟發,生物的神經 系統是由神經元組成,彼此間透過突觸以電流來傳遞訊息,科學家為了模擬神 經細胞的行為,將每個神經元當作一個活化函數(Activation function),相當於 一個數學式子,輸入便可透過神經元將訊息逐一傳遞下去,因此可將類神經網 路模型視為一個數學模型,可憑藉電腦的高速計算能力,來進行評估或近似的 運算。. 1.
(9) 第一章 緒論. 第二節 研究動機 現今類神經網路逐漸被應用在生活中,例如:人臉辨識、語音辨識以及 股價預測等等。其中在人臉辨識方面,2017 年 APPLE 公司推出含有 Face ID 功能的 iPhone X,有別於以往以指紋辨識來解鎖手機,反而是透過臉部辨識 的方式將手機解鎖,此次的推出帶給使用者極高的方便性,也讓人臉辨識議 題得到人們更多的注意。 然而若將人臉辨識的網路模型應用在行動裝置上,不可能運用龐大的硬 體資源來支援人臉辨識的運作,且雖然執行類神經網路模型時常利用 GPU 來 做高速平行的計算,但高消耗功率成為了實際應用上的阻礙。為了解決上述 高消耗功率以及有限硬體資源的問題,本論文希望找到低功率、低面積的替 代方案來實現,因此本論文以基於有著低功率特性的現場可程式化邏輯閘陣 列(Field Programmable Gate Array,簡稱 FPGA)來設計人臉辨識網路模型的電 路架構。 人臉辨識常利用摺積神經網路(Convolutional Neural Network, CNN)來實 現,摺積神經網路善於擷取局部特徵來做分析,其由多個摺積層、採樣層及 全連接層組成,在圖像辨識上有著良好的表現。且由於摺積神經網路有著權 重共享的特性,因此在硬體設計上也相對容易。 設計摺積神經網路電路時所消耗的硬體資源主要受到參數、算術計算和. 2.
(10) 第一章 緒論 內部記憶體所影響。參數即為摺積神經網路中的權重,算術計算意指摺積運 算所占用的電路面積,而內部記憶體則是暫存摺積神經網路中每一層在運算 過程所產生的部分值。 由於摺積神經網路皆以 32-bit 的浮點數權重做運算,因此當模型越深、 摺積層的層數越多,權重所涵蓋的硬體面積也會隨之大幅增加,且浮點數運 算亦會佔據大量的硬體資源。為了改善大量浮點數參數所造成的大面積問題, 研究者們主要以兩種方式實踐低面積神經網路,其一為減少參數個數,利用 此 方 法 作 設 計 的 網 路 模 型 為 Sparse Convolutional Neural Networks( 簡 稱 SCNN)[1]。而另外一種是量化網路模型,藉由量化參數以及量化活化函數的 方式降低面積。量化參數意指降低權重的精度,例如:將 32-bit 的參數量化 到 1-bit,而量化活化函數則是將輸入輸出值的精度做下降,相關的網路模型 為 Binarized Neural Networks(簡稱 BNN)[2]、Ternary Neural Networks(簡稱 TNN)[3]及 Quantized Neural Networks(簡稱 QNN)[4],我們將會逐一簡單介紹 上述所提及的網路模型架構。 首先,我們先介紹利用減少參數個數方式的 SCNN,圖 1-1 左側為一般 CNN 模型,而右側為 SCNN 模型。SCNN 是以 Sparse decomposition 來減少 模型中冗餘的參數,它可以將超過 90%的參數歸為零,使得降低模型的計算 量。但是 SCNN 必須記錄參數歸為零的位址,也就是圖中的 sparse kernel. 3.
(11) 第一章 緒論 matrix,這在硬體設計上較為複雜且困難。. 圖 1-1 SCNN 模型架構 使用模型量化的 BNN、TNN 與 QNN 在硬體設計上則較為簡單。BNN 是透過二元化的方式將 32-bit 的權重量化成 1-bit,且由圖 1-2 所示,除了第 一層的輸入以外,其他摺積層的輸入透過二元化活化函數將值限制在 1 或−1。 TNN 則是透過計算歐幾里得距離的方式將 32-bit 權重量化為 2-bit,可由圖 1-3 所見,除第一層輸入外,其他層輸入亦經由量化活化函數將值限制在 1、 0 或−1,且在層數較多的模型中,TNN 相較於 BNN 有著較好的表現,例如: AlexNet。而我們也可以彈性量化 bits 的長度,使用 QNN 將權重量化成我們 設定的 Q-bit,如圖 1-4 所示。BNN、TNN 與 QNN 降低了模型的複雜度,更 在硬體實現上有效的下降電路面積,但伴隨而來的便是準確率下降,由表 11 所示,2018 年 Shilin Zhu[5]提及 BNN 在準確率上相較於其他模型是較低 的。. 4.
(12) 第一章 緒論. 圖 1-2 BNN 模型架構. 圖 1-3 TNN 模型架構. 圖 1-4 QNN 模型架構. 表 1-1 CNN 與 BNN 的比較 Weights. Activation. Accuracy. CNN. 32-bit. 32-bit. High. BNN. 1-bit. 1-bit. Low. 5.
(13) 第一章 緒論. 第三節 研究目的與方法 本論文的主要研究目的是希望使用有著高可攜性且低功率消耗特性的 FPGA 來實現人臉辨識的網路模型,並且藉由量化模型的作法以及改善電路 設計方式來降低電路面積,使得電路能夠置於更小的晶片上來實現。 本論文採取捨棄量化活化函數的作法,每一層的輸入與輸出依然維持 32bit 的浮點數,只保留 BNN 的權重二元化以達到低面積且又高準確率的模型, 在此我們簡稱 BWNN(Binarized Weights Neural Networks)。權重經由二元化後 變為 1 或−1,使得電路在摺積計算可以使用 XNOR 的方式來做運算,並不 需要利用浮點數運算,以此降低了算術計算的面積。且根據圖 1-5 可見,本 論文每一層的電路運算皆只使用一個運算單元,由此亦可降低電路面積。. 圖 1-5 本論文單一運算單元的電路架構 除了以量化模型的作法實現低面積電路以外,本論文也使用了 Interleaved 以及 Partial output 的架構。Interleaved 架構是將輸入值以交錯的 方式放置到 buffer 中。而 Partial output 架構是不斷將部分的值做運算,直到 所有輸入皆已計算完畢,因此會使用較少的暫存記憶體,且不須等到所有值 6.
(14) 第一章 緒論 皆輸入後才做計算。Interleaved 和 Partial output 架構兩者併用可以使得每一 層運算中所占用的暫存記憶體再更為減少。圖 1-6~圖 1-11 為 Interleaved 與 Partial output 架構的運作範例。輸入以 Interleaved 形式暫存到 buffer 中,再 透過 Computation Core 與權重做運算,最後經由 Partial output 的方式輸出部 分結果,直至完整計算完成。. 圖 1-6 Interleaved 與 Partial output 架構的運作範例 1. 圖 1-7 Interleaved 與 Partial output 架構的運作範例 2. 7.
(15) 第一章 緒論. 圖 1-8 Interleaved 與 Partial output 架構的運作範例 3. 圖 1-9 Interleaved 與 Partial output 架構的運作範例 4. 圖 1-10 Interleaved 與 Partial output 架構的運作範例 5. 圖 1-11 Interleaved 與 Partial output 架構的運作範例 6. 8.
(16) 第一章 緒論. 第四節 全文架構 本論文共分為五章,以下為各章節的概述: 第一章 緒論 本論文的研究背景、動機、目的與方法以及全文架構說明。 第二章 基礎理論及技術背景 簡述本論文所使用到的二元化類神經網路的基礎理論。 第三章 系統架構 詳述各層的電路架構以及運作流程。 第四章 實驗數據與效能分析 說明本論文的實驗環境以及實驗數據的分析。 第五章 結論 根據實驗數據對本論文做總結。. 9.
(17) 第二章 基礎理論與技術背景. 第二章 基礎理論及技術背景 本章節將介紹 BNN 模型,並介紹與 CNN 的比較、Batch Normalization 的使用以及活化函數(Activations)的選擇。. 第一節 BNN 與 CNN 的比較 Binarized Neural Networks 於 2016 年由 Matthieu Courbariaux 所提出,此 模型是一種為了降低類神經網路模型所占用的內存及降低模型的複雜度,以 加速模型運算速度。它與 CNN 相同亦是由數個摺積層、採樣層和全連接層 所組成。但與 CNN 的主要核心差別在於權重和活化函數進行二元化。 Courbariaux 在論文提及二元化的作法有兩種,第一種是 Deterministic,當值 大於等於零時,將值指定為+1,而其餘則指定為−1,此方式較為直接且簡單, 運算式子如(2,1)。 +1, 𝑆𝑖𝑔𝑛(𝑥) = { −1,. 𝑖𝑓 𝑥 ≥ 0 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒. (2,1). 第二種作法是 Stochastic Binarization,將值以隨機性的方式做二元化轉 換,如式子(2,2)所示,其中𝜎為 hard sigmoid function,運算式子為(2,3)。雖然 第二種方法較為合理,但每一次運算時,都需要產生一個隨機數,這會造成 模型訓練上較為耗時且複雜,因此本論文採用第一種方式做二元化轉換。 𝑆𝑖𝑔𝑛(𝑥) = {. +1, 𝑤𝑖𝑡ℎ 𝑝𝑟𝑜𝑏𝑎𝑏𝑖𝑙𝑖𝑡𝑦 𝑝 = 𝜎(𝑥) −1, 𝑤𝑖𝑡ℎ 𝑝𝑟𝑜𝑏𝑎𝑏𝑖𝑙𝑖𝑡𝑦 1 − 𝑝 𝑥+1. 𝜎(𝑥) = 𝑐𝑙𝑖𝑝 (. 2. , 0,1) = 𝑚𝑎𝑥(0, 𝑚𝑖𝑛(1, 10. 𝑥+1 2. )). (2,2). (2,3).
(18) 第二章 基礎理論與技術背景 BNN 的摺積運算與 CNN 的摺積運算方式相同,如公式(2,4)表示,𝑋 𝑝 為 第 p 個 Input feature map,𝑌 𝑞 為第 q 個 Output feature map,𝑊 𝑝,𝑞 為第 p 個 Input feature map 映射到第 q 個 Output feature map 的摺積核,而*為摺積運算,M 代表 Input feature map 的總個數,N 則為 Output feature map 的總個數。 𝑝 𝑝,𝑞 𝑌 𝑞 = ∑𝑀 , 𝑞 = 1, … . , 𝑁 𝑝=1 𝑋 ∗ 𝑊. (2,4). 然而 BNN 權重會經過二元化,因此𝑊 𝑝,𝑞 為所限制的+1或−1,相較於 CNN 其摺積運算只使用 XNOR 做運算,BNN 的摺積運算範例如圖 2-1。. 圖 2-1 BNN 摺積運算範例 摺積運算完後會進行降採樣,BNN 的採樣層與 CNN 的運算方式亦相同, 以此使網路降低計算量,並只保留重要的特徵值。本論文採用將影像以大小 為 2×2 的方式分割影像作 Max-pooling 的運算,其公式為(2,5),當輸入的 Input feature map 大小為 L×L,經過 Max-pooling 後的 Output feature map 大小為 𝐿. 𝐿. × 2。Max-pooling 的運作範例如圖 2-2。 2. 11.
(19) 第二章 基礎理論與技術背景 𝑝. 𝑝. 𝑝. 𝑝 𝑝 𝑌𝑖,𝑗 = 𝑚𝑎𝑥(𝑋2𝑖,2𝑗 , 𝑋2𝑖,2𝑗+1 , 𝑋2𝑖+1,2𝑗, 𝑋2𝑖+1,2𝑗+1 ) 𝐿. , 0 ≤ 𝑖, 𝑗 ≤ (2 − 1). (2,5). 圖 2-2 BNN 採樣層運算範例. 第二節 Batch Normalization 類神經網路模型的深度隨著問題的複雜性提高而增加,而網路每層間都 存在高度的關聯性。因此隨著訓練的進行,當淺層網路中有參數產生些微的 變化,到深層時淺層的改變會依層數加深而被放大,且深層也需要不斷適應 因淺層的改變所造成資料分布不同的問題,導致模型訓練難以收斂、學習速 度過慢。為了解決上述的問題,學者提出了 Batch Normalization 的方法。 Batch Normalization 以 mini-batch 為單位進行正規化,透過公式(2,6)來正 規化上一層的輸出,使得輸出後特徵分布的平均值為 0,標準差為 1。其中𝑥 是輸入,𝑦是正規化後的輸出結果,𝜇為訓練樣本的平均值,𝜎 2 則為變異數, 𝜖是一個為了防止分母為零的極小浮點數,而可訓練的參數為𝛾與𝛽,𝛾為權重,. 12.
(20) 第二章 基礎理論與技術背景 𝛽為偏移量。 𝑥−𝜇. 𝑦 = √𝜎2. +𝜖. ×𝛾+𝛽. (2,6). 由公式(2,6)可知,Batch Normalization 的運算依然有乘法的計算,使整個 類神經網路計算的時間拉長,因此在硬體的實現上,使用乘法器的多寡所造 成的面積消耗與時間的長短有著密切的關係。當我們希望運算時間快速,可 以使用較多的乘法器來同時計算,但付出的代價就是電路面積會隨之增加。 反之,當我們只使用一個乘法器時會造成運算時間較長,不過卻可以降低硬 體資源消耗。因此在電路設計時,在面積和時間上必須有所取捨。 而 BNN 因權重只為+1 與−1,使得特徵分布較無規律性,因此 BNN 在採樣層後必須使用 Batch Normalization 讓類神經網路能更容易找到特徵的 規律性,以加快模型的學習,並增加網路的穩定度。. 第三節 Activations 活化函數的用意主要是為了解決類神經網路的非線性問題,現實生活 中的問題大多都是非線性問題,若無使用活化函數,每一層都只是上一層 的線性組合,輸入和輸出無法脫離關係,使得神經網路的訓練毫無意義。 而 Courbariaux 提及在經過 Batch Normalization 的正規化之後,BNN 會使用 的活化函數為 Hard Hyperbolic tangent function(Htanh, 公式(2,7)),再透過二. 13.
(21) 第二章 基礎理論與技術背景 元化轉換將輸出限制在+1 與−1,以達到輸出與輸入為非線性關係。 𝐻𝑡𝑎𝑛ℎ(𝑥) = 𝑚𝑎𝑥 (−1, 𝑚𝑖𝑛(1, 𝑥)). (2,7). 當進入下一層摺積層做運算時(公式(2,4)),輸入𝑋 𝑝 只為+1 與−1,再加上 權重𝑊 𝑝,𝑞 也為+1 與−1,這會造成彼此作摺積運算時會流失許多的訊息,導 致辨識率下降,且隨著網路模型加深,此問題會更加嚴重,因此,為了避免 此問題,本論文選擇用 ReLU(公式(2,8))作為活化函數。 𝑅𝑒𝐿𝑈(𝑥) = 𝑚𝑎𝑥 (0, 𝑥). (2,8). 模型在訓練時會使用反向傳播來傳遞訊息以及更新參數,若在訓練的過 程中有梯度消失的問題,會導致資料無法更新,然而 ReLU 有效的解決了此 問題,再加上 ReLU 有計算速度快且收斂速度也快的特性,因此在現今許多 模型中常被使用。由公式(2,8)可知,ReLU 的運算十分簡單,當輸入小於零 時,將輸出指定為零,否則保持不變,以此方式去除掉不必要的資訊,只保 留重要的特徵,且經過 ReLU 運算後依然為浮點數,並不會流失過多的訊息, 可以使得我們的模型維持在極好的辨識率。. 14.
(22) 第三章 系統架構. 第三章 系統架構 此章節將介紹本論文的研究流程以及基於 BWNN 所設計的電路架構, 並詳述各層的架構與運作方法。. 第一節 研究流程 首先,本論文先於一個由 Python 撰寫類神經網路的前端平台—Keras 來 設計 BWNN 模型,接著將我們的訓練資料集放入模型進行訓練,訓練好模 型後,從中取出參數作為 C Model 與硬體設計所需要的參數,例如:權重 (weights)、偏移量(biases)以及 Batch Normalization 包含的相關參數。再藉由 與硬體設計所使用的 Verilog 語法相近的 C 語言來建立 BNN 模型,能更有效 地設計模型的電路架構。接著設計電路並實現在 FPGA 上,最後將軟體 Keras、 C Model 及硬體之間做三方的相互驗證,此研究流程見圖 3-1。. 圖 3-1 本論文研究流程圖. 15.
(23) 第三章 系統架構. 第二節 電路架構 本論文所使用的模型是根據 Lenet-5 架構再做簡化。Lenet-5 是一個經典 的 CNN 模型,它由三層摺積層(C1、C3、C5)、兩層採樣層(S2、S4)以及一層 全連接層(F6)所組成,如圖 3-2 所示。然而本論文減少一層摺積層,簡化後 模型架構為圖 3-3。首先,先將原先大小為 32×32 的輸入影像做 zero padding, 使之大小變為 34×34,接著以 kernel 大小為 3×3 做摺積運算(C1、C3),再依 序做採樣層(S2、S4)以及 Batch Normalization(B1、B2),最後將資料做分類, 在此我們分為 28 個種類,藉由全連接層將資料分為 28 個輸出分布值,以取 最大值做為我們的辨識結果。. 圖 3-2 Lenet-5 模型架構. 圖 3-3 本論文模型架構. 16.
(24) 第三章 系統架構 本論文的電路架構在每一層之間皆平行做運算,架構呈現如圖 3-4,接 著我們會分項來依序詳細介紹第一層摺積層(C1)、採樣層(S2、S4)、Batch Normalization(B1、B2)、第二層摺積層(C3)以及全連接層(F5)的電路架構以及 電路運算過程。. 圖 3-4 BWNN pipelined 硬體模型架構. 17.
(25) 第三章 系統架構 第一項 C1 電路架構 C1 電路架構依據論文[6]做改良,此電路包含用以暫存輸入影像資料的 Shift Register,以及用以執行摺積運算的 Kernel Core,而為了減少電路面積, 在此我們只使用一個 Kernel Core,C1 電路架構整合為圖 3-5 所示。其中 X 為輸入,Output feature map 個數為 6 個,分別為𝑌 0 、𝑌1 、𝑌 2 、𝑌 3 、𝑌 4 、𝑌 5, 而 Kernel Core 包含 6 組權重,分別為𝑊 0 、𝑊 1 、𝑊 2 、𝑊 3 、𝑊 4 、𝑊 5 。. 圖 3-5 C1 電路架構 以圖 3-6~3-9 來呈現 C1 的電路運作。我們以 L×L 表示輸入圖像大小, 在此以 6×6 作為範例,以 K×K 代表 Kernel 大小,此例以 3×3 作為範例,而 Shift Register 大小受到輸入圖像大小以及 Kernel 大小所影響,以 L(K−1)+K 來定義 Shift Register 的大小。首先,將圖像的像素值依序暫存到 Shift Register, 當填滿暫存器後便可輸入到 Kernel Core 做摺積運算。如圖 3-6 所示,將第 一組資料相繼與 Kernel Core 中的𝑊 0 、𝑊 1 、𝑊 2 、𝑊 3 、𝑊 4 、𝑊 5 做運算,因 而得到 Interleaved 架構輸出 𝑌 0 、𝑌1 、𝑌 2 、𝑌 3 、𝑌 4 、𝑌 5 的第一個特徵值。. 18.
(26) 第三章 系統架構. 圖 3-6 C1 電路運作範例 1 接著推入下一筆像素資料(0,1)組成新的一組輸入,再輸入至 Kernel Core 依序與六組權重做摺積運算,而得到 6 個 Output feature map 的第二個特徵 值,且以 Interleaved 架構輸出,如圖 3-7 所示。. 圖 3-7 C1 電路運作範例 2. 19.
(27) 第三章 系統架構 圖 3-8 顯示,資料(2,4)推入後組成一組新的輸入,依上述運作方式與 6 個權重做摺積運算後,依序輸出 6 個 Output feature map 位於(0,2)的特徵值。. 圖 3-8 C1 電路運作範例 3 接著輸入資料(2,5)再組成一組新輸入做摺積運算,得到 6 個 Output feature map 位於(0,3)的特徵值,如圖 3-9 所示。. 圖 3-9 C1 電路運作範例 4. 20.
(28) 第三章 系統架構 然而在下一筆資料(3,0)輸入時,會因為此 Shift Register 的設計導致有邊 界問題,如圖 3-10 所示,此組輸入並非完整的 3×3 區塊,將此視為無效輸 入,若其進入 Kernel Core 做運算會造成錯誤的結果,因此在遇到邊界問題 時,於是將會不採用此組輸入,直到輸入資料為有效資料,才輸入至 Kernel Core 做運算。. 圖 3-10 Shift Register 邊界問題. 21.
(29) 第三章 系統架構 第二項 S2、S4 電路架構 S2、S4 電路皆為以 Pooling size 為 2×2 來執行 Max-pooing 的運算,S2、 S4 差別只在於所使用的 Shift Register 的大小不相同。採樣層電路架構圖如圖 3-11 所示,其由一個 Shift Register 以及一個 Comparator Core 所組成。Shift Register 大小受到 Input feature map 的大小以及 Input feature map 的個數所影 響,當 Input feature map 大小為 L×L,Input feature map 個數為 S,則 Shift Register 大小可以表示為 L×S+(S+1)。Comparator Core 則由三個浮點數比較器 所組成,將輸入的四個值作相互比較,最後從中輸出最大值。. 圖 3-11 S2、S4 電路架構. 22.
(30) 第三章 系統架構 圖 3-12~圖 3-14 以 Input feature map 大小為 4×4 且 Input feature map 個 數為 6 來作為電路運作的範例。當 Shift Register 填滿後得到𝑋 0 的一組輸入並 進入 Comparator Core 進行運算,彼此相互比較後輸出最大值,得到第一個 0. Output feature map 𝑌 的第一個特徵值(0,0),如圖 3-12 所示。. 圖 3-12 S2、S4 電路運作範例 1 當下一筆資料再進入 Shift Register 後又得到第二個 Input feature map 𝑋1 的一組新的輸入資料,與上述運作相同,進入 Comparator Core 完成運算後, 得到第二個 Output feature map 𝑌1 的第一個特徵值(0,0),如圖 3-13 所示。. 23.
(31) 第三章 系統架構. 圖 3-13 S2、S4 電路運作範例 2 圖 3-14 顯示,再將下一個 Input feature map 𝑋 2 的輸入作 Max-pooling 的 運算得到輸出𝑌 2 ,依此類推,直到輸出完整的 Output feature map。. 圖 3-14 S2、S4 電路運作範例 3. 24.
(32) 第三章 系統架構 第三項 B1、B2 電路架構 B1、B2 為 Batch Normalization 的運作電路,依 Batch Normalization 的公 式(3,1)可知此運算需要根號計算以及除法計算。 𝑥−𝜇. 𝑦 = √𝜎2. +𝜖. ×𝛾+𝛽. (3,1). 但由於硬體在浮點數除法以及根號運算的設計上十分複雜麻煩,因此先 於軟體端做前處理以簡化運算量。首先,先將權重𝛾、變異數𝜎 2 以及𝜖整合僅 而得到參數𝑤,由公式(3,2)所示,而平均值𝜇先做負號處理(公式(3,3)),使其 在電路中可只用加法器完成,最後得到簡化後的公式為(3,4)。 𝛾. 𝑤 = √𝜎2. +𝜖. 𝜇 = −𝜇 𝑦 = (𝑥 + 𝜇) × 𝑤 + 𝛽. (3,2) (3,3) (3,4). B1、B2 依簡化後的公式所設計的電路架構圖 3-15 所示,輸入藉由一個 加法器與平均值做相加,再利用乘法器與權重相乘,爾後再透過一個加法器 與偏移量相加,接著作活化函數 ReLU 的運算之後便輸出結果。. 圖 3-15 B1、B2 電路架構 25.
(33) 第三章 系統架構 平均值、權重與偏移量個數會隨著 Input feature map 個數而改變,且因 為本電路為一次只計算一個輸入,因此需要注意參數的指定。圖 3-16~圖 3-17 為 Batch Normalization 的運作,以 Input feature map 個數為 6 來作為範 例。圖 3-16 顯示,當第一個 Input feature map 𝑋 0 輸入,接著指定與𝜇 0 、𝑤 0 與𝛽 0 做運算得到第一個 Output feature map 的𝑌 0 的特徵值。. 圖 3-16 B1、B2 電路運作範例 1 隨後第二筆輸入為第二張 Input feature map 的資料,將參數指定為所對 應的𝜇1、𝑤 1 與𝛽1,輸出運算結果為第二張 Output feature map 的𝑌1 的特徵值, 如圖 3-17。接著依樣畫葫蘆,依序將所有輸入資料承上述所描述的運算方式 作正規化的計算。. 圖 3-17 B1、B2 電路運作範例 2. 26.
(34) 第三章 系統架構 第四項 C3 電路架構 C3 電路與 C1 皆是做摺積運算,但是他們的 Input feature map 個數不相 同,C1 的 Input feature map 個數只有 1 個,而 C3 的 Input feature map 個數為 多個,因此設計的電路便不相同,在此 C3 電路架構由 Input feature map 個數 為 6,以𝑋 0 , 𝑋1 , 𝑋 2 , 𝑋 3 , 𝑋 4 , 𝑋 5 表示,以及 Output feature map 個數為 12,以 𝑌 0 , 𝑌1 , 𝑌 2 , 𝑌 3 , 𝑌 4 , 𝑌 5 , 𝑌 6 , 𝑌 7 , 𝑌 8 , 𝑌 9 , 𝑌10 , 𝑌11 表示來舉例,而權重總共 72 組 以𝑊 𝑖,𝑜 表示,其中 i 為 Input feature map,o 則為對應的 Output feature map, 如圖 3-18 所顯示。. 圖 3-18 C3 電路架構. 27.
(35) 第三章 系統架構 C3 電路是由一個 Shift Register、Kernel Core 以及 Output Buffer 所組成。 Shift Register 是暫存輸入影像資料的位移暫存器,Kernel Core 則是與輸入資 料做 XNOR 運算,而 Output Buffer 是存放 Kernel Core 運算完的部分結果以 及做累加運算。 C3 的 Shift Register 大小受到 Input feature map 的大小、個數以及 Kernel 的大小所影響,以 Input feature map 大小 L×L、個數為 S 與 Kernel 大小 K×K 為 例 , 則 Shift Register 大 小 由 圖. 3-19 得 知 , 可 以 表 示 為. L×S×(K−1)+S×(K−1)+1。. 圖 3-19 C3 Shift Register 的大小 接下來我們以 Input feature map 大小 3×3、個數為 6、Kernel 大小 2×2 與 Output feature map 個數為 12 作為電路運作的範例,如圖 3-20~圖 3-21。當 輸入資料填滿 Shift Register 且無邊界問題時,將這組資料輸入進 Kernel Core 依序與指定權重(𝑊 0,0 , 𝑊 0,1 , 𝑊 0,2 , 𝑊 0,3 , 𝑊 0,4 , 𝑊 0,5 , … … , 𝑊 0,11 )做摺積運算, 並依次輸出 12 個結果(𝑌 0,0 , 𝑌 0,1 , 𝑌 0,2 , 𝑌 0,3 , 𝑌 0,4 , 𝑌 0,5 , 𝑌 0,6 , 𝑌 0,7 , 𝑌 0,8 , 𝑌 0,9 , 𝑌 0,10 ,. 28.
(36) 第三章 系統架構 𝑌 0,11 )到 Output Buffer 做累加運算,如圖 3-20 所示。. 圖 3-20 C3 電路運作範例 1 當第一組輸入皆摺積運算完成後,便可再輸入下一組資料進到 Kernel Core 與指定權重做運算,依此例權重為 𝑊 1,0 , 𝑊 1,1 , 𝑊 1,2 , 𝑊 1,3 , 𝑊 1,4 , 𝑊 1,5 , … … , 𝑊 1,11 , 接著 新的 一 組輸 出 (𝑌1,0 , 𝑌1,1 , 𝑌1,2 , 𝑌1,3 , 𝑌1,4 , 𝑌1,5 , 𝑌1,6 , 𝑌1,7 , 𝑌1,8 , 𝑌1,9 , 𝑌1,10 , 𝑌1,11 )給 Output Buffer 做累加,如圖 3-21 所示,依此類推,將所有 輸入資料完成摺積運算輸出至 Output Buffer。. 圖 3-21 C3 電路運作範例 2. 29.
(37) 第三章 系統架構 部分結果輸入至 Output Buffer 後,會將部分結果做累加,C3 的 Output Buffer 設計是基於 Partial Output 的架構所設計的 Partial Output Accumulation, 在此會先介紹 Partial Output Accumulation 的設計。 Partial Output Accumulation 減少了暫存記憶體,也減少了加法器的個數。 透過只需要一部分的輸入便可開始做累加,接著隨著不斷地輸入資料再不斷 地做累加,使其累加成完整的輸出值,以此類推,直到輸入資料全部輸入完 畢。圖 3-22~圖 3-25 是以論文[6]所設計的 Output Buffer 與 Partial Output Accumulation 來做運作的比較。 圖 3-22~圖 3-25 左側為論文[6]設計的 Output Buffer,而右側為本論文 所設計的 Partial Output Accumulation。左側架構顯示輸入資料𝐷0 ~𝐷5 兩兩相 互相加,此架構必須等待六筆資料輸入完畢後再一起做相加,得到三個輸出 𝐴0 ~𝐴2 ,且需要三個加法器。而右側架構只需等待輸入前三筆資料後,方可 開始做相加,以圖 3-22 顯示為例,右側架構在資料𝐷3 一進入便可與𝐷0 做相 加。. 圖 3-22 論文[6]累加器設計與改善後的 Partial output accumulation 運作 1 30.
(38) 第三章 系統架構 由圖 3-23 所示,𝐷3 與𝐷0 相加完成後的結果為𝐴0 ,放置回 buffer 中的同 時,𝐷4 資料進入與𝐷1 做相加。. 圖 3-23 論文[6]累加器設計與改善後的 Partial output accumulation 運作 2 依此類推,𝐷4 與𝐷1 相加後的結果為𝐴1,結果存放至 buffer 中,同時,𝐷5 資料進入與𝐷2 做相加,如圖 3-24 所示。. 圖 3-24 論文[6]累加器設計與改善後的 Partial output accumulation 運作 3. 31.
(39) 第三章 系統架構 最後,𝐷5 與𝐷2 相加後為𝐴2 ,此時計算已全數完成,如圖 3-25 所示。. 圖 3-25 論文[6]累加器設計與改善後的 Partial output accumulation 運作 4 我們藉由此概念來設計 C3 所使用的 Output Buffer,運作範例為圖 3-26~ 圖 3-31 所示。承接圖 3-19 將第一個 Input feature map 的輸入資料與 Kernel Core 摺積運算完成的運作後,輸入至 Output Buffer 將 buffer 填滿,且發出 buf_complete 訊號表示 buffer 已滿,如圖 3-26 所顯示。. 圖 3-26 C3 的 Output Buffer 範例運作 1. 32.
(40) 第三章 系統架構 buffer 填滿後,由第二個 Input feature map 產生的下一筆輸入𝑌1,0暫存至 ADD Data1 的暫存器,並且與𝑌 0,0相加得到第一個 Output feature map 的部分 值𝑌00 ,此時為第一個 Output feature map 的第一次累加,為圖 3-27 所示。. 圖 3-27 C3 的 Output Buffer 範例運作 2 隨後將累加完得到的值𝑌00 推入 buffer,同時推入下一筆資料𝑌1,1,亦存放 至 ADD Data1 的暫存器,並與𝑌 0,1相加得到第二個 Output feature map 的部分 值𝑌01 ,此時為第二個 Output feature map 的第一次累加,為圖 3-28 所示。. 33.
(41) 第三章 系統架構 圖 3-28 C3 的 Output Buffer 範例運作 3 將 12 個 Output feature map 皆完成第一次累加並依序推入 buffer 後,接 著由第三個 Input feature map 產生的下一筆資料𝑌 2,0 輸入與𝑌00 相加,此時為第 一個 Output feature map 的第二次累加,為圖 3-29 所示。. 圖 3-29 C3 的 Output Buffer 範例運作 4 在此例我們的 Input feature map 的個數為 6,因此需要 5 次的累加得到完 整的 Output feature map 特徵值。圖 3-30 為第四次累加完後,緊接著執行第 五次累加,累加完成得到第一個 Output feature map 的完整特徵值,完成公式 (3,5)的運作。 𝑌 0 = ∑5𝑝=0 𝑋 𝑝 ∗ 𝑊 𝑝,0 = ∑5𝑝=0 𝑌 𝑝,0. 34. (3,5).
(42) 第三章 系統架構. 圖 3-30 C3 的 Output Buffer 範例運作 5 圖 3-31 為累加完成第二個 Output feature map 的運作,依此類推,依次 完成 12 個 Output feature map 的特徵值。. 圖 3-31 C3 的 Output Buffer 範例運作 6. 35.
(43) 第三章 系統架構 第五項 F5 電路架構 F5 為全連接層的運算,將已拉成一維的特徵資料組合起來進而進行分類 計算,最後再從中取最大值作為我們的辨識結果。圖 3-32 為本論文的 F5 電 路架構,每次以一個輸入與一個對應的權重做 XNOR 運算。ROM 用以存放 輸入對應輸出的權重,權重總個數為輸入總個數 i 與輸出總個數 o 的乘積, AGU 則是指定 ROM 的位址,使得取得正確對應的權重。Computation Core 為運算單元,在此為做 XNOR 計算,而 Partial Accumulation Buffer 亦是基於 Partial Output 架構的概念所設計出的累加器。. 圖 3-32 F5 電路架構 圖 3-33 為 F5 電路細部架構,在此我們以輸入總個數與輸出總個數皆為 2 作為簡單的例子來說明 F5 的電路運作,運作如圖 3-34~圖 3-37 所示,一 個輸入會對應到兩個輸出,因此總共會有四個權重。. 36.
(44) 第三章 系統架構. 圖 3-33 F5 電路細部架構 首先,AGU 指定 ROM 位址為 0,使得輸入資料𝑋 0 與第一個權重𝑊 0,0 做 XNOR 運算,得到第一個輸出的部份值𝑌 0,0,接著放入 buffer 中,如圖 3-34 所顯示。. 圖 3-34 F5 電路運作範例 1 緊接著 AGU 指定位址為 1,使同一個輸入𝑋 0 與第二個權重𝑊 0,1 做 XNOR 運算,進而得到第二個輸出的部份值𝑌 0,1 ,且同時亦放入 buffer 中,而此時 buffer 已滿,因此會發出 buf_complete 的訊號,為圖 3-35 所示。. 37.
(45) 第三章 系統架構. 圖 3-35 F5 電路運作範例 2 圖 3-36 顯示,第一個輸入已與兩個權重運算完畢,因此可換下一筆輸入 𝑋1 做運算,此時 AGU 指定 ROM 位址為 2,使得輸入與第三個權重𝑊 1,0 做 XNOR 計算得到輸出部分值𝑌1,0。然而這時 buffer 已滿,因此將值放入 ADD Data1 的暫存器與𝑌 0,0 相加,進而得到第一個輸出的完整值𝑌 0 。. 圖 3-36 F5 電路運作範例 3. 38.
(46) 第三章 系統架構 圖 3-37 顯示,AGU 指定位址為 3,輸入資料𝑋1 與最後一筆權重做 XNOR 運算,得到部分值𝑌1,1 並暫存至 ADD Data1 的暫存器,緊接著與𝑌 0,1相加,最 後得到第二個輸出的完整值,此時全連接層運算已完成。. 圖 3-37 F5 電路運作範例 4. 39.
(47) 第四章 實驗環境與效能分析. 第四章 實驗環境與效能分析 第一節 實驗環境與開發平台 本論文以 Altera 的 EP4SGX530KH40C2 以及 Xilinx 的 PYNQ-Z2 開發板作 為實現平台,此兩款開發版皆為 FPGA,分別為圖 4-1 與圖 4-2 所示,而表 1-1 與表 4-2 整理出此兩款開發版的詳細規格。FPGA 與 CPLD 皆為可程式化的電 路裝置,但是 CPLD 為永久性的可程式化電路,因此只要燒錄進去之後就會. 永久存在無法刪除,即使重新啟動,燒錄進去的電路依然存在。然而 FPGA 只要重新啟動後便可以再次燒錄,因此在設計以及驗證上相較於 CPLD 更有 彈性,因此本研究電路選擇使用 FPGA 來實現。. 圖 4-1 Altera EP4SGX530KH40C2. 40.
(48) 第四章 實驗環境與效能分析 表 4-1 Altera EP4SGX530KH40C2 規格 Feature. Stratix® IV GX FPGA. Device. EP4SGX530. Adaptive Lookup Table (ALUTs). 424,960. Adaptive Logic Modules (ALMs). 212,480. Logic Elements (LEs). 531,200. M9K Memory Blocks. 1,280. M144K Memory Blocks. 64. Embedded memory (Kbit). 27,376. DSP block 18-bit elements. 1,024. Total PLLs. 8. User I/Os. 744. 圖 4-2 Xilinx PYNQ-Z2. 41.
(49) 第四章 實驗環境與效能分析 表 4-2 Xilinx PYNQ-Z2 規格 Feature. Xilinx FPGA. Device. PYNQ-Z2. LUT. 53200. LUTRAM. 17400. FF. 106400. BRAM. 140. DSP. 220. IO. 125. BUFG. 32. MMCM. 4. 本研究亦使用 Xilinx 的 PYNQ-Z2 開發版的原因為它提供了 Python 的 API,使得我們可以使用 Python 來整合所需要的周邊設備,例如:作為拍攝 偵測人臉的相機、讓拍攝畫面得以顯示的 HDMI 以及本論文所設計的 BNN 電路,綜合這些來實現即時人臉辨識系統。 硬體方面,本論文使用 Quartus II 14.1 來撰寫 Verilog 硬體描述語言以實 現在 Altera 的開發版上,而 Xilinx 的開發版則是以 Vivado 2018.3 來撰寫。此 兩種平台都提供了 RTL-Level 的模擬,在電路燒製開發板前可以先行驗證電 路的正確性,進而分別透過 Altera 的 Qsys 以及 Xilinx 內建的 IP Intergrator 將 所使用到的 IP 相互連接,例如 On-chip memory、Processor 以及設計的 BNN 電路等,將這些集成一個 IP 在燒至我們的開發板中。 而軟體方面,本論文使用 Keras 平台以 Python 撰寫 BWNN 類神經網路 42.
(50) 第四章 實驗環境與效能分析 模型,而訓練完成後亦利用 Python 將權重取出並排列成硬體設計所使用的格 式。本論文將 BWNN 實現於兩種資料集,為圖 4-3~圖 4-4 所顯示,其一資 料集為由耶魯大學所提供的人臉圖像資料庫,它共分為 28 位人臉。其二為論 文[7]所提供的資料集,共 8 位人臉,而本論文使用此資料集的原因是為了實 現即時人臉辨識的應用。此兩種資料集皆為灰階影像,且在進行訓練時皆將 影像所小至 32×32 來降低參數量。. 圖 4-3 Extended YaleB 28 People 資料集. 圖 4-4 論文[7] 8 People 資料集. 43.
(51) 第四章 實驗環境與效能分析. 第二節 軟體實驗結果 本論文在軟體端有針對一些量化模型進行兩個資料集的人臉辨識實驗, 為表 4-3 所示,總共有 7 種模型架構,共分為四大類。 第一類為權重與活化函數皆為 32-bit 浮點數的 CNN 模型,可由表格看 出 CNN 在兩組資料集都有非常好的辨識效果。第二類為 BNN,權重皆量化 為 1-bit,然而藉由活化函數有無量化分為兩種,由表可看出,量化活化函數 的 BNN 對於兩組資料集的辨識率是較低的,尤其是在即時人臉辨識的資料 集的準確率下降到 95.23%,但是無量化活化函數的 BWNN 都在兩組資料集 有著良好的辨識率,甚至與 CNN 相差不遠。而 TNN 與 QNN 也分為有無量 化活化函數兩種,結果亦與 BNN 相同,在有量化活化函數的情況下,即時 人臉辨識時的辨識率不如使用 32-bit 的 ReLU 活化函數還要好。由此可證, 無使用量化活化函數的確能讓辨識率維持一定水準,甚至可與 CNN 相匹敵。 表 4-3 量化模型比較表 Weights. YaleB. [鄭博文,2019][7]. Accuracy. Accuracy. Activation. CNN[8]. 32-bit. 32-bit. 99.86%. 100%. BNN[2]. 1-bit. 1-bit. 98.49%. 95.23%. BWNN[2]. 1-bit. 32-bit. 99.81%. 99.99%. TNN[3]. 2-bit. 2-bit. 100.00%. 97.00%. TWNN[3]. 2-bit. 32-bit. 99.95%. 99.99%. QNN[4]. 3-bit. 3-bit. 100.00%. 98.27%. QWNN[4]. 3-bit. 32-bit. 99.98%. 100%. 44.
(52) 第四章 實驗環境與效能分析. 第三節 硬體實驗結果與效能分析 本節將說明 BWNN 硬體的實驗結果以及效能分析,而本論文的核心目 標為低面積,因此首先會彙整列出 BWNN 使用的所有浮點數運算個數,進 而分析整體電路的 Latency,接著對於本論文的硬體消耗資源與其他架構做 比較。 首先,表 4-4 列出 BWNN 電路的各層浮點數運算個數,本論文將輸入 保持在 32-bit 浮點數,而並非轉換成定點數,其原因為若使用定點數,我們 須指定一個合適的長度,此長度必須確保在後續運算時不會有溢位的問題, 再加上最後會造成結果不精確,導致與軟體端結果可能有不一致。. 表 4-4 BWNN 電路的各層浮點數運算個數 C1. S2. B1. C3. S4. B2. F5. Adder. 8. 0. 2. 9. 0. 2. 1. Multiplier. 0. 0. 1. 0. 0. 1. 0. Comparator. 0. 3. 0. 0. 3. 0. 0. 接著對於本電路的 Latency 作分析,為圖 4-5 所示,由圖中可見是以 pipelined 架構來實現,當第一筆資料於 C1 計算完畢時便可進入 S2 做 Max-. 45.
(53) 第四章 實驗環境與效能分析 pooling 的運算,依此類推,將輸入資料循序漸進的計算完畢。其中𝐿𝑖 × 𝐿𝑖 為 第 i 層的 Input feature map 的大小,𝐷1 為 C1 Kernel Core 計算一筆資料的運算 時間,𝐷2 為 Comparator Core 計算一筆資料的運算時間,𝐷3 為 Normalization Core 計算一筆資料的時間,𝐷4 為 C3 Kernel Core 的運算時間,而𝐷5 則為 F5 Computation Core 計算一筆輸入資料的運算時間。 然而我們需要控制每一筆影像的 pixel 所輸入的時間,才能讓各層間準 確地做平行計算,因此每一筆輸入 pixel 都需要做延遲,為圖中的 d。此原因 為每一筆 pixel 在 BWNN 電路中執行 C1、C3、F5 時都有相對應的權重,然 而若每一筆 pixel 間並沒有延遲,並假設當 C3 運算時間較長而 C1 較短時, 前一筆 pixel 於 C3 運算完畢,但後一筆 pixel 在 C1 仍然在運算中,導致會輸 入錯誤的值進入 C3 並與錯誤的權重做運算。為了避免此問題,我們需要找 出各層間哪一層輸入資料停留最久,以本論文來說,我們會由 C3 與 F5 作為 參考指標,其原因為 C3 與 F5 的權重個數在 BWNN 中是最多的,圖中 w 代 表 C3 的權重總個數,o 為 F5 的一個輸入所延遲的時間,綜合上述,我們以 𝑀𝑎𝑥𝑖𝑚𝑢𝑚(𝑤, 𝑜)來計算 d 的值。 因為本電路為平行計算,每層間皆有重疊,因此我們只需要計算最後一 筆輸入完整運算的時間,最後加上每一個 pixel 累積的延遲時間,進而整理出 BWNN 電路總運算的 Latency,為公式(4,1)。. 46.
(54) 第四章 實驗環境與效能分析 𝐿𝑎𝑡𝑒𝑛𝑐𝑦 = 𝑑(𝐿1 2 − 1) + 𝐷1 + 2𝐷2 + 2𝐷3 + 𝐷4 + 𝐷5. (4,1). 圖 4-5 BWNN 電路的總 Latency 接著表 4-5 為本論文 BWNN 電路與其他同為做人臉辨識的 CNN 電路做 硬體資源的比較。有表可看出本研究電路在硬體資源上有明顯的下降,首先 Memory bits 相較於另外兩個電路都有至少 30 倍的差距,是因為 BWNN 的 權重已二元化變為 1-bit,因此大幅下降。且由於 BWNN 的摺積運算是以 XNOR 來運算,因此大量的下降了 DSP 的個數,並且加上使用了 Partial output 的架構,也大大減少了浮點數加法器的用量,由 LUTs 可以看出。 在現有論文中,使用 BWNN 作為實際應用的數量較少,大多皆是藉由 資料集 Cifar-10 作為網路效能的評估,並且為了使得準確率的提高,使用的 層數會較為多。然而本論文的主要目的是能藉由簡單網路的 BWNN 來做實 47.
(55) 第四章 實驗環境與效能分析 際應用,因此層數相較於其他論文都較低,硬體資源的消耗也低上許多,由 表格中可看到,使用最簡單與低資源消耗的 BWNN 在臉部辨識也有很好的 成果。 表 4-5 本論文 BWNN 電路與現有電路的資源比較 1. 2. 3. 4. 5. 本研究. CNN[Hwan. CNN[謝斯. [Shrutika,20. [Zhao,2017]. BWNN. g,2017][6]. 宇,2019][8]. 17][9]. [10]. 32 bits. 32 bits. 32 bits. 32 bits. 32 bits. floating point. floating point. floating point. +. +. +. -. +. 16123. 151898. 98625. 1,113,205. 48,026. 30. 1298.56. 287.55. 11878. 13721. 13471. 165920. 68631. -. 46134. DSP Blocks. 8. 928. 264. -. -. Data set. YaleB 28. YaleB 28. YaleB 28. Cifar-10. Cifar-10. 辨識率. 99.81%. 100%. 100%. 86.06%. 88.42%. 0.987. 0.367. 0.7439. -. -. Input 格式. floating point floating point. Input interleaved LUTs Memory bits(Kbits) Dedicated logic registers. Latency (ms). 48.
(56) 第四章 實驗環境與效能分析 最後呈現將 BWNN 實現於 PYNQ-Z2 的實驗結果,藉由鄭博文[7]與謝斯 宇[8]所提供的周邊設備整合方法,將本論文所設計的 BWNN 電路與相機、 HDMI 做結合,得以實現即時人臉辨識,由圖 4-6 所示,偵測到人臉後框出 人臉位置並截取影像,接著輸入至 BWNN 電路做辨識,運算完畢後輸出辨 識結果,最後顯示辨識結果的 label 在所選方框的左上方,此時即為完成人臉 辨識。. 圖 4-6 BWNN 於 PYNQ 實現即時人臉辨識系統. 49.
(57) 第五章 結論. 第五章 結論 本論文以 FPGA 實現了 BWNN 人臉辨識模型,藉由硬體加速完成類神 經網路的辨識,再透過 FPGA 的優勢,達到高可攜性且又低功率消耗的特性, 並且搭配 BWNN 參數量化的方式,降低了參數在電路所暫用的面積,讓硬 體資源更有效的下降。然而在本論文並無選擇使用二元化活化函數,而是使 用 32-bit 活化函數,在第四章軟體結果顯示,若採用量化活化函數會造成準 確率的下降,但是使用 32-bit 活化函數卻能在即時辨識時也有極高的辨識率, 與 CNN 的高準確率不相上下,因此讓 BWNN 達到了能降低硬體資源卻也能 維持高準確率。 本論文除了藉由 BWNN 的參數量化來降低電路面積之外,也讓運算單 元個數只為 1,讓每一層都不用使用大量的浮點數運算,尤其在需要浮點數 成法器與加法器的 Batch Normalization。除此之外,本論文亦使用 Interleaved 與 Partial output accumulation 的架構,讓電路只需要部份的輸入便可以開始 計算,使得電路面積在更大幅地下降。 綜合上述,本論文辨識系統有著高可攜性、低功率消耗、低面積且又高 準確率的優點,讓本研究電路可以在更小的晶片上實現人臉辨識系統,使得 在生活中能更被廣泛的應用。. 50.
(58) 參考文獻. 參考文獻 [1] Baoyuan Liu, Min Wang, Hassan Foroosh, Marshall Tappen, Marianna Pensky. Sparse convolutional neural networks,” 2015. [2] Matthieu Courbariaux, Itay Hubara, Daniel Soudry, Ran El-Yaniv, Yoshua Bengio, “Binarized Neural Networks: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1,” 2016. [3] F. Li, B. Zhang, B. Liu, “Ternary weight networks,” 2016. [4] Hubara, M. Courbariaux, D. Soudry, R. El-Yaniv, Y. Bengio, “ Quantized neural networks: Training neural networks with low precision weights and activations,” 2016. [5] Shilin Zhu, Xin Dong, Hao Su, “ BinaryEnsembleNeuralNetwork: MoreBitsperNetworkorMoreNetworksperBit?” 2018. [6] W. Hwang, Y. Jhang, T. Tai, “ An efficient FPGA-Based architecture for convolutional neural networks, ” 2017. [7] 鄭博文, “基於嵌入式系統的深度學習應用之研究—以人臉辨識為例, ” 國 立台灣師範大學, 2019. [8] 謝斯宇, “基於臉部偵測及 CNN 模型之硬體臉部辨識系統, ”國立台灣師範 大學, 2019. [9] Shrutika Redkar, “Deep Learning Binary Neural Network on an FPGA,” 2017. [10] Jeng-Hau Lin, “Binarized Convolutional Neural Networks with Separable Filters for Efficient Hardware Acceleration,” 2017. [11] itayhubara“Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1. implementation in tensorflow ,” [Online]. Available: https://github.com/itayhubara/BinaryNet.tf. [Accessed Oct. 5, 2018]. 51.
(59)
Outline
相關文件
想要設計一個具有兩個輸入G(gate閘控)和 D(data資料)以及一個輸出Q的閘控閂電 路。當G等於1時,在輸入D出現的二進位資料
應用閉合電路原理解決生活問題 (常識) 應用設計循環進行設計及改良作品 (常識) 以小數加法及乘法計算成本 (數學).
駭客集團「Gameover Zeus」被指自 2006 年起就散播病毒,入侵企業及個人 電腦,並利用儲存於電腦內的使用者密 碼與私人資料 登入銀行戶頭盜取資 金 ;此外,Gameover
電機工程學系暨研究所( EE ) 光電工程學研究所(GIPO) 電信工程學研究所(GICE) 電子工程學研究所(GIEE) 資訊工程學系暨研究所(CS IE )
以電腦輸入團員資料 (Excel 格式)
Ethernet Module、RF Transceiver。Switching Power 為提供整個系統的電源,其輸入電 壓為 90V~264VAC,輸出 5VDC 為提供整個系統電源所需。RF Transceiver 所需的電 壓是 5VDC
第二章是介紹 MEMS 加工製程,包括體型微加工、面型微加工、LIGA、微 放電加工(Micro-EDM)、積體電路相容製造技術 CMOS MEMS 製程等。製作微 加速度感測器。本研究是選用台積電 0.35μm
卻存在著軟體有效掌控的困難。因多核心為現在電腦架構主流,且較不受網路或跨帄 台影響,所以本研究乃著手尋求多核心環境的解決之道,並提出 MATI (Multi-core