◆文/安徽 程增木
本文主要為讀者解析特斯拉自動(dòng)駕駛軟件相關(guān)系統(tǒng)組成,筆者將從模型架構(gòu)、模型訓(xùn)練、信號(hào)傳輸方式等方面進(jìn)行說明。
特斯拉的Autopilot系統(tǒng)搭載了8個(gè)攝像頭,這8個(gè)攝像頭可以進(jìn)行超過1 000種不同任務(wù)的感知預(yù)測。在Tesla自研的FSD計(jì)算平臺(tái)上,這些感知功能可以檢測移動(dòng)物體(例如行人、車輛、自行車、動(dòng)物等),靜態(tài)物體(車道線、路標(biāo)、道路邊緣、交通信號(hào)燈等),行駛環(huán)境區(qū)域(例如學(xué)校區(qū)域、住宅區(qū)、收費(fèi)站等)。其中每個(gè)主功能下邊還有若干附屬功能,例如車輛檢測還包括車輛的靜止,朝向,開門等子任務(wù)的檢測,停止標(biāo)志檢測包括如右轉(zhuǎn)無需停車等細(xì)分類檢測等。
特斯拉的Autopilot系統(tǒng)搭載了8個(gè)攝像頭,其中前方攝像頭模組共由3個(gè)攝像頭組成,這3個(gè)攝像頭都是基于2015年安森美半導(dǎo)體公司發(fā)布的120萬像素圖像傳感器開發(fā)的,其配備了3個(gè)AR0136A上的CMOS圖像傳感器,像素大小為3.75μm,分辨率為1 280×960(1.2MP)。
主視野攝像頭:視野能覆蓋大部分交通場景。
魚眼鏡頭:視野達(dá)120°的魚眼鏡頭能夠拍攝到交通信號(hào)燈、行駛路線上的障礙物和距離較近的物體,非常適用于城市街道、低速緩行的交通場景。
長焦距鏡頭:視野相對(duì)較窄,適用于高速行駛的交通場景,并可以清晰拍攝遠(yuǎn)達(dá)250m的物體。其前方攝像頭模組如圖1所示。
前方側(cè)視攝像頭:視場角為90°,前方側(cè)視攝像頭分別位于特斯拉兩側(cè)的B柱上,最大探測距離為80m。其能夠探測到高速公路上突然并入當(dāng)前車道的車輛,以及在進(jìn)入視野受限的交叉路口時(shí)進(jìn)行探測。前方側(cè)視攝像頭如圖2所示。
側(cè)方后視攝像頭:最大探測距離為100m,能監(jiān)測車輛兩側(cè)的后方盲區(qū),在變道和匯入高速公路時(shí)起著重要作用。側(cè)方后視攝像頭如圖3所示。
后視攝像頭:探測距離為50m,主要進(jìn)行泊車輔助(圖4)。
特斯拉的各個(gè)相機(jī)是一種松耦合的狀態(tài),即各個(gè)相機(jī)單獨(dú)進(jìn)行感知,然后把不同相機(jī)的感知結(jié)果通過濾波器或者其他技術(shù)進(jìn)行拼接。特斯拉在其Autopilot2.0系統(tǒng)中針對(duì)8個(gè)相機(jī)的特征層(Feature layer)輸入了融合層來對(duì)特征層進(jìn)行融合,隨后得到鳥瞰圖,最終在鳥瞰圖的基礎(chǔ)上再進(jìn)行目標(biāo)檢測、道路分割、邊緣檢測等功能輸出。如圖5和圖6所示。
特斯拉的Autopilot系統(tǒng)使用了規(guī)模巨大的多神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),不同相機(jī)根據(jù)不同的網(wǎng)絡(luò)負(fù)責(zé)不同功能,并且不同網(wǎng)絡(luò)引入RNN神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了跨時(shí)間的感知任務(wù)。前攝像頭模組可以感知車道線并且進(jìn)行目標(biāo)跟蹤,B柱攝像頭和側(cè)翼子板攝像頭可以結(jié)合上一時(shí)刻的圖像輸入以及本時(shí)刻的圖像輸入一起負(fù)責(zé)對(duì)于加塞工況的判斷,并且與前攝像頭模組是跨時(shí)間的任務(wù)組合配合。特斯拉的無人駕駛除了圖像檢測之外,還有很多訓(xùn)練功能網(wǎng)絡(luò),包括圖像深度估計(jì)網(wǎng)絡(luò)、坐標(biāo)投影網(wǎng)絡(luò)、道路元素及布局推理網(wǎng)絡(luò)、道路元素關(guān)聯(lián)網(wǎng)絡(luò)。利用上述網(wǎng)絡(luò)特斯拉可以更方便的進(jìn)行模型感知及推理。特斯拉自動(dòng)駕駛的感知網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示。
FSD計(jì)算平臺(tái)處理完攝像頭的數(shù)據(jù)后,將數(shù)據(jù)傳輸給負(fù)責(zé)車輛控制的模塊,車輛控制模塊根據(jù)攝像頭識(shí)別的結(jié)果,控制車輛的方向盤轉(zhuǎn)角、油門、剎車、轉(zhuǎn)向燈等來控制車輛。
特斯拉的自動(dòng)駕駛技術(shù)高度依賴于神經(jīng)網(wǎng)絡(luò),對(duì)于車載系統(tǒng),如果實(shí)時(shí)運(yùn)算一個(gè)擁有48個(gè)網(wǎng)絡(luò),1 000多個(gè)感知輸出的龐大神經(jīng)網(wǎng)絡(luò)模型是無法完成的事情。對(duì)于模型訓(xùn)練,特斯拉研發(fā)了專門用于模型訓(xùn)練的Dojo超級(jí)計(jì)算機(jī)群,如圖8所示。
對(duì)于神經(jīng)網(wǎng)絡(luò)的模型訓(xùn)練,我們最關(guān)注模型的損失函數(shù)、跨任務(wù)訓(xùn)練、數(shù)據(jù)優(yōu)化三個(gè)部分。
損失函數(shù)(Loss Function)也可稱為代價(jià)函數(shù)(Cost Function)或誤差函數(shù)(Error Function),用于衡量預(yù)測值與實(shí)際值的偏離程度。一般來說,我們?cè)谶M(jìn)行機(jī)器學(xué)習(xí)任務(wù)時(shí),使用的每一個(gè)算法都有一個(gè)目標(biāo)函數(shù),算法便是對(duì)這個(gè)目標(biāo)函數(shù)進(jìn)行優(yōu)化,特別是在分類或者回歸任務(wù)中,便是使用損失函數(shù)(Loss Function)作為其目標(biāo)函數(shù)。機(jī)器學(xué)習(xí)的目標(biāo)就是希望預(yù)測值與實(shí)際值偏離較小,希望損失函數(shù)較小,也就是所謂的最小化損失函數(shù)。特斯拉把所有的子任務(wù)最終都加權(quán)平均到一個(gè)損失函數(shù)中,對(duì)這個(gè)損失函數(shù)進(jìn)行優(yōu)化。特斯拉在訓(xùn)練過程中,主要存在如下幾點(diǎn)問題的思考:
(1)不同任務(wù)的損失函數(shù)的范圍不同,并且分類和回歸權(quán)重也不同。例如感知人和道路邊緣是兩個(gè)任務(wù),其范圍不同并且權(quán)重也不同,損失函數(shù)的歸一化是一個(gè)重要的問題。
(2)不同任務(wù)有著不同的重要性,例如行人檢測就有著比限速標(biāo)志牌更高的優(yōu)先級(jí)。
(3)有些任務(wù)比較簡單,有些比較困難,例如道路標(biāo)示牌在不同場景下的變化不大,模型可以快速訓(xùn)練到很好的效果,但是車道是一個(gè)很復(fù)雜的任務(wù),道路模型具有多樣性的特點(diǎn)。
(4)模型的長尾數(shù)據(jù)較少(例如特殊車輛,事故檢測等數(shù)據(jù)量較少,對(duì)于十分依賴數(shù)據(jù)輸入的神經(jīng)網(wǎng)絡(luò)來說是一個(gè)很大的挑戰(zhàn))。
因?yàn)槟P驮诓煌蝿?wù)間進(jìn)行不同程度的參數(shù)共享,因此利用不同的數(shù)據(jù)對(duì)一些子任務(wù)進(jìn)行訓(xùn)練的時(shí)候,并不是整個(gè)網(wǎng)絡(luò)模型都會(huì)得到訓(xùn)練,而是根據(jù)任務(wù)和數(shù)據(jù)樣本整體網(wǎng)絡(luò)的一部分進(jìn)行訓(xùn)練。特斯拉的軟件架構(gòu)中也使用了這種方法來訓(xùn)練神經(jīng)網(wǎng)絡(luò)。此外,特斯拉還使用了分布式模型進(jìn)行模型訓(xùn)練,以此來減少模型訓(xùn)練時(shí)間。例如此時(shí)正在訓(xùn)練任務(wù)1(車道線模型訓(xùn)練),任務(wù)2(道路標(biāo)志識(shí)別模型訓(xùn)練)此時(shí)也進(jìn)入訓(xùn)練隊(duì)列,系統(tǒng)會(huì)自動(dòng)停止任務(wù)1的訓(xùn)練并記錄停止節(jié)點(diǎn),優(yōu)先訓(xùn)練任務(wù)2(因?yàn)槿蝿?wù)2訓(xùn)練更快,且訓(xùn)練結(jié)果無需重復(fù)標(biāo)注),任務(wù)2結(jié)束后繼續(xù)訓(xùn)練任務(wù)1,提升網(wǎng)絡(luò)的訓(xùn)練效率。
為了解決長尾任務(wù)的訓(xùn)練,采用數(shù)據(jù)過采樣來保證任務(wù)內(nèi)的數(shù)據(jù)優(yōu)化以及任務(wù)間的數(shù)據(jù)平衡。例如,在現(xiàn)實(shí)交通燈數(shù)據(jù)中,黃燈的時(shí)間及出現(xiàn)頻率非常有限,通過過采樣達(dá)到在一項(xiàng)任務(wù)內(nèi)基本的一個(gè)數(shù)據(jù)分布的平衡。另外在特斯拉任務(wù)間也通過不同任務(wù)的優(yōu)先級(jí),重要程度等設(shè)定過采樣率來調(diào)節(jié)不同任務(wù)的性能。對(duì)于數(shù)據(jù)量不同的訓(xùn)練任務(wù),應(yīng)該對(duì)長尾任務(wù)(例如特殊車輛,事故檢測等數(shù)據(jù)量較少的任務(wù))以及噪聲影響較多的任務(wù)進(jìn)行大量數(shù)據(jù)優(yōu)化。
特斯拉FSD軟件信號(hào)傳輸?shù)牧鞒倘鐖D9所示。
特斯拉的8個(gè)攝像頭進(jìn)行數(shù)據(jù)感知,可以以每秒25億像素的最大速度采集輸入到FSD中,攝像頭的數(shù)據(jù)進(jìn)入到FSD的DRAM。然后通過圖像信號(hào)處理器ISP進(jìn)行圖像數(shù)據(jù)的預(yù)處理,每秒可以處理10億像素(大約8個(gè)全高清1080P屏幕,每秒60幀)。這一階段芯片將來自攝像頭傳感器的原始RGB數(shù)據(jù)轉(zhuǎn)換成除了增強(qiáng)色調(diào)和消除噪音之外實(shí)際上有用的數(shù)據(jù)。隨后數(shù)據(jù)進(jìn)入LPDDR中進(jìn)行存儲(chǔ),影響此階段的關(guān)鍵要素就是內(nèi)存帶寬,F(xiàn)SD除了要處理攝像頭的內(nèi)存數(shù)據(jù),還需要處理毫米波雷達(dá)及其他傳感器的數(shù)據(jù)。數(shù)據(jù)隨后存儲(chǔ)與SRAM中,最終通過特斯拉的NPU/GPU/CPU進(jìn)行數(shù)據(jù)處理,Dojo的訓(xùn)練結(jié)果會(huì)通過OTA定義更新到FSD上,特斯拉可以對(duì)目標(biāo)進(jìn)行識(shí)別并進(jìn)行跟蹤,并把識(shí)別及跟蹤結(jié)果傳輸給車輛控制模塊,車輛控制模塊通過控制方向盤、加速踏板、制動(dòng)裝置等其他執(zhí)行機(jī)構(gòu)對(duì)車輛進(jìn)行控制。
特斯拉后續(xù)會(huì)持續(xù)升級(jí)其軟件系統(tǒng),包括感知神經(jīng)網(wǎng)絡(luò)的訓(xùn)練及部署,并有可能使用新一代毫米波雷達(dá)或者使用4D毫米波雷達(dá)融合感知。特斯拉的自動(dòng)駕駛軟件系統(tǒng)為自動(dòng)駕駛提供了新的實(shí)現(xiàn)方法,現(xiàn)在各大主機(jī)廠、各大供應(yīng)商均開始大力研究自動(dòng)駕駛的軟件系統(tǒng)及架構(gòu),相信這會(huì)讓未來自動(dòng)駕駛功能更加完善,可靠性更高。