自動駕駛革命:解密端到端背后的數據、算力和AI奇跡
作者 |毫末智行數據智能科學家 賀翔
編輯 |祥威
最近,特斯拉FSD V12的發(fā)布引發(fā)了業(yè)界對端到端自動駕駛的熱議,業(yè)界紛紛猜測FSD V12的強大能力是如何訓練出來的。從馬斯克的測試視頻可以大致歸納一下FSD V12系統(tǒng)的一些核心特征:
·訓練數據:1000萬段、分布多樣、高質量的視頻,數據的采集、篩選、質量、分布是系統(tǒng)成功的重中之重
·訓練方式:采用端到端訓練,不再有感知、規(guī)控等模塊
·車端代碼:V11有30萬行代碼來處理各類場景,而V12則非常簡單,不再針對任何場景定制策略,完全依靠數據編程
·運行效率:50幀/秒,效率極高
這些特征如此炫酷,引領著自動駕駛技術風向。那么究竟什么是端到端自動駕駛,如何實現端到端自動駕駛呢?筆者作為自動駕駛領域的從業(yè)人員,將從實戰(zhàn)應用的角度出發(fā),探討端到端如何落地。
一、自動駕駛的傳統(tǒng)做法
從第一性原理來講,自動駕駛就是一個序列到序列的映射過程,輸入的是一個傳感器信號序列,可能包括多個攝像頭采集到的視頻、Lidar采集到的點云、以及GPS、IMU等各類信息,輸出的是一個駕駛決策序列,例如可以是駕駛動作序列、也可以輸出軌跡序列再轉為操作動作。
這個過程與大部分AI任務基本一致,這種映射過程就相當于一個函數 y = f(x)。但是實現這種函數往往難度比較大、任務極其復雜,對于這種復雜的任務,一般可以通過2類方式來解決:
·分治法:將復雜任務分解成多個子任務,逐個解決,再組合起來,相當于 y = f(x)*g(x)…
·端到端:直接尋找一個函數實現y = f(x)
傳統(tǒng)分治法
分治法是將自動駕駛任務進行切分,定義多個子任務,每個子任務負責解決駕駛過程的某些特定問題,再進行系統(tǒng)集成來完成整個自動駕駛任務。傳統(tǒng)上,這些子任務包括:
·地圖/定位:自動駕駛的汽車需要知道駕駛環(huán)境的地圖,其包含的信息一般比我們日常使用的導航地圖要多,例如車道數量、車端邊界、道路曲率、交通路牌、交通信號燈、停止線、道路拓撲等信息。當前,有些公司采用厘米級高清地圖,也有些公司采用更加輕量級的地圖,也有很多公司提出了無圖方案。然后,自動駕駛的汽車需要準確地知道其自身的位置和方向。傳統(tǒng)上有使用全球定位系統(tǒng)(GPS)、慣性測量單元(IMU)的方式,也有結合感知技術,進行圖片、Lidar點云匹配的方式來估計自身位置。
·感知/預測:自動駕駛的汽車需要看懂周圍的駕駛環(huán)境,感知任務負責識別障礙物、車道線、紅綠燈等關鍵的交通元素。尤其對于動態(tài)障礙物,除了需要實時監(jiān)控并跟蹤其位置,還需要對其未來變化做出預測,這與人類駕駛汽車是一樣的,需要對未來趨勢做一個預判,才能采取正確的駕駛決策。這對于在下游任務的預測至關重要。
·規(guī)劃/決策:自動駕駛的汽車需要結合定位、感知、預測的結果,來規(guī)劃未來的行駛路徑,從而避開障礙物保證安全。規(guī)劃過程需要考慮體感、安全、效率等各種維度的因素。傳統(tǒng)的自動駕駛方案一般通過分場景的方式,來定制不同的駕駛決策,將復雜的世界抽象為少數幾類典型場景,不同的場景采取不同的駕駛決策。
·控制:最終,我們需要將駕駛決策轉為車輛特定的動作來操控車輛。
以百度的apollo為例,整體系統(tǒng)架構如圖所示,可見,要完成復雜的自動駕駛任務,需要先完成大量相對簡單的子任務,這些子任務可以先進行獨立開發(fā)測試,然后再將這些子任務集成到一個系統(tǒng)里進行驗證。這種方式通過把復雜的任務切分、簡化、分而治之,大幅度降低了系統(tǒng)開發(fā)難度,同時可以針對每個模塊都的輸入輸出進行白盒化分析,系統(tǒng)具備很好的可解釋性,這對自動駕駛而言至關重要,一旦發(fā)生事故,必須要進行深入分析,找到原因。
但是,這種方式也有明顯的弊端,例如模塊太多、集成困難、錯誤累加等等,同時由于系統(tǒng)設計時引入了太多的人為先驗經驗,導致自動駕駛能力上限比較低,系統(tǒng)的泛化性比較差,對于沒有見過的場景往往無法處理。
二、「端到端」技術興起
相比之下,端到端自動駕駛不進行任務切分,希望直接輸入傳感器數據、輸出駕駛決策(動作或者軌跡),從而拋棄傳統(tǒng)自動駕駛里的感知、預測、規(guī)劃、控制等各類子任務。這種方式有明顯的優(yōu)勢,例如:
·效果上:不但系統(tǒng)更簡單,還能實現全局最優(yōu)。
·效率上:由于任務更少、避免了大量重復處理,可以提高計算效率。
·數據收益:不需要大量的人工策略、只需要采集足夠多的優(yōu)質駕駛數據來訓練即可,可以通過規(guī);姆绞剑ú粩鄶U展數據)來不斷提升系統(tǒng)的能力上限。
一個典型的端到端自動駕駛系統(tǒng)如圖所示:
輸入:大部分自動駕駛汽車都裝載了相機、Lidar、毫米波雷達等各類傳感器,采集這些傳感器的數據,輸入深度學習系統(tǒng)即可。
輸出: 可以直接輸出轉向角、油門、剎車等控制信號,也可以先輸出軌跡再結合不同的車輛動力學模型,將軌跡轉為轉向角、油門、剎車等控制信號。
可見,端到端自動駕駛系統(tǒng)就像人類的大腦,通過眼睛、耳朵等傳感器接受信息,經過大腦處理后,下達指令給手腳執(zhí)行命令,整個系統(tǒng)簡單的都沒啥可介紹的……。但是這種簡單也隱藏了巨大的風險,例如可解釋性很差,無法像傳統(tǒng)自動駕駛任務一樣將中間結果拿出來進行分析;對數據的要求非常高,需要高質量的、分布多樣的、海量的訓練數據,否則AI就會實現垃圾進垃圾出。
與傳統(tǒng)的自動駕駛方式對比可見,同樣的輸入、同樣的輸出,傳統(tǒng)自動駕駛包含多個任務(多個模塊),但是端到端只有一個任務。此處容易產生一個誤區(qū),即認為傳統(tǒng)的自動駕駛是多模塊的、端到端自動駕駛是單模塊的,把分模塊與分任務的概念搞混了。
傳統(tǒng)的自動駕駛是分任務的,必然是多個模塊。端到端自動駕駛可以用單模塊來實現,當然也可以用多模塊來實現,其區(qū)別在于是否端到端訓練。分任務系統(tǒng)是每個任務獨立訓練、獨立優(yōu)化、獨立測評的,而端到端系統(tǒng)是把所有模塊看成一個整體進行端到端訓練、端到端測評的。
例如2023年CVPR best paper提出的UniAD就是一種分模塊端到端訓練方式,這種方式通過端到端訓練避免了多任務訓練的融合難題實現全局最優(yōu),又保留了分模塊系統(tǒng)的優(yōu)勢、可以拋出中間模塊的結果進行白盒化分析,反而更具靈活性對部署也更友好,如圖所示:
分任務的自動駕駛系統(tǒng)更像model centric系統(tǒng),開發(fā)者通過不斷優(yōu)化各個模型來提升各個任務的效果。而端到端自動駕駛則更像data centric系統(tǒng),通過對數據的調優(yōu)來提升系統(tǒng)效果。
早年,由于自動駕駛積累的數據還非常少,端到端系統(tǒng)的效果往往比較差。最近幾年,隨著帶高階輔助駕駛功能的量產車大規(guī)模落地,通過海量量產車可以采集到豐富的駕駛數據,覆蓋各類場景,再加上最近幾年AI算力的蓬勃發(fā)展,端到端自動駕駛在海量數據、海量算力的加持下,取得了突破性進展。
以特斯拉為例,通過遍布全球的幾百萬輛量產車,可以采集到足夠豐富、足夠多樣的數據,再從中選出優(yōu)質數據,在云端使用數萬張GPU、以及自研的DOJO進行訓練和驗證,使得端到端自動駕駛能夠從paper變成product。
到 2023 年初,特斯拉就聲稱已經分析了從特斯拉客戶的汽車中收集的 1000 萬個視頻片段(clips),特斯拉判斷完成一個端到端自動駕駛的訓練至少需要100萬個、分布多樣、高質量的clips才能正常工作。
特斯拉通過分布在全球的幾百萬量產車,基于影子模式,每當自動駕駛決策與人類司機不一致時,就會采集并回傳一個clip,已經累積了200P以上的數據,不管是數據規(guī)模、數據分布還是數據質量上都遙遙領先。為了能在云端處理這些數據,當前特斯拉擁有近10萬張A100,位居全球top5,預計到今年底會擁有100EFlops的算力,并針對自動駕駛自研了Dojo,在算力上同樣遙遙領先。
在2022年,毫末智行也開始了對端到端自動駕駛以及自動駕駛大模型的探索,走過了一條從看圖說話到完型填空到寫小作文的道路。
最早,毫末將端到端自動駕駛簡單地定義為一個看圖說話任務,希望輸入一串圖片、輸出一串駕駛決策,這種方式與機器翻譯輸入一串中文輸出一串英文非常類似,所以可以選擇端到端的序列模型,通過對輸入圖片進行編碼,再解碼輸出駕駛決策。
但是訓練之后,發(fā)現難以找到足夠的數據來訓練模型,因為手里采集到的數據絕大部分駕駛行為都是雷同的,例如大部分都是直行,能用的數據不到2%。雖然項目效果未達預期,但是訓練過程發(fā)現端到端訓練需要消耗大量的算力,于是又開始著手解決算力問題,并且在2022年底跟火山引擎合作落地了業(yè)界領先的智算中心,等2023年大模型爆發(fā)再加上美國的制裁,算力市場已經一卡難求了,這也算一個意外收獲。
三、端到端自動駕駛的挑戰(zhàn)
從特斯拉的開發(fā)經驗來看,端到端自動駕駛真不是一般的企業(yè)能玩的,其所需的數據規(guī)模、算力規(guī)模遠遠超出國內企業(yè)的承受能力。除了成本高昂,端到端自動駕駛的技術難度也非常高,想要從實現從paper到product落地,相當于跨越從二踢腳到登月的難度。
·數據難題
端到端訓練首先需要解決數據問題。早年自動駕駛企業(yè)大多依賴采集車采集數據,這種數據是不真實的、分布有偏的、低質量的,只能做個demo,難以進行大規(guī)模端到端訓練。最近幾年,隨著量產車的規(guī);涞,業(yè)界很多公司都開始轉向采用量產車通過影子模式采集數據,但這種模式依然面臨艱巨的挑戰(zhàn)。首先是采集策略問題,即如何平衡數據的長尾問題(有效性)和數據的規(guī)模問題(成本),如果采集策略比較寬松,我們往往發(fā)現采集回來的數據大部分是垃圾數據,根本沒有使用價值,如果采集策略過于嚴格,又擔心丟失大量有價值的數據。其次是數據的質量問題,如何定義數據質量是個艱巨的產品問題,如何精準地挑選出高質量的數據又是一個復雜的技術問題。然后是數據分布問題,如何從海量clips中提取有效的特征、如何統(tǒng)計數據的分布、應該考慮哪些維度,都需要大量的工作。對大部分自動駕駛企業(yè),還會面臨嚴重的數據泛化問題,因為不同的車型傳感器配置差異巨大,采集的數據往往難以復用,而國內車企普遍車型眾多,最后很可能是采了一堆數據放在那沒法使用,看起來是數據資產,其實都是存儲成本。毫不夸張地說,數據會占據端到端自動駕駛開發(fā)中80%以上的研發(fā)成本。
·算力難題
在美國多輪制裁之下,國內采購GPU難上加難,大部分企業(yè)手里擁有的算力資源非常有限,擁有超過1000張A100的企業(yè)寥寥無幾,甚至全國加起來都沒有特斯拉一家企業(yè)多。如何在算力受限的情況下,進行端到端自動駕駛的研發(fā),是一個值得深入討論的問題。
·算法難題
即使有了數據、有了算力,如何設計合適的自動駕駛算法來進行端到端訓練,依然沒有統(tǒng)一的答案。業(yè)界做過很多的嘗試,包括模仿學習、強化學習等等。模仿學習是模仿人類專家的行為,從中學習最優(yōu)策略,例如可以挑選一批高質量的駕駛行為數據來訓練模型。強化學習則是通過與環(huán)境的交互和獎罰不斷試錯進行學習,可以設定一個獎勵機制,例如更少的碰撞、更高的效率等,在仿真環(huán)境里進行大規(guī)模試錯。
·驗證難題
端到端自動駕駛的評估也是一個十分困難的問題。自動駕駛測評分為2類:閉環(huán)評估和開環(huán)評估,主要區(qū)別在于閉環(huán)評估可以接受到反饋信號從而形成反饋閉環(huán)。開環(huán)評估可以對不同的任務通過輸入輸出來進行評估,例如單獨評估感知、預測、規(guī)劃的效果,并與真實數據或者標注數據進行對比,傳統(tǒng)的自動駕駛可以通過開環(huán)評估迭代。而端到端自動駕駛則難以進行開環(huán)評估,甚至也有人認為開環(huán)評估的端到端自動駕駛根本沒有意義。閉環(huán)評估一般通過在仿真引擎構建的虛擬世界里建立反饋閉環(huán),但是仿真不真是業(yè)界一大難題,很難推廣到現實世界中的各種場景。例如在接近大貨車時,即使自動駕駛能完美地通過,乘客往往也會有嚴重的恐慌心理,這種心理很難模擬。而如果采用實車閉環(huán)測評,一方面測評成本太高,另一方面危險場景的hard case使用實車測評危險太大。
·可解釋性難題
如前文所述,可解釋性是端到端自動駕駛的一個弱點。尤其是對于單模塊端到端自動駕駛模型,實現可解釋性極為困難,雖然可以將注意力權重可視化來提供部分解釋性,但可靠性和實用性仍然十分有限,難以對事故、售后定責等問題給出有效的證據。對于分模塊的端到端系統(tǒng),雖然可以將中間結果拋出以提供更多的信息,但是這種信息往往是神經網絡的隱層特征,跟直觀的、真實的證據鏈還是有一定的差距,難以跟客戶解釋清楚。
·上車難題
終于在云端完成了端到端自動駕駛的訓練了,仿真效果也很好,最后是如何把這套系統(tǒng)搬到車上并且高效的運行。云端系統(tǒng)為了處理數以百萬計的clips,一般都采用復雜的網絡結構、巨大的網絡參數(高達10億甚至更多),再用成千上萬張A100進行訓練。但是車端往往只有非常低的算力、非常低的功耗,卻要求極高的幀率(每秒處理的圖片數量)、極低的延遲,這導致端到端自動駕駛上車十分困難,只有經過大規(guī)模的量化剪枝等提效手段之后才有可能。
這些最難的部分,特斯拉還沒公開談過是如何解決的。今年的特斯拉AI Day,大家可以期待一下特斯拉的端到端如何破解以上難題。在這之前,筆者談一下毫末是如何做的。
四、自動駕駛端到端的探索
為了降低訓練難度,毫末考慮將端到端大模型進行拆分,分為2個階段,一個階段解決感知問題(看懂世界),一個階段解決認知問題(駕駛決策),這樣做的好處有2個:
1.可以先獨立訓練,再進行聯合finetue,降低訓練難度;
2.不同的階段可以采用不同的數據,大幅降低數據成本。
在感知階段,主要任務是把視覺信號轉為感知結果,可以利用海量的帶高清視頻的采集數據和量產車回傳的各類corner case視頻來訓練。而在認知階段,則根據感知結果來進行駕駛決策,不需要輸入視頻,只需要輸入感知結果和駕駛行為即可,這種數據可以通過量產車進行大規(guī)模定向采集。通過這種拆解,既降低了任務的難度,又能充分利用不同的數據。
對于感知大模型,毫末從第一性原理出發(fā),認為要實現端到端自動駕駛,感知就必須跟人類一樣,同時具備識別二維紋理和三維結構、認識萬物這三個條件,并且最好是純視覺的;谶@樣的原則,我們建立了自監(jiān)督感知大模型,將車載攝像頭的二維視頻數據進行編碼,然后通過NeRF渲染來預測視頻的下一幀圖像,構建了4D特征空間。再通過多模態(tài)技術將視覺信號與文本信號對齊,實現識別萬物。
對于認知大模型,輸入的是感知結果、輸出的是駕駛決策,由于感知結果和駕駛決策都是結構化文本,其處理的都是文本符號,我們自然而然地想到了引入NLP相關的技術。
在2023年之前,BERT模型在互聯網領域取得了非常成功的應用,于是我們嘗試將BERT類的掩碼模型引入自動駕駛認知模型,通過量產車回傳海量的<感知結果、司機動作>數據對。這樣輸入歷史10秒的<感知結果、司機動作>、再用掩碼蓋住未來幾秒的司機駕駛動作,然后讓模型來預測駕駛動作,如果模型預測對了,就說明模型學會了開車,我們稱之為完形填空。
但是訓練效果并沒有達到預期,分析后發(fā)現,與NLP任務完全不同,NLP通過mask部分單詞,然后結合上下文可以把詞猜出來,確實是完形填空。但是自動駕駛場景下,mask歷史動作是毫無意義的,只能mask未來動作,即只有上文沒有下文,這其實是寫作文,大家都知道寫作文的難度比完形填空高太多了。
而且,人類駕駛汽車不僅依賴歷史感知結果,還更多的依賴對未來的預判,老司機往往對未來幾秒的交通環(huán)境有非常好的預判,例如隔壁車道的車會不會突然變道、路邊的行人會不會橫穿馬路等;谶@種預判,老司機再采取合理的駕駛動作。這種預判,從模型上講就是一種生成式模型。于是我們將算法調整為GPT生成式模型,將歷史感知結果使用BEV方式表達出來,再將BEV序列輸入模型,讓模型預測幾秒鐘之后未來世界可能發(fā)生的變化,這樣就構建一個自回歸的生成式模型,如下圖所示:
然后,將感知和認識進行聯合訓練就可以實現端到端自動駕駛了。但是,我們發(fā)現僅通過這種方式進行訓練,想要達到非常好的駕駛效果,需要的數據規(guī)模、算力規(guī)模都極為龐大,我們根本無法承受。
例如,在傳統(tǒng)的分任務自動駕駛范式下,感知算法識別塑料袋后,可以人為設計一個塑料袋可以壓過去的駕駛策略,這樣訓練成本很低,但是在端到端范式下想要讓自動駕駛識別塑料袋并學習到塑料袋是可以壓過去,需要大量數據進行訓練,成本極高,這也是特斯拉手握數萬卡的原因之一。
塑料袋、泡沫等軟性材質是可以壓過去的、交警的手勢優(yōu)先級是高于紅綠燈的、救護車是要避讓的,這些其實都屬于人類社會的世界知識,這些知識都是人類經過長期學習之后獲得的。
傳統(tǒng)的基于人工策略的自動駕駛成本很低,就是因為通過人工策略直接把人類社會積累的知識用在了自動駕駛上,省去了訓練成本。但是駕駛知識包羅萬象,如果要基于人類知識為世間萬物定制各類策略,也是一件不可能的事情。
那如何既能利用人類社會沉淀的知識,又能降低端到端自動駕駛的訓練成本呢?考慮到大語言模型中壓縮了幾乎全人類的知識,如果能將跟駕駛決策相關的知識提取出來,應該能大幅度降低訓練成本。
于是,毫末在端到端自動駕駛中又引入了大語言模型,通過感知大模型識別萬物后,將這些信息輸入LLM,通過LLM來提取世界知識,并作為輔助特征來指導駕駛決策。如圖所示,這個系統(tǒng)極為復雜,算力消耗非常大,目前還只能在云端運行,未來幾年將加快向車端的落地。
五、未來趨勢
過去一年,大語言模型的發(fā)展思路給端到端自動駕駛很多啟發(fā),在模型、數據上都值得借鑒。
·大模型
在自然語言處理領域,Chatgpt作為基礎模型展示了極強的泛化能力。最近,學術界的研究在語言-視覺大模型上也取得了突破性進展,這種基礎模型無疑會讓自動駕駛如虎添翼。
特斯拉、Wayve等公司也提出將World Model作為自動駕駛基礎模型的思路。World model是一種基于視頻來預測未來世界的模型,例如特斯拉的world model可以根據prompt給出的動作來做出反饋,并生成未來的世界圖像,而且能保證多視角、時序的一致性。
·借助大語言模型LLM
大語言模型壓縮了人類的大部分知識,當然也包括駕駛知識?梢酝ㄟ^與LLM進行交互,提取駕駛常識。例如傳統(tǒng)的占用網絡,遇到前方一個大塑料袋時,往往會以為空間被占用,但是基于LLM,我們可以獲取塑料袋的物理知識,從而知道不必躲閃。通過這種方式,相當于副駕坐了一位見多識廣的陪練,隨時可以告訴你遇到corner case應該如何處理,但是通過語言模型指導自動駕駛依舊風險巨大,因為LLM提供的答案幻覺十分嚴重。
·數據生成
端到端自動駕駛可以說是數據為王,為了解決長尾數據問題,業(yè)界也在嘗試用AIGC技術構造數據。面對一個尚未解決的問題,如果現實環(huán)境難以采集到類似的數據,例如車禍,可以考慮使用AIGC技術來定向生成類似場景的數據,來快速提升效果。也可以使用仿真引擎來構造類似的場景,生成數據。
·Zeroshot/fewshot learning
然而,不管數據規(guī)模有多大,自動駕駛模型始終都會遇到超出數據分布的場景,每次遇到問題都去找數據來訓模型顯然不夠優(yōu)雅,最好的方式是自動駕駛模型具備足夠的泛化能力,只需要少量樣本,甚至不需要樣本就能解決這種分布之外的場景。大模型的出現,讓這種能力成為可能。
長期來看,縱然各種挑戰(zhàn)仍在,但筆者相信,端到端自動駕駛是未來最有希望實現無人駕駛的途徑之一,大模型將對自動駕駛的技術發(fā)展產生深度影響。
原文標題 : 自動駕駛革命:解密端到端背后的數據、算力和AI奇跡
請輸入評論內容...
請輸入評論/評論長度6~500個字
圖片新聞