如何理解自動駕駛,SLAM,BEV,訓練數(shù)據(jù)源常見術語?(2)
Frustum,這個東西在3維渲染領域通常叫做“視錐體”,用來表示相機的可視范圍:
圖9紅面和綠面以及線框包圍起來的空間就是視錐體,綠面通常叫做近平面(Near Plane),紅面叫做遠平面(Far Plane),線框構成的角度叫做FOV,如果CCD/CMOS成像的高寬相同,那么近平面和遠平面就都是正方形,一個FOV就足以表示,反之,就要區(qū)分為FOVx和FOVy了,超出這個視錐體范圍的物體都不考慮進計算。圖7中由6個三角面構成了組合的可視范圍,實際上應該是6個俯視的視錐體構成,能看出視錐體之間是有交疊區(qū)域的,這些區(qū)域有利于DNN在訓練/推理中對6組數(shù)據(jù)做相互矯正,提高模型準確性,在不增加相機數(shù)量的前提下,如果想擴大這個交疊區(qū)域,就必須選擇FOV更大的相機,但FOV越大的相機一般鏡頭畸變就會越嚴重(反畸變再怎么做也只能一定程度上的矯正圖片),物體在圖片上的成像面積也越小,干擾DNN對圖片上特征的識別和提取。
BEV是個龐大的算法族,傾向于不同方向的算法選擇,粗略得看,有Tesla主導的以視覺感知流派,核心算法建立在多路攝像頭上,另外一大類是激光雷達+毫米波雷達+多路攝像頭的融合(Fusion)派,國內(nèi)很多AD公司都是融合派的,Google的Waymo也是。嚴格得講,Tesla正在從BEV(Hydranet)過渡到一種新的技術:Occupancy Network,從2維提升到3維:
圖10無論是2維的還是3維的,都在試圖描述周遭空間的Occupany(占用)情況,只是一個用2維棋盤格來表述這種占用情況,一個是用3維的積木方式表述占用。DNN在度量這種占用時采用的是概率,比如我們直觀看到某個格子上是一輛車,而DNN給出的原始結(jié)果是:這個格子上,是車的可能性有80%,是路面的可能性為5%,是行人的可能性為3%。。。。。所以,在BEV代碼里,一般將各種可能出現(xiàn)的物體分了類,通常是兩大類:1)不常變化的:車輛可通信區(qū)域(Driveable),路面(Road),車道(Lane),建筑(Building),植被(Foliage/Vegetation),停車區(qū)域(Parking),信號燈(Traffic Light)以及一些未分類靜態(tài)物體(Static),它們之間的關系是可以相互包容的,比如Driveable可以包含Road/Lane等等。2)可變的,也就是會發(fā)生移動的物體:行人(Pedestrian),小汽車(Car),卡車(Truck),錐形交通標/安全桶(Traffic Cone)等等這樣分類的目的是便于AD做后續(xù)的駕駛規(guī)劃(Planning,有的翻譯成決策)和控制(Control)。而BEV在感知(Perception)階段就是按照這些物體在格子上出現(xiàn)的概率打分,最后通過Softmax函數(shù)將概率歸一取出最大的那個可能性作為占用這個格子的物體類型。但這有個小問題:BEV的DNN模型(Model)在訓練階段,是要指明照片中各個物體是啥?也就是要在標注數(shù)據(jù)(Labeled Data)上給各種物體打上類型標簽的:
圖11右邊的我們權當做是標注數(shù)據(jù)吧,左邊是對應的相片,按照這個物體分類訓練出來的DNN模型,真得跑上路面,如果遭遇了訓練集里未出現(xiàn)的物體類型怎么辦?如果模型效果不好,比如某個姿勢奇葩的人體未被識別成行人和其它已知類型,又當如何?Occupancy Network為此改變的感知策略,不再強調(diào)分類了(不是不分類,只是重點變了),核心關注路面上是否有障礙物(Obstacle),先保證別撞上去就行了,別管它是什么類型。3維的積木方式表述這種障礙物更為貼切,有的地方借用了3維渲染(Rendering/Shading)領域的常見概念把這種3維表述叫做體素(Voxel),想象一下我的世界(MineCraft)就很簡單了。
圖12以上是視覺流派的簡述,混合派在干嘛?它們除了相機外,還側(cè)重于激光雷達的數(shù)據(jù),毫米波雷達由于數(shù)據(jù)品相太差逐漸退出,留守的去充當停車雷達了,也不能說它一無是處,Tesla雖然強調(diào)視覺處理,但也保留了一路朝向正前方的毫米波雷達,而且AD這個領域技術變化非常快,冷不丁哪天有新算法冒出又能把毫米波雷達的價值發(fā)揚光大一把。激光雷達的好處是什么:可以直接測出物體的遠近,精度比視覺推測出的場景深度要高很多,一般會轉(zhuǎn)化為深度(Depth)數(shù)據(jù)或者點云(Point Cloud),這兩者配套的算法有很長的歷史了,所以AD可以直接借用,減少開發(fā)量。另外,激光雷達可以在夜間或糟糕的天氣環(huán)境下工作,相機就抓瞎了。但這幾天出現(xiàn)了一種新的感知技術HADAR(Heat-Assisted Detection and Ranging),可以和相機/激光雷達/毫米波雷達并列的傳感器級別感知技術。它的特點是利用特殊的算法把常規(guī)熱成像在夜間拍攝的圖片轉(zhuǎn)化為周圍環(huán)境/物體的紋理和深度,這個東西和相機配合能解決夜間視覺感知的問題。以前的BEV為什么不提熱成像/紅外相機,因為傳統(tǒng)算法有些明顯的缺陷:只能提供場景的熱量分布,形成一張灰度(Gray)圖,缺乏紋理(Texture),原始數(shù)據(jù)缺乏深度信息,推算出的深度精度差,如果僅僅通過從灰度圖上提取的輪廓(Contour)和亮度過渡(Gradient),很難精確還原場景/物體的體積信息,并且目前的2維物體識別是很依賴紋理和色彩的。這個HADAR的出現(xiàn),恰好可以解決這個問題:在較暗的環(huán)境下提取場景的深度以及紋理:
圖13左列,自上而下:1)基礎的熱成像,簡稱T2)用常規(guī)熱成像算法從T提取的深度3)用HADAR算法從T提取的紋理圖4)用HADAR算法從T提取的深度5)真實場景的深度右列,自上而下:1)這個場景在白天用可見光相機拍攝的照片2)通過照片推理的深度3)真實場景的深度HADAR的這個深度信息老牛逼了,對比一下激光雷達的效果就知道了:
圖14激光雷達的掃描范圍是有限的,一般半徑100米,從上圖可以看出,沒有紋理信息,遠處的場景也沒有深度了,掃描線導致其數(shù)據(jù)是個稀疏(Sparse)結(jié)構,想要覆蓋半徑更大更稠密(Dense)就必須買更昂貴的型號,最好是停下來多掃一段時間。激光雷達模塊廠家在展示產(chǎn)品時,當然得給出更好看的圖了,只有AD研發(fā)人員才知道這里面有多苦。以上都是基礎的概念,作為BEV算法的入門,必須先提到LSS(Lift,Splat,Shoot):https://github.com/nv-tlabs/lift-splat-shoot老黃家的,很多文章都把它列為BEV的開山(Groundbreaking)之。它構建了一個簡單有效的處理過程:把相機的照片從2維數(shù)據(jù)投影成3維數(shù)據(jù),然后像打蒼蠅一樣把它拍扁,再從上帝視角來看這個被拍扁的場景,特別符合人看地圖的直覺模式。一般看到這里會有疑惑的:都已經(jīng)建立了3維的場景數(shù)據(jù),3維不香么?干嘛還要拍扁?不是不想要3維,是沒辦法,它不是一個完善的3維數(shù)據(jù):
圖15看過這玩意吧,它就是LSS的本質(zhì),從正面看,能形成一張2維照片,這個照片被LSS拉伸到3維空間后就是上圖,你從BEV的視角也就是正上方向下看會是啥?什么都看不出來,所以后續(xù)要拍扁(Splat),具體過程是這樣:
圖16
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。