tft每日頭條

 > 生活

 > 解讀特斯拉Autopilot的技術路線

解讀特斯拉Autopilot的技術路線

生活 更新时间:2025-02-07 12:25:42

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)1


特斯拉是一家很開放的車企。

所謂開放,指的是馬斯克年初那一句「特斯拉願意開放并共享自己的所有專利」,還有在 GitHub 上公開了自家車機操作系統的底層代碼,以及在全球最大的軟件 BUG 讨論社區 Bugcrowd 裡面發下英雄帖,廣邀全球黑客黑自家系統。

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)2


近日,特斯拉再一次将自家 Autopilot 的秘密向世界公開。特斯拉AI部門高級主管 Andrej Karpathy 近日出席了一個有關深度學習的會議——PyTorch Developer Conference 2019,并且進行了一段時長 11 分鐘的演講,主題就是 Autopilot 如何在計算機視覺深度學習中應用 PyTorch

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)3


衆所周知,特斯拉堅決不支持汽車界普遍力撐的激光雷達方案,而是堅持走純視覺識别路線,Andrej Karpathy 這次演講,等于用一種硬核的方式,再一次向世界宣戰。

我們将這次演講的精華部分摘錄下來,并以盡量簡練的語言解釋,于是就有了今天的文章。

  • 什麼是 PyTorch?

要讨論 Andrej Karpathy 在這個視頻裡面說了什麼,我們先來搞清楚一個概念——PyTorch。

PyTorch 的「祖先」叫做 Torch(意思為火炬),Torch 是一個基于 BSD License 的開源機器學習框架,最早的 Torch 版本于 2002 年發布,主要應用于圖像和視頻類的深度學習,目前谷歌、Facebook、Twitter 都應用了 Torch 的分支版本。

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)4


電動星球注:BSD License 最早在1988 年由加州大學伯克利分校起草,是目前給予使用者最高自由的開源協議,使用者基本上可以「為所欲為」地修改源代碼,并且将代碼打包成專有軟件。

至于 PyTorch,則是 Torch 使用 Python 語言編寫的版本。

Torch 的底層是由 C 語言和 Lua 語言編寫的,C 語言作為底層,而 Lua 語言作為深度學習庫,兩種語言都非常優秀,實際上目前仍然有很多大型企業采用 Torch 進行深度學習,比如上文提到的幾家。

2017 年 1 月, PyTorch 正式在 GitHub 上發布,号稱擁有更高的編譯和運行效率,而實際上它也做到了——靠的就是 Python 語言。

一句話總結一下 1989 年出生的 Python:常被戲稱為「膠水語言」,因為 Python 能夠基于其他語言的各種模塊結合到一起。根據權威數據挖掘網站 KDnuggets 的調查,Python 已經成為最受 AI 從業者歡迎的語言。

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)5


基于 Python 語言的 PyTorch 框架,也同樣獲得了衆多企業和研究者的青睐。單說自動駕駛方面,除了特斯拉,Uber 也和斯坦福大學基于 PyTorch 研發出開源概率編程語言 Pyro。除此以外,Facebook、英偉達、美國艾倫人工智能研究所也都走在了 PyTorch 應用的前頭。

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)6


  • 特斯拉如何利用 PyTorch?

Andrej Karpathy 在演講的開場這樣說:「由于我們沒有采用激光雷達,也沒有采用高精度地圖,所以 Autopilot 的一切功能,都依賴于來自車身四周 8 個攝像頭提供原始圖像之後,再進行的計算機視覺運算。」

他随後給出了一張流程圖,裡面是 Autopilot 工作的所有流程,有趣的是,Andrej Karpathy将這一套流程稱為「Operation Vacation(操作假期)」,他說「因為現階段我的團隊已經可以在椅子上葛優癱,然後數據就會從特斯拉的車子上傳過來,在神經網絡模型上自己不斷循環運行」:

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)7


特斯拉AI部門令人豔羨的「假期」裡面,「PyTorch Distributed Training」占了單獨的一個部分——但憑什麼呢?

先上結論:特斯拉利用 PyTorch 框架效率更高的特點,不斷将 Autopilot 軟件的并行學習性能進一步提升。

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)8


以上圖為例,在以上的典型場景内,Autopilot 需要同時處理 10 個不同類别的任務——而道路場景是極其複雜的,也就是說,Autopilot 時刻面臨着數十個任務并行處理的挑戰。Andrej Karpathy 的原話是「almost 100 tasks(幾乎同時處理 100 個任務)」。

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)9


為了有效處理将近 100 個并行任務,特斯拉采用了「類 ResNet-50」的骨幹網絡。那什麼是 ResNet-50?

随着深度學習研究的不斷發展,深度學習神經網絡也在不斷加深,而随着網絡深度的上升,訓練準确度也會随之下降,ResNet 就是因此而生,它的中文名叫做深度殘差網絡。ResNet 有多個不同版本,包括 ResNet30/50/101 等,主要區分度在于 Layer 卷積層和 Block 區塊數量上,這裡就不展開了(畢竟是個汽車公衆号…)。

然而,即使采用了更高效的網絡,Andrej Karpathy 依然表示「我們無法讓每一個任務都享有單獨的神經網絡運算,因為同時處理的任務數實在太多,我們隻能把一些運算分攤到共享骨幹網絡上」。

Andrej Karpathy将分攤到共享骨幹網絡上的任務稱作「Hydra Nets(Hydra 意為九頭蛇)」,中二之餘又不失準确。比如說下圖高速公路上行駛時的物體識别:

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)10


還有 Smart Summon 模式下道路邊緣的識别與确定:


解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)11


Andrej Karpathy 将這種類型的計算稱為「在圖像中進行預測,以空間和時間為維度将這些圖像有選擇性地部分删除,同時通過圖像拼接和變換,以此讓車輛明白現在所處的位置」:

另一個依賴 PyTorch 提升運行效率的,叫做 Recurrent Tasks。

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)12


Recurrent Tasks 是來自于 RNN 的運算任務,中文名有兩個,有的翻譯成循環神經網絡,更主流的譯法是遞歸神經網絡,因為 RNN 有兩個算法變體——一種是時間遞歸神經網絡(recurrent neural network),另一種是結構遞歸神經網絡(recursive neural network),兩者的縮寫都是 RNN。

RNN 聽起來雖然很陽春白雪,但它已經在實際應用中為我們默默服務了很久——機器翻譯、語音識别、生物研究中的 DNA 序列分析,都應用了 RNN 運算。而在自動駕駛中,RNN 通常被應用在前方道路預測中。

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)13


Andrej Karpathy 舉了以上的場景做例子,解釋 Recurrent Tasks 提升效率之後,對 Road Layout Prediction(道路層預測)的重要性:

「我們給每台攝像頭都配備了相應的 Hydra Nets,但很多時候你需要同時采集多個攝像頭的數據,然後再進行運算。比如說在過一個三岔路口的時候,我們有三個攝像頭同時為這個場景的深度學習運算輸入圖像數據。此時的神經網絡預測就不再隻是單純的圖像識别,而是基于總-分結構的複合運算。」

談到這個場景的時候,Andrej Karpathy 順便以此為例子,對Hydra Nets給出了進一步的解釋:

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)14


「我們為所有的計算任務準備了 8 個 HydraNets,當然所有 Hydra Nets 的運算任務都可以進一步進入 RNN 做遞歸運算。然後我們可以按照這樣的總-分結構做輸出。也就是說,Autopilot 軟件裡面有一個大型的單一計算網絡,然後每一個任務都可以分采樣這個計算網絡(接收到的圖像)的一小部分,然後訓練那一小部分的神經網絡。

「比如說,我們可以單獨訓練攝像頭的障礙物探測功能,或者是色彩深度網絡,又或者是道路布局網絡。所有單一任務都分采樣了圖像數據的一小部分,然後單獨訓練那一部分(的神經網絡)」。

接下來,Andrej Karpathy 用了一張圖展示了 Autopilot 軟件需要處理的圖像數據量:

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)15


乍眼一看,這張圖裡面隻有兩個數字是可以望文生義的:代表原因的8個攝像頭和代表結果的 4096 幅圖像。而其中的過程則相當複雜。

Time steps 和 Batch size 需要一起講,沒有寫中文是因為現在的深度學習界依然沒有給它們一個比較信達雅的官方翻譯。其中 Batch size 代表了在深度學習網絡中單一批次的數據數量,比如我們往一個 RNN 裡面輸入 100 條數據,分成 10 個 Batch,那 Batch size 就是 10。

至于 Time steps 則是預測最終值需要的最大「步數」,比如說 Autopilot 軟件的 Time steps 是 16,也就是說每次會生成 x0-x15,一共 16 組數據,最終預測結果——每次,指的就是圖中每一個「Forward pass」。

目前深度學習最熱門的硬件是 GPU,Andrej Karpathy 則用了一張圖來描述 Autopilot 神經網絡對于 GPU 運算的要求有多高:

解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)16


在圖中顯示的 70000 GPU Hours,表示Autopilot深度計算網絡如果用單一GPU運算需要用到 7 萬小時——Andrej Karpathy 的原話是「如果你用一組 8 個 GPU 去訓練 Autopilot 的深度運算網絡,你得花一年」——當然他沒說用作對比的是什麼 GPU。

最後,Andrej Karpathy 例牌吹了一波自家的 FSD 芯片,特斯拉的 11 分鐘炫技至此全部結束——但這一次的 PPT 和 4 月份發布時有所不同,硬件 3.0 的工作功耗不再用250W/英裡這樣的單位定義,而是換算過來更低的「Sub 100W(低于 100W)」——至于是不是特斯拉式神優化,我們隻能等 FSD 芯片大規模裝機之後才能知道了。


解讀特斯拉Autopilot的技術路線(解讀特斯拉Autopilot的技術路線)17


  • 結語

今天 Andrej Karpathy 的演講,雖然不太準确,但我們可以嘗試用一句話概括——特斯拉很希望把你的車變成一個人。

今年 4 月份 FSD 芯片發布的時候,Andrej Karpathy 說過一句話,宣布了特斯拉與激光雷達徹底絕緣:「你會開車是因為你的眼睛看到了路況,而不是你的眼睛發射出激光」。今天,Andrej Karpathy 也說了「我們不用高精度地圖」。

于是,一輛逐步走向自動駕駛的特斯拉,在行為模式上會變得越來越像人——用眼睛收集圖像數據,然後用大腦判斷自身所處環境,指揮四肢做出行動。

特斯拉的邏輯似乎更接近人類本能,但卻是汽車界實打實的少數派。傳統汽車界,包括造車新勢力,都對激光雷達和高精度地圖抱有更高的信心。

蟹老闆上周體驗小鵬 P7(詳見《武裝到牙齒的小鵬 P7,能打赢特斯拉Model 3?》)的時候說過這麼一段話:

「超視距 實時在線,這是我們認為小鵬 P7 在自動駕駛方案上與特斯拉最大的不同。某種程度上,你可以将特斯拉看成桌面端或者單機的,将小鵬 P7 看成是移動端或者聯網的。」

特斯拉已經在純視覺方案這條路上越走越遠,但馬斯克真的是對的嗎?(毓肥 電動星球News)

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved