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