魏 東 董博晨 劉亦青
①(北京建筑大學電氣與信息工程學院 北京 100044)
②(北京市科學技術委員會建筑大數據智能處理方法研究北京市重點實驗室 北京 100044)
③(北京亞鼎智能技術有限公司 北京 100071)
神經網絡已應用于多個領域,例如圖像識別、語音識別、數據挖掘、智能機器人等。神經網絡利用自身強大的學習能力,通過調整神經元之間的連接權重來擬合復雜的高維映射關系[1]。目前,在圖像識別中主要采用以下幾種深度學習模型進行訓練,包括深層置信網絡(Deep Belief Network, DBN)[2]、卷積神經網絡(Convolutional Neural Network,CNN)、循環神經網絡(Recurrent Neural Network,RNN)[3]、生成式對抗網絡(Generative Adversarial Network, GAN)[4]以及膠囊網絡(Capsule Network,CapsNet)[5]。
盡管神經網絡在功能上可以滿足圖像識別的需要,但是目前圖像識別大多采用軟件實現,無法體現神經網絡并行處理的優點,并且CPU或GPU在計算能力上有限,限制了神經網絡結構的復雜性[6]。為解決上述問題,本文提出一種硬件資源占用率低的改進RBF神經網絡算法,并采用硬件化的改進RBF神經網絡實現了圖像特征提取和圖像識別,其中特征提取采用FPGA實現,圖像識別采用ASIC電路實現。RBF神經網絡具有基函數運算復雜、中間層到輸出層的分類運算量大的缺點,本文將RCE(Reilly, Cooper和Elbaum)算法和K最近鄰(K-Nearest Neighbor, KNN)算法思想引入到RBF網絡中,將乘法運算改為加法運算,以減低網絡的運算量,便于硬件實現,同時采用最小均方差算法(Least Mean Square, LMS)對權值進行調整,保證了網絡的收斂性。實驗結果表明改進RBF神經網絡算法在不同數據集中識別準確率均高于LeNet-5和AlexNet,并與VGG16準確率持平,而平均識別時間較3種網絡模型均縮短50%。本文提出的系統與基于DSP芯片的圖像識別系統相比,在同為1024張相同數據集的前提下,識別時間可以縮短60%。
傳統圖像識別技術中的圖像預處理是對圖像的特征進行增強,根據特征差異對圖像進行分割,將要識別的目標從整個圖像中分離,再針對分離出的目標進行特征提取[7]。與傳統技術不同的是,本文采用基于FPGA的圖像掃描引擎代替傳統結構中圖像預處理等步驟,對圖像進行全局特征提取,特征識別采用ASIC電路實現,系統結構如圖1所示。

圖1 基于改進RBF神經網絡電路的圖像識別系統架構
系統每次處理的數據量為

識別系統包含學習和識別兩個部分,其中系統學習部分主要包括圖像預處理以及學習環境設置。當一張圖片輸入進學習系統中首先被轉換成Bitmap單色灰度圖,之后需要手動截取取景范圍。學習系統支持對圖片進行截取、放大、縮小、平移等操作,詳細描述如圖2所示。

圖2 多目標識別系統學習流程
系統識別部分主要包括圖像輸入、圖像預處理和系統識別參數設定。用戶在圖中確定識別目標后,可對識別結果進行邏輯組合,使得識別結果更加精準。
RBF, RCE和KNN網絡都具有描述樣本原型的特征向量,輸入層將新數據與樣本原型特征向量進行差異值計算,然后輸出層根據差異值按照一定規則輸出類別。3種網絡的區別為外部數據和樣本原型向量差異值計算方式不同,RBF神經網絡是疊加外部數據和原型樣本間的差異值[8],RCE算法在中間層計算曼哈頓距離,KNN算法依靠數據點周圍臨近樣本進行類別劃分。本文將RCE算法和KNN算法引入RBF神經網絡,將乘法運算改為加法運算,改進后網絡結構如圖3所示,其中外部輸入矢量用V表示,樣本矢量用S表示。

圖3 改進RBF神經網絡模型
輸入層到中間層的連接權值為Wij,令Wij=Sj。外部矢量V進入網絡后,進行如下計算:

式(2)計算輸入向量與樣本原型向量之間的相似程度,如果V和某個樣本的相似度足夠高,則令

當λj ≤1時,中間層第j個神經元就會處于激活狀態。
網絡整體輸入輸出關系為

改進RBF神經網絡和RBF神經網絡結構相似,輸入層和中間層為全連接,中間層的輸入輸出關系為

其中,oj,x1,x2,cj1,cj2,σj,dj, Distj分別代表中間層神經元的輸出、第1維度值、第2維度值、樣本向量第1維度值、樣本向量第2維度值、響應閾值、函數值和曼哈頓距離。
神經元的輸出如式(8),式(9)和式(10)所示:

其中,rank(·)––升序排隊函數,根據Dist的大小將輸入o從小到大依次排序。
網絡的學習使用監督學習的方法,必須具備一組訓練樣本數據對集,訓練向量X(k)和X(k)對應的目標值d(k)組成訓練樣本數據。將X(k)和d(k)輸入到系統中,通過調整參數使得目標和輸出值之間的誤差e達到某一閾值,如圖4所示。

圖4 改進RBF神經網絡學習模型
網絡中用X(k)作為中間層的樣本向量,通過調整基寬度δj和中連接權值wj,使網絡的輸出y趨近于目標d,使誤差達到設定值。基寬度δj的調整近似于RBF神經網絡中響應域σj的調整,基寬度δj的調整規則是通過調整基寬度δj使樣本點相鄰的神經元之間互不干擾。因此,網絡中響應域σj的調整方式為

當外部向量進入網絡后,首先將其與每個神經元保存的樣本向量計算曼哈頓距離,將得到的距離值與神經元σj做比較,如果距離值小于σj,則神經元輸出其類別值。
定義一個訓練樣本集合D={1P,2P,···,kP},其中:

權值wj則采用最小均方算法(LMS)進行調整,即

網絡關系為

將式(12)代入式(13)得

kX表示第k個外部輸入訓練向量;kTCat表示第k個訓練向量對應的類別值
網絡整體函數關系為

神經元函數關系為

神經網絡識別結果為

當輸入X/=Cj時,

將式(20)代入式(14)中,得

對改進RBF神經網絡硬件化時,首先要決定樣本相似性計算的方法和如何對輸出層進行快速排序,本文在相似性計算中采用曼哈頓距離,而對于結果的快速排序問題本文提出一種基于位比較的快速排序電路。
4.1.1 相似性計算
外部向量進入網絡后與網絡內部的原始樣本向量進行相似性計算,RBF神經網絡計算歐幾里得距離,針對歐幾里得距離運算量大的問題,本文用曼哈頓距離替代歐幾里得距離進行相似性計算,可表示為


4.1.2 輸出排序計算
網絡計算外部輸入和原始樣本向量的曼哈頓距離后,輸出層要對大量距離值進行排序輸出,并使用經典的冒泡法等進行排序。當數據過多時,典型的排序算法在實現時存在資源占用大、運算時間久的問題。
改進RBF網絡采用的排序輸出方式為

本文采用圖5所示電路來實現對無限值的迅速排序,首先在寄存器RX中存儲距離值(X表示1, 2,3, ···),將R中的數據經過處理P傳遞給寄存器RX1,之后從RX1中低位開始讀取數據到寄存器R,當R中任意一個位有1出現時停止取數,出現1的位數所對應的距離即為最小距離。

圖5 快速排序電路
4.2.1 算法狀態機
FPGA實現改進RBF神經網絡算法最重要的準備工作是將算法轉換為算法狀態機(ASM)。本文設計了一種新的系統算法狀態機,如圖6所示。
圖6可以看出,系統包括6種狀態,系統運行之后會永遠處于6個狀態之一,符合硬件電路工作特性。

圖6 系統算法狀態機
4.2.2 模塊分割
針對在FPGA實現過程中容易丟失設計功能的問題,本系統采用模塊分割的方式對系統模塊自上而下進行描述。系統模塊包括控制單元和數據路徑,數據通過控制單元向網絡發出指令,網絡通過控制總線將命令傳送給神經元,神經元接收到信號后從數據總線接收數據進行處理,將處理結果送回數據總線。
為驗證改進RBF神經網絡圖像識別算法的性能,本文分別在MNIST[9], CIFAR-10[10]和VOC2012[11]數據集上與LeNet-5, AlexNet和VGG16網絡模型進行準確率及平均識別時間的對比實驗。實驗中采用Tensorflow作為深度學習框架,硬件環境包括一臺CPU為I7-8750的筆記本電腦,其主頻為2.20 GHz內存為8GB,顯卡為NVIDIA GTX 1050TI;軟件采用Visual Stadio 2017,并使用Python語言進行實現,實驗結果如表1–表3所示。

表1 測試數據集為MNIST時不同網絡模型對比實驗

表2 測試數據集為CIFAR-10時不同網絡模型對比實驗

表3 測試數據集為VOC2012時不同網絡模型對比實驗
從上述表格中可以看出,在3種不同數據集中VGG16網絡識別準確率最高,但是由于網絡自身參數量大網絡平均識別時間最長;而LeNet-5和AlexNet網絡平均識別時間較VGG16網絡縮短2~3 s,但是準確率較VGG16網絡降低3%~6%。而本文提出的改進RBF神經網絡算法在不同數據集中準確率優于LeNet-5和AlexNet,并且與VGG16網絡持平,但是在平均識別時間上縮短了50%。因此本文提出的改進RBF神經網絡算法在識別精度以及識別時間上均有一定的提升。
本文針對視頻檢索任務,采用ASIC電路實現系統。并與基于DSP芯片的圖像識別系統進行對比試驗,設定對比實驗的環境為:(1)樣本庫中包含10000個256 Byte大小的樣本;(2)外部輸入一個256 Byte大小的數據;(3)目標是計算該外部數據和樣本庫中每個樣本的差值;(4)輸出結果包含樣本名和差值;(5)要求輸出結果找出差異值最小的樣本以及相應的差值。
設定上述環境后,基于DSP圖像識別系統和本文提出系統的各項工作參數計算結果如表4所示。
從表4可以看出,本文所開發的系統算術邏輯部件數量(ALU)達到1024個,相比較于基于DSP芯片的系統ALU數量有明顯提升。由于ALU數量的提升,系統每個周期進行加法運算的次數達到2048次,計算的數據量達到2048 Byte。系統完成所有樣本的時間為165 μs,較DSP芯片減少了60%左右。

表4 基于DSP圖像識別系統與本文提出圖像識別系統性能比較
本文提出一套基于FPGA的改進RBF神經網絡圖像識別系統,其中算法引入了RCE和KNN算法思想將乘法運算改為加法運算。算法部分與LeNet-5,AlexNet和VGG16網絡模型進行對比實驗,實驗結果證明本文所提出算法在識別準確率優于LeNet-5和AlexNet網絡,并與VGG16網絡準確率持平,而平均識別時間比3種網絡模型縮短了50%;硬件部分采用FPGA實現特征提取過程,圖像識別過程采用ASIC電路實現,最終實現圖像識別功能。通過與基于DSP芯片的圖像識別系統進行比較,本文提出的系統在同為1024張圖片的前提下,識別時間可縮短60%左右。
今后研究的方向有以下幾個:
(1) 改進RBF神經網絡雖然簡化了網絡結構,但是網絡內部神經元數量眾多,需要進一步降低神經元資源的消耗,即如何在保證識別準確的條件下讓神經元用量達到最小。
(2) 提高神經元計算能力,隨著集成電路工藝的提升,神經元可以擁有更高量級的運算位寬,這對于神經網絡硬件化性能的提升有著不可小覷的作用。
(3) 目前圖像識別算法發展快、種類多,目前沒有明確的硬性指標來評估算法的優劣。未來是否可以在設計方案相同的情況下,通過指標對算法硬件實現的復雜度進行評估,還需要進一步研究。
總之,利用FPGA進行神經網絡算法硬件化還有巨大的上升空間,對于網絡結構的優化、編譯器設計具有很高的研究價值。