以BNN與AlexNet為基礎適用於CIFAR10圖形辨識之積體電路架構設計
66
0
0
全文
(2) 中文摘要. 中文摘要 本論文以 FPGA 實作 AlexNet 摺積類神經網路模型之硬體電路架構,並以 CIFAR10 全彩圖像資料庫作為圖像辨識數據,設計適用於該資料庫的圖形辨識 電路架構,傳統的摺積類神經網路以浮點數形式存取運算所用到的相關參數,同 時運算方式較為複雜,這種模式不僅會增加記憶體的存取資源消耗,也會造成運 算的負擔。本論文將二元化類神經網路技術結合至電路設計中,其最主要的核心 概念是將權重及運算結果透過二元化相關演算法簡化為二進制表示法,並使用 XNOR 做位元運算,此作法不僅能降低 FPGA 資源消耗,同時也能提升運算效 率。 本論文選用 AlexNet 作為設計電路之模型,AlexNet 對於全彩圖像的辨識結 果優於 LeNet5,而 AlexNet 相較於其他結構複雜的摺積類神經網路模型更適合 實作於硬體電路,雖然 AlexNet 所使用的參數較多,以原始 32bit 浮點數存取權 重確實在硬體上難以實現,但利用二元化類神經網路便可將權重簡化至 1bit 二 進位碼,而運算子則不需要使用到浮點數的加法器與乘法器,這不單是降低內建 記憶體及暫存器資源使用,更提升存取記憶體的效能。 依據實驗結果,本論文所提出之硬體架構相較於近期相關研究有低面積資源 消耗之優點,且辨識精確度不亞於其他研究架構,對於現今人工智慧晶片發展領 域,本論文所提出之硬體架構著實具有競爭價值。 關鍵字: 機器學習、深度學習、類神經網路、摺積類神經網路、二元化類神經網 路、系統晶片設計、Machine Learning、Deep Learning、CNN、BNN、AlexNet、 CIFAR10、FPGA、AI on Chip i.
(3) 中文摘要. 致謝 在研究所數百個日子經歷了失業、失戀也遇到研究瓶頸的挫折,這份研究成 果得以完成,要感謝的實在太多。 首先謝謝我的指導教授黃文吉博士,在研究過程放手讓我嘗試自己的想法, 適時給我建議,在我生活遇到困難時,給我最大的空間去調適研究進度與生活的 壓力,並授予我許多職場經驗,同時對我的信任與認可,讓我對未來的生活多幾 分自信,在此致上我誠摯的謝意。 感謝臺師大光電所鄭超仁教授,在我研究受挫時給我鼓勵,感謝宜蘭大學林 秀菊教授、健行科技大學歐謙敏教授,在百忙之中抽空給予本論文評閱與建議, 使本論文更臻完善。 感謝建廷學長、映綸學長,如果沒有你們,我們會有永遠除不了的 BUG, 感謝一起奮鬥兩年的同學:暐傑、塏立、伯儒、紘境、啟濠、志昌、得榮,以及 念到變同學的學弟妹:筠婕、名蘂、琮憲、凱中、振瑋、勝傑、亦凡、柏廷,研 究所的回憶永遠會有你們各種哀嚎以及和你們一起拿的每場勝利。 感謝我的父母,體諒我低潮時的脆弱,陪我散心釋放日常的壓力,感謝小晟 子不厭其煩的聽我抱怨,包容我的軟弱,感謝我家毛小孩姆姆,多年來任我玩弄, 幫我掃掉一天的壞心情。 這些日子發生的事情太多太快,才回神過來就要進入下一個旅程,最後謝謝 這一路上陪我度過的每個人,你們的幫助或讓我學到的經驗會一輩子銘記在心。. ii.
(4) 目錄. 目錄 中文摘要......................................................................................................................... i 致謝................................................................................................................................ii 目錄.............................................................................................................................. iii 附表目錄....................................................................................................................... iv 附圖目錄........................................................................................................................ v 第一章 緒論.................................................................................................................. 1 第一節 研究背景與動機 .......................................................................................... 1 第二節 研究目的與方法 .......................................................................................... 4 第三節 全文架構 ...................................................................................................... 6 第二章 基礎理論及技術背景...................................................................................... 7 第一節 第二節 第三節 第四節. 類神經網路介紹 .......................................................................................... 7 CONVOLUTIONAL NEURAL NETWORK ......................................................... 10 CONVOLUTIONAL NEURAL NETWORK 演算法則 ........................................ 11 ALEXNET MODEL ....................................................................................... 14. 第五節 BINARIZED NEURAL NETWORK ................................................................... 16 第三章 系統架構........................................................................................................ 19 第一節 研究流程 .................................................................................................... 19 第二節 電路架構 .................................................................................................... 20 第一項 C1 電路架構 .......................................................................................... 22 第二項 C2 電路架構 .......................................................................................... 28 第三項 S2 電路架構 .......................................................................................... 32 第四項 FULLY CONNECTED 電路架構 ................................................................ 38 第四章 實驗數據與效能分析.................................................................................... 44 第一節 開發平台與實驗環境 ................................................................................ 44 第二節 實驗結果與效能分析 ................................................................................ 48 第五章 結論................................................................................................................ 58 參考文獻...................................................................................................................... 59. iii.
(5) 附表目錄. 附表目錄 表 1-1 FPGA 與軟體運作於 CPU 及 GPU 之特性比較 ............................................. 2 表 3-1 摺積層輸入、輸出及 INTERLEAVE 數量......................................................... 31 表 3-2 池化層輸入、輸出尺寸及 INTERLEAVE 數量................................................. 37 表 3-3 F5、F6 電路設計相關參數 ............................................................................. 43 表 4-1 ALTERA STRATIX IV EP4SGX530KH40C2 開發板規格表 .............................. 45 表 4-2 本研究架構參數總量...................................................................................... 48 表 4-3 C1 浮點數與定點數硬體資源消耗比較 ......................................................... 49 表 4-4 INTERLEAVE 與資源消耗比較 .......................................................................... 50 表 4-5 BNN 電路各階段於 FPGA 之硬體資源消耗 ................................................. 51 表 4-6 本研究 BNN 與現有 BNN 電路資源消耗比較 ............................................. 53 表 4-7 電路運作 LATENCY 相關參數 ......................................................................... 55 表 4-8 INTERLEAVE 與 LATENCY 比較 ......................................................................... 56 表 4-9 摺積層 INPUT 個數、尺寸及 INTERLEAVE 與 CLOCK CYCLES 關係表 ........... 56 表 4-10 執行時間........................................................................................................ 56 表 4-11 本研究 BNN 與現有 BNN 電路執行效能比較 ........................................... 57. iv.
(6) 附圖目錄. 附圖目錄 圖 2-1 類神經網路架構圖............................................................................................ 8 圖 2-2 CNN 經典模型 LENET5 ................................................................................... 10 圖 2-3 摺積運算範例.................................................................................................. 11 圖 2-4 最大池化 MAX POOLING .................................................................................. 12 圖 2-5 全連接層示意圖.............................................................................................. 13 圖 2-6 ZERO PADDING .................................................................................................. 13 圖 2-7 IMAGENET 圖像 ................................................................................................ 14 圖 2-8 ALEXNET 模型架構 .......................................................................................... 14 圖 3-1 本論文 BNN 網路架構 ................................................................................... 20 圖 3-2 C1 電路架構 ..................................................................................................... 22 圖 3-3 C1-SNAKE 電路,K=3 ..................................................................................... 23 圖 3-4 C1-INTERLEAVE SNAKE 電路範例 1 ................................................................. 24 圖 3-5 C1-INTERLEAVE SNAKE 電路範例 2 ................................................................. 25 圖 3-6 C1-INTERLEAVE SNAKE 電路範例 3 ................................................................. 25 圖 3-7 C1-OUTPUT BUFFER 電路 ................................................................................. 26 圖 3-8 C1-SNAKE 實際架構及 C1-OUTPUT BUFFER 電路 .......................................... 27 圖 3-9 C2 電路架構 ..................................................................................................... 28 圖 3-10 C2-INTERLEAVE SNAKE 電路,K=3 ............................................................... 29 圖 3-11 C2-INTERLEAVE SNAKE 實際架構及 C2-OUTPUT BUFFER 電路 .................... 30 圖 3-12 S2 電路架構 ................................................................................................... 32 圖 3-13 S2-COMPARATOR CORE 電路 .......................................................................... 33 圖 3-14 NON-OVERLAPPING MAX POOLING 實例 1 ....................................................... 34 圖 3-15 NON-OVERLAPPING MAX POOLING 實例 2 ....................................................... 34 圖 3-16 NON-OVERLAPPING MAX POOLING 實例 3 ....................................................... 35 圖 3-17 NON-OVERLAPPING MAX POOLING 實例 4 ....................................................... 35 圖 3-18 NON-OVERLAPPING MAX POOLING 實例 5 ....................................................... 36 圖 3-19 S2-BATCH NORMALIZATION 電路運算方式 ................................................... 37 圖 3-20 F5 輸入、輸出關係圖,輸入為 8192 個,輸出為 1024 個 ....................... 38 圖 3-21 全連接電路架構圖........................................................................................ 39 圖 3-22 全連接電路實例 1......................................................................................... 40 圖 3-23 全連接電路實例 2 ......................................................................................... 41 圖 3-24 全連接電路實例 3 ......................................................................................... 41 圖 3-25 全連接電路實例 4 ......................................................................................... 42 圖 3-26 全連接電路實例 5 ......................................................................................... 42 v.
(7) 附圖目錄. 圖 4-1 ALTERA STRATIX IV EP4SGX530KH40C2 開發板 .......................................... 44 圖 4-2 CIFAR 10 DATASET ........................................................................................... 46 圖 4-3 TORCH7 訓練結果 ............................................................................................ 47 圖 4-4 BNN 電路運作所需的 LATENCY ..................................................................... 55. vi.
(8) 第一章 緒論. 第一章 緒論 本章節主要論述本論文的研究背景與動機、研究目的與方法,並大略說明各 章節的主要內容與重要特性。. 第一節. 研究背景與動機. 在 2014 年全球第一台情感機器人”Pepper”被正式發表,Pepper 以服務型 機器人的姿態進入人類的世界,它可以從臉部視覺或語音聽覺等方面分析進而辨 識人類的情緒,這項發表為人工智慧領域的發展立下里程碑。 人工智慧(Artificial Intelligence; AI)是人類在科技發展一直期望能突破的領 域,自計算機的發明,人類便試圖讓它擁有類似人類的智能,早期受限於硬體設 備,人工智慧的方向也受到侷限,僅能解決有限的數學邏輯而在實務應用難以實 現。到 20 世紀,硬體進步到擁有更強的運算能力加上儲存成本下降,使大量的 數據得以做分析處理,如此的硬體發展支持了人工智慧領域分支—機器學習 (Machine Learning; ML)的興起,它是一門結合統計學、機率論等多項學論的 領域,而機器學習領域有許多演算理論,深度學習(Deep Learning; DL)便是近 年來機器學習最熱門的研究項目。 1943 年研究學者們開始利用數學模型來模擬人類大腦的類神經網路,可惜 經過幾年研究,類神經網路的發展仍然停留在淺層的運算,在 2006 年神經網絡 之父 Geoffrey Hinton 成功完成了多層神經網路模型的訓練,進而扭轉類神經網 路發展正面臨衰頹的局面,並將多層神經網路的技術正名為「深度學習」,但真 正引爆深度學習關注熱潮另有其因,2012 年 Geoffrey Hinton 的學生在 ImageNet. 1.
(9) 第一章 緒論. 比賽以深度學習+NVIDIA GPU 設計的 AlexNet 大勝全場,終於讓深度學習成為 機器學習領域極為受重視的研究,同時一改傳統的 CPU 運算,GPU 成為深度學 習運算的主流硬體配備。 在複雜的神經網路架構中,可利用 GPU 高速平行運算處理的能力達到速度 快且辨識率高之效能,這樣的方式著實有助人工智慧機器人的發展,若將以 CPU 為核心的 Pepper 改為使用 GPU 確實足以提昇它的能力,可惜的是,在這種模式 下所製造的人工智慧機器仍免不了被淘汰的命運,非人形的智慧機器通常工作單 純,功能可望更智慧化足以取代功能多餘的機器人,以人形製作的智慧機器勢必 會將作工趨向精緻化,畢竟理想中的機器人是像人類一般的存在,不能奢望它仍 帶著龐大的硬體設備活動,同時執著於使用 GPU 達成機器學習的功能,它的高 功率消耗也會限制智慧機器人的發展,因此這些技術具有硬體化的必要性以解決 前述問題。 在 2016 年 Google 首次公開發表專為機器學習而製作的晶片 TPU(Tensor Process Unit),依 google 刊文表示,TPU 在處理運算的速度相較 GPU 和 CPU 快 至少十五倍,效能甚至提高到三十倍,本論文依據 TPU 的概念設計快速運算、 可攜性高、低功率與低資源消耗的硬體架構,在前述原因考量下選擇使用 FPGA 來實作硬體架構,表 1-1 為 FPGA 相關特性與 CPU 及 GPU 的比較,可知 FPGA 符合本論文設計需求條件。 表 1-1 FPGA 與軟體運作於 CPU 及 GPU 之特性比較 CPU. GPU. FPGA. 運算速度. 慢. 快. 快. 功率消耗. 高. 高. 低. 可攜性. 低. 低. 高. 2.
(10) 第一章 緒論. 在深度學習中,目前最為熱門的網路模型為摺積類神經網路 Convolution Neural Network; CNN),相較於其他神經網路模型更善於做局部特徵分析,摺積 類神經網路由多個摺積層、採樣層和全連接層組成,因為特有的權重共享機制, 摺積類神經網路運用的訓練參數更少,比其他神經網路模型更適合實作於硬體, 然而摺積類神經網路主要缺點是需要大量的浮點數乘法與加法運算,以及權重佔 據硬體的資源,造成硬體實作上的困難,從而研究了二元化神經網路(Binarized Neural Network; BNN)之理論來改善摺積類神經網路的缺點,使得 CNN 更容易實 作於硬體。. 3.
(11) 第一章 緒論. 第二節. 研究目的與方法. 本 論 文 研 究 主 要 目 的 為 設 計 一 個 現 場 可 程 式 化 邏 輯 閘 陣 列 (Field Programmable Gate Array; FPGA)之硬體架構用來快速辨識全彩圖像,此架構採用 AlexNet 摺積神經網路模型搭配二元化神經網路(Binarized Neural Network; BNN) 技術來實現全彩圖像的辨識,而辨識的數據資料採用 CIFAR10 資料庫。 完整神經網路模型必須經過訓練階段才具有辨識資料的能力,在訓練階段採 用 Torch7 之機器學習框架,利用 Torch7 對神經網路模型內部參數權重與偏移值 作訓練,訓練階段會使用到向前傳遞(Froward propagation)與向後傳遞(Back propagation)修正參數至最佳化,辨識階段則運用 Torch7 訓練好的參數作向前傳 遞即可得到辨識結果,本論文將以硬體實作辨識階段。 研究所使用辨識數據資料為 Alex Krizhevsky, Vinod Nair, and Geoffrey Hinton 收集整理之 The Canadian Institute for Advanced Research 10 (CIFAR10)資料庫 [1], CIFAR10 包含十個分類 32*32 Pixel RGB 的圖像,每類各有五千張訓練資料,共 有五萬張訓練資料,測試資料各有一千張,共有一萬張測試資料。 本論文所選擇的摺積神經網路模型為 AlexNet,在圖像辨識模型的選擇過程, 首要考量選用的資料集特性,CIFAR10 的圖像為全彩且圖像資訊除了物件本身 外還包含複雜的背景,LeNet-5 網路模型雖然架構簡單,但僅能辨識資訊單純的 圖像,對背景複雜的 CIFAR10 辨識能力有限,VGGNet 為辨識能力強的網路模 型,然而 VGGNet 過於龐大的網路架構並不適合實作於硬體,AlexNet 為多方考 量下較適合實作於硬體的網路模型架構。 二元化神經網路技術 [2]利用相關演算法將權重、輸出結果等轉為二進制儲 存,而 CNN 中的單經度浮點數運算皆可轉為簡單的 XNOR、加法位元運算,若 4.
(12) 第一章 緒論. 在 FPGA 上實現便能大幅降低硬體電路的資源消耗,在分析 AlexNet 模型實作於 硬體時,單就權重而論所佔用到的資源約為 38MByte,雖然就現在記憶體容量 38MByte 其實也算不上負擔,但若是將它儲存於 embedded memory 再載入主記 憶體後 CPU 運算,如此的存取過程所消耗運算時間便會拖垮整個系統的效率, 若將舊有的 CNN 架構改為 BNN 實現,在權重的資源消耗估計只需要 1.18MByte, 整整降低約 32 倍,雖然與單經度浮點數結果有些微誤差,但仍在容忍範圍內, 整體而言是優化硬體電路設計的結果。 本論文使用 Altera 公司所提供的軟體─Altera Quartus II 作為硬體開發的工 具,Altera Quartus II 可以進行電路資源消耗、功率消耗、系統運算時間等多項效 能的量測,另外使用 ModelSim 來模擬電路實際運作波形以檢視運作功能,並確 保硬體電路設計結果的可信度以及本論文的正確性。. 5.
(13) 第一章 緒論. 第三節. 全文架構. 本論文分為五個章節,以下為各章節內容概要: 第一章 緒論 研究背景與動機、研究目的與方法及全文架構之說明。 第二章 基礎理論及技術背景 簡介本論文所使用的基礎理論與技術背景。 第三章 系統架構 介紹電路之架構設計以及運作流程,並對電路細部內容進行說明。 第四章 實驗數據與效能分析 包含實驗環境說明、相關實驗數據分析及軟硬體結果之比較。 第五章 結論 本論文所提出之硬體架構及實驗結果進行總結。. 6.
(14) 第二章 基礎理論及技術背景. 第二章. 基礎理論及技術背景. 本章節將介紹本論文所使用的基礎理論與技術背景。. 第一節 類神經網路介紹 人工智慧發展中,深度學習(Deep Learning)近年在人工智慧領域成為矚目 的研究項目,並期望能使機器模擬出人類大腦複雜的行為模式,其中類神經網路 必是一項重要的技術。 類神經網路(Neural Network, 亦稱作神經網路)是一種模擬生物神經系統 (生物的中樞神經系統)行為模式及功能的計算機模型架構,一個類神經網路是 由許多個人工節點所組成,我們將人工節點稱為神經元(neuron) ,用來模擬生物 神經元運算訊息的功能,生物神經元包含樹突、軸突兩種類型,生物神經元藉由 樹突接收輸入的訊號,而軸突與其他神經元的樹突連接並輸出訊號,以類似的方 式,類神經網路的神經元會從外部環境亦或是其他神經元接收訊息,經過運算後 得到結果輸出,透過大量神經元相互連接,達成模擬生物神經系統可以大量平行 運算的能力,並經由自動學習分析特徵之間的關係,使輸入在類神經網路運算後 能得到正確的輸出,而類神經網路必須經過讓神經元反覆學習的訓練階段,直到 所有輸入皆能對應到正確的輸出值。 類神經網路模型架構組成如圖 2-1 所示,它包含了起始的輸入層(Input layer)、 最終的輸出層(Output layer)以及中間的隱藏層(Hidden layer),輸入層及輸出層在 各類神經網路模型中皆只會有一層,而隱藏層數量依據模型設計需求做改變,每 一層由一至多個神經元所組成,每一個神經元都和前一層的神經元運用可以調整. 7.
(15) 第二章 基礎理論及技術背景. 的鏈結值(synaptic weights, 一般稱之權重)相互連接,每個類神經網路都需要經過 訓練階段,藉由訓練修正權重直到每個輸入都能得到正確的輸出分類,在訓練的 過程可以計算出每層輸出與正確輸出的誤差值,在此會使用到一個誤差函數 (cost function)作為權重修正的判斷依據,當誤差函數超過誤差容忍範圍時,便 對權重進行調整,而誤差函數會隨著訓練次數增加逐漸下降,這個過程稱為優化 (optimization),當訓練到達一定程度,誤差函數幾乎維持不做變化。. 圖 2-1 類神經網路架構圖 類神經網路訓練方式為自動學習,其主流分為兩種學習方式:非監督式學習 網 路 (Unsupervised Learning Network) 及 監 督 式 學 習 網 路 (Supervised Learning Network),以圖像辨識為例,當龐大的原始資料尚未進行分類,非監督式學習網 路能在缺乏輸出期望結果的情況下將圖像分析分類,在分類的過程中非監督式學 習網路不會知道何種訓練方式才是正確的,但卻能從大量的圖像自行發掘特徵潛 在的規則,並將原始資料作分類處理,而監督式學習網路的原始訓練資料每個輸 入圖像都會有正確的期望輸出(分類結果),與非監督式學習網路訓練方式不同 的地方,監督式學習網路在訓練的過程會將類神經網路辨識的輸出值與期望的輸 出值做比較,當出現偏差時通常會以 cost function 作為是否修改類神經網路內部 8.
(16) 第二章 基礎理論及技術背景. 權重的判斷依據,直到誤差值下降至容忍範圍。使用的學習方式大多以訓練資料 作為選擇考量,非監督式學習網路的優點在於不需以人工方式輸入訓練資料的標 籤即可做圖像分析,在訓練時自主學習判斷原始資料分群的規則以將相似的資料 群聚,常用在未知的數據分類,監督式學習網路則需要成對的數據資訊,以作為 在訓練調整的依據,本論文所使用的學習方法為監督式學習網路。 在類神經網路訓練階段結束後,會得到一組針對原始資料進行訓練的權重, 對於類神經網路模型期待的不是對原始資料的分類辨識,而是探討經過訓練的類 神經網路模型對原始訓練資料以外的數據分析結果,所以除了訓練資料外還有另 一組測試資料,將測試資料放入模型中觀察輸出是否為我們所期待的結果,此階 段稱為測試階段,當測試階段達到理想辨識率即是完成此類神經網路模型。. 9.
(17) 第二章 基礎理論及技術背景. 第二節 Convolutional Neural Network 近幾年摺積神經網絡(Convolutional Neural Network,CNN)的發展,在高 功效辨識方法廣泛的引起重視,相較其他的神經網路,摺積神經網路在圖像辨識 方面有更好的結果。 摺積神經網路的構想源於 1962 年大衛·休伯爾(David H. Hubel)和托斯坦· 威澤爾(Torsten Nils Wiesel)兩位神經科學家對貓科的腦部視覺皮層研究,這項 研究提出感受野(receptive field)的概念為類神經網路發展開啟新視野,1984 年 日本學者福島邦彥(Kunihiko Fukushima)發表了首次基於感受野概念所設計的 神經網路模型-適用於手寫字元辨識的神經認知機(neocognitron),神經認知機的 技術成為摺積神經網路的最初原型。1994 年 Yann Le Cun 提出深層摺積神經網 路 LeNet5(如圖 2-2),設計用於手寫字體辨識的 LeNet5 是 CNN 的經典結構,隨 後發展出許多摺積神經網路模型,在 2012 年 ImageNet 圖像分類比賽上 Alex Krizhevsky, Ilya Sutskever and Geoffrey Hinton 以深度摺積神經網路結合 GPU 設 計的 AlexNet 贏得冠軍,摺積神經網路就此成為廣泛使用且倍受重視的圖像辨識 方法。. 圖 2-2 CNN 經典模型 LeNet5. 10.
(18) 第二章 基礎理論及技術背景. 第三節Convolutional Neural Network 演算法則 摺積神經網絡的架構以摺積層(convolutional layer)、池化層(pooling layer)及 全連接層(fully connected layer)組成,它的運算參數皆使用單經度浮點數,摺積層 對圖像進行摺積運算,利用權重將特徵提取出來,以增強重要特徵訊號,池化層 主要用作圖像採樣以降低網路訓練參數,全連接層可將輸入轉成一維向量,所有 的輸入及輸出皆相互對應,綜合前面的特徵值以提高辨識率。 摺積層並非是將神經元相互連結,而是利用權重的方式將輸入特徵圖(input feature map)作局部特徵提取,摺積層的運作範例如圖 2-3 所示,在運算的過程中, 每個摺積核(convolution kernel)會對局部圖像依序作運算,直到摺積核掃完整張 圖像即可得到輸出特徵圖(output feature map)。. 圖 2-3 摺積運算範例 假設𝑋 𝑝 為第 p 個 input feature map,𝑌 𝑞 為第 q 個 output feature map,𝑊 𝑝,𝑞 為 第 p 個 input feature map 對應到第 q 個 output feature map 的摺積核。我們可以將 X 及 Y 的關係以公式(2,1)表示,其中*為摺積運算,M 為 input feature map 個數, N 為 output feature map 個數。 𝑝 𝑝,𝑞 𝑌 𝑞 = ∑𝑀 , 𝑞 = 1, … . , 𝑁 𝑃=1 𝑋 ∗ 𝑊. 11. (2,1).
(19) 第二章 基礎理論及技術背景. 當圖像經過摺積運算後,可以利用池化層將 output feature map 作降採樣,本 論文採樣的過程為 non overlapping pooling,可避免將資料重覆採樣,採樣有許多 種方式,其中「最大池化(Max pooling)」是最普遍使用的(如圖 2-4),Max pooling 採樣方式是在局部範圍中提取出最大值,AlexNet 將圖像以 2×2 區塊做分割進行 採樣,Max pooling 能減少下一層摺積運算參數量同時降低過擬合的問題,並減 少訓練過程的計算複雜度。. 圖 2-4 最大池化 Max pooling 若 input feature map size 為 LxL,在 Max pooling 後的 output feature map size 為 𝐿 2. 𝐿. x 2。Max pooling 公式如下表示. 𝑌𝑖,𝑗 = 𝑀𝑎𝑥(𝑋2𝑖 ,2𝑗 , 𝑋2𝑖 ,2𝑗+1 , 𝑋2𝑖+1. ,2𝑗. , 𝑋2𝑖+1 ,2𝑗+1 ) 𝐿. ,0 ≦ 𝑖, 𝑗 ≦ ( 2 − 1). (2,2). 通常會將每個階段的結果透過活化函數(Active function)將數值調整到利於 下個階段的摺積運算,一般摺積網路大多選擇以 Relu 作為活化函數,Relu 函數 以公式(2,3)表示,x 為輸入資料,將 x 與 0 作最大值比較即為 Relu 的運算結果。. 𝑅𝑒𝑙𝑢(𝑥) = 𝑀𝑎𝑥(0, 𝑥). (2,3). 摺積神經網路最後以全連接層綜合前面運算結果,全連接為最原始的類神 經網路架構,屬於淺層學習,將所有輸入輸出相互連結,增加彼此的關聯性以 提高辨識率,全連接層的運算由多個乘法與加法組成,運算過程簡單但所使用 12.
(20) 第二章 基礎理論及技術背景. 到的運算參數相較摺積層為數更多,因此在摺積神經網路的架構中更需要池化 層的輔助來降低全連接層的計算複雜度,全連接層的示意圖可參照圖 2-5。. 圖 2-5 全連接層示意圖 假設共有 N 個輸入及 M 個輸出,以𝑋𝑝 表示第 p 個輸入,𝑌𝑞 表示第 q 個輸 出,𝑊𝑝,𝑞 為第 p 個輸入對應第 q 個輸出之關係權重,全連接層輸入與輸出的關 係示可表示為. 𝑌𝑞 = ∑𝑁 𝑝=1 𝑋𝑝 ∗ 𝑊𝑝,𝑞 , 𝑞 = 1, … , 𝑀. (2,4). 摺積神經網路架構可依據不同數據資料需求作設計,不同的摺積層數量與全 連接層數量會圖像辨識率的高低,基本上摺積層數量與辨識率成正比,但每次摺 積後都會縮減圖像大小,因此摺積前會對圖像作 Zero Padding(如圖 2-6)以維持圖 像輸出大小不變。. 圖 2-6 Zero Padding. 13.
(21) 第二章 基礎理論及技術背景. 第四節AlexNet Model 本論文的硬體架構是以 AlexNet 網路模型作為基礎,AlexNet 模型最初是為 了 ImageNet 圖像資料庫分類所設計,對於資訊複雜的圖像相較 LeNet-5 有更佳 的辨識率,同時 AlexNet 網路架構不像 VGGNet 過於龐大,是十分適合實作於硬 體的神經網路模型,本節將對 AlexNet 模型作細部討論。. 圖 2-7 ImageNet 圖像 AlexNet 模型架構 [3]如圖 2-8 所示,AlexNet 是針對 ImageNet 大小為 256× 256 的圖像,從中隨機提取 224×224 pixel 作輸入圖像來設計模型架構,它包含五 個摺積層、三個採樣層以及三個全連接層,摺積所使用的摺積核尺寸分為 11×11、 5×5 及 3x3,最後一個全連接層的輸出向量為 1000 的 softmax 層,產生 1000 分 類的分布結果。. 圖 2-8 AlexNet 模型架構. 14.
(22) 第二章 基礎理論及技術背景. AlexNet 擁有約 6000 萬個參數和 65 萬個神經元,在當時 AlexNet 受到 GPU 的內存限制,因此使用了兩個 GTX580 進行訓練,這種做法降低了訓練過程的過 擬合,同時提升訓練速度,不過隨著科技進步,以現在的硬體條件使用一個 GPU 即可達到同樣的效果。 AlexNet 在第一層摺積層的摺積核尺寸 11×11 步長為 4,可對較大的局部圖 像作特徵提取,以有效率的取得過大圖像中較重要的資訊,接著將第一層摺積的 結果作 Max pooling 降採樣以降低訓練的參數,第二層摺積層將第一層採樣的結 果作為輸入,以摺積核尺寸 5×5 步長為 1 進行運算,第二層結果同樣作 Max pooling,第三、四和五個摺積層摺積核尺寸皆為 3×3 步長為 1,中間沒有池化層 連接,在第五層摺積完後作最後一次降採樣便進入全連接部分,全連接層兩個 GPU 對彼此的結果作運算,前兩個全連接層皆為總數 4096 個神經元的輸出,最 後一個全連接層數量為 1000 的輸出向量。 本論文將依據 AlexNet 模型架構,設計用於辨識 CIFAR10 資料庫,CIFAR10 的圖像大小僅 32×32,分類總共為 10 類,基於圖像相較 ImageNet 尺寸更小,分 類的類別較少,將會適當減少摺積層及全連接層的數量,以簡化硬體實作的複雜 過程。. 15.
(23) 第二章 基礎理論及技術背景. 第五節 Binarized Neural Network 在本章第三節提到摺積類神經網路是使用單經度浮點數作運算,在運算的過 程中會使用到大量的浮點數加法器及乘法器,同時會使用到大量的記憶體儲存權 重及每個階段的 output feature map,在作硬體架構評估如第一章第二節所述,將 傳統摺積神經網路改為二元化神經網路使用的記憶體資源降低約 32 倍,利於將 AlexNet 網路實現於硬體架構。 二元化神經網路(Binarized Neural Network; BNN) [2]是 Matthieu Courbariaux 於 2016 年所提出的演算方法,它的方法很簡單,就是將傳統摺積神經網路所使 用的 32 位元浮點數權重更改為+1 或-1,以及利用活化函數將每個階段計算的結 果作神經元二元化轉換(Binarized neuron),同時可將乘法器改為簡單的 XNOR 位 元運算,這種方式確實可以大幅減少運行速度和降低硬體資源的消耗,在 M Courbariaux 的 論 文 中 提 出 了 兩 種 二 元 化 的 方 法 , 第 一 種 是 隨 機 型 二 元 化 (Stochastic Binarization),將浮點數權重以隨機的方式作二元化轉換,以公式(2,5) 表示,其中σ為 hard sigmoid function,運算式如(2,6). +1, 𝑤𝑖𝑡ℎ 𝑝𝑟𝑜𝑏𝑎𝑏𝑖𝑙𝑖𝑡𝑦 𝑝 = 𝜎(𝑥) 𝑥𝑏 = { −1, 𝑤𝑖𝑡ℎ 𝑝𝑟𝑜𝑏𝑎𝑏𝑖𝑙𝑖𝑡𝑦 1 − 𝑝 𝑥+1. 𝜎(𝑥) = 𝑐𝑙𝑖𝑝 (. 2. , 0,1) = 𝑚𝑎𝑥(0, 𝑚𝑖𝑛(1,. (2,5). 𝑥+1 2. )). (2,6). 上述的方法每次運算都要生成隨機數,在硬體實現會造成系統負擔,因此本 論文選擇使用第二種方法確定型二值化(Deterministic Binarization),相較於第一 種方法更容易實現於硬體,僅需 sign function 便可完成轉換,其公式如下. +1, 𝑥 ≥ 0 𝑥𝑏 = 𝑠𝑖𝑔𝑛(𝑥) = { −1, 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 16. (2,7).
(24) 第二章 基礎理論及技術背景. 機器學習換個角度即為對數據的統計分析,因此機器學習有幾項重要的假設, 首先相同類別的數據必須具有一定的規律性,再來是這些數據必須存在於相同的 空間分布,才能使神經網路有較佳的泛化能力,若這些數據既沒有規律性也不在 相同的分布範圍,那便會使機器學習的能力下降及學習毫無效率,2015 年 Sergey Ioffe 發表的論文 [4]中提出批標準化(Batch Normalization; BN)的方法有效解決了 分布不一致的問題,在神經網路每個階段運算完會將結果進行批標準化,把原始 雜亂的特徵值分佈轉換成均值為 0、標準差為 1 的標準分佈,將批標準化演算法 作整理後可得到公式(2,8),其中 x 為輸入資料,μ為平均值,√𝜎 2 為標準差,γ 為權重,β為偏移值,y 為輸出資料,辨識過程中參數皆為固定值,依據訓練最 小輸入個數來計算批標準化所需之參數。. 𝑦=. 𝑥−𝜇 √𝜎 2. ×𝛾+𝛽. (2,8). 經過批標準化在神經元二元化(Binarized neuron)轉換之前,與摺積神經網路 相同要對運算結果作活化函數的運算,對於使用的活化函數,若使用語摺積神經 網路常用的 Relu 函數,雖然運算方法簡單,但隨著訓練的增加,某些神經元容 易被歸類為 0,如此便會影響精度不高的二元化神經網路的辨識效果,若使用一 般的非線性活化函數(如 sigmoid 函數)經過指數運算,則會增加硬體資源的消耗。 在二元化神經網路使用的活化函數為 Hard Hyperbolic tangent function (Hard-tanh, 公式(2,9)),X 為輸入資料,X 經過 Hard-tanh 運算後的值會壓縮在正 1 與負 1 之 間,最後再將活化的運算結果作 Binarized neuron 轉換便可得到該階段的輸出。. 𝐻𝑡𝑎𝑛ℎ(𝑥) = 𝑚𝑎𝑥 (−1, 𝑚𝑖𝑛(1, 𝑥)). (2,9). 二元化神經網路中,將摺積、採樣運算結果進行標準化後,再通過活化函數 Hard-tanh 運算最後作 Binarized neuron 轉換,這種方式的結果事實上與將摺積、 17.
(25) 第二章 基礎理論及技術背景. 採樣運算結果進行標準化後直接使用 sign function 轉換神經元所得到的結果一 致,因此在硬體實作採用標準化結合 sign function 來進行神經元二元化。. 18.
(26) 第三章 系統架構. 第三章. 系統架構. 本章節將詳細介紹本論文所提出以 BNN 與 AlexNet 為基礎所設計出的硬體 架構。. 第一節. 研究流程. 本論文主要實作能辨識 CIFAR10 圖像的 BNN-AlexNet 硬體架構,由第二 章探討中提到,一個具有辨識能力的神經網路系統必須經過訓練及測試階段,在 實作過程將會使用到機器學習框架的軟體 Torch7 來輔助電路的設計,以完成網 路的訓練階段,Torch7 將網路訓練完後利用 Python 取出訓練的權重(weight)、偏 移值(bias)及標準化的相關數值作為硬體的運算參數。本論文實作的電路為向前 傳遞的辨識階段,不包含輸入層、輸出層及池化層共有 6 層,由於架構龐大所以 逐層實現,並與 Torch7 各階段運算之 RTL 模擬結果作比對,並將 RTL 驗證完成 的架構燒錄至 FPGA 開發板,利用 FPGA 取得硬體實質的運算結果,以確保硬體 電路的正確性。. 19.
(27) 第三章 系統架構. 第二節. 電路架構. 本節將詳細介紹 BNN 電路系統整體架構,本論文以 AlexNet 為基礎設計之 圖像辨識系統,辨識輸入資料送入硬體電路作運算前,會對資料作 Zero Padding 處理成為 34×34 RGB 圖像,而輸入圖像總共有 10 個分類,在圖像經過電路運算 後輸出同樣會得到 10 個運算分析結果的分布向量,其中記錄的最高值即為辨識 分類結果。 架構圖如圖 3-1 所示,由一個輸入層、四個摺積層(C1、C2、C3、C4)、三個 池化層(S2、S3、S4)、兩個全連接層(F5、F6)所組成。在第一階段僅對輸入圖像 進行摺積運算,第二、三、四階段則是對前一階段的 output feature map 進行摺積 然後作降採樣,在第四階段運算完後送入最後 F5、F6 進行全連接層運算,便可 得到辨識結果。. 圖 3-1 本論文 BNN 網路架構. 20.
(28) 第三章 系統架構. 以下將對各階段電路設計作細部介紹,第一項討論 C1 之硬體架構,與其他 摺積層不同,輸入為 9 bits 定點數的 interleave 圖像,C2、C3、C4 之架構相似, 輸入皆為 1 bits 的 interleave 圖像,在本節第二項僅針對 C2 之硬體架構作討論, 第三項將對 S2 之硬體架構作說明,其中包含降採樣、標準化及神經元二元化運 算,而池化層的架構相似便不多作贅述,第四項討論 F5 與 F6 之全連接電路,第 一項至第三項之電路架構參照論文 [5],第四項則是引用論文 [6]之架構進行修 改,在標準化及二元化的電路採用論文 [7]的方法設計。. 21.
(29) 第三章 系統架構. 第一項. C1 電路架構. C1 電路架構包含 Interleave Shift Register 用來暫存交錯輸入的圖像、Kernel Core 作定點數摺積運算、Output Buffer 存放及運算 Kernel Core 的結果,詳細組 成關係如下圖。. 圖 3-2 C1 電路架構 本論文所使用的辨識資料為全彩的 RGB 圖像,因此會有 3 個輸入資料,所 以使用 Interleave Shift Register 用來暫存交錯輸入的圖像,再送入 Kernel Core 運 算,最後送入 Output Buffer 加總,因為 input feature map 為交錯輸入,所以 Output Buffer 多加暫存器來處理交錯的問題,將對應的數值加上偏移量即可得 C1 的 output feature map。 一般硬體實作為了配合圖像資料,第一層摺積層會使用浮點數運算,本論文 實作所使用的輸入資料會先利用 Matlab 軟體將圖像數值轉為 9 bits 的定點數 (fixed point),如此便可將浮點數加法、乘法器改為簡易位元運算,以降低浮點數 運算所造成的資源消耗。. 22.
(30) 第三章 系統架構. C1 電路中 Interleave Shift Register 及 Kernel Core 合併稱為 Interleave Snake 電路(如圖 3-3),Interleave Shift Register 的大小由輸入圖像尺寸、interleave 數量 及摺積核決定,假設輸入圖像的大小為 L×L,摺積核大小為 K×K,u 是共享同一 組 Interleave Shift Register 的 input feature map 個數,Interleave Shift Register 的大 小則為(K-1)(L+1)u+1。. 圖 3-3 C1-Snake 電路,K=3 Interleave Shift Register 標記的區塊的值會傳進 Kernel Core 與相對應的 kernel 作乘法計算,再將計算結果加總後送至 Output Buffer。為了減少電路所使用的運 算單元,Kernel Core 中會存放不只有一組 kernel,同時使用記數器來決定用哪一 組 kernel 進行摺積計算。 以圖 3-4~圖 3-6,3 個 4×4 的 input feature map 作 interleave 輸入、Kernel size 為 3×3 作範例說明 Interleave Snake 電路。. 23.
(31) 第三章 系統架構. 將𝑋1 、X 2 、𝑋 3 資料由左至右、上至下依序交錯輸入 Interleave Shift Register, 1 ~○ 9 區塊的值送到 Kernel Core, 當 Interleave Shift Register 被填滿的時候,將編號○. 此時送入 Kernel Core 得資料為𝑋1 ,所以與𝑊 1,1 、𝑊 1,2 、𝑊 1,3 、𝑊 1,4進行摺積運 算,同時為了完成𝑊 1,1 、𝑊 1,2 、𝑊 1,3 、𝑊 1,4 運算,會停留 4 個 clock 的時間不送 資料,以維持 Interleave Shift Register 的值,運算完成便可得到摺積運算的結果 𝑌1,1 、𝑌1,2 、𝑌1,3 、𝑌1,4 ,以同一個通道輸出至 C1 Output Buffer 中暫存。. 圖 3-4 C1-Interleave Snake 電路範例 1. 24.
(32) 第三章 系統架構. 當𝑋1 摺積運算後,換𝑋 2 的下一個 pixel 進入,以同樣的方式得到摺積運算的 結果𝑌 2,1 、𝑌 2,2 、𝑌 2,3 、𝑌 2,4,以同一個通道輸出至 C2 Output Buffer 中暫存。. 圖 3-5 C1-Interleave Snake 電路範例 2 𝑋 3 經 Interleave Snake 運算得到𝑌 3,1 、𝑌 3,2 、𝑌 3,3 、𝑌 3,4 後,即完成所有 output feature map 第一個 pixel 的運算,接著回到𝑋1 的下一個 pixel,以此模式直到所有 input feature map 的 pixel 都送入 Interleave Snake 運算。. 圖 3-6 C1-Interleave Snake 電路範例 3. 25.
(33) 第三章 系統架構. 本項開始提到辨識的輸入資料有 3 個分別為全彩圖像的 RGB 數值,實際的 C1 電路輸出共有 64 個,每個輸入各會對應到 64 組 kernel,將 3*64 組 kernel 分 配到 8 個 Kernel Core,1 個 Kernel Core 會存放 3*8 組 kernel。 Output Buffer 用來存放及運算 Interleave Snake 結果,將 Interleave Snake 交 錯的結果以暫存器存放(如圖 3-7),u 是 input interleave 個數,v 是共享同一組 Kernel Core 的 output feature map 個數(亦為 output interleave 個數)。. 圖 3-7 C1-Output Buffer 電路 當 Interleave Snake 的輸出將 Output Buffer 全部填滿,Output Buffer 便會將 暫存結果與 bias 進行相加得到 output feature map,C1 電路的 output feature map 以 interleave 形式輸出。 在圖 3-8 以 3 個 input feature map、64 個 output feature map (8 個 interleave) 為範例作 C1 電路說明。. 26.
(34) 第三章 系統架構. 圖 3-8 C1-Snake 實際架構及 C1-Output Buffer 電路 範例中 Interleave Snake 的輸出 𝐼 𝑝,𝑞 表示第 p 個 input feature map 與𝑊 𝑝,𝑞 摺積 之 結 果 , 輸 出 排 列 方 式 為 𝐼1,1 、𝐼1,2 、 … 、𝐼1,8 、𝐼 2,1 、𝐼 2,2 、 … 、𝐼 2,8 、𝐼 3,1 、𝐼 3,2 、 … 、𝐼 3,8 、𝐼1,1 、𝐼1,2 ….,其於輸出以此類推。. 將 Interleave Snake 的第 1 個 Kernel Core 運算結果送至 Output Buffer 1 中的 暫存器,當暫存器填滿時把左邊第一排暫存器的值加上偏移值(bias)(如圖 3-8 右 側)即可得到 C1 的 output feature map,其餘 Kernel Core 比照作法送至對應的 Output Buffer 運算取得 output feature map 結果,其中 bias 與 kernel 同樣利用記 數器來決定 bias 使用,而 Output Buffer 與 Kernel Core 運算結果相同,皆為 8 個 output feature map 交錯輸出。 C1 電路輸入及輸出的關係式如下,𝑋 𝑝 表第 p 個輸入,𝑊 𝑝,𝑞 表第 p 個輸入對 應到第 q 個輸出之權重,𝑌 𝑞 表第 q 個輸出 𝑌 𝑞 = (∑3𝑝=1 𝑋 𝑝 ∗ 𝑊 𝑝,𝑞 ) + 𝑏𝑖𝑎𝑠 𝑞 , 𝑞 = 1, … ,64 C1 運算完的 output feature map 將送入 C2 進行後續的摺積層運算。. 27. (3,1).
(35) 第三章 系統架構. 第二項. C2 電路架構. C2 電路與 C1 電路功能相同,皆是對輸入資料進行摺積運算,但設計相較 C1 電路複雜,主要是 C2 電路有多個 Interleave Shift Register 接收多個以 interleave 形式輸入的 input feature map。C2 電路包含 Interleave Shift Register 用來暫存交錯 輸入的圖像、Kernel Core 作 XNOR 運算、Output Buffer 存放及運算 Kernel Core 的結果,詳細組成關係如下。. 圖 3-9 C2 電路架構 C2 電路的 input feature map 是從前一階段運算結果(C1)取得,在本節第一項 說明中提到 C1 的資料為 8 個 feature map 交錯輸出,因此 C2 電路亦為 8 個 input feature map 以 interleave 形式輸入。與 C1 電路相同,C2 電路 output feature map 也是綜合不同 input feature map 與對應 kernel 運算的結果,因此在 input feature map 分別送入各自的 Kernel Core 運算後,同樣使用 Output Buffer 運算 output feature map 的最後結果。. 28.
(36) 第三章 系統架構. C2 電路中 Interleave Shift Register 及 Kernel Core 合併稱為 Interleave Snake 電路(如圖 3-10)。. 圖 3-10 C2-Interleave Snake 電路,K=3 C2 的 Interleave Snake 電路唯有 Kernel Core 中乘法器與 XNOR 計算的差異, 其他運作皆與 C1 Interleave Snake 電路相同,在此便不多作範例說明。 C2 的 Output Buffer 架構與 C1 相同,差別在於 C2 的 Output Buffer 是總和多 個 Kernel Core 個運算結果再存放到 Output Buffer 中的暫存器,C2 電路的 output feature map 同樣以 interleave 形式輸出。在圖 3-11 以 9 個 input feature map (3 個 interleave)、128 個 output feature map (8 個 interleave)為範例作 C2 電路說明。 輸出共有 128 個,所以每個輸入各會對應到 128 組 kernel,將 128 組 kernel 分配到 16 個 Kernel Core,而範例中 1 個 Interleave Snake 為 3 個 input feature map 作 interleave 輸入,1 個 Kernel Core 會存放 3×8 組 kernel。. 29.
(37) 第三章 系統架構. 圖 3-11 C2-Interleave Snake 實際架構及 C2-Output Buffer 電路 同 C1 電路將 Interleave Snake 的第 1 個 Kernel Core 運算結果送至 Output Buffer 1 相加後放入 Output Buffer1 中的暫存器,當暫存器填滿時把左邊第一排 暫存器的值與 bias 加總即可得到 C2 的 output feature map,其餘 Kernel Core 比照 作法送至對應的 Output Buffer 運算取得 output feature map 結果,bias 與 kernel 同 C1 利用記數器來決定,而範例 Output Buffer 與 Kernel Core 運算結果相同為 8 個 output feature map 交錯輸出。 假設共有 N 個輸入及 M 個輸出,以𝑋 𝑝 表示第 p 個輸入,𝑌 𝑞 表示第 q 個輸 出,Kernel Core 的權重值以𝑊 𝑝,𝑞 表示,代表第 p 個 input feature map 對應第 q 個 output feature map 之權重,存放在暫存器中的值以𝐼 𝑝,𝑞 表示,代表第 p 個 input feature map 與𝑊 𝑝,𝑞 摺積之結果,C2 電路運算式整理如下 𝐼 𝑝,𝑞 = 𝑋 𝑝 ∗ 𝑊 𝑝,𝑞 , p=1,…,N q=1,…,M 𝑝 𝑝,𝑞 𝑌 𝑞 = (∑𝑁 ) + 𝑏𝑖𝑎𝑠 𝑞 , 𝑞 = 1, … , 𝑀 𝑝=1 𝑋 ∗ 𝐼. (3,2) (3,3). 在本論文實作電路架構中,C2、C3、C4 僅參數及輸入輸出數量差異,運作 30.
(38) 第三章 系統架構. 方式相同,皆以 C2 電路作設計,而 C2、C3、C4 實際的 input feature map & output feature map 數量、input feature map & output feature map interleave 數量如下表所 示。 表 3-1 摺積層輸入、輸出及 interleave 數量 C2. C3. C4. Input feature map. 64. 128. 256. Input interleave. 8. 8. 16. Output feature map. 128. 256. 512. Output interleave. 8. 16. 32. 31.
(39) 第三章 系統架構. 第三項. S2 電路架構. S2 為池化層,使用的降採樣方法為 Max pooling,採樣大小為 2×2,並將降 採樣的結果作標準化及二元化。S2 電路架構如圖 3-12,包含 Interleave Shift Register 用來暫存交錯輸入的圖像、Comparator Core 作 Non-Overlapping Max pooling 運算、Batch Normalization 將 Max pooling 結果作標準化及二元化。. 圖 3-12 S2 電路架構 S2 電路的輸入為前一層摺積層的結果,將 input feature map 的資料交錯輸 入,再把要比較的資料送入 Comparator Core 作 Max pooling,最後至 Batch Normalization 運算即可得到 S2 的 output feature map。. 32.
(40) 第三章 系統架構. S2 電路中 Interleave Shift Register 與 Comparator Core 負責作 Max pooling 的 運算。與 C2 電路相同使用 Interleave Shift Register 來暫存交錯的輸入,Interleave Shift Register 的大小由輸入圖像尺寸、interleave 數量決定,假設輸入圖像的大小 為 L×L,u 是共享同一組 Interleave Shift Register 的 input feature map 個數,Interleave Shift Register 的大小則為 uL+u+1,圖中 Interleave Shift Register 標記的 4 個 pixel 為 送 入 Comparator Core 運算的 資料,Comparator Core 裡面 有三 個比較器 (Comparator),用來比較 register 送入的 4 個 pixel,取出最大值即為 Comparator Core 的輸出,而這時的輸出為 Max pooling 的結果。. 圖 3-13 S2-Comparator Core 電路 本論文採用的採樣方式為 non-overlapping Max pooling,也就是在採樣的過 程中不會對 input feature map 同一個 pixel 作重複採樣,圖 3-14 至圖 3-18 為 nonoverlapping Max pooling 範例說明。. 33.
(41) 第三章 系統架構. 如圖 3-14 所示,當 Interleave Shift Register 被填滿,此時送入 Comparator Core 的值為𝑋1 紅框內的 pixel (0,0)、(0,1)、(1,0)、(1,1),運算後後即產生𝑌1 (0,0) 位置的 pixel。. 圖 3-14 non-overlapping Max pooling 實例 1 當𝑋1 運算完後將𝑋 2 的下ㄧ個 pixel 推入 Interleave Shift Register 中,此時送 入 Comparator Core 的值為𝑋 2 紅框內的 pixel,運算後即產生𝑌 2 (0,0)位置的 pixel, 並與𝑌1 從同一個通道輸出。. 圖 3-15 non-overlapping Max pooling 實例 2. 34.
(42) 第三章 系統架構. 以同樣的方式得到𝑌 3 (0,0)位置的 pixel,並與𝑌1 、𝑌 2 從同一個通道輸出。. 圖 3-16 non-overlapping Max pooling 實例 3 當𝑋 3 運算完後將𝑋1 的下ㄧ個 pixel 推入 Interleave Shift Register 中,此時送入 Comparator Core 的值為𝑋1 紅框內的 pixel,與圖 3-14 的比較,可以得知𝑋1 的 pixel(0,1)、(1,1)與圖 3-14 採樣到重複的 pixel,此時 Comparator Core 運算的結果 便會被捨棄,直到下ㄧ次送入 Comparator Core 沒有重複採樣的 pixel(如圖 3-18), 才會保留 Comparator Core 運算的結果。. 圖 3-17 non-overlapping Max pooling 實例 4. 35.
(43) 第三章 系統架構. 圖 3-18 non-overlapping Max pooling 實例 5 由上述範例可知,經過 2×2 採樣的尺寸為原本尺寸的一半,當 input feature map size 為 LxL,在 Max pooling 後的 output feature map size 為. 𝐿 2. 𝐿. x 2,因此在作. 網路架構設計,會維持 input feature map size 及 output feature map size 為偶數倍, 以避免硬體運作時,在 Max pooling 產生無從判別 input pixel 取捨的問題。 所有採樣後的結果都會在 Batch Normalization 電路作標準化及二元化,依據 論文 [4]標準化實作,其公式如下. 𝑦=. 𝑥−𝜇 √𝜎 2. ×𝛾+𝛽. 𝑌:output , 𝑋:input , 𝜇:mean , √𝜎 2 :std,. (3,4). 𝛾:weight , 𝛽:bias,為了簡化硬體電路. 的運算單元及減少電路儲存的參數個數,因此將權重𝛾與標準差√𝜎 2 相乘合併為 一個參數𝑊𝑓 ,藉此降低電路設計複雜度,並將公式整理為 𝑦 = (𝑥 − 𝜇) × 𝑊𝑓 + 𝛽. 36. (3,5).
(44) 第三章 系統架構. 以圖 3-19 演算的方式將公式與二元化實現,經由 Max pooling 運算的結果輸 入至 Batch Normalization 電路,加上平均值𝜇後乘上𝑊𝑓 最後加上偏移值𝛽,經過 hard tanh 活化函數運算便可得到 S2 的 output feature map,其中 hard Tanh(x)的演 算以 sign 演算法實作,以簡化硬體的運算。. 圖 3-19 S2-Batch Normalization 電路運算方式 所有的池化層皆以 S2 電路作設計,池化層的輸入均為前一層摺積層的結果, S2、S3、S4 分別對應 C2、C3、C4 摺積層,在本論文實作電路架構中,S2、S3、 S4 僅標準化參數及採樣過程輸入、輸出數量差異,運作方式相同,詳細如下表 所示。 表 3-2 池化層輸入、輸出尺寸及 interleave 數量 S2. S3. S4. Input feature map. 128. 256. 512. Input feature map size. 32*32. 16*16. 8*8. Input interleave. 8. 16. 32. Output feature map. 128. 256. 512. Output feature map size. 16*16. 8*8. 4*4. Output interleave. 8. 16. 32. 37.
(45) 第三章 系統架構. 第四項. Fully Connected 電路架構. F5、F6 為全連接層,F5 將 S4 output feature map 轉為一維向量作為輸入資 料,本論文架構 S4 的 output feature maps 共有 512 個,output feature maps size 為 4*4,因此 F5 的輸入資料總共有 512*4*4=8192 個,而輸出有 1024 個,每個輸入 皆與每個輸出相互連結,所以在 F5 的權重會有 8192*1024=8388608 個,F6 的輸 入為 F5 的輸出共 1024 個,而 F6 輸出有 10 個,權重有 1024*10=10240 個。 以 F5 為例,若全連接電路實作設計ㄧ次運算出所有輸出,如圖 3-20 所示, 𝑋0到𝑋8191為輸入,𝑊0,0到𝑊8191,1023,𝑌0 到𝑌1023 為輸出,雖然 BNN 可省去浮點數 運算所消耗的資源,但過多的 XNOR 運算與加法運算仍會造成資源的負擔,因 此捨棄以此方式設計全連接電路。. 圖 3-20 F5 輸入、輸出關係圖,輸入為 8192 個,輸出為 1024 個. 38.
(46) 第三章 系統架構. 如果將電路設計ㄧ次只輸入一半或是個位數筆的資料作運算,每次僅運算全 連接的部分結果,再將運算後的結果相加,便可得到完整結果,同時利用這種方 式設計全連接電路計算,可以大幅減少加法器與乘法器的資源。以下首先介紹本 論文全連接層的電路架構,再作範例說明,圖 3-20 以本論文全連接層架構實作, 資料實際存放位置可參照圖 3-21。 圖 3-21 為全連接層的架構圖,分為五個部分,Input Buffer 為儲存前一層運 算結果的緩衝單元,Computation Core 為全連接電路的運算單元,Output Buffer 為輸出緩衝單元,ROM 為儲存權重的記憶體,地址生成單元(Address Generation Unit; AGU)用作控制 ROM 權重的取用地址。. 圖 3-21 全連接電路架構圖 Input Buffer 由位移暫存器組成,s 為一次運算之輸入個數,𝐿1 為輸入緩衝單 元的長度,Output Buffer 同樣由位移暫存器組成,用來儲存部分輸出,t 為運算 之輸出個數,𝐿2 為輸出緩衝單元長度。舉例來說,設輸入資料總共有 64 筆,ㄧ 次輸入 4 筆作計算,則 s 為 4 個 pixel,𝐿1 長度為 16,若輸出有 12 個,一次輸出. 39.
(47) 第三章 系統架構. 4 個,則 t 為 4 個 pixel,𝐿2 長度為 3。 ROM 為記憶體單元,長度是𝐿1 × 𝐿2,寬度是 S × t,由於全連接層的權重數 量龐大,將它儲存於記憶體單元,並利用 AGU 取得每次要運算的權重值在記憶 體中的位置,這種方式可以簡化權重值得處理過程。 以圖 3-22 至圖 3-26,4 個輸入、6 個輸出、𝐿1 = 2、𝑠 = 2、𝐿2 = 3、𝑡 = 2為 範例作全連接層電路之說明。 將𝑋1 、𝑋 2 送入 Computation Core 作運算,此時 AGU 指向的地址為 0,便將 ROM 中 index 為 0 的權重值取出作運算,將𝑋1 ×𝑊 1,1 的結果與𝑋 2 ×𝑊 2,1 的結果相 加,便可計算出𝑌1 的部分結果,以𝑌1(1) 表示,將𝑋 2 ×𝑊 1,2 的結果與𝑋 2 ×𝑊 2,2 的結 果相加,便可計算出𝑌 2 的部分結果,以𝑌 2(1) 表示,並將結果暫存至 Output Buffer。. 圖 3-22 全連接電路實例 1. 40.
(48) 第三章 系統架構. 接著 AGU 指向 1 的地址,再將 ROM 中 index 為 1 的權重值取出與𝑋1 、𝑋 2 作運算,得到𝑌 3(1) 及𝑌 4(1) 。. 圖 3-23 全連接電路實例 2 同理,得到𝑌 5(1) 及𝑌 6(1) 。. 圖 3-24 全連接電路實例 3. 41.
(49) 第三章 系統架構. 當𝑋1 、𝑋 2 運算完後,下一筆𝑋 3 、𝑋 4 推入 Computation Core 作運算,AGU 指 向的地址為 3,便取出 index 為 3 的權重值作運算,得到𝑌1(2) 及𝑌 2(2),同時 Output Buffer 將暫存在緩衝單元內的𝑌1(1)、𝑌 2(1) 推出與𝑌1(2) 、𝑌 2(2) 分別作相加,便可得 到完整的𝑌1 、𝑌 2 ,如圖 3-25。. 圖 3-25 全連接電路實例 4 以同樣的運算方式,便可得到完整𝑌1 到𝑌 6 的結果。. 圖 3-26 全連接電路實例 5. 42.
(50) 第三章 系統架構. F5 與 F6 使用相同的全連接電路架構,相關參數如下表所示,在 F6 中原本 接收 F5 的資料 t 為 16 個 pixel,為降低 F6 資源消耗便調整為 4,而 F6 的輸出 10,即為 10 個運算結果的分布向量,記錄中最高值為電路辨識分類的結果。 表 3-3 F5、F6 電路設計相關參數 F5. F6. Input size. 8192. 1024. s. 16. 4. 𝐿1. 512. 256. Output size. 1024. 10. t. 16. 2. 𝐿2. 64. 5. 43.
(51) 第四章 實驗數據與效能分析. 第四章. 實驗數據與效能分析. 本章節將呈現本論文所提出的 BNN-AlexNet 類神經網路硬體架構之正確 性、實驗環境介紹以及相關數據分析比較。. 第一節. 開發平台與實驗環境. 本論文提出的硬體架構是以 Altera 的 Stratix IV EP4SGX530KH40C2 FPGA 開發板為主要的實現平台,如圖 4-1 所示,選擇使用 FPGA 作為實現硬體電路的 工具,是因為它具有可程式化的彈性,同時具備可重覆修改、覆寫與快速上市等 優點,讓開發人員更容易在可程式化系統晶片(System on a Programmable Chip; SoPC)上建置客製化的硬體電路,利於本論文電路的實作及驗證過程。表 4-1 為 Altera Stratix IV EP4SGX530KH40C2 開發板的詳細規格資訊:. 圖 4-1 Altera Stratix IV EP4SGX530KH40C2 開發板. 44.
(52) 第四章 實驗數據與效能分析. 表 4-1 Altera Stratix IV 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. 本論文撰寫 Verilog 硬體描述語言的平台使用的是 Altera Quartus II 14.1,且 透過 Quartus II 提供的硬體描述語言語法檢查、邏輯元件的繞線佈局配置、電路 時序的分析、電路合成以及將設計電路轉換到實際硬體等強大的功能,可以讓建 立系統架構的過程更快速,並藉由 Modelsim 模擬 gate-level 與 RTL-level 訊號波 形圖以驗證電路功能之正確性。除了使用 Quartus II 來設計 Verilog 電路外,軟 體方面使用 Torch7 framework 之機器學習框架來作 BNN 網路的設計輔助,利用 Torch7 訓練 BNN 網路參數以及將其輸出作為電路結果的驗證。 Torch7 是業界與學術界廣泛應用的機器學習框架,它是以 C 編寫成的機器 學習套件,並且支援 GPU 運算,以提高訓練速度,同時 Torch7 也開放使用 python 的 API,讓 Torch7 訓練好的權重更容易取出,以用作電路設計參數,Torch7 的. 45.
(53) 第四章 實驗數據與效能分析. 實驗環境為 Ubuntu14.04,並利用 Nvidia GeForce GTX1080 GPU 加速訓練階段, python 的 API 則使用 pytorch。 本論文所用的辨識資料庫是由 Alex Krizhevsky, Vinod Nair, and Geoffrey Hinton 收集整理,用於物體、生物識別的 The Canadian Institute for Advanced Research 10 (CIFAR10)資料庫(如圖 4-2),CIFAR10 分為 airplane, automobile, bird, cat, deer, dog, frog, horse, ship, truck 十個類別,圖片的格式都為全彩圖片,圖片 尺寸為 32×32,包含了五萬張訓練資料與一萬張測試資料。目前現有對於 CIFAR10 辨識率最佳的神經網路架構為 92 層的 CNN 網路 Dual Path Networks (DPN),辨識率為 95.16% [8],但很明顯 92 層的 CNN 網路並不適合實作於硬體, 就硬體發展而言,本論文架構雖然辨識率無法到達 DPN 的程度,但相較 DPN 更 容易實現於硬體,並且辨識率不亞於相似層級的神經網路。. 圖 4-2 CIFAR 10 Dataset 本研究使用 Torch7 framework 訓練圖 3-1 所示之網路架構辨識 CIFAR10,訓 練次數為 1000 次,辨識率 84.58%,圖 4-3 為 Torch7 訓練結果,每次訓練後 Torch7. 46.
(54) 第四章 實驗數據與效能分析. 會產生ㄧ組 model,用來存放所有訓練完的權重、參數及每層的 input feature map & output feature map,透過 pytoch 取出所有的權重跟偏移值作為 BNN 電路的辨 識運算的參數。. 圖 4-3 Torch7 訓練結果. ※硬體實現環境 Synthesis Tool:Altera Quartus II 14.0 Simulation Tool:Modelsim10.1e FPGA Device:Altera Stratix IV EP4SGX530KH40C2. ※軟體實現環境 Torch7 framework CPU:Intel® Core™ i7-2600 CPU @ 3.40GHz Memory:DDRIII 32.0 GB. 47.
(55) 第四章 實驗數據與效能分析. 第二節. 實驗結果與效能分析. 在本論文最後ㄧ節將呈現本論文所有實驗的結果與效能分析,此研究是以低 面積為方向作電路設計,首先將統整本電路的相關參數資訊,接著以硬體資源消 耗為主作研究過程探討,並與以 FPGA 實作辨識 CIFAR10 之現有架構作比較, 最後對本研究架構之運作效能作分析。 在硬體實現神經網路中,最佔用到硬體資源的便是儲存 output feature map 及 權重值(S4、F5 在第三章系統說明提到,output feature map 會暫存在 fully connected 的 input buffer 中,另外所有運算的 weight 皆會儲存在電路的記憶體),這些參數 在傳統的 CNN 摺精神經網路皆以 32bits 浮點數儲存,單就權重而論所佔用到的 資源約為 38Mbyte,雖然現在硬體資源的發展已經可以儲存到 Giga 甚至 Tera 等 級,區區 38Mbyte 根本不成問題,但將這些參數儲存於 embedded memory 再載 入主記憶體後 CPU 運算,在運算過程中的存取便會造成系統運作的負擔,進而 拖垮系統的效能,若是將這些參數經過二元化處理,output feature map 及權重值 皆改為以 1 bit binary 儲存,便可省去約 32 倍的資源。 實現硬體架構之前,理當對設計的架構作使用之資源分析,以確保硬體資源 足以支持設計架構的實作,在表 4-1 記錄本電路設計各階段 feature map 的輸入 輸出及 weight 的參數總量,其中 Output Bits 為暫存 output feature map 所需的資 源估計,Weight Bits 則為權重所需的資源估計,並與表 4-1 的硬體規格作比較, 確定有足夠的硬體資源即可實作硬體電路。. 表 4-2 本研究架構參數總量 48.
(56) 第四章 實驗數據與效能分析. Input. Output. Size. Interleave. Size. Interleave. Weight Bits. Bits. C1. 3. 34*34. 1. 64. 32*32. 8. 1.7K. C2. 64. 34*34. 8. 128. 32*32. 8. 72K. S2. 128. 32*32. 8. 128. 16*16. 8. -. C3. 128. 18*18. 8. 256. 16*16. 16. 288K. S3. 256. 16*16. 16. 256. 8*8. 16. -. C4. 256. 10*10. 16. 512. 8*8. 32. 1152K. S4. 512. 8*8. 32. 512. 4*4. 32. 8K. -. F5. -. 512*4*4. 512. -. 1024. 64. 1K. 8192K. F6. -. 1024. 256. -. 10. 5. 10. 10K. Total. 9Kb. 9.48Mb (~1.18MByte). 一般在實現 BNN 硬體架構,為了配合輸入資料為 32bits 浮點數(floating point), 所以在第一層摺積層(C1)會使用浮點數加法器、乘法器作為運算元件,基於以低 面積消耗為設計方向,為了減少硬體的資源消耗,在將圖像輸入前,利用 MATLAB R2011b 軟體將 CIFAR 圖像資料轉為 9bits 定點數(fixed point),則第一 層摺積層便可改為使用位元加法、乘法作運算,如此大幅降低硬體資源的消耗, 表 4-3 記錄以本研究 C1 架構實作,輸入資料為 floating point 與 9 bits fixed point 的資源消耗,使用 fixed point 的暫存資源相較 floating point 下降約 80%,運算資 源更下降至約 96.4%,雖然將 floating point 改為 fixed point 作運算可能會造成辨 識率些微的誤差,但仍在容忍範圍內。 表 4-3 C1 浮點數與定點數硬體資源消耗比較 (Input feature maps = 1, Input size = 34*34, Output feature maps = 64, Interleave = 8, Kernel = 3*3 ). C1 Floating point. C1 Fixed point. Combinational ALUTs. 108622. 3849. Memory ALUTs. 2731. 54. Dedicated logic registers. 69535. 844. 49.
(57) 第四章 實驗數據與效能分析. 除了調整輸入資料的格式以降低 C1 摺積層的硬體資源消耗外,另一個降低 硬體資源消耗的方式便是 interleave,表 4-4 記錄以本研究 fixed point 輸入的 C1 架構實作,當 output feature map 的輸出以倍數增加 interleave 個數,而暫存資源 及運算資源約以倍數下降,由數據可知,interleave 的作法確實可以下降硬體資源 的使用,但在作 interleave 的過程必須要作 clock delay 以等待運算完成,也就是 硬體資源的降低是犧牲時間換來的,所以在設計硬體 feature map 的 interleave 過 程,會考量到 clock delay 以取得較佳的平衡,本研究在 interleave 實驗後選擇以 8 個 interleave 來實作 C1 電路。 表 4-4 interleave 與資源消耗比較 (Input feature maps = 1, Input size = 34*34, Output feature maps = 64, Kernel = 3*3 ). Output interleave. Non. 2. 4. 8. 16. 32. ALUTs. 26680. 15106. 7586. 3849. 1886. 974. Dedicated logic registers. 3547. 2148. 1268. 844. 604. 494. 表 4-2 中已詳細統整所有摺積層、池化層及全連接層設計之參數資訊,將設 計的 BNN 神經網路架構實作於硬體電路,實際所使用到的硬體資源如表 4-5 所 示。 ALUTs 最主要為使用到組合邏輯和時序邏輯電路合成的資源數值,而算術 運算邏輯單元(ALU)雖然是循序邏輯,但其中的數學運算仍是從組合邏輯產生, 因此隨著每次同時運算的 input feature map 數量增加,ALUTs 的資源跟著提升, 不過在 interleave 的電路設計下,ALU 有效的減少進而降低整體硬體電路的資源 使用,最值得一提的是 F5 全連接層的 ALUTs 資源使用,8192 個輸入對應到 1024 個輸出,若以ㄧ次性計算所使用到的乘法器、加法器數量是相當可觀的,甚至是 硬體資源無法負荷,但是當全連接層的設計架構如第三章第四項 fully connected. 50.
(58) 第四章 實驗數據與效能分析. 所說明的方式,每次僅計算一部分資料,在 ALU 的使用依據輸入的個數不同近 乎以倍數下降,全連接層可以說是本研究系統架構資源大幅降低的關鍵。 電路架構中最主要使用到 Dedicated logic registers 的是 Snake 的 shift register 及 S4、F5 的 output feature map 暫存,在 F5、F6 全連接層是在 input buffer 暫存 前一層運算的結果,Dedicated logic registers 的資源使用因為合成器對電路合成 的方式不同,所以結果不盡相同,但與架構規劃僅有些為誤差。 而主要佔 Memory bits 資源使用的是摺積的權重,可與表 4-2 摺積 weight bits 作比較,其中因為摺積層另外還要儲存 bias 的數值以及池化層有儲存標準化的 相關參數,所以 memory bits 會有些為誤差,但整體資源使用與架構規劃是一致 的。 表 4-5 BNN 電路各階段於 FPGA 之硬體資源消耗 ALUTs. Dedicated logic registers (FF). Memory bits. C1. 2351. 3420. 5.13K. C2. 3970. 1915. 82.98K. S2. 2046. 2128. 52.12K. C3. 9152. 5200. 299.59K. S3. 2245. 2368. 54.84K. C4. 12080. 6176. 1191.25K. S4. 2587. 2608. 58.09K. F5. 1574. 1479. 8200.96K. F6. 145. 1260. 10K. 36150. 26554. Total. 51. 9.71M (~1.21MByte).
(59) 第四章 實驗數據與效能分析. 以上為以硬體資源消耗為主之研究過程探討,表 4-6 為本研究 BNN 與現有 BNN 電路資源消耗比較,以摺積層及全連接層相近、辨識資料同為 CIFAR10 資 料庫且實現於 FPGA 之論文作為比較的架構選擇。 所有架構中,本研究所設計的架構摺積層及全連接層最少,但仍達到與其他 架構相近的辨識率,且使用的硬體資源(ALUT、FF)為所有架構中最低的,以下 將詳細分析表 4-6 相關架構與本研究的差異。在 2016 年 Umuroglu [9]提出的架 構是 feature map 數最少與本研究同樣是使用 interleave 的架構,且 input 格式同 為 fixed point,對 CIFAR10 達到八成的辨識率,但硬體資源的使用仍高出本研究 BNN 約 1.3 倍。而 2017 年 Zhao [10]與 Redkar [11]所發表的神經網路設計相似, 但 Zhao 的硬體電路架構使用同為 interleave 的設計方式,因此 ALUTs 較 Redkar 低了約 95.7%,而本研究 BNN 的 ALUTs 與 Zhao 相比減少 25%,與 Redkar 相比 低了約 97%,辨識率與兩者相差不到 4%,若本研究 BNN 摺積層及全連接層提 升到與 Zhao 相同,可以達到更佳的辨識率。最後 Lin [12]提出的硬體架構使用與 所有架構都不同的 Separable Filters 演算方式,雖然這種演算法幫它節省了很多 的資源消耗,但 ALUTs 及 FF 使用仍較本研究 BNN 多,辨識率甚至不相上下。 總體而言,本研究所提出的架構使用最少的硬體資源,便可以達到與其他架 構相近的辨識率,以目前發展而言是相當具有競爭力的硬體電路架構,但值得討 論的是,2017 年 Lin [12]論文所使用的 Separable Filters 演算技術有效的減少了 內存資源使用,對於本架構未來的發展延伸十分具有參考價值。. 52.
(60) 第四章 實驗數據與效能分析. 表 4-6 本研究 BNN 與現有 BNN 電路資源消耗比較 1. 2. 3. 4. [Umuroglu,2016]. [Zhao,2017]. [Redkar,2017]. [Lin,2017]. [9]. [10]. [11]. [12]. Altera Stratix IV. Xilinx Zynq. Xilinx Zynq. Xilinx Zynq. Xilinx Zynq. EP4SGX530. XC7Z045. XC7Z020. ZC706. XC7Z020. 9 bits. 24 bits. 20 bits. 32 bits. fixed point. fixed point. fixed point. floating point. # of conv layer. 4. 6. 6. 5. 6. # of fc layer. 2. 2. 3. 3. 3. 512. 256. 512. 512. 512. 1024. 512. 1024. 1024. 1024. Input interleave. +. +. +. -. -. ALUTs. 36,150. 46,253. 48,0261. 1,113,205. 36,3842. FF. 26,554. -. 46,134. 499,874. 41,054. DSP block. 0. -. 3. -. 8. 9954. 66963. 33844. 05. 28086. 84.58%. 80.1%. 88.42%. 86.06%. 84.9%. 本研究 BNN. FPGA 型號. Input 格式. Max feature map # of conv Max feature map # of fc. Memory bits (Kbits) 辨識率. -. Data set : CIFAR 10. 1 2 3. 4. 5 6. 論文中記載數值為 46.9 kLUTs 使用 Separable filters 演算法 論文中記載數值為 183BRAM 使用 FPGA Xilinx Z7045(36kb BRAM) 183*36kb = 6696 kbits 論文中記載數值為 94BRAM, 權重參數總量 13.4 Mb 使用 FPGA Xilinx XC7Z020(36kb BRAM) 94*36kb = 3384 kbits 論文中記載未使用 embedded memory 論文中記載數值為 78BRAM 使用 FPGA Xilinx Z7020(36kb BRAM) 78*36kb = 2808 kbits 53.
(61) 第四章 實驗數據與效能分析. 總結完本研究硬體資源消耗的分析,以下是對本研究時間與電路架構部分之 運作效能分析。 本研究的電路執行過程時序如圖 4-4 所示,圖表中𝐿𝑖 2 為第 i 層 input feature maps 之大小,C1 的 input feature maps 的大小為𝐿1 2 ,C2 的 input feature maps 的 大小為𝐿2 2 ,C3 的 input feature maps 的大小為𝐿3 2,C4 的 input feature maps 的大 小為𝐿4 2,F5 的 input feature maps 的大小為𝐿5,F6 的 input feature maps 的大小為 𝐿6 ,output feature maps 的大小為𝐿𝑜𝑢𝑡𝑝𝑢𝑡 ,𝑢𝑖 為第 i 層 interleave 的個數,𝑢0 表示 輸入的 interleave 個數。 電路系統執行時間從 C1 接收 input image pixel 開始算起,將有效的摺積輸 出 pixel 結果直接送入 C2,所經過的時間為𝑢0 𝑢1。C2 接收 C1 送入的 input feature map pixel 將有效的摺積 pixel 直接送入 S2 作降採樣、標準化及二元化,S2 運算 的 output feature map pixel 直接送入 C3,C2 運算到第一筆資料送入 S2 所經過的 時間為𝑢1 𝑢2,而 S2 從 C2 的第一筆輸出 pixel 便開始計算,從接收到第一筆資料 到送入 C3 需要(𝐿2 + 2)(𝑢1 𝑢2 )。同理得 C3 運算產生第一筆輸出所需時間為𝑢2 𝑢3, S3 所需時間為 (𝐿3 + 2)(𝑢2 𝑢3 ),C4 所需時間為𝑢3 𝑢4 ,S4 所需時間為 (𝐿4 + 2)(𝑢3 𝑢4 ),在 S4 運算後直接存入 F5 的 input buffer 中,F5 全連接運算資料便直 接從 input buffer 取出,在 F5 運算時間如ㄧ次運算ㄧ個 pixel,所需要的時間為 𝐿 𝐿. 𝐿5 × 𝐿6 ,而本架構運算ㄧ次𝑠5 個輸入、𝑡5 個輸出,F5 運算所需時間為 𝑠5 𝑡 6,其中 5 5. 𝐿5 𝑠5. 𝐿. 又可以替換為𝑢5,𝑡 6可替換為𝑢6,亦可記作𝑢5 𝑢6,實際執行 F5 運算產生第一筆 5. 輸出至 F6 所需時間為 (𝑢5 − 1) × 𝑢6,F6 模式與 F5 相同,得 F6 運算所需時間為 𝐿6 𝐿𝑜𝑢𝑡𝑝𝑢𝑡 𝑠6 𝑡6. 或𝑢6 × 𝑢𝑜𝑢𝑡𝑝𝑢𝑡 。. 54.
相關文件
軟體至 NI ELVIS 環境。現在,您在紙上或黑板上的設計可在 Multisim 內進 行模擬,並模擬為 NI ELVIS 或 NI ELVIS II 電路板配置上的傳統電路圖。設 計趨於成熟後,使用者即可在 NI
在介紹方向場時,我們曾提過 RL 電流迴路的模型:一個迴 路接上電源(E)電感(L)以及電阻(R) 如下圖. 同時推得這個
表 6.3.2 為不同電壓下,驅動整個系統運作所需電流。圖 6.3.2 為 測試情形。其中紅燈代表正常工作。結果證明只要太陽能板能夠提供
下列哪一種記憶體屬於非揮發性記憶體, 不會因電源關閉而使其中的資料消 失, 但是可以透過電壓的方式重複抹除資料, 可用於基本輸入/ 輸出系統 (Basic Input / Output System,BIOS)
想要設計一個具有兩個輸入G(gate閘控)和 D(data資料)以及一個輸出Q的閘控閂電 路。當G等於1時,在輸入D出現的二進位資料
請繪出交流三相感應電動機AC 220V 15HP,額定電流為40安,正逆轉兼Y-△啟動控制電路之主
為主要的積體電路單元元件,此元件同時利用電子與電洞兩種載子,來進行電流的傳
Ethernet Module、RF Transceiver。Switching Power 為提供整個系統的電源,其輸入電 壓為 90V~264VAC,輸出 5VDC 為提供整個系統電源所需。RF Transceiver 所需的電 壓是 5VDC