顧昊,曲毅
(1.武警工程大學研究生大隊一隊,西安710086;2.武警工程大學信息工程學院,西安710086)
深度學習誕生于人工神經網絡的研究,2006年加拿大多倫多大學教授Geoffrey Hinton和他的學生Rus?lan Salakhutdinov在Science上發文,提出貪婪的逐層訓練算法,解決了深層網絡訓練中的梯度消失問題,自此開啟了深度學習研究浪潮。作為機器學習領域的一個新的研究方向,深度學習已經在計算機視覺、語音識別、信號處理、臨床醫學等各個領域取得了突破性進展。它模擬人類大腦神經元連接結構,通過提取低層特征并加以組合形成更加抽象的高層,表示屬性類別或特征,進而給出數據解釋。
深度神經網絡(Deep Neural Networks,DNN),即是通過深度學習得到的深層次的神經網絡,卷積神經網絡(Convolutional Neural Network,CNN)是常用的深度神經網絡模型之一。80年代初期日本學者Fukushima等人受貓的視覺皮層細胞感受野的概念啟發,提出了神經認知機(Neocognitron),第一次實現了卷積神經網絡的現實搭建。1998年,Y.Lecun等人提出卷積神經網絡LeNet,該網絡由兩個卷積層、兩個池化層和兩個全連接層構成,在手寫數字的識別中表現優異,為卷積神經網絡由理論走向實際應用打開了大門。繼LeNet之后,經過幾十年發展,又出現了AlexNet[3]、GoogleNet、VGG、DRL四種經典CNN模型,神經網絡的深度和卷積的計算量不斷加深擴大。
從本質上來說,卷積神經網絡是多層感知機,核心思想是將局部感受野、權值共享以及時間或空間上的亞采樣三種思想融為一體,一方面減少了權值的數量,使得網絡的計算量大大減少,更有利于網絡的優化,另一方面也降低了過擬合的風險。在二維圖像處理方面,卷積神經網絡更具優勢,它能自行抽取豐富的圖像特征,包括顏色、紋理、形狀及圖像的拓撲結構,在識別圖像的位移、縮放及其他形式扭曲不變性的應用上,卷積神經網絡具有更好的魯棒性和更高的運算效率。
利用卷積神經網絡對樓梯進行識別,進一步提高機器人的性能,對機器人的發展和應用意義重大。尤其在軍事應用方面,若機器人在執行偵察任務過程中能夠迅速準確地識別出樓梯或類似障礙物,做出相應的處置動作,那么任務成功的可能性也會有一定程度的提高。
本文采用的數據集由樓梯圖片集和非樓梯圖片集構成。訓練集共500張,有正樣本400張,為各類樓梯圖片,負樣本100張,包含桌、椅、飲水機等干擾物體;測試集共300張,包含正樣本200張,負樣本100張。圖片大小不統一,視角大多由下向上,符合小型機器人視角,測試集中負樣本種類較多,大大增加了樓梯識別的難度。部分圖片如圖1所示:

圖1
本文采用深度卷積神經網絡AlexNet和ResNet34[1]進行對比實驗,兩種網絡結均是卷積神經網絡問世以來的經典模型和佼佼者,分別在2012和2015年取得了ImageNet最好成績。
AlexNet由Alex Krizhevsky等人設計,該模型包括5個卷積層、3個池化層和3個全連接層。如圖2所示:

圖2 AlexNet網絡配置
從輸入到輸出,該模型可分為8個模塊。模塊一和模塊二流程相同,都是對數據進行“卷積-激活-降采樣-標準化”的過程,卷積層(Convolutional Layer)后緊跟池化層(Pooling Layer),采用激活函數ReLU加快收斂速度,最后添加標準化層(Normalization Layer)控制數值范圍,以便后續的計算。經過前兩個模塊的處理,輸入到模塊三和四的特征數據量已經比較小,所以在這兩個模塊中省去了降采樣過程,模塊五在重復卷積之后再次降采樣,進一步減少數據量。總的來說,模塊一至五都是在做卷積運算,根據每一模塊接收到的圖像尺寸決定是否進行降采樣,加上一些必要的函數來控制數值。模塊六和七是全連接層,結構與人工神經網絡相同,由于其連接節點過多,為避免過擬合,引入Dropout層,隨機刪除一般的神經元,但是不改動輸入層和輸出層,通過這種方式增強網絡模型的魯棒性。最后模塊八是一個輸出層,結合Softmax函數得出識別的結果。
ResNet由何愷明等人設計提出。AlexNet問世以來,后續的卷積神經網絡如GoogleNet、VGG都著力于增加網絡的深度,更深層次的學習網絡固然對最后的分類和識別的效果有進一步的提高,但事實上,簡單地堆疊層數,加深網絡深度,在網絡很深的時候,其性能會逐漸趨于飽和甚至下降,這就會使訓練越來越困難,識別和分類準確率也會下降,這就是梯度消失(Vanish?ing Gradient)問題。ResNet模型主要解決一個問題:更深的神經網絡如何收斂。該模型主要的創新點在于引入了殘差網絡(Residual Network)結構,通過在輸出和輸入之間創建一個捷徑連接(Identity Shortcut Connec?tion),直接跳過一層或多層,即圖3中的曲線。自身的捷徑連接既不會添加額外的參數也不會增加計算復雜度,整個網絡依然可以用SGD+反向傳播來做端到端的訓練,并且可以很容易用大眾框架,如Caffe來實現,而不用修改slover配置。這樣可以解決梯度消失問題,從而把網絡做地很深。殘差塊的基本結構如圖3所示。
當構造一個深度模型時,把新加的層叫做identity mapping,其他層則從學好的淺層模型中復制過來,下面就要保證這個構造的深度模型并不會比之前的淺層模型產生更高的訓練誤差,何愷明團隊針對這個難點提出了一個深度殘差學習框架來解決網絡加深之后準確率下降的問題。用公式來表示,若我們需要的理想的identity mapping定義為H(x),那么新加的非線性層就是F(x)=H(x)-x,原始的mapping就從H(x)變成了F(x)+x,F(x)就是層與層之間的殘差。極端情況下,如果之前的H(x)是最優的,那么新加的identity mappingF(x)就應該都是0。整個殘差網絡是端對端的,可以通過隨機梯度下降反向傳播,收斂更快,錯誤率更低,而且實現起來很簡單,在Caffe中可以用Elt?wise層實現。

圖3 殘差塊結構
從圖3中可以看出,殘差塊基本結構有兩層,x輸入后經過兩個權值和一個非線性函數ReLU的運算,如下表達式:

然后通過一個捷徑連接和第二個ReLU函數,獲得輸出y:

當需要對輸入和輸出維數進行變化時,可以在進行捷徑連接時對x做一個線性變換,添加系數W,如下式:

通常情況下,由于單層的殘差塊并不能提升網絡性能,系數W要大于1。
本文中AlexNet和ResNet運行在深度學習框架Caffe上,采用GPU+cuDNN運行。由于輸入的原始圖片大小不一,在進行網絡訓練之前,我們將所有圖片統一大小,然后借助Caffe中的工具生成均值文件作為數據輸入。兩種網絡模型的實驗結果如表1所示:

表1
從表中看出,ResNet網絡模型表現更為出色,對樓梯的識別準確率較高,收斂速度也更快。結合兩種網絡模型的結構和算法原理進行分析,有以下幾點主要原因:
(1)神經網絡模型的深度對分類和識別的效果有很大影響,更深的網絡對圖片特征的提取能力更強,有利于提高準確率。從網絡深度來看,與AlexNet相比,ResNet占據天然優勢,并且整個網絡結構存在明顯層級,特征圖個數隨層數依次遞進,保證了輸出特征表達能力不下降。事實上,AlexNet在表征能力上并不存在巨大優勢,但是其重復的參數化使得加深網絡深度變得可行。
(2)ResNet可優化能力更強,在進行前向和反向傳播時,11層的AlexNet比34層的ResNet更容易產生震蕩,而ResNet則要平穩一些,簡化了深度模型的優化。
(3)沒有使用AlexNet中的Dropout層,減少了的池化層數量,大量使用下采樣,提高傳播效率,利用BN和全局平均池化進行正則化,加快了訓練速度。
(4)就收斂性能方面來說,不同于AlexNet或之前的卷積神經網絡,殘差網絡在加深網絡深度之后,性能并未出現退化,反而有了一定程度的提升,也就是說殘差網絡能夠獲得更低的收斂損失,并將過擬合程度控制在可接受的范圍內,同時也說明結合較深的網絡深度,殘差網絡才更能凸顯其優勢,與較淺的神經網絡拉開性能差距。
圖4是ResNet網絡識別錯誤的一些圖像,不難發現,遮擋物對識別效果影響很大,其次,數據收集不足,導致特征的提取和學習不夠充分也給提高準確率帶來了一些障礙。

圖4
本文采用深度學習方法,結合開源框架Caffe,對數據集進行了訓練和測試,實驗結果顯示,ResNet獲得的準確率高于AlexNet,可見前者在樓梯識別上的性能優于后者。深度學習在圖像的檢測、識別和處理等方面仍具有巨大的探索空間和廣泛的應用前景,不難預見,在不久的將來其必將成為該領域的主流方法。