章 磊,段莉莉,索珈順
(1.湖北理工學院 a.電氣與電子信息工程學院,b.智能輸送技術與裝備湖北省重點實驗室,湖北 黃石 435003;2.湖北師范大學 計算機與信息工程學院,湖北 黃石 435002)
近年來,手寫數字圖像識別系統(tǒng)的應用越來越廣泛,例如手寫數字統(tǒng)計、試卷分數掃描等[1]。目前,手寫數字識別大多是基于云計算實現,存在網絡延遲、數據泄露等問題,不能滿足對實時性和安全性要求較高的應用環(huán)境[2]。隨著邊緣智能(Edge Intelligence, EI)技術的發(fā)展,部署在邊緣設備上的實時手寫數字系統(tǒng)不受傳輸網絡的限制,且數據可以不上傳到云端,在保證實時性的同時又保護了數據的安全,可以較好地滿足對實時性和安全性要求較高的手寫圖像識別應用環(huán)境。Zhou等[3]描述了EI的發(fā)展以及邊緣端在人工智能(AI)領域的重要性。Li等[4]提出了用Edgent框架來優(yōu)化深度神經網絡在邊緣設備上的推理。He等[5]提出了一種Resnet網絡模型,利用Residual結構解決了當模型層次加深時錯誤率提高的“退化”問題。Howard等[6]提出了一種專為移動設備設計的Mobilenet網絡模型,通過可分離卷積大幅減少了DNN的計算量。
在低性能的邊緣計算設備上能否有效地運行手寫數字圖片識別系統(tǒng)仍是一個亟待解決的問題。因此,本文設計一個輕量級手寫數字識別神經網絡,并基于其構建一個手寫數字識別系統(tǒng),將系統(tǒng)運行在低成本的邊緣計算設備Jetson Nano上,以期能夠滿足低成本邊緣計算設備的需求,為其他邊緣計算設備上的AI應用提供經驗。
基于邊緣計算設備的實時手寫數字圖像識別系統(tǒng)由圖片預處理模塊、邊緣設備上的神經網絡推斷模塊和圖片后處理模塊組成。圖片預處理模塊將輸入圖片中數字的位置等有效信息提取出來,以便神經網絡推斷。在圖片推斷過程中,由于邊緣計算設備的計算能力低、儲存空間有限,目前主流的圖像識別神經網絡無法運行,因此專門設計了一個輕量級神經網絡,并選擇合適的邊緣部署框架,以保證系統(tǒng)的AI性能。圖片后處理模塊則將預測結果、位置信息等在圖片中標出,并最終輸出可視化的視頻流。系統(tǒng)處理流程如圖1所示。
圖1 系統(tǒng)處理流程
為解決實際拍攝到的手寫數字圖片樣式與訓練模型使用的MNIST數據集中圖片樣式不同而導致識別不準確的問題,首先對圖片進行預處理,將拍攝到的圖片處理為類似MNIST數據集中圖像的樣式,然后再送入神經網絡進行推斷。圖片處理步驟如下:①從灰度圖讀取圖片,并縮放為100×100的分辨率,從而加快后續(xù)圖像處理速度;②對圖像進行二值化處理;③提取出圖像中數字部分的有效區(qū)域,并將其裁剪出來;④將裁剪出來的區(qū)域中長邊縮放為18個像素,短邊等比例縮放,并在其周圍填充白色像素點,使圖像變?yōu)?8×28的分辨率;⑤將像素點顏色反轉,生成類似于MNIST數據集中的圖像樣式。圖片預處理過程如圖2所示。
圖2 圖片預處理過程
為適應邊緣計算設備的計算能力弱、存儲量小等特點,在激活函數、模型參數、模型泛化能力、模型訓練等方面對經典卷積神經網絡(CNN)模型LeNet-5[7]進行改進,提出一種用于手寫數字識別的改進型神經網絡模型LeNet-C。改進后的神經網絡模型包括卷積層1(c1)、池化層1(p1)、卷積層2(c2)、池化層2(p2)、全連接層1(f1)、全連接層2(f2)和輸出層(out)。利用奇異值分解(SVD)的方式壓縮模型,以減少模型的計算量和模型大小。LeNet-C網絡模型結構如圖3所示。
圖3 LeNet-C網絡模型結構
利用ReLu激活函數替代LeNet-5中的Sigmoid激活函數,避免指數預算和梯度消失,提升計算速度。對模型參數做如下優(yōu)化:①將卷積核大小減小為3×3,并減少1層卷積,以加速網絡在卷積操作時的速度;②增加卷積層(c1,c2)的通道數,以提升網絡的特征提取能力;③增加1層全連接層,以提升網絡的分類能力。改進后的模型參數見表1。
表1 改進后的模型參數
為提高模型的泛化能力,在訓練時加入L2正則化和“Dropout”[8]方法,以提升模型面對現實數據時的分類正確性。訓練時采用指數衰減學習率的方法,以使模型更容易訓練到最優(yōu)參數。
邊緣計算設備儲存空間有限,且受傳輸網絡帶寬的限制,為使模型更適合邊緣平臺,需要在精確度允許的范圍內對模型進行壓縮。LeNet-C模型各層參數數量見表2。其中,f1層參數的數量占整個模型參數數量的99.52%,因此,只需對f1層進行壓縮,即可有效減小模型的大小。
表2 LeNet-C模型各層參數數量
借鑒奇異值分解(SVD)的思想,對模型進行壓縮,可在保留模型大部分信息的同時,有效減小模型的大小。假設對任意實矩陣,利用SVD可被分解為:
Wm×n=Um×mSm×nVTn×n
(1)
取最大的前k個奇異值(σ1,σ2,…,σk)近似地還原矩陣Wm×n,即可對矩陣Wm×n進行壓縮:
(2)
未壓縮時的計算過程為Y=XW,通過奇異值分解,將矩陣W分解為矩陣U,S,V后,再將S和V相乘得到T,則計算過程變?yōu)镸=XUT。壓縮之后,在計算方面,增加了1次矩陣乘法運算;在參數數量方面,由mn變?yōu)榱薽k+kn=k(m+n),空間復雜度由O(mn)變?yōu)榱薕(m+n),只要選取不同的k值,即可以不同的壓縮率對矩陣Wm×n進行壓縮。SVD壓縮模型示意圖如圖4所示。
圖4 SVD壓縮模型示意圖
采用MNIST手寫數字數據集對模型進行訓練,訓練批量大小batch_size=100,學習率初始值μ′=0.05,學習率衰減率r=0.99,正則化率R=0.0001,損失函數采用交叉熵定義。經過30 000輪訓練后,損失收斂,訓練完成。對比LeNet-C與其他主流神經網絡在邊緣計算設備Jetson Nano上的性能,推斷框架為Tensorflow。各神經網絡在Jetson Nano上的性能對比見表3。由表3可以看出,在精確度相差不多的情況下,LeNet-C的推斷時間和模型大小都大大優(yōu)于其他模型,并且準確率達到了99.37%,更適合應用在邊緣計算設備上。
表3 各神經網絡在Jetson Nano上的性能對比
為找到合適的模型壓縮率,對f1層保留的參數數量分別設置為原來的75%,50%,25%,20%,15%,10%,5%進行實驗,比較壓縮后模型在測試集上的精確度以及在Jetson Nano上運行1 000次的推斷時間和模型大小。模型壓縮后性能比較見表4。由表4可以看出,隨著模型壓縮程度增加,推斷時間逐漸減少,精確度也逐漸下降。這是因為模型的參數主要集中在f1層,所以模型的大小也基本隨著模型壓縮程度的增加而等比例減小。為了保證系統(tǒng)的實用性,需要在精度、推斷速度以及模型大小之間取舍。本文選擇f1層保留程度為15%的模型進行部署,其精確度相比原模型只減小了3.36%,但推斷時間為原來的87.54%,減少了12.46%;模型大小為原來的16.26%,減小了83.74%。
表4 模型壓縮后性能比較
在邊緣計算設備Jetson Nano[9]上,進行模型部署實驗,3種框架部署模型對比結果見表5。由表5可以看出,OpenCV和TensorRT相比于Tensorflow擁有更快的推斷速度和更小的內存占用。同時,OpenCV比TensorRT的推斷速度快了近1倍,內存占用僅為其8.08%。實驗結果表明,OpenCV更適合部署本文所提出的LeNet-C網絡模型,其在邊緣計算設備上具有更好的性能。
表5 3種框架部署模型對比結果
為檢驗系統(tǒng)性能,分別利用不同分辨率的輸入視頻流測試系統(tǒng)實時性。不同分辨率輸入視頻的FPS見表6。由表6可以看出,本文提出的系統(tǒng)在性能較低的邊緣計算設備上對不同分辨率輸入的視頻都有良好的適應性,其FPS能較好地滿足系統(tǒng)需求。
表6 不同分辨率輸入視頻的FPS
同時,通過表5的推斷時間和系統(tǒng)運行時的FPS分析Jetson Nano上的時間消耗,發(fā)現其計算瓶頸主要集中在圖像處理方面。這是因為其CPU能力較弱,導致了圖像處理的時間較長;而在神經網絡推斷方面,因為本文提出的系統(tǒng)是利用GPU推斷,其消耗的時間遠遠低于圖像處理。檢驗結果證明了在Jetson Nano這類邊緣計算設備上運行一些簡單的神經網絡,其GPU性能已經可以滿足需求。
設計了一種適用于邊緣計算設備的手寫數字識別系統(tǒng)。為了保證其在邊緣計算設備上的性能,在圖像預處理、神經網絡的設計、模型推斷框架選擇等方面做了一些改進,保證了系統(tǒng)的實用性。分析實驗結果可知,利用類似于奇異值分解的方式來對神經網絡全連接層進行加速,其在邊緣設備上能獲得更好的性能。在邊緣設備上使用Open CV作為網絡推斷框架會有更好的效果。在Jetson Nano這類低成本的邊緣計算設備中執(zhí)行輕量級AI任務時CPU的限制要大于GPU。