郭健 王偉 馬壯壯
摘要:行人檢測技術(shù)的應(yīng)用十分普遍,包括人工智能的研究、智能監(jiān)控的應(yīng)用、智能交通、無人駕駛汽車中對行人的檢測、對人體行為進(jìn)行分析后做出預(yù)判等,應(yīng)用深度學(xué)習(xí)的方法對行人進(jìn)行檢測就是人工智能發(fā)展的一個十分重要的方向。文章主要研究的內(nèi)容有3部分,對原SSD算法進(jìn)行了改進(jìn),探討了神經(jīng)網(wǎng)絡(luò)的根本組成與特性,將原SSD算法的基礎(chǔ)VGG16改為ResNet50,提高了檢測速度和精確度。
關(guān)鍵詞:人工智能;行人檢測;SSD;ResNet50;特征融合
中圖分類號:TP39文獻(xiàn)標(biāo)志碼:A
0 引言
本文研究了以深度學(xué)習(xí)和卷積神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的SSD行人檢測算法,對于行人的檢測和提取是計算機視覺處理中十分困難的一項技術(shù)。SSD是深度學(xué)習(xí)出現(xiàn)之后提出的十分有效的檢測算法,它只在頂層進(jìn)行檢測,而且是單級目標(biāo)檢測算法。SSD算法參考了多種數(shù)據(jù)集,同時對多種不同分辨率的圖片進(jìn)行檢測試驗,有效地提高了目標(biāo)檢測的精度,而且是一個非常好用且簡單的單級目標(biāo)檢測器。對于一些小目標(biāo)的檢測,SSD在檢測精確度和檢測速率上都具備亮點。檢測中所用的數(shù)據(jù)集大部分都是PASCAL VOC,MS-COCO[1],PASCAL VOC中不僅有目標(biāo)檢測所用的數(shù)據(jù),還具備圖像分類、語義分割和動作檢測等任務(wù);MS-COCO還包括很多的小對象和更密集的定位對象。
1 應(yīng)用深度學(xué)習(xí)的方法對行人進(jìn)行檢測
行人檢測的任務(wù)就是使用行人檢測算法判斷一張圖片中存在多少個行人,并返回行人存在的位置空間。R-CNN算法流程可分為4個步驟:第一步是區(qū)域提名,候選區(qū)域的生成有1 000~2 000個,是使用SS(Selective Search)算法得到圖片中不經(jīng)過處理的一部分;第二步是區(qū)域大小歸一化,將2 000個候選區(qū)域框縮放到227×227,然后對第一步獲得的候選框用深度網(wǎng)絡(luò)提取特征,這個深度網(wǎng)絡(luò)就是圖片分類網(wǎng)絡(luò);第三步是將在第二步獲得的特征向量傳輸?shù)絊VM分類器中,其作用是對每一類都用非極大值抑制進(jìn)行剔除堆疊建議框的處理;第四步是使用回歸器精修候選框,即對候選框進(jìn)行一個位置的調(diào)整,因為通過SS算法得到的區(qū)域候選框,并不是那么準(zhǔn)[2]。
非極大值抑制剔除重疊建議框的尋找是通過IOU,IOU是兩個目標(biāo)框預(yù)測概率的一個交并比,數(shù)學(xué)表達(dá)式是A∩BA∪B,如圖1所示。對于每一個類別,首先,要找到評分比較高的一個目標(biāo),再去計算其他目標(biāo)框與該目標(biāo)框的IOU值;其次,對每一個邊界框與最高得分的邊界框的IOU值進(jìn)行判斷,如果該值大于給定閾值,則刪除;最后,將得到的最高得分的目標(biāo)保存,在剩下的邊界框中找到得分最高的目標(biāo),依照之前的流程進(jìn)行計算及刪除操作,以此類推,把一切的邊界框都進(jìn)行完[3]。
2 卷積神經(jīng)網(wǎng)絡(luò)概述
在反向傳播算法提出之后,神經(jīng)網(wǎng)絡(luò)被廣泛地應(yīng)用到對機器學(xué)習(xí)的研究,由于神經(jīng)網(wǎng)絡(luò)中含有大量的參數(shù),常常會發(fā)生過度擬合、訓(xùn)練耗時太長的情況,但是相對于Boosting、Logistic回歸、SVM等一些傳統(tǒng)辦法,還是具備很大的優(yōu)越性。卷積神經(jīng)網(wǎng)絡(luò)的3個主要操作是局部感受野、權(quán)值共享和池化層,通過這些操作可以有效地降低網(wǎng)絡(luò)參數(shù)的數(shù)量,并且使網(wǎng)絡(luò)具有了一定的穩(wěn)定性,還能夠降低網(wǎng)絡(luò)因為出現(xiàn)過擬合的缺陷所帶來的影響。簡單的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示[4]。
局部感受野:每一張圖片中所有事物的聯(lián)系并不是整體的、不可分割的,它們之間的空間聯(lián)系只是部分內(nèi)容的相互聯(lián)系,不用對全部的圖像做感受處理,就可以得到整體的信息。采取這種方法能夠有效地縮小所需連接的參數(shù)數(shù)目,大大地降低了計算量,提高了運算速度。
3 SSD網(wǎng)絡(luò)的搭建
SSD最突出的操作是預(yù)測很多邊界框的類別,并通過IOU計算出類別分?jǐn)?shù)以及邊界框可能產(chǎn)生的偏移,應(yīng)用非常小的卷積濾波器對預(yù)測特征圖進(jìn)行處理。原SSD算法是以VGG16為基本網(wǎng)絡(luò)架構(gòu),并在此基礎(chǔ)上增加了幾個卷積層用于獲取比較多的預(yù)測特征圖。該網(wǎng)絡(luò)只是使用了VGG16的Conv5_3,對全連接層6和全連接層7做處理,將其轉(zhuǎn)化為卷積層,從全連接層6和全連接層7中進(jìn)行重采樣參數(shù),將池化層5從卷積核為2×2、步距為2,更改為3×3、步距1,刪除一切丟棄層和全連接層8。
3.1 默認(rèn)邊界框的生成
在預(yù)測的時候,網(wǎng)絡(luò)會為每一個類別的默認(rèn)邊界框生成相應(yīng)的分?jǐn)?shù)。兩個特征矩陣,一個是8×8,一個是4×4,8×8的特征矩陣相對于4×4的特征矩陣,其抽象程度會更低一些,所保留的細(xì)節(jié)信息也會更多一些。用8×8的特征層在相對低層的特征矩陣上去預(yù)測較小的目標(biāo),之后默認(rèn)邊界框就可以和真實邊界框更好地進(jìn)行匹配計算。4×4的特征層適合去檢測相對更大一點的目標(biāo)。如圖3所示,是每個層的默認(rèn)邊界框的尺度以及對應(yīng)的比例,每一個默認(rèn)邊界框的尺度大小里都會有兩個值,這是對于比例一的一種情況,在每一個特征層上面都會去額外添加一個默認(rèn)邊界框。網(wǎng)絡(luò)會在conv4_3層、conv10_2層和conv11_2層生成4個默認(rèn)邊界框,去掉了1∶3和3∶1的比例,其他的預(yù)測特征層都是6個默認(rèn)邊界框[5]。
3.2 預(yù)測器的實現(xiàn)
對于高和寬為m×n、深度為p的預(yù)測特征層,是直接使用卷積核為3×3、深度為p的卷積核來實現(xiàn)的,然后通過3×3的卷積才能生成概率分?jǐn)?shù)以及相對默認(rèn)邊界框的坐標(biāo)偏移量,來預(yù)測邊界框回歸參數(shù)。關(guān)于特征圖中的每個位置,都會生成k個默認(rèn)邊界框,分別去計算c個類別分?jǐn)?shù)以及4個坐標(biāo)偏移量,要用(c+4)×k個卷積核來對圖片進(jìn)行卷積處理。相對于一個m×n大小的預(yù)測特征層,則會有(c+4)×k×m×n個輸出值生成。
3.3 正負(fù)樣本的選取
對于正樣本的選取有兩個匹配準(zhǔn)則:第一個匹配準(zhǔn)則,是對每一個實際邊界框進(jìn)行匹配,選取的是與它IOU值最大的默認(rèn)邊界框;第二個匹配準(zhǔn)則,是對于任意的一個默認(rèn)邊界框。只要與任何一個實際邊界框IOU值大于0.5,那么也認(rèn)為它是正樣本。除了正樣本以外,其他的都可以歸為負(fù)樣本,但是在訓(xùn)練過程中,會出現(xiàn)的情況是默認(rèn)邊界框匹配到的實際邊界框的正樣本個數(shù)很少,基本上都是幾個到十幾個。所以,如果把剩下的默認(rèn)邊界框全部當(dāng)作負(fù)樣本來訓(xùn)練,就會帶來樣本不平衡的情況。負(fù)樣本的選取策略是先對所有的負(fù)樣本計算它的最大置信度損失,如果置信度損失值越大,將負(fù)樣本錯誤地檢測成目標(biāo)的概率就會越大,這是不能接受的。所以,可根據(jù)計算出的置信度損失選取排在前面的負(fù)樣本[6]。
3.4 損失的計算
4 基于ResNet50的SSD行人檢測
使用ResNet50作為基礎(chǔ)搭建SSD網(wǎng)絡(luò),網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示,提高了網(wǎng)絡(luò)關(guān)于行人檢測的精確度,只保留conv4之前的層結(jié)構(gòu)。對于conv4層結(jié)構(gòu)將卷積的步距改為1×1大小,從實驗得出的結(jié)果可以說明,這樣設(shè)計提升了行人檢測的速率與精度。
4.1 算法設(shè)計背景
分層特征提取是SSD網(wǎng)絡(luò)的主要思路,之后再進(jìn)行行人檢測和邊框回歸?;A(chǔ)的SSD網(wǎng)絡(luò)應(yīng)用VGG16提取行人的特征信息,VGG16應(yīng)用較小的卷積核,有利于堆疊更多的層,建立深層的網(wǎng)絡(luò)結(jié)構(gòu),在視覺工作上的性能得到了提高。伴隨著深度學(xué)習(xí)的迅猛發(fā)展,深層卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)建成為深度學(xué)習(xí)的主要方向,研究證明,加深網(wǎng)絡(luò)結(jié)構(gòu)對提高行人特征的檢測具有有效性。但是VGG16屬于相對淺層的網(wǎng)絡(luò),對行人的特征提取不太充分,本文引用ResNet50替換VGG16,以求達(dá)到算法整體性能的提升[7]。
4.2 特征提取網(wǎng)絡(luò)
本文使用的特征提取網(wǎng)絡(luò)為ResNet50,采用殘差結(jié)構(gòu)使得網(wǎng)絡(luò)層數(shù)變多而不會發(fā)生過擬合現(xiàn)象。在卷積層進(jìn)行堆積的過程中,先用1×1的卷積核對原圖片進(jìn)行有效的降維,之后的特征提取利用3×3的卷積核進(jìn)行,可以有效地減少網(wǎng)絡(luò)的參數(shù)數(shù)量。
4.3 特征圖融合模塊
傳統(tǒng)的特征融合,僅僅采用了網(wǎng)絡(luò)最后一層的特征。圖像金字塔是將原圖像變成有差別的圖像,然后進(jìn)行特征提取檢測。多尺度的特征融合可以在檢測的時候進(jìn)行特征融合,就像本文所使用的SSD,就是利用了這樣的多尺度特征融合方式,不需要使用上采樣的步驟,它是從網(wǎng)絡(luò)中生成的預(yù)測特征圖中選取具有差異尺度的特征之后再進(jìn)行融合,這樣做還不會增加多余的計算量[8]。
SSD算法在6層產(chǎn)生了6種尺度的預(yù)測特征圖,深層特征圖對原圖提取的語義信息非常多、特征詮釋能力強,但是缺少目標(biāo)細(xì)節(jié)信息。淺層特征圖對原圖的感受野小,可以有效地檢測原圖中的一些小目標(biāo),但是淺層的卷積層比較少,導(dǎo)致語義信息少,容易造成欠擬合。所以,將淺層特征圖與深層特征圖進(jìn)行多尺度融合,使其能夠做到對小目標(biāo)檢測精確度的提升。
5 實驗條件與結(jié)果
模型的訓(xùn)練需要使用較多的樣本數(shù)據(jù),當(dāng)開始對行人檢測進(jìn)行深入研究時,一系列算法性能公開的數(shù)據(jù)集不斷出現(xiàn),例如PASCAL VOC,COCO,Caltech等。
Caltech行人數(shù)據(jù)庫是目前規(guī)模比較大的行人數(shù)據(jù)庫,對矩形邊框之間的時間所對應(yīng)的關(guān)系和遮擋情況進(jìn)行了有效標(biāo)注。COCO有5種類型標(biāo)注,每一個標(biāo)注都對應(yīng)一個JSON文件。本文采用了一些COCO和Caltech,PASCAL VOC數(shù)據(jù)集。
實驗使用的是微軟操作系統(tǒng)Windows 10,顯卡型號為GTX1650,內(nèi)存為16 G。預(yù)訓(xùn)練權(quán)重使用英偉達(dá)SSD FP32,訓(xùn)練方法為:提前準(zhǔn)備好數(shù)據(jù)集,下載對應(yīng)預(yù)訓(xùn)練模型的權(quán)重,使用GPU運行??傆?xùn)練次數(shù)15 000次,分3個階段,第0~4 999次的訓(xùn)練為第一階段,設(shè)定學(xué)習(xí)率為0.001;第5 000~9 999次為第二階段,設(shè)定學(xué)習(xí)率為0.001;第10 000~14 999次為第三階段,繼續(xù)設(shè)定學(xué)習(xí)率為0.001[9]。
實驗結(jié)果如表2和圖5所示。
6 結(jié)語
本文介紹了CNN卷積網(wǎng)絡(luò)和在沒有深度學(xué)習(xí)之前的行人檢測,分析了一些利用深度學(xué)習(xí)方法構(gòu)建的網(wǎng)絡(luò)進(jìn)行的行人檢測,提出了ResNet50為網(wǎng)絡(luò)基礎(chǔ)的SSD網(wǎng)絡(luò)架構(gòu),并使用特征融合方法對原有的SSD算法做了改良。經(jīng)實驗驗證,這些改進(jìn)對行人的檢測和標(biāo)記是有效的,檢測速率也沒有降低,漏檢率有所降低。
參考文獻(xiàn)
[1]王璐,王帥,張國峰,等.基于語義分割注意力與可見區(qū)域預(yù)測的行人檢測方法[J].東北大學(xué)學(xué)報,2021(9):1261-1267.
[2]熊壽禹,陶青川,戴亞峰.一種輕量級的卷積神經(jīng)網(wǎng)絡(luò)的行人檢測方法[J].計算機應(yīng)用與軟件,2021(9):220-225,231.
[3]康帥,章堅武,朱尊杰,等.改進(jìn)YOLOv4算法的復(fù)雜視覺場景行人檢測方法[J].電信科學(xué),2021(8):46-56.
[4]單志勇,張鐘月.基于改進(jìn)Faster R-CNN算法的行人檢測[J].現(xiàn)代計算機,2021(23):124-128.
[5]張向清.基于YOLO算法的無人機視角下行人小目標(biāo)檢測[J].信息與電腦,2021(15):76-78.
[6]陳敏,王池社,郝達(dá)慧.基于SSD多模態(tài)多尺度特征融合的行人檢測算法[J].金陵科技學(xué)院學(xué)報,2021(2):33-38.
[7]鮑文斌,張冬泉.XSSD-P:改進(jìn)的SSD行人檢測算法[J].計算機工程與應(yīng)用,2022(23):132-141.
[8]于波,劉暢.基于改進(jìn)SSD算法的行人檢測方法[J].電子測量技術(shù),2021(12):24-28.
[9]鄺先驗,楊江波,張建華.基于改進(jìn)的DSSD算法的行人檢測[J].中國儀器儀表,2021(5):21-27.
(編輯 沈 強)