高階自動駕駛系統是下一代智慧網聯汽車必須實現的課題,不僅需要解決車輛如何實現自主駕駛,也需要解決當前這代自動駕駛無法解決的問題,其中包括功能開發問題和效能提升問題。比如從最近的蔚來汽車自動駕駛事故中不難看出,要想實現真正的自動駕駛就需要自動駕駛系統解決當前不少的邊緣場景,這些場景都是很大程度上影響系統功能安全的場景內容。又如後續多數主機廠想要效仿特斯拉採用類似影子模式進行資料採集、模擬,那麼如何防止在開發過程中踩坑也是一個值得思考的問題。
另外,針對高階自動駕駛將採用基於SOA的開發模式進行架構搭建,因此SOA中將如何提升效率實現兼顧通用、高效、可靠的目標是我們必須要解決的問題。
本文將針對性如上三個比較棘手且亟待解決的問題進行詳細闡述,意在為開發者提供借鑑。
1
如何提升靜止目標碰撞檢測
從開發測試角度,我們已經收集了不少難解決或可能出現問題的場景。其中,對於靜止目標的識別就是其中之一。從全視覺的角度出發,當前成型的自動駕駛產品都是基於單目或三目視覺來進行檢測的。而這種檢測方式有著天然無法改變的缺陷,由於該方式是基於深度學習的機器視覺,其表現為識別、分類、探測是放在同一個模組進行的,通常無法將其進行分割,也就是說,如果無法將目標分類classification,進而往往針對某些目標就無法進行有效探測recognition。這種漏識別就容易導致自動駕駛車輛發生碰撞。
為了很好的說明無法識別的原因,總結解決該類問題的方法這裡我們需要重點說明下:第一種是訓練資料集無法完全覆蓋真實世界的全部目標;因為很多靜止目標不一定是標準的車輛,甚至可能是異形車輛、落石、不規則施工標誌燈,因此,在開發階段訓練的目標型別在很大程度上都無法用於真正的自動駕駛識別場景。
第二種是影象缺乏紋理特徵,紋理特徵包含多個畫素點的區域中進行統計計算,常具有旋轉不變性;對於噪聲有較強的抵抗能力;因此,對於一些紋理較少的貨車車廂、白牆等,透過視覺方式都是較難識別出來的。
此外,這裡需要解釋一下為什麼深度學習對靜止目標無法做到很好的識別能力。因為深度學習中的機器視覺,特別是基於單目攝像頭探測的機器視覺影象,會將所有靜止目標當作背景加以剔除,從而可以很好的選出對影片理解過程重要的運動目標,這種方式不僅可以提升識別效率,也可以很好的降低編碼位元速率。同時也為了防止誤檢測,也必須將運動目標和靜止目標分開,如有些道路兩側停滿汽車,運動目標的優先順序自然高於靜止目標,然後再去識別,通常是背景減除、三幀法或光流法,通常情況下這類識別演算法需要耗費1-2秒時間,然而對於實時性要求較高的自動駕駛而言,這段時間就可能已經發生碰撞事故了。
因此,為了解決如上識別效能缺陷,就需要從根本原因上解決深度學習不足所帶來的問題。機器視覺主要有兩種學習匹配模式,一種是手工模型,一種就是深度學習,通常都是採用後者進行影象識別和分類。由於深度學習主要是透過分割再擬合,原則上它要遍歷每一個畫素,對訓練好的模型做數十億次的乘積累加並設定不同的權重值來做對比,區別於人類視覺,機器視覺是非整體性的。從本質上講,深度學習是一種利用採集資料點,透過與已有資料庫進行有效匹配,擬合出無限接近於實際的曲線函式,從而能夠識別出期望被識別出來的環境目標,推斷趨勢並針對各類問題給出預測性結果。當然,曲線擬合在表示給定資料集時也存在一定風險,這就是擬合誤差。具體來講,演算法可能無法識別資料的正常波動,最終為了擬合度而將噪音視為有效資訊。因此想要真正解決對於這類異常環境目標的識別能力,僅僅依靠提升SOC晶片的AI加速器能力來解決是不明智的。因為AI加速器也僅僅是解決了MAC乘積累加計算模組的加速運算能力而已。
要想真正解決這類識別或匹配誤差問題,下一代高效能自動駕駛系統通常採用多感測器融合的方式(毫米波雷達、鐳射雷達)或採用多目攝像頭檢測的方式進行最佳化。做過駕駛輔助系統開發的設計師應該清楚,對於依靠當前這代毫米波雷達由於對於金屬物體十分敏感,在檢測的物體過程中通常是規避因為誤檢而導致AEB的誤觸發的。因此,很多靜止目標通常會被濾掉,同時,對於一些底盤較高的大貨車或者特種操作車,往往會因為毫米波雷達高度問題導致檢測不到目標而漏檢。
需要利用傳統辦法(或稱非深度學習演算法)進行三位目標重建,通常這可以採用鐳射雷達或高解析度4D毫米波雷達來進行點雲重建或雙目攝像頭進行光流追蹤來實現最佳化。對於基於鐳射雷達檢測目標的方法,其原理是發射探測訊號(鐳射束),然後將接收到的從目標反射回來的訊號(目標回波)與發射訊號進行比較,作適當處理後,來獲得目標的有關資訊,因此對於回波的點雲匹配本身也是一種深度學習過程,只不過這個過程相對於彈幕影象識別的分割、匹配更快些。
雙目視覺的方式對靜態目標的檢測是依賴視差影象來進行的,這種以來純幾何關係的視差圖是可以較為精確的定位該靜態目標位置的。很多時候單目視覺對於顛簸的路況、明暗對比非常強烈的路況、一些破損的路況中的遠距離的物體,可以完成檢測,但是三維恢復會存在很多不確定性。而立體相機可以與深度學習融合,將立體點雲與影象的RGB資訊以及紋理資訊融合,有利於進行遠距離目標的識別及3D測量。
深度學習可以更精細更穩定地檢測常見的道路參與者,綜合多種特徵,有利於更遠地發現道路參與者。而立體視覺則可以同時實現3D測量與基於點雲檢測全道路參與者,不受物體型別限制,不受安裝位置與姿態限制,動態測距更加穩定,泛化能力更好。我們將立體視覺和深度學習結合起來,可以在更遠的距離發現目標,同時能夠利用立體視覺進行三維刻畫。
如上這些演算法要麼比較依賴CPU進行的邏輯運算包括實現卡爾曼濾波、平滑運算、梯度處理,要麼依賴於GPU進行的影象深度學習處理。因此,下一代高階自動駕駛域控系統需要具備很好的運算處理能力才就能確保其效能滿足要求。
2
影子模式能否完美破局
當前,各主機廠或Tier1在研發下一代高階自動駕駛系統時往往無法很全面覆蓋環境中可能發生突變的各種工況,而這種初具規模的資料覆蓋往往會依賴於高質量的資料採集、處理,這裡我們通常稱之為極端場景的資料覆蓋。如何將大量極端場景資料採集並回傳至自動駕駛後臺是我們需要解決的重要問題,也是評價後續自動駕駛系統能否完美破局的關鍵要素。
特斯拉的影子模式開創了有效的資料採集先河。對於“影子模式”的定義在於,在手動駕駛狀態下,系統及其周邊感測器仍然執行但並不參與車輛控制,只是對決策演算法進行驗證,也即系統的演算法在“影子模式”下做持續模擬決策,並且把決策與駕駛員的行為進行對比,一旦兩者不一致,該場景便被判定為“極端工況”,進而觸發資料回傳。
但是如果要好好了解影子模式還需要重點解決如下問題。
1、影子模式如何提供更多更大範圍的極端工況探測採集,包含標註和非標註的訓練場景。
由於影子模式通常是資料採集、處理中的一部分,除利用控制端的軌跡差異進行觸發資料記錄外,其餘工作模式下並不直接應用於資料記錄。如果自動駕駛需要高效快速的應用上影子模式的方法,則需要則需要在其採集過程中同時佈局深度神經網路,貫穿於整個控制過程中(包括實現整個感知、預測、規劃和控制的整個模組)。更加實用的影子模式需要擴寬其工作範圍,這就要求不僅僅是比對軌跡才能觸發資料記錄及回傳,像諸如感知目標差異、融合目標差異等均可觸發資料記錄及回傳。這一過程就需要根據實際採集的埠定義相應的資料採集單元,這些單元均可以工作在自動駕駛或人工駕駛模式下,僅僅作為資料採集、記錄、回傳的硬體,不對車輛控制產生影響。
2、晶片選型及感測器配置對於影子模式的支援度是否符合預期。
對於自動駕駛開發而言,我們期望影子模式僅僅是一些資源佔用度較少的簡單邏輯運算,且啟用影子模式過程中也不會增加後臺處理時延。如果下一代高階自動駕駛想要基於影子模式實現資料採標,則必須考慮專門為影子系統額外配置一顆晶片,或者在多顆晶片的域控系統中拆分出某塊晶片中的摸個模組專門用來做影子演算法訓練。
此外,之前的影子系統通常是跑在L2+系統上的,其採標的感測器型別往往比較單一,如一般的公司都是採用了5R1V的方式進行資料採標,高階一點的,可能有配置單個鐳射雷達(當前國內量產或即將量產的企業還未有該配置),這種感測器配置採集的資料是否直接可以應用於下一代高階自動駕駛系統,這是不確定的。因為,單個或較少感測器對於環境工況的預判和系統的執行能力和多感測器是由較大差別的。因此,當升級後的高階自動駕駛系統,其感測器能力對於整個系統的歸控來講肯定是上了一個臺階。因此,後續自動駕駛系統是否還能應用先前L2級別下采集的場景資料,或只能部分應用,這是需要重新設計規劃的。
3、需要採用何種標準的判斷方法實現最科學有效的資料回傳。
影子模式的觸發前提是認為駕駛員對車輛的操作一定是正確且客觀的,因為假定在人為駕駛模式下,系統對環境的判斷能力一定不如駕駛員。然而事實真的如此麼?當然不全是。比如駕駛員看到前方道路上有較多的泥土怕弄髒車輪影響車外觀而選擇換道避開行駛,而系統確不會因為這種原因而觸發自動換道系統,此時如果以駕駛員的車控方式作為標準判斷其正確性,那麼系統肯定是錯了,此時觸發資料採標、回傳,其實是沒有意義或者說不準確的。因此,可以從另一個角度上說,在整個自動駕駛控制系統鏈路中,駕駛員的規律性駕駛行為可能是一種駕駛偏向,這種資料採標、回傳的觸發模式實際是為了提升駕駛體驗感的一種方法模式而已。
4、影子模式對問題的定位需要進一步提升精確度
由於影子模式是面向視覺化的駕駛端進行的,這種對問題的定位方式往往是採用逆向追溯方式從執行端的視角來看待問題的。當控制執行過程出現問題時,往往會順勢往後推是否時決策端的問題,如果決策端無任何問題,才會持續往前推是否是軌跡預測端,進一步推及是否是感知端問題。此外,感知端也是一個廣義的概念,它包括了真正的場景感知和後續融合系統,如果場景感知出現了問題,但透過融合系統的一系列魯棒性演算法處理,規避掉了該感知錯誤所帶來的誤決策等問題,則需要單獨將這類異常感知場景給篩選出來。
為了把這種場景的資料篩選出來,就需要持續記錄感知到規劃各端的資料之間的跳變情況,某兩端之間較大的跳變就觸發資料回傳,當然整個過程的計算量會很大。目前自動駕駛系統的整體感知能力仍然十分受限,誤感知導致誤決策的場景仍然時有發生,而即便正確感知也可能導致誤執行,這種情況下需要影子系統在收集到的“預測/決策失靈”場景資料時就需要細化顆粒度,排除對於無效資料的採標與回傳,這樣既可以節省流量,也可以節省儲存空間。
5、是否建立了自動駕駛系統資料的模擬應用能力
資料回傳後的使用方法是利用其進行深度學習和資料匹配最佳化,而這一過程需要首先依賴該場景來搭建模擬系統,在模擬系統中輸入相應的場景檢測引數進行演算法訓練最佳化。然而,實際情況是,當前能夠有效利用道路實測資料來做模擬的能力是要求比較高的。各大主機廠、檢測機構、tier1仍舊不是完全具備這樣的能力來完成或者能力不夠成熟等。
3
架構升級會帶來怎樣的開發問題
高階自動駕駛需要融合車路協同、邊緣計算、雲端服務等多種應用場景,且需要具備一定的可擴充套件性、通用性、自主進化性。當前電子電氣架構和軟體平臺架構很難解決這些需求,當前車載SOA則可以很好的解決如上問題。SOA源自於IT領域,車載SOA環境下最優的實現方式應該是繼承成熟的基於乙太網實現高內聚、低耦合的思路。
由此,基於SOA架構的設計高階自動駕駛系統過程的重點在於實現如下功能:
1、服務通訊標準化,即面向服務的通訊
SOME/IP採用了RPC(Remote Procedure Call)機制,繼承了“伺服器-客戶端”的模型。SOME/IP可以讓客戶端及時地找到服務端,並訂閱其感興趣的服務內容。客戶端可以用“需求-響應”、“防火牆”的模型訪問伺服器所提供的服務,服務可以利用通知的方式推送給客戶已經訂閱的服務內容,這就基本解決了服務通訊的問題。
然而,基於SOA架構的通訊標準SOME/IP有兩大缺陷:
a) 只定義了比較基礎的規範,應用互操作性難以得到保證。
b) 難以應對大資料,高併發的場景。由於缺少物件序列化的能力,SOME/IP軟體互操作性容易產生問題。SOME/IP不支援共享儲存,基於廣播的1對多通訊,在自動駕駛場景下,效能可能成為問題。
2、SOA架構需要對服務進行劃分,以服務重用、靈活重組為目的的服務劃分,即面向服務的重用共享設計。
需要將SOA的系統-軟體開發過程應用於整車功能邏輯的定義中去,架構會主導或者參與到需求開發、功能定義、功能實現、子系統設計、零部件設計等過程中去,面向服務的重用設計實現需要能夠貫穿始終,並最終在功能實現的環節體現出來。
這裡需要說明的是服務重用涉及到原有系統的切割和新系統的重建,隨著規模的擴大和新功能的增加,以資訊為基礎的通訊將會增長,如此以來,在預計之外的情況將開始經歷一個重大的處理反應期,這個反應期可能造成資料訪問延遲。而自動駕駛系統對於實時性要求極高,這也是SOA應用的最大侷限性問題。
此外,對於SOA的軟體實現而言,基於服務的軟體架構搭建過程中需要充分考慮是否可承載和適配面向服務的通訊設計及面向服務的重組實現問題。
4
總結
下一代高階自動駕駛系統無非需要解決兩類問題:我在哪兒,我要去哪兒?在這兩類問題中一類依賴於地圖定位,另一類依賴於導航控制。而基礎架構是建立面向服務的設計能力,SOA的架構應運而生。如何在新架構下實現高階自動駕駛系統功能的完美破局,將整體功能體驗和效能提升到一個新高度是自動駕駛研發人需要重點突破的問題。無論從整體的開發方式,感知效能上都應該做到量變到質變的過程。這條路上還有很多亟待解決的問題,我們需要不斷地個個解決之。