1. 首頁
  2. 資訊
  3. 企業(yè)
  4. 特斯拉 Autopilot 如何單挑全世界?

特斯拉 Autopilot 如何單挑全世界?

公路新勢力

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

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

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

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

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

什么是 PyTorch?

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

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

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

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

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

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

一句話總結(jié)一下 1989 年出生的 Python:常被戲稱為「膠水語言」,因為 Python 能夠基于其他語言的各種模塊結(jié)合到一起。根據(jù)權(quán)威數(shù)據(jù)挖掘網(wǎng)站 KDnuggets 的調(diào)查,Python 已經(jīng)成為最受 AI 從業(yè)者歡迎的語言。

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

特斯拉如何利用 PyTorch?

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

他隨后給出了一張流程圖,里面是 Autopilot 工作的所有流程,有趣的是,Andrej Karpathy 將這一套流程稱為「Operation Vacation(操作假期)」,他說「因為現(xiàn)階段我的團隊已經(jīng)可以在椅子上葛優(yōu)癱,然后數(shù)據(jù)就會從特斯拉的車子上傳過來,在神經(jīng)網(wǎng)絡(luò)模型上自己不斷循環(huán)運行」:

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

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

以上圖為例,在以上的典型場景內(nèi),Autopilot 需要同時處理 10 個不同類別的任務——而道路場景是極其復雜的,也就是說,Autopilot 時刻面臨著數(shù)十個任務并行處理的挑戰(zhàn)。Andrej Karpathy 的原話是「almost 100 tasks(幾乎同時處理 100 個任務)」。

為了有效處理將近 100 個并行任務,特斯拉采用了「類 ResNet-50」的骨干網(wǎng)絡(luò)。那什么是 ResNet-50?

隨著深度學習研究的不斷發(fā)展,深度學習神經(jīng)網(wǎng)絡(luò)也在不斷加深,而隨著網(wǎng)絡(luò)深度的上升,訓練準確度也會隨之下降,ResNet 就是因此而生,它的中文名叫做深度殘差網(wǎng)絡(luò)。ResNet 有多個不同版本,包括 ResNet30/50/101 等,主要區(qū)分度在于 Layer 卷積層和 Block 區(qū)塊數(shù)量上,這里就不展開了(畢竟是個汽車公眾號 …)。

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

Andrej Karpathy 將分攤到共享骨干網(wǎng)絡(luò)上的任務稱作「Hydra Nets(Hydra 意為九頭蛇)」,中二之余又不失準確。比如說下圖高速公路上行駛時的物體識別:

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

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

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

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

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

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

「我們給每臺攝像頭都配備了相應的 Hydra Nets,但很多時候你需要同時采集多個攝像頭的數(shù)據(jù),然后再進行運算。比如說在過一個三岔路口的時候,我們有三個攝像頭同時為這個場景的深度學習運算輸入圖像數(shù)據(jù)。此時的神經(jīng)網(wǎng)絡(luò)預測就不再只是單純的圖像識別,而是基于總 - 分結(jié)構(gòu)的復合運算?!?/p>

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

「我們?yōu)樗械挠嬎闳蝿諟蕚淞?8 個 HydraNets,當然所有 Hydra Nets 的運算任務都可以進一步進入 RNN 做遞歸運算。然后我們可以按照這樣的總 - 分結(jié)構(gòu)做輸出。也就是說,Autopilot 軟件里面有一個大型的單一計算網(wǎng)絡(luò),然后每一個任務都可以分采樣這個計算網(wǎng)絡(luò)(接收到的圖像)的一小部分,然后訓練那一小部分的神經(jīng)網(wǎng)絡(luò)。」

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

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

乍眼一看,這張圖里面只有兩個數(shù)字是可以望文生義的:代表原因的 8 個攝像頭和代表結(jié)果的 4096 幅圖像。而其中的過程則相當復雜。

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

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

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

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

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

結(jié)語

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

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

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

特斯拉的邏輯似乎更接近人類本能,但卻是汽車界實打?qū)嵉纳贁?shù)派。傳統(tǒng)汽車界,包括造車新勢力,都對激光雷達和高精度地圖抱有更高的信心。

來源:公路新勢力

本文地址:http://autopag.com/news/qiye/103278

返回第一電動網(wǎng)首頁 >

收藏
65
  • 分享到:
發(fā)表評論
新聞推薦
熱文榜
日排行
周排行
第一電動網(wǎng)官方微信

反饋和建議 在線回復

您的詢價信息
已經(jīng)成功提交我們稍后會聯(lián)系您進行報價!

第一電動網(wǎng)
Hello world!
-->