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