李?yuàn)W
(遼寧 大連 116100)
隨著社會(huì)的發(fā)展,汽車已經(jīng)越來(lái)越成為我們的生活中不可或缺的交通工具。我國(guó)的人均汽車擁有量也在呈持續(xù)上升狀態(tài),汽車給當(dāng)今社會(huì)帶來(lái)了極大的推動(dòng)力,給人們提供生活上的許多便利,改變了人們的交通出行方式,隨著汽車的快速發(fā)展,其所帶來(lái)的問(wèn)題也日漸顯露出來(lái),其中最重要的問(wèn)題就是安全問(wèn)題。嚴(yán)峻的交通安全問(wèn)題,受到社會(huì)的廣泛關(guān)注。
汽車在行駛過(guò)程中,主要由駕駛員控制,由此可見(jiàn),駕駛員是汽車駕駛中最重要的一個(gè)人。研究指出,絕大多數(shù)交通事故的發(fā)生,都要?dú)w咎于駕駛員的狀態(tài)及反應(yīng),首當(dāng)其沖的便是疲勞駕駛或酒駕等?;诖爽F(xiàn)象,有關(guān)人士通過(guò)研究表明,大多數(shù)的交通事故實(shí)際上是可以避免的。然而現(xiàn)實(shí)生活中,汽車都是由駕駛員駕駛,道路上的各種信息都是通過(guò)駕駛員來(lái)感知的,如果由于特殊原因?qū)е埋{駛員判斷錯(cuò)誤,那么就可能引發(fā)交通事故。試想如果現(xiàn)在有一個(gè)全自動(dòng)的系統(tǒng),能夠在發(fā)生事故之前避開(kāi)危險(xiǎn),這不僅可以大大降低交通事故的數(shù)量,而且可以保障人們的生命安全,于是便有了智能車輛。其最重要的功能就是能夠根據(jù)道路信息,結(jié)合相關(guān)技術(shù),幫助駕駛員駕駛汽車或直接代替駕駛員駕駛汽車,通過(guò)智能判斷,避開(kāi)道路上的危險(xiǎn)。由此可見(jiàn),智能車輛越來(lái)越符合社會(huì)的需求,這也是許多國(guó)家花費(fèi)大量人力物力研究智能車輛的發(fā)展的原因,所以,本課題具有重要的研究意義和應(yīng)用價(jià)值。
Felzenszwalb等人提出了基于利用彈簧形變來(lái)模擬目標(biāo)姿態(tài)形變的模型,對(duì)于不同的姿態(tài)以及形狀的相同種類的物體檢測(cè)有著非常好的效果,為后來(lái)目標(biāo)檢測(cè)算法的研究奠定了良好的基礎(chǔ)。Dalai等人提出了將有向HOG描述子與SIFT特征級(jí)聯(lián),得到新的對(duì)目標(biāo)局部區(qū)域有著很好效果的目標(biāo)區(qū)域描述子。該特征描述子改進(jìn)后在行人測(cè)試任務(wù)中取得了很好的效果,橫向?qū)Ρ绕渌椒ǘ家袃?yōu)勢(shì)。但是由于該特征的優(yōu)勢(shì)目前只應(yīng)用于一個(gè)測(cè)試項(xiàng)目,所以還有待進(jìn)一步研究。Riori等人提出了LeNet網(wǎng)絡(luò)模型,由于該網(wǎng)絡(luò)模型基于CNN算法,在二值圖像上的處理優(yōu)勢(shì)明顯展露出來(lái),相較其他算法都要略高一籌。該模型事實(shí)上是CNN中最早的一個(gè)被用于手寫(xiě)數(shù)字識(shí)別任務(wù)的模型,并且在當(dāng)時(shí)取得了最佳效果。Nowlan等人介紹了手勢(shì)識(shí)別系統(tǒng),該系統(tǒng)借助CNN算法來(lái)實(shí)現(xiàn)實(shí)施高精度定位每一幀圖像中手的位置與手勢(shì),由此判斷手勢(shì)狀態(tài)該實(shí)驗(yàn)可在適當(dāng)環(huán)境中進(jìn)行快速高精度的運(yùn)行,并得到準(zhǔn)確度幾乎高達(dá)100%的結(jié)果。Ouyang等人提出的行人檢測(cè)任務(wù)中,利用CNN算法,將端到端CNN作為目標(biāo)檢測(cè)人物模型,極大地改善了許多問(wèn)題。
目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)的一個(gè)基礎(chǔ)的任務(wù),主要的目標(biāo)是根據(jù)給定的一張圖片,從中檢測(cè)出我們想要檢測(cè)的物體,用一個(gè)框去將物體包括起來(lái)。本文用4個(gè)值來(lái)表示一個(gè)物體,分別是物體在整幅圖像中的左下角的x,y坐標(biāo),以及物體的長(zhǎng)和寬。
本文在自建的數(shù)據(jù)集上進(jìn)行目標(biāo)檢測(cè)任務(wù),數(shù)據(jù)集中包括的圖片為高速公路上采集的數(shù)據(jù),總共包括13000張圖片,我們選擇其中的10000張作為訓(xùn)練數(shù)據(jù)集,其余的作為測(cè)試數(shù)據(jù)集??偣舶?個(gè)類別,分別是車輛、自行車、行人、摩托車以及廣告牌,另外包括一個(gè)背景類,背景類的類別是0。
對(duì)于一個(gè)完整的目標(biāo)過(guò)程來(lái)說(shuō),我們首先要做的是構(gòu)建一個(gè)供我們的算法學(xué)習(xí)的數(shù)據(jù)集,這個(gè)數(shù)據(jù)集中應(yīng)該包括原始圖像,以及原始圖像的每一個(gè)物體的位置,詳細(xì)的信息我們已經(jīng)在2.2中介紹過(guò)了。接下來(lái)我們需要對(duì)數(shù)據(jù)集做一個(gè)簡(jiǎn)單的處理,由于本文使用的算法的原因,我們需要將圖像調(diào)整為固定的大小,本文中所使用的固定的大小為300×300。接下來(lái)需要對(duì)數(shù)據(jù)做一個(gè)增強(qiáng),主要原因是因?yàn)楸疚陌ǖ挠?xùn)練數(shù)據(jù)比較少,因此需要增加數(shù)據(jù)的數(shù)量。
本文中使用的圖像增強(qiáng)操作主要包括圖像的隨機(jī)翻轉(zhuǎn),以及隨機(jī)對(duì)長(zhǎng)和寬做裁剪。第四步是對(duì)構(gòu)造檢測(cè)模型,這一部分我們主要在第三部分進(jìn)行介紹,最后是使用我們已經(jīng)訓(xùn)練好的網(wǎng)絡(luò)對(duì)圖像進(jìn)行預(yù)測(cè),獲得檢測(cè)的最終結(jié)果。
首先,在做檢測(cè)的時(shí)候我們需要使用一個(gè)基礎(chǔ)網(wǎng)絡(luò)來(lái)提取數(shù)據(jù)的特征,由于resnet在圖像分類這一任務(wù)上取得了最好的效果,同時(shí)應(yīng)為其相比vgg來(lái)說(shuō)具有更少的參數(shù)以及更深的網(wǎng)絡(luò)結(jié)構(gòu),因此我們選擇resnet作為我們的基礎(chǔ)網(wǎng)絡(luò)。同時(shí)我們對(duì)基礎(chǔ)網(wǎng)絡(luò)做了如下的修改,首先將resnet最后作為分類的全連接層去掉,本文在此基礎(chǔ)上增加了6個(gè)卷積層,分為三組,每一組包括兩個(gè)卷積層。第一個(gè)卷積層是用來(lái)提取本層的特征的,因此我們使用1×1的卷積核,第二層我們想要獲得不同大小的特征圖,因此這一層我們使用3×3的卷積核,同時(shí)stride設(shè)置為2,這樣卷積過(guò)后的特征圖剛好為原先的一半。
根據(jù)其他人的研究成果,我們發(fā)現(xiàn)使用多種不同尺度的特征圖進(jìn)行預(yù)測(cè),會(huì)獲得比較好的效果,因此本文選擇使用6個(gè)卷積層的輸出作為我們的網(wǎng)絡(luò)的預(yù)測(cè)層,分 別 是 res3b3,res5c/conv1-2, res5c/conv2-2,res5c/conv3-2,pool6。分別在每一層后會(huì)有兩個(gè)分支,一個(gè)分支負(fù)責(zé)預(yù)測(cè)候選框,直接在特征圖后接一個(gè)卷積層預(yù)測(cè)候選框即可,另外一個(gè)分支負(fù)責(zé)預(yù)測(cè)候選框?qū)儆谀囊粋€(gè)類別,當(dāng)然,每一層預(yù)測(cè)的候選框以及所屬類別的個(gè)數(shù)都是固定的。因此,我們可以獲得6組候選框,接下來(lái)只需要將6組候選框合并到一起并且計(jì)算損失函數(shù),然后更新網(wǎng)絡(luò)的參數(shù)即可。下面介紹網(wǎng)絡(luò)的詳細(xì)結(jié)構(gòu)。
對(duì)于上面的每一層中的一個(gè)特征圖來(lái)說(shuō),會(huì)產(chǎn)生固定個(gè)數(shù)的候選框。比如說(shuō)特征圖的大小是m×n,并且每個(gè)位置產(chǎn)生的候選框的個(gè)數(shù)是k個(gè),那么對(duì)于一個(gè)c類物體的檢測(cè)任務(wù)來(lái)說(shuō),會(huì)產(chǎn)生(c+4)×k×m×n個(gè)數(shù)據(jù)。我們把他叫做prior box。下面介紹k是如何產(chǎn)生的。
之所以需要在特征圖的同一個(gè)位置產(chǎn)生k個(gè)不同的候選框,是因?yàn)檫@樣可以處理不同尺度的物體的問(wèn)題。本文中使用的長(zhǎng)寬比是{2,3},在res3b3這一層的特征圖中我們只使用長(zhǎng)寬比為2,也就是說(shuō),在res3b3這一層,特征圖上的每一個(gè)點(diǎn)產(chǎn)生3個(gè)候選框,其他特征圖上的每一個(gè)點(diǎn)產(chǎn)生4個(gè)候選框。這樣我們就獲得了m×n×k個(gè)候選框。6個(gè)候選框包括兩個(gè)正方形的,分別是min_size×min_size, max_size×max_size,另外兩個(gè)根據(jù)長(zhǎng)寬比以及min_size進(jìn)行計(jì)算。這樣我們就獲得了很多個(gè)候選框了。接下來(lái)需要將候選框與我們的數(shù)據(jù)集中標(biāo)定的真實(shí)的框進(jìn)行匹配,就可以獲得我們的訓(xùn)練的真實(shí)的框了。首先我們需要計(jì)算我們?cè)诋?dāng)前層中產(chǎn)生的候選框與真實(shí)的框的IOU,然后挑選出IOU大于0.5的作為正樣本,小于0.5的就作為負(fù)樣本。但是,這樣做有一個(gè)很大的問(wèn)題就是由于我們?cè)诿恳粋€(gè)位置上都產(chǎn)生一個(gè)候選框,會(huì)有大量的樣本是負(fù)樣本,這樣我們?cè)谟?xùn)練的時(shí)候就會(huì)出現(xiàn)樣本不均衡的現(xiàn)象,會(huì)對(duì)最終的訓(xùn)練結(jié)果產(chǎn)生比較大的影響。因此,我們需要在這里處理樣本不均衡的現(xiàn)象,是使用focal loss來(lái)處理這樣的情況,主要是在loss上對(duì)負(fù)樣本與正樣本做一個(gè)均衡。本文使用的方法是,使用難樣本挖掘方法,本文在前向計(jì)算的時(shí)候會(huì)計(jì)算出每一個(gè)候選框的損失函數(shù)的值,然后選取幾個(gè)具有最大的損失函數(shù)值的候選框保留下來(lái),其他的候選框直接丟掉,以保證我們?cè)谟?xùn)練的過(guò)程中正負(fù)樣本的比例是3:1即可。這樣,我們就獲得了所有的訓(xùn)練的數(shù)據(jù)。
RefineDet在SSD的基礎(chǔ)上做了一些修改,結(jié)合以一步做檢測(cè)的方法的優(yōu)點(diǎn)以及兩步做檢測(cè)的方法的優(yōu)點(diǎn),不僅增加了模型的準(zhǔn)確率,而且模型的速度也比較快。兩步做檢測(cè)的方法通會(huì)有一步用于篩選掉大量的不包含物體的樣本,只保留包含物體的樣本,這樣可以解決正負(fù)樣本不均衡的問(wèn)題,但是一步做檢測(cè)的方法中,往往是不包含這樣的步驟的,所以雖然一步做檢測(cè)的方法速度比較快,但是由于網(wǎng)絡(luò)中存在著大量的負(fù)樣本,因此會(huì)造成樣本不均衡的情況,這樣準(zhǔn)確率上就沒(méi)有非常大的提高了。
RefineDet為了解決這樣的問(wèn)題,在原先SSD的基礎(chǔ)上分成了兩個(gè)模塊,一個(gè)是圖1中上面的部分,我們稱之為ARM,主要用于盡可能多的在這一步移除掉大量的負(fù)樣本,另一個(gè)模塊就是檢測(cè)的模塊,主要用準(zhǔn)確的回歸出物體的位置以及增加檢測(cè)的準(zhǔn)確度。另外由于在多個(gè)位置中做檢測(cè)的時(shí)候特征圖的大小不一致,因此我們?cè)谶B接的時(shí)候,也就是下圖1中的TCB模塊,需要對(duì)較小的圖做一個(gè)反卷積來(lái)增加特征圖的大小,這樣我們就可以把上一層的特征與當(dāng)前層的特征加起來(lái),獲得不同尺度的信息,接下來(lái)就和SSD一樣直接預(yù)測(cè)出候選框的位置以及類別來(lái)了。
圖1
本文所使用的GPU是3塊Titan X,每一塊的顯存為12GB?;A(chǔ)網(wǎng)絡(luò)選擇ResNet,輸入的圖像尺寸為300×300,batch_size為24,即每一塊GPU上的batch為8,網(wǎng)絡(luò)的的優(yōu)化方法為SGD,初始的學(xué)習(xí)率為0.01,在訓(xùn)練的第40000步將為初始學(xué)習(xí)率的1/10,網(wǎng)絡(luò)總共的迭代次數(shù)為60000次,每隔10000次保存一下網(wǎng)絡(luò)的參數(shù)。Momentum為0.9。SSD中所使用的長(zhǎng)寬比在第一個(gè)特征圖中是2,在其他的特征圖中使用的長(zhǎng)款比是2和3。另外在實(shí)際的程序調(diào)試中,本文在生成候選框的時(shí)候,分別對(duì)左下角坐標(biāo)以及候選框的長(zhǎng)款做了微調(diào),在左下角的坐標(biāo)中每個(gè)值中加了0.1,長(zhǎng)寬加了0.2。
在當(dāng)今的信息社會(huì)中,目標(biāo)檢測(cè)在我們的生活中的應(yīng)用也越來(lái)越多,如手機(jī)相機(jī)中的人臉定位,各種監(jiān)控系統(tǒng)中的車輛檢測(cè)人臉檢測(cè),自動(dòng)駕駛中的各種檢測(cè)任務(wù)等。另外隨著GPU并行計(jì)算的發(fā)展,為深度學(xué)習(xí)提供了比較良好的硬件基礎(chǔ)。
本文主要介紹了目標(biāo)檢測(cè)的背景、意義,當(dāng)前的研究現(xiàn)狀以及目標(biāo)檢測(cè)的多個(gè)方法,包括SSD、RefineDet等方法,并進(jìn)行了視線。
目前目標(biāo)檢測(cè)的方法仍然存在著比較多的問(wèn)題,主要包括:(1)對(duì)于較小物體的檢測(cè)比較困難;(2)對(duì)于特別大的物體的定位仍然存在著問(wèn)題。