魏 東 董博晨 劉亦青
①(北京建筑大學(xué)電氣與信息工程學(xué)院 北京 100044)
②(北京市科學(xué)技術(shù)委員會(huì)建筑大數(shù)據(jù)智能處理方法研究北京市重點(diǎn)實(shí)驗(yàn)室 北京 100044)
③(北京亞鼎智能技術(shù)有限公司 北京 100071)
神經(jīng)網(wǎng)絡(luò)已應(yīng)用于多個(gè)領(lǐng)域,例如圖像識(shí)別、語音識(shí)別、數(shù)據(jù)挖掘、智能機(jī)器人等。神經(jīng)網(wǎng)絡(luò)利用自身強(qiáng)大的學(xué)習(xí)能力,通過調(diào)整神經(jīng)元之間的連接權(quán)重來擬合復(fù)雜的高維映射關(guān)系[1]。目前,在圖像識(shí)別中主要采用以下幾種深度學(xué)習(xí)模型進(jìn)行訓(xùn)練,包括深層置信網(wǎng)絡(luò)(Deep Belief Network, DBN)[2]、卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[3]、生成式對(duì)抗網(wǎng)絡(luò)(Generative Adversarial Network, GAN)[4]以及膠囊網(wǎng)絡(luò)(Capsule Network,CapsNet)[5]。
盡管神經(jīng)網(wǎng)絡(luò)在功能上可以滿足圖像識(shí)別的需要,但是目前圖像識(shí)別大多采用軟件實(shí)現(xiàn),無法體現(xiàn)神經(jīng)網(wǎng)絡(luò)并行處理的優(yōu)點(diǎn),并且CPU或GPU在計(jì)算能力上有限,限制了神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜性[6]。為解決上述問題,本文提出一種硬件資源占用率低的改進(jìn)RBF神經(jīng)網(wǎng)絡(luò)算法,并采用硬件化的改進(jìn)RBF神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了圖像特征提取和圖像識(shí)別,其中特征提取采用FPGA實(shí)現(xiàn),圖像識(shí)別采用ASIC電路實(shí)現(xiàn)。RBF神經(jīng)網(wǎng)絡(luò)具有基函數(shù)運(yùn)算復(fù)雜、中間層到輸出層的分類運(yùn)算量大的缺點(diǎn),本文將RCE(Reilly, Cooper和Elbaum)算法和K最近鄰(K-Nearest Neighbor, KNN)算法思想引入到RBF網(wǎng)絡(luò)中,將乘法運(yùn)算改為加法運(yùn)算,以減低網(wǎng)絡(luò)的運(yùn)算量,便于硬件實(shí)現(xiàn),同時(shí)采用最小均方差算法(Least Mean Square, LMS)對(duì)權(quán)值進(jìn)行調(diào)整,保證了網(wǎng)絡(luò)的收斂性。實(shí)驗(yàn)結(jié)果表明改進(jìn)RBF神經(jīng)網(wǎng)絡(luò)算法在不同數(shù)據(jù)集中識(shí)別準(zhǔn)確率均高于LeNet-5和AlexNet,并與VGG16準(zhǔn)確率持平,而平均識(shí)別時(shí)間較3種網(wǎng)絡(luò)模型均縮短50%。本文提出的系統(tǒng)與基于DSP芯片的圖像識(shí)別系統(tǒng)相比,在同為1024張相同數(shù)據(jù)集的前提下,識(shí)別時(shí)間可以縮短60%。
傳統(tǒng)圖像識(shí)別技術(shù)中的圖像預(yù)處理是對(duì)圖像的特征進(jìn)行增強(qiáng),根據(jù)特征差異對(duì)圖像進(jìn)行分割,將要識(shí)別的目標(biāo)從整個(gè)圖像中分離,再針對(duì)分離出的目標(biāo)進(jìn)行特征提取[7]。與傳統(tǒng)技術(shù)不同的是,本文采用基于FPGA的圖像掃描引擎代替?zhèn)鹘y(tǒng)結(jié)構(gòu)中圖像預(yù)處理等步驟,對(duì)圖像進(jìn)行全局特征提取,特征識(shí)別采用ASIC電路實(shí)現(xiàn),系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 基于改進(jìn)RBF神經(jīng)網(wǎng)絡(luò)電路的圖像識(shí)別系統(tǒng)架構(gòu)
系統(tǒng)每次處理的數(shù)據(jù)量為
識(shí)別系統(tǒng)包含學(xué)習(xí)和識(shí)別兩個(gè)部分,其中系統(tǒng)學(xué)習(xí)部分主要包括圖像預(yù)處理以及學(xué)習(xí)環(huán)境設(shè)置。當(dāng)一張圖片輸入進(jìn)學(xué)習(xí)系統(tǒng)中首先被轉(zhuǎn)換成Bitmap單色灰度圖,之后需要手動(dòng)截取取景范圍。學(xué)習(xí)系統(tǒng)支持對(duì)圖片進(jìn)行截取、放大、縮小、平移等操作,詳細(xì)描述如圖2所示。
圖2 多目標(biāo)識(shí)別系統(tǒng)學(xué)習(xí)流程
系統(tǒng)識(shí)別部分主要包括圖像輸入、圖像預(yù)處理和系統(tǒng)識(shí)別參數(shù)設(shè)定。用戶在圖中確定識(shí)別目標(biāo)后,可對(duì)識(shí)別結(jié)果進(jìn)行邏輯組合,使得識(shí)別結(jié)果更加精準(zhǔn)。
RBF, RCE和KNN網(wǎng)絡(luò)都具有描述樣本原型的特征向量,輸入層將新數(shù)據(jù)與樣本原型特征向量進(jìn)行差異值計(jì)算,然后輸出層根據(jù)差異值按照一定規(guī)則輸出類別。3種網(wǎng)絡(luò)的區(qū)別為外部數(shù)據(jù)和樣本原型向量差異值計(jì)算方式不同,RBF神經(jīng)網(wǎng)絡(luò)是疊加外部數(shù)據(jù)和原型樣本間的差異值[8],RCE算法在中間層計(jì)算曼哈頓距離,KNN算法依靠數(shù)據(jù)點(diǎn)周圍臨近樣本進(jìn)行類別劃分。本文將RCE算法和KNN算法引入RBF神經(jīng)網(wǎng)絡(luò),將乘法運(yùn)算改為加法運(yùn)算,改進(jìn)后網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示,其中外部輸入矢量用V表示,樣本矢量用S表示。
圖3 改進(jìn)RBF神經(jīng)網(wǎng)絡(luò)模型
輸入層到中間層的連接權(quán)值為Wij,令Wij=Sj。外部矢量V進(jìn)入網(wǎng)絡(luò)后,進(jìn)行如下計(jì)算:
式(2)計(jì)算輸入向量與樣本原型向量之間的相似程度,如果V和某個(gè)樣本的相似度足夠高,則令
當(dāng)λj ≤1時(shí),中間層第j個(gè)神經(jīng)元就會(huì)處于激活狀態(tài)。
網(wǎng)絡(luò)整體輸入輸出關(guān)系為
改進(jìn)RBF神經(jīng)網(wǎng)絡(luò)和RBF神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)相似,輸入層和中間層為全連接,中間層的輸入輸出關(guān)系為
其中,oj,x1,x2,cj1,cj2,σj,dj, Distj分別代表中間層神經(jīng)元的輸出、第1維度值、第2維度值、樣本向量第1維度值、樣本向量第2維度值、響應(yīng)閾值、函數(shù)值和曼哈頓距離。
神經(jīng)元的輸出如式(8),式(9)和式(10)所示:
其中,rank(·)––升序排隊(duì)函數(shù),根據(jù)Dist的大小將輸入o從小到大依次排序。
網(wǎng)絡(luò)的學(xué)習(xí)使用監(jiān)督學(xué)習(xí)的方法,必須具備一組訓(xùn)練樣本數(shù)據(jù)對(duì)集,訓(xùn)練向量X(k)和X(k)對(duì)應(yīng)的目標(biāo)值d(k)組成訓(xùn)練樣本數(shù)據(jù)。將X(k)和d(k)輸入到系統(tǒng)中,通過調(diào)整參數(shù)使得目標(biāo)和輸出值之間的誤差e達(dá)到某一閾值,如圖4所示。
圖4 改進(jìn)RBF神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)模型
網(wǎng)絡(luò)中用X(k)作為中間層的樣本向量,通過調(diào)整基寬度δj和中連接權(quán)值wj,使網(wǎng)絡(luò)的輸出y趨近于目標(biāo)d,使誤差達(dá)到設(shè)定值?;鶎挾圈膉的調(diào)整近似于RBF神經(jīng)網(wǎng)絡(luò)中響應(yīng)域σj的調(diào)整,基寬度δj的調(diào)整規(guī)則是通過調(diào)整基寬度δj使樣本點(diǎn)相鄰的神經(jīng)元之間互不干擾。因此,網(wǎng)絡(luò)中響應(yīng)域σj的調(diào)整方式為
當(dāng)外部向量進(jìn)入網(wǎng)絡(luò)后,首先將其與每個(gè)神經(jīng)元保存的樣本向量計(jì)算曼哈頓距離,將得到的距離值與神經(jīng)元σj做比較,如果距離值小于σj,則神經(jīng)元輸出其類別值。
定義一個(gè)訓(xùn)練樣本集合D={1P,2P,···,kP},其中:
權(quán)值wj則采用最小均方算法(LMS)進(jìn)行調(diào)整,即
網(wǎng)絡(luò)關(guān)系為
將式(12)代入式(13)得
kX表示第k個(gè)外部輸入訓(xùn)練向量;kTCat表示第k個(gè)訓(xùn)練向量對(duì)應(yīng)的類別值
網(wǎng)絡(luò)整體函數(shù)關(guān)系為
神經(jīng)元函數(shù)關(guān)系為
神經(jīng)網(wǎng)絡(luò)識(shí)別結(jié)果為
當(dāng)輸入X/=Cj時(shí),
將式(20)代入式(14)中,得
對(duì)改進(jìn)RBF神經(jīng)網(wǎng)絡(luò)硬件化時(shí),首先要決定樣本相似性計(jì)算的方法和如何對(duì)輸出層進(jìn)行快速排序,本文在相似性計(jì)算中采用曼哈頓距離,而對(duì)于結(jié)果的快速排序問題本文提出一種基于位比較的快速排序電路。
4.1.1 相似性計(jì)算
外部向量進(jìn)入網(wǎng)絡(luò)后與網(wǎng)絡(luò)內(nèi)部的原始樣本向量進(jìn)行相似性計(jì)算,RBF神經(jīng)網(wǎng)絡(luò)計(jì)算歐幾里得距離,針對(duì)歐幾里得距離運(yùn)算量大的問題,本文用曼哈頓距離替代歐幾里得距離進(jìn)行相似性計(jì)算,可表示為
4.1.2 輸出排序計(jì)算
網(wǎng)絡(luò)計(jì)算外部輸入和原始樣本向量的曼哈頓距離后,輸出層要對(duì)大量距離值進(jìn)行排序輸出,并使用經(jīng)典的冒泡法等進(jìn)行排序。當(dāng)數(shù)據(jù)過多時(shí),典型的排序算法在實(shí)現(xiàn)時(shí)存在資源占用大、運(yùn)算時(shí)間久的問題。
改進(jìn)RBF網(wǎng)絡(luò)采用的排序輸出方式為
本文采用圖5所示電路來實(shí)現(xiàn)對(duì)無限值的迅速排序,首先在寄存器RX中存儲(chǔ)距離值(X表示1, 2,3, ···),將R中的數(shù)據(jù)經(jīng)過處理P傳遞給寄存器RX1,之后從RX1中低位開始讀取數(shù)據(jù)到寄存器R,當(dāng)R中任意一個(gè)位有1出現(xiàn)時(shí)停止取數(shù),出現(xiàn)1的位數(shù)所對(duì)應(yīng)的距離即為最小距離。
圖5 快速排序電路
4.2.1 算法狀態(tài)機(jī)
FPGA實(shí)現(xiàn)改進(jìn)RBF神經(jīng)網(wǎng)絡(luò)算法最重要的準(zhǔn)備工作是將算法轉(zhuǎn)換為算法狀態(tài)機(jī)(ASM)。本文設(shè)計(jì)了一種新的系統(tǒng)算法狀態(tài)機(jī),如圖6所示。
圖6可以看出,系統(tǒng)包括6種狀態(tài),系統(tǒng)運(yùn)行之后會(huì)永遠(yuǎn)處于6個(gè)狀態(tài)之一,符合硬件電路工作特性。
圖6 系統(tǒng)算法狀態(tài)機(jī)
4.2.2 模塊分割
針對(duì)在FPGA實(shí)現(xiàn)過程中容易丟失設(shè)計(jì)功能的問題,本系統(tǒng)采用模塊分割的方式對(duì)系統(tǒng)模塊自上而下進(jìn)行描述。系統(tǒng)模塊包括控制單元和數(shù)據(jù)路徑,數(shù)據(jù)通過控制單元向網(wǎng)絡(luò)發(fā)出指令,網(wǎng)絡(luò)通過控制總線將命令傳送給神經(jīng)元,神經(jīng)元接收到信號(hào)后從數(shù)據(jù)總線接收數(shù)據(jù)進(jìn)行處理,將處理結(jié)果送回?cái)?shù)據(jù)總線。
為驗(yàn)證改進(jìn)RBF神經(jīng)網(wǎng)絡(luò)圖像識(shí)別算法的性能,本文分別在MNIST[9], CIFAR-10[10]和VOC2012[11]數(shù)據(jù)集上與LeNet-5, AlexNet和VGG16網(wǎng)絡(luò)模型進(jìn)行準(zhǔn)確率及平均識(shí)別時(shí)間的對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)中采用Tensorflow作為深度學(xué)習(xí)框架,硬件環(huán)境包括一臺(tái)CPU為I7-8750的筆記本電腦,其主頻為2.20 GHz內(nèi)存為8GB,顯卡為NVIDIA GTX 1050TI;軟件采用Visual Stadio 2017,并使用Python語言進(jìn)行實(shí)現(xiàn),實(shí)驗(yàn)結(jié)果如表1–表3所示。
表1 測(cè)試數(shù)據(jù)集為MNIST時(shí)不同網(wǎng)絡(luò)模型對(duì)比實(shí)驗(yàn)
表2 測(cè)試數(shù)據(jù)集為CIFAR-10時(shí)不同網(wǎng)絡(luò)模型對(duì)比實(shí)驗(yàn)
表3 測(cè)試數(shù)據(jù)集為VOC2012時(shí)不同網(wǎng)絡(luò)模型對(duì)比實(shí)驗(yàn)
從上述表格中可以看出,在3種不同數(shù)據(jù)集中VGG16網(wǎng)絡(luò)識(shí)別準(zhǔn)確率最高,但是由于網(wǎng)絡(luò)自身參數(shù)量大網(wǎng)絡(luò)平均識(shí)別時(shí)間最長;而LeNet-5和AlexNet網(wǎng)絡(luò)平均識(shí)別時(shí)間較VGG16網(wǎng)絡(luò)縮短2~3 s,但是準(zhǔn)確率較VGG16網(wǎng)絡(luò)降低3%~6%。而本文提出的改進(jìn)RBF神經(jīng)網(wǎng)絡(luò)算法在不同數(shù)據(jù)集中準(zhǔn)確率優(yōu)于LeNet-5和AlexNet,并且與VGG16網(wǎng)絡(luò)持平,但是在平均識(shí)別時(shí)間上縮短了50%。因此本文提出的改進(jìn)RBF神經(jīng)網(wǎng)絡(luò)算法在識(shí)別精度以及識(shí)別時(shí)間上均有一定的提升。
本文針對(duì)視頻檢索任務(wù),采用ASIC電路實(shí)現(xiàn)系統(tǒng)。并與基于DSP芯片的圖像識(shí)別系統(tǒng)進(jìn)行對(duì)比試驗(yàn),設(shè)定對(duì)比實(shí)驗(yàn)的環(huán)境為:(1)樣本庫中包含10000個(gè)256 Byte大小的樣本;(2)外部輸入一個(gè)256 Byte大小的數(shù)據(jù);(3)目標(biāo)是計(jì)算該外部數(shù)據(jù)和樣本庫中每個(gè)樣本的差值;(4)輸出結(jié)果包含樣本名和差值;(5)要求輸出結(jié)果找出差異值最小的樣本以及相應(yīng)的差值。
設(shè)定上述環(huán)境后,基于DSP圖像識(shí)別系統(tǒng)和本文提出系統(tǒng)的各項(xiàng)工作參數(shù)計(jì)算結(jié)果如表4所示。
從表4可以看出,本文所開發(fā)的系統(tǒng)算術(shù)邏輯部件數(shù)量(ALU)達(dá)到1024個(gè),相比較于基于DSP芯片的系統(tǒng)ALU數(shù)量有明顯提升。由于ALU數(shù)量的提升,系統(tǒng)每個(gè)周期進(jìn)行加法運(yùn)算的次數(shù)達(dá)到2048次,計(jì)算的數(shù)據(jù)量達(dá)到2048 Byte。系統(tǒng)完成所有樣本的時(shí)間為165 μs,較DSP芯片減少了60%左右。
表4 基于DSP圖像識(shí)別系統(tǒng)與本文提出圖像識(shí)別系統(tǒng)性能比較
本文提出一套基于FPGA的改進(jìn)RBF神經(jīng)網(wǎng)絡(luò)圖像識(shí)別系統(tǒng),其中算法引入了RCE和KNN算法思想將乘法運(yùn)算改為加法運(yùn)算。算法部分與LeNet-5,AlexNet和VGG16網(wǎng)絡(luò)模型進(jìn)行對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果證明本文所提出算法在識(shí)別準(zhǔn)確率優(yōu)于LeNet-5和AlexNet網(wǎng)絡(luò),并與VGG16網(wǎng)絡(luò)準(zhǔn)確率持平,而平均識(shí)別時(shí)間比3種網(wǎng)絡(luò)模型縮短了50%;硬件部分采用FPGA實(shí)現(xiàn)特征提取過程,圖像識(shí)別過程采用ASIC電路實(shí)現(xiàn),最終實(shí)現(xiàn)圖像識(shí)別功能。通過與基于DSP芯片的圖像識(shí)別系統(tǒng)進(jìn)行比較,本文提出的系統(tǒng)在同為1024張圖片的前提下,識(shí)別時(shí)間可縮短60%左右。
今后研究的方向有以下幾個(gè):
(1) 改進(jìn)RBF神經(jīng)網(wǎng)絡(luò)雖然簡(jiǎn)化了網(wǎng)絡(luò)結(jié)構(gòu),但是網(wǎng)絡(luò)內(nèi)部神經(jīng)元數(shù)量眾多,需要進(jìn)一步降低神經(jīng)元資源的消耗,即如何在保證識(shí)別準(zhǔn)確的條件下讓神經(jīng)元用量達(dá)到最小。
(2) 提高神經(jīng)元計(jì)算能力,隨著集成電路工藝的提升,神經(jīng)元可以擁有更高量級(jí)的運(yùn)算位寬,這對(duì)于神經(jīng)網(wǎng)絡(luò)硬件化性能的提升有著不可小覷的作用。
(3) 目前圖像識(shí)別算法發(fā)展快、種類多,目前沒有明確的硬性指標(biāo)來評(píng)估算法的優(yōu)劣。未來是否可以在設(shè)計(jì)方案相同的情況下,通過指標(biāo)對(duì)算法硬件實(shí)現(xiàn)的復(fù)雜度進(jìn)行評(píng)估,還需要進(jìn)一步研究。
總之,利用FPGA進(jìn)行神經(jīng)網(wǎng)絡(luò)算法硬件化還有巨大的上升空間,對(duì)于網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)化、編譯器設(shè)計(jì)具有很高的研究價(jià)值。