在自動駕駛汽車技術中,卷積神經網路(CNN)已經證明是一種非常強大的道路特徵辨識工具。經過工程師團隊的訓練,卷積神經網路可以偵測道路類型和路側特徵。在用於這種訓練的各種資料集協助下,這種模型會以類似幼兒學步的方式教汽車學習駕駛技巧。

本文描述現有的駕駛評估系統如何訓練和整合CNN模型,同時介紹了這種模型及其改進版本VGGNet的本質,以期更能理解這一相對未知的課題。VGGNet的使用可以大幅提升預測的精準度,特別是考慮到車內駕駛人面前的攝影機時。

作為嵌入式系統,駕駛評估系統的運算能力是非常有限的。工程師團隊受命在該模型和現有駕駛評估系統的基礎上使用現實世界資料開發CNN,結果將涵蓋在文末的總結部份。本文還討論了CNN的模型整合和訓練處理最佳化,同時強調了神經網路的再使用性。

駕駛評估系統

定期的駕駛人評估是車隊管理和服務產業的一個重要步驟。具有正確回饋措施的定期評估可以提升駕駛人的表現。藉由近來機器學習領域的進步以及儀器使用的價值,我們可以輕鬆地將機密和精確的資料連接到登錄的中央運算系統。這樣的電腦和其它模組可以用於作為一套組合工具,以評估駕駛人的表現。

20171122_Einfochips_TA31P1 圖1:傳統的駕駛評估系統(來源:Einfochips)

圖1對傳統的駕駛評估系統進行了簡單的描述。類似這樣的系統可以用來接受來自不同感測器的資料,然後提供給板載電腦(低階)進行儲存,並完整地傳送至離線資料處理單元。當駕駛人加入進行評估時,離線資料處理單元再將資料發佈給管理者。

在傳統的環境下,視訊提供的資料以及來自感測器的資料必須進行人為管理。但眾所周知,人為管理很容易出錯。

有鑒於此,能夠智慧地摘要、分類並擷取資訊的機制特別管用,尤其是加上來自OBD-II的幫助。以下我們將討論如何融合/結合這兩組資訊,從而為駕駛人和管理者產生合理的結果。

這裡的區別是什麼?

伺服器端如果只有感測器資料,並不足以完成駕駛人的評估。例如,讓我們看看一個即時的場景:在下坡時,一般意味著連續的加速,比方說8到10秒,遠遠超出發佈的極限。這肯定會影響駕駛人在駕駛汽車時的表現資料。事實上,這是一種真陰性(TN;假陽性)的情形。

本文提出的系統有助於判斷上坡和下坡,而檢測到真陰性後可以改善駕駛人的評估。

20171122_Einfochips_TA31P2 圖2:以經訓練的神經網路為基礎之駕駛評估系統(來源:Einfochips)

如上圖所示,資料區塊的智慧處理取代了資料區塊的離線處理。這種資料處理是在經訓練的神經網路協助下完成的。卷積神經網路可以將連續視訊觀察的任務從人卸載至智慧機器。其目的在於分類特徵(在此例中的上坡和下坡),並使用這些資訊和時間軸上的OBD-II資料,以判斷駕駛人的表現。

實作細節

NeuralTalk2可用於分類影像。它使用卷積神經網路機制分類影像。針對每一種偵測到的特徵,它都提供了置信值。

20171122_Einfochips_TA31P3 圖3:一般的深度學習流程圖(來源:Einfochips)

卷積神經網路的工作方式: 步驟1:濾波器、參數和權重被分配一定的隨機值。權重是指完整連接的網路值,而濾波器則是卷積濾波器的數量。

步驟2:網路接收輸入的圖像,開始正向傳播(卷積、非線性啟動、空間池化,最後進入完全連接[FC]的層級),它還尋找每種特徵的可能性——參考卷積和非線性部份以及圖3中的池化部份。

Convolution: f(x)=fD(…f2(f1(x;w1);w2)…),wD)

這裡的fd作用是輸入一個值xd和一個參數值wd,產生輸出結果xd+1。雖然函數的類型和結果是人工的,但參數w=(w1,…,wD)是從訓練中學到的。

非線性啟動ReLU(調整過的線性單元):

f(x)=max(0, x)

空間池化(spatial pooling):

f(x) = max(Stride)

步驟3:計算總誤差

總誤差 = Σ1/2(目標誤差–輸出誤差)2

步驟4:使用後向傳播最大限度地減小誤差。為此,先獲得相對權重的梯度誤差,然後使用梯度下降更新濾波器的值和參數,以儘量減小輸出誤差。這裡發生改變的是濾波器值,連接權重也得到了更新。這是在完全連接層完成的。

w = wi – ƞ * dL/dw
w = Weight
wi = Initial Weight
ƞ = Learning Rate

由於這個應用與駕駛評估有關,因此他/她在駕駛時所處的場景是最重要的,而不是只是儀器讀數。為了理解這種場景(讓我們想像一條路),我們需要一個非常好的分類器。為了克服這個問題,可以選擇內部使用VGGNet的NeuralTalk2。VGGNet是一種卷積網路,最擅於辨識物體的位置。它還擅長於分類物體本身。輸入是一個影像,而輸出則是概率(圖4)。

20171122_Einfochips_TA31P4 圖4:一般的VGGNet模組(來源:Einfochips)

VGGNet具有這種能力主要取決於一種因素。它相信為了辨識/分類影像,理解影像的深度是很有用的。進行越多的深度分析,影像的分類就越精確。換句話說,卷積的越多,物體分類的越好。VGGNet共有16個卷積層,用於提升預測的精度。CONV層執行3×3卷積,步幅為1,填充為1。POOL層執行2×2最大共用,步幅為2,填充為0。

在訓練階段會為NeuralTalk2提供一套訓練用的輸入集。我們將訓練集限制為直路、上坡、下坡、彎路、左轉和右轉。這在以更有效方式訓練模型時特別有用,因為輸入數量是有限的。這樣做的目的是想在進行評估時取得更高的精確度。

所產生經訓練的網路/模型可專門關注訓練集提到的特徵,如上坡、左轉和右轉。這個模型可以被移植到大多數X86 Linux電腦。

輸入感測器:OBD-II是汽車內的標準介面。該硬體用於從終端感測器收集OBD-II的引擎轉速、散熱、速度資料,並將這些資料提供給運算模組作為輸入。

評估儀錶板:儀表板將為這些資料進行第一層分析,顯示理想的和原始的資料圖。當點選原始資料圖上的任何點時,將會在該點顯示資料集中可用的完整細節。

操作

前置攝影機記錄汽車前方的視訊。當駕駛人駕車行經上坡時,很明顯地會重踩油門以維持汽車前進的推動力。隨後這些資料連同前置攝影機的視訊一併被記錄到與硬體相連的儲存裝置中。

當駕駛人的旅程結束並將車子停在停車場後,這些記錄的資料將會被分析。視訊和影像將會透過已內建訓練分類模型的電腦進行分析。除了視訊外,還包括轉速、速度、散熱等其它汽車參數也會被分析。由於電腦已經學會了偵測上坡,因此會自動排除不斷增加的汽車轉速資料,這在傳統裝置中是不可能的。這種機制在避免錯誤地駕駛評估中是很有用的。

偵測現場影像

20171122_Einfochips_TA31P5 圖5:偵測直線道路(來源:Einfochips)

20171122_Einfochips_TA31P6 圖6:偵測下坡路段(來源:Einfochips)

20171122_Einfochips_TA31P7 圖7:偵測上坡路段(來源:Einfochips)

這種經訓練的模型能夠以很高的精確度辨識直線道路和坡道

訓練演算法的虛擬程式碼

以下是訓練演算法的完整虛擬式碼:

20171122_Einfochips_TA31P8

測試演算法的虛擬程式碼

20171122_Einfochips_TA31P9

值得注意的是:虛擬程式碼中提到的概率值是假設的。

結語

在有效地針對各種道路類型和特徵進行訓練後,卷積神經網路本身可能成為未來自動駕駛技術的強力武器。這種模型也可以整合於軟體平台,以增強現有駕駛評估系統的精確度。還可以利用各種資料集對這種神經網路進行再次訓練,如物體辨識、物體分類以及快照辨識等。因此,這種模型很有效率,並且可重複使用。

我們還可以進一步推論,卷積神經網路模型和其它軟體整合,將可提供更大的靈活性。未來的工作可以透過最佳化模型的整體訓練過程加以實現。最佳化底層資料庫函數和頻繁使用的函數,可以大幅地改善整體訓練過程。