聊聊端到端與下一代自動駕駛系統,以及端到端自動駕駛的一些誤區?
本文經自動駕駛之心公眾號授權轉載,轉載請聯系出處。
最近一個月由于眾所周知的一些原因,非常密集地和行業內的各種老師同學進行了交流。交流中必不可免的一個話題自然是端到端與火爆的特斯拉FSD V12。想借此機會,整理一下在當下這個時刻的一些想法和觀點,供大家參考和討論。
如何定義端到端的自動駕駛系統,應該期望端到端解決什么問題?
按照最傳統的定義,端到端的系統指的是一套系統,輸入傳感器的原始信息,直接輸出任務關心的變量。比如在圖像識別中,CNN相對于傳統的特征子+分類器的方法就可以叫做端到端。在自動駕駛任務中,自然想到的一個定義便是,輸入各種傳感器的數據(相機/LiDAR/Radar/IMU…),直接輸出車輛的控制信號(油門/方向盤轉角)。為了考慮不同車型之間的適配問題,也可以將輸出放寬為車輛的行駛軌跡。這便是一個傳統意義上,或者我叫做狹義端到端的定義。在這樣的一個基礎上,也衍生出了例如UniAD這樣模塊化端到端的概念,即在最終輸出控制信號或者路點之外,也引入了一些相關的中間任務的監督來提升性能。
然而,除了這樣狹義的定義之外,我們還應該從本質上思考一下,端到端的本質是什么?我認為端到端的本質應當是感知信息的無損傳遞。我們先回想一下在非端到端系統中,感知和PnC模塊的接口是什么樣子的。一般我們會有針對白名單物體(車,人,etc)的檢測/屬性分析/預測,會有對靜態環境的理解(道路結構/限速/紅綠燈,etc),如果做的更細致一些的話,還會做通用障礙物的一些檢測工作。從宏觀的角度來講,感知輸出的這些信息,都是對復雜駕駛場景的一種抽象,而且是人工定義的顯式抽象。然而,對于一些非常見場景中,現在的顯式抽象難以充分表達場景中會影響駕駛行為的因素,亦或是我們需要定義的任務過多過瑣碎,也難以枚舉盡所有需要的任務。所以端到端系統,提供了一種(也許是隱式)全面表示,希望能夠自動地無損地將這樣的信息作用于PnC。我認為,所有能滿足這樣的系統,都可以叫做廣義端到端。
至于其他的問題,比如對動態交互場景的一些優化,我個人的觀點認為至少并非只有端到端才能解決這些問題,端到端可能也不是解決這些問題最好的一個方案。傳統方法是可以解決好這些問題的。當然,在數據量足夠大的時候,端到端可能會提供一個還不錯的solution。關于這個事情是否有必要,會在后幾個問題中展開討論。
關于端到端自動駕駛的一些誤區?
一定要輸出控制信號和路點才是端到端
如果能認同上面所講的廣義端到端的概念,那么這個問題就很容易理解了。端到端更應該強調的是信息的無損傳遞,而不一定要直接輸出任務量。這樣狹義的端到端做法,其實帶來和非常多不必要的麻煩,需要大量的兜底方案來保證安全,然而這樣也會有很多的問題,在后面會展開。
端到端系統一定要基于大模型或者純視覺
端到端自動駕駛的概念和大模型自動駕駛以及純視覺自動駕駛沒有任何必然的聯系。這三個概念是完全獨立存在的,一個端到端的系統不必一定是傳統意義上的大模型驅動的,也不一定就是純視覺。三者之間有一些關聯,但不等同。
之前我有一篇文章詳細闡述過這些概念之間的關系,詳見:https://zhuanlan.zhihu.com/p/664189972
長遠來看,上述狹義的端到端系統有沒有可能實現L3級別以上自動駕駛?
其實我先想來吐槽一句,號稱要用大模型來顛覆L4的人,都沒有實際做過L4;號稱端到端包治百病的人,也都從來沒做過PnC。于是和很多對端到端狂熱的人聊下來,就變成了一個純粹的無法證實也無法證偽的宗教信仰之爭。我們做前沿研發的同學,還是應該更實事求是,講究證據一些。。。最起碼對想要顛覆的東西有一些基礎認知和了解一下其中棘手的問題,這是應該有的基本科學素質。。。
言歸正傳,目前來看,我是悲觀的。暫且不論目前號稱是純端到端的FSD,性能還遠遠不能達到L3級別以上所需要的可靠性和穩定性,未來就算是統計意義上這個車輛和人是一樣安全的,還要面臨如何和人類駕駛員的錯誤做align的問題。更直白一點來說,就是說,一個自動駕駛系統想要讓大眾和輿論接受,關鍵可能不在于一個絕對的事故率和致死率,而是在于大眾是否能接受有一些場景中,對于人類是相對輕松解決,而機器會犯錯的。這個需求對于純端到端系統來說更難以實現。更具體的在我21年的一個回答中有闡述,詳見:
如何看待李彥宏朋友圈發表:無人駕駛肯定會出事,只是這個概率比有人駕駛低多了?
https://www.zhihu.com/question/530828899/answer/2590673435?utm_psn=1762524415009697792
舉在北美的Waymo和Cruise為例,其實分別都出過不少事故,但是為什么Cruise最后一次出現的事故讓監管和大眾尤為不能接受呢?這個事故發生了兩次傷害,第一次的碰撞,對于人類駕駛員也是相當難以避免的,其實也是可以被接受的。但是在這一次的碰撞發生之后,發生了嚴重的二次傷害:系統錯誤地判斷了碰撞位置和傷員位置,為了不阻塞交通,降級到了靠邊停車的模式,將傷員拖拽很久。這樣的一個行為,是任何一個正常的人類駕駛員都不會做出的事情,而且影響非常惡劣。這個事情直接導致了Cruise后續的一些動蕩。這個事情其實也給我們敲響了警鐘,如何避免這樣的事情發生,應該是自動駕駛系統研發和運營中認真考慮的問題。
那么站在現在的這個時刻,下一代量產輔助駕駛系統中切實可行的方案是什么?
簡單來說,我認為一個合適的系統應當是首先充分挖掘傳統系統的能力上限,然后再去結合端到端的靈活和普適性,也就是一個漸進式端到端的方案。當然這兩者如何有機地結合就是個付費內容了,哈哈。。。但是我們可以分析一下,現在所謂的端到端或者learning based planner實際落地在做的事情是什么。
以我有限的了解,目前所謂端到端模型在行車中使用的時候,在輸出的軌跡之后都會去接一個基于傳統方法兜底的方案,或者是這樣的learning based planner和傳統的軌跡規劃算法會同時輸出多條軌跡,再通過一個selector來選擇一條執行。如果這樣設計系統架構,這么一個級連系統的性能上限其實是被這樣的兜底方案和selector限制住的。如果這樣的方案仍然是基于純feedforward learning的,仍會有不可預測的失效,本質上并不能達到兜底的目的。如果考慮在這樣輸出的軌跡上使用一個傳統的規劃方法再去優化或者選擇,那相當于learning based方法出的軌跡,只是給這樣的一個優化和搜索問題做了一個初始解,我們為何不直接去優化和搜索這樣的軌跡呢?
當然有同學會跳出來講,這樣的一個優化或者搜索問題是非凸的,狀態空間很大不可能在車載系統上跑到實時。我請大家在這里仔細想這樣一個問題:在過去10年中,感知系統至少吃到了100x的算力紅利發展,但是我們的PnC模塊呢?如果我們同樣允許PnC模塊使用大算力,結合上近幾年先進優化算法的一些發展,這樣的結論仍然成立嗎?針對這樣的問題,我們不應該固步自封,路徑依賴,而是應該從第一性原理思考什么才是對的。
數據驅動和傳統方法之間關系如何調和?
其實和自動駕駛非常類似的一個例子就是下棋,剛好在今年2月份的時候Deepmind發表了一篇文章(Grandmaster-Level Chess Without Search:https://arxiv.org/abs/2402.04494)就在探索只用數據驅動,拋棄AlphaGo和AlphaZero中的MCTS search是否可行。類比到自動駕駛中就是,只用一個網絡直接輸出action,拋棄掉后續所有的步驟。文章的結論是,在相當的規模的數據和模型參數下,不用搜索仍然可以得到一個還算合理的結果,然而和加上搜索的方法比,還有非常顯著的差距。(文章中這里的對比其實也不盡公平,實際差距應該更大)尤其是在解一些困難的殘局上,純數據驅動性能非常糟糕。這類比到自動駕駛中,也就是意味著,需要多步博弈的困難場景或corner case,仍然很難完全拋棄掉傳統的優化或者搜索算法。像AlphaZero一樣合理地運用各種技術的優勢,才是最為高效提升性能的方式。
傳統方法 = rule based if else?
這個觀念也是我在和很多人的交流中需要反復糾正的。按照很多人的定義,只要不是純數據驅動,就叫做rule based。還是舉下棋這個例子,去死記硬背定式和棋譜是rule based,但是像AlphaGo和AlphaZero一樣通過搜索和優化賦予模型reasoning的能力,我認為并不能叫做rule based。這恰恰也是目前大模型本身所欠缺的,也是研究者通過CoT等方式試圖賦予一個learning based model的。然而人開車每一個動作都是有明確的動機的,這和需要純數據驅動的圖像識別等無法清晰描述原因的任務不同。在一個合適的算法架構設計下,決策軌跡都應該成為變量,在一個科學的目標指引下統一優化。而不是通過強行打patch和調參去修各種case。這樣的一個系統自然也不會存在各種hardcode的奇怪的rule。
總結
最終總結一下,端到端也許是一個很有希望的技術路線,但是這樣一個概念如何付諸實踐還有很多有待探索的事情。是不是狂堆數據和模型參數就是唯一正確的解決方案,目前在我看來并不是的。我覺得,任何時刻作為一個前沿研究的技術人員,我們都應該真正奉行馬斯克所講的第一性原理和工程師思維,從實踐中思考問題的本質,而不是將馬斯克本身變成第一性原理。想要真正遙遙領先,就不應該放棄思考,人云亦云,否則就只能在不斷想要彎道超車。