91精品国产综合久久四虎久久_国产成人午夜高潮毛片_99er视频精品免费观看_2020亚洲熟女在线观看_日本女优人体写真_国内黄色毛片_年轻的老师中文版在线_丰满女邻居做爰_久久久久久精品成人免费图片

創(chuàng)造自主駕駛系統(tǒng)
理解與自主駕駛相關(guān)的各種技術(shù)以及如何把它們集成在一起
編者注:想更深入地學(xué)習(xí)本文和其他深度學(xué)習(xí)技術(shù),可以查看《The Deep Learning Video Collection: 2016》來(lái)了解世界級(jí)專(zhuān)家介紹他們是如何實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)、解決常見(jiàn)的挑戰(zhàn)以及處理大規(guī)模場(chǎng)景下的分布式訓(xùn)練等內(nèi)容。

更多內(nèi)容可以參考Strata北京2017的相關(guān)議題。

我們正處在下一代自主駕駛時(shí)代的開(kāi)端。自主駕駛的現(xiàn)狀是什么?會(huì)怎么發(fā)展?在預(yù)測(cè)它的未來(lái)前,先讓我們先回顧一下歷史。

信息科技發(fā)端與上世紀(jì)60年代。由仙童半導(dǎo)體和因特爾開(kāi)創(chuàng)出的硅基微處理器打下了這個(gè)行業(yè)的基石(也創(chuàng)立了硅谷)。微處理器技術(shù)極大地提升了工業(yè)界的生產(chǎn)力,但普通大眾依然很難使用到它,并獲得益處。到上世紀(jì)80年代,隨著使用圖形用戶(hù)界面的施樂(lè)的Alto計(jì)算機(jī)、蘋(píng)果的Lisa計(jì)算機(jī)以及后來(lái)的微軟的視窗系統(tǒng)的出現(xiàn),第二層基礎(chǔ)被鋪設(shè)好?!皞€(gè)人”電腦的設(shè)想變成可能。

到2000年,幾乎每個(gè)人都能使用計(jì)算機(jī)的時(shí)候,Google鋪下了第三層基礎(chǔ)——通過(guò)信息間接地聯(lián)接起了世界。

從2004年的FaceBook開(kāi)始發(fā)端,社交網(wǎng)絡(luò)鋪下了信息科技的第四層基礎(chǔ),讓人們直接通過(guò)網(wǎng)絡(luò)聯(lián)系起來(lái)。從而有效地把人類(lèi)社會(huì)拓展到了萬(wàn)維網(wǎng)的空間。

伴隨著熟悉互聯(lián)網(wǎng)的人群逐漸成為主流,由Airbnb(2008年)和Uber(2009年)引領(lǐng)的互聯(lián)網(wǎng)商務(wù)服務(wù)大潮又為信息科技鋪下了第五層的基礎(chǔ)。

每一層新的基礎(chǔ)都為信息科技帶來(lái)了新的改進(jìn),并促進(jìn)了互聯(lián)網(wǎng)的使用,同時(shí)也帶來(lái)新的需求。需要注意的是,盡管大部分的互聯(lián)網(wǎng)商務(wù)網(wǎng)站是通過(guò)互聯(lián)網(wǎng)接受并建立的服務(wù),但實(shí)際提供服務(wù)的還是人類(lèi)。

Fig01-d875cc9e8ed97dbd8895529bd73cb302

圖1 信息科技的歷史。圖片由Shaoshan Liu友情提供

現(xiàn)在,我們正在鋪下這第六層——使用機(jī)器人而不是人類(lèi)來(lái)提供服務(wù)。

這一趨勢(shì)的一個(gè)例子就是自主駕駛汽車(chē)(AV)的出現(xiàn)。自主駕駛技術(shù)驅(qū)動(dòng)的車(chē)輛可以把乘客送往目的地而無(wú)需人類(lèi)駕駛員。它不是一項(xiàng)單純的技術(shù),而是一個(gè)由很多部分組成的系統(tǒng)。

在這篇博文里,我會(huì)遍歷自主駕駛所涉及的技術(shù),并探討如何把這些技術(shù)集成在一起,形成一個(gè)安全、有效和高效的自主駕駛系統(tǒng)。

自主駕駛技術(shù)概覽

自主駕駛技術(shù)是一個(gè)復(fù)雜的系統(tǒng),由三個(gè)主要的子系統(tǒng)組成:核心算法、車(chē)載客戶(hù)端系統(tǒng)和云端平臺(tái)系統(tǒng)。核心算法包括感知、理解和決策部分;車(chē)載客戶(hù)端系統(tǒng)包括機(jī)器人操作系統(tǒng)(ROS)和硬件平臺(tái);云端平臺(tái)包括數(shù)據(jù)存儲(chǔ)部分、模擬系統(tǒng)、高清晰度地圖部分和深度學(xué)習(xí)模型訓(xùn)練部分。

Fig02-31eb0590229b296e6e8ea5da5043fe90

圖2 自主駕駛系統(tǒng)的架構(gòu)總覽。圖片由Shaoshan Liu友情提供

算法子系統(tǒng)從傳感器收集來(lái)的原始數(shù)據(jù)中抽取出有意義的信息,從而能理解周?chē)沫h(huán)境,并對(duì)于要采用什么行動(dòng)做出決策。車(chē)載客戶(hù)端子系統(tǒng)集成了這些算法,并保證滿(mǎn)足實(shí)時(shí)和可靠性的需求(例如,如果傳感攝像頭以60Hz的頻率生成數(shù)據(jù),那么客戶(hù)端子系統(tǒng)必須保證處理管道的最長(zhǎng)時(shí)間必須少于16毫秒)。云端平臺(tái)是為車(chē)輛提供離線(xiàn)的計(jì)算和存儲(chǔ)能力。基于云平臺(tái),我們可以測(cè)試新的算法、升級(jí)高清晰度地圖以及訓(xùn)練更好的識(shí)別、跟蹤和決策模型。

自主駕駛算法

算法部分包括:從傳感器采集的原始數(shù)據(jù)里感知和抽取有意義的信息;理解信息來(lái)定位車(chē)輛位置和了解當(dāng)前的環(huán)境;決定采用什么行動(dòng)來(lái)讓車(chē)輛可靠安全地抵達(dá)目的地。

感知

通常,一輛自主駕駛汽車(chē)包括多個(gè)主要的傳感器。因?yàn)槊糠N類(lèi)型的傳感器都有自己的優(yōu)缺點(diǎn),所以必須組合使用來(lái)自多個(gè)傳感器的數(shù)據(jù)。常見(jiàn)的傳感器類(lèi)型包括如下幾種:

1. GPS/IMU(全球定位系統(tǒng)和慣性測(cè)量單元):GPS和IMU系統(tǒng)通過(guò)高頻(例如200Hz)收集慣性變化和地理位置估計(jì)來(lái)幫助自主駕駛汽車(chē)定位自身。盡管GPS是一個(gè)相當(dāng)精確的定位傳感器,但它的更新頻率是10Hz,無(wú)法提供實(shí)時(shí)的信息。經(jīng)管IMU的準(zhǔn)確度隨著時(shí)間變長(zhǎng)而降低,從而導(dǎo)致不能長(zhǎng)時(shí)間地依賴(lài)于它提供精確的位置信息。但它能提供更快的更新頻率(200Hz或更高),這就能滿(mǎn)足實(shí)時(shí)的需求。通過(guò)結(jié)合GPS與IMU,就可以提供實(shí)時(shí)且準(zhǔn)確的車(chē)輛定位信息。

2. LIDAR(激光雷達(dá)):LIDAR被用于繪圖、定位以及避障。它的工作原理是通過(guò)發(fā)射激光,并測(cè)量反射回來(lái)的時(shí)間來(lái)測(cè)量自身與其他物體的距離。它的準(zhǔn)確度很高。因此在大多數(shù)自主駕駛實(shí)現(xiàn)里,它都是主要的傳感器。LIDAR可以被用于生成高清晰度地圖、比對(duì)移動(dòng)中的車(chē)輛和地圖的位置以及探測(cè)前方的障礙物等。通常一個(gè)LIDAR單元(比如Velodyne的64束激光器)會(huì)以10Hz的頻率掃描,每秒采集大約一千三百萬(wàn)的讀數(shù)。

3.?dāng)z像頭:攝像頭主要是用于物體識(shí)別和物體追蹤的任務(wù),比如車(chē)道探測(cè)、信號(hào)燈探測(cè)和行人探測(cè)等。為了增強(qiáng)自主駕駛車(chē)輛的安全性,通常的實(shí)現(xiàn)是在車(chē)身前后安裝八個(gè)甚至更多的攝像頭,用于探測(cè)、識(shí)別和追蹤前后左右的物體。這些攝像頭的工作頻率一般是60Hz,總計(jì)會(huì)在一秒鐘產(chǎn)生約1.8GB的原始數(shù)據(jù)。

4. 雷達(dá)和聲吶:雷達(dá)和聲吶系統(tǒng)是規(guī)避障礙物的最后一道防線(xiàn)。由它們產(chǎn)生的數(shù)據(jù)顯示了車(chē)輛與前方最近的物體間的距離。當(dāng)檢測(cè)到前方有物體并可能有碰撞的危險(xiǎn)時(shí),自主駕駛汽車(chē)可以通過(guò)剎車(chē)或是轉(zhuǎn)向來(lái)進(jìn)行規(guī)避。因此由雷達(dá)和聲吶產(chǎn)生的數(shù)據(jù)并不要求多少處理,通常是直接輸出給控制處理器(沒(méi)有通過(guò)主要的計(jì)算管道)來(lái)完成緊急的任務(wù),比如急轉(zhuǎn)、剎車(chē)或是預(yù)先拉緊安全帶等。

理解

第二步,傳感器收集的數(shù)據(jù)被發(fā)送給理解子系統(tǒng)來(lái)了解車(chē)輛的周?chē)h(huán)境。自主駕駛車(chē)輛的理解系統(tǒng)的三大主要任務(wù)就是定位、物體探測(cè)和物體跟蹤。

定位

GPS和IMU都可以被用于定位。GPS提供相當(dāng)精確的定位,但更新速度較慢;而IMU可以提供快速更新,但精度較差。我們可以使用卡爾曼濾波來(lái)組合這兩者的優(yōu)點(diǎn),提供精確且及時(shí)的位置更新。如圖3所示,IMU每5ms推測(cè)一次車(chē)輛的位置,但隨著時(shí)間的流逝,錯(cuò)誤逐漸累積。不過(guò)每100ms,我們就可以得到GPS提供的更新,從而能糾正IMU的錯(cuò)誤。通過(guò)使用這個(gè)推測(cè)與更新模型,就能得到GPS和IMU共同產(chǎn)生的快速且精確的定位結(jié)果。

不過(guò)我們不能僅僅依賴(lài)于這個(gè)組合方法得到的定位結(jié)果。這主要是因?yàn)槿齻€(gè)原因:1)定位結(jié)果的精度僅有1米;2)GPS的信號(hào)會(huì)有多路的問(wèn)題,即GPS信號(hào)可能會(huì)被建筑物反射,從而引入很多的噪音;3)使用GPS要求車(chē)輛上方空間無(wú)遮攔,因此無(wú)法在封閉空間里工作,比如隧道。

Fig03-70a7bff71c755c115e0dd739899da92a

圖3 GPS和IMU定位。圖片由Shaoshan Liu友情提供

攝像頭也能被用于定位?;谝曈X(jué)的定位過(guò)程遵循如下簡(jiǎn)化的管道:1)通過(guò)三角定位雙目圖像對(duì),就可以獲得一個(gè)視差圖。它可以用來(lái)推導(dǎo)出圖像里每個(gè)點(diǎn)的深度信息;2)通過(guò)比對(duì)連續(xù)兩幀立體圖像里的顯著特征,就能夠估算出兩幀圖片間的移動(dòng);3)通過(guò)比較視頻圖片里的顯著特征和已知的地圖,就推導(dǎo)出車(chē)輛的當(dāng)前位置。然而,基于視頻的定位方法對(duì)于光線(xiàn)非常敏感。因此這個(gè)方法單獨(dú)使用時(shí)也不夠可靠。

Fig04-01df6fa242b79005d2db016f86ad7b92

圖4 雙目圖像測(cè)距法。圖片由Shaoshan Liu友情提供

因此,嚴(yán)重依賴(lài)于粒子濾波的LIDAR(激光雷達(dá))成為主要的定位傳感器。由LIDAR產(chǎn)生的點(diǎn)云提供了對(duì)環(huán)境的“形狀描述”,但它也很難來(lái)對(duì)單獨(dú)的點(diǎn)進(jìn)行差異化。通過(guò)使用粒子濾波,系統(tǒng)把一個(gè)特別的觀(guān)測(cè)形狀和已知的地圖進(jìn)行比對(duì),從而提升確定性。

為了定位車(chē)輛與地圖的相對(duì)位置,我們應(yīng)用粒子濾波技術(shù)來(lái)把來(lái)自L(fǎng)IDAR的測(cè)量和地圖關(guān)聯(lián)。粒子濾波方法已經(jīng)被證明能獲得實(shí)時(shí)的定位,精度在10厘米,同時(shí)對(duì)于城市環(huán)境也有效。然而,LIDAR也有它自己的問(wèn)題:當(dāng)空氣中有非常多的懸浮顆粒(如雨滴和灰塵)的時(shí)候,它的測(cè)量值可能會(huì)非常得混亂。

因此,為了能獲得可靠且精確的定位,我們需要一個(gè)傳感器融合的過(guò)程來(lái)合并這些傳感器的優(yōu)點(diǎn),如圖5所示。

Fig05-20e0ad74d7b03bc6abf38e3d9b3b76c2

圖5 傳感器融合定位管道。圖片由Shaoshan Liu友情提供

物體識(shí)別與追蹤

因?yàn)長(zhǎng)IDAR提供了精確的關(guān)于深度的信息,所以它最初在自主駕駛汽車(chē)上是被用于物體識(shí)別和追蹤的。但近年來(lái),隨著深度學(xué)習(xí)技術(shù)的飛速發(fā)展,它在物體識(shí)別和追蹤的準(zhǔn)確度上有了顯著的提高。

深度神經(jīng)網(wǎng)絡(luò)之一的卷積神經(jīng)網(wǎng)絡(luò)(CNN)已經(jīng)被廣泛地用于物體識(shí)別。一個(gè)普通的CNN評(píng)估管道一般包括下述的幾層:1)卷積層,使用不同的過(guò)濾器來(lái)從輸入圖像里抽取不同的特征。每個(gè)過(guò)濾器都包括一套在訓(xùn)練階段結(jié)束后“可學(xué)習(xí)到”的參數(shù);2)啟動(dòng)層,決定是否要啟動(dòng)目標(biāo)神經(jīng)元;3)pooling層,降低圖像表征的空間尺寸,從而能降低參數(shù)的數(shù)量,以及隨之帶來(lái)的網(wǎng)絡(luò)計(jì)算量的降低;最后4)全連接層,連接前一層所有的啟動(dòng)神經(jīng)元到本層的所有的神經(jīng)元。

一旦用CNN識(shí)別了一個(gè)物體,下一步就是自動(dòng)地估計(jì)物體移動(dòng)的軌跡了,或叫物體追蹤。

物體追蹤技術(shù)可以被用來(lái)跟蹤附近行駛中的車(chē)輛,也能用來(lái)跟蹤橫穿馬路的行人。從而保證車(chē)輛不會(huì)和其他移動(dòng)的物體發(fā)生碰撞。近年來(lái),深度學(xué)習(xí)技術(shù)已經(jīng)展示出比傳統(tǒng)的計(jì)算機(jī)視覺(jué)技術(shù)更好的跟蹤能力。通過(guò)使用輔助的自然圖片,一個(gè)堆?;淖詣?dòng)編碼器可以被離線(xiàn)的訓(xùn)練來(lái)學(xué)習(xí)常見(jiàn)的圖片特征。這樣獲得的模型比從實(shí)際車(chē)輛的位置和視角上看到的震動(dòng)的圖片去訓(xùn)練的模型要更魯邦。這個(gè)離線(xiàn)訓(xùn)練的模型就可以被用來(lái)做物體追蹤。

決策

在決策階段,行為預(yù)測(cè)、路徑規(guī)劃和避障機(jī)制被組合起來(lái),實(shí)時(shí)地產(chǎn)生一個(gè)有效的操作計(jì)劃。

行為預(yù)測(cè)

人類(lèi)司機(jī)在行駛過(guò)程中所面對(duì)的一大挑戰(zhàn)就是如何去應(yīng)對(duì)其他司機(jī)可能的行為。因?yàn)槠渌緳C(jī)的這些行為會(huì)直接影響他自己的駕駛策略。這在有多個(gè)車(chē)道的路面以及行駛改變點(diǎn)的時(shí)候尤其重要。為了保證自主駕駛汽車(chē)在這些情況下能安全行駛,決策單元會(huì)預(yù)測(cè)附近其他車(chē)輛的行為,并依據(jù)這些預(yù)測(cè)來(lái)做出自己的操作計(jì)劃。

為了預(yù)測(cè)它車(chē)的行為,我們可以生成一個(gè)其他車(chē)輛可達(dá)的位置集合的統(tǒng)計(jì)模型,并給出這些集合的概率分布。

路徑規(guī)劃

在一個(gè)動(dòng)態(tài)變化的環(huán)境里,規(guī)劃一個(gè)自主駕駛、自主反應(yīng)的汽車(chē)的路徑是一個(gè)復(fù)雜的問(wèn)題,尤其當(dāng)要求車(chē)輛完全利用它自己的操控能力的時(shí)候。一種方法是使用確定性全局算法,即搜索全部可能的路徑,并用一個(gè)損失函數(shù)來(lái)決定最佳路徑。但是這個(gè)方法的計(jì)算量非常大,并有可能無(wú)法提供實(shí)時(shí)的導(dǎo)航計(jì)劃。為了規(guī)避這個(gè)計(jì)算復(fù)雜度并提供有效的實(shí)時(shí)路徑規(guī)劃,一般使用概率性規(guī)劃器。

避障

自主駕駛中,安全是極其重要的考慮因素,所以我們應(yīng)該使用至少兩級(jí)避障機(jī)制來(lái)保證車(chē)輛不會(huì)撞到其他東西。第一級(jí)是主動(dòng)的,基于交通情況預(yù)測(cè)的。交通預(yù)測(cè)機(jī)制產(chǎn)生類(lèi)似于預(yù)計(jì)碰撞時(shí)間或是預(yù)計(jì)最小距離的指標(biāo)?;谶@些指標(biāo),避障機(jī)制被觸發(fā)來(lái)進(jìn)行局部路徑的再規(guī)劃。如果主動(dòng)機(jī)制失效,第二級(jí)使用雷達(dá)數(shù)據(jù)的被動(dòng)機(jī)制就會(huì)接管控制。一旦雷達(dá)探測(cè)到路徑前方有障礙,它就要獲取車(chē)輛的控制權(quán),并設(shè)法避障。

車(chē)載客戶(hù)端系統(tǒng)

車(chē)載客戶(hù)端子系統(tǒng)集成了上訴算法,來(lái)滿(mǎn)足實(shí)時(shí)和可靠性的需求??蛻?hù)端系統(tǒng)要應(yīng)對(duì)三大主要的挑戰(zhàn):1)系統(tǒng)需要確保處理管道足夠快,才能及時(shí)消化掉傳感器產(chǎn)生的海量數(shù)據(jù);2)如果系統(tǒng)的部分失效了,系統(tǒng)自己必須保證足夠魯棒,從而能從失效中恢復(fù);3)系統(tǒng)需要在有限的供電和計(jì)算資源的情況下完成所有的運(yùn)算。

機(jī)器人操作系統(tǒng)

機(jī)器人操作系統(tǒng)(ROS)是一個(gè)專(zhuān)門(mén)為機(jī)器人應(yīng)用而設(shè)計(jì)的,被廣泛使用的高性能分布式的計(jì)算框架(參見(jiàn)圖6)。

每個(gè)機(jī)器人所要完成的任務(wù)(如自身定位)都由一個(gè)ROS的子節(jié)點(diǎn)處理。這些節(jié)點(diǎn)間是通過(guò)話(huà)題和服務(wù)進(jìn)行相互連接的。它對(duì)于自主駕駛而言是一個(gè)合適的操作系統(tǒng),但也有一些問(wèn)題:

  • 可靠性:ROS只有一個(gè)主節(jié)點(diǎn)而且對(duì)子節(jié)點(diǎn)沒(méi)有監(jiān)控,從而無(wú)法實(shí)現(xiàn)失效恢復(fù)。
  • 性能:在發(fā)送廣播消息的時(shí)候,ROS會(huì)把消息復(fù)制多份,這就導(dǎo)致性能的降低。
  • 安全性:ROS沒(méi)有認(rèn)證和加密的機(jī)制。

雖然ROS 2.0版宣稱(chēng)要修復(fù)這些問(wèn)題,但它還沒(méi)有被廣泛的測(cè)試過(guò),并且很多特性也沒(méi)有實(shí)現(xiàn)。

為了在自主駕駛車(chē)輛上使用ROS,我們需要先解決這幾個(gè)問(wèn)題。

Fig08-7badf4f47f7cefb5f1cfef6b96efca04

圖6 機(jī)器人操作系統(tǒng)(ROS)。圖片由Shaoshan Liu友情提供

可靠性

現(xiàn)有版本的ROS的實(shí)現(xiàn)僅有一個(gè)主節(jié)點(diǎn)。因此當(dāng)主節(jié)點(diǎn)崩潰時(shí),整個(gè)系統(tǒng)就崩潰了。這一點(diǎn)并不能滿(mǎn)足自主駕駛的安全性要求。為了解決這一問(wèn)題,我們?cè)赗OS上實(shí)現(xiàn)了一個(gè)類(lèi)似ZooKeeper的機(jī)制。如圖7所示,這個(gè)設(shè)計(jì)包含一個(gè)主節(jié)點(diǎn)和一個(gè)備份主節(jié)點(diǎn)。當(dāng)主節(jié)點(diǎn)失效時(shí),備份節(jié)點(diǎn)就接替主節(jié)點(diǎn),并確保系統(tǒng)能持續(xù)運(yùn)行無(wú)間斷。另外,ZooKeeper的機(jī)制還可以監(jiān)控所有節(jié)點(diǎn),并在節(jié)點(diǎn)失效時(shí)重啟它們。從而可以確保整個(gè)系統(tǒng)的可靠性。

Fig09-087aa8f1489dedfc7d58f00ee7ba6994

圖7 ROS上使用ZooKeeper。圖片由Shaoshan Liu友情提供

性能

性能問(wèn)題是現(xiàn)有ROS實(shí)現(xiàn)的另外一個(gè)缺陷。ROS節(jié)點(diǎn)間通信很頻繁,因此節(jié)點(diǎn)之間的通信就必須是非常高效的。首先,ROS客戶(hù)端節(jié)點(diǎn)間的通信采用的是環(huán)回機(jī)制。每完成一次環(huán)回的管道,就會(huì)帶來(lái)約20毫秒的開(kāi)銷(xiāo)。為了降低這個(gè)節(jié)點(diǎn)間通信的開(kāi)銷(xiāo),我們可以使用共享內(nèi)存的機(jī)制來(lái)避免消息傳輸必須經(jīng)過(guò)TCP/IP的打包/拆包的過(guò)程。另外,ROS的節(jié)點(diǎn)在廣播消息的時(shí)候,消息會(huì)被復(fù)制多次,極大地占用了系統(tǒng)帶寬。改用多點(diǎn)傳送機(jī)制就能夠很好地提升系統(tǒng)吞吐量。

安全性

安全性問(wèn)題是ROS的最大的死穴。設(shè)想兩個(gè)場(chǎng)景:第一個(gè),某個(gè)ROS的節(jié)點(diǎn)被“黑”了,隨后操作系統(tǒng)內(nèi)存被持續(xù)的占用并最終導(dǎo)致內(nèi)存溢出,從而開(kāi)始?xì)⒌羝渌腞OS的節(jié)點(diǎn)。最終黑客成功地讓整個(gè)系統(tǒng)崩潰。第二個(gè)場(chǎng)景,ROS的消息默認(rèn)是不加密的。黑客可以很容易地監(jiān)聽(tīng)節(jié)點(diǎn)間的通信,然后使用消息攔截機(jī)制發(fā)動(dòng)攻擊。

為了解決第一個(gè)安全問(wèn)題,我們可以使用Linux容器機(jī)制(LXC)來(lái)限制每個(gè)節(jié)點(diǎn)可以使用的資源數(shù)量,并提供沙箱機(jī)制來(lái)防止一個(gè)節(jié)點(diǎn)被其他節(jié)點(diǎn)破壞。這樣可以有效地防止資源溢出。對(duì)于第二個(gè)問(wèn)題,可以通過(guò)加密消息來(lái)阻止消息被竊聽(tīng)。

硬件平臺(tái)

為了能更好地理解為自主駕駛車(chē)輛設(shè)計(jì)硬件平臺(tái)的挑戰(zhàn),讓我們先看看某個(gè)行業(yè)領(lǐng)先的企業(yè)的計(jì)算平臺(tái)的實(shí)現(xiàn)。這個(gè)計(jì)算平臺(tái)包括兩個(gè)計(jì)算系統(tǒng),每個(gè)裝備了Intel Xeon E5處理器,以及4到8個(gè)Nvidia Tesla K80 GPU加速處理器。第二個(gè)系統(tǒng)完成與第一個(gè)系統(tǒng)一模一樣的任務(wù),從而保證了可靠性。當(dāng)?shù)谝粋€(gè)系統(tǒng)失效的時(shí)候,第二個(gè)系統(tǒng)可以立即接手工作。

最差的情況下,如果兩套系統(tǒng)都工作在最大功耗,共計(jì)使用超過(guò)5000瓦的電量,同時(shí)產(chǎn)生非常多的熱量。每套系統(tǒng)的價(jià)格在2萬(wàn)到3萬(wàn)美元之間,遠(yuǎn)遠(yuǎn)超出了一般消費(fèi)者的承受能力。

這種設(shè)計(jì)所帶來(lái)的高功耗、高散熱以及高價(jià)格都讓自動(dòng)駕駛汽車(chē)(目前)還不能為廣大消費(fèi)所使用。為了探索技術(shù)的極限以及更好地理解在A(yíng)RM的移動(dòng)片上系統(tǒng)(SoC)里開(kāi)發(fā)自主駕駛系統(tǒng),我們基于A(yíng)RM的移動(dòng)片上系統(tǒng)實(shí)現(xiàn)了一個(gè)簡(jiǎn)化的、基于視覺(jué)的自主駕駛系統(tǒng)。它的最高功率只有15瓦。

令人驚訝的是,這個(gè)設(shè)計(jì)的性能根本不差。定位計(jì)算管道可以每秒處理25幀畫(huà)面,幾乎能跟上系統(tǒng)每秒產(chǎn)生30幀畫(huà)面的速度。深度學(xué)習(xí)計(jì)算管道可以每秒識(shí)別兩到三個(gè)物體。路徑規(guī)劃和控制管道可以在6毫秒內(nèi)完成路徑規(guī)劃。使用這一系統(tǒng),我們可以讓車(chē)輛以每小時(shí)5英里的速度行駛并且沒(méi)有丟失位置的情況發(fā)生。

云端平臺(tái)

自主駕駛車(chē)輛是一個(gè)移動(dòng)系統(tǒng),因此需要一個(gè)云平臺(tái)來(lái)提供支持。云端主要提供兩大功能,包括分布式計(jì)算和分布式存儲(chǔ)。這一系統(tǒng)還包括幾個(gè)應(yīng)用,即仿真(可以被用于驗(yàn)證新算法)、高分辨率地圖的生成以及深度學(xué)習(xí)模型的訓(xùn)練。為了構(gòu)建這樣的一個(gè)系統(tǒng),我們使用Spark來(lái)做分布式計(jì)算,OpenCL來(lái)做異構(gòu)計(jì)算,并用Alluxio進(jìn)行內(nèi)存分布存儲(chǔ)。

我們通過(guò)集成這三個(gè)框架,提供了一個(gè)可靠、低延時(shí)、高吞吐的自主駕駛云平臺(tái)。

仿真

云平臺(tái)的第一個(gè)應(yīng)用就是仿真。當(dāng)我們開(kāi)發(fā)了一個(gè)新的算法,都需要在正式部署到車(chē)輛前進(jìn)行測(cè)試。否則代價(jià)會(huì)很高且挽救時(shí)間會(huì)很長(zhǎng)。

因此我們首先會(huì)在模擬器上測(cè)試新算法,例如在ROS節(jié)點(diǎn)上做數(shù)據(jù)重現(xiàn)。然而,如果只是在一個(gè)單機(jī)上測(cè)試新算法,要不會(huì)花費(fèi)很長(zhǎng)時(shí)間,要不就沒(méi)有能做到全覆蓋測(cè)試。

為了解決這個(gè)問(wèn)題,我們可以使用一個(gè)分布式的模擬平臺(tái),如圖8所示。

這里,Spark被用于管理分布式計(jì)算節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)上,我們可以運(yùn)行一個(gè)ROS再播放實(shí)例。在一個(gè)單機(jī)服務(wù)器上做自動(dòng)駕駛物體識(shí)別測(cè)試將會(huì)需要3個(gè)多小時(shí)。而使用分布式系統(tǒng),水平擴(kuò)展到8個(gè)服務(wù)器,整個(gè)測(cè)試在25分鐘內(nèi)完成。

Fig011-7040a1c2a960e958d52c3fc2f621cec4

圖8 Spark和基于ROS的模擬平臺(tái)。圖片由Shaoshan Liu友情提供

高清晰度地圖生成

如圖9所示,高清晰度地圖的生成是一個(gè)復(fù)雜的過(guò)程,涉及到很多步驟。包括原始數(shù)據(jù)處理,點(diǎn)云生成,點(diǎn)云對(duì)齊,2維反射地圖生成,高精度地圖標(biāo)記以及最終地圖生成。

使用Spark,我們可以把所有的這些步驟放入一個(gè)任務(wù)中完成。Spark的一大優(yōu)點(diǎn)是它提供基于內(nèi)存的運(yùn)算機(jī)制。這樣我們就可以不用存儲(chǔ)中間數(shù)據(jù)到硬盤(pán)上,從而可以級(jí)大地提升地圖生成的速度。

Fig012-efda621e3c2fde1313e5ce63b780ab94

圖9 基于云平臺(tái)的高清晰度地圖生成。圖片由Shaoshan Liu友情提供

深度學(xué)習(xí)模型訓(xùn)練

因?yàn)槲覀優(yōu)樽灾黢{駛使用了多種不同的深度學(xué)習(xí)模型,所以持續(xù)更新模型來(lái)保證它們的有效性和高效性就非常重要。然而,由于原始數(shù)據(jù)的量非常的大,僅僅靠單機(jī)是很難快速地完成模型的訓(xùn)練的。

為了解決這個(gè)問(wèn)題,我們使用Spark和Paddle(最近由百度開(kāi)源的一個(gè)深度學(xué)習(xí)平臺(tái))開(kāi)發(fā)了一個(gè)高可擴(kuò)展的分布式深度學(xué)習(xí)系統(tǒng)。

在Spark驅(qū)動(dòng)程序里,它可以管理Spark Context和Paddle Context。在每個(gè)節(jié)點(diǎn)里,Spark執(zhí)行器容納了一個(gè)Paddle的訓(xùn)練實(shí)例。在此架構(gòu)之上,我們使用Alluxio作為這個(gè)系統(tǒng)的參數(shù)服務(wù)器。使用這一系統(tǒng),我們可以實(shí)現(xiàn)線(xiàn)性的性能擴(kuò)展(甚至在增加了更多資源后),從而證明它是高可擴(kuò)展的。

這僅僅只是開(kāi)端

如你所見(jiàn)到的,自主駕駛(以及人工智能)不是單一技術(shù),它是多種技術(shù)的綜合。它包括創(chuàng)新的算法、系統(tǒng)集成和云端平臺(tái)。這還僅僅只是開(kāi)端,機(jī)遇無(wú)限。我預(yù)計(jì)到2020年,我們會(huì)正式的開(kāi)啟人工智能(AI)時(shí)代,在市場(chǎng)上見(jiàn)到更多基于A(yíng)I的產(chǎn)品。讓我們做好準(zhǔn)備吧!

Shaoshan Liu

Shaoshan Liu是Perceptln的聯(lián)合創(chuàng)始人和主席,致力于開(kāi)發(fā)下一代的機(jī)器人平臺(tái)。在創(chuàng)立PerceptIn之前,他在百度(美國(guó))的自主駕駛和深度學(xué)習(xí)基礎(chǔ)設(shè)施(Autonomous Driving and Deep Learning Infrastructure)工作。Liu擁有加州大學(xué)歐文分校的計(jì)算機(jī)工程博士學(xué)位。

The original Benz Patent-Motorwagen, first built in 1885 and awarded the patent for the concept. (source: Wikimedia Commons).