◆文/安徽 程增木
本文主要為讀者解析特斯拉自動駕駛軟件相關系統組成,筆者將從模型架構、模型訓練、信號傳輸方式等方面進行說明。
特斯拉的Autopilot系統搭載了8個攝像頭,這8個攝像頭可以進行超過1 000種不同任務的感知預測。在Tesla自研的FSD計算平臺上,這些感知功能可以檢測移動物體(例如行人、車輛、自行車、動物等),靜態物體(車道線、路標、道路邊緣、交通信號燈等),行駛環境區域(例如學校區域、住宅區、收費站等)。其中每個主功能下邊還有若干附屬功能,例如車輛檢測還包括車輛的靜止,朝向,開門等子任務的檢測,停止標志檢測包括如右轉無需停車等細分類檢測等。
特斯拉的Autopilot系統搭載了8個攝像頭,其中前方攝像頭模組共由3個攝像頭組成,這3個攝像頭都是基于2015年安森美半導體公司發布的120萬像素圖像傳感器開發的,其配備了3個AR0136A上的CMOS圖像傳感器,像素大小為3.75μm,分辨率為1 280×960(1.2MP)。
主視野攝像頭:視野能覆蓋大部分交通場景。
魚眼鏡頭:視野達120°的魚眼鏡頭能夠拍攝到交通信號燈、行駛路線上的障礙物和距離較近的物體,非常適用于城市街道、低速緩行的交通場景。
長焦距鏡頭:視野相對較窄,適用于高速行駛的交通場景,并可以清晰拍攝遠達250m的物體。其前方攝像頭模組如圖1所示。

前方側視攝像頭:視場角為90°,前方側視攝像頭分別位于特斯拉兩側的B柱上,最大探測距離為80m。其能夠探測到高速公路上突然并入當前車道的車輛,以及在進入視野受限的交叉路口時進行探測。前方側視攝像頭如圖2所示。

側方后視攝像頭:最大探測距離為100m,能監測車輛兩側的后方盲區,在變道和匯入高速公路時起著重要作用。側方后視攝像頭如圖3所示。

后視攝像頭:探測距離為50m,主要進行泊車輔助(圖4)。

特斯拉的各個相機是一種松耦合的狀態,即各個相機單獨進行感知,然后把不同相機的感知結果通過濾波器或者其他技術進行拼接。特斯拉在其Autopilot2.0系統中針對8個相機的特征層(Feature layer)輸入了融合層來對特征層進行融合,隨后得到鳥瞰圖,最終在鳥瞰圖的基礎上再進行目標檢測、道路分割、邊緣檢測等功能輸出。如圖5和圖6所示。


特斯拉的Autopilot系統使用了規模巨大的多神經網絡結構,不同相機根據不同的網絡負責不同功能,并且不同網絡引入RNN神經網絡實現了跨時間的感知任務。前攝像頭模組可以感知車道線并且進行目標跟蹤,B柱攝像頭和側翼子板攝像頭可以結合上一時刻的圖像輸入以及本時刻的圖像輸入一起負責對于加塞工況的判斷,并且與前攝像頭模組是跨時間的任務組合配合。特斯拉的無人駕駛除了圖像檢測之外,還有很多訓練功能網絡,包括圖像深度估計網絡、坐標投影網絡、道路元素及布局推理網絡、道路元素關聯網絡。利用上述網絡特斯拉可以更方便的進行模型感知及推理。特斯拉自動駕駛的感知網絡結構如圖7所示。

FSD計算平臺處理完攝像頭的數據后,將數據傳輸給負責車輛控制的模塊,車輛控制模塊根據攝像頭識別的結果,控制車輛的方向盤轉角、油門、剎車、轉向燈等來控制車輛。
特斯拉的自動駕駛技術高度依賴于神經網絡,對于車載系統,如果實時運算一個擁有48個網絡,1 000多個感知輸出的龐大神經網絡模型是無法完成的事情。對于模型訓練,特斯拉研發了專門用于模型訓練的Dojo超級計算機群,如圖8所示。

對于神經網絡的模型訓練,我們最關注模型的損失函數、跨任務訓練、數據優化三個部分。
損失函數(Loss Function)也可稱為代價函數(Cost Function)或誤差函數(Error Function),用于衡量預測值與實際值的偏離程度。一般來說,我們在進行機器學習任務時,使用的每一個算法都有一個目標函數,算法便是對這個目標函數進行優化,特別是在分類或者回歸任務中,便是使用損失函數(Loss Function)作為其目標函數。機器學習的目標就是希望預測值與實際值偏離較小,希望損失函數較小,也就是所謂的最小化損失函數。特斯拉把所有的子任務最終都加權平均到一個損失函數中,對這個損失函數進行優化。特斯拉在訓練過程中,主要存在如下幾點問題的思考:
(1)不同任務的損失函數的范圍不同,并且分類和回歸權重也不同。例如感知人和道路邊緣是兩個任務,其范圍不同并且權重也不同,損失函數的歸一化是一個重要的問題。
(2)不同任務有著不同的重要性,例如行人檢測就有著比限速標志牌更高的優先級。
(3)有些任務比較簡單,有些比較困難,例如道路標示牌在不同場景下的變化不大,模型可以快速訓練到很好的效果,但是車道是一個很復雜的任務,道路模型具有多樣性的特點。
(4)模型的長尾數據較少(例如特殊車輛,事故檢測等數據量較少,對于十分依賴數據輸入的神經網絡來說是一個很大的挑戰)。
因為模型在不同任務間進行不同程度的參數共享,因此利用不同的數據對一些子任務進行訓練的時候,并不是整個網絡模型都會得到訓練,而是根據任務和數據樣本整體網絡的一部分進行訓練。特斯拉的軟件架構中也使用了這種方法來訓練神經網絡。此外,特斯拉還使用了分布式模型進行模型訓練,以此來減少模型訓練時間。例如此時正在訓練任務1(車道線模型訓練),任務2(道路標志識別模型訓練)此時也進入訓練隊列,系統會自動停止任務1的訓練并記錄停止節點,優先訓練任務2(因為任務2訓練更快,且訓練結果無需重復標注),任務2結束后繼續訓練任務1,提升網絡的訓練效率。
為了解決長尾任務的訓練,采用數據過采樣來保證任務內的數據優化以及任務間的數據平衡。例如,在現實交通燈數據中,黃燈的時間及出現頻率非常有限,通過過采樣達到在一項任務內基本的一個數據分布的平衡。另外在特斯拉任務間也通過不同任務的優先級,重要程度等設定過采樣率來調節不同任務的性能。對于數據量不同的訓練任務,應該對長尾任務(例如特殊車輛,事故檢測等數據量較少的任務)以及噪聲影響較多的任務進行大量數據優化。
特斯拉FSD軟件信號傳輸的流程如圖9所示。

特斯拉的8個攝像頭進行數據感知,可以以每秒25億像素的最大速度采集輸入到FSD中,攝像頭的數據進入到FSD的DRAM。然后通過圖像信號處理器ISP進行圖像數據的預處理,每秒可以處理10億像素(大約8個全高清1080P屏幕,每秒60幀)。這一階段芯片將來自攝像頭傳感器的原始RGB數據轉換成除了增強色調和消除噪音之外實際上有用的數據。隨后數據進入LPDDR中進行存儲,影響此階段的關鍵要素就是內存帶寬,FSD除了要處理攝像頭的內存數據,還需要處理毫米波雷達及其他傳感器的數據。數據隨后存儲與SRAM中,最終通過特斯拉的NPU/GPU/CPU進行數據處理,Dojo的訓練結果會通過OTA定義更新到FSD上,特斯拉可以對目標進行識別并進行跟蹤,并把識別及跟蹤結果傳輸給車輛控制模塊,車輛控制模塊通過控制方向盤、加速踏板、制動裝置等其他執行機構對車輛進行控制。
特斯拉后續會持續升級其軟件系統,包括感知神經網絡的訓練及部署,并有可能使用新一代毫米波雷達或者使用4D毫米波雷達融合感知。特斯拉的自動駕駛軟件系統為自動駕駛提供了新的實現方法,現在各大主機廠、各大供應商均開始大力研究自動駕駛的軟件系統及架構,相信這會讓未來自動駕駛功能更加完善,可靠性更高。