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