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