武文娟,李 勇
(國防科技大學(xué) 計(jì)算機(jī)學(xué)院,長沙 410073)
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNNs)在計(jì)算機(jī)視覺領(lǐng)域取得了巨大的成功,顯著改善了分類問題的現(xiàn)狀,如對象[1-3],場景[4,5],動作[6,7]等.ILSVRC[8]作為最具影響力圖像分類的競賽,進(jìn)一步推動了深度學(xué)習(xí)各領(lǐng)域的發(fā)展.因此,接連涌現(xiàn)了Lenet[9]、AlexNet[10]、VGG[11]、Googlenet[12]、Resnet[13]等競賽中獲得各界冠軍和亞軍的經(jīng)典網(wǎng)絡(luò).除此以外,由于卷積神經(jīng)網(wǎng)絡(luò)可以模仿生物視神經(jīng)的行為實(shí)現(xiàn)較高的精度,因此也被廣泛的應(yīng)用于圖像識別領(lǐng)域.人臉識別作為圖像識別的一種其主要適用于身份認(rèn)證,通過區(qū)分不同的人臉實(shí)例,達(dá)到能夠識別或驗(yàn)證圖像或視頻中主體身份的目的.隨著人臉識別在嵌入式領(lǐng)域應(yīng)用越來越廣泛,人臉識別算法的部署成為首個(gè)需要重點(diǎn)考慮的問題.這是因?yàn)樯窠?jīng)網(wǎng)絡(luò)在追求越來越高的精度的同時(shí),其深度也在逐漸增加,網(wǎng)絡(luò)的結(jié)構(gòu)也越來越復(fù)雜,與此同時(shí)對于計(jì)算和存儲提出的要求越來越高.然而在嵌入式端很難部署這樣大而深的卷積神經(jīng)網(wǎng)絡(luò),于是設(shè)計(jì)輕量級的神經(jīng)網(wǎng)絡(luò)的成為了一種新的趨勢.同時(shí)輕量級的人臉識別算法面臨著巨大的挑戰(zhàn),犧牲了網(wǎng)絡(luò)的深度和網(wǎng)絡(luò)層的大小,客觀上來說難以在人臉識別的準(zhǔn)確度和速度上實(shí)現(xiàn)雙高.
一些高效的神經(jīng)網(wǎng)絡(luò)被提出來用于視覺領(lǐng)域,如Squeezenet[14]、Shufflenet[15,16]等輕量級神經(jīng)網(wǎng)絡(luò).本文提出了一種輕量級神經(jīng)網(wǎng)絡(luò)——Emfacenet,并根據(jù)人臉識別算法結(jié)合當(dāng)前新型輕量級的神經(jīng)網(wǎng)絡(luò)的優(yōu)點(diǎn),設(shè)計(jì)出一種準(zhǔn)確性和復(fù)雜性趨于平衡的網(wǎng)絡(luò)結(jié)構(gòu).Emfacenet參考Resnet中所提出的殘差操作將其用于構(gòu)建網(wǎng)絡(luò)主體,并且在設(shè)計(jì)網(wǎng)絡(luò)過程中利用倒置殘差結(jié)構(gòu)對小通道數(shù)特征使用廉價(jià)的特征變化升維增加特征多樣性,然后利用深度卷積完成特征交互.同時(shí)在訓(xùn)練過程利用Arcface損失函數(shù)來計(jì)算模型預(yù)測值和真實(shí)值的差異,進(jìn)一步增強(qiáng)類內(nèi)的緊湊性以及類間的差異性,從而提高模型的泛化能力.該神經(jīng)網(wǎng)絡(luò)模型的大小僅為138.1KB,同時(shí)性能和精度都可以滿足嵌入式系統(tǒng)的要求.
近年來一些經(jīng)典的輕量級神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)網(wǎng)絡(luò)的優(yōu)化加速,其設(shè)計(jì)的主要思想不同于傳統(tǒng)的模型壓縮方法,而是采用效率更高的計(jì)算方式來減少參數(shù)量,相應(yīng)可以減少參數(shù)的計(jì)算和存儲,以滿足嵌入式端對于圖像識別速度的要求.Mobilenet[17-19]系列是Google團(tuán)隊(duì)提出一種輕量級神經(jīng)網(wǎng)絡(luò),其主要思想是將神經(jīng)網(wǎng)絡(luò)中傳統(tǒng)的標(biāo)準(zhǔn)卷積替換成深度可分離卷積,后續(xù)改進(jìn)主要是在前期網(wǎng)絡(luò)的基礎(chǔ)上分別引入了倒殘差結(jié)構(gòu)以及線性瓶頸層結(jié)構(gòu),接著利用神經(jīng)架構(gòu)搜索(NAS)構(gòu)建更加高效的網(wǎng)絡(luò).Shufflenet[15,16]系列主要采用組卷積和通道洗牌的方式減少參數(shù)以及運(yùn)算量,除此以外,Shufflenet從內(nèi)存訪問代價(jià)出發(fā),充分的挖掘GPU并行性,以減少網(wǎng)絡(luò)的運(yùn)行時(shí)間,從而提高模型的效率.
針對人臉識別來說,人臉識別算法的完善和發(fā)展主要基于3個(gè)方面:1)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì);2)損失函數(shù)的設(shè)計(jì);3)使用的人臉識別數(shù)據(jù)集.Tan等人[20]利用神經(jīng)結(jié)構(gòu)搜索設(shè)計(jì)了新的基線網(wǎng)絡(luò)EfficientNets,并將其放大獲得一系列的模型.Felea等人[21]引入了Slim-Module這一微架構(gòu),并設(shè)計(jì)了一種輕量級的深度神經(jīng)網(wǎng)絡(luò) Slim-CNN,該神經(jīng)網(wǎng)絡(luò)主要用于人臉屬性的檢測.Chen等人[22]提出了一種非常高效的CNN模型-Mobilefacenets,它可以顯著提高運(yùn)行效率,主要用于人臉驗(yàn)證.Liu等人[23]提出了一種深度球面嵌入式的人臉識別算法,該算法的核心是提出了一種A-Softmax損失,使卷積神經(jīng)網(wǎng)絡(luò)能夠?qū)W習(xí)角度鑒別特征,該損失函數(shù)的設(shè)計(jì)可以看作是對超球面流形施加區(qū)別性的約束.Deng等人[24]提出一種加性角邊緣損失函數(shù),以獲得高分辨特征的人臉識別.Wang等人[25]提出了一種新的損失函數(shù)—大余弦損耗,通過引入余弦裕度項(xiàng)實(shí)現(xiàn)角度空間的決策裕度最大化.Guo等人[26]提出了一種MS-Cele-1M的人臉圖像識別的數(shù)據(jù)集,有助于消歧和提高識別準(zhǔn)確率來解決計(jì)算機(jī)視覺的分類問題.Cao等人[27]介紹了一種大規(guī)模人臉數(shù)據(jù)級VGGFACE2在人臉識別基準(zhǔn)上性能有所提升,同時(shí)提高了每個(gè)身份圖像識別的精度.
人臉識別算法的設(shè)計(jì)是為了獲取人臉實(shí)例特征,達(dá)到能夠識別或驗(yàn)證圖像或視頻中的主體的身份的目的.人臉識別算法在邊緣設(shè)備上的部署具有廣泛的應(yīng)用場景,這要求算法具備在非GPU加速環(huán)境下也能夠具備實(shí)時(shí)以上的識別幀速.因此人臉識別算法采用的神經(jīng)網(wǎng)絡(luò)模型是算法執(zhí)行效率的關(guān)鍵,在本章將會對本文所提出的Emfacenet輕量級人臉識別網(wǎng)絡(luò)的設(shè)計(jì)思路以及方法進(jìn)行詳細(xì)介紹.
基于嵌入式設(shè)備設(shè)計(jì)一種輕量級的神經(jīng)網(wǎng)絡(luò)本質(zhì)是追求網(wǎng)絡(luò)復(fù)雜性和準(zhǔn)確性的平衡.因此,減少網(wǎng)絡(luò)的復(fù)雜性從根本上來說必然會犧牲一定的準(zhǔn)確性,這是輕量級的神經(jīng)網(wǎng)絡(luò)生成特征的多樣性比較低而導(dǎo)致的.為了進(jìn)一步在網(wǎng)絡(luò)中間得到更加多樣化的信息,設(shè)計(jì)網(wǎng)絡(luò)的過程中參考一些高效的網(wǎng)絡(luò)結(jié)構(gòu)是非常必要的.本文主要參考Mobilenetv2[18]所提出的倒置殘差網(wǎng)絡(luò)用于構(gòu)建Emfacenet的主體,通過利用逐點(diǎn)卷積將低維輸入特征圖擴(kuò)展到適合非線性激活的高維空間,然后利用深度卷積實(shí)現(xiàn)高維張量的空間過濾,最后利用另一個(gè)逐點(diǎn)卷積將空間過濾的特征圖投影回低維子空間.倒置殘差網(wǎng)絡(luò)可以將深度卷積和殘差網(wǎng)絡(luò)的優(yōu)點(diǎn)結(jié)合起來,深度卷積的出現(xiàn)在一定程度上減少了參數(shù)的計(jì)算和存儲,避免深度卷積導(dǎo)致的特征退化的問題,而倒置殘差網(wǎng)絡(luò)的引入可以使圖像的特征可以反復(fù)的利用,可以在參數(shù)量減少的情況下保留圖像原本的特征用于人臉識別.除此以外,隨著參數(shù)量的減少,算法部署在嵌入式平臺上就可以減少內(nèi)存空間的占用并且減少訪問外部存儲器的次數(shù),以進(jìn)一步提升算法的效率.
為了更好的利用通道之間的關(guān)系來增強(qiáng)提取信息特征的能力,本文在該殘差網(wǎng)絡(luò)中引入了注意力機(jī)制.在深度卷積和最后一個(gè)逐點(diǎn)卷積之間引入Hu等人[28]在論文中所提到的擠壓和激勵(lì)塊(SE),SE塊可以直接應(yīng)用于現(xiàn)有的架構(gòu)執(zhí)行動態(tài)信道特征重新校準(zhǔn)來提高網(wǎng)絡(luò)的表達(dá)能力.增大了網(wǎng)絡(luò)中有效特征的決策權(quán)重并忽略其他冗余權(quán)重,同時(shí)只略微增加了模型的復(fù)雜性和計(jì)算負(fù)擔(dān).該倒置殘差網(wǎng)絡(luò)模塊的結(jié)構(gòu)如圖1所示.
圖1 倒置殘差結(jié)構(gòu)設(shè)計(jì)Fig.1 Inverted residual structure design
DWConv是深度卷積模塊,而SELayer則為擠壓和激勵(lì)模塊,LWModule是本文提出的一種輕量級的逐點(diǎn)卷積模塊,目的是利用更少的參數(shù)產(chǎn)生更多特征的圖像塊.由于CNN中間特征圖輸出后很多通道特征圖相似度較高,神經(jīng)網(wǎng)絡(luò)為減少中間層對于冗余特征的提取,LWModule首先從常規(guī)卷積得到一部分輸入特征之后再利用分組卷積得到其余特征,最終輸出特征圖將上述兩者進(jìn)行合并.LWModule具體的實(shí)現(xiàn)分為兩步,第1步利用1×1的卷積核對輸入特征圖進(jìn)行卷積、批量標(biāo)準(zhǔn)化以及非線性激活的處理,然后再利用3×3的卷積核對上一步的輸出特征圖進(jìn)行以輸出通道數(shù)為分組數(shù)的分組卷積,最后將第1步和第2步的輸出特征進(jìn)行拼接輸出.除此以外,本文在該模塊中還引入了殘差操作,通過添加捷徑(shortcut)增強(qiáng)特征的可重用性,捷徑(shortcut)的設(shè)計(jì)如圖1所示,它可以用來預(yù)防訓(xùn)練中特征坍塌情況的產(chǎn)生.
在本節(jié)本文將進(jìn)一步探討該網(wǎng)絡(luò)結(jié)構(gòu)在整體架構(gòu)中的應(yīng)用并闡述神經(jīng)網(wǎng)絡(luò)整體架構(gòu)的設(shè)計(jì).Emfacenet將以倒置殘差網(wǎng)絡(luò)(Bottleneck)作為網(wǎng)絡(luò)主體,同時(shí)為了精簡網(wǎng)絡(luò)結(jié)構(gòu),在網(wǎng)絡(luò)整體設(shè)計(jì)中僅應(yīng)用4層Bottleneck層,具體參數(shù)配置如表1所示.該參數(shù)與圖1的結(jié)構(gòu)一一對應(yīng),Kernel_Size表示Bottleneck層中深度卷積的卷積核大小,Exp_Size為倒置殘差結(jié)構(gòu)中第1個(gè)逐點(diǎn)卷積進(jìn)行升維的膨脹因子,Out_Chan表示倒置殘差結(jié)構(gòu)輸出通道的數(shù)量,SE表示SELayer使用的數(shù)量,S則為深度卷積中所采用的步長.
表1 Bottleneck層參數(shù)配置Table 1 Bottleneck layers′ parameter configurations
卷積運(yùn)算是提取人臉局部特征值的重要方法,但是卷積運(yùn)算所帶來的參數(shù)計(jì)算、存儲、傳輸?shù)男枨髸?dǎo)致嵌入式系統(tǒng)不堪重負(fù).為了進(jìn)一步便于該神經(jīng)網(wǎng)絡(luò)在嵌入式端以及移動端的部署,除上述Bottleneck層網(wǎng)絡(luò)主體應(yīng)用以外,本文僅在神經(jīng)網(wǎng)絡(luò)的輸入層以及輸出層各設(shè)計(jì)了一層卷積層,并利用自適應(yīng)平均池化獲得該網(wǎng)絡(luò)所提取的特征值.
除此以外,輸入特征圖的大小與神經(jīng)網(wǎng)絡(luò)的參數(shù)量和計(jì)算量緊密相關(guān),輸入特征圖的減少也可以促進(jìn)模型的進(jìn)一步減重.然而,這可能會導(dǎo)致神經(jīng)網(wǎng)絡(luò)無法學(xué)習(xí)到該類圖像的特征,從而學(xué)習(xí)效果降低,模型的識別精度也隨之降低.因此,為了減少輸入特征圖大小的同時(shí)不降低深度學(xué)習(xí)的效果,本文將輸入特征圖統(tǒng)一先經(jīng)過了MTCNN人臉檢測器進(jìn)行數(shù)據(jù)集圖像的預(yù)處理并實(shí)現(xiàn)人臉對齊,然后再將圖像剪裁為56×56大小.這樣可以在輸入特征圖較小的情況下最大程度上保持圖像的人臉特征信息.該神經(jīng)網(wǎng)絡(luò)的整體架構(gòu)、輸入輸出以及參數(shù)量如表2所示.
表2 Emfacenet的整體架構(gòu)Table 2 Overall architecture of Emfacenet
表2展現(xiàn)該特征圖通道信息以及輸入輸出的結(jié)果.根據(jù)前文網(wǎng)絡(luò)整體架構(gòu)的設(shè)計(jì)思路,本文將一張3×56×56大小的圖片輸入Emfacenet.輸入層的對該人臉特征圖利用3×3的卷積核進(jìn)行卷積,并對卷積所得到的數(shù)據(jù)進(jìn)行批量標(biāo)準(zhǔn)化(BN)的處理,隨后利用激活函數(shù)(ReLU)引入非線性因素,從而提高模型的表達(dá)能力.之后依次通過前文設(shè)計(jì)好的4層Bottleneck層進(jìn)一步獲取提取特征圖中的有效特征信息,最后再次通過卷積、批量標(biāo)準(zhǔn)化、非線性激活以及自適應(yīng)平均池化層得到人臉特征值.
本文利用模型可視化工具TorchSummary得到網(wǎng)絡(luò)結(jié)構(gòu)以及各網(wǎng)絡(luò)層的參數(shù).根據(jù)表2中各網(wǎng)絡(luò)層的參數(shù)結(jié)果可以看出,Emfacenet輸入特征的大小為0.04MB,參數(shù)總量為19784,參數(shù)量大小為0.08MB,且生成模型大小僅為138.1KB.由此可見,本文通過有效的整體網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)使該輕量級神經(jīng)網(wǎng)絡(luò)模型的參數(shù)遠(yuǎn)遠(yuǎn)的少于其他現(xiàn)有模型,當(dāng)Emfacement部署到嵌入式端時(shí),模型的參數(shù)可以完全存儲在FPGA上并且消除了對于模型加載參數(shù)的需要,有利于后續(xù)嵌入式系統(tǒng)的開發(fā).
在上一節(jié)主要確定了Emfacenet神經(jīng)網(wǎng)絡(luò)的基本架構(gòu),為實(shí)現(xiàn)嵌入式設(shè)備的算法部署,在本章將通過模型的訓(xùn)練以及測試實(shí)現(xiàn)人臉識別.
實(shí)驗(yàn)流程如圖2所示,在訓(xùn)練階段主要基于訓(xùn)練數(shù)據(jù)集實(shí)現(xiàn)Emfacenet的訓(xùn)練,并利用Arcface損失函數(shù)獲取人臉特征預(yù)測值和真實(shí)值的差異,從而指導(dǎo)反向傳播過程中參數(shù)和權(quán)重的更新以逐漸減少損失的大小.在測試階段主要利用測試數(shù)據(jù)集來測試神經(jīng)網(wǎng)絡(luò)提取人臉特征的能力,并根據(jù)不同人臉的相似度得分獲得最高分的人臉身份,然后和真實(shí)身份進(jìn)行對比,從而獲得測試的精度.實(shí)驗(yàn)具體工作以及過程見4.1節(jié)和4.2節(jié).
圖2 實(shí)驗(yàn)基本流程Fig.2 Basic process of experiment
人臉識別的訓(xùn)練階段的是通過神經(jīng)網(wǎng)絡(luò)在數(shù)據(jù)集中獲取人臉的特征,并針對不同人臉實(shí)例進(jìn)行分類以區(qū)分出不同人臉的判別特征.訓(xùn)練的最終目的是通過不斷的迭代實(shí)現(xiàn)模型權(quán)重的更新,最終獲得具備較強(qiáng)人臉識別能力的神經(jīng)網(wǎng)絡(luò)模型.因此在模型的訓(xùn)練階段,數(shù)據(jù)集和損失函數(shù)的選擇都十分重要.數(shù)據(jù)集是神經(jīng)網(wǎng)絡(luò)訓(xùn)練、驗(yàn)證和測試的基礎(chǔ),決定了神經(jīng)網(wǎng)絡(luò)模型所識別的人臉特征,而損失函數(shù)是將模型的預(yù)測值和實(shí)際值相比較來評估模型的執(zhí)行效果.
Emfacenet的設(shè)計(jì)和實(shí)現(xiàn)不依賴于對已有網(wǎng)絡(luò)的剪枝、量化等模型壓縮方法,因此需要從頭開始訓(xùn)練該網(wǎng)絡(luò).針對輕量級的神經(jīng)網(wǎng)絡(luò)來說,數(shù)據(jù)集的選擇對于人臉特征的提取至關(guān)重要.本文選擇了CASIA-WebFace數(shù)據(jù)集用于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,該數(shù)據(jù)集中共有10575個(gè)不同的個(gè)體,其中包括494414張面部圖像.根據(jù)個(gè)體的總數(shù)對數(shù)據(jù)集標(biāo)注標(biāo)簽并展開訓(xùn)練,利用損失函數(shù)計(jì)算預(yù)測值以及標(biāo)簽真實(shí)值之間損失的大小,然后利用隨機(jī)梯度下降的方法多次迭代反向傳播中的梯度信息并更新模型的權(quán)重,最終減少真實(shí)值和預(yù)測值之間差異,促進(jìn)神經(jīng)網(wǎng)絡(luò)模型的收斂.
損失函數(shù)在判斷網(wǎng)絡(luò)性能中發(fā)揮著重大的作用,人臉識別損失函數(shù)中應(yīng)用最廣泛的是Softmax函數(shù),它通過兩個(gè)全連接層對提取出來的特征隨后經(jīng)過線性變換得到類別分?jǐn)?shù),再使用Softmax函數(shù)計(jì)算每個(gè)類別0-1之間的得分后用交叉熵計(jì)算損失.Softmax損失函數(shù)的計(jì)算公式如公式(1)所示.其中,fi表示屬于ni類的第i個(gè)樣本的深度特征,Wj表示權(quán)重W的第j列,bj表示偏差.N表示批量處理的大小,M表示分類的數(shù)量.
(1)
但是這種常見的訓(xùn)練方式?jīng)]有對提取特征提供太大約束,這將會導(dǎo)致訓(xùn)練特征在分類的超平面上離散分布.同時(shí)往往容易忽略類間的距離,無法獲得較強(qiáng)的泛化能力.為了解決這一問題,涌現(xiàn)了一批以Softmax函數(shù)為基礎(chǔ)的改進(jìn)方法,其中Arcface損失函數(shù)應(yīng)用較為廣泛,其計(jì)算方法如公式(2)所示.其中,λ為縮放因子,α為權(quán)重Wj與特征fi之間的夾角,模型的預(yù)測主要依賴該夾角.r是附加的角邊緣懲罰,可以增加類內(nèi)緊湊型以及類間的差異性.與其他的幾種損失函數(shù)相比,顯著的提高了圖像識別、圖像分類任務(wù)中的模型預(yù)測的準(zhǔn)確率.本文所設(shè)計(jì)的Emfacenet同樣利用了Arcface損失函數(shù)對模型進(jìn)行訓(xùn)練,旨在獲得更佳的人臉特征提取能力.
(2)
神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練主要基于Pytorch深度學(xué)習(xí)框架,實(shí)驗(yàn)環(huán)境包括Intel(R)Core(TM)i7-10700F CPU @ 2.90GH以及GeForce RTX3070顯卡(顯存為8G),輸入圖像的大小為3×56×56.由于輕量級模型犧牲了一定的網(wǎng)絡(luò)深度和網(wǎng)絡(luò)層的大小,因此為提高模型預(yù)測的準(zhǔn)確性需要依靠規(guī)模較大的數(shù)據(jù)集以及較多的訓(xùn)練測試.本文將訓(xùn)練條件中epoch設(shè)置為300輪,batchsize設(shè)置為512,除此以外利用多階學(xué)習(xí)率衰減的方法設(shè)計(jì)每一輪的學(xué)習(xí)率,然后根據(jù)300輪的訓(xùn)練結(jié)果計(jì)算訓(xùn)練精度,最終保存合適的模型進(jìn)入測試階段.
由于測試階段需要完成Emfacenet模型與Resnet50、Mobilenetv3、Mobilefacenets 3種神經(jīng)網(wǎng)絡(luò)模型的對比,還需要在測試階段根據(jù)Emfacenet神經(jīng)網(wǎng)絡(luò)的特點(diǎn)對其他3種網(wǎng)絡(luò)的部分結(jié)構(gòu)進(jìn)行重新調(diào)整,從而保證輸入特征圖像的大小以及輸出特征值維度保持不變.并且需要根據(jù)訓(xùn)練條件使其他3種神經(jīng)網(wǎng)絡(luò)和Emfacenet的超參數(shù)設(shè)置保持一致,確保同等條件下實(shí)現(xiàn)模型的訓(xùn)練.
測試階段的主要工作是完成對生成模型的測試,并利用非訓(xùn)練所用的數(shù)據(jù)集測試模型的預(yù)測結(jié)果,從而判斷模型的預(yù)測能力以及泛化能力.在這個(gè)過程中,首先得到原型數(shù)據(jù)集(Gallery)的人臉特征,之后輸入一張測試圖像作為探針(Probe),通過神經(jīng)網(wǎng)絡(luò)提取該探針的人臉特征值,并且利用點(diǎn)乘的方法將探針人臉和原型數(shù)據(jù)集中的人臉進(jìn)行對比,相似度得分最高的則判斷兩張人臉為同一身份.在測試階段,主要采用LFW數(shù)據(jù)集測試模型的預(yù)測精度.LFW人臉數(shù)據(jù)集是用于人臉識別的常用測試集.LFW數(shù)據(jù)集共有5749個(gè)人的13233張人臉圖片,該人臉圖片均來自與生活中的自然場景.除此以外,在同一條件下將訓(xùn)練所得到Emfacenet模型和先前的研究成果Resnet50、Mobilenetv3、Mobilefacenets,并對比這4種模型預(yù)測準(zhǔn)確性以及識別速度.
測試階段分別在計(jì)算機(jī)CPU平臺下以及嵌入式設(shè)備的CPU軟核的條件下完成測試,CPU平臺為Intel(R)Core(TM)i7-10700F CPU @ 2.90GH,通過在無GPU參與時(shí)僅使用CPU來完成前向推理,而嵌入式平臺主要依靠DIGILENT Genesys 2 Kintex-7 FPGA開發(fā)板搭載RISC-V SoC,該開發(fā)板如圖3所示.該FPGA芯片邏輯資源和存儲資源較為豐富,具有50950個(gè)邏輯單元以及接近16Mbit的快速隨機(jī)存儲器.與此同時(shí),它內(nèi)部時(shí)鐘速度可以超過450MHz,具備1800Mbps數(shù)據(jù)速率和32位數(shù)據(jù)寬度的DDR3,同時(shí)還具備諸多端口和外圍設(shè)備.該FPGA開發(fā)板是一種高性能、即用型的開發(fā)板,且可以用于數(shù)據(jù)視頻處理.利用Vivado設(shè)計(jì)套件設(shè)計(jì)了RISC-V SoC并且移植了Debian Linux(RISC-V 64位)操作系統(tǒng)作為該輕量級人臉識別算法部署的嵌入式平臺,該RISC-V SoC主要基于64位4核的Rocket內(nèi)核,由于嵌入式平臺的CPU為軟核,相比硬核犧牲了一定的性能和功耗,但是其靈活性、可移植性較強(qiáng),便于面向算法落地的軟硬件協(xié)同設(shè)計(jì).除此以外,由于嵌入式系統(tǒng)基于RISC-V 內(nèi)核,需要依靠交叉編譯的工具鏈實(shí)現(xiàn)人臉識別算法的部署.但是由于RISC-V 工具鏈仍然在不斷更新和完善的階段,無法實(shí)現(xiàn)Python代碼的交叉編譯.因此部署到FPGA開發(fā)板還需要利用OpenCV開源庫實(shí)現(xiàn)Python到C++代碼的轉(zhuǎn)換,然后將編譯好的動態(tài)庫以及應(yīng)用程序的二進(jìn)制代碼移植到開發(fā)板完成代碼的運(yùn)行.
圖3 DIGILENT Genesys 2 Kintex-7 FPGA開發(fā)板Fig.3 Digilent Genesys 2 Kintex-7 FPGA development board
表3展示了在CPU下不同模型的比較結(jié)果,從實(shí)驗(yàn)結(jié)果可以看出,本文所提出的輕量級神經(jīng)網(wǎng)絡(luò)模型Emfacenet的模型大小僅為0.13MB(實(shí)際大小為138.1KB),遠(yuǎn)遠(yuǎn)小于其他3種神經(jīng)網(wǎng)絡(luò)的模型大小.作為一種輕量級的神經(jīng)網(wǎng)絡(luò),雖然犧牲了部分測試精度,但是單張照片的識別速度達(dá)到了46.97ms,識別速度分別是Resnet50、Mobilenetv3和Mobilefacenets的2.07倍、1.67倍、1.63倍,因此可以在計(jì)算機(jī)的CPU平臺下滿足人臉識別的實(shí)時(shí)性和準(zhǔn)確性要求.
表3 在CPU下不同模型實(shí)驗(yàn)結(jié)果的對比Table 3 Comparison of experimental results of different models under CPU
然后,在基于嵌入式平臺CPU軟核的條件下進(jìn)行對比實(shí)驗(yàn).由于在RISC-V SoC嵌入式平臺下模型大小不發(fā)生變化,且測試的精度不發(fā)生改變,實(shí)驗(yàn)主要考慮對比在該RISC-V SoC平臺下不同人臉識別神經(jīng)網(wǎng)絡(luò)單張圖片的識別速度,實(shí)驗(yàn)結(jié)果如表4所示.
表4 嵌入式平臺上不同模型實(shí)驗(yàn)結(jié)果的對比Table 4 Comparison of experimental results of different models on embedded platform
由上述實(shí)驗(yàn)結(jié)果可以看出,當(dāng)Emfacenet部署到基于RISC-V SoC的嵌入式平臺時(shí),其識別速度遠(yuǎn)遠(yuǎn)高于其他3種神經(jīng)網(wǎng)絡(luò)模型,分別是Resnet50、Mobilenetv3和Mobilefacenets的56.65倍、2.09倍、3.41倍.由此可見,Emfacenet神經(jīng)網(wǎng)絡(luò)模型對所部署平臺的存儲資源和計(jì)算資源的要求比較低,特別是針對嵌入式設(shè)備等資源受限平臺的部署表現(xiàn)非常突出.
本文提出了一種輕量級人臉識別的卷積神經(jīng)網(wǎng)絡(luò)——Emfacenet,旨在通過所設(shè)計(jì)的輕量級神經(jīng)網(wǎng)絡(luò)來解決硬件資源受限的平臺算法部署困難的問題,從而實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)模型運(yùn)行效率的提高,便于神經(jīng)網(wǎng)絡(luò)在未來能夠更為廣泛的部署到嵌入式、移動端以及邊緣設(shè)備上.除此以外,本文在計(jì)算機(jī)端以及嵌入式端兩類平臺完成了模型的部署,并與在深度學(xué)習(xí)領(lǐng)域表現(xiàn)優(yōu)秀的研究成果進(jìn)行對比,可以看出Emfacenet模型預(yù)測精度犧牲不大,模型復(fù)雜度可以大幅度減少,Emfacenet在基于RISC-V SoC的嵌入式平臺表現(xiàn)突出.除此以外,本研究仍有一些不足,由于嵌入式平臺主要基于FPGA來實(shí)現(xiàn),勢必會受到FPGA設(shè)計(jì)的局限性的影響,由于Genesys 2 Kintex-7系列FPGA芯片資源的限制,本文將Rocket內(nèi)核配置為4核,該軟核通過Vivado時(shí)序分析報(bào)告可以看出其時(shí)鐘主頻能夠達(dá)到100MHz,遠(yuǎn)遠(yuǎn)小于其他基于ARM硬核的嵌入式平臺所能達(dá)到的時(shí)鐘主頻.然而RISC-V內(nèi)核因其開源的特性為人臉識別算法的研究和部署提供了一種新的方案,深度學(xué)習(xí)算法的軟硬件協(xié)同勢必會成為未來研究的重要方向.