在最近的一款汽車應用產品中,我們用卷積神經網絡(CNNs)將車前部攝像頭捕捉到的原始像素圖映射為汽車的方向操控命令。這種強大的端到端技術意味著,只需要人們提供少量的訓練數據,系統就能自動學會駕駛技術,無論有沒有車道標志線,無論是在普通公路還是高速公路。這套系統還可以工作在視線不清晰的區域,比如停車場或者崎嶇的道路上。
圖1 行駛中的NVIDIA自動駕駛汽車
我們設計的這套端到端學習系統使用了NVIDIA DevBox,用Torch 7進行訓練。一臺 NVIDIA DRIVE PX 自動駕駛汽車計算機用于判斷汽車行駛的方向,工作時它每秒需要處理30幀的數據,同樣使用Torch 7處理。這套系統經過訓練,自動學會了方向操縱指令的表達,比如檢測有效道路的特征,輸入的訓練信號僅僅只是人工操控方向盤的角度。我們并沒有直接訓練這個系統來識別道路邊界等特征。相反的,不同于直接人工將問題拆解,比如拆解成車道標記檢測、線路規劃、車輛控制等子任務,我們的端到端系統同時能優化所有的操縱過程。
我們相信應用端到端的學習方法能取得更好的效果,系統也將變得更小巧。效果更好是因為內部組件自動地對系統全局性能做了優化,而不只是優化人們選擇的條件標準,比如車道檢查。這類可解釋的標準雖然易于人的理解,但并不能保證系統處于全局最優狀態。更小巧的系統是因為整個系統學習用最少的處理步驟來解決問題。
這篇文章是基于NVIDIA的論文《End to End Learning for Self-Driving Cars》。具體細節可以參考論文原文。
卷積神經網絡處理視覺數據
卷積神經網絡模型顛覆了計算機模式識別領域。在CNNs被廣泛應用前,大多數的識別任務都是先經過人工特征提取步驟,然后用分類器判斷。CNNs的重大突破在于它能自動地從訓練樣本中學習特征。由于卷積運算能夠捕捉圖像的二維屬性,CNN方法在圖像識別任務上尤其顯得強大。用卷積核掃描整張圖片之后,需要學習的參數比原來大大減少。
盡管CNNs模型已經被商業化使用了二十多年,但直到近些年才被大規模地應用,這主要是因為兩項重要的突破。首先,大規模的人工標注數據集很容易獲取,比如ImageNet大規模視覺識別挑戰(ILSVRC),這些數據可以作為訓練集和驗證集。其次,CNN學習算法現在能夠在大規模并行圖形處理單元(GPUs)上運行,極大地提高了學習效率和預測能力。
我們這里所講述的CNNs模型不局限于基本的模式識別。我們開發了一套系統,可以學習自動駕駛汽車的整個工作流程。這個項目的基礎工作十年前在國防高級研究項目機構(Defense Advanced Research Projects Agency,DARPA )的自動化車輛項目中就已經完成,這個項目被稱為DAVE,此項目中一輛微縮的遙控車行駛通過擺放了障礙物的小路。DAVE使用在了類似環境下采集的若干個小時的人工駕駛數據進行訓練,但環境并不完全相同。訓練數據包括兩臺攝像機采集的視頻數據和人操控方向的命令。
在許多方面,DAVE的靈感都來自于Pomerleau開創性的工作,Pomerleau在1989年用神經網絡搭建了一套自動駕駛系統(Autonomous Land Vehicle in a Neural Network,ALVINN)。ALVINN是DAVE的先驅產品,它首次證實了端到端訓練的神經網絡模型終將在某一天能夠操控汽車行駛在公路上。DAVE展示了端到端的學習潛能,而且它還用來證明DARPA Learning Applied to Ground Robots 項目的啟動,但是DAVE的性能不足夠可靠,在非公路環境下不能完全替代多模塊方式的駕駛。(在復雜環境下,DAVE在碰撞之間的平均距離約有20米。)
大約在一年之前我們開始重新著力于提升原始版DAVE的性能,構建一套能夠在公路上駕駛的強健系統。這項工作的初始動機是為了避免識別特定的人工設計特征標志,比如車道標記、隔離護欄和其它車輛,也避免基于這些觀察到的特征指定一套“如果……那么……否則……”的規則系統。我們很高興能夠分享這一新的努力的初步結果,即DAVE-2。
DAVE-2系統
圖2展示了DAVE-2系統的訓練數據采集模塊的塊狀示意圖。數據采集車的擋風玻璃后面固定了三臺攝像機,在攝像機采集視頻數據的同時,此系統也記錄駕駛員操控方向盤的偏轉角度。方向控制命令是從汽車的控制網絡(Controller Area Network,CAN)總線獲取。為了使我們的系統能夠獨立于汽車的幾何尺寸,我們用1/r來表示方向控制命令,其中r是以米為單位的轉彎半徑。我們使用1/r而不是r的目的是防止在直線行駛時出現奇點(直線行駛的轉彎半徑無限大)。左轉彎的1/r值為負數,右轉彎的值為正數。
圖2 數據采集系統的結構圖
訓練數據包括從視頻中采樣得到的單幀視頻,以及對應的方向控制命令(1/r)。只用駕駛員操作的數據訓練遠遠不夠;網絡模型還需要學習如何糾正錯誤的操作,否則汽車就會慢慢偏離公路了。于是,訓練數據額外補充了大量圖像,包括汽車從車道中心的各種偏移和轉彎。
兩個特定的偏離中心的圖像可以從左和右兩臺相機得到。攝像機之間的其它偏離以及所有的旋轉都靠臨近攝像機的視角變換來仿真。精確的視角轉換需要具備3D場景的知識,而我們卻不具備這些知識,因此我們假設所有低于地平線的點都在地平面上,所有地平線以上的點都在無限遠處,以此來近似地估計視角變換。在平坦的地區這種方法沒問題,但是對于更完整的渲染,會造成地面上物體的扭曲,比如汽車、樹木和建筑等。幸運的是這些扭曲對網絡模型訓練并無大礙。方向控制會根據變換后的圖像迅速得到修正,使得汽車能在兩秒之內回到正確的位置和方向。
圖3是我們的訓練系統。圖像輸入到CNN網絡計算方向控制命令。預測的方向控制命令與理想的控制命令相比較,然后調整CNN模型的權值使得預測值盡可能接近理想值。權值調整是由機器學習庫Torch 7的后向傳播算法完成。
圖3 訓練神經網絡模型
訓練完成后,模型可以用中心的單個攝像機數據生成方向控制命令。圖4顯示了這個過程。
圖4 訓練得到的模型可以用正前方的單個攝像機的數據生成方向控制命令
數據采集
訓練數據是在各種路段和不同燈光和天氣條件下采集得到的。我們在新澤西州中部采集街道路面數據,在伊利諾伊、密歇根、賓夕法尼亞和紐約州采集高速公路的數據。其它道路類別包括兩車道道路(有車道標志或者沒有標志),路邊有車停放的居民區道路,隧道和不平整道路。采集數據時的天氣狀況有晴天、多云、霧天、雪天和雨天,白天和晚上都有。在某些情況下,太陽接近地平線,導致有路面反射的光線和擋風玻璃的散射。
我們采集數據的車輛是2016款 Lincoln MKZ,或者2013款Ford Focus,后者攝像頭的安放位置與前者相似。我們的系統不依賴與任何的汽車制造商或是型號。我們要求駕駛員盡可能地集中注意力。截止2016年3月28日,共采集了72小時的行駛數據。
網絡結構
我們訓練網絡的權重值,使得網絡模型輸出的方向控制命令與人工駕駛或者調整后的控制命令的均方誤差最小。圖5是網絡的結構圖,一共包括九層,包括一個歸一化層,五個卷積層和三個全連接層。輸入圖像被映射到YUV平面,然后傳入網絡。
圖5 CNN結構。這個網絡有大約2700萬個連接和25萬個參數
網絡的第一層對輸入圖像做歸一化。歸一化層是硬編碼的,在學習過程中不會變化。在網絡模型中進行歸一化可以使得歸一化過程根據網絡結構調整,而且能用GPU加速處理過程。
卷積層是用來提取特征的,它是根據一些列參數實驗的結果憑經驗選擇的。然后我們對前三個卷積層使用了strided卷積,其中stride是2x2,卷積核是5x5,后兩層選用了unstrided卷積,卷積核是3x3。
在五層卷積之后又接了三個全連接層,最后輸出一個控制數字,即轉彎半徑的倒數。全連接層的設計意圖是作為方向控制器,但是我們發現用端到端的方式訓練系統,網絡模型的特征提取器和控制器這兩部分很難明確地區分開來。
訓練細節
數據選擇
訓練神經網絡的第一步就是選擇使用視頻的哪些幀。我們采集的數據標記了道路類型、天氣條件、駕駛員行為(保持車道行駛、更換車道、轉彎等等)等標簽。用CNN訓練保持車道的行駛,我們就只挑選駕駛員保持同一車道行駛的數據,拋棄剩余部分。然后我們以10FPS對視頻降采樣,因為用高采樣率得到的圖像相似度非常高,并不能帶來很多有用的信息。為了消除直線行駛的偏置,很大一部分訓練圖像包含了有弧度的道路。
數據補充
選定最終的圖像集之后,我們人工添加了一些偏移和旋轉來補充數據,教會網絡如何修復較差的姿勢和視角。調整的幅度按照正態分布隨機選取。分布的均值為零,標準差是駕駛員操作數據的標準差的兩倍。人工補充的數據隨著幅度的增加確實會引入一些不理想的因素(正如我們之前提到的)。
仿真
在上路測試訓練得到的CNN之前,我們首先仿真測試網絡的性能。圖6是簡化的仿真系統,圖7是交互式仿真器的界面截圖。

圖6 駕駛仿真器的示意圖
仿真器采用預先用數據采集車的前置攝像機錄制的視頻數據,然后根據圖像用CNN模型預測操控命令。這些錄制視頻的時間軸與駕駛員操控命令的時間軸保持一致。
由于駕駛員不總是將車輛保持在車道的中心,我們必須人工校準車道的中心,因為它與模擬器所采用的視頻的每一幀都關聯。我們把這個姿態稱為“對照數據”。
模擬器對原始圖像做了變形來模仿車輛偏離對照姿態。請注意,這種變形也包括了駕駛員行駛路徑與對照數據之間的任何差異。圖像變形的方法在前幾節已經介紹過了。
模擬器讀取保存的測試視頻,以及與拍攝視頻同步記錄的方向控制命令。該模擬器發送所選擇的測試視頻的第一幀,針對任何偏離對照數據的情況做修正,然后輸入到訓練好的CNN模型,模型輸出一條操控指令。模型輸出的命令與存儲的駕駛員操控命令一起被送入車輛的動態模型,更新仿真車輛的位置和方向。
圖7 模擬器交互模式的截圖。右側是操縱性能的文字描述評價。左側綠色區域是由于視角變換導致的不可見區域。地平線下方明亮的矩形區域就是傳入CNN模型的圖像
接著,模擬器調整測試視頻的下一幀圖像,使得所呈現的圖像如同是CNN模型輸出的操縱命令所控制的結果。新的圖像又被傳回CNN模型,重復處理過程。
模擬器記錄車輛偏離距離(車輛偏離車道中心的距離),偏航角度和仿真車輛的行駛距離。當偏離中心的距離超過一米時,就會觸發虛擬人的干預,仿真車輛的位置和方向就會重置成原視頻對應幀的對照數據。
評測
我們分兩步來評測我們的網絡模型:首先是仿真測試,接著是上路測試。
在仿真階段,我們使用了在新澤西州蒙茅斯縣錄制的視頻數據,總共大約持續三個小時,行駛了100英里。測試數據在各種燈光和天氣條件下采集,包括了高速公路、普通公路和居民區道路。
我們通過計算虛擬人干預車輛行駛的次數來估計網絡模型能夠自動駕駛汽車的時間段占比。我們假設在現實情況下發生一次人工干預需要六秒:這個時間包括駕駛員接管操縱車輛、糾正車輛位置、重新進入自動駕駛模式。我們是這樣計算自動駕駛比例的,把人工干預的次數乘以六秒,除以總的模擬時間,然后與1相減:
因此,如果觸發了100次干預耗時600秒,自動駕駛的比例為
上路測試
當網絡模型訓練得到較好的性能之后,我們把它加載到測試車輛的DRIVE PX上,進行上路測試。我們用車輛自動駕駛的時間比例來衡量性能。這個時間不包括變換車道和轉彎。以我們位于霍姆德爾的辦公室到大西洋高地的一趟普通行程為例,大約有98%的時間保持自動駕駛。我們也在花園州際公路(一條有坡度的多車道高速公路)上完成了10英里的自動駕駛。
視頻:https://youtu.be/NJU9ULQUwng(自備云梯)
CNN模型內部狀態可視化
圖8和圖9分別展示了兩張不同輸入圖片在前兩層網絡的激活狀態,分別是在土路上和森林里。在土路的例子中,特征圖片清晰地勾畫出路的邊界,而在森林的例子中夾雜了大量噪音,CNN模型從圖中找不到有用的信息
這表明CNN自動學會了識別有用的道路特征,只提供人工操控方向的角度作為訓練信號。我們從未直接訓練模型來識別道路邊界。
圖8 CNN模型眼中的土路。上方:由攝像機輸入CNN模型的圖像。左下:第一層特征映射的激活狀態。右下:第二層特征映射的激活狀態。
圖9 沒有路的圖片示例。前兩層特征映射幾乎都是噪聲,CNN模型無法從圖片中識別出有用的特征。
總結
我們的經驗表明,神經網絡能學習完整的保持車道駕駛的任務,而不需要人工將任務分解為道路和車道檢測、語義抽象、道路規劃和控制。從不到一百小時的少量訓練數據就足以訓練在各種條件下操控車輛,比如在高速公路、普通公路和居民區道路,以及晴天、多云和雨天等天氣狀況。CNN模型可以從非常稀疏的訓練信號(只有方向控制命令)中學到有意義的道路特征。
例如,系統不需要標注數據就學會了識別道路邊界。
還需要做大量工作來提升網絡模型的健壯性,尋找驗證系統健壯性的方法,以及提升網絡內部狀態可視化的程度。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:端到端深度學習在自動駕駛汽車上的應用
本文網址:http://www.guhuozai8.cn/html/news/10515520055.html