顧昊,曲毅
(1.武警工程大學(xué)研究生大隊(duì)一隊(duì),西安710086;2.武警工程大學(xué)信息工程學(xué)院,西安710086)
深度學(xué)習(xí)誕生于人工神經(jīng)網(wǎng)絡(luò)的研究,2006年加拿大多倫多大學(xué)教授Geoffrey Hinton和他的學(xué)生Rus?lan Salakhutdinov在Science上發(fā)文,提出貪婪的逐層訓(xùn)練算法,解決了深層網(wǎng)絡(luò)訓(xùn)練中的梯度消失問題,自此開啟了深度學(xué)習(xí)研究浪潮。作為機(jī)器學(xué)習(xí)領(lǐng)域的一個(gè)新的研究方向,深度學(xué)習(xí)已經(jīng)在計(jì)算機(jī)視覺、語音識(shí)別、信號(hào)處理、臨床醫(yī)學(xué)等各個(gè)領(lǐng)域取得了突破性進(jìn)展。它模擬人類大腦神經(jīng)元連接結(jié)構(gòu),通過提取低層特征并加以組合形成更加抽象的高層,表示屬性類別或特征,進(jìn)而給出數(shù)據(jù)解釋。
深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN),即是通過深度學(xué)習(xí)得到的深層次的神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是常用的深度神經(jīng)網(wǎng)絡(luò)模型之一。80年代初期日本學(xué)者Fukushima等人受貓的視覺皮層細(xì)胞感受野的概念啟發(fā),提出了神經(jīng)認(rèn)知機(jī)(Neocognitron),第一次實(shí)現(xiàn)了卷積神經(jīng)網(wǎng)絡(luò)的現(xiàn)實(shí)搭建。1998年,Y.Lecun等人提出卷積神經(jīng)網(wǎng)絡(luò)LeNet,該網(wǎng)絡(luò)由兩個(gè)卷積層、兩個(gè)池化層和兩個(gè)全連接層構(gòu)成,在手寫數(shù)字的識(shí)別中表現(xiàn)優(yōu)異,為卷積神經(jīng)網(wǎng)絡(luò)由理論走向?qū)嶋H應(yīng)用打開了大門。繼LeNet之后,經(jīng)過幾十年發(fā)展,又出現(xiàn)了AlexNet[3]、GoogleNet、VGG、DRL四種經(jīng)典CNN模型,神經(jīng)網(wǎng)絡(luò)的深度和卷積的計(jì)算量不斷加深擴(kuò)大。
從本質(zhì)上來說,卷積神經(jīng)網(wǎng)絡(luò)是多層感知機(jī),核心思想是將局部感受野、權(quán)值共享以及時(shí)間或空間上的亞采樣三種思想融為一體,一方面減少了權(quán)值的數(shù)量,使得網(wǎng)絡(luò)的計(jì)算量大大減少,更有利于網(wǎng)絡(luò)的優(yōu)化,另一方面也降低了過擬合的風(fēng)險(xiǎn)。在二維圖像處理方面,卷積神經(jīng)網(wǎng)絡(luò)更具優(yōu)勢(shì),它能自行抽取豐富的圖像特征,包括顏色、紋理、形狀及圖像的拓?fù)浣Y(jié)構(gòu),在識(shí)別圖像的位移、縮放及其他形式扭曲不變性的應(yīng)用上,卷積神經(jīng)網(wǎng)絡(luò)具有更好的魯棒性和更高的運(yùn)算效率。
利用卷積神經(jīng)網(wǎng)絡(luò)對(duì)樓梯進(jìn)行識(shí)別,進(jìn)一步提高機(jī)器人的性能,對(duì)機(jī)器人的發(fā)展和應(yīng)用意義重大。尤其在軍事應(yīng)用方面,若機(jī)器人在執(zhí)行偵察任務(wù)過程中能夠迅速準(zhǔn)確地識(shí)別出樓梯或類似障礙物,做出相應(yīng)的處置動(dòng)作,那么任務(wù)成功的可能性也會(huì)有一定程度的提高。
本文采用的數(shù)據(jù)集由樓梯圖片集和非樓梯圖片集構(gòu)成。訓(xùn)練集共500張,有正樣本400張,為各類樓梯圖片,負(fù)樣本100張,包含桌、椅、飲水機(jī)等干擾物體;測(cè)試集共300張,包含正樣本200張,負(fù)樣本100張。圖片大小不統(tǒng)一,視角大多由下向上,符合小型機(jī)器人視角,測(cè)試集中負(fù)樣本種類較多,大大增加了樓梯識(shí)別的難度。部分圖片如圖1所示:
圖1
本文采用深度卷積神經(jīng)網(wǎng)絡(luò)AlexNet和ResNet34[1]進(jìn)行對(duì)比實(shí)驗(yàn),兩種網(wǎng)絡(luò)結(jié)均是卷積神經(jīng)網(wǎng)絡(luò)問世以來的經(jīng)典模型和佼佼者,分別在2012和2015年取得了ImageNet最好成績(jī)。
AlexNet由Alex Krizhevsky等人設(shè)計(jì),該模型包括5個(gè)卷積層、3個(gè)池化層和3個(gè)全連接層。如圖2所示:
圖2 AlexNet網(wǎng)絡(luò)配置
從輸入到輸出,該模型可分為8個(gè)模塊。模塊一和模塊二流程相同,都是對(duì)數(shù)據(jù)進(jìn)行“卷積-激活-降采樣-標(biāo)準(zhǔn)化”的過程,卷積層(Convolutional Layer)后緊跟池化層(Pooling Layer),采用激活函數(shù)ReLU加快收斂速度,最后添加標(biāo)準(zhǔn)化層(Normalization Layer)控制數(shù)值范圍,以便后續(xù)的計(jì)算。經(jīng)過前兩個(gè)模塊的處理,輸入到模塊三和四的特征數(shù)據(jù)量已經(jīng)比較小,所以在這兩個(gè)模塊中省去了降采樣過程,模塊五在重復(fù)卷積之后再次降采樣,進(jìn)一步減少數(shù)據(jù)量??偟膩碚f,模塊一至五都是在做卷積運(yùn)算,根據(jù)每一模塊接收到的圖像尺寸決定是否進(jìn)行降采樣,加上一些必要的函數(shù)來控制數(shù)值。模塊六和七是全連接層,結(jié)構(gòu)與人工神經(jīng)網(wǎng)絡(luò)相同,由于其連接節(jié)點(diǎn)過多,為避免過擬合,引入Dropout層,隨機(jī)刪除一般的神經(jīng)元,但是不改動(dòng)輸入層和輸出層,通過這種方式增強(qiáng)網(wǎng)絡(luò)模型的魯棒性。最后模塊八是一個(gè)輸出層,結(jié)合Softmax函數(shù)得出識(shí)別的結(jié)果。
ResNet由何愷明等人設(shè)計(jì)提出。AlexNet問世以來,后續(xù)的卷積神經(jīng)網(wǎng)絡(luò)如GoogleNet、VGG都著力于增加網(wǎng)絡(luò)的深度,更深層次的學(xué)習(xí)網(wǎng)絡(luò)固然對(duì)最后的分類和識(shí)別的效果有進(jìn)一步的提高,但事實(shí)上,簡(jiǎn)單地堆疊層數(shù),加深網(wǎng)絡(luò)深度,在網(wǎng)絡(luò)很深的時(shí)候,其性能會(huì)逐漸趨于飽和甚至下降,這就會(huì)使訓(xùn)練越來越困難,識(shí)別和分類準(zhǔn)確率也會(huì)下降,這就是梯度消失(Vanish?ing Gradient)問題。ResNet模型主要解決一個(gè)問題:更深的神經(jīng)網(wǎng)絡(luò)如何收斂。該模型主要的創(chuàng)新點(diǎn)在于引入了殘差網(wǎng)絡(luò)(Residual Network)結(jié)構(gòu),通過在輸出和輸入之間創(chuàng)建一個(gè)捷徑連接(Identity Shortcut Connec?tion),直接跳過一層或多層,即圖3中的曲線。自身的捷徑連接既不會(huì)添加額外的參數(shù)也不會(huì)增加計(jì)算復(fù)雜度,整個(gè)網(wǎng)絡(luò)依然可以用SGD+反向傳播來做端到端的訓(xùn)練,并且可以很容易用大眾框架,如Caffe來實(shí)現(xiàn),而不用修改slover配置。這樣可以解決梯度消失問題,從而把網(wǎng)絡(luò)做地很深。殘差塊的基本結(jié)構(gòu)如圖3所示。
當(dāng)構(gòu)造一個(gè)深度模型時(shí),把新加的層叫做identity mapping,其他層則從學(xué)好的淺層模型中復(fù)制過來,下面就要保證這個(gè)構(gòu)造的深度模型并不會(huì)比之前的淺層模型產(chǎn)生更高的訓(xùn)練誤差,何愷明團(tuán)隊(duì)針對(duì)這個(gè)難點(diǎn)提出了一個(gè)深度殘差學(xué)習(xí)框架來解決網(wǎng)絡(luò)加深之后準(zhǔn)確率下降的問題。用公式來表示,若我們需要的理想的identity mapping定義為H(x),那么新加的非線性層就是F(x)=H(x)-x,原始的mapping就從H(x)變成了F(x)+x,F(xiàn)(x)就是層與層之間的殘差。極端情況下,如果之前的H(x)是最優(yōu)的,那么新加的identity mappingF(x)就應(yīng)該都是0。整個(gè)殘差網(wǎng)絡(luò)是端對(duì)端的,可以通過隨機(jī)梯度下降反向傳播,收斂更快,錯(cuò)誤率更低,而且實(shí)現(xiàn)起來很簡(jiǎn)單,在Caffe中可以用Elt?wise層實(shí)現(xiàn)。
圖3 殘差塊結(jié)構(gòu)
從圖3中可以看出,殘差塊基本結(jié)構(gòu)有兩層,x輸入后經(jīng)過兩個(gè)權(quán)值和一個(gè)非線性函數(shù)ReLU的運(yùn)算,如下表達(dá)式:
然后通過一個(gè)捷徑連接和第二個(gè)ReLU函數(shù),獲得輸出y:
當(dāng)需要對(duì)輸入和輸出維數(shù)進(jìn)行變化時(shí),可以在進(jìn)行捷徑連接時(shí)對(duì)x做一個(gè)線性變換,添加系數(shù)W,如下式:
通常情況下,由于單層的殘差塊并不能提升網(wǎng)絡(luò)性能,系數(shù)W要大于1。
本文中AlexNet和ResNet運(yùn)行在深度學(xué)習(xí)框架Caffe上,采用GPU+cuDNN運(yùn)行。由于輸入的原始圖片大小不一,在進(jìn)行網(wǎng)絡(luò)訓(xùn)練之前,我們將所有圖片統(tǒng)一大小,然后借助Caffe中的工具生成均值文件作為數(shù)據(jù)輸入。兩種網(wǎng)絡(luò)模型的實(shí)驗(yàn)結(jié)果如表1所示:
表1
從表中看出,ResNet網(wǎng)絡(luò)模型表現(xiàn)更為出色,對(duì)樓梯的識(shí)別準(zhǔn)確率較高,收斂速度也更快。結(jié)合兩種網(wǎng)絡(luò)模型的結(jié)構(gòu)和算法原理進(jìn)行分析,有以下幾點(diǎn)主要原因:
(1)神經(jīng)網(wǎng)絡(luò)模型的深度對(duì)分類和識(shí)別的效果有很大影響,更深的網(wǎng)絡(luò)對(duì)圖片特征的提取能力更強(qiáng),有利于提高準(zhǔn)確率。從網(wǎng)絡(luò)深度來看,與AlexNet相比,ResNet占據(jù)天然優(yōu)勢(shì),并且整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)存在明顯層級(jí),特征圖個(gè)數(shù)隨層數(shù)依次遞進(jìn),保證了輸出特征表達(dá)能力不下降。事實(shí)上,AlexNet在表征能力上并不存在巨大優(yōu)勢(shì),但是其重復(fù)的參數(shù)化使得加深網(wǎng)絡(luò)深度變得可行。
(2)ResNet可優(yōu)化能力更強(qiáng),在進(jìn)行前向和反向傳播時(shí),11層的AlexNet比34層的ResNet更容易產(chǎn)生震蕩,而ResNet則要平穩(wěn)一些,簡(jiǎn)化了深度模型的優(yōu)化。
(3)沒有使用AlexNet中的Dropout層,減少了的池化層數(shù)量,大量使用下采樣,提高傳播效率,利用BN和全局平均池化進(jìn)行正則化,加快了訓(xùn)練速度。
(4)就收斂性能方面來說,不同于AlexNet或之前的卷積神經(jīng)網(wǎng)絡(luò),殘差網(wǎng)絡(luò)在加深網(wǎng)絡(luò)深度之后,性能并未出現(xiàn)退化,反而有了一定程度的提升,也就是說殘差網(wǎng)絡(luò)能夠獲得更低的收斂損失,并將過擬合程度控制在可接受的范圍內(nèi),同時(shí)也說明結(jié)合較深的網(wǎng)絡(luò)深度,殘差網(wǎng)絡(luò)才更能凸顯其優(yōu)勢(shì),與較淺的神經(jīng)網(wǎng)絡(luò)拉開性能差距。
圖4是ResNet網(wǎng)絡(luò)識(shí)別錯(cuò)誤的一些圖像,不難發(fā)現(xiàn),遮擋物對(duì)識(shí)別效果影響很大,其次,數(shù)據(jù)收集不足,導(dǎo)致特征的提取和學(xué)習(xí)不夠充分也給提高準(zhǔn)確率帶來了一些障礙。
圖4
本文采用深度學(xué)習(xí)方法,結(jié)合開源框架Caffe,對(duì)數(shù)據(jù)集進(jìn)行了訓(xùn)練和測(cè)試,實(shí)驗(yàn)結(jié)果顯示,ResNet獲得的準(zhǔn)確率高于AlexNet,可見前者在樓梯識(shí)別上的性能優(yōu)于后者。深度學(xué)習(xí)在圖像的檢測(cè)、識(shí)別和處理等方面仍具有巨大的探索空間和廣泛的應(yīng)用前景,不難預(yù)見,在不久的將來其必將成為該領(lǐng)域的主流方法。