俗話說“單絲不成線,獨木不成林”。面對如此復(fù)雜的自動駕駛系統(tǒng),最好的辦法自然是博采眾長,多傳感器融合咯。
1.False Positive & False Negative
這是做多傳感器融合之前必須了解的一個概念。
統(tǒng)計學(xué)上的名字叫第一類錯誤和第二類錯誤。當(dāng)然,這么專業(yè)的名字經(jīng)常搞得人云里霧里。實際上,除了FP和FN之外,還有TP和TN,組成了如下圖所示的四角關(guān)系。
醫(yī)學(xué)上經(jīng)常會用這個術(shù)語來表述檢測結(jié)果和實際結(jié)果的差別,經(jīng)典的例子就是你有沒有得腫瘤導(dǎo)致你心情大起大落的故事。
在自動駕駛感知任務(wù)中,F(xiàn)P和FN常被描述成如下場景:
FP:傳感器探測到了目標(biāo),但實際上沒有這個目標(biāo)。這樣的目標(biāo)又被稱作ghost。
FN:傳感器沒有探測到目標(biāo),但實際上有這個目標(biāo)。這樣的情況被稱為漏檢。
對于雙目攝像頭而言,它能感知深度,這原本是個很不錯的能力。但是當(dāng)雙目攝像頭遇上有強光反射的光滑地面時,強光導(dǎo)致的圖像局部飽和會讓攝像頭的深度測量出現(xiàn)偏差,而誤以為地上有一個洞。
但我們都知道實際上地面上并沒有洞,那這就是一個false positive。
明亮的地面反射導(dǎo)致攝像頭探測到了洞
而這樣的偏差會導(dǎo)致汽車在行駛過程中誤以為前方不能通行,需要繞行避讓或直接剎停,從而產(chǎn)生讓人覺得莫名其妙的“幽靈剎車”。
但是面對同樣的場景,毫米波雷達就不會探測出一個洞來,因為它通過自身發(fā)出的電磁波來感知周圍環(huán)境而不受光線強弱的影響。
這時候采用傳感器融合,就能夠避免這樣的問題。
2.目標(biāo)檢測
了解了多傳感器融合的必要性之后,我們來看看多傳感器融合的細分任務(wù)。首要的任務(wù)便是目標(biāo)檢測。
對于自動駕駛汽車來說,周圍環(huán)境中最多的、出現(xiàn)頻率最高的自然是其他汽車。而目標(biāo)檢測就是要用一個個小框把他們框起來,從而與周圍環(huán)境區(qū)別開來。這樣的框我們就稱為bounding box。
Bounding box可以分成二維和三維的,分別對應(yīng)目標(biāo)檢測里的二維目標(biāo)檢測及三維目標(biāo)檢測方法。
2D bounding box,顧名思義每一個框子都是平面的。好處在于簡單快捷的把一幀圖像或是點云里的目標(biāo)標(biāo)識出來。
https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/
但是同時缺點也是顯而易見的。第一,由于框子也是二維的是一個平面,我沒法知道這里車的長或者寬;第二,目標(biāo)的行駛方向也無法體現(xiàn)出來。
這兩點在車輛進行ACC、AEB縱向功能時可能還不明顯,但一旦涉及到車輛橫向控制,需要變道時,缺少這些信息則是致命的。
于是,三維的目標(biāo)檢測應(yīng)運而生,并逐漸成為目標(biāo)檢測的主流。同時,我們也會把目標(biāo)分類合并在一起做掉,這可以通過神經(jīng)網(wǎng)絡(luò)的多頭設(shè)計來完成。因此你會看到目標(biāo)的框上有一個分類以及分類的置信度。
不同類別的目標(biāo)有不同的幾何外形,這樣也能方便設(shè)計不同大小的框子對應(yīng)不同類別的目標(biāo)。
https://paperswithcode.com/task/3d-object-detection
不過3維框也有其局限,我們都知道車輛的外表并非一個完美的長方體,而都用長方體框出就忽略掉了很多外觀上的細節(jié)。而這些細節(jié)在近距離跟車、加塞變道時會變得特別有用。
3.目標(biāo)追蹤
目標(biāo)檢測還只是針對單幀的畫面和數(shù)據(jù),但是實際上我們的運動場景是連續(xù)的,我們不能只簡簡單單在一張或幾張圖片上成功檢測到物體就足夠,還需要跨幀地確保這些目標(biāo)聯(lián)系起來,即知道這些目標(biāo)是同一個目標(biāo)在不同時間戳的表示。這就是目標(biāo)追蹤。
目標(biāo)追蹤的常用結(jié)構(gòu)就是依據(jù)我們之前講過的卡爾曼濾波結(jié)合目標(biāo)關(guān)聯(lián)算法。
先預(yù)測,再關(guān)聯(lián),后更新。九字箴言。
對于不同的目標(biāo)我們會建立不同的數(shù)學(xué)模型,例如針對靜止目標(biāo),由于速度始終為0不會變化,我們就會用恒定速度(constant velocity)模型來建立運動學(xué)模型;而針對運動的目標(biāo),尤其是車輛這種還帶有旋轉(zhuǎn)、拐彎的一般會用勻速圓周運動模型(constant turn rate and velocity)。不同的模型意味著不同的預(yù)測結(jié)果。
而有了預(yù)測值之后,你就能大約猜測出下一個周期目標(biāo)應(yīng)該會出現(xiàn)在圖上的什么位置,從而去那個范圍搜尋對應(yīng)的像素點或者點云,把合適的點與預(yù)測的目標(biāo)位置關(guān)聯(lián)上。
關(guān)聯(lián)上后你就獲得了這個時刻的測量值,你就可以用測量去校正之前的預(yù)測,從而獲得精確的目標(biāo)位置。這樣,循環(huán)往復(fù),周而復(fù)始,你就成功地tracking上了這個目標(biāo)。
在實際自動駕駛項目中,丟目標(biāo)和目標(biāo)跳變是一個很嚴(yán)重的問題。這里的“丟目標(biāo)”指的就是目標(biāo)追蹤失敗,傳感器沒能跟上目標(biāo)實際的運動軌跡;“目標(biāo)跳變”指的就是目標(biāo)追蹤丟失后又重新跟上。由于這兩者都會導(dǎo)致目標(biāo)ID變化而導(dǎo)致功能退出,因此都是需要在目標(biāo)融合時極力避免的。
4.總結(jié)
這里主要介紹了傳感器融合(SF)對目標(biāo)方面的幾類任務(wù),除目標(biāo)之外,傳感器融合還能做很多其他對環(huán)境建模的任務(wù),例如道路特征的描述、占用柵格地圖以及可通行區(qū)域表示等等。
編輯:黃飛
?
評論