<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 物聯(lián)網(wǎng)與傳感器 > 設計應用 > 小議車(chē)輛環(huán)境視覺(jué)基礎前視感知

小議車(chē)輛環(huán)境視覺(jué)基礎前視感知

作者: 時(shí)間:2022-09-14 來(lái)源:CSDN 收藏

本文引用地址:http://dyxdggzs.com/article/202209/438153.htm

前言

  無(wú)論是AD/ADAS還是智能網(wǎng)聯(lián)車(chē),前視感知都是其最基礎和重要的能力之一。自動(dòng)駕駛(AD)是前幾年的熱門(mén)話(huà)題。今天雖然稍微降溫下來(lái)一些,但仍是大家關(guān)注的重點(diǎn)之一,畢竟它是人類(lèi)長(cháng)久以來(lái)的夢(mèng)想之一。眾所周知,美國汽車(chē)工程師學(xué)會(huì )(SAE)將自動(dòng)駕駛分為L(cháng)0~L5共六個(gè)級別。其中L3及以上允許由系統在限定或不限定條件下完成所有的駕駛操作;而L2及以下還是需要由人類(lèi)駕駛員一直保持駕駛狀態(tài),因此大多還屬于高級駕駛輔助系統(ADAS),如車(chē)道偏離預警(LDW),前碰撞預警(FCW),自適應巡航(ACC),緊急自動(dòng)剎車(chē)(AEB),車(chē)道保持輔助(LKA),交通標志識別(TSR),自動(dòng)泊車(chē)(AP)等。和大多數智能機器人一樣,自動(dòng)駕駛的處理流程可分為三個(gè)階段:感知、決策、執行。因此一旦感知出了問(wèn)題,那后面基本就涼了。類(lèi)似地,ADAS或AR導航也強依賴(lài)于對環(huán)境的感知。沒(méi)有準確且實(shí)時(shí)的感知能力,上層做的再炫酷也容易成為雞肋。ADAS和AD間的界線(xiàn)并沒(méi)那么清晰,前者可看作到后者的過(guò)渡產(chǎn)品,因此很多技術(shù)是通用的。前視感知是個(gè)非常大的話(huà)題,因此本文主要聚焦在一些最為基礎和通用的前視感知能力上。

2.業(yè)界

  本節我們從工業(yè)界和學(xué)術(shù)界兩個(gè)方面簡(jiǎn)要聊下業(yè)界的相關(guān)情況。它們各有優(yōu)缺點(diǎn),學(xué)術(shù)界涌現出更前沿更先進(jìn)的方法,且指標明確,易于定量比較,但方法往往專(zhuān)注于單點(diǎn),且對實(shí)際產(chǎn)品中的各種約束(如計算資源)考慮不多;而工業(yè)界直接面對產(chǎn)品,更多地考慮實(shí)用性和整體性。但采用的指標、數據不透明,難以衡量和比較。只有全方面的了解,通過(guò)產(chǎn)學(xué)研的加速融合,才能打造更加完善、更好用戶(hù)體驗的產(chǎn)品。

  ADAS有著(zhù)幾十年的發(fā)展歷史。國內外都有一大批優(yōu)秀的廠(chǎng)商。這幾年,隨著(zhù)國家駕駛安全政策的推動(dòng)和自動(dòng)駕駛技術(shù)受到熱捧,該領(lǐng)域出現了快速的增長(cháng)。從老牌勁旅Bosch、Continental、Aptiv,Mobileye等,到一批相對年輕但很有競爭力的公司如Maxieye、Minieye、魔視、極目、縱目、Nauto等,這是一個(gè)既成熟,又充滿(mǎn)機遇的市場(chǎng)。根據中投顧問(wèn)的《2017-2021年中國汽車(chē)高級駕駛輔助系統(ADAS)市場(chǎng)深度調研及投資前景預測報告》,ADAS年復合增長(cháng)率將達35%,2020年中國市場(chǎng)可實(shí)現近800億市場(chǎng)空間。近幾年,車(chē)載AR導航將傳統的ADAS功能與導航功能、AR技術(shù)及HUD進(jìn)行了融合,帶來(lái)了更直觀(guān)和人性化的用戶(hù)體驗,成為了市場(chǎng)的熱點(diǎn)。在實(shí)現方式上,各家在傳感器配置上也各有不同,有攝像頭、毫米波雷達、激光雷達等。其中,基于攝像頭的視覺(jué)方案由于其成本可控、算法成熟等優(yōu)點(diǎn),使用最為廣泛。其中的主要代表如Mobileye和Tesla Autopilot都是主要基于視覺(jué)的方案。

在這里插入圖片描述

圖1 Tesla Autopilot(來(lái)自https://www.youtube.com/watch?v=24dRkHdpEPo)

在這里插入圖片描述

圖2 Mobileye(來(lái)自https://www.mobileye.com/our-technology/)

  雖然ADAS細分功能眾多,但很多功能功能(LDW,FCW,LKA,ACC等)都依賴(lài)于對前方環(huán)境中幾個(gè)基本對象的檢測和識別,即車(chē)道線(xiàn)、物體(包括車(chē)輛、行人、障礙物、交通燈、交通標識等)、可行駛區域,因此本文也會(huì )主要聚集在這幾類(lèi)對象的檢測識別上。在準確率上,各家的產(chǎn)品往往很難量化及橫向比較,盡管大家的宣傳中常會(huì )出現“準確率&gt;XX%”或者“誤報率/漏報率&lt;X%”這樣的提法。但事實(shí)上由于指標定義和數據集的差異,很難做到“apples to apples”的對比。有些比較實(shí)在的會(huì )采用相對指標,比如與行業(yè)標桿(如Mobileye)在同樣的數據集上做橫向對比。這樣會(huì )更有說(shuō)服力。但因為所用數據集未公開(kāi),別人也很難嚴格橫向比較。在性能上,由于A(yíng)DAS對檢測的實(shí)時(shí)性要求非常高,所以很多至少會(huì )做到15 FPS以上。隨著(zhù)深度學(xué)習的興起,越來(lái)越多的ADAS廠(chǎng)商也將基于傳統CV的方案逐漸過(guò)渡為基于深度學(xué)習的方案。深度神經(jīng)網(wǎng)絡(luò )(DNN)的推理需要很大的計算量,而ADAS不像高級自動(dòng)駕駛平臺配備強大的計算平臺,因此業(yè)界的趨勢之一是利用專(zhuān)用硬件(如FPGA或ASIC芯片)來(lái)進(jìn)行加速。

  在學(xué)術(shù)界,自動(dòng)駕駛一直是經(jīng)久不衰的熱點(diǎn)之一。這些方法上的創(chuàng )新很多同樣也可以用于A(yíng)DAS和AR導航中。我們知道,2012年以來(lái)深度學(xué)習的快速發(fā)展使其成為機器學(xué)習中的絕對主流?;谏疃葘W(xué)習的方法同樣也給自動(dòng)駕駛帶來(lái)了巨大變革?;趥鹘yCV算法的方法在泛化能力上容易遇到瓶頸。經(jīng)常是在一段路段調優(yōu)跑溜后,換一段路又需要大量調參。當然,基于深度學(xué)習的方法也無(wú)法完全避免這個(gè)問(wèn)題,但可以說(shuō)是大大緩解了。學(xué)術(shù)界的優(yōu)點(diǎn)就是較為透明公開(kāi)、且容易對比。新的方法就是需要在與其它方法比較中才能證明其優(yōu)異,因此歷史上通過(guò)競賽的方式來(lái)推動(dòng)發(fā)展的例子不在少數。2004年開(kāi)始,由DARPA主辦的幾場(chǎng)無(wú)人車(chē)挑戰賽開(kāi)啟了無(wú)人車(chē)的新時(shí)代。在深度學(xué)習時(shí)代,各種針對路面環(huán)境檢測識別的榜單就如同ImageNet一樣,催生出一大批新穎的方法。其中針對車(chē)道線(xiàn)、物體和可行駛區域的比較典型的有:

  KITTI:2013年由德國卡爾斯魯厄理工學(xué)院和豐田美國技術(shù)研究院聯(lián)合創(chuàng )辦,是一套非常全面的算法評測數據集。其中覆蓋了2D、3D物體檢測,物體跟蹤,語(yǔ)義分割、深度估計等多種任務(wù)。但其數據集數量在現在看起來(lái)不算多,如物體檢測數據集訓練集和測試集總共1W5張左右,車(chē)道檢測就比較尷尬了,只有幾百張。

  CVPR 2017 TuSimple Competitions:2017年圖森未來(lái)主持的挑戰賽,分車(chē)道線(xiàn)檢測和速度估計兩個(gè)任務(wù)。其中車(chē)道線(xiàn)檢測數據集包含了幾千張主要是高速上的數據。雖然量不多,但因為和物體檢測這類(lèi)通用任務(wù)相比,針對車(chē)道線(xiàn)檢測的競賽很少,所以它至今在很多車(chē)道線(xiàn)檢測的論文上還會(huì )被當成量化比較的重要參考。

  CVPR 2018 WAD:由Berkeley DeepDrive主持,包含三項賽事:道路物體檢測,可行駛區域分割和語(yǔ)義分割的域適應。它基于BDD100K數據集。這是一個(gè)在數量和多樣性上都非常不錯的用于自動(dòng)駕駛的數據集。其中用于物體檢測和可行駛區域分割的數據集共有10W張左右,其中訓練集和驗證集有約8W張。

  Cityscapes:針對道路環(huán)境的經(jīng)典語(yǔ)義分割數據集,同時(shí)也提供了語(yǔ)義分割、實(shí)例分割和全景分割任務(wù)的榜單。數據集采自50個(gè)城市,包含了5K張精細標注圖片和2W張較粗糙標注圖片??紤]到語(yǔ)義標注的成本相對大,這個(gè)數量已經(jīng)算比較大了。

  其它的榜單還有很多,無(wú)法一一列舉。雖然由于大多榜單只關(guān)注準確率導致其模型很難直接落到產(chǎn)品中,但其中確實(shí)也出現了非常多精巧的方法與創(chuàng )新的想法,為產(chǎn)品落地提供了有價(jià)值的參考。關(guān)于具體的方法我們留到后面專(zhuān)門(mén)章節進(jìn)行討論。

  還有一些介于工業(yè)界與學(xué)術(shù)界之間的工作,它們將學(xué)術(shù)界的成果向產(chǎn)品逐漸轉化,提供了參考實(shí)現。比較典型的有開(kāi)源自動(dòng)駕駛項目Apollo和Autoware。因為它們主要面向無(wú)人駕駛,所以會(huì )除了攝像頭之外,還會(huì )考慮激光雷達、毫米波雷達、高精地圖等信息。由于本文的scope,這里只關(guān)注基于攝像頭的對基礎對象的檢測。Apollo 2.5中采用的是一個(gè)多任務(wù)網(wǎng)絡(luò )檢測車(chē)道線(xiàn)與物體(之前讀代碼的一些筆記:自動(dòng)駕駛平臺Apollo 2.5閱讀手記:perception模塊之camera detector),對于車(chē)道線(xiàn)模型會(huì )輸出像素級的分割結果,然后通過(guò)后處理得到車(chē)道線(xiàn)實(shí)例及結構化信息(相關(guān)代碼閱讀筆記:自動(dòng)駕駛平臺Apollo 3.0閱讀手記:perception模塊之lane post processing);物體檢測是基于Yolo設計的Yolo 3D,除了輸出傳統的2D邊界框,還會(huì )輸出3D物體尺寸及偏轉角。版本3.0(官方介紹:perception_apollo_3.0)中加入了whole lane line特性,提供更加長(cháng)距的車(chē)道線(xiàn)檢測。它由一個(gè)單獨的網(wǎng)絡(luò )實(shí)現。3.5中將物體與車(chē)道線(xiàn)檢測網(wǎng)絡(luò )徹底分離,車(chē)道線(xiàn)模型稱(chēng)為denseline。最新的5.0(官方介紹:perception_apollo_5.0)中又引入DarkSCNN模型,它基于Yolo中的backbone Darknet,并引入了Spatial CNN(后面再介紹),同時(shí)該網(wǎng)絡(luò )中還加入了對滅點(diǎn)的檢測。Autoware中車(chē)道線(xiàn)用的是傳統CV的方法,物體檢測基于攝像頭部分使用的是SSD和YOLO等基于深度學(xué)習的方法(官方介紹:Overview)。

3.方法

  我們知道,深度學(xué)習有三大基石:數據、算法和算力。對于基礎前視感知場(chǎng)景,我們也從這三個(gè)維度來(lái)聊一下。在此之前,我們先列下本文關(guān)注的單目基礎感知主要流程:

在這里插入圖片描述

圖3 基礎前視感知簡(jiǎn)要流程

  從圖片流輸入,大致經(jīng)歷預處理、檢測模型推理和后處理三個(gè)階段:

  預處理:這一階段主要是做必要的數據處理,為后面的檢測準確好數據。如一些攝像頭進(jìn)來(lái)的視頻流是YUV格式,而深度神經(jīng)網(wǎng)絡(luò )模型輸入多是RGB格式,需要進(jìn)行轉換。此外,很多模型會(huì )要求輸入數據作歸一化。另外,為了減少計算量,一般還會(huì )對輸入的圖像進(jìn)行縮放和ROI的提取。

  檢測模型推理:這一階段主要是做深度神經(jīng)網(wǎng)絡(luò )的推理。對于要同時(shí)完成多個(gè)任務(wù)的場(chǎng)景,我們一般會(huì )使用多任務(wù)網(wǎng)絡(luò )。即每個(gè)任務(wù)對應一個(gè)網(wǎng)絡(luò )分支輸出,它們共享用于特征提取的backbone(按經(jīng)驗很多時(shí)候backbone會(huì )占大部分的計算量)。近年學(xué)術(shù)界也出現一些對不同類(lèi)型任務(wù)比較通用的backbone結構。

  后處理:這一階段是將前面推理得到的結果進(jìn)行進(jìn)一步的處理,以傳到后面的決策或展示模塊。常見(jiàn)的對于車(chē)道線(xiàn)需要濾除噪點(diǎn),聚類(lèi),曲線(xiàn)擬合,濾波(如Kalman filter)等;對物體檢測常見(jiàn)的有非極大值抑制(NMS)和跟蹤等;對可行駛區域,需要將分割結果轉為多邊形并確定其位置類(lèi)別。

  注意這里只畫(huà)了簡(jiǎn)化的部分流程。實(shí)際場(chǎng)景中,可能還需要考慮非常多其它元素,比如:

  相機標定(Camera calibration):我們在學(xué)車(chē)考“S彎”或者“單邊橋”等項目時(shí),教練往往會(huì )告訴我們一些小技巧,如通過(guò)雨刮器的位置來(lái)估計輪胎的位置。這種技巧其實(shí)比較脆弱,因為座椅的調整,人的高矮都會(huì )影響其精確度。那在A(yíng)DAS/AD場(chǎng)景中如何告訴機器以高精度做這件事呢,就是通過(guò)相機校準。這本質(zhì)是做圖像坐標和世界坐標之間的轉換。另外,有了校準參數,我們還可以用它做逆透視映射(IPM),消除透視帶來(lái)的影響,方便車(chē)道線(xiàn)檢測及物體跟蹤等模塊。

  光流(Optical flow):每一幀都檢測會(huì )帶來(lái)很大的計算開(kāi)銷(xiāo)。有時(shí)我們會(huì )通過(guò)光流算法來(lái)計算圖像中像素點(diǎn)的瞬時(shí)速度,從而估計已檢測對象在當前幀的位置。這樣一方面能有效減少計算量,另一方面還能用于物體的跟蹤。

  滅點(diǎn)(Vanishing point):我們知道,由于透視關(guān)系,平行的線(xiàn)(如車(chē)道線(xiàn))在遠處會(huì )交到一點(diǎn),稱(chēng)為消失點(diǎn)或滅點(diǎn)。這個(gè)點(diǎn)對于車(chē)道檢測或最后的可視化都有幫助。在直線(xiàn)的情況下,我們可以通過(guò)車(chē)道線(xiàn)的交點(diǎn)來(lái)估計滅點(diǎn),但如果車(chē)道線(xiàn)是不太規則的曲線(xiàn),就比較麻煩,需要通過(guò)更復雜的方法進(jìn)行估計。

  測距:不少ADAS功能中都需要確定前方物體的距離。常用毫米波和超聲波雷達做距離檢測。而在純視覺(jué)方案中,雙目方案是根據視差來(lái)估計距離,原理就像人的兩只眼睛一樣。而對于單目方案就比較tricky一些,需要檢測物體后根據物體下邊界結合相機標定計算距離?,F在雖然有基于單張圖像的深度估計方法,但那個(gè)本質(zhì)上是靠的訓練所獲得的先驗,用作ADAS里的FCW啥的感覺(jué)還是精度不太夠。

  3D姿態(tài)估計(3D pose estimation):高級點(diǎn)的前視感知對物體檢測除了邊界框,還會(huì )估計其姿態(tài)。這對動(dòng)態(tài)障礙物的行為預測非常有幫助。

  細粒度識別(Fine-grained recognition):對于一些識別的物體,如果它們的類(lèi)別會(huì )影響到駕駛行為(如交通燈、交通標志、車(chē)道線(xiàn)等),則我們需要將檢測結果中相應部分拿出來(lái)進(jìn)一步對其進(jìn)行分類(lèi)識別。

  決策和展示:所有的檢測都是為了最后的決策和展示。如何自然地顯示(如通過(guò)AR展示的話(huà)如何與現實(shí)物體貼合),以及何時(shí)預警或介入控制都直接影響用戶(hù)體驗。

  另外可能還需要檢測路面上的指示標記,以及對當前場(chǎng)景是否支持作檢測判斷等等。由于篇幅有限和使內容簡(jiǎn)潔,這些本文都暫不涉及。檢測對象上本文主要關(guān)注車(chē)道線(xiàn)、物體和可行駛區域。

3.1數據

  我們知道,深度學(xué)習的最大優(yōu)勢之一就是能對大量數據進(jìn)行學(xué)習。這就意味它的效果很大程度上依賴(lài)于訓練的數據量,而對于汽車(chē)的前視感知更是如此。因為汽車(chē)的環(huán)境是開(kāi)放的,沒(méi)有充分而多樣的數據,模型便無(wú)法有效地泛化,那在各種corner case就可能出岔子。對于其它場(chǎng)景出岔也就出岔了,對AD或者ADAS來(lái)說(shuō)那可能就危及生命安全了。數據集大體有兩類(lèi)來(lái)源,一類(lèi)是公開(kāi)數據集;一類(lèi)是自標數據集。它們各自有優(yōu)缺點(diǎn)。

  得益于自動(dòng)駕駛領(lǐng)域的蓬勃發(fā)展,近年來(lái)出現了很多優(yōu)質(zhì)的公開(kāi)數據集。

  包含車(chē)道線(xiàn)的主要有BDD100K,CULane,TuSimple Lane Challenge和LLAMAS等。

  包含物體檢測的太多了,貌似是個(gè)道路環(huán)境數據集就會(huì )有。如BDD100K,KITTI,Udacity Driving Dataset,Waymo Open Datasets等。

  包含可行駛區域的有BDD100K,KITTI等。雖然理論上語(yǔ)義分割的數據集(如Cityscapes)就包含了可行駛區域的標注,但比較理想的標注還應該區分當前車(chē)道和相鄰車(chē)道。

  其它的還有不少數據集,網(wǎng)上有很多列表整理,這里就不重復了。雖然這些數據集很豐富,但有時(shí)未必能直接用上。一方面是它們的標注之間有很大差異。其中一個(gè)差異點(diǎn)是標注格式,這個(gè)其實(shí)還好辦,腳本基本能搞定。比較麻煩的是有時(shí)候標注的規范和內容會(huì )有出入。以車(chē)道線(xiàn)為例:有些是采用雙線(xiàn)標法(如BDD100K),有些是單線(xiàn)標法(如CULane,TuSimple Lane Challenge);有些是標有限條(如CULane),有些是有多少標多少(如BDD100K);有些對于虛線(xiàn)是像素級精確標注(ApolloScape),有些是會(huì )將它們“腦補”連起來(lái)(CULane);有些標了車(chē)道線(xiàn)類(lèi)型(BDD100K),有些沒(méi)有標(CULane)。而對于車(chē)輛和行人來(lái)說(shuō),不同數據集有不同的細分類(lèi)。但本著(zhù)人家標注也不容易,能用上一點(diǎn)是一點(diǎn)的精神,可以盡可能地對它們進(jìn)行轉化,使它們一致并滿(mǎn)足特定需求。舉例來(lái)說(shuō),BDD100K中是雙線(xiàn)標注,而其它多數是單線(xiàn)標。為了統一,我們可以通過(guò)算法自動(dòng)找到匹配的線(xiàn)并進(jìn)行合并。自動(dòng)合并效果如下:

在這里插入圖片描述

在這里插入圖片描述

圖4 BDD100K數據集車(chē)道線(xiàn)標注自動(dòng)轉換

  公開(kāi)的數據集雖然方便且量大,但往往沒(méi)法完全滿(mǎn)足需求。比如由于地域差異、攝像頭差異等會(huì )導致domain shift問(wèn)題,另外有些針對性的case沒(méi)法覆蓋。公開(kāi)數據集另一個(gè)問(wèn)題是license。很多的公開(kāi)數據集只能作研究用途,如果要商業(yè)用途是禁止或者需要專(zhuān)門(mén)再購買(mǎi)license的。因此,實(shí)際中往往還是需要請外包或自己標數據。

  另外,為了獲得更大量更多樣的數據,業(yè)界有一些常用方法和方向,如:

  數據增強(Data augmentation):最基本也很有效的擴充數據集手段之一,在車(chē)輛環(huán)境中尤為重要。由于道路環(huán)境數據集需要多樣化,因此我們需要通過(guò)數據增強來(lái)模擬不同的光照、天氣、視角等變化。

  自動(dòng)標注/輔助標注:雖然移動(dòng)端上由于算力有限,我們只能犧牲準確率布署輕量級的網(wǎng)絡(luò ),但我們可以訓練重量級的精度較高的網(wǎng)絡(luò )模型用于對數據進(jìn)行自動(dòng)標注。以下是一個(gè)重量級網(wǎng)絡(luò )(不是SOTA的)在BDD100K上訓練后的檢測效果。雖然不是十全十美,但在有些小目標上可能比老眼昏花的我還要標得湊合。就算無(wú)法完全替代人肉標注也可以作為輔助有效減少人工。

在這里插入圖片描述

圖5  某重量級網(wǎng)絡(luò )在BDD100K數據集上檢測效果(左:檢測結果;右:Ground truth)

  仿真器:利用仿真器來(lái)幫助自動(dòng)駕駛測試似乎已經(jīng)是一個(gè)普遍性做法了。隨著(zhù)3D圖形技術(shù)和硬件的飛速發(fā)展,今天仿真器中的渲染效果已相當逼真,已經(jīng)不像當年賽車(chē)游戲里車(chē)后冒個(gè)煙還是“馬賽克”效果。因此,仿真器也有望用于產(chǎn)生可用于訓練的數據。

  生成對抗網(wǎng)絡(luò )(GAN):我們知道,GAN是最近幾年非?;馃岬囊粋€(gè)方向。GAN也在一些工作中用于訓練數據的生成。雖然目前很多時(shí)候是看demo各種牛,但實(shí)際跑的時(shí)候可能就不是很理想。但不可否認這是一個(gè)很有前途的方向,不少工作應用它來(lái)緩解數據多樣化需求的問(wèn)題。

3.2算法

  針對前視感知中的幾類(lèi)目標,算法是不同的。另一方面,我們知道深度學(xué)習的視覺(jué)領(lǐng)域研究比較多的任務(wù)是:圖片識別、物體檢測、圖像分割(包括語(yǔ)義分割、實(shí)例分割、全景分割)。那么問(wèn)題來(lái)了,如何將對現有任務(wù)的方法充分應用來(lái)滿(mǎn)足前視感知的需求?如果實(shí)在不合適如何調整?

3.2.1車(chē)道線(xiàn)

  首先是車(chē)道線(xiàn)檢測,這可能是幾類(lèi)檢測目標中最特殊的,所以占的筆墨也會(huì )相對多些。它的特點(diǎn)是形狀狹長(cháng)(可能跨越大半張圖片),并且形態(tài)多變(可能是直線(xiàn)也可能是曲線(xiàn),還可能交叉等),容易與路面標識混淆,另外還需要區分實(shí)例?,F有物體檢測的方法不太適合這種形狀的東西。我們知道,在深度學(xué)習占領(lǐng)視覺(jué)領(lǐng)域前,車(chē)道線(xiàn)檢測多采用傳統CV的方法。Udacity(其聯(lián)合創(chuàng )始人Sebastian Thrun是自動(dòng)駕駛界大神)上有一個(gè)自動(dòng)駕駛課程。其中有作業(yè)就是車(chē)道線(xiàn)檢測,因此網(wǎng)上有很多這個(gè)作業(yè)的實(shí)現。其中比較關(guān)鍵的幾步是通過(guò)邊緣檢測算法(如Canny,Sobel算子)得到邊緣,然后通過(guò)Hough transform檢測直線(xiàn)(如果假設車(chē)道線(xiàn)為直線(xiàn)),或者經(jīng)過(guò)IPM得到鳥(niǎo)瞰視圖后通過(guò)滑窗搜索得到車(chē)道線(xiàn)上的像素點(diǎn),最后多項式曲線(xiàn)擬合輸出。這里邊幾乎每一步都有不少參數,而且各步相互影響,如果場(chǎng)景很多樣化的話(huà)調參就可能會(huì )比較酸爽,另一方面它對于車(chē)道線(xiàn)不完整的情況(如因遮擋或磨損)表現不好。因此,這已經(jīng)不是目前的主流,后面業(yè)界逐漸過(guò)渡到基于深度學(xué)習的方法。

  2015年,深度學(xué)習風(fēng)頭正勁,Stanford、Twitter等機構聯(lián)合發(fā)表的論文討論了將CNN應用到高速環(huán)境的車(chē)道線(xiàn)和車(chē)輛檢測中[1]。它使用當時(shí)物體檢測的方法[2]來(lái)檢測車(chē)道線(xiàn)。因為車(chē)道線(xiàn)很長(cháng)條,因此被分成多個(gè)線(xiàn)段,每個(gè)線(xiàn)段被當成物體來(lái)檢測。最后通過(guò)DBSCAN進(jìn)行聚類(lèi)得到車(chē)道線(xiàn)實(shí)例。同期另外一條思路是將車(chē)道線(xiàn)檢測當作語(yǔ)義分割任務(wù)。當時(shí)語(yǔ)義分割領(lǐng)域有了FCN[3]、SegNet[4]和DeepLab[5]等早期經(jīng)典網(wǎng)絡(luò )。結合一些包含車(chē)道線(xiàn)標注的語(yǔ)義分割數據集便可以進(jìn)行車(chē)道線(xiàn)檢測。如論文[6]試圖將包括車(chē)道線(xiàn)在內的多種檢測任務(wù)在分割任務(wù)中一把搞定。然而故事還遠沒(méi)有結束,這里還存在以下兩個(gè)比較大的挑戰,接下去幾年的工作也是主要圍繞這兩點(diǎn)來(lái)展開(kāi):

  繁瑣的后處理:現實(shí)中我們?yōu)榱撕竺娴臎Q策還需要知道哪條是當前車(chē)所在車(chē)道(Ego lane)的左、右車(chē)道線(xiàn)和相鄰車(chē)道的車(chē)道線(xiàn)。另外,因為車(chē)道線(xiàn)往往不完整,因此還需要得到車(chē)道線(xiàn)的結構化表示(如多項式或樣條曲線(xiàn))以便做插值。這樣,單就語(yǔ)義分割的結果還不夠。以往常見(jiàn)的做法是將分割結果進(jìn)行聚類(lèi)得到實(shí)例,然后通過(guò)一些后處理判斷其是哪條車(chē)道。另外,為了得到結構化表示還需要對這些點(diǎn)進(jìn)行多項式擬合等操作。理想的方法是簡(jiǎn)化或完全去除這些后處理,實(shí)現真正意義上end-to-end的檢測。

  復雜的環(huán)境:路面環(huán)境復雜常常導致圖像中的車(chē)道線(xiàn)殘缺不全。如天氣因素,其它車(chē)輛遮擋,陰影和光照,磨損等等。另外的一個(gè)比較大的干擾來(lái)自于地面上的箭頭指示和漢字,僅看局部圖像的話(huà)人也難以區分。因此如果無(wú)法有效利用全局上下文信息很難對它們進(jìn)行排除。對這些因素做到足夠魯棒是通往實(shí)用產(chǎn)品的必要條件。

  來(lái)自三星的論文[7]將車(chē)左右兩條車(chē)道線(xiàn)作為兩個(gè)類(lèi)別(加上背景共三類(lèi)),從而直接通過(guò)神經(jīng)網(wǎng)絡(luò )來(lái)學(xué)習,相當于做了實(shí)例分割,從而簡(jiǎn)化了后處理。

  2017年TuSimple主辦了車(chē)道線(xiàn)檢測競賽,炸出不少好的方法,同時(shí)也成為了車(chē)道線(xiàn)檢測的重要benchmark之一。第一名來(lái)自香港中文大學(xué),它也是基于語(yǔ)義分割來(lái)做,并針對車(chē)道線(xiàn)這種狹長(cháng)的物體提出了Spatial CNN(SCNN)[8]來(lái)替代MRF/CRF來(lái)對空間關(guān)系進(jìn)行建模。另一個(gè)比較有意思的點(diǎn)是當時(shí)競賽提供的數據集才幾千張(標注圖片約3.6K),因此數據可能會(huì )成為主要瓶頸之一,于是他們整了一個(gè)大規模的車(chē)道線(xiàn)的數據集CULane。該數據集共有13W多張。它比較貼近現實(shí)情況,涵蓋了白天、晚上、擁堵、陰影、光照過(guò)亮等9種場(chǎng)景。對于車(chē)道線(xiàn)的實(shí)例區分問(wèn)題,SCNN由于限定最多檢測4條車(chē)道線(xiàn),因此它可以把4條車(chē)道線(xiàn)當4類(lèi)物體來(lái)檢測。同時(shí),網(wǎng)絡(luò )還有一個(gè)專(zhuān)門(mén)的分支用于預測對應的車(chē)道線(xiàn)是否存在。這樣便不需要聚類(lèi)來(lái)提取實(shí)例。當時(shí)的第二名來(lái)自佐治亞理工(Georgia Institute of Technology)等機構。他們提出的方法[9]可以解決只能處理有限車(chē)道線(xiàn)的問(wèn)題。它利用像素對之間的關(guān)系,通過(guò)對目標函數的巧妙構造,讓神經(jīng)網(wǎng)絡(luò )學(xué)習像素的聚類(lèi)信息。并且可以拓展到(理論上)無(wú)窮實(shí)例的場(chǎng)景。

  2017年韓國KAIST和三星提出了VPGNet[10]。它是一個(gè)多任務(wù)網(wǎng)絡(luò ),其中一個(gè)分支用于預測滅點(diǎn),它可以引導車(chē)道線(xiàn)的檢測。這在一些惡劣的天氣下可以有比較大的幫助。但這需要額外標注的數據集。論文中提到他們建立了自己的數據集但沒(méi)有公開(kāi)。

  2018年,魯汶大學(xué)(KU Leuven)的論文提出LaneNet[11],它將車(chē)道線(xiàn)檢測作為一個(gè)實(shí)例分割問(wèn)題。以前很多方法對于提取車(chē)道線(xiàn)實(shí)例是用聚類(lèi),而對于車(chē)道線(xiàn)這種狹長(cháng)的物體很難定義一個(gè)好的距離測度用于聚類(lèi)。這篇論文的最大特色就是在傳統語(yǔ)義分割分支外還加了一個(gè)pixel embedding分支,用于對輸入圖像中的每個(gè)點(diǎn)得到其N(xiāo)維的embedding,這個(gè)分支是基于其實(shí)例信息訓練的。語(yǔ)義分割輸出的像素結合pixel embedding信息,作聚類(lèi)后便可得到車(chē)道線(xiàn)的實(shí)例信息,最后通過(guò)多項式擬合輸出。魯汶大學(xué)這個(gè)團隊次年在論文[12]中把預測曲線(xiàn)與ground truth曲線(xiàn)間的面積作為損失函數,將擬合改造成可微分操作,從而讓神經(jīng)網(wǎng)絡(luò )來(lái)學(xué)習擬合曲線(xiàn)的參數。前面LaneNet這篇論文另一個(gè)比較有特色的點(diǎn)是H-Net。IPM有利于車(chē)道線(xiàn)的多項式擬合。因為大多數彎曲的車(chē)道線(xiàn)在鳥(niǎo)瞰視圖下用二次曲線(xiàn)就夠了,但在透視視圖下卻需要更高階曲線(xiàn)才能擬合。而這個(gè)變換的參數一般需要通過(guò)相機標定。但是這個(gè)參數可能根據地形、坡道因素不同。因此最好可以根據輸入動(dòng)態(tài)調整。H-Net采用通過(guò)神經(jīng)網(wǎng)絡(luò )來(lái)預測的方式。這條思路上類(lèi)似的工作還有來(lái)自2018年GM的3D-LaneNet[13]。該方法以end-to-end方式直接預測3D的車(chē)道線(xiàn)。網(wǎng)絡(luò )采用dual-pathway結構。一條對應普通透視圖,估計逆透視變換參數。該參數結合前面的feature map與另一條對應鳥(niǎo)瞰視角的網(wǎng)絡(luò )中feature map結合,最終輸出3D車(chē)道線(xiàn)。不過(guò)畢竟帶3D車(chē)道線(xiàn)標注的數據集不好弄,于是他們自己搞了個(gè)高速場(chǎng)景下的合成數據集作了實(shí)驗。因此該方法在真實(shí)場(chǎng)景下的效果還需要進(jìn)一步驗證。

  杜克大學(xué)和地平線(xiàn)提出的LaneNet[14](也叫LaneNet,但此LaneNet非彼LaneNet)將車(chē)道線(xiàn)檢測分為兩個(gè)階段-lane edge proposal和lane line localization。前者是一個(gè)語(yǔ)義分割網(wǎng)絡(luò );后者是比較特色的地方,其網(wǎng)絡(luò )基于LSTM,輸出為各條車(chē)道線(xiàn)的信息。因此,某種程度上替代了很大部分后處理。

  TomTom公司提出的EL-GAN[15]通過(guò)GAN的思想來(lái)改善語(yǔ)義分割的結果。單純的語(yǔ)義分割應用于車(chē)道線(xiàn)所得結果不會(huì )考慮其平滑或是鄰域一致性等。EL-GAN在GAN的基礎上添加了embedding loss通過(guò)discriminator讓語(yǔ)義分割的輸出更接近ground truth。直觀(guān)上這樣語(yǔ)義分割的結果就會(huì )更符合車(chē)道線(xiàn)的拓撲形狀特征,從而減化了后處理的工作。

  我們知道,對于視覺(jué)任務(wù),有兩個(gè)比較通用的思路是可以幫助提高準確率的。一個(gè)是注意力(Attention)機制。今年由香港中文大學(xué)等機構發(fā)表的論文[16]提出了Self Attention Distillation(SAD)方法。它基于注意力蒸餾(Attention distillation)的思想,將之改造為自蒸餾,從而不依賴(lài)傳統知識蒸餾中的teacher model。網(wǎng)絡(luò )中后面的層的feature map(具有更豐富上下文信息)作為監督信息幫助前面的層訓練。前面的層學(xué)到更好的表征后又會(huì )改善后面的層,構成良性循環(huán)。另一個(gè)是用RNN結合前后幀信息。武漢大學(xué)和中山大學(xué)的論論文[17]結合了CNN和RNN來(lái)使用連續幀進(jìn)行車(chē)道線(xiàn)檢測。網(wǎng)絡(luò )結構中在由CNN組成的encoder和decoder間放入ConvLSTM用于時(shí)間序列上特征的學(xué)習。由于結合了前面幀的信息,在車(chē)道線(xiàn)磨損、遮擋等情況下可以做到更加魯棒。

3.2.2道路物體

  然后是物體檢測,這塊的算法可以說(shuō)是相當豐富。因為物體檢測的應用范圍非常廣,因此它幾乎伴隨著(zhù)計算機視覺(jué)領(lǐng)域的發(fā)展。相關(guān)的survey很多(如[18],[19]等)。深度學(xué)習興起后,一大波基于深度神經(jīng)網(wǎng)絡(luò )的物體檢測算法被提出。SOTA以極快的速度被刷新。從two-stage方法到輕量的one-stage方法,從anchor-based方法到近年很火的anchor-free方法,從手工設計到通過(guò)自動(dòng)神經(jīng)網(wǎng)絡(luò )架構搜索,琳瑯滿(mǎn)目,相關(guān)的總結與整理也非常多。

  對于道路環(huán)境來(lái)說(shuō),幾乎和通用物體檢測算法是通用的。如果要找些區別的話(huà),可能汽車(chē)前視圖像中,由于透視關(guān)系,小物體會(huì )比較多。2018年CVPR WAD比賽其中有一項是道路環(huán)境物體檢測。第一名方案來(lái)自搜狗,根據網(wǎng)上介紹(給機器配上“眼睛”,搜狗斬獲CVPR WAD2018挑戰賽冠軍),其方案在Faster R-CNN的基礎上使用了CoupleNet,同時(shí)結合了rainbow concatenation。第二名方案來(lái)自北京大學(xué)和阿里巴巴,提出了CFENet[20]。經(jīng)典的one-stage物體檢測網(wǎng)絡(luò )SSD在多個(gè)scale下的feature map進(jìn)行預測,使得檢測對物體的scale變化更加魯棒。小目標主要是通過(guò)淺層的較大feature map來(lái)處理,但淺層特征缺乏包含高層語(yǔ)義的信息會(huì )影響檢測效果。CFENet針對前視場(chǎng)景中小物體多的特點(diǎn)對SSD進(jìn)行了改進(jìn),在backbone后接出的淺層上加入CFE和FFB網(wǎng)絡(luò )模塊增強淺層特征檢測小目標的能力。

  現實(shí)應用中,物體檢測模型的輸出還需要經(jīng)過(guò)多步后續的處理。其中比較常見(jiàn)和重要的是NMS和跟蹤:

  神經(jīng)網(wǎng)絡(luò )模型一般會(huì )輸出非常多的物體框的candidate,其中很多candidate是重疊的,而NMS的主要作用就是消除那些冗余的框。這個(gè)算子很多的推理框架不支持或支持不好,所以一般會(huì )放到模型推理外面作為后處理來(lái)做。在學(xué)術(shù)界NMS這幾年也出現了一些可以提高準確率的變體。

  跟蹤是理解物體行為的重要一環(huán)。比如幀1有車(chē)A和車(chē)B,幀2有兩輛車(chē),我們需要知道這兩輛車(chē)哪輛是A,哪輛是B,或都不是。只有找到每個(gè)物體時(shí)間維度上的變化,才能進(jìn)一步做濾波,以及相應的分析。比較常見(jiàn)的多物體跟蹤方法是SORT(Simple Online and Realtime Tracking)框架[21],或許它的準確率不是那么出眾,但綜合性能等因素后還是不錯的選擇,尤其是對于在線(xiàn)場(chǎng)景。結合通過(guò)CNN提取的外觀(guān)特征(在DeepSORT[22]中采用)和Kalman filter預測的位置定義關(guān)聯(lián)度的metric,將幀間物體的跟蹤作為二分圖匹配問(wèn)題并通過(guò)經(jīng)典的匈牙利算法求解。前后幀物體關(guān)聯(lián)后通過(guò)Kalman filter對狀態(tài)進(jìn)行更新,可以有效消除檢測中的抖動(dòng)。

3.2.3可行駛區域

  再來(lái)說(shuō)下可行駛區域。開(kāi)過(guò)車(chē)的同志們都知道咱們的很多路沒(méi)有那么理想的車(chē)道線(xiàn),甚至在大量非結構化道路上壓根兒就沒(méi)有車(chē)道線(xiàn)。在這些沒(méi)有車(chē)道線(xiàn)、或者車(chē)道線(xiàn)不清晰的地方,可行駛區域就可以派上用場(chǎng)。一般在可行駛區域中我們需要區分當前車(chē)道和其它車(chē)道,因為該信息對后面的決策規劃非常有價(jià)值。

  在這個(gè)任務(wù)上早期比較流行的榜單是KITTI的road/lane detection任務(wù)。很多論文都是拿它作benchmark,其榜單上有一些是有源碼的。不過(guò)那個(gè)數據量比較少,多樣化程度也不夠,要用它訓練得泛化能力很強實(shí)在比較勉強。

  2018年CVPR WAD比賽中一個(gè)專(zhuān)項是可行駛區域檢測。所用的BDD100K數據量相比豐富得多。當時(shí)的冠軍方案是來(lái)自香港中文大學(xué)的IBN-PSANet。它的方案是結合了IBN-Net[23]和PSANet[24]。前者主要特色是結合了batch normalization(BN)和instance normalization(IN)。BN幾乎是現代CNN的標配。它主要用于解決covariate shift問(wèn)題,提高訓練收斂速度;而IN可以讓學(xué)習到的特征不太受像顏色、風(fēng)格等外觀(guān)變化的影響。而結合了兩者的IBN可以吸收兩者的優(yōu)點(diǎn)。而PSANet的特色主要是提出了PSA結構,它本質(zhì)是一種注意力機制在視覺(jué)上的應用。對于每一個(gè)像素,網(wǎng)絡(luò )學(xué)習兩個(gè)attention mask,一個(gè)對應它對其它每個(gè)像素的影響,一個(gè)對應其它每個(gè)像素對它的影響,從而使得分割可以充分考慮全局上下文信息。

  可行駛區域檢測中對于語(yǔ)義分割的輸出比較粗糙,且形式不易于后面模塊處理,因此還需要經(jīng)過(guò)一些簡(jiǎn)單的后處理。比如先聚類(lèi),再計算各類(lèi)簇的凸包,最后通過(guò)這些多邊形的位置關(guān)系便可以確定它們是當前車(chē)道還是其它車(chē)道的可行駛區域。

  值得一提的是,可行駛區域和車(chē)道線(xiàn)語(yǔ)義上是非常相關(guān)的,因此可以通過(guò)相互的幾何約束來(lái)提高準確率。業(yè)界也有不少這方面的嘗試,越來(lái)越多的深度神經(jīng)網(wǎng)絡(luò )將它們進(jìn)行融合。

3.3優(yōu)化

  從算法到產(chǎn)品最大的鴻溝之一便是性能優(yōu)化。移動(dòng)端設備有限的算力正在與多樣化算法的算力需求形成矛盾。這在之前寫(xiě)的文章《淺談端上智能之計算優(yōu)化》中進(jìn)行過(guò)初步的討論。對于像ADAS這樣的場(chǎng)景實(shí)時(shí)性尤其重要。我們可以從文中提及的幾個(gè)角度進(jìn)行優(yōu)化。

  首先,在網(wǎng)絡(luò )設計上我們在backbone上可以選擇這幾年經(jīng)典的輕量級網(wǎng)絡(luò )(如MobileNet系[25],[26],ShuffleNet系[27],[28],EfficientNet[29]等)。這些網(wǎng)絡(luò )一般在計算量上比重量級網(wǎng)絡(luò )有數量級上的減少,同時(shí)又可以保持準確率不損失太多。另一方面,對于多個(gè)檢測任務(wù),由于輸入相同,我們一般會(huì )使用多分支的網(wǎng)絡(luò )結構。每個(gè)任務(wù)對應一個(gè)分支(head),它們共享同一個(gè)用于特征提取的backbone。按經(jīng)驗來(lái)說(shuō),這個(gè)backbone占的計算一般會(huì )比較大,因此這樣可以節省下相當可觀(guān)的計算開(kāi)銷(xiāo)。但是這樣的多任務(wù)多分支網(wǎng)絡(luò )會(huì )給訓練帶來(lái)困難。最理想的當然是有全標注的數據集,但這樣的數據集比較難獲得。對于這個(gè)問(wèn)題,我們可以采取兩種方法:一種是如前面提的,靠重量級高準確率網(wǎng)絡(luò )自動(dòng)標注。如訓練高準確率的物體檢測模型給已有車(chē)道線(xiàn)標注的數據集進(jìn)行標注;另一種就是對帶特定標注的數據輸入,訓練對應的部分(backbone和相應的head)。

  對于給定網(wǎng)絡(luò )結構,我們可以通過(guò)模型壓縮進(jìn)一步減少計算量。因為普遍認為推理時(shí)不需要訓練時(shí)那樣復雜的模型和高的精度。模型壓縮有很多種方法,有量化、剪枝、知識蒸餾、低軼分解等等。常用的方法之一是量化。一般來(lái)說(shuō),將FP32轉為FP16是一種既比較安全收益又比較大的做法,然而在一些低端設備上我們還需要作更低精度(8位或以下)的量化。這時(shí)就得花更多精力在準確率損失上了。量化又分為post-training quantization和quantization-aware training。前者使用方便,不需要訓練環(huán)境,最多需要少量(幾百張)數據集作為量化參數calibration之用,但缺點(diǎn)是會(huì )對準確率損失較大;而后者,需要在訓練時(shí)插入特殊的算子用于得到量化所用參數及模擬量化行為。另一種常用的壓縮方法是網(wǎng)絡(luò )剪枝。根據網(wǎng)絡(luò )模型的敏感度分析,一些層稍作裁剪可能就會(huì )有大的準確率損失,而另一些層進(jìn)行裁剪則準確率損失不大,甚至還會(huì )使準確率上升。這就給了我們簡(jiǎn)化模型從而減少計算量的機會(huì )。低軼分解本質(zhì)上是通過(guò)對矩陣的近似來(lái)減少矩陣運算的計算量。知識蒸餾是一種很有意思的方法,就像現實(shí)中的老師教學(xué)生,通過(guò)teacher model來(lái)幫助訓練student model。

  網(wǎng)絡(luò )模型敲定后,就需要考慮性能優(yōu)化。深度的優(yōu)化是離不開(kāi)硬件的考慮的。對于一些用于自動(dòng)駕駛的計算平臺,可能直接就上像Nvidia的PX2這樣的高性能硬件平臺了。但對于普通車(chē)規硬件平臺,肯定是扛不住這種成本的。這些常規車(chē)機平臺中一些稍高端的會(huì )有幾百GFLOPS的GPU處理能力,或其它DSP,NPU等計算硬件。這里我們一般會(huì )首選這些硬件做模型推理而非CPU。因為如果將這些計算密集型任務(wù)往CPU放,會(huì )和系統中其它任務(wù)頻繁搶占資源導致不穩定的體驗。而對于低端一些的平臺GPU基本只夠渲染,那只能放到CPU上跑,一般會(huì )用上面提到的量化方法將模型轉為8位整型,然后將推理綁定到固定的核上以防止影響其它任務(wù)。推理引擎有兩類(lèi)選擇。對于一些有成熟推理引擎的硬件平臺,使用廠(chǎng)商的引擎(如Intel有OpenVINO,高通有SNPE)通常是一個(gè)方便快捷的選擇;還有一種方法就是用基于編譯器的推理引擎,典型的如TVM。它以offline的方式將網(wǎng)絡(luò )模型編譯成可執行文件并可進(jìn)行自動(dòng)的執行參數優(yōu)化。至于哪個(gè)性能好,通常是case-by-case,需要嘗試。值得注意的是,上面選取的輕量型網(wǎng)絡(luò )一般是memory-bound的,因此優(yōu)化時(shí)需要著(zhù)力優(yōu)化訪(fǎng)存。

  如果平臺上有多種可以執行神經(jīng)網(wǎng)絡(luò )算子的硬件,如CPU、GPU、NPU、DSP,那可以考慮通過(guò)異構調度來(lái)提高硬件利用率,從而達到性能的優(yōu)化?,F在業(yè)界已有不少的異構計算框架,如ONNXRuntime,Android NN runtime等。這里面,最關(guān)鍵核心的問(wèn)題在于調度。對于單個(gè)網(wǎng)絡(luò )模型而言,先要對網(wǎng)絡(luò )進(jìn)行切分,然后分配到最合適的硬件上,然后在每個(gè)硬件上進(jìn)行本地調度。難點(diǎn)在于這個(gè)調度是NP-hard的,意味著(zhù)對于實(shí)際中大規模問(wèn)題,不可能在合理時(shí)間找到最優(yōu)解,而要找到盡可能優(yōu)的近似解是門(mén)大學(xué)問(wèn)。業(yè)界出現了大量的方法,如精確算法、基于啟發(fā)式策略、元啟發(fā)式搜索和機器學(xué)習的方法。對于前視感知任務(wù)中的多分支模型,一個(gè)最簡(jiǎn)單而有效的做法就是將backbone以及各個(gè)head的分支作為子圖進(jìn)行切分和調度。如果要得到更優(yōu)的調度,則可以進(jìn)一步嘗試基于搜索和學(xué)習的方式。

4.小結

  前視感知領(lǐng)域是一個(gè)小打小鬧容易但做好非常難的東西。它需要長(cháng)期的沉淀才能構建起核心競爭力和技術(shù)壁壘。我們看到今天行業(yè)龍頭Mobileye獨領(lǐng)風(fēng)騷,但少有人看到它在早期的執著(zhù)。Mobileye創(chuàng )立于1999年,但到2007年才開(kāi)始盈利。類(lèi)似的還有谷歌的無(wú)人駕駛車(chē)(差不多10年了),波士頓動(dòng)力的機器人(貌似27年了),還有許許多多這樣“耐得住寂寞”的公司。即使最后失敗,相信也會(huì )滋養出更大的輝煌。而一旦成功,便能奠定絕對的市場(chǎng)地位,讓其它競爭者難望其項背。

  可以看到,學(xué)術(shù)界的成果和產(chǎn)品之間還有不小的鴻溝。當然其中的因素有很多,如成本、功耗等等,而其中最關(guān)鍵的因素之一是性能。傳統的方式很多時(shí)候會(huì )算法管算法,整好后拿去優(yōu)化,相互獨立,最多整幾輪迭代。而今天我們看到,兩者需要越來(lái)越多地相互融合,共同演進(jìn)。通過(guò)hardware-software co-design才能打造和打磨出更加完美的產(chǎn)品。它需要算法設計中便考慮對于特定平臺硬件上的友好性。舉例來(lái)說(shuō),為了更好的部署,網(wǎng)絡(luò )設計時(shí)最好就要考慮哪些算子在目標平臺上能被較好地加速;同時(shí)訓練時(shí)加入特定的元素以便于后面的模型剪枝和量化。如果等吭哧吭哧訓練了幾周,模型都出來(lái)了再考慮這些問(wèn)題就可能會(huì )帶來(lái)巨大的成本。近幾年大熱的AutoML中的自動(dòng)神經(jīng)網(wǎng)絡(luò )架構搜索(NAS)現在也越來(lái)越多地朝著(zhù)hardware/platform-ware的方向發(fā)展。

  最后,車(chē)輛環(huán)境感知中,數據的長(cháng)尾問(wèn)題是擺在A(yíng)D/ADAS面前最大的問(wèn)題。車(chē)輛環(huán)境是個(gè)開(kāi)放環(huán)境,路上可能碰到任何無(wú)法預想的東西。2016年蘭德智庫指出自動(dòng)駕駛系統需要進(jìn)行110億英里的測試才能達到量產(chǎn)應用條件。顯然,這不是幾輛車(chē)上路滿(mǎn)大街跑能搞得定的,傳統的測試手段已捉襟見(jiàn)肘。當然,對于A(yíng)DAS這類(lèi)駕駛輔助類(lèi)功能要求會(huì )低一些,但本質(zhì)上面臨的問(wèn)題是類(lèi)似的。傳統的汽車(chē)功能安全標準已經(jīng)無(wú)法涵蓋這類(lèi)問(wèn)題。雖然現在有針對性的預期功能安全(SOTIF)標準正在起草,但其可操作性和有效性還有待驗證??偟脕?lái)說(shuō),汽車(chē)的智能化給測試驗證提出了非常有趣同時(shí)也是前所末有的挑戰。

參考資料

  [1]B.Huval et al.,“An Empirical Evaluation of Deep Learning on Highway Driving,”CoRR,vol.abs/1504.01716,2015.

  [2]C.Szegedy,A.Toshev,and D.Erhan,“Deep Neural Networks for Object Detection,”in Advances in Neural Information Processing Systems 26,2013,pp.2553–2561.

  [3]E.Shelhamer,J.Long,and T.Darrell,“Fully Convolutional Networks for Semantic Segmentation,”CoRR,vol.abs/1605.06211,2016.

  [4]V.Badrinarayanan,A.Handa,and R.Cipolla,“SegNet:A Deep Convolutional Encoder-Decoder Architecture for Robust Semantic Pixel-Wise Labelling,”CoRR,vol.abs/1505.07293,2015.

  [5]L.-C.Chen,G.Papandreou,I.Kokkinos,K.Murphy,and A.L.Yuille,“DeepLab:Semantic Image Segmentation with Deep Convolutional Nets,Atrous Convolution,and Fully Connected CRFs,”CoRR,vol.abs/1606.00915,2016.

  [6]E.Romera,L.M.Bergasa,and R.Arroyo,“Can we unify monocular detectors for autonomous driving by using the pixel-wise semantic segmentation of CNNs?,”CoRR,vol.abs/1607.00971,2016.

  [7]J.Kim and C.Park,“End-To-End Ego Lane Estimation Based on Sequential Transfer Learning for Self-Driving Cars,”in 2017 IEEE Conference on Computer Vision and Pattern Recognition Workshops(CVPRW),2017,pp.1194–1202.

  [8]X.Pan,J.Shi,P.Luo,X.Wang,and X.Tang,“Spatial As Deep:Spatial CNN for Traffic Scene Understanding,”ArXiv E-Prints,Dec.2017.

  [9]Y.-C.Hsu,Z.Xu,Z.Kira,and J.Huang,“Learning to Cluster for Proposal-Free Instance Segmentation,”CoRR,vol.abs/1803.06459,2018.

  [10]S.Lee et al.,“VPGNet:Vanishing Point Guided Network for Lane and Road Marking Detection and Recognition,”CoRR,vol.abs/1710.06288,2017.

  [11]D.Neven,B.De Brabandere,S.Georgoulis,M.Proesmans,and L.Van Gool,“Towards End-to-End Lane Detection:an Instance Segmentation Approach,”ArXiv E-Prints,Feb.2018.

  [12]B.D.Brabandere,W.V.Gansbeke,D.Neven,M.Proesmans,and L.V.Gool,“End-to-end Lane Detection through Differentiable Least-Squares Fitting,”CoRR,vol.abs/1902.00293,2019.

  [13]N.Garnett,R.Cohen,T.Pe’er,R.Lahav,and D.Levi,“3D-LaneNet:end-to-end 3D multiple lane detection,”CoRR,vol.abs/1811.10203,2018.

  [14]Z.Wang,W.Ren,and Q.Qiu,“LaneNet:Real-Time Lane Detection Networks for Autonomous Driving”CoRR,vol.abs/1807.01726,2018

  [15]M.Ghafoorian,C.Nugteren,N.Baka,O.Booij,and M.Hofmann,“EL-GAN:Embedding Loss Driven Generative Adversarial Networks for Lane Detection”,CoRR,vol.abs/1806.05525,2018

  [16]Y.Hou,Z.Ma,C.Liu,and C.Change Loy,“Learning Lightweight Lane Detection CNNs by Self Attention Distillation,”ArXiv E-Prints,p.arXiv:1908.00821,Aug.2019.

  [17]Q.Zou,H.Jiang,Q.Dai,Y.Yue,L.Chen,and Q.Wang,“Robust Lane Detection from Continuous Driving Scenes Using Deep Neural Networks”,CoRR,vol.abs/1903.02193.2019

  [18]Z.Zou,Z.Shi,Y.Guo,and J.Ye,“Object Detection in 20 Years:A Survey,”CoRR,vol.abs/1905.05055,2019.

  [19]X.Wu,D.Sahoo,and S.C.H.Hoi,“Recent Advances in Deep Learning for Object Detection,”ArXiv E-Prints,p.arXiv:1908.03673,Aug.2019.

  [20]Q.Zhao,T.Sheng,Y.Wang,F.Ni,and L.Cai,“CFENet:An Accurate and Efficient Single-Shot Object Detector for Autonomous Driving,”ArXiv E-Prints,Jun.2018.

  [21]A.Bewley,Z.Ge,L.Ott,F.Ramos,and B.Upcroft,“Simple Online and Realtime Tracking,”CoRR,vol.abs/1602.00763,2016.

  [22]N.Wojke,A.Bewley,and D.Paulus,“Simple Online and Realtime Tracking with a Deep Association Metric,”CoRR,vol.abs/1703.07402,2017.

  [23]X.Pan,P.Luo,J.Shi,and X.Tang,“Two at Once:Enhancing Learning and Generalization Capacities via IBN-Net,”in The European Conference on Computer Vision(ECCV),2018.

  [24]H.Zhao et al.,“PSANet:Point-wise Spatial Attention Network for Scene Parsing,”in Computer Vision–ECCV 2018,Cham,2018,pp.270–286.

  [25]A.G.Howard et al.,“MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Applications,”ArXiv E-Prints,Apr.2017.

  [26]M.Sandler,A.Howard,M.Zhu,A.Zhmoginov,and L.-C.Chen,“Inverted Residuals and Linear Bottlenecks:Mobile Networks for Classification,Detection and Segmentation,”ArXiv E-Prints,Jan.2018.

  [27]X.Zhang,X.Zhou,M.Lin,and J.Sun,“ShuffleNet:An Extremely Efficient Convolutional Neural Network for Mobile Devices,”ArXiv E-Prints,Jul.2017.

  [28]N.Ma,X.Zhang,H.-T.Zheng,and J.Sun,“ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design,”ArXiv E-Prints,2018.

  [29]M.Tan and Q.V.Le,“EfficientNet:Rethinking Model Scaling for Convolutional Neural Networks,”ArXiv E-Prints,p.arXiv:1905.11946

  ————————————————

  版權聲明:本文為CSDN博主「ariesjzj」的原創(chuàng )文章,遵循CC 4.0 BY-SA版權協(xié)議,轉載請附上原文出處鏈接及本聲明。

  原文鏈接:https://blog.csdn.net/jinzhuojun/article/details/105316083



關(guān)鍵詞: 汽車(chē)視覺(jué)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>