Apollo仿真「訓(xùn)練有素」,長(zhǎng)沙無(wú)人駕駛出租「輕車(chē)熟路」
上路之前,已經(jīng)在最強(qiáng)仿真系統(tǒng)里跑了無(wú)數(shù)回
允中 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI
書(shū)接上回,我們介紹到:百度Apollo無(wú)人駕駛出租,已在長(zhǎng)沙全面免費(fèi)開(kāi)放。
但是!也有不少朋友發(fā)來(lái)疑問(wèn):心里有點(diǎn)擔(dān)憂,不敢坐。
畢竟之前都是人類(lèi)司機(jī),應(yīng)對(duì)各種場(chǎng)景和路況有大腦。現(xiàn)在改成AI駕駛,靠不靠譜?
或者更直白來(lái)說(shuō),百度Apollo的工程師們,到底是經(jīng)過(guò)了怎樣的技術(shù)考核和保障,才敢放心開(kāi)放給每一個(gè)人乘坐?
于是,奉讀者之問(wèn),我們找到了Apollo的技術(shù)大神們,并且經(jīng)過(guò)「編譯」,把這份Apollo無(wú)人駕駛出租敢于全民承載的背后技術(shù)解析,轉(zhuǎn)述給你聽(tīng)。
來(lái),我們由表及里,一起從現(xiàn)象到本質(zhì)。
云端練了千萬(wàn)遍,才敢人間坐一回
自動(dòng)駕駛是個(gè)技術(shù)活兒,能落地一定得技術(shù)上過(guò)硬。
我們知道,所有AI模型都需要借助海量數(shù)據(jù)來(lái)訓(xùn)練,而且為了保證訓(xùn)練的效果,數(shù)據(jù)需要覆蓋各個(gè)維度、各個(gè)方面。在自動(dòng)駕駛領(lǐng)域,AI技術(shù)要應(yīng)對(duì)的場(chǎng)景非常多,比如山路、平地、堵車(chē)、高速、國(guó)道、市中心、郊區(qū)、超車(chē)、變道、逆行、闖紅燈、橫穿馬路等各類(lèi)場(chǎng)景。
在技術(shù)快速迭代的過(guò)程中,為了保證安全,在自動(dòng)駕駛車(chē)輛上路測(cè)試前,需要經(jīng)過(guò)一系列的測(cè)試與驗(yàn)證。
這里就需要仿真環(huán)境了。
早在2017年,Apollo的仿真環(huán)境就已經(jīng)推出了,當(dāng)時(shí)還是在Apollo 1.0版本的云服務(wù)平臺(tái)模塊中。在國(guó)內(nèi),百度率先真正落地了大規(guī)模集群版的仿真平臺(tái)。
一年后,這一仿真環(huán)境再次升級(jí),成為了增強(qiáng)現(xiàn)實(shí)的自動(dòng)駕駛仿真系統(tǒng)(Augmented autonomous driving simulation, AADS),百度的研究人員為共同一作,論文發(fā)表在了Science Robotics上。在提升建模真實(shí)性方面,百度的仿真器邁出了堅(jiān)實(shí)一步。
在自動(dòng)駕駛領(lǐng)域的仿真環(huán)境中,可以創(chuàng)造出各類(lèi)復(fù)雜路況、危險(xiǎn)的突發(fā)狀況來(lái)讓AI模型在里面開(kāi)車(chē),獲得豐富的數(shù)據(jù)。由于是虛擬的仿真環(huán)境,因此成本比真實(shí)環(huán)境低得多,而且沒(méi)有危險(xiǎn)。
所以,AI模型可以在虛擬環(huán)境里無(wú)數(shù)次開(kāi)車(chē),測(cè)試各類(lèi)環(huán)境、挑戰(zhàn)各類(lèi)復(fù)雜情境。Apollo在虛擬環(huán)境中跑了無(wú)數(shù)遍,克服了各種艱難險(xiǎn)阻之后,就成了安全靠譜的老司機(jī)。
因此,下一個(gè)問(wèn)題來(lái)了:
仿真環(huán)境就是自動(dòng)駕駛AI的訓(xùn)練場(chǎng),既然仿真如此重要,那究竟什么樣的仿真才能承擔(dān)得起這樣重要的責(zé)任?
答案很簡(jiǎn)單:真實(shí),最大限度的接近真實(shí)。
那百度Apollo的自動(dòng)駕駛仿真環(huán)境,又如何實(shí)現(xiàn)了真實(shí)性?
Apollo仿真世界全角度的”真實(shí)性”
前文提到,Apollo通過(guò)AADS系統(tǒng),可以將真實(shí)的道路環(huán)境復(fù)刻建模到仿真環(huán)境中。
但光有道路環(huán)境是遠(yuǎn)遠(yuǎn)不夠的,路上還包括路人和車(chē)輛,以及多種對(duì)象的復(fù)雜交互行為,還需考慮無(wú)人車(chē)自身的特性,包括它的傳感器模型,動(dòng)力學(xué)模型、還有對(duì)異常情況的識(shí)別,這里面維度眾多,之間關(guān)系極度復(fù)雜。
仿真要達(dá)到怎樣標(biāo)準(zhǔn),才能完成在真實(shí)世界里“確保達(dá)到安全性”的要求。這需要仿真系統(tǒng)要盡可能多的發(fā)現(xiàn)路上所有可能出現(xiàn)的缺陷,同時(shí)不能有太多的誤報(bào)??偨Y(jié)來(lái)說(shuō)就是令仿真器能夠達(dá)到對(duì)算法效果的預(yù)測(cè)結(jié)論能夠無(wú)限接近實(shí)際路上的真實(shí)效果。
為了達(dá)到這樣的目的,我們從四個(gè)維度來(lái)一一解析這個(gè)問(wèn)題:
首先,需要考慮的是場(chǎng)景
何為“場(chǎng)景“?
自動(dòng)駕駛技術(shù)要解決的問(wèn)題是通過(guò)人工智能,讓無(wú)人車(chē)能夠處理各種復(fù)雜路況,在各種情況下都能夠安全和優(yōu)化的行駛。所謂“復(fù)雜路況”,在對(duì)其進(jìn)行原子化分割后,在自動(dòng)駕駛領(lǐng)域稱之為“場(chǎng)景”。
一個(gè)個(gè)場(chǎng)景就是一個(gè)個(gè)的考題,自動(dòng)駕駛算法需要在仿真中通過(guò)所有的“考題”測(cè)試,才能夠認(rèn)為是初步具備了上路的資格。
首先我們要生成道路上車(chē)和障礙物所在的靜態(tài)環(huán)境,這個(gè)被稱為靜態(tài)環(huán)境建模。
靜態(tài)環(huán)境的基礎(chǔ)模型是高精地圖所包含的地圖語(yǔ)義要素,是場(chǎng)景語(yǔ)義分類(lèi)的重要維度。百度仿真直接基于百度高精地圖作為底圖來(lái)構(gòu)建整個(gè)靜態(tài)環(huán)境?;诎俣仍诟呔貓D領(lǐng)域深厚的技術(shù)以及經(jīng)驗(yàn),百度仿真中的靜態(tài)環(huán)境構(gòu)建精度可以達(dá)到厘米級(jí)。
△?社會(huì)車(chē)輛危險(xiǎn)行駛
道路上的車(chē)和障礙物不是靜止不動(dòng)的,他們存在一定的交互關(guān)系,比如大部分行人都會(huì)謹(jǐn)慎的過(guò)馬路,先看看兩邊的車(chē)輛再走,只有少部分行人會(huì)在馬路上亂串行;周?chē)蟛糠周?chē)輛都會(huì)禮貌的切入,只有少部分車(chē)輛會(huì)快速切車(chē)或別車(chē)。
這就需要進(jìn)行動(dòng)態(tài)環(huán)境建模。
動(dòng)態(tài)環(huán)境建模指的是在某個(gè)場(chǎng)景中,障礙物與車(chē)交互的合理性。在仿真環(huán)境中,人物和車(chē)輛的行為分布比率都要類(lèi)似真實(shí)世界,在同一個(gè)場(chǎng)景中,橫穿馬路的人、正常行走的人、出了故障的停在路上的車(chē)、正常行走的車(chē)等,這些在真實(shí)環(huán)境中可能會(huì)同時(shí)存在的情況在仿真環(huán)境里也應(yīng)當(dāng)合理的分布。
除了基于規(guī)則定義的多樣化的障礙物行為,以及基于數(shù)據(jù)生成的模型來(lái)控制障礙物行為外,障礙物的行為還必須足夠多樣化、足夠精細(xì)和合理,才可能令仿真的結(jié)論達(dá)到跟路測(cè)結(jié)論的一致。
如何達(dá)到場(chǎng)景分布的合理性,解決這個(gè)問(wèn)題必須基于海量的真實(shí)道路數(shù)據(jù)。
海量的真實(shí)道路數(shù)據(jù)提供了覆蓋更全,刻畫(huà)更為精細(xì)的障礙物+無(wú)人車(chē)的交互模型,同時(shí)滿足了障礙物行為的真實(shí)性以及多樣性需求。
為了滿足算法需求,在Apollo的仿真場(chǎng)景集在構(gòu)成上,在保證覆蓋面全面的基礎(chǔ)上,更細(xì)致的調(diào)整了場(chǎng)景集中場(chǎng)景數(shù)據(jù)的構(gòu)成方式,使得仿真場(chǎng)景集中的場(chǎng)景出現(xiàn)頻率與實(shí)際路上的場(chǎng)景頻率保持一致。有且僅有趨同的場(chǎng)景分布,仿真結(jié)論與路測(cè)結(jié)論才能一致。
△?主車(chē)障礙車(chē)同時(shí)向中間車(chē)道并道-碰撞風(fēng)險(xiǎn)
Apollo仿真的場(chǎng)景庫(kù)的基礎(chǔ)是百萬(wàn)公里級(jí)別的真實(shí)路測(cè)數(shù)據(jù)。
一方面,百度的工程師們從大量真實(shí)道路數(shù)據(jù)中提取出更精確的“障礙車(chē)與主車(chē)的交互/博弈的行為模型”,這樣“真實(shí)在路上出現(xiàn)過(guò)的交互行為”保證了單個(gè)障礙物行為的真實(shí)性。
另一方面,基于大量的真實(shí)道路數(shù)據(jù),能夠構(gòu)造出足夠豐富的場(chǎng)景種類(lèi),保證了Apollo自動(dòng)駕駛“習(xí)題集”對(duì)路上多樣化場(chǎng)景的高覆蓋率,讓Apollo無(wú)人車(chē)在上路前,已經(jīng)完成了對(duì)于路上可能會(huì)發(fā)生的所有場(chǎng)景的充分驗(yàn)證。
Apollo仿真就是一個(gè)對(duì)于自動(dòng)駕駛算法的好的老師。Apollo仿真擁有一個(gè)廣泛且精確的場(chǎng)景庫(kù),能夠令算法在足夠真實(shí)且足夠覆蓋率的環(huán)境下捶打自己的能力,以保證路上效果。
其次,是無(wú)人車(chē)不可缺少的傳感器仿真
無(wú)人車(chē),在硬件層面與傳統(tǒng)車(chē)輛的不同之處,除了AI芯片作為大腦之外,另外兩處不同,一個(gè)是“傳感器組”,另一個(gè)是“控制單元”。前者作為無(wú)人車(chē)的眼睛,為大腦提供源源不斷的對(duì)外部環(huán)境的感知。后者作為無(wú)人車(chē)的四肢,在大腦的指揮下控制車(chē)輛的行為。
在仿真平臺(tái)中,為了提升運(yùn)行效率,Apollo仿真需要對(duì)這兩個(gè)“硬件”組件:“傳感器”和“控制單元”。對(duì)它們進(jìn)行“軟件化變換”,也就是在仿真器中用軟件算法來(lái)模擬出這兩組硬件。
這就是無(wú)人車(chē)仿真中2個(gè)專有名詞——傳感器仿真,以及車(chē)輛動(dòng)力學(xué)仿真。
傳感器仿真要讓虛擬的傳感器有真實(shí)的傳感器一樣的效果?我們不能憑主觀感覺(jué)來(lái)定義傳感器仿真的真實(shí)性,必須要找到一種客觀的量化評(píng)估方案。
Apollo的算法設(shè)定了大量的評(píng)估指標(biāo),從多角度刻畫(huà)“真實(shí)數(shù)據(jù)”特征,以及“仿真數(shù)據(jù)”特征。通過(guò)比對(duì)特征,然后通過(guò)“補(bǔ)充傳感器渲染新功能,以及場(chǎng)景建模細(xì)節(jié)”逐步縮小評(píng)估結(jié)果的差距,令傳感器仿真的模擬效果與真實(shí)傳感器采集的數(shù)據(jù)盡最大可能一致。
正是因?yàn)橛袛?shù)百萬(wàn)公里的海量路采數(shù)據(jù),才使得Apollo仿真器有能力在各種復(fù)雜條件下,都達(dá)到更高精度的傳感器仿真能力。
仿真也需要大幅度提升虛擬車(chē)的控制精度
車(chē)輛控制的精度,也就是“AI給車(chē)輛下達(dá)的命令”和“車(chē)輛實(shí)際執(zhí)行效果”的精度問(wèn)題。
比如說(shuō),當(dāng)自動(dòng)駕駛車(chē)輛在真實(shí)世界行駛時(shí),AI命令車(chē)輛“前進(jìn)40厘米”,但實(shí)際上考慮到摩擦力等現(xiàn)實(shí)因素,車(chē)輛可能只前進(jìn)了30厘米,造成了縱向10厘米的精度誤差。
相對(duì)于汽車(chē)來(lái)說(shuō),10厘米似乎是個(gè)小到可忽略的距離,但是在百度工程師看來(lái),哪怕只有小小的十幾厘米的誤差,利用仿真去優(yōu)化對(duì)加速度變化率特別敏感的“體感”相關(guān)指標(biāo),都會(huì)帶來(lái)數(shù)倍的體感異常點(diǎn)的漏判及誤判,所以要進(jìn)行車(chē)輛動(dòng)力學(xué)仿真。
為了解決這個(gè)問(wèn)題,百度工程師考慮利用海量的路采數(shù)據(jù),做了“AI給車(chē)輛下達(dá)的命令”和“車(chē)輛實(shí)際執(zhí)行效果”在大數(shù)據(jù)下的擬合,這樣就得到更真實(shí)更精細(xì)的動(dòng)力學(xué)模型。這樣一種“大數(shù)據(jù)驅(qū)動(dòng)的動(dòng)力學(xué)模型調(diào)優(yōu)”的方案,也有利于滿足未來(lái)快速適配多種車(chē)型的需求。
最后,我們必須提一下:仿真執(zhí)行器
前面的幾項(xiàng)技術(shù)方向?qū)儆诖蠹疫€比較熟悉的仿真功能,這一項(xiàng)雖然隱藏在最底層,但是影響卻廣泛的。它指的是仿真邏輯在服務(wù)器端執(zhí)行過(guò)程中,需要進(jìn)行的一些特殊設(shè)計(jì)。
現(xiàn)實(shí)世界中有一個(gè)熟知而又經(jīng)常被忽視的物理約束:統(tǒng)一的時(shí)空。
所謂“統(tǒng)一時(shí)空”指的是:世間萬(wàn)物都在統(tǒng)一的時(shí)間和空間中進(jìn)行相互作用。所有人、車(chē)……的1秒,都是一樣長(zhǎng)的時(shí)間,所有人、車(chē)……的1米,也都是一樣長(zhǎng)的距離。
仿真中,統(tǒng)一距離的約束是靠著統(tǒng)一坐標(biāo)系,而統(tǒng)一時(shí)鐘的約束就要使用不同于車(chē)端的做法。
這是因?yàn)榉抡嫫鬟\(yùn)行的本質(zhì)是在海量的CPU/GPU的計(jì)算資源上運(yùn)行仿真邏輯,最終“計(jì)算出”整個(gè)世界,而服務(wù)器在執(zhí)行任何邏輯時(shí)會(huì)以“多對(duì)象并行執(zhí)行,但單體運(yùn)行以一種隨機(jī)的速率”的方式來(lái)進(jìn)行,因此客觀世界中“多物體間的統(tǒng)一時(shí)鐘”的物理規(guī)律無(wú)法滿足。
仿真執(zhí)行器就是用來(lái)完成“強(qiáng)制約束所有的對(duì)象能以某個(gè)統(tǒng)一的節(jié)奏來(lái)運(yùn)轉(zhuǎn)”這樣的需求的。
也就是說(shuō),因?yàn)橛辛朔抡鎴?zhí)行器,不同的仿真對(duì)象在執(zhí)行時(shí)可以進(jìn)行某種時(shí)間上的節(jié)奏同步,進(jìn)而“模擬出”客觀世界上中“統(tǒng)一時(shí)間”的概念。
當(dāng)然,時(shí)鐘同步還只是“仿真執(zhí)行器”的一種易于理解的表達(dá)。更抽象的表述是,“仿真執(zhí)行器”完成的是“自動(dòng)駕駛的數(shù)據(jù)流在真實(shí)物理時(shí)間框架下的受控流轉(zhuǎn)”。
真實(shí)情況中,在自動(dòng)駕駛時(shí)車(chē)端多個(gè)模塊之間數(shù)據(jù)流的發(fā)送和到達(dá)節(jié)奏會(huì)有大量微小的跳變,而這些數(shù)據(jù)節(jié)奏的跳變會(huì)帶來(lái)車(chē)端算法結(jié)果的差異化。而精細(xì)化的仿真需要能夠呈現(xiàn)/生成這樣的微小的差異化結(jié)果。
什么樣的數(shù)據(jù)節(jié)奏?它又帶來(lái)了怎樣的差異化?如何讓仿真的結(jié)果能夠與這樣的差異化效果做出精確的擬合?又怎么證明我們的仿真已經(jīng)實(shí)現(xiàn)了足夠精確的擬合效果?這些又要從海量的數(shù)據(jù)中尋找答案了。
Apollo仿真一方面實(shí)現(xiàn)了一個(gè)令數(shù)據(jù)流受控的“仿真流控框架”后,也就能夠做到消息延遲可自由定制,并且從真實(shí)數(shù)據(jù)中抽取出了延遲模型,用以注入到數(shù)據(jù)流中,令其整體上仿真運(yùn)行時(shí)能夠得到較為真實(shí)的“數(shù)據(jù)節(jié)奏波動(dòng)性”的效果。
同時(shí)更重要的一點(diǎn),是建立了一個(gè)“仿真復(fù)現(xiàn)率”的自動(dòng)化的監(jiān)控體系,持續(xù)的對(duì)比“真實(shí)路測(cè)中無(wú)人車(chē)的車(chē)姿數(shù)據(jù)”以及同場(chǎng)景下的“仿真中虛擬車(chē)的車(chē)姿數(shù)據(jù)”,在海量路測(cè)數(shù)據(jù)的驗(yàn)證下,能夠證明百度仿真器自身具有足夠高精確,足夠高的泛化能力的“對(duì)真實(shí)情況的仿真能力”。
前文中,我們反復(fù)強(qiáng)調(diào)了數(shù)據(jù)對(duì)于仿真的重要性,仿真和路測(cè)并不是存在于不同驗(yàn)證階段相互獨(dú)立關(guān)系,更不是用仿真代替路測(cè)的替代關(guān)系。
Apollo百萬(wàn)公里級(jí)別的真實(shí)路測(cè)數(shù)據(jù)正是仿真優(yōu)化的基礎(chǔ),仿真優(yōu)化為算法迭代提供了更大的支持,更優(yōu)的算法又進(jìn)一步帶來(lái)了更大規(guī)模的路測(cè)里程,而更大規(guī)模的路測(cè)里程又進(jìn)一步提升了仿真效果——仿真和路測(cè),在迭代閉環(huán)的兩端,兩者關(guān)系實(shí)際上一種相互依存相互促進(jìn),良性正循環(huán)的模式。
未來(lái),全無(wú)人駕駛會(huì)徹底改變?nèi)藗兊纳?。而現(xiàn)在,無(wú)人駕駛還只是一個(gè)在蹣跚學(xué)步的孩子。無(wú)人駕駛的仿真,其定位非常明確——它是這個(gè)孩子的老師,它需要承擔(dān)起“支持無(wú)人駕駛技術(shù)快速成長(zhǎng)”的重任。
長(zhǎng)沙本地的“典型習(xí)題集”
最后,我們從仿真的世界回到現(xiàn)實(shí),百度Apollo無(wú)人駕駛出租在長(zhǎng)沙全面開(kāi)放。
針對(duì)長(zhǎng)沙的地域特殊性,或者實(shí)際運(yùn)營(yíng)中出現(xiàn)的突發(fā)情況,比如前面有人過(guò)馬路怎么辦、有老人拄著拐杖走的特別慢怎么辦、碰到強(qiáng)行超車(chē)的司機(jī)怎么辦、惡劣天氣看不清路況怎么辦、大量送外賣(mài)的摩托車(chē)行駛在附近怎么辦……
在仿真系統(tǒng)里提供專門(mén)的“典型習(xí)題集”,供AI反復(fù)訓(xùn)練測(cè)試,找出應(yīng)對(duì)這類(lèi)問(wèn)題的最佳途徑,不斷迭代優(yōu)化模型,讓AI模型對(duì)此輕車(chē)熟路,提升自己的開(kāi)車(chē)技巧,能夠在真實(shí)場(chǎng)景中應(yīng)對(duì)這類(lèi)問(wèn)題。
而且,這些場(chǎng)景出現(xiàn)的概率需要和長(zhǎng)沙本地的情況一致,這樣才能得到在長(zhǎng)沙運(yùn)行的真實(shí)效果。
比如說(shuō),在模擬長(zhǎng)沙的仿真環(huán)境中,就有以下這些場(chǎng)景:
我在路上好好的跑,右邊卻突然殺過(guò)來(lái)一個(gè)騎摩托車(chē)逆行的配送員:
雨下的很大,攝像頭上都是雨滴,看不太清楚,路又特別堵,我好糾結(jié)要不要并道:
瓢潑大雨讓我的視線模糊,但前面有一輛臨時(shí)停車(chē)的車(chē)子,我鼓起勇氣試了試,成功繞了過(guò)去:
像這樣的場(chǎng)景,Apollo仿真平臺(tái)從真實(shí)數(shù)據(jù)中提取出數(shù)千萬(wàn)個(gè),可以說(shuō)能在行車(chē)途中遇到的各種奇怪的人和車(chē)、詭異的天氣、擁堵不堪的交通狀況都囊括在內(nèi)了。
有了這上千萬(wàn)道題目的“習(xí)題集”,AI就可以反復(fù)在這些場(chǎng)景訓(xùn)練自己。
畢竟在真實(shí)的大馬路上,不可能找?guī)资v車(chē)來(lái)當(dāng)“群演”,天天陪著自動(dòng)駕駛車(chē)輛訓(xùn)練,而且萬(wàn)一撞壞了還要賠;而在虛擬的仿真環(huán)境里,AI可以無(wú)數(shù)次用這些“錯(cuò)題”來(lái)訓(xùn)練自己,不用擔(dān)心撞壞,也不用擔(dān)心“群演”下班,可以潛心修煉,找到最佳的應(yīng)對(duì)方法。
因此,用這種“錯(cuò)題集”的方式來(lái)測(cè)試AI,就好像每天都在做江蘇高考數(shù)學(xué)題,久而久之水平就比做全國(guó)卷的同學(xué)高出一大截,訓(xùn)練質(zhì)量也就高很多了。
所以,也是經(jīng)過(guò)了這樣虛擬和現(xiàn)實(shí)的無(wú)數(shù)次打磨,Apollo的工程師們也才敢讓全民任意坐。
說(shuō)個(gè)小秘密,在這些無(wú)人駕駛工程師眼里,AI系統(tǒng)可比人類(lèi)可靠、穩(wěn)定又安全多了。
你覺(jué)得呢?
傳送門(mén)
文中相關(guān)內(nèi)容的論文,有需要的讀者可以自?。?/p>
AADS: Augmented autonomous driving simulation using data-driven algorithmshttps://robotics.sciencemag.org/content/4/28/eaaw0863
An Automated Learning-Based Procedure for Large-scale Vehicle Dynamics Modeling on Baidu Apollo Platformhttps://ieeexplore.ieee.org/document/8968102