1. 程式人生 > >剖析自動駕駛雙目視覺解決方案

剖析自動駕駛雙目視覺解決方案

未來十年,為了完成從感知+預警到決策+執行的進化之路,高階輔助駕駛系統(ADAS)將接入更多的感測器,實現更為複雜的計算,同時具備更高的安全性。

雙目視覺簡介

相比於單目視覺,雙目視覺(Stereo Vision)的關鍵區別在於可以利用雙攝像頭從不同角度對同一目標成像,從而獲取視差資訊,推算目標距離。具體到視覺ADAS應用來說,如果採用單目攝 像頭,為了識別行人和車輛等目標,通常需要大規模的資料採集和訓練來完成機器學習演算法,並且難以識別不規則物體;而利用毫米波雷達和鐳射雷達進行測距的精 度雖然較高,但是成本和難度亦較高。所以,雙目視覺的最大優勢在於維持開發成本較低的前提下,實現一定精度的目標識別和測距,完成FCW(前方碰撞預警) 等ADAS功能。

雙目視覺測距的基本原理並不複雜,如下圖所示,P為目標點,它在左右兩個相機(鏡頭中心分別為A和B)上的成像點分別為E和F,則P點在兩個相機中 的視差為d=EC+DF。根據三角形ACE與POA以及三角形BDF與POB的相似性,推導可得d=(fq)/z,其中f為相機焦距,q為兩相機光軸的距 離,z為目標到相機平面的距離。則距離z=(fq)/d,而f和q可認為是固定引數,所以求出視差訊號d即可求得距離z。

雙目視覺測距原理

根據雙目視覺的測距原理,通常將其實現過程分為五個步驟:相機標定,影象獲取,影象預處理,特徵提取與立體匹配,三維重構。其中,相機標定是為了得 到相機的內外引數和畸變係數等,可以離線進行;而左右相機影象獲取的同步性,影象預處理的質量和一致性,以及立體匹配(獲取視差資訊)和三維重構(獲取距離資訊)演算法的實時性要求帶來的巨大運算量,對在嵌入式平臺上實現雙目視覺ADAS提出了挑戰。

單目和雙目詳細對比

視覺方案要完成ADAS任務,一般要實現測距(本車與前方障礙物距離)和識別(障礙物是什麼)兩項工作。按照車載攝像頭模組的不同,目前主流ADAS攝像頭可以分為單目和雙目兩種技術路線。

單目攝像頭的演算法思路是先識別後測距:首先通過影象匹配進行識別,然後根據影象大小和高度進一步估算障礙與本車時間。在識別和估算階段,都需要和建立的樣本資料庫進行比較。想要識別各種車,就要建立車型資料庫,想要識別麋鹿,就要建立麋鹿資料庫。

雙目攝像頭的演算法思路是先測距後識別:首先利用視差直接測量物體與車的距離,原理和人眼類似。兩隻眼睛看同一個物體時,會存在視差,也就是分別閉上左右眼睛 看物體時,會發現感官上的位移。這種位移大小可以進一步測量出目標物體的遠近。然後在識別階段,雙目仍然要利用單目一樣的特徵提取和深度學習等演算法,進一 步識別障礙物到底是什麼。

因為視差越遠越小的緣故,業內有觀點認為,雙目在20米內有明顯的測距優勢,在20米距離外,視差減小測距存在難度,可以用高畫素攝像頭和更優秀的演算法來提升測距效能,該處是難點也是核心競爭力。

雙目鏡頭間距和測距是兩個此消彼長的引數,鏡頭間距越小,檢測距離越近,鏡頭間距越大,檢測距離越遠。考慮車內美觀和ADAS需要,小尺寸遠距離雙目產品更受歡迎。

因為增加了一個鏡頭,帶來更多運算量,整個攝像頭模組的效能要求和成本都更高了。而且在兩者都有的標定工作上,雙目要比單目更加複雜。而且選擇雙目方案切入市場並不能完全繞開單目方案的難點,在第二個階段,你依然要需要一個龐大的資料庫,依然需要打磨演算法。

單雙目比較

除了單雙目之外,還有多攝像頭組成的平臺。有的方案中選用長焦和廣角攝像頭於ADAS主攝像頭配合,兼顧周圍環境與遠處物體探測。比如Mobileye方案,在下文會介紹。

也有在環視平臺上疊加ADAS功能的情況。例如對於環視做車道偏離預警(LDW),與單目實現該功能比有一定優勢。在大雨天氣或者前方強光源的情況下,前視攝像頭有可能看不清車道線,環視攝像頭斜向下看車道線且可以提供多個角度,基本不會受到地面積水反光的影響,功能可以比前視做得更穩定。但同時也要考慮側向無車燈照射時,攝像頭的夜間表現。

這幾種方案在技術路線上和單目沒有本質差別,更多是基於不同平臺,發揮不同型別攝像頭模組的優勢分配任務,或者提供更多視角來解決一些複雜環境中單目勢單力薄的情況。

方案示例:基於S32V234的雙目視覺ADAS解決方案

640?wx_fmt=png

恩智浦視覺ADAS專用SoC:S32V234結構圖

S32V234採用了4顆ARM Cortex A53作為核心CPU,以獲得更高的效能功耗比。另外,S32V234包含了一顆ARM Cortex M4來作為片上MCU,主要用於關鍵IO(如CAN-FD)的實時控制,並支援AutoSAR作業系統。

晶片集成了兩路MIPI-CSI2和兩路16bit並行相機介面,以及Gbit乙太網控制器,為影象感測器的輸入提供了多種選擇。同時晶片內部包含 了可程式設計的影象訊號處理(ISP)硬體模組。利用嵌入式ISP,外部配搭的影象感測器可以輸出raw data,從而降低物料成本,節省空間尺寸。另外,晶片還包含了兩個名為APEX2CL的視覺加速引擎。每個APEX2CL擁有64個本地計算單元 (CU),並配有本地記憶體,通過SIMD/MIMD(單指令多資料/多指令多資料)的處理方式對影象識別過程進行加速。

另外值得指出的是,考慮到ADAS系統對安全性和可靠性的嚴苛需求,S32V234在設計時加入了諸如ECC(錯誤檢查與糾正),FCCU(故障收 集與控制單元),M/L BIST(記憶體/邏輯內建自測)等多種安全機制,能夠滿足ISO26262 ASIL B~C的需求。

S32V234片上具有兩路MIPI-CSI2相機介面,每一路最大可提供6Gbps的傳輸速率,可用於左右兩路相機的視訊輸入。由於兩路相機分別 輸入兩個MIPI通道,需要考慮二者之間的同步問題。在外部影象感測器的配合下,S23V324能夠支援不同的同步方式。如圖3所示,影象感測器通常具有 場同步訊號(VSYNC)和行同步訊號(HSYNC)來進行訊號同步:當兩路相機工作在主從模式時,由Master向Slave傳送同步訊號;當兩路相機 都工作在從模式時,可以由S32V234內部定時器產生同步訊號,同時傳送給兩路相機。

640?wx_fmt=png

雙目相機同步方案

在S32V234獲取外部相機的影象訊號後,可以由內部的ISP進行預處理。ISP模組包含多個針對ISP功能進行優化的處理單元,利用片上 SRAM對輸入訊號和中間處理結果進行快取,並採用一個基於ARM Cortex M0+的專用協處理器來管理ISP處理單元的時序,從而實現影象訊號的畫素級處理。由於ISP位於晶片內部並且可以靈活程式設計,所以不僅能夠節省雙目相機外接ISP的成本,而且其運算資源和頻寬能夠支援對雙路高達[email protected]影象訊號的實時處理,保證了雙路影象訊號的質量和一致性。

在雙目視覺ADAS應用中,最大的挑戰來自於對兩路影象進行立體匹配和三維重構所需要的巨大運算量。以FCW應用為例,既要求視差訊號的提取具有足夠的精度以保證測距精度,又要求處理幀頻維持一定水平以保證預警的響應速度,因此要求嵌入式平臺具有足夠的處理能力。S32V234中整合的影象加速引擎 APEX2的結構如圖4所示,其平行計算結構和專用DMA等設計保證了對影象訊號具有極高的處理效率。具體來說,ISP對影象訊號預處理完畢後送入DDR,APEX2引擎將影象分割後經由專用DMA將其送入每個CU對應的本地記憶體CMEM中,而立體匹配所需要的塊匹配(Block Matching)等演算法可以在不同的CU中並行處理,處理完畢後的資料經由DMA送回DDR,由CPU進行進一步處理(如生成預警訊號),或送至專門的 DCU(Display Control Unit)模組輸出顯示。

640?wx_fmt=png

APEX2架構及影象處理示意圖

綜上所述,基於S32V234的雙目視覺應用資料流如圖5所示。在該應用中,資料流按照ISP-APEX2-DCU的方向流動,A53作為主控CPU完成邏輯控制和必要的資料處理。通過這種流水線式的處理方式,可以使各部分計算資源充分利用,提高計算效率。

640?wx_fmt=png

基於S32V234的雙目視覺資料流

利用S32V234開發板搭建雙目視覺平臺,對雙路[email protected]視訊訊號進行處理,其輸出結果如圖6所示。其中從上至下的三幅圖中目標與相機的距離分別為1m,2m,3m,顯示結果以冷暖色調的變化表徵目標距離。結果表明,S32V234能夠對雙目視覺訊號進行實時處理,正確得到三維測距結果,同時輔以晶片的各項安全性設計,可以滿足雙目視覺ADAS系統的需求。

輕輕一掃  歡迎關注~

640?wx_fmt=jpeg

640?wx_fmt=gif