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