吳 衡, 董 忠
(天水師范學(xué)院 電子信息與電氣工程學(xué)院,甘肅 天水 741001)
近年來(lái)深度神經(jīng)網(wǎng)絡(luò)在人工智能領(lǐng)域起到了革命性的作用,圖像識(shí)別方面的準(zhǔn)確度已經(jīng)達(dá)到甚至超過(guò)了人類的水平.這種神經(jīng)網(wǎng)絡(luò)推理復(fù)雜、網(wǎng)絡(luò)參數(shù)多、運(yùn)算量大,需要高性能的硬件支撐.對(duì)于微型計(jì)算機(jī)等計(jì)算能力有限的設(shè)備,如何運(yùn)行神經(jīng)網(wǎng)絡(luò),而且達(dá)到可以應(yīng)用到生產(chǎn)環(huán)境的水平一直是人工智能領(lǐng)域研究的挑戰(zhàn).
本文設(shè)計(jì)的果蔬圖像識(shí)別模型VegNet(vegetable and fruit recognize network,VegNet)基于深度可分離卷積和反向殘差網(wǎng)絡(luò)結(jié)構(gòu),使用預(yù)訓(xùn)練的ImageNet[1]數(shù)據(jù)集初始化網(wǎng)絡(luò)參數(shù),在GPU上進(jìn)行剪枝、量化、調(diào)參、訓(xùn)練和測(cè)試自定義數(shù)據(jù)集.優(yōu)化后的網(wǎng)絡(luò)部署在微型計(jì)算機(jī)上平衡了精度和速度,其準(zhǔn)確率和推理時(shí)間接近在GPU上運(yùn)行的復(fù)雜神經(jīng)網(wǎng)絡(luò)的表現(xiàn),進(jìn)而將其與重量傳感器結(jié)合,組成了人工智能的電子秤設(shè)備.
微型計(jì)算機(jī)一般應(yīng)用在機(jī)器人、自動(dòng)駕駛、醫(yī)療輔助、物聯(lián)網(wǎng)等環(huán)境中,具有功耗低、體積小、易于部署等優(yōu)點(diǎn),但也正是因?yàn)楣牡汀Ⅲw積小的限制,導(dǎo)致微型計(jì)算機(jī)往往硬件配置較低、計(jì)算能力差、設(shè)備資源有限,很難運(yùn)行復(fù)雜的深度卷積神經(jīng)網(wǎng)絡(luò).
復(fù)雜的深度卷積神經(jīng)網(wǎng)絡(luò)模型是目前人工智能研究的前沿領(lǐng)域,它性能優(yōu)異,在圖像識(shí)別領(lǐng)域具有其他算法很難達(dá)到的準(zhǔn)確度,但其對(duì)硬件計(jì)算能力要求高,難以直接在微型計(jì)算機(jī)上部署.目前,常用的物體識(shí)別算法大多采用基于機(jī)器學(xué)習(xí)的深度卷積神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn),具有代表性的深度卷積網(wǎng)絡(luò)有VGG[2],Inception[3],ResNet[4],DenseNet[5]等.它們?cè)贗mageNet[6]等公開(kāi)數(shù)據(jù)集上均取得過(guò)SOTA(state of the art)的表現(xiàn).VGG16網(wǎng)絡(luò)的參數(shù)有138 357 544個(gè),占用500 MB的存儲(chǔ)空間,需要進(jìn)行309億次浮點(diǎn)運(yùn)算才能完成一次圖像識(shí)別任務(wù).Inception的參數(shù)達(dá)到23 851 784個(gè),ResNet50網(wǎng)絡(luò)的參數(shù)也有25 636 712[7]個(gè).這些深度神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)復(fù)雜、參數(shù)多、運(yùn)算量大,部署在實(shí)際環(huán)境中需要專業(yè)GPU完成計(jì)算.
簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)模型對(duì)硬件的運(yùn)行要求雖然不高,但它很難識(shí)別稍顯復(fù)雜的圖像,對(duì)于圖像中高層次抽象語(yǔ)義的理解能力欠佳,圖像識(shí)別時(shí)很難達(dá)到高的推理精度,甚至無(wú)法正常識(shí)別.
在微型計(jì)算機(jī)上運(yùn)行復(fù)雜深度卷積神經(jīng)網(wǎng)絡(luò)需要解決如何在降低網(wǎng)絡(luò)模型計(jì)算量且盡可能保持網(wǎng)絡(luò)推理準(zhǔn)確度的問(wèn)題.在目前深度神經(jīng)網(wǎng)絡(luò)日趨復(fù)雜、計(jì)算量呈指數(shù)級(jí)上升的同時(shí),探索低參數(shù)、高性能的神經(jīng)網(wǎng)絡(luò)一直是深度學(xué)習(xí)研究的一個(gè)方向.
為了讓微型計(jì)算機(jī)運(yùn)行復(fù)雜卷積神經(jīng)網(wǎng)絡(luò),優(yōu)化網(wǎng)絡(luò)模型設(shè)計(jì),大幅降低模型參數(shù)數(shù)量,讓模型適合微型計(jì)算機(jī)的計(jì)算量是目前主要的途徑.Howard等[8]提出的MobileNet采用深度可分離卷積比傳統(tǒng)卷積操作大幅度降低了運(yùn)算量,僅為復(fù)雜深度卷積神經(jīng)網(wǎng)絡(luò)VGG16,Inception,ResNet50的3%,18%,17%.Sandler等[9]提出具有反向殘差網(wǎng)絡(luò)結(jié)構(gòu)MobileNetV2,在MobileNet[8]的基礎(chǔ)上參數(shù)減少了17%,性能提升1%.
深度可分離卷積(depthwise separable convolutions)將傳統(tǒng)卷積運(yùn)算(normal convolutions)拆分為一次縱向卷積(depthwise convolution)和多次逐點(diǎn)(pointwise convolution)卷積,降低了整體的運(yùn)算量但得到了相近的輸出.
若輸入一個(gè)hi×wi×di的張量Li,與k∈Rk×k×di×di的過(guò)濾器進(jìn)行卷積運(yùn)行后生成hj×wj×dj的輸出張量,傳統(tǒng)卷積的運(yùn)算量為(由于加法計(jì)算相對(duì)簡(jiǎn)單,文中所有運(yùn)算量計(jì)算只計(jì)乘法的數(shù)量)
hj×wj×dj×di×k×k.
(1)
使用深度可分離卷積時(shí),首先進(jìn)行一次縱向卷積運(yùn)算,其計(jì)算量為
hj×wj×di×k×k.
(2)
再根據(jù)輸出張量的通道數(shù)的數(shù)量,進(jìn)行逐點(diǎn)卷積運(yùn)算,其計(jì)算量為
hj×wj×di×dj.
(3)
由(2)和(3)式可得,深度可分離卷積操作的總運(yùn)算量為
hj×wj×di×(k2+dj).
(4)
由(4)和(1)式可得,深度可分離卷積運(yùn)算量為傳統(tǒng)卷積運(yùn)算量的
(5)
若卷積核k=3,輸出通道dj=256,由(5)式可得,深度可分離卷積運(yùn)算量為傳統(tǒng)卷積運(yùn)算量的11.45%.
深度可分離卷積的結(jié)構(gòu)減少了網(wǎng)絡(luò)參數(shù),如果網(wǎng)絡(luò)結(jié)構(gòu)很小,網(wǎng)絡(luò)的參數(shù)可能太少,在訓(xùn)練時(shí)網(wǎng)絡(luò)可能無(wú)法得到足夠的學(xué)習(xí).比較好的使用方法應(yīng)該是在有效性的基礎(chǔ)上盡可能提升網(wǎng)絡(luò)的效率.
深度卷積神經(jīng)網(wǎng)絡(luò)ResNet[4]中首先出現(xiàn)殘差網(wǎng)絡(luò)結(jié)構(gòu),通過(guò)先降維、卷積(提取特征),再升維回到原始維度,驗(yàn)證了特征向量復(fù)用可有效地提升網(wǎng)絡(luò)性能.MobileNetV2[9]使用反向殘差網(wǎng)絡(luò)設(shè)計(jì),它與ResNet的殘差結(jié)構(gòu)相反,shortcut連接的是維度縮減后的向量特征,旁支區(qū)塊內(nèi)先通過(guò)1×1升維,再連接縱向卷積層以及ReLU[10]激活層,通過(guò)增加ReLU的輸入向量維度,保證了提取的特征的量,并且緩解了特征退化的現(xiàn)象.兩種結(jié)構(gòu)的比較見(jiàn)圖1.
圖1 ResNet采用殘差網(wǎng)絡(luò)結(jié)構(gòu)與MobileNetV2采用的反向殘差網(wǎng)絡(luò)結(jié)構(gòu)的對(duì)比
以MobileNet系列模型為出發(fā)點(diǎn),深度可分離卷積和反向殘差神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)推動(dòng)了神經(jīng)網(wǎng)絡(luò)技術(shù)在微型計(jì)算機(jī)上的發(fā)展.基于這種結(jié)構(gòu),Sahu等[11]使用手持設(shè)備實(shí)現(xiàn)了皮膚癌的檢測(cè),在預(yù)訓(xùn)練的參數(shù)集上使用ISIC2017數(shù)據(jù)集訓(xùn)練網(wǎng)絡(luò),篩查成功率達(dá)到80.5%.Ahn等[12]開(kāi)發(fā)了兒童語(yǔ)言開(kāi)發(fā)的助理玩具,由運(yùn)行在樹(shù)莓派上的深度可分離卷積神經(jīng)網(wǎng)絡(luò)完成語(yǔ)言識(shí)別任務(wù).Pacheco[13]等在移動(dòng)設(shè)備上使用深度可分離卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了光線可控的智慧教室系統(tǒng).
VetNet網(wǎng)絡(luò)使用了深度可分離卷積和反向殘差神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),并借鑒了深度卷積神經(jīng)網(wǎng)絡(luò)MobileNetV2卷積層的設(shè)計(jì),這樣VegNet就可以使用ImageNet數(shù)據(jù)集在MobileNetV2網(wǎng)絡(luò)上預(yù)訓(xùn)練的參數(shù).這種設(shè)計(jì)方法可以利用ImageNet數(shù)據(jù)集高層次的抽象語(yǔ)義表達(dá)能力,彌補(bǔ)自定義數(shù)據(jù)集數(shù)據(jù)規(guī)模相對(duì)較小、表達(dá)能力不強(qiáng)的缺點(diǎn),最大化發(fā)揮VegNet的性能.
VegNet網(wǎng)絡(luò)輸入層,首先連接32核的普通卷積層,其次是17個(gè)bottleneck residual block,再連接2個(gè)全連接層,最后通過(guò)softmax函數(shù)輸出,其網(wǎng)絡(luò)結(jié)構(gòu)見(jiàn)表1.
表1 果蔬識(shí)別神經(jīng)網(wǎng)絡(luò)模型的詳細(xì)結(jié)構(gòu)
網(wǎng)絡(luò)的非線性激活層采用適合低精度計(jì)算的ReLU6函數(shù),所有的卷積核大小均為3×3,在訓(xùn)練中使用Dropout和標(biāo)準(zhǔn)化操作來(lái)泛化模型和優(yōu)化計(jì)算.
果蔬數(shù)據(jù)集由9種不同的水果和蔬菜組成,分別是:蘋(píng)果、豆角、白菜、胡蘿卜、菜花、黃瓜、茄子、蘑菇和火龍果.這些來(lái)自果蔬市場(chǎng)的照片經(jīng)隨機(jī)挑選并剔除了重復(fù)度較高、特征不明顯圖片來(lái)降低樣本相關(guān)性,再通過(guò)剪裁提升目標(biāo)特征.由于數(shù)據(jù)集制作所需時(shí)間的限制,訓(xùn)練集中暫不包括其他果蔬.
訓(xùn)練集的數(shù)量和質(zhì)量會(huì)對(duì)系統(tǒng)性能產(chǎn)生較大的影響.果蔬數(shù)據(jù)集由5 472張訓(xùn)練數(shù)據(jù)和500張測(cè)試數(shù)據(jù)組成,訓(xùn)練測(cè)試比約為10∶1.訓(xùn)練數(shù)據(jù)集中,9種果蔬的樣本數(shù)量分為:蘋(píng)果870張,豆角542張,白菜466張,胡蘿卜985張,菜花173張,黃瓜271張,茄子929張,蘑菇569張,火龍果667張.圖2展示了每個(gè)分類隨機(jī)選取的一個(gè)樣本.測(cè)試集每類樣本數(shù)量均為50張.采用提升模型精度和加速網(wǎng)絡(luò)訓(xùn)練的常規(guī)做法,對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行了剪裁和變預(yù)處理操作.將圖片剪切掉與主題無(wú)關(guān)的背景內(nèi)容后,確保主要內(nèi)容占整個(gè)圖像的80%以上,再按照模型輸入圖片要求進(jìn)行調(diào)整.VegNet網(wǎng)絡(luò)輸入圖片的尺寸為224×224像素,對(duì)比部分的深度卷積神經(jīng)網(wǎng)絡(luò)輸入尺寸為299×299像素.
圖2 果蔬數(shù)據(jù)集中每種物體的抽樣
VegNet網(wǎng)絡(luò)部署在微型計(jì)算機(jī)中具有代表性的硬件Raspberry Pi[14](樹(shù)莓派)上離線運(yùn)行.它的軟硬件開(kāi)源、性價(jià)比高、接口豐富的特點(diǎn),被廣泛應(yīng)用于人工智能硬件的研究和開(kāi)發(fā).
硬件系統(tǒng)使用了樹(shù)莓派2個(gè)不同型號(hào)的3塊子版,分別是2塊3b+(RPi3B)和1塊ZERO W(RPi0)兩個(gè)型號(hào)的3塊樹(shù)莓派.一塊RPi3B負(fù)責(zé)圖像推理運(yùn)算神經(jīng)網(wǎng)絡(luò),另一塊負(fù)責(zé)傳感器控制,RPi0負(fù)責(zé)稱重物體的圖像采集,它們之間的數(shù)據(jù)傳遞由RPi3B路由經(jīng)WIFI信號(hào)連通.兩個(gè)型號(hào)的樹(shù)莓派的主要參數(shù)見(jiàn)表2,傳感器包括數(shù)字電子稱、攝像頭和藍(lán)牙音箱等.數(shù)字電子稱(型號(hào):HX711),精度為±1 g,最大稱重為5 kg;攝像頭(型號(hào):IMX219)采用CSI接口與RPi0連接,800萬(wàn)像素,最高分辨率3 280×2 464;語(yǔ)音播報(bào)采用無(wú)線微型音箱(型號(hào):XMYX02YM),通過(guò)藍(lán)牙與RPi3B主控機(jī)連接.
表2 樹(shù)莓派RPi3B和RPi0關(guān)鍵硬件參數(shù)
智能電子秤系統(tǒng)的具體工作流程為:將物體放置在智能電子秤上,重量傳感器稱重物體并觸發(fā)RPi3B主控向RPi0發(fā)送拍照請(qǐng)求,攝像頭拍照后通過(guò)無(wú)線網(wǎng)絡(luò)傳回給RPi3B主控,再將圖像放入VegNet神經(jīng)網(wǎng)絡(luò)進(jìn)行物體識(shí)別,最后根據(jù)種類和單價(jià)計(jì)算后通過(guò)藍(lán)牙發(fā)送至藍(lán)牙音箱進(jìn)行語(yǔ)音播報(bào),這樣就完成了一次稱重.需要說(shuō)明的是,本文對(duì)外觀進(jìn)行了簡(jiǎn)單的設(shè)計(jì),沒(méi)有參考其他任何電子秤的設(shè)計(jì).
圖3 系統(tǒng)拓?fù)鋱D及實(shí)物圖
通過(guò)獲得簡(jiǎn)化網(wǎng)絡(luò)之前深度卷積神經(jīng)網(wǎng)絡(luò)的圖像識(shí)別最高的準(zhǔn)確率來(lái)作為期望值來(lái)衡量VegNet神經(jīng)網(wǎng)絡(luò)的優(yōu)化程度.已經(jīng)證明復(fù)雜的深度神經(jīng)網(wǎng)絡(luò)僅僅使用一部分權(quán)值就足以預(yù)測(cè)剩余的權(quán)值,使用經(jīng)過(guò)修剪、蒸餾、壓縮后的神經(jīng)網(wǎng)絡(luò)可以獲得和原有網(wǎng)絡(luò)差不多的性能.期望通過(guò)實(shí)驗(yàn)獲得讓VegNet網(wǎng)絡(luò)的準(zhǔn)確率盡可能接近復(fù)雜網(wǎng)絡(luò)的表現(xiàn).
通過(guò)對(duì)深度神經(jīng)網(wǎng)絡(luò)網(wǎng)絡(luò)InceptionResNetV2,InceptionV3,ResNet50,VGG19和DenseNet網(wǎng)絡(luò)參數(shù)進(jìn)行ImageNet數(shù)據(jù)集預(yù)訓(xùn)練初始化,再使用果蔬數(shù)據(jù)集進(jìn)行遷移學(xué)習(xí).這些深度卷積神經(jīng)網(wǎng)絡(luò)對(duì)果蔬分類的準(zhǔn)確率見(jiàn)表3.由表3可知,DenseNet獲得了95%的最高識(shí)別準(zhǔn)確率,以此為目標(biāo),對(duì)VegNet進(jìn)行優(yōu)化和調(diào)參.
表3 神經(jīng)網(wǎng)絡(luò)在果蔬數(shù)據(jù)集上的表現(xiàn)
VegNet網(wǎng)絡(luò)訓(xùn)練的主要硬件配置為,GPU NVIDIA 1080Ti,CPU為i7-8750k,優(yōu)化函數(shù)使用RMSprop[15],學(xué)習(xí)率的初值設(shè)為0.1,每個(gè)epoch的衰減率設(shè)置為0.98,batch為16,訓(xùn)練大概需要10 h完成.
VegNet網(wǎng)絡(luò)代碼由Keras[16]編寫(xiě),運(yùn)行在TensorFlow[17]神經(jīng)網(wǎng)絡(luò)框架上,訓(xùn)練由遷移學(xué)習(xí)[18]和傳統(tǒng)機(jī)器學(xué)習(xí)兩種方法互相對(duì)比,各自獨(dú)立完成.
通過(guò)比較不同模型的準(zhǔn)確率Accuracy和f1-score[19]來(lái)評(píng)估這些模型的性能,并由此找出泛型結(jié)果最好的模型部署到生產(chǎn)環(huán)境.
Accuracy的數(shù)學(xué)表達(dá)式為
(6)
式中:l為總的分類數(shù);tpi為正例的正確分類數(shù);fpi為正例的錯(cuò)誤分類數(shù);tni為負(fù)例的正確分類數(shù);fni為負(fù)例的錯(cuò)誤分類數(shù).
f1-score可由Precisionm和Recallm的計(jì)算得到[20],即
(7)
(8)
(9)
式中:下標(biāo)m代表macro.
下面對(duì)這兩種方法和模型的分?jǐn)?shù)分別進(jìn)行介紹.使用遷移學(xué)習(xí)時(shí),預(yù)訓(xùn)練會(huì)加速模型的收斂,得到的參數(shù)更趨向于模型最終的真實(shí)參數(shù).Imagenet數(shù)據(jù)集包含豐富的物體特征,能夠較好地表達(dá)果蔬數(shù)據(jù)集的特征,實(shí)驗(yàn)證明遷移方法訓(xùn)練的VegNet網(wǎng)絡(luò)推理更加準(zhǔn)確.
進(jìn)行傳統(tǒng)機(jī)器學(xué)習(xí)時(shí),使用正態(tài)分布隨機(jī)數(shù)初始化模型所有參數(shù),神經(jīng)網(wǎng)絡(luò)的每一層都通過(guò)訓(xùn)練來(lái)更新參數(shù).從實(shí)驗(yàn)看,這種方法不僅訓(xùn)練過(guò)程較長(zhǎng),而且由于果蔬數(shù)據(jù)集的特征抽象有限,果蔬識(shí)別的準(zhǔn)確率較低.
模型分別采用遷移學(xué)習(xí)和Scratch方法訓(xùn)練,結(jié)果見(jiàn)表4,收斂過(guò)程見(jiàn)圖4.
圖4 遷移學(xué)習(xí)方法訓(xùn)練過(guò)程中模型的準(zhǔn)確率隨訓(xùn)練輪次的收斂圖
表4 遷移學(xué)習(xí)和傳統(tǒng)級(jí)機(jī)器學(xué)習(xí)方法得到的Accuracy和f1-score.
通過(guò)使用兩種不同的訓(xùn)練方法和優(yōu)化函數(shù),在相同的果蔬數(shù)據(jù)集上可以訓(xùn)練出準(zhǔn)確率很接近DenseNet神經(jīng)網(wǎng)絡(luò)準(zhǔn)確率的VegNet神經(jīng)網(wǎng)絡(luò).從實(shí)驗(yàn)得出的數(shù)據(jù)可以看出,使用遷移學(xué)習(xí)訓(xùn)練模型較好.
從表5可以看出,VegNet神經(jīng)網(wǎng)絡(luò)較DenseNet神經(jīng)網(wǎng)絡(luò)參數(shù)壓縮了5%,體積壓縮了78%,準(zhǔn)確率只降低了3%,系統(tǒng)用小的準(zhǔn)確率損失換取了大幅度的性能提升.
表5 果蔬數(shù)據(jù)集在VegNet與DenseNet模型上的準(zhǔn)確率
針對(duì)如何本地化運(yùn)行深度卷積神經(jīng)網(wǎng)絡(luò)使傳統(tǒng)設(shè)備具有智能化能力的問(wèn)題,本文利用深度可分離卷積和反向殘差網(wǎng)絡(luò)結(jié)構(gòu)提出VegNet神經(jīng)網(wǎng)絡(luò)進(jìn)行端對(duì)端的果蔬識(shí)別.實(shí)驗(yàn)結(jié)果證明,新設(shè)計(jì)的智能電子秤系統(tǒng)能夠精確地識(shí)別稱重物品,實(shí)現(xiàn)了人工智能技術(shù)的落地應(yīng)用,不僅提升了工作效率、降低了企業(yè)成本,而且減少了人員接觸,降低了傳染病人傳染人的幾率,在公共環(huán)境安全建設(shè)方面也有積極意義.
本文比較了多種深度卷積神經(jīng)網(wǎng)絡(luò)在相同數(shù)據(jù)集上的表現(xiàn),通過(guò)實(shí)驗(yàn)證明了優(yōu)化后的神經(jīng)網(wǎng)絡(luò)在微型計(jì)算機(jī)上也可以具有良好的魯棒性和準(zhǔn)確度.訓(xùn)練過(guò)程中運(yùn)用了多種不同的方法,確保最終模型的泛化能力達(dá)到最優(yōu).
針對(duì)微型計(jì)算機(jī),本地化運(yùn)行神經(jīng)網(wǎng)絡(luò)需要尋找更好的方法來(lái)平衡運(yùn)算的時(shí)間和精度,如何在網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)、學(xué)習(xí)率、優(yōu)化函數(shù),以及數(shù)據(jù)集制作上尋找最優(yōu)參數(shù)和最優(yōu)組合是需要進(jìn)一步研究的內(nèi)容.