Coursera自动驾驶课程第11讲:2D Object Detection
在上一講《Coursera自動駕駛課程第10講:Feedforward Neural Networks》中我們學習了神經網絡的基礎知識,包括損失函數,梯度下降,正則化,卷積網絡等。
本講我們將學習深度學習的一個重要應用:圖像目標檢測。目前3D目標檢測也是一個研究很火的領域,感興趣的朋友可以查看相關論文。
本講對應視頻:
- The Object Detection Problem(Video)
- 2D Object detection with Convolutional Neural Networks(Video)
- Training vs Inference (Video)
- Using 2D Object Detectors for Self-Driving Cars(Video)
文章目錄
- 1. The Object Detection Problem
- 1.1 Overview
- 1.2 Mathematical Problem Formulation
- 1.3 Evaluation Metrics
- 2. 2D Object detection with Convolutional Neural Networks
- 2.1 Overview
- 2.2 The Feature Extractor
- 2.3 Anchor Bounding Boxes
- 2.4 Output Layers
- 3. Training vs Inference
- 3.1 Overview
- 3.2 Minibatch Selection
- 3.3 Non-Maximum Suppression
- 4. Using 2D Object Detectors for Self-Driving Cars
- 4.1 3D Object Detection
- 4.2 2D Object Tracking
- 4.3 Traffic sign and signal detection
1. The Object Detection Problem
1.1 Overview
本講,我們將深入研究目標檢測,在目標檢測中通常需要識別車輛、行人、交通信號燈等的位置,以便我們的汽車知道它在哪里以及如何去駕駛汽車。
2D目標檢測的歷史可以追溯到2001年,當時Paul Viola和Michael Jones發(fā)明了一種非常有效的人臉檢測算法?,F在稱為Viola,Jones目標檢測框架,是第一個可通過簡單的網絡攝像頭提供可靠實時2D目標檢測的目標檢測框架。物體檢測的下一個重大突破發(fā)生在四年后,Navneet Dalal和Bill Triggs制定了有向梯度特征描述的直方圖。算法應用于行人檢測問題,其性能優(yōu)于當時提出的所有其他方法。
Dalal Triggs算法一直保持領先地位,直到2012年,多倫多大學計算機科學系的Alex Krizhevsky,Ilya Sutskever和Geoffrey Hinton以其被稱為AlexNet的卷積神經網絡震撼了計算機視覺世界。這是深度學習歷史上的一個里程碑事件,而當今的所有目標檢測器幾乎都是基于卷積神經網絡。在介紹如何使用ConvNets進行目標檢測之前,我們先介紹什么是目標檢測?
1.2 Mathematical Problem Formulation
給定一張二維圖像,我們需要估計目標所屬邊界框的位置以及目標類別。對于自動駕駛汽車,常見的類別有車輛,行人和騎自行車的人。
2D目標檢測問題并非十分容易。我們需要估計的目標在圖像中并不總是能夠被觀察到。
- 例如,背景目標通常被前景目標遮擋。
- 此外,靠近圖像邊緣的目標通常會被截斷。
二維目標檢測算法面臨的另一個問題是規(guī)模問題。當物體遠離我們時,目標看起來很渺小。最后,我們的算法還應該能夠處理圖像光亮變化,這在自動駕駛汽車中尤其重要。
既然我們已經直觀地了解了什么是目標檢測,那么讓我們用數學的形式對問題進行形式化。 目標檢測可以定義為特征估計問題。 給定一個輸入圖像xxx,我們想找到一個函數fff,產生一個輸出矢量,其中包括左上角的坐標(xmin,ymin)(x_{min},y_{min})(xmin?,ymin?)以及框右下角的坐標 (xmax,ymax)(x_{max},y_{max})(xmax?,ymax?),以及從Sclass1S_{class1}Sclass1?到SclasskS_{classk}Sclassk?的類得分。總結下,函數形式為:
f(x;θ)=[xmin?,ymin?,xmax?,ymax?,Sclass?1…,Sclass?k]f(x ; \theta)=\left[x_{\min }, y_{\min }, x_{\max }, y_{\max }, S_{\text {class }_{1}} \ldots, S_{\text {class }_{k}}\right]f(x;θ)=[xmin?,ymin?,xmax?,ymax?,Sclass?1??…,Sclass?k??]
1.3 Evaluation Metrics
現在介紹一些2D目標檢測常用的評價指標。
第一個是IOU。給定紅色的2D目標檢測器的預測邊界框,我們希望能夠比較它與真實邊界框的匹配程度。 IOU定義為兩個多邊形相交的面積除以它們的并集面積。
下面是一些分類預測的評價指標:
- 真陽性(TP),預測分類得分超過分類閾值,且IOU超過IOU閾值。
- 假陽性(FP),預測分類得分超過分類閾值,但IOU小于IOU閾值。
- 假陰性(FN)。假陰性是沒有被檢測出的真值目標。
一旦我們確定了真陽性,假陽性和假陰性;我們可以根據以下內容確定2D目標檢測器的精確率和召回率。
精確率是真陽性數量除以真陽性和假陽性之和:
TP/(TP+FP)\mathrm{TP} /(\mathrm{TP}+\mathrm{FP})TP/(TP+FP)
另一方面,召回率是真陽性數量除以真陽性和假陰性之和:
TP/(TP+FN)\mathrm{TP} /(\mathrm{TP}+\mathrm{FN})TP/(TP+FN)
確定精確率和召回率之后,我們可以更改目標類別得分閾值以獲取精度召回曲線,最后,將平均精度確定為精度召回曲線下的面積。 曲線下的面積可以使用數值積分來計算,但通常使用·11個召回點的精確率的平均值來近似。
讓我們通過一個示例來研究如何使用學習的指標評估2D目標檢測的性能。我們對僅道路場景中的汽車感興趣。
現在讓我們使用平均精度來評估性能。第一步是獲取所有估計的邊界框,并根據目標類別得分對其進行排序。然后,我們繼續(xù)計算每個預測框與相應的真實框之間的IOU。如果不與任何真實框相交,則將其IOU設置為零。首先,我們說明分類分數的門檻,比如說0.9。接下來,我們設置IOU閾值,IOU閾值為0.7。最終真陽性數量為2,假陽性數量為0,假陰性數量為2。精確率為1,召回率為0.5。在這種情況下,檢測器是高精度低召回率檢測器。這意味著檢測器會錯過場景中的某些目標,但是當它確實檢測到目標時,在類別分類和邊界框位置上幾乎不會犯錯誤。
讓我們看看將分數閾值從0.9降低到0.7時檢測器的性能如何變化。所有邊界框的得分均大于0.7,因此我們不會通過得分閾值消除它們中的任何一個。但是,當我們檢查IOU時,可以看到其中兩個的IOU小于0.7。通過消除這兩個方框,我們得到了三個真實的的預測。在這種情況下,精度降低了,而召回率從0.5增加到0.75。
如果我們繼續(xù)此過程,則會得到下表。然后,我們使用yyy軸上的精度值和xxx軸上的召回值來繪制精度召回曲線。請注意,我們還將精度召回點0添加為繪圖中的第一個點,找回點1作為繪圖中的最后點。這使我們可以通過使用介于0和1之間的11個召回點以計算P-R曲線下方的面積來近似平均精度。計算此平均值得出檢測器的AP為0.75??梢詫z測器的平均精度值視為所有得分閾值上的性能平均值,從而可以客觀比較檢測器的性能,而不必考慮產生這些檢測的確切得分閾值。
2. 2D Object detection with Convolutional Neural Networks
2.1 Overview
讓我們首先回顧2D目標檢測問題。 給定一張圖像作為輸入,我們希望同時定位場景中的所有目標并確定它們屬于哪個類。 讓我們看看如何使用ConvNet執(zhí)行此任務。
下圖顯示了用于2D目標檢測的基本流程。
- 首先,使用特征提取器處理圖像提取特征。
- 其次,輸出層將特征提取器的輸出作為輸入,同時提供每個2D先驗boxes的位置及分類。
- 最后,對輸出執(zhí)行非極大值抑制以生成最終檢測結果。
2.2 The Feature Extractor
下面我們先介紹特征提取器。特征提取器的輸出通常比輸入圖像的寬度和高度小得多。 但是,其深度通常比輸入圖像的深度大兩到三個數量級。 特征提取器的設計是一個非常受歡迎的領域,每年都有很多新的論文介紹如何提取圖像特征。 最常用的特征提取器有VGG,ResNet和Inception。 下面我們將介紹VGG網絡。
VGG是英國牛津大學視覺幾何小組提出的VGG 16分類網絡(簡稱VGG16)。網絡結構構成非常簡單,與大多數ConvNet一樣,VGG特征提取器由交替的卷積層和池化層構建而成。所有卷積層的大小為(3,3,k)(3,3,k)(3,3,k),步幅為1,填充為1。所有最大池化層的大小為(2,2)(2,2)(2,2),步幅為2,無填充。這些特定的超參數是通過大量實驗得出的。
對于VGG特征提取器,所有卷積層的大小為(3,3,k)(3,3,k)(3,3,k),步幅為1,填充為1。卷積后其輸出維度為:
Wout?=Win??m+2×PS+1=Hin??3+2×11+1=Win?Hout?=Hin??m+2×Ps+1=Hin??3+2×11+1=Hin?Dout?=KW_{\text {out }}=\frac{W_{\text {in }}-m+2 \times P}{S}+1=\frac{H_{\text {in }}-3+2 \times 1}{1}+1=W_{\text {in }} \\\boldsymbol{H}_{\text {out }}=\frac{H_{\text {in }}-m+2 \times P}{s}+1=\frac{H_{\text {in }}-3+2 \times 1}{1}+1=H_{\text {in }} \\\boldsymbol{D}_{\text {out }}=KWout??=SWin???m+2×P?+1=1Hin???3+2×1?+1=Win??Hout??=sHin???m+2×P?+1=1Hin???3+2×1?+1=Hin??Dout??=K
另一方面,VGG最大池化層步幅為2,沒有填充。注意到VGG的最大池層將輸入的寬度和高度減小了一半,同時保持深度不變。其輸出維度為:
Wout=Win?ms+1=Win?22+1=Win2Hout=Hin?ms+1=Hin?22+1=Hin2Dout=DinW_{o u t}=\frac{W_{i n}-m}{s}+1=\frac{W_{i n}-2}{2}+1=\frac{W_{i n}}{2}\\H_{o u t}=\frac{H_{i n}-m}{s}+1=\frac{H_{i n}-2}{2}+1=\frac{H_{i n}}{2}\\ D_{o u t}=D_{i n}Wout?=sWin??m?+1=2Win??2?+1=2Win??Hout?=sHin??m?+1=2Hin??2?+1=2Hin??Dout?=Din?
現在讓我們看看VGG如何處理輸入圖像。給定一個維度為(M,N,3)(M,N,3)(M,N,3)的圖像,前兩個卷積層深度為64,然后是第一個池化層。此時,輸出的寬度和高度將減小一半,而深度將擴展到64,下圖是經過每一個卷積層后最終輸出的特征維度。
例如,如果我們有一個(1240,960,3)(1240,960,3)(1240,960,3)的圖像作為輸入,那么我們的最終輸出維度為(40,30,512)(40,30,512)(40,30,512)。
2.3 Anchor Bounding Boxes
在我們的神經網絡架構中要描述的下一步是Anchor Bbox的概念,也稱為錨框。為了生成2D邊界框,我們通常不會從頭開始,并且在沒有任何先驗的情況下估計邊界框的大小。我們假設我們已知目標的大致尺寸,這些先驗稱為錨框。
在訓練過程中,網絡學會獲取這些錨點中的每一個,并嘗試將其在質心位置和尺寸上都盡可能靠近真值框。它利用了這樣的概念:通過對錨盒進行微調,而不是在整個圖像中搜索可能的物體位置。在實踐中,事實證明,與沒有任何先驗直接估計邊界框相比,殘差學習可提供更好的結果。
關于如何使用錨框來生成最終預測,相關文獻中已經提出了許多不同的方法。這里以Faster-RCNN為例。Faster R-CNN方法非常簡單。 對于特征圖中的每個像素,我們將kkk個錨框關聯起來。 然后,在該像素鄰域上執(zhí)行(3,3,D)(3,3,D)(3,3,D)的卷積運算。 這將為該像素生成一個(1,1,D)(1,1,D)(1,1,D)維特征向量。 我們將此(1,1,D)(1,1,D)(1,1,D)維特征向量一一用作與該像素關聯的kkk個錨點中每一個的特征向量。 然后,我們將提取的特征向量饋入神經網絡的輸出層。
2.4 Output Layers
二維物體檢測器的輸出層通常包括回歸頭和分類頭。
- 回歸頭通常包括具有線性輸出層的多個完全連接的隱藏層?;貧w的輸出通常是殘差向量[Δxcenter?,Δycenter?]\left[\Delta x_{\text {center }}, \Delta y_{\text {center }}\right][Δxcenter??,Δycenter??],需要將其添加到錨點上才能錨框的中心位置。然后這里fw,fhf_w,f_hfw?,fh?是錨框大小的比例。
- 分類頭還包括多個完全連接的隱藏層,但具有最終的softmax輸出層。 softmax輸出是每個類只有一個分數的向量。最高分數通常為錨框的所屬類別。
回想一下,我們的目標是實現準確的檢測,這意味著我們希望圖像中每個目標只輸出一個Bbox。因此,我們將需要采取一些措施來消除網絡產生的冗余檢測。在下一小節(jié)我們將會介紹非極大值抑制,它能很好的解決這個問題。
3. Training vs Inference
3.1 Overview
讓我們從回顧神經網絡訓練開始。 已知網絡模型和訓練數據:圖像xxx和其標簽f?(x)f^*(x)f?(x),最終輸出為邊界框位置和目標所屬分類。
我們的目標是希望輸出yyy近似等于標簽f?(x)f ^*(x)f?(x)。 我們借助損失函數來進行優(yōu)化,損失函數測量了預測邊界框與真值邊界框的相近程度。 然后,我們將損失函數的結果傳遞給優(yōu)化器,該優(yōu)化器輸出一組新的參數θ\thetaθ,用于后面的迭代運算。 注意,在訓練期間,特征提取器和輸出層將會均被修改。但是在下圖中我們看到,每個目標對應輸出并不是一個邊界框,而我們希望得到的是一個邊界框,下面我們將介紹如何解決這個問題。
3.2 Minibatch Selection
請記住,對于特征圖中的每個像素,我們會關聯kkk個錨點。這些錨點在原始圖像中會出現在哪里呢?正如我們先前所了解的那樣,特征提取器將輸入圖像維度降低了32倍。這意味著,如果我們將特征圖中的每個像素與一組錨點相關聯,這些錨點將被轉移到原始圖像上通過將它們放在步幅為32的網格上。然后,我們可以可視化這些錨點旁邊的真值邊界框和錨盒。注意到這里錨盒會重疊,有些沒有重疊。
我們用IOU量化這種重疊,并將錨點分為兩類。我們首先指定兩個IOU閾值,一個正閾值和一個負閾值。 IOU大于正閾值的任何錨盒稱為正錨盒。同樣,任何IOU小于負閾值的錨盒都稱為負錨盒。 IOU在兩個閾值之間的所有錨盒都將被完全丟棄。那么現在,我們如何在訓練中使用這些正的和負的錨盒呢?
現在讓我們看看如何為正錨盒和負錨盒分配分類和回歸目標。
- 對于負錨盒:我們希望神經網絡預測其類別為背景類別,對于回歸,我們不進行邊界框預測。
- 對于正錨盒:我們希望神經網絡預測一個正確的類別,同時,我們也會輸出一個邊界框。
在訓練期間處理多個錨盒的方法并非容易。提出的IOU閾值機制會導致大多數錨盒被判為負錨盒。當用所有這些錨點進行訓練時,模型將會產生類偏斜現象。解決這個問題的方法實際上非常簡單,我們不是使用所有錨盒來計算損失函數,而是使用負錨盒與正錨盒的比例為三比一的樣本對選定的小批量樣本進行采樣。
例如,如果我們有64個示例的小批量,則負錨盒將是分類損失最高的48個負錨盒,剩下的16個錨盒將是正錨盒。
下面我們介紹損失函數,首先介紹的分類損失函數。如之前所述,我們將使用交叉熵損失函數。其中SiS_iSi?是分類輸出。 Si?Si^*Si?是真值。
Lcls=1Ntotal?∑iCrossEntropy(si?,si)L_{c l s}=\frac{1}{N_{\text {total }}} \sum_{i}CrossEntropy \left(s_{i}^{*}, s_{i}\right)Lcls?=Ntotal??1?i∑?CrossEntropy(si??,si?)
然后是回歸損失函數。我們使用L2L2L2損失函數。但是,僅當錨盒為正錨盒時,我們才嘗試對其進行修改。在這里如果錨盒為負錨盒,則pip_ipi?為0;如果錨盒為正錨盒,則pip_ipi?為1。為了進行歸一化,我們除以正錨盒總數。在這里bi?bi^*bi?是真值邊界框,而bib_ibi?是預測邊界框。對于邊界框的調整,我們使用殘差來進行調整。
Lreg=1Np∑ipiL2(bi?,bi)L_{r e g}=\frac{1}{N_{p}} \sum_{i} p_{i} L_{2}\left(b_{i}^{*}, b_{i}\right)Lreg?=Np?1?i∑?pi?L2?(bi??,bi?)
3.3 Non-Maximum Suppression
到目前為止,我們已經掌握了如何在訓練期間處理目標的多個輸出框。 但是,當我們在推理過程中運行神經網絡時,我們該怎么辦? 請記住,在推理過程中,我們只希望場景中每個目標只有一個輸出框。 這是非最大抑制發(fā)揮作用的時候,這是一種非常強大的方法,可以改善基于錨點的神經元網絡的推理輸出。
非最大抑制以預測方框列表BBB作為輸入,每個預測方塊列表由類輸出得分和回歸坐標組成。它還需要輸入一個預定義的IOU閾值,我們將其稱為η\etaη。
算法如下:
- 首先根據列表BBB的輸出分數進行排序。我們還初始化了一個空集DDD。
- 然后,我們遍歷排序后的列表BBB中的所有元素。在for循環(huán)內,我們首先確定列表BBB中得分最高的框bmaxb_{max}bmax?,它應該是BBB中的第一個元素。然后,我們從邊界框集BBB中刪除此邊界框,并將其添加到輸出集DDD中。
- 接下來,我們找到剩余在集合BBB中的所有IOU大于η\etaη的框。這些框與當前的最大框bmaxb_maxbm?ax重疊。滿足此條件的所有框將從列表BBB中刪除。我們不斷遍歷列表BBB直到為空,然后返回列表DDD?,F在DDD中每個對象包含一個邊界框。
讓我們通過一個直觀的示例來了解非最大抑制算法在實際中是如何工作的。假設我們已經按照降序對邊界框列表進行了排序,如下圖所示。 bmaxb_{max}bmax?是排序列表B中的第一個邊界框B1B_1B1?。然后,我們將每個邊界框與bmaxb_{max}bmax?進行比較。我們計算IOU,并將其與IOU閾值η\etaη進行比較。在這種情況下,IOU大于閾值η\etaη,最終我們從列表BBB中刪除B3B_3B3?。我們對列表中的下一個最高分重復此過程。最終初始列表BBB現在為空。因此,我們的非最大抑制算法將退出并返回輸出框列表DDD,該列表按預期包含每個對象的唯一邊界框。
4. Using 2D Object Detectors for Self-Driving Cars
4.1 3D Object Detection
在本小節(jié),我們將討論2D目標檢測的三個重要應用。
- 首先,我們將討論如何將2D目標檢測擴展到3D。
- 其次,我們將討論目標跟蹤。
- 最后,我們將討論如何將2D目標檢測應用于交通標志和信號燈的檢測。
對于自動駕駛汽車來說,其運動場景是3D,有時僅檢測圖像平面中的目標是不夠的。汽車需要知道行人,汽車,車道和路標在汽車周圍的位置。這時我們需要將問題從2D擴展到3D,并在世界坐標中定位檢測到的目標。3D目標檢測是一個相對較新的主題,并且此領域的結果在不斷變化。
3D目標檢測我們需要知道目標類別,例如是汽車,行人和自行車員。另外我們要估計3D目標質心位置,3D目標的尺寸和3D目標的方向。
在每種情況下,這種詳細的狀態(tài)信息都可以提高運動預測和避免碰撞的能力,并提高汽車在交通中行駛的能力。該目標的狀態(tài)可以表示為質心位置的3D向量,質心位置表示為目標的(x,y,z)(x,y,z)(x,y,z)。3D目標i尺寸,表示為目標的長寬高(l,w,h)(l,w,h)(l,w,h)。方向角的3D向量,表示為目標的側傾角,俯仰角和偏航角。對于道路場景,我們感興趣的方向角通常只是偏航角。但是,如何從2D邊界框到對物體位置和尺寸的精確3D估計呢?
在3D中擴展2D目標檢測的最常見,最成功的方法是使用激光雷達點云數據。問題是應將點云以哪種表示形式輸入到神經網絡?
一些研究人員選擇直接處理原始點云數據。其他研究人員選擇相對于某個固定點對點云數據進行標準化處理。最后,還可以對這些點進行預處理,以構建固定長度的表示形式,無論我們使用哪種表示形式,都期望以有向3D邊界框的形式獲得結果。請記住,上面討論的過程只是執(zhí)行3D目標檢測的一種方法。
那么,為什么我們選擇將2D檢測擴展到3D而不是直接在3D中檢測對象?
- 首先,2D目標檢測器比3D目標檢測器更加完善。通常,我們可以從成熟的2D目標檢測器中獲得很高的精度和召回率。
- 其次,我們從2D目標檢測器結果中獲得分類。無需使用LiDAR數據傳遞到網絡即可確定我們檢測的是汽車還是其它。這在2D圖像數據中非常明顯。
- 最后,如果無法對應該在哪里找到目標做出任何假設,在3D空間中搜索可能的目標在計算上??是相當昂貴的。將2D目標檢測器擴展到3D,通常可以使我們限制目標實例的搜索區(qū)域,從而使實時性能易于管理。
但是,將2D目標檢測器擴展到3D也會引起一系列獨特的問題。
- 使用這種方法進行3D目標檢測所引起的一個突出問題是:我們將3D姿態(tài)估計器的性能限制在一個上限(即2D檢測器的性能)上。
- 此外,從攝像頭的角度來看,當2D到3D方法面臨嚴重的遮擋和截斷時通常會失敗。
- 最后,由這種方法的串行特性引起的等待時間通常不可忽略。延遲感知這意味著我們的汽車經過一定延遲后會看到道路上的物體??。如果此延遲很大,則系統可能不夠安全,無法運行,因為車輛反應時間受感知等待時間限制。
4.2 2D Object Tracking
2D到3D目標檢測的另一個非常重要的應用是目標跟蹤。 跟蹤涉及將對同一物體的檢測序列拼接在一起,以定義隨時間變化的物體運動。 我們將從描述一種簡單的跟蹤方法開始,該方法可以在2D和3D中使用。
執(zhí)行目標檢測時,通常在每個幀中獨立檢測目標。 但是,在跟蹤中,我們通常通過已知的目標動力學模型預測目標的運動。 通常我們需要做出一些假設:例如,假設我們的相機和被跟蹤的目標不能在很短的時間內傳送到不同的位置。 另外,我們假設場景逐漸平滑變化。 所有這些假設在道路場景中在邏輯上都是有效的。
下圖顯示了目標跟蹤常用的處理流程, 我們將這些檢測稱為測量,將每個預測與相應的測量相關聯,然后使用相關的測量更新目標預測。
現在讓我們描述每個必要的步驟。
-
首先,我們目標狀態(tài)定義為其在圖像空間中的位置和速度。每個目標都有一個更新其狀態(tài)的運動模型。例如,此處顯示的等速運動模型用于將每個邊界框移動到第二幀中的新位置。注意,由于模型不是完美的,我們在運動模型中添加了高斯噪聲。
-
在預測之后,我們從2D目標檢測器獲得第二幀測量值。然后,我們通過計算所有預測和所有測量之間的IOU,將每個測量與一個預測相關聯。如果某個測量的IOU最高,則它將與相應的預測相關。
-
最后一步包括使用卡爾曼濾波器融合測量和預測??柭鼮V波器更新包括位置和速度在內的整個目標狀態(tài)。
還有一些復雜的問題需要解決,特別是如何啟動追蹤以及如何終止追蹤。
- 如果獲得的檢測結果與之前的任何預測都不相關,則我們將啟動新的追蹤。
- 同樣,如果預測與預設幀數的測量值不相關,則終止不一致的追蹤。
- 最后,我們需要注意的是,通過在3D中定義IOU,我們可以使用相同的方法進行3D目標跟蹤。
4.3 Traffic sign and signal detection
現在我們可以從自動駕駛汽車上安裝的攝像機中看到典型的行車記錄儀樣式圖像。通常,汽車必須在遠距離檢測交通標志和交通信號,以使汽車知道如何及時做出適當反應。遠距離,交通標志和信號在圖像中僅占很少的像素,這使得檢測問題特別具有挑戰(zhàn)性。此外,交通標志變化很大。通常,包括多達50個需要可靠分類的類別。另一方面,交通信號燈在世界不同地區(qū)的顯示方式可能有所不同,并且需要檢測多種狀態(tài),自動駕駛汽車才能通過信號交叉口安全操作。
此外,交通信號燈會隨著汽車行駛而改變狀態(tài)。嘗試跟蹤圖像空間中的交通信號時,這可能會導致一些問題。幸運的是,到目前為止,我們已經描述的標準目標檢測器無需進行重大改動即可用于檢測交通標志和信號。但是,當前的方法依賴于多級分層模型來更穩(wěn)健地執(zhí)行此檢測任務。
讓我們考慮這里顯示的兩階段模型。它們共享特征提取器的輸出以執(zhí)行它們各自的任務。
- 在此示例中,第一階段輸出指向圖像中所有交通標志和信號的類不可知邊界框,而無需指定每個框屬于哪個類。
- 然后,第二階段從第一階段獲取所有邊界框,并將它們分類為紅色,黃色或綠色信號停止標志等類別。此外,某些方法還使用第二階段來進一步細化圖框中提供的邊界框。
總結
以上是生活随笔為你收集整理的Coursera自动驾驶课程第11讲:2D Object Detection的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微念起诉李子柒公司案将开庭:千万粉账号已
- 下一篇: 网传成都某科技公司称大专生只值200 招