魚眼相機的車位線感知

來源 |  CV研習社

導讀 本文是一篇介紹魚眼相機做車位線檢測的文章,放眼當下泊車功能在智能汽車領域研究的如火如荼,從L2級的APA自動泊車發展到L2+的RPA遠程遙控泊車再到L3級的HPA自學習泊車最后研究AVP自主泊車,其中每個功能都少不了車位線的檢測。 通過本文讓小編帶著大家一起學習車位線檢測的相關技術和方法。

1 引言

小編近期從周視相機感知轉戰到環視感知領域,個人覺得對于行人、車輛等目標檢測和道路信息的語義分割從實現上差別不大,但是如何做車位線檢測任務讓我糾結許久,也算是把近幾年各種深度學習做車位線檢測的文章都看了一遍,下面對常規方法做些總結分享。

2 車位線有哪些特征?

理想的車位線由四個角點和四條線組成,如下圖所示:紅色的稱為入口線(the entrance line),左右兩條稱為分割線(the separate line),底部的紫線一般用處不大作為邊界即可。

魚眼相機的車位線感知的圖1

針對此類形狀的目標,通常有三種檢測方法:

a. 基于直線的方法通過找到兩條分割線與入口線檢測停車位,在一些使用傳統圖像處理算法檢測車位線的系統中進行出現,使用Sobel,Canny等算子進行邊緣檢測,結合Hough變換利用幾何特征獲得潛在的停車位邊界線。但是此類傳統算法容易受到光照條件,線條磨損,地面陰影等環境因素的影響,性能缺乏魯棒性。

b. 基于標記點的方法是通過檢測入口線和兩條分割線的交叉口,然后結合角點坐標檢測停車位。傳統圖像處理算法中提供了不少人工設計的角點檢測器,如Harris角點檢測,Shi-Tomasi角點檢測,FAST角點檢測等。如果采用此類方法仍然會出現上述Hough線檢測的魯棒性問題,所以部分學者將車位線的入口線和分割線的兩個相交區域作為檢測目標,如下圖所示:

魚眼相機的車位線感知的圖2

c. 基于分割的方法是對車輛、空閑空間、停車位標識和其他對象進行逐像素的分類。這樣就把車位線檢測問題轉換成了語義分割問題,形如前視感知中的車道線檢測任務,但是語義分割任務需要經過一系列復雜的后處理才能得到相對準確的停車位,時耗上無法滿足嵌入式端的實時要求。

3 車位線有哪些形式?

車位線的類型大方向主要有三種:垂直、水平、傾斜。但是在做車位線分類或者程序后處理時會遇到形形色 色的結構,比如:

魚眼相機的車位線感知的圖3

比如某些路邊的停車位常用路沿代替一條分割線;某些停車場的車位入口線和分割線會分離開;整個停車位顏色不同于周邊區域,但是就沒停車線~~~等等。

4 如何入門學習車位線檢測?

在無人駕駛的感知模塊,不過是前視,周視,環視的環境感知,用深度學習提取特征做分類是必不可少的一項技術。如果最便捷的做出一款車位線檢測的Demo,需要做好兩項準備工作:
  • 用什么樣的網絡做檢測任務?
  • 用什么樣的數據做訓練驗證?

近幾年開源了很多用深度學習做車位線檢測的方法,下面小編給大家介紹幾篇(順序不分前后):
“Attentional Graph Neural Network for Parking-slot Detection”:該文分為三個階段,分別是圖特征編碼、圖特征聚合、入口線鑒別,在拼接的鳥瞰圖上通過圖神經網絡對標記點之間的鄰近信息進行聚合來進行車位線檢測,解決常規標記點獨立檢測后的后處理步驟冗余問題。

魚眼相機的車位線感知的圖4

“Context-Based Parking Slot Detection With a Realistic Dataset”:該文有點類似Faser RCNN的粗略定位+精細微調兩階段網絡,先在PCR模塊中識別是否有停車位,在通過PSD模塊對旋轉BBox準確定位。

魚眼相機的車位線感知的圖5

“DMPR-PS A Novel Approach For Parking-slot Detection Using Directional Marking-point regression”該文通過檢測帶方向的標記點得到一張拼接后的鳥瞰圖中所有入口線與分割線的相交區域,然后對其進行過濾篩選并配對分類出車位類型。

魚眼相機的車位線感知的圖6

“Vacant Parking Slot Detection in the Around View Image Based on Deep Learning”:該文分為兩個模塊,車位線的檢測和車位占用情況分類。車位線的檢測模塊采用YOLOv3的方式對整個車位槽的頭部區域進行檢測分類得到車位類型,省去了只檢測兩個交叉點后通過后處理得到車位類型的環節。

魚眼相機的車位線感知的圖7

“PSDet: EfficientandUniversalParkingSlotDetection”:該文也是對車位線的交叉點進行檢測,不同之處在于它對比了幾種交叉點特征描述器的形式,采用圓形特征描述子提取交叉點范圍內的特征能夠更好的識別車位線相交區域。

魚眼相機的車位線感知的圖8
相關文章較多,小編就不一一舉例了,需要相關文章的小伙伴可以私聊找我。

說完了網絡結構,我們來看看有哪些開源的車位線數據集。目前找到的只有三個:
  • ps2.0
  • PSV
  • WoodScape
ps2.0是一份四顆魚眼拼接后的數據,數據均屬于停車場景,訓練集約1W張,測試集不到5K張,標簽是mat格式。數據如下圖所示:

魚眼相機的車位線感知的圖9

PSV同ps2.0數據集差不多,由四顆魚眼相機拼接后的圖片制作而成。數據量較小,訓練集2550張,驗證集425張,測試集1274張,標簽是語義分割圖。數據如下圖所示:

魚眼相機的車位線感知的圖10

WoodScape數據集更偏向于每顆魚眼獨立的環境感知,標簽包括約1W張外接框標簽、約1W張語義標簽、約1W張深度圖、4顆相機的標定文件等信息,適用于分割、深度估計、三維包圍盒檢測、斑點檢測等9項任務。數據如下圖所示:

魚眼相機的車位線感知的圖11

5 如何進階提高車位線檢測?

基于開源數據集訓練的結果往往不適用自己的場景,需要自采自標小批量的對應場景做網絡微調從而提高車位線的檢測效果。

在這個過程中我們會遇到很多問題,比如如何采集數據、采集多少數據、采集哪些場景?
其實最麻煩的就是一個維度劃分的問題,雖然車位線的類型只有垂直、水平、傾斜三種,但是外部環境因素多種多樣。比如:
  • 車位線顏色的不同;
  • 場地材質的不同;
  • 光照強弱的不同;
  • 天氣狀況的不同;
  • 地面陰影的不同;
  • 車位磨損的不同;

魚眼相機的車位線感知的圖12

制定采集標準時,一定要考慮細致詳盡,并對每種數據的采集數量確保相對平衡,否則會造成部分情況效果較差。下圖是從一篇文章中找到的維度參考,做做Demo應該可以了:

魚眼相機的車位線感知的圖13

除了堆數據提高性能以外,可以考慮網絡的輸入和輸出形式,輸入是四顆魚眼的拼接圖還是單顆魚眼的原始數據?

魚眼相機的車位線感知的圖14

輸出是以車位線四個關鍵點的形式還是入口處兩個相交區域外接框形式又或者語義圖形式?小編還在斟酌中,暫無很好的建議。

6 如何做的更像一款產品?

要想把Demo做到產品還有一大段路要走,不僅僅只關注把原型開發的模型移植到嵌入式端跑起來就結束了。從前期打通數據鏈路開始,關注RAW數據類型,ISP參數調節,算法模塊設計,硬件加速單元的分配等;再到數據采集方式,標注形式數量,工具鏈如何提供高效迭代驗證,以及代碼質量審核,模型間性能評估等等一系列工作。


登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP