轉(zhuǎn)載自新機(jī)器視覺
一、背景
對于自動駕駛來說,建圖是必不可少的,目前主流廠商技術(shù)都在從HD到"無圖"進(jìn)行過渡籌備中,不過想要最終實現(xiàn)真正的"無圖"還是有很長的一段路要走。對于建圖來說,包含了很多的道路元素,車道線,停止線,斑馬線,導(dǎo)流屬性,道路邊緣以及中心線(包含引導(dǎo)線)等。這里,中心線的預(yù)測通常是根據(jù)軌跡,通過數(shù)學(xué)公式進(jìn)行擬合,目前學(xué)術(shù)上逐漸采用模型進(jìn)行預(yù)測,但是對于下游(PNC)來說,還是存在不夠平滑,曲率不夠精準(zhǔn)等問題,不過這個不在本次方案討論范圍內(nèi),先忽略,以后有空可以寫一寫。道路邊界對于PNC來說也是至關(guān)重要,約束車輛行駛范圍,避免物理碰撞發(fā)生。通常道路邊界的生成有幾種方法,一種是當(dāng)做車道線的一部分,跟著模型一起輸出,但是沒有車道線的特征明顯,容易漏檢,而且道路邊界是異形的,基于分割的方案會比基于Anchor的方案效果穩(wěn)定一些。另一種是HD的方法,根據(jù)處理后的車道線,按照距離和規(guī)則等虛擬出道路邊界線。本文給出一種新的解決方案,略微繁瑣,但是優(yōu)點是可以延用已有的公開數(shù)據(jù)集進(jìn)行處理生成,快速落地驗證,缺點是本方案不具備時效性,是離線的方法。
二、方案
數(shù)據(jù)集&模型整個方案的pipline如上圖所示,為了快速驗證效果,所以直接采用了公開的數(shù)據(jù)集BDD100k,這個數(shù)據(jù)集主要是用于可行駛區(qū)域, 車道線以及全景分割等。它的車道線有標(biāo)邊線,但是沒有區(qū)分類別,沒辦法直接用,所以采用freespace來進(jìn)行驗證。模型方面,理論上采用任何一個分割都可以,這里采用的是YOLOPv2, 模型提供了訓(xùn)練好的權(quán)重和推理腳本,輸出如下所示。
YOLOPv2輸出
差異性這個數(shù)據(jù)集存在一個與建圖的需求有所差異的問題,剛才提到這個方案是基于freespace做的,但是freespace是以實際能看到的邊界作區(qū)分的而不是道路的邊界,所以和實際建圖的需求有一些diff,上面圖里面能看到綠色的就是freespace的結(jié)果,被左邊的車擋住了道路的邊界,所以freespace就會以車輛邊界作為自身的界限。如果是實時的沒有什么問題,但是離線的話會產(chǎn)生diff,如果第一天有車,建圖后,第二天發(fā)現(xiàn)沒有車,那么可通行的范圍就被壓榨了。所以后續(xù)如果實際使用,需要以道路的邊界作為freespace的邊界線。
overview
整體方案整個方案的pipline如上所示,對前視攝像頭得到的圖像進(jìn)行畸變矯正后,喂進(jìn)模型,輸出對應(yīng)的freespace,由于IPM對于邊界以及遠(yuǎn)處的投影效果不好的問題,所以只選取車前15m,左右20m的范圍,得到的freespace根據(jù)內(nèi)外參以及自車位置投影到世界坐標(biāo)系下。通過連續(xù)幀的疊加,可以生成世界坐標(biāo)系下的2d點云。實際上需要的是邊緣,所以還需要對點云進(jìn)行處理得到道路的邊緣,這里有嘗試過PCL以及AlphaShape等點云處理方法,能解決部分case的提取,但是還是依賴于調(diào)參,沒辦法自動化處理,下面有一些bad case示例。
世界坐標(biāo)系2d點云
2d點云
PCL
pcl濾波+邊緣提取結(jié)果
AlphaShape
alphashape提取結(jié)果
針對上面的問題,首先對世界坐標(biāo)系的點云進(jìn)行投影映射,我這里設(shè)置的是1個像素表示0.05m,因為一個車道線大概15-20cm寬,所以這一點點的誤差不影響反投影回去的結(jié)果。映射后,可以得到柵格的點云,由于從uv到世界坐標(biāo)系轉(zhuǎn)換中,遠(yuǎn)處的點會發(fā)散,所以在柵格圖像中需要對其進(jìn)行過濾和填充處理,處理前后如下圖所示。
柵格處理
然后可以用圖像處理的方法得到整個柵格圖的邊緣并根據(jù)映射關(guān)系反投影到世界坐標(biāo)系下,根據(jù)下游的需求對矢量化的點進(jìn)行稀疏采樣或者插值處理,結(jié)果如下所示。
邊緣處理
接下來一步,就是需要根據(jù)RTK信息來對邊緣的兩端進(jìn)行截斷(不然封閉的區(qū)域車也沒發(fā)行駛),此步驟略微繁瑣,邏輯簡化如下:
根據(jù)屬性判斷是否是直行,轉(zhuǎn)彎還是掉頭路口等
根據(jù)不同的屬性,設(shè)置不同的切分邏輯
直行|轉(zhuǎn)彎,采用雙頭切分,分別根據(jù)起始和終止RTK位置,通過設(shè)置距離參數(shù)來找訓(xùn)左右兩端的切分點進(jìn)行切分。
掉頭,采用單頭切分,選定起始位置后定位關(guān)鍵點,通過設(shè)置較長的距離來貫穿整個掉頭路口,定位4個點進(jìn)行切分。
過濾異常點,平滑處理。
切分前后效果,這里藍(lán)色是切分后的邊緣
最后,就是不斷的優(yōu)化和迭代的邏輯了,模型效果不好那就優(yōu)化模型,邏輯不夠魯邦就優(yōu)化邏輯。之前有提到數(shù)據(jù)集中的freespace不是以實際道路邊緣邊界區(qū)分的,所以后面還需要標(biāo)數(shù)據(jù)進(jìn)行模型優(yōu)化。
為了驗證精度是否夠高,可以拼接到HD上進(jìn)行對比
底圖是hd提供的車道線和參考線,紅色是路口的道路邊界
最后的最后,PNC實際上用不了這種異形的邊緣的,事實證明了,一切的一切還是要向HD看齊,所以還要根據(jù)生成的邊緣來做二次約束進(jìn)行曲線平滑優(yōu)化處理。這里就不展開講了,又是一個非常復(fù)雜的數(shù)學(xué)問題。
基于邊緣約束優(yōu)化后效果
三、結(jié)論
本方案只是提供了一種快速落地的思路,里面實際上還有很多的細(xì)節(jié)問題需要進(jìn)行優(yōu)化。不過基于freespace的方案相比于只去預(yù)測道路邊緣的方案來說,泛化能力相對來說會強(qiáng)一點,同時可以一份標(biāo)注數(shù)據(jù)多種用途。不過速度上需要注意,離線可以滿足要求,在線實時還是要看優(yōu)化的效率。
服務(wù)熱線
微信客服