在本文中,我將通過(guò)一個(gè)車(chē)輛檢測(cè)示例,介紹如何使用深度學(xué)習(xí)創(chuàng)建目標(biāo)檢測(cè)器。相同步驟可用于創(chuàng)建任何目標(biāo)檢測(cè)器。
經(jīng)常有朋友和同事問(wèn)我,自動(dòng)駕駛系統(tǒng)怎么感知周?chē)h(huán)境并做出“人類”的決定?如何在系統(tǒng)中使用 MATLAB?在接下來(lái)的文章中,我將解釋如何使用深度學(xué)習(xí)和 MATLAB 完成兩種常見(jiàn)的自動(dòng)駕駛感知任務(wù)。
目標(biāo)檢測(cè)是指在圖像和視頻中對(duì)目標(biāo)進(jìn)行定位和分類。
下圖顯示了一個(gè)三類車(chē)輛檢測(cè)器的輸出結(jié)果,檢測(cè)器對(duì)每一種類型的車(chē)輛進(jìn)行了定位和分類。
對(duì)不同類型車(chē)輛進(jìn)行定位和分類的車(chē)輛檢測(cè)器顯示的輸出結(jié)果
在創(chuàng)建車(chē)輛檢測(cè)器之前,我需要一組標(biāo)注的訓(xùn)練數(shù)據(jù),這是一組用感興趣目標(biāo)的位置和標(biāo)簽標(biāo)注的圖像。更具體地說(shuō),是需要有人對(duì)每幅圖像或視頻幀進(jìn)行篩選,并對(duì)所有感興趣目標(biāo)的位置進(jìn)行標(biāo)注。這個(gè)過(guò)程稱為“真值標(biāo)注”。
真值標(biāo)注通常是創(chuàng)建目標(biāo)檢測(cè)器過(guò)程中最耗時(shí)的部分。下圖左側(cè)顯示的是原始訓(xùn)練圖像,右側(cè)顯示的是經(jīng)過(guò)真值標(biāo)注的相同圖像。
原始輸入圖象(左)和經(jīng)過(guò)地面實(shí)況標(biāo)注的輸入圖象(右)
用于標(biāo)注視頻和圖像數(shù)據(jù)的 Ground Truth Labeler 屏幕截圖
實(shí)現(xiàn)標(biāo)注過(guò)程部分自動(dòng)化的一種方法是使用跟蹤算法。
我使用的KanadeLucas Tomasi算法(KLT)是在實(shí)際應(yīng)用中使用的第一種計(jì)算機(jī)視覺(jué)算法。KLT 算法將目標(biāo)表示為一組特征點(diǎn),然后逐幀跟蹤它們的移動(dòng)位置。我們可以在第一幀中手動(dòng)標(biāo)注一個(gè)或多個(gè)目標(biāo),然后使用跟蹤算法標(biāo)注視頻的其余部分。
Ground Truth Labeler 還允許用戶導(dǎo)入自己的算法進(jìn)行自動(dòng)化標(biāo)注。
我見(jiàn)過(guò)的最常用的方法是,用戶導(dǎo)入自己現(xiàn)有的檢測(cè)器,再進(jìn)行新數(shù)據(jù)標(biāo)注,這可以幫助他們創(chuàng)建出更精確的檢測(cè)器。下圖演示了使用 Ground Truth Labeler 標(biāo)注一系列圖像或視頻的工作流程。
使用MATLAB進(jìn)行自動(dòng)真值標(biāo)注的流程
標(biāo)注數(shù)據(jù)最終以 table 格式存儲(chǔ),table 中列出了訓(xùn)練集視頻中車(chē)輛在每個(gè)時(shí)間點(diǎn)的位置。真值標(biāo)注完成后,我可以開(kāi)始訓(xùn)練車(chē)輛檢測(cè)器。
本例中,我估計(jì)真值標(biāo)注過(guò)程最高可加速119倍。我們以每秒30幀的速度捕捉訓(xùn)練視頻數(shù)據(jù),每4秒對(duì)目標(biāo)進(jìn)行一次標(biāo)注。這意味著我們將節(jié)省中間119幀的標(biāo)注時(shí)間。當(dāng)然這是最好的情況,因?yàn)槲覀冇袝r(shí)還得花時(shí)間更正自動(dòng)標(biāo)注的輸出結(jié)果。
我們的車(chē)輛檢測(cè)器使用的是FasterR-CNN網(wǎng)絡(luò)。首先,定義一個(gè)網(wǎng)絡(luò)架構(gòu),如下面的MATLAB代碼片段所示。Faster R-CNN算法主要分析圖像的區(qū)域,因此輸入層比輸入圖像的預(yù)期尺寸要小。本例中,我選擇了一個(gè)32x32像素的窗口。輸入尺寸需要根據(jù)執(zhí)行時(shí)間和希望檢測(cè)器解析的空間細(xì)節(jié)進(jìn)行衡量。
中間層是網(wǎng)絡(luò)的核心構(gòu)造塊,具有重復(fù)的卷積層、ReLU 層和池化層。
本例中,我只會(huì)使用幾個(gè)層。若要提高準(zhǔn)確性,或者如果想要將更多的類并入檢測(cè)器中,可以重復(fù)這些使用層,創(chuàng)建一個(gè)更深的網(wǎng)絡(luò)。
CNN 的最后一層通常是一組全連接層和一個(gè) softmax loss 層。
在本例中,我在全連接層之間添加了一個(gè) ReLU 非線性層,用以提高檢測(cè)器的性能,因?yàn)槲覀冞@個(gè)檢測(cè)器的訓(xùn)練集并沒(méi)有我想要的那么大。
為訓(xùn)練目標(biāo)檢測(cè)器,我將layers 網(wǎng)絡(luò)結(jié)構(gòu)輸入trainFasterRCNNObjectDetector 函數(shù)。如果您安裝了 GPU,算法會(huì)默認(rèn)使用 GPU。如果不想使用 GPU 或者想使用多個(gè) GPU,您可以在trainingOptions(訓(xùn)練選項(xiàng))中調(diào)整ExecutionEnvironment參數(shù)。
完成訓(xùn)練之后,可以在測(cè)試圖像上試一試,看看檢測(cè)器是否正常工作。我使用下面的代碼在單一圖像上測(cè)試檢測(cè)器。
Faster R-CNN車(chē)輛檢測(cè)器檢測(cè)到的邊界框和得分
若確信自己的檢測(cè)器正常工作,我強(qiáng)烈建議您使用統(tǒng)計(jì)指標(biāo)(例如,平均精度)在更大的一組驗(yàn)證圖像集上進(jìn)行測(cè)試。平均精度提供的單一分?jǐn)?shù)可衡量檢測(cè)器進(jìn)行正確分類的能力(準(zhǔn)確率)以及檢測(cè)到所有相關(guān)對(duì)象的能力(召回率)。
-
自動(dòng)駕駛
+關(guān)注
關(guān)注
782文章
13525瀏覽量
165733 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5431瀏覽量
120790
原文標(biāo)題:通過(guò)深度學(xué)習(xí)實(shí)現(xiàn)自動(dòng)駕駛之車(chē)輛檢測(cè)
文章出處:【微信號(hào):IV_Technology,微信公眾號(hào):智車(chē)科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論