自動駕駛革命:解密端到端背後的數據、算力和AI奇蹟_風聞
HiEV大蒜粒车研所-HiEV大蒜粒车研所官方账号-50分钟前
作者 | 毫末智行數據智能科學家 賀翔
編輯 | 祥威

無人駕駛「全村的希望」
編者注:
本文是HiEV出品的「端到端」自動駕駛技術解讀系列的第二篇,繼該系列首篇文章《特斯拉掀起「端到端」風暴,自動駕駛持續開卷》後,本文從實際應用的角度,剖析實現端到端的挑戰和應對策略。關於端到端的更多內容,歡迎添加微信號Yuting199701發送「端到端」加入交流羣。
最近,特斯拉FSD V12的發佈引發了業界對端到端自動駕駛的熱議,業界紛紛猜測FSD V12的強大能力是如何訓練出來的。從馬斯克的測試視頻可以大致歸納一下FSD V12系統的一些核心特徵:
訓練數據:1000萬段、分佈多樣、高質量的視頻,數據的採集、篩選、質量、分佈是系統成功的重中之重
訓練方式:採用端到端訓練,不再有感知、規控等模塊
車端代碼:V11有30萬行代碼來處理各類場景,而V12則非常簡單,不再針對任何場景定製策略,完全依靠數據編程
運行效率:50幀/秒,效率極高
這些特徵如此炫酷,引領着自動駕駛技術風向。那麼究竟什麼是端到端自動駕駛,如何實現端到端自動駕駛呢?筆者作為自動駕駛領域的從業人員,將從實戰應用的角度出發,探討端到端如何落地。

自動駕駛的傳統做法
從第一性原理來講,自動駕駛就是一個序列到序列的映射過程,輸入的是一個傳感器信號序列,可能包括多個攝像頭採集到的視頻、Lidar採集到的點雲、以及GPS、IMU等各類信息,輸出的是一個駕駛決策序列,例如可以是駕駛動作序列、也可以輸出軌跡序列再轉為操作動作。
這個過程與大部分AI任務基本一致,這種映射過程就相當於一個函數 y = f(x)。但是實現這種函數往往難度比較大、任務極其複雜,對於這種複雜的任務,一般可以通過2類方式來解決:
分治法:將複雜任務分解成多個子任務,逐個解決,再組合起來,相當於 y = f(x)*g(x)…
端到端:直接尋找一個函數實現y = f(x)
傳統分治法
分治法是將自動駕駛任務進行切分,定義多個子任務,每個子任務負責解決駕駛過程的某些特定問題,再進行系統集成來完成整個自動駕駛任務。傳統上,這些子任務包括:
地圖/定位:自動駕駛的汽車需要知道駕駛環境的地圖,其包含的信息一般比我們日常使用的導航地圖要多,例如車道數量、車端邊界、道路曲率、交通路牌、交通信號燈、停止線、道路拓撲等信息。當前,有些公司採用釐米級高清地圖,也有些公司採用更加輕量級的地圖,也有很多公司提出了無圖方案。然後,自動駕駛的汽車需要準確地知道其自身的位置和方向。傳統上有使用全球定位系統(GPS)、慣性測量單元(IMU)的方式,也有結合感知技術,進行圖片、Lidar點雲匹配的方式來估計自身位置。
感知/預測:自動駕駛的汽車需要看懂周圍的駕駛環境,感知任務負責識別障礙物、車道線、紅綠燈等關鍵的交通元素。尤其對於動態障礙物,除了需要實時監控並跟蹤其位置,還需要對其未來變化做出預測,這與人類駕駛汽車是一樣的,需要對未來趨勢做一個預判,才能採取正確的駕駛決策。這對於在下游任務的預測至關重要。
規劃/決策:自動駕駛的汽車需要結合定位、感知、預測的結果,來規劃未來的行駛路徑,從而避開障礙物保證安全。規劃過程需要考慮體感、安全、效率等各種維度的因素。傳統的自動駕駛方案一般通過分場景的方式,來定製不同的駕駛決策,將複雜的世界抽象為少數幾類典型場景,不同的場景採取不同的駕駛決策。
控制:最終,我們需要將駕駛決策轉為車輛特定的動作來操控車輛。

以百度的apollo為例,整體系統架構如圖所示,可見,要完成複雜的自動駕駛任務,需要先完成大量相對簡單的子任務,這些子任務可以先進行獨立開發測試,然後再將這些子任務集成到一個系統裏進行驗證。這種方式通過把複雜的任務切分、簡化、分而治之,大幅度降低了系統開發難度,同時可以針對每個模塊都的輸入輸出進行白盒化分析,系統具備很好的可解釋性,這對自動駕駛而言至關重要,一旦發生事故,必須要進行深入分析,找到原因。
但是,這種方式也有明顯的弊端,例如模塊太多、集成困難、錯誤累加等等,同時由於系統設計時引入了太多的人為先驗經驗,導致自動駕駛能力上限比較低,系統的泛化性比較差,對於沒有見過的場景往往無法處理。

「端到端」技術興起
相比之下**,端到端自動駕駛不進行任務切分,希望直接輸入傳感器數據、輸出駕駛決策(動作或者軌跡),從而拋棄傳統自動駕駛裏的感知、預測、規劃、控制等各類子任務**。這種方式有明顯的優勢,例如:
效果上:不但系統更簡單,還能實現全局最優。
效率上:由於任務更少、避免了大量重複處理,可以提高計算效率。
數據收益:不需要大量的人工策略、只需要採集足夠多的優質駕駛數據來訓練即可,可以通過規模化的方式(不斷擴展數據)來不斷提升系統的能力上限。
一個典型的端到端自動駕駛系統如圖所示:

輸入:大部分自動駕駛汽車都裝載了相機、Lidar、毫米波雷達等各類傳感器,採集這些傳感器的數據,輸入深度學習系統即可。
輸出: 可以直接輸出轉向角、油門、剎車等控制信號,也可以先輸出軌跡再結合不同的車輛動力學模型,將軌跡轉為轉向角、油門、剎車等控制信號。
可見,端到端自動駕駛系統就像人類的大腦,通過眼睛、耳朵等傳感器接受信息,經過大腦處理後,下達指令給手腳執行命令,整個系統簡單的都沒啥可介紹的……。但是這種簡單也隱藏了巨大的風險,例如可解釋性很差,無法像傳統自動駕駛任務一樣將中間結果拿出來進行分析;對數據的要求非常高,需要高質量的、分佈多樣的、海量的訓練數據,否則AI就會實現垃圾進垃圾出。

與傳統的自動駕駛方式對比可見,同樣的輸入、同樣的輸出,傳統自動駕駛包含多個任務(多個模塊),但是端到端只有一個任務。此處容易產生一個誤區,即認為傳統的自動駕駛是多模塊的、端到端自動駕駛是單模塊的,把分模塊與分任務的概念搞混了。
傳統的自動駕駛是分任務的,必然是多個模塊。端到端自動駕駛可以用單模塊來實現,當然也可以用多模塊來實現,其區別在於是否端到端訓練。分任務系統是每個任務獨立訓練、獨立優化、獨立測評的,而端到端系統是把所有模塊看成一個整體進行端到端訓練、端到端測評的。
例如2023年CVPR best paper提出的UniAD就是一種分模塊端到端訓練方式,這種方式通過端到端訓練避免了多任務訓練的融合難題實現全局最優,又保留了分模塊系統的優勢、可以拋出中間模塊的結果進行白盒化分析,反而更具靈活性對部署也更友好,如圖所示:

分任務的自動駕駛系統更像model centric系統,開發者通過不斷優化各個模型來提升各個任務的效果。而端到端自動駕駛則更像data centric系統,通過對數據的調優來提升系統效果。
早年,由於自動駕駛積累的數據還非常少,端到端系統的效果往往比較差。最近幾年,隨着帶高階輔助駕駛功能的量產車大規模落地,通過海量量產車可以採集到豐富的駕駛數據,覆蓋各類場景,再加上最近幾年AI算力的蓬勃發展,端到端自動駕駛在海量數據、海量算力的加持下,取得了突破性進展。
以特斯拉為例,通過遍佈全球的幾百萬輛量產車,可以採集到足夠豐富、足夠多樣的數據,再從中選出優質數據,在雲端使用數萬張GPU、以及自研的DOJO進行訓練和驗證,使得端到端自動駕駛能夠從paper變成product。

到 2023 年初,特斯拉就聲稱已經分析了從特斯拉客户的汽車中收集的 1000 萬個視頻片段(clips),特斯拉判斷完成一個端到端自動駕駛的訓練至少需要100萬個、分佈多樣、高質量的clips才能正常工作。
特斯拉通過分佈在全球的幾百萬量產車,基於影子模式,每當自動駕駛決策與人類司機不一致時,就會採集並回傳一個clip,已經累積了200P以上的數據,不管是數據規模、數據分佈還是數據質量上都遙遙領先。為了能在雲端處理這些數據,當前特斯拉擁有近10萬張A100,位居全球top5,預計到今年底會擁有100EFlops的算力,並針對自動駕駛自研了Dojo,在算力上同樣遙遙領先。
在2022年,毫末智行也開始了對端到端自動駕駛以及自動駕駛大模型的探索,走過了一條從看圖説話到完型填空到寫小作文的道路。
最早,毫末將端到端自動駕駛簡單地定義為一個看圖説話任務,希望輸入一串圖片、輸出一串駕駛決策,這種方式與機器翻譯輸入一串中文輸出一串英文非常類似,所以可以選擇端到端的序列模型,通過對輸入圖片進行編碼,再解碼輸出駕駛決策。
但是訓練之後,發現難以找到足夠的數據來訓練模型,因為手裏採集到的數據絕大部分駕駛行為都是雷同的,例如大部分都是直行,能用的數據不到2%。雖然項目效果未達預期,但是訓練過程發現端到端訓練需要消耗大量的算力,於是又開始着手解決算力問題,並且在2022年底跟火山引擎合作落地了業界領先的智算中心,等2023年大模型爆發再加上美國的制裁,算力市場已經一卡難求了,這也算一個意外收穫。

端到端自動駕駛的挑戰
從特斯拉的開發經驗來看,端到端自動駕駛真不是一般的企業能玩的,其所需的數據規模、算力規模遠遠超出國內企業的承受能力。除了成本高昂,端到端自動駕駛的技術難度也非常高,想要從實現從paper到product落地,相當於跨越從二踢腳到登月的難度。
數據難題
端到端訓練首先需要解決數據問題。早年自動駕駛企業大多依賴採集車採集數據,這種數據是不真實的、分佈有偏的、低質量的,只能做個demo,難以進行大規模端到端訓練。最近幾年,隨着量產車的規模化落地,業界很多公司都開始轉向採用量產車通過影子模式採集數據,但這種模式依然面臨艱鉅的挑戰。首先是採集策略問題,即如何平衡數據的長尾問題(有效性)和數據的規模問題(成本),如果採集策略比較寬鬆,我們往往發現採集回來的數據大部分是垃圾數據,根本沒有使用價值,如果採集策略過於嚴格,又擔心丟失大量有價值的數據。其次是數據的質量問題,如何定義數據質量是個艱鉅的產品問題,如何精準地挑選出高質量的數據又是一個複雜的技術問題。然後是數據分佈問題,如何從海量clips中提取有效的特徵、如何統計數據的分佈、應該考慮哪些維度,都需要大量的工作。對大部分自動駕駛企業,還會面臨嚴重的數據泛化問題,因為不同的車型傳感器配置差異巨大,採集的數據往往難以複用,而國內車企普遍車型眾多,最後很可能是採了一堆數據放在那沒法使用,看起來是數據資產,其實都是存儲成本。毫不誇張地説**,數據會佔據端到端自動駕駛開發中80%以上的研發成本**。
算力難題
在美國多輪制裁之下,國內採購GPU難上加難,大部分企業手裏擁有的算力資源非常有限,擁有超過1000張A100的企業寥寥無幾,甚至全國加起來都沒有特斯拉一家企業多。如何在算力受限的情況下,進行端到端自動駕駛的研發,是一個值得深入討論的問題。
算法難題
即使有了數據、有了算力,如何設計合適的自動駕駛算法來進行端到端訓練,依然沒有統一的答案。業界做過很多的嘗試,包括模仿學習、強化學習等等。模仿學習是模仿人類專家的行為,從中學習最優策略,例如可以挑選一批高質量的駕駛行為數據來訓練模型。強化學習則是通過與環境的交互和獎罰不斷試錯進行學習,可以設定一個獎勵機制,例如更少的碰撞、更高的效率等,在仿真環境裏進行大規模試錯。
驗證難題
端到端自動駕駛的評估也是一個十分困難的問題。自動駕駛測評分為2類:閉環評估和開環評估,主要區別在於閉環評估可以接受到反饋信號從而形成反饋閉環。開環評估可以對不同的任務通過輸入輸出來進行評估,例如單獨評估感知、預測、規劃的效果,並與真實數據或者標註數據進行對比,傳統的自動駕駛可以通過開環評估迭代。而端到端自動駕駛則難以進行開環評估,甚至也有人認為開環評估的端到端自動駕駛根本沒有意義。閉環評估一般通過在仿真引擎構建的虛擬世界裏建立反饋閉環,但是仿真不真是業界一大難題,很難推廣到現實世界中的各種場景。例如在接近大貨車時,即使自動駕駛能完美地通過,乘客往往也會有嚴重的恐慌心理,這種心理很難模擬。而如果採用實車閉環測評,一方面測評成本太高,另一方面危險場景的hard case使用實車測評危險太大。
可解釋性難題
如前文所述,可解釋性是端到端自動駕駛的一個弱點。尤其是對於單模塊端到端自動駕駛模型,實現可解釋性極為困難,雖然可以將注意力權重可視化來提供部分解釋性,但可靠性和實用性仍然十分有限,難以對事故、售後定責等問題給出有效的證據。對於分模塊的端到端系統,雖然可以將中間結果拋出以提供更多的信息,但是這種信息往往是神經網絡的隱層特徵,跟直觀的、真實的證據鏈還是有一定的差距,難以跟客户解釋清楚。
上車難題
終於在雲端完成了端到端自動駕駛的訓練了,仿真效果也很好,最後是如何把這套系統搬到車上並且高效的運行。雲端系統為了處理數以百萬計的clips,一般都採用複雜的網絡結構、巨大的網絡參數(高達10億甚至更多),再用成千上萬張A100進行訓練。但是車端往往只有非常低的算力、非常低的功耗,卻要求極高的幀率(每秒處理的圖片數量)、極低的延遲,這導致端到端自動駕駛上車十分困難,只有經過大規模的量化剪枝等提效手段之後才有可能。
這些最難的部分,特斯拉還沒公開談過是如何解決的。今年的特斯拉AI Day,大家可以期待一下特斯拉的端到端如何破解以上難題。在這之前,筆者談一下毫末是如何做的。

自動駕駛端到端的探索
為了降低訓練難度,毫末考慮將端到端大模型進行拆分,分為2個階段,一個階段解決感知問題(看懂世界),一個階段解決認知問題(駕駛決策),這樣做的好處有2個:
可以先獨立訓練,再進行聯合finetue,降低訓練難度;
不同的階段可以採用不同的數據,大幅降低數據成本。
在感知階段,主要任務是把視覺信號轉為感知結果,可以利用海量的帶高清視頻的採集數據和量產車回傳的各類corner case視頻來訓練。而在認知階段,則根據感知結果來進行駕駛決策,不需要輸入視頻,只需要輸入感知結果和駕駛行為即可,這種數據可以通過量產車進行大規模定向採集。通過這種拆解,既降低了任務的難度,又能充分利用不同的數據。
對於感知大模型,毫末從第一性原理出發,認為要實現端到端自動駕駛,感知就必須跟人類一樣,同時具備****識別二維紋理和三維結構、認識萬物這三個條件,並且最好是純視覺的。基於這樣的原則,我們建立了自監督感知大模型,將車載攝像頭的二維視頻數據進行編碼,然後通過NeRF渲染來預測視頻的下一幀圖像,構建了4D特徵空間。再通過多模態技術將視覺信號與文本信號對齊,實現識別萬物。

對於認知大模型,輸入的是感知結果、輸出的是駕駛決策,由於感知結果和駕駛決策都是結構化文本,其處理的都是文本符號,我們自然而然地想到了引入NLP相關的技術。
在2023年之前,BERT模型在互聯網領域取得了非常成功的應用,於是我們嘗試將BERT類的掩碼模型引入自動駕駛認知模型,通過量產車回傳海量的<感知結果、司機動作>數據對。這樣輸入歷史10秒的<感知結果、司機動作>、再用掩碼蓋住未來幾秒的司機駕駛動作,然後讓模型來預測駕駛動作,如果模型預測對了,就説明模型學會了開車,我們稱之為完形填空。
但是訓練效果並沒有達到預期,分析後發現,與NLP任務完全不同,NLP通過mask部分單詞,然後結合上下文可以把詞猜出來,確實是完形填空。但是自動駕駛場景下,mask歷史動作是毫無意義的,只能mask未來動作,即只有上文沒有下文,這其實是寫作文,大家都知道寫作文的難度比完形填空高太多了。
而且,人類駕駛汽車不僅依賴歷史感知結果,還更多的依賴對未來的預判,老司機往往對未來幾秒的交通環境有非常好的預判,例如隔壁車道的車會不會突然變道、路邊的行人會不會橫穿馬路等。基於這種預判,老司機再採取合理的駕駛動作。這種預判,從模型上講就是一種生成式模型。於是我們將算法調整為GPT生成式模型,將歷史感知結果使用BEV方式表達出來,再將BEV序列輸入模型,讓模型預測幾秒鐘之後未來世界可能發生的變化,這樣就構建一個自迴歸的生成式模型,如下圖所示:

然後,將感知和認識進行聯合訓練就可以實現端到端自動駕駛了。但是,我們發現僅通過這種方式進行訓練,想要達到非常好的駕駛效果,需要的數據規模、算力規模都極為龐大,我們根本無法承受。
例如,在傳統的分任務自動駕駛範式下,感知算法識別塑料袋後,可以人為設計一個塑料袋可以壓過去的駕駛策略,這樣訓練成本很低,但是在端到端範式下想要讓自動駕駛識別塑料袋並學習到塑料袋是可以壓過去,需要大量數據進行訓練,成本極高,這也是特斯拉手握數萬卡的原因之一。
塑料袋、泡沫等軟性材質是可以壓過去的、交警的手勢優先級是高於紅綠燈的、救護車是要避讓的,這些其實都屬於人類社會的世界知識,這些知識都是人類經過長期學習之後獲得的。
傳統的基於人工策略的自動駕駛成本很低,就是因為通過人工策略直接把人類社會積累的知識用在了自動駕駛上,省去了訓練成本。但是駕駛知識包羅萬象,如果要基於人類知識為世間萬物定製各類策略,也是一件不可能的事情。
那如何既能利用人類社會沉澱的知識,又能降低端到端自動駕駛的訓練成本呢?考慮到大語言模型中壓縮了幾乎全人類的知識,如果能將跟駕駛決策相關的知識提取出來,應該能大幅度降低訓練成本。
於是,毫末在端到端自動駕駛中又引入了大語言模型,通過感知大模型識別萬物後,將這些信息輸入LLM,通過LLM來提取世界知識,並作為輔助特徵來指導駕駛決策。如圖所示,這個系統極為複雜,算力消耗非常大,目前還只能在雲端運行,未來幾年將加快向車端的落地。


未來趨勢
過去一年,大語言模型的發展思路給端到端自動駕駛很多啓發,在模型、數據上都值得借鑑。
大模型
在自然語言處理領域,Chatgpt作為基礎模型展示了極強的泛化能力。最近,學術界的研究在語言-視覺大模型上也取得了突破性進展,這種基礎模型無疑會讓自動駕駛如虎添翼。
特斯拉、Wayve等公司也提出將World Model作為自動駕駛基礎模型的思路。World model是一種基於視頻來預測未來世界的模型,例如特斯拉的world model可以根據prompt給出的動作來做出反饋,並生成未來的世界圖像,而且能保證多視角、時序的一致性。
藉助大語言模型LLM
大語言模型壓縮了人類的大部分知識,當然也包括駕駛知識。可以通過與LLM進行交互,提取駕駛常識。例如傳統的佔用網絡,遇到前方一個大塑料袋時,往往會以為空間被佔用,但是基於LLM,我們可以獲取塑料袋的物理知識,從而知道不必躲閃。通過這種方式,相當於副駕坐了一位見多識廣的陪練,隨時可以告訴你遇到corner case應該如何處理,但是通過語言模型指導自動駕駛依舊風險巨大,因為LLM提供的答案幻覺十分嚴重。
數據生成
端到端自動駕駛可以説是數據為王,為了解決長尾數據問題,業界也在嘗試用AIGC技術構造數據。面對一個尚未解決的問題,如果現實環境難以採集到類似的數據,例如車禍,可以考慮使用AIGC技術來定向生成類似場景的數據,來快速提升效果。也可以使用仿真引擎來構造類似的場景,生成數據。
Zeroshot/fewshot learning
然而,不管數據規模有多大,自動駕駛模型始終都會遇到超出數據分佈的場景,每次遇到問題都去找數據來訓模型顯然不夠優雅,最好的方式是自動駕駛模型具備足夠的泛化能力,只需要少量樣本,甚至不需要樣本就能解決這種分佈之外的場景。大模型的出現,讓這種能力成為可能。
長期來看,縱然各種挑戰仍在,但筆者相信,端到端自動駕駛是未來最有希望實現無人駕駛的途徑之一,大模型將對自動駕駛的技術發展產生深度影響。
參考文獻:
https://arxiv.org/pdf/2307.04370.pdf
https://arxiv.org/pdf/2311.18636.pdf
https://arxiv.org/pdf/2306.16927.pdf
https://arxiv.org/pdf/2212.10156.pdf
