邢志祥,顧凰琳,錢 輝,張 瑩,汪李金
(常州大學環(huán)境與安全工程學院,江蘇 常州 213164)
許多車站、地鐵、商場人流較多的地方容易發(fā)生安全事故,一旦發(fā)生踩踏事故,后果不堪設想。因此,及時地監(jiān)測客流情況,對行人進行檢測分析十分重要。近幾年發(fā)展起來的智能安監(jiān)技術、無人駕駛技術等隨著計算機視覺的興起而成為研究的熱點,使以計算機視覺為基礎的行人檢測技術在實際應用中更具有實時性、準確性和可靠性,具有很大的研究前景。
傳統(tǒng)的行人檢測技術主要包括4個步驟:圖像預處理、區(qū)域選擇、特征提取和分類器分類。其中,圖像預處理主要通過對圖像進行降噪處理,突出行人的圖像特征以便更好地進行特征分類;區(qū)域選擇主要是對行人的位置進行定位;特征提取主要通過計算機的語言算法來提取圖像中的行人特征,提取的特征包括HOG特征[1]、Haar-like特征[2]、Strip特征[3]、Edgelet特征[4]、Shapelet特征[5]等;分類器分類是用來判斷圖像中是否有行人,以達到檢測行人的目的,分類器的選擇也有很多,主要包括SVM分類器[6]、Adaboost分類器[7]等。
傳統(tǒng)的行人檢測方法已經不能滿足行人檢測精確性和實時性的要求,而隨著深度學習在全世界范圍的流行應用,出現了新的行人檢測方法,即基于卷積神經網絡的行人檢測方法。該方法不僅可以提高行人特征的表達能力,同時也可以降低行人檢測的錯誤率,在整體功能上都得到了優(yōu)化,且在實際應用中具有廣泛的應用前景,也是近幾年的研究熱點。為此,本文對基于卷積神經網絡的行人檢測方法的最新研究進展及其未來的發(fā)展方向進行了概述。
卷積神經網絡(Convolutional Neural Network,CNN)[8-9]是一種受到生物自然視覺感知啟發(fā)而建立的一種深度學習體系結構。1959年,Hubel和Wiesel發(fā)現動物視覺皮層細胞可以感受到光的檢測;受此啟發(fā),1980年福島邦彥提出了新的識別器,這是CNN的前身[10];1990年,加拿大的Lecun提出了CNN的深度學習框架,并且通過自己設計的LeNet-5卷積神經網絡對手寫數字進行圖像分類且效果顯著[11];2012年,Krizhevsky等[12]設計了新的CNN結構,即AlexNet,這個網絡框架在圖像分類領域取得了巨大的成功,大大提高了圖片分類的準確率;2014年,Simonyan等[13]以AlexNet-8為基礎提出了VGG的卷積神經網絡框架;此后,Szegedy等[14]、He等[15]分別提出了GoogLeNet和Res Net的卷積神經網絡框架,這些網絡框架結構都加深了網絡,大大提高了圖像識別的準確率??梢?,CNN正在以飛快的速度發(fā)展,其框架結構也得到了不斷的完善。
CNN指那些至少使用一層卷積運算來替代一般的矩陣乘法運算的神經網絡。CNN經典模型LeNet-5的網絡結構如圖1所示。
圖1 卷積神經網絡經典模型LeNet-5的網絡結構Fig.1 Structure of the classical model LeNet-5 network based on convolutional neural network
由圖1可見,CNN主要由輸入層、卷積層、池化層、全連接層和輸出層構成。
CNN復合多個卷積層和池化層對輸入數據進行加工,并在連接層實現與輸出目標之間的映射。CNN運算的主要思想有三個:稀疏交互、參數共享和等變表示[16]。其中,稀疏交互(sparse interactions)是指卷積核的大小遠遠小于輸入圖片的大小,通過存儲較少的參數來提高運算的效率;參數共享(parameter sharing)是指相同的參數可以在一個模型的多個函數中使用;等變表示(equivariant representions)是指CNN的一個函數發(fā)生輸入改變會使得它的輸出以同樣的方式發(fā)生變化。本文主要介紹CNN的主要組成模塊及其研究現狀。
1.2.1 卷積層
卷積層由多個卷積核構成,可以計算出不同的特征映射,其主要用途是為了提取圖像中檢測物體的特征。卷積層越多,能夠提取到的特征越多,檢測的準確性就越高,但是網絡過深也會影響卷積的速度,造成實用性較差。目前卷積層的研究工作已有許多進展,例如平鋪卷積、擴張卷積、轉置卷積、NIN網絡、Inception模塊等。
平鋪卷積(tiled convolution)[17]是一種改進的CNN模型,它可以通過拼貼或者疊加特征圖來學習旋轉和尺寸不變的特征,該模型同時融合了參數共享和學習特征多樣性的特點。
擴張卷積(dilated convolution)[18]除了有與普通的CNN一樣的卷積核以外,還多了一個擴張率參數,使其可以增大網絡的接受區(qū)域大小,從而覆蓋更多信息。目前擴張卷積在諸如圖像分割、機器翻譯、語音合成和語音識別中應用廣泛。
轉置卷積(transposed convolution)[19]也可以稱為是相應的傳統(tǒng)CNN的反向傳遞,所以也可以稱為反卷積(deconvolution)。使用反卷積可以使得圖像變大,特征更明顯,可以有效地重建輸入圖像。
NIN網絡(network in network)是由Lin等[20]提出來的一種改進的網絡,它通過使用微神經網絡代替卷積核來提取特征,可以減少在進行非線性函數卷積運算時可能出現的過擬合現象,增強了局部模型的抽象能力。
Inception模塊是由Szegedy等[21]提出的,它可以廣泛應用到CNN中,通過設置各種卷積核來增加網絡的寬度和深度,但也不會增加網絡的運算難度。一般來說使用較多的是尺寸為1×1的卷積核,因為它可以自然地將一些相關性很高的、在同一空間位置但不同通道的特征連接在一起,當然也可以使用稍大尺寸的卷積核,例如3×3或者5×5的卷積核。
卷積層是CNN中必不可少的一部分,卷積核越多,得到的特征越多,學習到的信息越多,但同時網絡變復雜,計算速度下降,容易出現過擬合的現象。許多新功能的卷積層已被提出并且得到運用,在實際訓練中可以根據需要選擇合適的卷積層。
1.2.2 池化層
池化層也是CNN中比較重要的一個概念,主要用于對卷積層輸出特征進行壓縮,以加快運算速度,也可以使對于一些特征的探測過程變得更穩(wěn)健。池化層的池化過程包括最大池化、Lp池化、隨機池化、頻譜池化、空間金字塔池化等池化方法。
最大池化是指對領域內的特征點取最大值,它可以減小因為卷積層參數誤差而造成估計均值的偏移,是研究者們經常使用的一種池化方法,且方便可行。
Lp池化是Hyv?rinen等[22]提出的一種模仿生物細胞并受到啟發(fā)的池化方法。Lp池化的表達式如下:
(1)
式中:yi,j,k為第k個特征映射在位置(i,j)處的池化算子的輸出;am,n,k為第k個特征圖在池化區(qū)域范圍Rij內位置(m,n)處的特征值;Rij為池化的區(qū)域范圍;p為調節(jié)系數,當p=1時,可以把Lp池化近似為平均池化,當p=∞時,可以把Lp池化近似為最大池化。
隨機池化(stochastic pooling)是Zeiler等[23]提出的根據多項分布隨機提取特征值來進行池化的方法,它可以防止CNN可能會出現的過擬合現象。
頻譜池化(spectral pooling)是Rippel等[24]提出的一種池化方法,它通過在頻域中截取信號特征來降低維度,它在比其他的池化方法更靈活的同時也提高了卷積效率。
空間金字塔池化(spatial pyramid pooling)是He等[25]建立的一種池化方法,它的意義在于可以使得任意大小的特征圖都能夠轉換成固定大小的特征向量,可以處理各種不同大小的圖像。
池化層通過池化方法減少卷積層的連接數量,可以降低卷積網絡的計算量。不同類型的池化層可以根據各自不同的處理方式來應對具體的實際問題,并隨著研究的深入,池化方法的種類也在不斷地更新。
1.2.3 全連接層
CNN的最后通常需要一兩層的全連接層來把卷積輸出的二維特征圖轉化成一維的向量。全連接層的作用是把卷積過后的特征圖轉變成可以用來進行分類的數據。全連接層的方法主要包括Dropout和DropConnect等。
Hinton等[26]提出了Dropout方法,該方法在使用過程中被證明可以有效減小過擬合現象。Dropout方法可以防止網絡過度依賴任何一個(或任何小組合)的神經元,并且即使在沒有某些信息的情況下也可以使網絡準確。Wan等[27]進一步提出DropConnect方法,它的主要原理是隨機切斷全連接層的神經元和前一層神經元的連接,從而提高CNN的泛化能力。
全連接層的每一個結點都與上一層的所有結點相連,用來把前邊提取到的特征綜合起來,起到將學到的“分布式特征表示”映射到樣本標記空間的作用,可以提高CNN的性能,因此在CNN中的地位也十分重要。
近年來一些地區(qū)客流擁堵造成的踩踏事故時有發(fā)生,行人檢測技術在安全工程領域也可以發(fā)揮重要的作用。深度學習給出了許多問題的解決方案,因此基于深度學習的CNN也在迅速發(fā)展,其在行人檢測方面已經取得了許多研究成果。本文主要介紹在行人檢測方面經常使用到的數據庫以及CNN在行人檢測中的具體應用。
在行人檢測的研究中,選擇適當的行人檢測數據庫來進行試驗是至關重要的,研究者可以根據研究情況的不同來選擇合適的行人檢測數據庫,或者根據實際情況自己制作行人檢測數據庫。
常用的行人檢測數據庫有INRIA數據庫、Daimler數據庫、Caltech數據庫、NICTA數據庫、CVC數據庫、USC數據庫[28]等。
INRIA數據庫的訓練集有正樣本614張、負樣本1 218張,測試集有正樣本288張、負樣本453張,是最常用的靜態(tài)行人檢測數據庫。
Daimler數據庫有檢測和分類兩個數據庫,其中檢測數據庫的訓練集有兩類大小的正樣本各15 560張、負樣本6 744張,測試集是一段小視頻,約有21 790張圖片;分類數據庫有3個訓練集和2個測試集,每個訓練集和測試集都有4 800張正樣本和5 000張負樣本。
Caltech數據庫是較大規(guī)模的數據庫,約10 h的視頻,該數據庫包括6個訓練集和5個測試集。
NICTA數據庫的訓練集包括187 000個行人、5 200個負樣本,測試集包括6 900個行人、50 000個負樣本。
CVC數據庫主要有3個數據集,用于在車輛輔助駕駛中的行人檢測,這個數據庫也在不斷的更新中。
USC數據庫包括3個數據集(USC-A、USC-B、USC-C)都標注了信息,其中USC-A數據集有205張圖片,USC-B數據集有54張圖片,USC-C數據集有100張圖片。
CNN在實際生活中的運用已經可以解決許多問題,例如圖像分類、目標檢測、文本檢測、視覺顯著性檢測、動作識別、場景標記、語音和自然語言處理等。
行人檢測一直是計算機視覺中長期存在的重要問題,主要的難點在于如何準確、有效地定位圖像或者視頻中的行人[29]。傳統(tǒng)的行人檢測方法主要存在兩個問題:①使用滑動窗口進行區(qū)域選擇時沒有針對性,增加了復雜度;②特征提取時圖像的一些多樣性特征并不能很好地被提取出來。CNN可以很好地解決類似問題。20世紀90年代,CNN就已經開始在行人檢測中得到應用,但由于缺乏較好的數據庫及處理圖像的資源,進展一直很緩慢。直到2012年,CNN在ImageNet挑戰(zhàn)中的巨大成功重新激發(fā)了人們對基于CNN的目標檢測的興趣,因此行人檢測方法有了突破性的發(fā)展[30]。如Sermanet等[31]運用了一種卷積系數編碼的方法來訓練卷積層,然后微調整個CNN,這種方法可以在能力范圍內提取到更多的行人特征,在行人數據庫的訓練檢測上效果良好;Chen等[32]提出了一種聯(lián)合的行人檢測模型,將提取特征和一些遮擋處理以及特征分類都放在一個CNN中,這些端到端的訓練可以更好地對特性進行分類;Tian等[33]將行人檢測與學習上下文的任務整合來訓練,在訓練過程中可以包含大多數行人及背景的特征信息,可以對CNN的行人檢測進行優(yōu)化,提高了行人檢測的準確率;Li等[34]提出了一種基于記憶神經網絡的行人檢測方法,該檢測方法將輸入的圖像轉化為圖像序列,并通過CNN對生成的圖像序列提取序列特征,序列特征學習記憶輸出行人的位置掩碼圖,最后可以框出行人完成檢測。
除此以外,基于Region Proposal的深度學習算法也可以應用在行人檢測領域。如Girshick等[35]提出了R-CNN模型,這種模型利用selective search算法提取候選區(qū)域,然后縮放到統(tǒng)一尺寸通過CNN來輸出特征,并通過SVM分類器來分類,較大幅度地提高了目標檢測的準確率,但由于訓練步驟繁瑣和速度慢而較難應用于實際的目標檢測中;針對R-CNN模型運行速度慢這個問題,出現了SPP-NET模型[25],它與R-CNN模型的訓練步驟基本一致,只是在進行特征提取時不需要每個候選區(qū)域都經過CNN,只需把圖片輸入即可,這大大提高了訓練速度;Girshick[36]通過融合R-CNN模型和SPP-NET模型的優(yōu)點,提出一種新的Fast R-CNN模型,該模型只需提取待檢測圖像的特征,這使得網絡的訓練和測試更方便;Faster R-CNN模型是Ren等[37]提出的,該模型將Region Proposal和CNN連接在一起,使用端到端的網絡進行目標檢測,在速度和精度上都有了提高。
基于Region Proposal的深度學習模型在行人檢測中的應用雖然可以提高行人檢測的速度和精度,但仍存在一些不可避免的問題。上述這些行人檢測方法[25,35-37]的檢測精度主要取決于提取候選區(qū)域的算法的準確度,如果檢測背景模糊或者目標不明顯,則提取候選區(qū)域的算法準確度會降低,從而使得最終的檢測精度也會降低。
R-CNN、SPP-NET、Fast R-CNN、Faster R-CNN模型的逐步發(fā)展,在不斷精簡目標檢測流程的同時,也在逐步提高目標檢測的精度和速度,如Faster R-CNN模型已經成為主流的目標檢測方法之一,但是仍然無法滿足實時性要求。而基于回歸方法的深度學習目標檢測算法由此顯現出其優(yōu)越性,目前應用較多的是YOLO算法和SSD算法。其中,YOLO算法[38]的優(yōu)點有:①運行速度快,可以進行實時檢測;②采用全圖信息進行預測,可以減少背景預測的錯誤率;③可以學習到目標的概括信息,比大多數的目標檢測效果好。SSD算法[39]相比YOLO算法的目標檢測速度更快,檢測精度也基本可以滿足要求,這種算法也讓人們看到了目標檢測在實際運用中的可行性。
基于回歸方法的深度學習目標檢測算法雖然可以大大地提高目標檢測的速度,滿足實時性的要求,但是由于網絡結構層較少,在檢測時不如基于Region Proposal的深度學習模型的目標檢測精度高,還需要研究者們進行更深入的探索。
本文對基于卷積神經網絡(CNN)的行人檢測方法進行了具體的分析。首先概述了CNN的發(fā)展歷史、結構和發(fā)展現狀,其中對CNN的卷積層、池化層和全連接層進行了具體的概述;其次對基于CNN的行人檢測方法的應用進行了介紹,主要包括行人檢測數據庫和CNN在行人檢測中的應用現狀,并在對行人檢測的應用中介紹了幾種可以用于行人檢測的深度學習算法。由此得出如下結論:基于CNN的行人檢測方法發(fā)展十分迅速,并且大大提高了行人檢測的準確性和實用性;在實際問題的運用中,基于CNN的行人檢測方法還有待進一步發(fā)展,一旦將這種先進的行人檢測方法運用到車站、地鐵等人流較多的地方,可以有效地分析人流擁堵的狀態(tài),避免安全事故的發(fā)生,如若將其運用于火災事故中,也可以對行人進行有效的疏散,具有實際運用的意義。但是由于實時性的局限性,這種行人檢測的方法還未能大規(guī)模地投入到實際中,需要研究者們進行深入的探索與實踐。