8月底,伴隨著FSD beta 10.69版本的發(fā)布,特斯拉自動(dòng)駕駛Autopilot研發(fā)總監(jiān)Ashok Elluswamy(艾什克·艾盧艾米,以下文章用第一人稱表述)公布了一段視頻,其中特別演示了一段智能電動(dòng)車如何實(shí)時(shí)檢測(cè)車輛周圍的障礙物,并如何進(jìn)行自動(dòng)避讓的影像。實(shí)際上,自動(dòng)駕駛和避障、剎停,在國(guó)內(nèi)一直是車迷們熱議的話題,也是大家從油換電繞不開的關(guān)注點(diǎn)。
人們也許不知道,過去幾年生產(chǎn)的每一輛特斯拉,都帶有Autopilot基本功能。Autopilot基本功能允許車輛保持車道,跟隨前車,彎道減速,等等。除了Autopilot基本功能,電動(dòng)車還配備了標(biāo)準(zhǔn)安全功能,這些功能,如緊急制動(dòng)、緊急轉(zhuǎn)向,可以避免許多類型的碰撞。
目前大約有10萬輛特斯拉擁有完全自動(dòng)駕駛FSD beta軟件,這是目前最先進(jìn)的自動(dòng)駕駛軟件,它能夠處理從停車場(chǎng)到城市街道,再到高速公路的所有駕駛過程。這個(gè)軟件可以控制汽車在交通燈和停車標(biāo)志前停車,合理避讓橫穿的車輛,并執(zhí)行有交通燈保護(hù)和無保護(hù)的左轉(zhuǎn)和右轉(zhuǎn),繞過停放的汽車和其他障礙物。
比如這些在舊金山密集的街區(qū)里開車的視頻。你在視頻里看到的所有內(nèi)容,如道路邊界、車道線、車輛,包括它們的位置、方向和速度,都是在我們車載計(jì)算機(jī)上,接收8個(gè)120萬像素的攝像頭數(shù)據(jù),運(yùn)行算法和神經(jīng)網(wǎng)絡(luò)生成的。

電動(dòng)車在數(shù)據(jù)生成過程中,沒有使用雷達(dá)、激光雷達(dá)、超聲波或其他傳感器。事實(shí)上,甚至沒有使用高清地圖。所有這些數(shù)據(jù),都是基于實(shí)時(shí)攝像機(jī)視頻流產(chǎn)生的輸出,而汽車的規(guī)劃技術(shù)棧只需要這些原始的實(shí)時(shí)輸入,就可以在如此復(fù)雜的場(chǎng)景中進(jìn)行導(dǎo)航
當(dāng)開始搭建高級(jí)的技術(shù)棧時(shí),我們想用某種方法來表示一般障礙物,一開始使用的是圖像空間的分割方法,這幾乎是個(gè)標(biāo)準(zhǔn)方法。這里,圖像空間的每個(gè)像素,都被標(biāo)記為可駕駛或不可駕駛。然后,我們希望規(guī)劃技術(shù)棧可以使用這個(gè)信息來導(dǎo)航場(chǎng)景。
但這種方法有幾個(gè)問題。首先,這些關(guān)于某個(gè)像素是否可駕駛的預(yù)測(cè)是在圖像空間中完成的,基于圖像的UV值,或者說,某個(gè)像素是可駕駛的像素,還是不可駕駛。但為了讓汽車能夠在三維世界中導(dǎo)航,它需要在三維空間中進(jìn)行預(yù)測(cè),這樣才能建立互動(dòng)的物理模型,并處理駕駛?cè)蝿?wù)。
但在從圖像空間轉(zhuǎn)變到三維空間的過程中,如果采用這樣的方式,像素分割會(huì)在系統(tǒng)中產(chǎn)生不必要的瑕疵或不必要的雜訊。
對(duì)一般障礙物進(jìn)行建模的另一個(gè)方法,是使用密集的深度信息。在這個(gè)任務(wù)中,你可以以像素為基礎(chǔ),讓網(wǎng)絡(luò)預(yù)測(cè)深度,這樣每個(gè)像素都會(huì)產(chǎn)生某個(gè)深度值。
但是,盡管這些深度圖在顏色空間中進(jìn)行可視化時(shí),看起來非常漂亮,但把射線反向投影計(jì)算得到三維點(diǎn),并可視化這些三維點(diǎn)云時(shí),你就會(huì)發(fā)現(xiàn)隨著距離的增加,它們就變得不一致,而且數(shù)據(jù)很難被后續(xù)流程所使用。例如,局部的深度變得不一致,因此,墻就不直了,可能是彎彎扭扭的。
這些深度圖是基于每個(gè)攝像機(jī)的圖像平面生成的,很難生成一個(gè)汽車周圍統(tǒng)一的三維空間。
對(duì)于這個(gè)問題,我們的解決方案就是內(nèi)部所稱的占用網(wǎng)絡(luò)(Occupancy Network)。

另外,這種表示方式也不能提供場(chǎng)景完整的三維結(jié)構(gòu),因此很難推理出所有懸空的障礙物,或者墻壁,或者其他可以遮擋場(chǎng)景的物體
占用網(wǎng)絡(luò),是一種基于學(xué)習(xí)的三維重建的方法,在應(yīng)用層面,汽車接收所有8個(gè)攝像機(jī)流作為輸入,并生成一個(gè)車周圍空間體積化的占用值。汽車周圍的每一個(gè)位置,網(wǎng)絡(luò)都會(huì)生成是否被占用的結(jié)果。事實(shí)上,它生成了一個(gè)三維位置被占用或不被占用的概率值。
如我所說,它接收所有8個(gè)攝像頭作為輸入,并生成了一個(gè)單一的體積化的輸出。這個(gè)輸出的產(chǎn)生,并不是通過拼接各個(gè)獨(dú)立的預(yù)測(cè)結(jié)果完成的,而是網(wǎng)絡(luò)完成所有的內(nèi)部傳感器融合,并產(chǎn)生一個(gè)單一的一致的輸出空間。
這些網(wǎng)絡(luò)能生成靜態(tài)物體的占用值,比如墻壁和樹木之類的東西,也能生成移動(dòng)物體的動(dòng)態(tài)占用值,比如車輛(大多數(shù)情況下),但有時(shí),也包括其他移動(dòng)的障礙物,如道路上的碎片.由于輸出空間直接是在三維空間中,我們可以通過遮擋來進(jìn)行預(yù)測(cè),你可以預(yù)測(cè)一條曲線的存在,盡管它可能暫時(shí)被汽車遮擋。
這個(gè)方法在內(nèi)存和計(jì)算方面都非常高效,盡管表面上看可能并非如此,因?yàn)樗闪嗣芗娜S的占用值,看起來可能體積過于龐大。但最終,在內(nèi)存和計(jì)算效率上,這是一種更優(yōu)的方法,因?yàn)樗逊直媛史峙湓谀切╆P(guān)鍵的地方。
密集的深度圖或圖像中的可駕駛空間,遠(yuǎn)處的分辨率非常低,而近處的分辨率非常非常高。但在占用網(wǎng)絡(luò)中,在與駕駛有關(guān)的所有體積中,分辨率幾乎都一致,這讓它變得極其高效。例如在我們的計(jì)算平臺(tái)上運(yùn)行的時(shí)間小于10毫秒,這使得網(wǎng)絡(luò)可以以100赫茲的速度運(yùn)行,比攝像機(jī)產(chǎn)生圖像的速度快得多。

這些攝像頭以每秒36幀的速度產(chǎn)生圖像流,協(xié)同全面覆蓋汽車周圍360度的空間。每輛車都內(nèi)置了144 TOPS(每秒萬億次操作)算力的計(jì)算平臺(tái),用于運(yùn)行這些神經(jīng)網(wǎng)絡(luò)
當(dāng)我們開始這個(gè)項(xiàng)目的時(shí)候,最初的目標(biāo)是只處理靜態(tài)物體,如墻或樹。因?yàn)槲覀冇泻芏嗖煌纳窠?jīng)網(wǎng)絡(luò)在車內(nèi)運(yùn)行,處理不同類型的障礙物,我們并沒有繼續(xù)搭建一個(gè)主要處理移動(dòng)物體的網(wǎng)絡(luò),如車輛、行人、自行車手等。
而這時(shí)網(wǎng)絡(luò)也生成了車輛的完整運(yùn)動(dòng)學(xué)數(shù)據(jù),如速度、加速度、動(dòng)力等。
當(dāng)時(shí)我們想,好的,這里不需要處理移動(dòng)物體,只需要處理靜態(tài)物體,如樹、墻等。但事實(shí)證明,這是有問題的,比如有一輛皮卡車看起來像一個(gè)柵欄。
當(dāng)一輛車在高速公路上移動(dòng)時(shí),我們顯然知道,它是一個(gè)移動(dòng)物體,它被計(jì)算機(jī)正確判斷為一輛卡車。但當(dāng)車輛在紅綠燈下停了好幾分鐘后,好吧,它看起來像個(gè)柵欄。但顯然,任何人都不想開車撞上這輛車,我們想要繞過它,或者適當(dāng)?shù)胤怕俣取?/p>
這顯然是一場(chǎng)不可能打贏的仗,我們也不想打這場(chǎng)仗,我們只想避開這些障礙物,既不撞到移動(dòng)的,也不撞到靜止的障礙物,不撞到任何東西。我們解決這個(gè)問題的方法,是在同一個(gè)框架中同時(shí)生成移動(dòng)和靜止的障礙物,這樣一來,就不會(huì)有什么東西在移動(dòng)和靜止之間的縫隙中逃脫。
為了說明這一點(diǎn),舉一個(gè)假想的例子,如果一輛汽車擁有無限的動(dòng)力,它在高速公路上全速行駛,時(shí)速比如65英里。然后就在撞車前,在距離撞車前幾厘米,它進(jìn)行了猛烈的剎車,使用了幾乎無限的制動(dòng)力。顯然,它會(huì)在撞上障礙物的那一瞬間之前停下來。
這樣做,雖然說達(dá)成了安全的目標(biāo),但首先,這不現(xiàn)實(shí),因?yàn)闆]有一輛汽車有無限的制動(dòng)力。即使它有無限的制動(dòng)力,我們也不想不必要地加以使用。例如,對(duì)于我們的特斯拉來說,它有每平方秒10到11米的制動(dòng)力,但我們也不希望在不必要的情況下使用這所有的制動(dòng)力。
其次,汽車可以開得很慢,比如汽車以1~2英里的時(shí)速低速“蠕動(dòng)”。它可以在任何時(shí)候剎車,可以非常容易地避免碰撞,但開這么慢就太煩人了。這就是為什么我說,要以安全、舒適和速度合理的方式進(jìn)行駕駛,駕駛員還需要一點(diǎn)點(diǎn)智慧。

對(duì)于行人,這可能會(huì)變得更加棘手。路邊的行人,可能被判斷為雕像,有些人還蹲著,因?yàn)樽藙?shì),汽車把他辨識(shí)成一堆垃圾