在本文中,作者設計和實現了一種系統的測試工具——DeepTest,并對其進行了評估。DeepTest是用于自動檢測可能導致致命事故的、由DNN驅動的系統的錯誤行為。它利用使現實駕駛條件發生變化的因素,例如雨、霧、光照等來自動生成測試用例。DeepTest通過生成能最大化激活神經元數量的測試輸入,系統地探索DNN邏輯的不同部分。DeepTest在各種現實駕駛條件中(例如模糊、雨、霧等)找到了數千種錯誤行為,其中許多駕駛條件能使在Udacity自動駕駛汽車挑戰賽中表現良好的三個DNN模型產生潛在的致命事故。
在概念層面上,在基于DNN的軟件中產生的錯誤行為(corner-case behaviors)就類似于傳統軟件中的邏輯錯誤。與傳統軟件開發中的bug檢測和周期修復類似,一旦檢測到DNN的錯誤行為,可以通過將引起錯誤的輸入添加到訓練數據集,進一步改變模型結構/參數,從而使錯誤失效。然而,這是一個極具挑戰性的問題。
我們使用傳統軟件的經驗表明,很難只通過使用手動測試用例構建出魯棒的“安全至上“的系統。傳統軟件和基于DNN的軟件的內部結構存在著根本性的差異。例如,傳統的軟件程序邏輯是由軟件開發人員手工編寫的,而基于DNN的軟件是自動從大量的數據中學習并形成自己的邏輯。此外,傳統軟件程序的邏輯是用控制流語句來表示的,而DNN則以神經元之間的連接的權重以及非線性的激活函數來形成邏輯。這些差異使得針對基于DNN的軟件的自動化測試充滿挑戰。
在本文中,作者討論了這些問題并設計了一套系統的測試方法,用于自動檢測自動駕駛汽車的DNN算法的錯誤行為。主要內容包括:
1. 作者利用了神經元覆蓋率這一概念,系統地探索了DNN邏輯的不同部分。作者用實驗證明,神經元覆蓋率的變化與自動駕駛汽車執行操作(如轉向)的變化有統計學相關性。因此,神經元覆蓋率可以作為一種指導機制,系統地探索不同類型的汽車行為,并發現其中的錯誤行為。
2.通過模擬不同現實駕駛條件的圖像變換,比如改變對比度/亮度,攝像頭的旋轉等,可以激活自動駕駛汽車DNN中不同神經元。通過這些圖像變換方法的組合,神經元覆蓋率相比手動測試方法所能達到的覆蓋率提高了一倍。
3. 測試DNN時,當輸入圖像是某些特定類型的變換時,其輸出之間具有一定的相對關系,故而作者通過定義變形關系設計了一種輸出評價準則(例如,汽車在不同的照明條件下應該表現相似),以此自動檢測錯誤行為。
圖1 幾組DeepTest發現的錯誤示例
背景
本文中,自動駕駛車輛的關鍵系統是基于DNN的感知模塊。如圖2所示,DNN算法的輸入來自于不同的環境感知傳感器,如攝像頭、LiDAR和紅外傳感器等;DNN算法的輸出則是車輛的控制信號,如轉向、制動等。本文所探討的端到端的自動駕駛系統中的DNN算法是以攝像頭為輸入,轉向角為輸出的。
圖2 一個典型的基于DNN的自動駕駛汽車架構
方法
為了開發基于DNN的自動駕駛汽車的自動測試技術,作者提出下列問題:
如何系統地探索自動駕駛汽車DNN的輸入輸出空間?
如何結合實際輸入實現自動化的探索?
如何優化這個探索過程?
如何創建一個測試準則,使其不需要詳細的手動設置,便可自動檢測錯誤行為?
3.1 使用神經元覆蓋率的系統測試
自動駕駛汽車的輸入輸出空間(即一個系統的輸入和輸出的所有可能的組合)非常復雜,想要窮舉這些組合是不可能的。因此,作者設計了一種系統的方法將空間劃分為不同的等價類(equivalence classes),并通過從每個等價類中選取一個樣本來嘗試覆蓋所有等價類。在本文中,作者采用神經元覆蓋率來劃分輸入空間,并假設所有具有相似神經元覆蓋率的輸入都屬于相同的等價類。
神經元覆蓋率是由Pei等人提出的,最初用于測試多個相似的DNN的差異。它被定義為在給定輸入下,被激活的特定神經元數目與DNN中神經元的總數的比值。
與傳統軟件的以代碼覆蓋率為導向的測試工具類似,DeepTest試圖生成能最大限度地增加被測DNN的神經元覆蓋率的輸入。
3.2 增加合成圖像的覆蓋率
某些輸入不太可能出現在現實世界中,即使這些輸入可能引發出錯誤行為,但它們仍是沒有意義的。所以,生成任意的輸入來最大化神經元覆蓋率并不是有效的手段。因此,DeepTest專注于通過在種子圖像(seed image)上進行圖像變換來生成現實的合成現象,從而模擬不同的現實世界現象,例如攝像頭鏡頭失真,物體移動,不同的天氣條件等。為此,本文研究了九種不同的現實的圖像變換,包括改變亮度,對比度,平移,縮放,水平剪切,旋轉,模糊,霧氣效果和雨水效果。這些變換可以分為三組:線性變換,仿射變換,和卷積變換。實驗結果表明,對所有被測DNN來說,這些變換都會顯著增加神經元覆蓋率。其中:
線性變換包括改變亮度和對比度
仿射變換包括平移,縮放,水平剪切和旋轉
卷積變換包括模糊和增加霧/雨效應
3.3 通過組合變換增加神經元覆蓋率
既然單個圖像變換能增加神經元覆蓋率,那是否可以組合它們以進一步增加神經元覆蓋率?作者的研究結果表明,不同的圖像變換會激活不同的神經元,故而它們也可以堆疊在一起以進一步增加神經元覆蓋率。然而,不同變換的所有可能組合形成的狀態空間太大,因無法徹底搜索。為此,作者提出了以神經元覆蓋率為導向的貪婪搜索算法,它可以有效地找到圖像變換組合,從而獲得更高的覆蓋率(算法如圖3所示)。
圖3 DeepTest所使用的貪婪算法偽代碼
該算法將一組種子圖像I,變換列表T及其對應參數作為輸入。該算法背后的關鍵思想是跟蹤成功增加給定圖像的神經元覆蓋率的變換,并在根據該給定圖像生成更多合成圖像時優先考慮這些變換。整個算法的搜索方式遵循深度優先的原則。
3.4 用變形關系創造一種輸出評價準則
在測試基于DNN的復雜系統(如自動駕駛汽車)時面臨的主要挑戰之一是如何定義對測試輸出的評價準則,以便對系統的輸出做出評價。建立這樣的評價準則是具有挑戰性的,因為它在本質上涉及了對人類駕駛員的邏輯重建。
為了規避這個問題,作者利用了不同系統輸出之間的變形關系(metamorphic relations)。這里的關鍵是,雖然無法孤立地為每個變換后的圖像定義其所對應的自動駕駛汽車的正確執行操作,但可以確定該汽車的輸入是某些特定類型的變換時,其輸出之間具有一定的相對關系。例如,相比以原始圖像作為輸入圖像,當自動駕駛汽車的輸入是經過光照天氣條件改變、模糊等變換后的合成圖像時,輸出的轉向角度不應該發生明顯的變化。
即如果DNN模型基于原始輸入圖像的輸出轉向角為,而通過將上述變換T應用于而生成的新合成圖像的對應輸出是轉向角,則和應該是相同的。
但由于汽車可以安全地容許小的執行操作變化(譯者注:轉向15.0度和轉向14.8度對汽車來說差別并不大),因此對于給定的圖像通常沒有特定的正確轉向角度。在嚴格地確定變形關系(可能導致許多假陽性事件即誤報事件)和松弛地確定變形關系(可能導致許多假陰性事件即漏報事件)之間需要適當折衷。 在本文中,作者使用了下面定義的變形關系:
觀察DNN模型對原始圖像預測的輸出集合,該集合和對這些圖像的手動標簽集合之間存在誤差。通常使用均方差(MSE)來度量這樣的誤差,
利用這個值,作者重新定義了一種新的變形關系:
上述公式中,作為輸入的合成圖像產生的誤差應該在由原始圖像產生的均方差的λ倍的范圍內。在這里,λ是一個參數,可以在假陽性和假陰性之間取得平衡。
應用
作者將DeepTest應用于三個基于DNN的端到端自動駕駛算法的測試中,這些DNN模型(如圖4所示)在Udacity自動駕駛挑戰賽中都獲得了很好的成績:Rambo(第二名),Chauffeur(第三名)和Epoch(第六名)。
圖4 實驗模型相關信息
如圖4所示,在本文實驗中,轉向角度被定義為車輛的前進方向和轉向車輪(通常為前輪)的前進方向之間的夾角。本文中使用的Udacity自動駕駛車挑戰賽數據集最大轉向角度為+/- 25度。
在實驗中,作者利用了七種不同類型的簡單圖像變換:平移,縮放,水平剪切,旋轉,對比度調整,亮度調整和模糊。作者使用OpenCV來實現這些變換。每個變換使用了10個參數。
結果
5.1 不同的輸入輸出會產生不同的神經元覆蓋率嗎?
對于每個輸入圖像,作者測量在實驗模型上的相應輸出和神經元覆蓋率。
轉向角度:轉向角度是一個連續變量,作者檢查神經元覆蓋率和轉向角度之間的Spearman等級相關性。這是計算兩個變量之間單調關聯性的非參數度量值。結果表明,轉向角度與神經元覆蓋率之間存在著正相關性。
轉向方向:為了測量神經元覆蓋率與轉向方向之間的關聯,作者檢查在右轉向和左轉向之間神經元覆蓋率是否發生變化。 作者使用Wilcoxon非參數測試,因為轉向方向只能有兩個值(左和右)。作者的研究結果表明,對于實驗中三種DNN模型神經元覆蓋率都隨著轉向方向的不同而變化,且都有統計顯著性。
5.2 不同類型的圖像變換是否會激活不同神經元?
作者從測試集中隨機挑選1000個輸入圖像,并使用了七種不同的變換(模糊,亮度,對比度,旋轉,縮放,剪切和平移),最終一共生成70,000個新合成圖像。通過使用這些合成圖像作為輸入來運行所有模型,并記錄每個輸入所激活的神經元,然后比較由同一原始圖像生成的不同合成圖像激活的神經元。
結果表明,除了Chauffeur LSTM以外,對于其他模型,不同的變換都會激活不同的神經元。LSTM是一種特殊類型的RNN架構,它能保持狀態不受之前的輸入影響,因此增加LSTM模型的神經元覆蓋率要比其他模型難得多。
5.3 通過組合不同的圖像變換,神經元覆蓋率能否進一步增加?
作者通過測量在兩種不同設置中的神經元覆蓋率來研究這個問題:
應用一組變換
通過使用貪婪算法組合變換
實驗結果表明,通過系統地結合不同的圖像變換,可以使神經元覆蓋率提高一倍。
5.4用合成圖像重新訓練DNN能提高準確度嗎?
作者用DeepTest生成的一些合成圖像重新訓練DNN,觀察它們是否有助于使DNN更加健壯。實驗使用了經典數據集中的圖像,并通過添加雨霧效果創建了它們的合成版本。 作者對Epoch模型進行了再訓練,重新訓練模型的準確度相比原始模型有著顯著提高。
局限性與結論
完整性:DeepTest通過在種子圖像上應用不同的圖像變換來生成合成圖像,但是文中所運用的這些變換方式尚不能覆蓋所有現實駕駛條件中,對攝像頭所產生的影響因素。
真實性:盡管作者專門設計了圖像變換使得合成圖像盡量接近現實,但由于存在大量不可預知的因素,例如太陽的位置,雨滴的角度和大小,在現實中重現合成圖像是不可能的。但是,隨著圖像處理技術的發展,生成的圖像將能更接近現實情況。
執行操作局限性:除了轉向之外,自動駕駛車輛的完整DNN算法還必須能控制制動和加速。因為作者的測試模型有局限性,因而僅對轉向進行了測試。但對支持輸出其他控制信號的模型,作者的技術仍具有一定適用性。
-
自動駕駛汽車
+關注
關注
4文章
376瀏覽量
40815 -
dnn
+關注
關注
0文章
59瀏覽量
9041
原文標題:DeepTest | 一種用于測試自動駕駛深度學習的工具
文章出處:【微信號:IV_Technology,微信公眾號:智車科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論