吳 昊 王 浩 蘇 醒 李明昊 許封元 仲 盛
(計(jì)算機(jī)軟件新技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室(南京大學(xué)) 南京 210023)
車(chē)聯(lián)網(wǎng)領(lǐng)域隨著物聯(lián)網(wǎng)與交通運(yùn)輸領(lǐng)域的深度融合蓬勃發(fā)展.深度學(xué)習(xí)的進(jìn)步使車(chē)聯(lián)網(wǎng)領(lǐng)域的自動(dòng)駕駛技術(shù)得到了突破性的發(fā)展,并有演化成一場(chǎng)新的汽車(chē)工業(yè)革命的趨勢(shì)[1-4].無(wú)論是特斯拉、蔚來(lái)等新型車(chē)企,還是福特、寶馬等傳統(tǒng)車(chē)企都陸續(xù)拿到了自動(dòng)駕駛路測(cè)牌照,著眼于研發(fā)深度自動(dòng)駕駛技術(shù).迅猛發(fā)展的深度自動(dòng)駕駛技術(shù)正逐漸成為車(chē)聯(lián)網(wǎng)領(lǐng)域的主要支撐技術(shù)之一,正在改變未來(lái)的交通和出行方式.
視覺(jué)感知模塊是自動(dòng)駕駛進(jìn)行環(huán)境感知的重要組件,也是車(chē)輛進(jìn)行智能決策的重要基礎(chǔ)[5].自動(dòng)駕駛領(lǐng)域的重要企業(yè)特斯拉更是將視覺(jué)感知模塊作為其駕駛系統(tǒng)的唯一環(huán)境感知模塊.因此,自動(dòng)駕駛系統(tǒng)視覺(jué)感知模塊的安全性是自動(dòng)駕駛系統(tǒng)正常工作的關(guān)鍵.雖然視覺(jué)感知模塊的表現(xiàn)隨著深度視覺(jué)技術(shù)的發(fā)展穩(wěn)步提升,但是其從駕駛環(huán)境中感知到的特征語(yǔ)義難被理解、決策過(guò)程無(wú)法解釋.如何對(duì)自動(dòng)駕駛系統(tǒng)視覺(jué)感知模塊的安全性進(jìn)行充分測(cè)試,已經(jīng)成了一個(gè)迫在眉睫、亟待解決的問(wèn)題[6].
誠(chéng)然,圍繞深度學(xué)習(xí)可解釋性方面的工作有了一定的突破,但是距離分析清楚自動(dòng)駕駛視覺(jué)感知模塊的錯(cuò)誤傳導(dǎo)機(jī)理還有較遠(yuǎn)的距離.近年來(lái),神經(jīng)網(wǎng)絡(luò)的黑盒攻擊方法[7-8]的進(jìn)步,啟發(fā)大家提出了一些基于場(chǎng)景搜索的自動(dòng)駕駛視覺(jué)感知模塊安全性測(cè)試技術(shù).這些場(chǎng)景驅(qū)動(dòng)的測(cè)試方法利用黑盒測(cè)試的思路,為駕駛系統(tǒng)提供盡可能多的駕駛場(chǎng)景數(shù)據(jù),觀察自動(dòng)駕駛系統(tǒng)的輸出與測(cè)試預(yù)言(test oracle)之間的差異,進(jìn)而分析自動(dòng)駕駛系統(tǒng)視覺(jué)感知模塊的安全性.
我們認(rèn)為場(chǎng)景驅(qū)動(dòng)的黑盒安全測(cè)試是在弄清深度學(xué)習(xí)可解釋性之前,對(duì)于視覺(jué)感知模塊安全性最為重要的測(cè)試手段.但目前對(duì)于將生成場(chǎng)景應(yīng)用于視覺(jué)感知模塊的測(cè)試,仍面臨著3個(gè)挑戰(zhàn):
1) 平衡場(chǎng)景描述的真實(shí)性與豐富度.場(chǎng)景生成規(guī)則是場(chǎng)景驅(qū)動(dòng)的測(cè)試系統(tǒng)的重要基礎(chǔ).保守的規(guī)則設(shè)計(jì)會(huì)造成場(chǎng)景覆蓋能力不足;而過(guò)于靈活的規(guī)則設(shè)計(jì)又會(huì)破壞物體相對(duì)關(guān)系,傷害場(chǎng)景真實(shí)性.探究一個(gè)能同時(shí)兼顧場(chǎng)景真實(shí)性和豐富度[9-10]的場(chǎng)景生成規(guī)則極具挑戰(zhàn)性.
2) 保證搜索算法的高效性和穩(wěn)定性.單個(gè)物體的屬性(如顏色、形狀)與物體間的相互關(guān)系(如位置、方向)組合十分復(fù)雜.為了能夠高效穩(wěn)定地測(cè)試系統(tǒng)安全性缺陷,需要:①動(dòng)態(tài)地針對(duì)不同自動(dòng)駕駛系統(tǒng)視覺(jué)感知模塊產(chǎn)生個(gè)性化的場(chǎng)景搜索方案,以保證搜索過(guò)程的步驟較少;②盡可能縮短單步搜索的時(shí)間.
3) 解釋測(cè)試結(jié)果的精確性與自動(dòng)化.以往測(cè)試系統(tǒng)需要人工介入分析缺陷原因.若想做到自動(dòng)化地分析測(cè)試結(jié)果,系統(tǒng)需要能夠精細(xì)地操縱場(chǎng)景中每個(gè)元素來(lái)定位系統(tǒng)安全性缺陷的成因.
圍繞場(chǎng)景驅(qū)動(dòng)的視覺(jué)感知模塊的黑盒安全測(cè)試,學(xué)術(shù)界已經(jīng)有了初步探索.在場(chǎng)景測(cè)試方法當(dāng)中,基于實(shí)時(shí)渲染引擎的一系列測(cè)試方法由于其場(chǎng)景生成的靈活性受到了廣泛關(guān)注.最初,基于實(shí)時(shí)渲染引擎的場(chǎng)景驅(qū)動(dòng)安全測(cè)試系統(tǒng)采用預(yù)定場(chǎng)景的測(cè)試思路.其中的代表性工作是CARLA 0.8.X[11],該工作使用Unreal Engine創(chuàng)建用以測(cè)試系統(tǒng)的固定駕駛線路.接著,Scenic[12]提出了一種場(chǎng)景生成的編程接口,以使此類(lèi)測(cè)試程序更加系統(tǒng)化,奠定了靜態(tài)的基于場(chǎng)景測(cè)試的基礎(chǔ).然而,其模擬環(huán)境較為固定,缺乏動(dòng)態(tài)行為,同時(shí)對(duì)于非實(shí)體對(duì)象(如天氣)的描述缺少自由度.基于實(shí)時(shí)渲染引擎的場(chǎng)景驅(qū)動(dòng)的安全測(cè)試的最新工作,Paracosm[13]在Scenic的基礎(chǔ)上,提出了基于隨機(jī)搜索的動(dòng)態(tài)場(chǎng)景生成方法來(lái)進(jìn)行視覺(jué)感知模塊的安全測(cè)試.由于該動(dòng)態(tài)場(chǎng)景搜索方法相對(duì)簡(jiǎn)單,對(duì)待測(cè)試視覺(jué)感知模塊的適應(yīng)性不足,因此,安全問(wèn)題的搜索過(guò)程不夠高效.本文在前述工作的基礎(chǔ)上,提出了一種基于結(jié)果反饋的動(dòng)態(tài)場(chǎng)景搜索算法,從而提高了自動(dòng)駕駛系統(tǒng)中視覺(jué)感知模塊的安全問(wèn)題測(cè)試效率.更多細(xì)節(jié)將在1.5節(jié)詳細(xì)介紹.
本文工作中,類(lèi)比深度學(xué)習(xí)黑盒攻擊策略,借助實(shí)時(shí)渲染引擎的開(kāi)放度,設(shè)計(jì)并提出了一套可靠且具有可解釋性的自動(dòng)駕駛視覺(jué)感知模塊安全性測(cè)試系統(tǒng).本文主要的貢獻(xiàn)有3個(gè)方面:
1) 針對(duì)車(chē)聯(lián)網(wǎng)場(chǎng)景下自動(dòng)駕駛系統(tǒng)感知模塊的安全問(wèn)題,提出并設(shè)計(jì)了一套場(chǎng)景驅(qū)動(dòng)的黑盒安全性測(cè)試系統(tǒng).與現(xiàn)有工作相比,該系統(tǒng)引入基于結(jié)果反饋的動(dòng)態(tài)化測(cè)試策略,通過(guò)自適應(yīng)機(jī)制在循環(huán)中不斷調(diào)整輸入數(shù)據(jù)的生成,實(shí)現(xiàn)對(duì)感知模塊高效、穩(wěn)定的非入侵式安全測(cè)試.
2) 面向自動(dòng)駕駛視覺(jué)感知模塊的動(dòng)態(tài)測(cè)試新需求,設(shè)計(jì)了細(xì)粒度場(chǎng)景描述方法、適應(yīng)性動(dòng)態(tài)搜索算法和自動(dòng)化系統(tǒng)缺陷分析的動(dòng)態(tài)測(cè)試技術(shù),從測(cè)試粒度、反饋?zhàn)赃m和可解釋性3個(gè)方面對(duì)提出的黑盒安全性測(cè)試系統(tǒng)進(jìn)行了優(yōu)化.
3) 以2個(gè)具有代表性的開(kāi)源自動(dòng)駕駛系統(tǒng)為對(duì)象開(kāi)展了測(cè)試系統(tǒng)的驗(yàn)證,分別動(dòng)態(tài)生成了3 000個(gè)場(chǎng)景,并各自找到了1 939個(gè)和1 671個(gè)故障場(chǎng)景,平均每16.86 s可發(fā)現(xiàn)一個(gè)故障場(chǎng)景.實(shí)驗(yàn)表明,得益于動(dòng)態(tài)自適的場(chǎng)景搜索方法,本文工作的安全問(wèn)題發(fā)現(xiàn)率是現(xiàn)有基于實(shí)時(shí)渲染引擎的場(chǎng)景驅(qū)動(dòng)的動(dòng)態(tài)測(cè)試方向中最好工作的1.4倍.
神經(jīng)元覆蓋是類(lèi)比傳統(tǒng)程序的分支覆蓋而設(shè)計(jì)的.此類(lèi)工作定義當(dāng)測(cè)試輸入經(jīng)過(guò)神經(jīng)元使神經(jīng)元輸出滿足某種狀態(tài)時(shí),該神經(jīng)元?jiǎng)t稱被測(cè)試樣例覆蓋(激活)了.此類(lèi)工作以最大化神經(jīng)元覆蓋為優(yōu)化目標(biāo),來(lái)尋找輸入樣例.自DeepXplore[14]引入神經(jīng)元覆蓋的概念并成功應(yīng)用于基于視覺(jué)的深度自動(dòng)駕駛領(lǐng)域后,已有大量關(guān)于神經(jīng)元覆蓋的工作出現(xiàn),提出了各式各樣的覆蓋標(biāo)準(zhǔn),并成功使傳統(tǒng)軟件測(cè)試方法如蛻變測(cè)試、模糊測(cè)試、符號(hào)測(cè)試等遷移到深度學(xué)習(xí)測(cè)試任務(wù)中[15-22].然而,這種類(lèi)比屬于一種機(jī)械類(lèi)比,神經(jīng)元輸出值的狀態(tài)與傳統(tǒng)軟件測(cè)試中的分支是完全不同的概念,因而這種類(lèi)比方法的有效性始終受到人們的質(zhì)疑[23].并且,基于神經(jīng)元覆蓋的設(shè)計(jì)也難以給出基于語(yǔ)義的測(cè)試樣例故障原因,不利于自動(dòng)駕駛系統(tǒng)安全性的進(jìn)一步提升.
Avfi[24]使用軟件故障注入模擬自動(dòng)駕駛系統(tǒng)的硬件故障,以測(cè)試系統(tǒng)的容錯(cuò)性.隨后DriveFI[25]使用Apollo和DriveAV在CARLA模擬器和DriveSim上進(jìn)行實(shí)驗(yàn),利用貝葉斯網(wǎng)絡(luò)模擬自動(dòng)駕駛系統(tǒng)加速錯(cuò)誤注入后的驗(yàn)證過(guò)程,能最大限度地挖掘出影響自動(dòng)駕駛系統(tǒng)的故障.Kayotee[26]在Avfi和DriveFI工作的基礎(chǔ)上,添加了描述誤差傳播的能力,并且能直接注入CPU和GPU的位翻轉(zhuǎn).這些工作是從容錯(cuò)性的角度考察自動(dòng)駕駛系統(tǒng)的特性的,而且實(shí)際考察的是自動(dòng)駕駛系統(tǒng)的硬件故障.這類(lèi)工作與本文工作討論的場(chǎng)景和問(wèn)題是正交的,本文工作研究的是自動(dòng)駕駛系統(tǒng)軟件,特別是其視覺(jué)感知模塊的安全性.
基于搜索的自動(dòng)駕駛安全性測(cè)試的核心思路是在Avfi和DriveFI工作的基礎(chǔ)上:給定待測(cè)自動(dòng)駕駛系統(tǒng)的輸入空間,定義待測(cè)系統(tǒng)的特殊輸入狀態(tài),通過(guò)在輸入空間搜索,確定哪些輸入會(huì)造成系統(tǒng)輸出特殊狀態(tài),從而實(shí)現(xiàn)對(duì)輸入空間的劃分.Abdessalem等人利用搜索算法在輸入空間給輸入打上標(biāo)簽,同時(shí)利用標(biāo)簽數(shù)據(jù)訓(xùn)練分類(lèi)器,對(duì)輸入空間進(jìn)行了決策邊界的劃分[27-28].隨后,他把對(duì)少體問(wèn)題的狀態(tài)空間的搜索過(guò)程擴(kuò)展到多體問(wèn)題狀態(tài)空間中的搜索,提出了FITEST搜索測(cè)試方法[29].這種方法的局限性在于,分類(lèi)器的引入隱含假定了輸入空間是局部連續(xù)線性的,例如使用決策樹(shù)進(jìn)行劃分時(shí),潛在認(rèn)為2個(gè)正例狀態(tài)之間也是正例狀態(tài)[21].對(duì)于 AEB系統(tǒng)這種問(wèn)題定義在線性域下的系統(tǒng),分類(lèi)器的設(shè)計(jì)是合理的,但是對(duì)于具有高度非線性系統(tǒng)的深度學(xué)習(xí)系統(tǒng),這樣的方法顯然是不適用的.除此之外,Wicker利用兩者博弈的想法[30],通過(guò)操縱圖片上的像素點(diǎn),利用蒙特卡洛樹(shù)搜索博弈的漸近最優(yōu)策略,來(lái)尋找造成模型出錯(cuò)的反例.這種搜索策略的搜索空間是像素級(jí)的,搜索結(jié)果不具備在現(xiàn)實(shí)中的真實(shí)性.
基于真實(shí)數(shù)據(jù)的測(cè)試方法主要分為2種:1)通過(guò)收集大量的用戶駕駛數(shù)據(jù)來(lái)改善其自動(dòng)駕駛系統(tǒng)的質(zhì)量,如Tesla[31];2)實(shí)景測(cè)試[32],在真實(shí)的公路環(huán)境下使用原型車(chē)輛進(jìn)行測(cè)試,考慮到安全因素,該方法的測(cè)試條件比較嚴(yán)格[33].這些方法除數(shù)據(jù)收集的成本較高外,收集到的數(shù)據(jù)分布也十分有限,這使得測(cè)試系統(tǒng)無(wú)法檢測(cè)出自動(dòng)駕駛系統(tǒng)在新環(huán)境中的安全性;同時(shí)過(guò)度收集的駕駛數(shù)據(jù)也存在侵犯用戶隱私的問(wèn)題.
基于生成數(shù)據(jù)的測(cè)試方法主要分為2種:1)基于生成式對(duì)抗網(wǎng)絡(luò)(generative adversarial network, GAN)[34-39].在DeepRoad[34]中,考慮將正常天氣的道路場(chǎng)景變換到雨雪天氣下,從而測(cè)試系統(tǒng)在雨雪天氣下的安全性,但其生成方法的場(chǎng)景豐富度存在不足,也無(wú)法實(shí)現(xiàn)場(chǎng)景內(nèi)容的靈活控制.2)基于實(shí)時(shí)渲染引擎創(chuàng)建測(cè)試場(chǎng)景.Richer利用游戲GTA-V來(lái)創(chuàng)建自動(dòng)駕駛數(shù)據(jù)集[40-41],Sythia[42]使用 Unity引擎合成數(shù)據(jù)集,CARLA 0.8.X[11]使用Unreal Engine創(chuàng)建用于測(cè)試系統(tǒng)的駕駛線路.這些工作的問(wèn)題在于,測(cè)試的場(chǎng)景是預(yù)先定義好的,不能或只能很有限地對(duì)場(chǎng)景進(jìn)行調(diào)整,這樣的工作沒(méi)有充分利用實(shí)時(shí)渲染可以動(dòng)態(tài)調(diào)整場(chǎng)景的特點(diǎn).特別是,使用固定的駕駛場(chǎng)景進(jìn)行測(cè)試,很難對(duì)所有可能的場(chǎng)景進(jìn)行覆蓋.
Scenic[12]設(shè)計(jì)了一種場(chǎng)景描述語(yǔ)言,可以根據(jù)預(yù)定義規(guī)則生成一些場(chǎng)景用于自動(dòng)駕駛視覺(jué)感知模塊的安全性測(cè)試.這種描述語(yǔ)言盡管有很高的自由度,但對(duì)場(chǎng)景中非實(shí)體的對(duì)象刻畫(huà),如天氣和太陽(yáng),比較困難,并且難以應(yīng)用到場(chǎng)景變換的情況.最新的工作Paracosm[13]提出了一種可編程的自動(dòng)駕駛測(cè)試場(chǎng)景生成方法.該工作通過(guò)將場(chǎng)景中的物體和環(huán)境參數(shù)化并提供了一套編程接口用于測(cè)試場(chǎng)景生成,該方法基于隨機(jī)搜索的方式進(jìn)行場(chǎng)景生成并對(duì)自動(dòng)駕駛中的視覺(jué)感知模塊進(jìn)行測(cè)試.但是考慮到可搜索的參數(shù)空間規(guī)模十分巨大,因此,很難通過(guò)隨機(jī)搜索高效地找到感知模塊的安全問(wèn)題.對(duì)此我們?cè)?.1節(jié)進(jìn)行了詳細(xì)的比較和評(píng)估.
本文工作延續(xù)了基于生成數(shù)據(jù)的測(cè)試方法的研究思路,基于實(shí)時(shí)渲染引擎生成真實(shí)度高的場(chǎng)景來(lái)進(jìn)行系統(tǒng)的安全性測(cè)試.相比于以往的工作,我們有2個(gè)顯著改進(jìn):1)采用了更加靈活豐富的場(chǎng)景描述方式,相比于Scenic方法,本文工作增添了對(duì)非實(shí)體對(duì)象的描述,使自動(dòng)駕駛視覺(jué)感知模塊在不同天氣下的安全性也得到充分測(cè)試.2)提出了一套適應(yīng)性場(chǎng)景搜索算法,相比于Paracosm方法,本文工作可以實(shí)現(xiàn)適應(yīng)性的動(dòng)態(tài)故障場(chǎng)景搜索,使得自動(dòng)駕駛視覺(jué)感知模塊的安全問(wèn)題發(fā)現(xiàn)效率有了顯著提升.
本節(jié)將介紹針對(duì)自動(dòng)駕駛視覺(jué)感知模塊的安全測(cè)試系統(tǒng)的具體設(shè)計(jì),包括:安全性測(cè)試系統(tǒng)的形式化描述、工作流程、場(chǎng)景描述方法、動(dòng)態(tài)場(chǎng)景生成器以及缺陷分析方法.表1中匯總了本文所用的一些關(guān)鍵變量.
Table 1 Summary of Notations in Our Approach
自動(dòng)駕駛系統(tǒng)本質(zhì)上是一個(gè)策略π,在給定環(huán)境信息序列O的情況下映射到控制指令A(yù)上,即π:O→A.其中輸入的環(huán)境信息包含相機(jī)圖像I和當(dāng)前車(chē)速V;輸出控制指令包含剎車(chē)、油門(mén)和轉(zhuǎn)向角,其中剎車(chē)可以被看成反向油門(mén),這樣輸出的控制指令可表示為(s,t).
(1)
來(lái)確定模型當(dāng)前輸出的動(dòng)作a是否會(huì)造成出錯(cuò).
定義場(chǎng)景搜索算法L∈L,其能夠基于一個(gè)預(yù)定的場(chǎng)景w,以令δ=1為目標(biāo),生成一個(gè)場(chǎng)景w′.對(duì)于一個(gè)確定的待測(cè)試模型m,把L(m,·)簡(jiǎn)記成Lm(·).可以使用算法L度量自動(dòng)駕駛系統(tǒng)m的故障率:
(2)
也可稱為模型m在算法L的δ測(cè)試表現(xiàn),Err(m;L;δ).
測(cè)試系統(tǒng)的架構(gòu)設(shè)計(jì)如圖1所示.為了能夠精確控制場(chǎng)景生成,本文設(shè)計(jì)了一組屬性配置方案,分別用于控制場(chǎng)景中單個(gè)對(duì)象的屬性和相互關(guān)系(2.3節(jié)).1)動(dòng)態(tài)場(chǎng)景生成器(2.4節(jié))首先讀取配置文件,得到場(chǎng)景中對(duì)象的分布函數(shù),并隨機(jī)采樣出一個(gè)初始場(chǎng)景描述.2)實(shí)時(shí)渲染引擎(如Unreal Engine)會(huì)根據(jù)場(chǎng)景描述渲染出一個(gè)可供系統(tǒng)測(cè)試的駕駛場(chǎng)景.3)待測(cè)試駕駛模型讀取場(chǎng)景.4)輸出決策至缺陷分析器進(jìn)行分析.5)缺陷分析器(2.5節(jié))會(huì)根據(jù)模型輸出生成約束,適應(yīng)性地指導(dǎo)動(dòng)態(tài)場(chǎng)景生成器產(chǎn)生新的場(chǎng)景描述,進(jìn)行下一輪測(cè)試.6)若缺陷分析器發(fā)現(xiàn)待測(cè)試系統(tǒng)的安全問(wèn)題,會(huì)自動(dòng)生成缺陷報(bào)告,以供后續(xù)的自動(dòng)駕駛系統(tǒng)改進(jìn).
Fig. 1 The workflow of the testing system圖1 測(cè)試系統(tǒng)的工作流程
為了實(shí)現(xiàn)豐富且真實(shí)的場(chǎng)景描述,我們?cè)O(shè)計(jì)了對(duì)象屬性描述文件和環(huán)境配置方案,用于描述實(shí)時(shí)渲染引擎所需要的資產(chǎn)(assets)屬性、屬性分布和添加新地圖;同時(shí)對(duì)場(chǎng)景中的全部對(duì)象進(jìn)行了參數(shù)化描述,以便進(jìn)行缺陷場(chǎng)景的自動(dòng)化搜索.
2.3.1 對(duì)象描述與環(huán)境配置
本系統(tǒng)將場(chǎng)景中出現(xiàn)的對(duì)象分為5類(lèi):
1) 環(huán)境E是用于場(chǎng)景生成的預(yù)設(shè)的基礎(chǔ)道路環(huán)境.一個(gè)道路環(huán)境應(yīng)該至少包含道路與路邊建筑.為了保證所描述場(chǎng)景的真實(shí)性如限定對(duì)象出現(xiàn)的合理位置,我們對(duì)環(huán)境進(jìn)行了區(qū)域劃分.一個(gè)典型的環(huán)境包含的區(qū)域有路外非駕駛區(qū)域、人行道、左右車(chē)道、十字路口.
2) 天氣W包括太陽(yáng)高度角、降雨量、霧濃度等,其值是連續(xù)變化的.一個(gè)基本天氣表示為在某個(gè)范圍內(nèi)的概率分布密度函數(shù).天氣之間可能會(huì)有相互作用,帶來(lái)聯(lián)合概率分布.因此,需要為單個(gè)場(chǎng)景設(shè)置多個(gè)天氣分布,并使用聯(lián)合概率分布函數(shù)進(jìn)行抽樣.
天氣分布與環(huán)境配置相關(guān)性很低,若考慮天氣分布與環(huán)境的相關(guān)性,則直接改變天氣分布更合理,例如干旱地區(qū)下大雨的概率比潮濕地區(qū)小很多;而車(chē)輛、行人和靜態(tài)物體的分布是依賴環(huán)境的.
3) 車(chē)輛V是環(huán)境中進(jìn)行碰撞模擬和重力模擬的載具,包括汽車(chē)、自行車(chē)、摩托車(chē),特別地,從現(xiàn)實(shí)角度考慮,自行車(chē)、摩托車(chē)會(huì)額外在載具上加入一個(gè)駕駛員.車(chē)輛在環(huán)境中不同區(qū)域出現(xiàn)的概率是不同的,我們也為車(chē)輛設(shè)置了正常和異常2種狀態(tài),并約束在不同的模式下車(chē)輛在各個(gè)區(qū)域的概率分布.例如,正常情況下車(chē)輛無(wú)論如何不會(huì)出現(xiàn)在人行道或是逆行車(chē)道上.
4) 行人P的描述與車(chē)輛相似,設(shè)計(jì)上的差異在于行人之間不存在類(lèi)別差別,只有衣服、身材、相貌差別.
5) 靜態(tài)物品G是沒(méi)有使用碰撞模擬和物理模擬的實(shí)體對(duì)象.如果不考慮相互作用直接采樣得到初始分布,很有可能產(chǎn)生穿模的問(wèn)題,因此,我們使用了基于幾何體計(jì)算的定向包圍盒(oriented bounding box, OBB)碰撞檢測(cè)算法,其思路是將空間中的每個(gè)實(shí)體對(duì)象用OBB包圍起來(lái),通過(guò)計(jì)算不同實(shí)體對(duì)象之間的OBB是否重疊來(lái)判斷是否發(fā)生了碰撞[43].
具體來(lái)說(shuō),先將物品投影到地面上,使用OBB代替三維物體進(jìn)行相交性檢查.同時(shí),為了彌補(bǔ)三維物品在垂直地面的維度上的層次丟失,引入如圖2所示的圖層的概念,每個(gè)圖層上均存在物體的OBB投影,做碰撞檢測(cè)時(shí)需針對(duì)物品的多個(gè)圖層同時(shí)進(jìn)行.在場(chǎng)景生成時(shí),會(huì)隨機(jī)選擇靜態(tài)物品,并依次添加到環(huán)境當(dāng)中,若新物體與老物體未發(fā)生碰撞,則物品生成有效.
Fig. 2 Multi-layer projection OBB圖2 多圖層投影OBB
2.3.2 參數(shù)化描述
為了能夠便捷地進(jìn)行場(chǎng)景搜索以及保持系統(tǒng)多個(gè)模塊之間概念的一致性,對(duì)場(chǎng)景設(shè)計(jì)了參數(shù)化描述方案.WE(Q,D)用來(lái)表示場(chǎng)景的參數(shù):E為環(huán)境的參數(shù)表示,其在一次測(cè)試過(guò)程中是一個(gè)定值;Q為天氣的參數(shù)表示;D為實(shí)體對(duì)象的參數(shù)表示.
天氣Q可以被表示為一個(gè)長(zhǎng)度為n的具名元組,元組中的每一項(xiàng)為從W選擇的天氣與其對(duì)應(yīng)的強(qiáng)度.Q={q1:x1,q2:x2,…,qn:xn},其中qi是天氣的名字,xi是天氣的具體取值,且處于定義的天氣要求的范圍內(nèi).
實(shí)體對(duì)象D包括車(chē)輛V、行人P和靜態(tài)物品G,這些對(duì)象無(wú)須區(qū)分,可被統(tǒng)一化處理.對(duì)于一個(gè)場(chǎng)景,本系統(tǒng)挑選共計(jì)m個(gè)實(shí)體對(duì)象進(jìn)行創(chuàng)建,使用一個(gè)大小為m×8的矩陣表示實(shí)體狀態(tài)
(3)
其中,ni表示挑選的實(shí)體對(duì)象的名字,ai表示這個(gè)實(shí)體對(duì)象所取屬性離散值在屬性集合中的索引.坐標(biāo)(x,y,z)是物體在實(shí)時(shí)渲染引擎創(chuàng)建的空間中的坐標(biāo);方向角(r,p,q)是物體語(yǔ)義正面法向量在渲染引擎坐標(biāo)系下的歐拉角.
對(duì)于相同的實(shí)體對(duì)象,由于其在矩陣D所處行不同,故而自然就區(qū)分開(kāi)了.換言之,多個(gè)重復(fù)對(duì)象在我們的表示中用多行表示.
為了能夠適應(yīng)性地對(duì)測(cè)試系統(tǒng)進(jìn)行安全測(cè)試,我們?cè)O(shè)計(jì)了一個(gè)動(dòng)態(tài)場(chǎng)景生成器.生成器的使用分為2個(gè)階段:1)場(chǎng)景初始化階段.在每輪測(cè)試開(kāi)始前,動(dòng)態(tài)場(chǎng)景生成器會(huì)根據(jù)環(huán)境配置和對(duì)象描述,按照天氣、車(chē)輛、行人、靜態(tài)物體的順序進(jìn)行一次抽樣,合成對(duì)象的分布函數(shù),生成場(chǎng)景描述.2)使用階段.動(dòng)態(tài)場(chǎng)景生成器可以根據(jù)缺陷分析器的輸出動(dòng)態(tài)地生成下一個(gè)用于測(cè)試的場(chǎng)景.動(dòng)態(tài)場(chǎng)景生成器的核心是一個(gè)適應(yīng)性的場(chǎng)景搜索算法,該算法可以針對(duì)不同的待測(cè)系統(tǒng)生成不同的搜索方法,使得測(cè)試系統(tǒng)能夠快速穩(wěn)定地找到待測(cè)系統(tǒng)缺陷.
2.4.1 基于蛻變測(cè)試的評(píng)估方法
測(cè)試預(yù)言用于判斷測(cè)試中待測(cè)系統(tǒng)輸出是否正確.對(duì)于自動(dòng)駕駛系統(tǒng)而言,在某個(gè)具體場(chǎng)景下,正確的輸出是難以定義的.這是因?yàn)?,?duì)于自動(dòng)駕駛系統(tǒng),在某個(gè)范圍內(nèi)的輸出都不會(huì)造成駕駛錯(cuò)誤.另外,由于自動(dòng)駕駛系統(tǒng)控制的車(chē)輛本身是物理連續(xù)的,單次系統(tǒng)錯(cuò)誤輸出可能不會(huì)造成嚴(yán)重的安全后果.因此,采用某個(gè)具體值作為測(cè)試預(yù)言是不合理的.沿用先前的工作[11],我們采用蛻變測(cè)試并且予以松弛的方式作為測(cè)試預(yù)言.由于不同的測(cè)試場(chǎng)景需要的測(cè)試預(yù)言是不同的,使用我們的測(cè)試系統(tǒng)時(shí),可以根據(jù)經(jīng)驗(yàn)設(shè)計(jì)不同的預(yù)言規(guī)則.這里我們給出了2種測(cè)試預(yù)言:通常深度自動(dòng)駕駛測(cè)試中關(guān)注的是輸出轉(zhuǎn)向角的正確性,因?yàn)檗D(zhuǎn)向角往往決定了系統(tǒng)是否會(huì)造成危險(xiǎn)后果,預(yù)言1使用了這樣的設(shè)計(jì);但當(dāng)測(cè)試車(chē)輛前有車(chē)輛,卻因?yàn)樽儞Q場(chǎng)景造成沒(méi)有剎車(chē),此時(shí)也應(yīng)判定自動(dòng)駕駛系統(tǒng)出了錯(cuò),預(yù)言2使用了該設(shè)計(jì).
2.4.2 適應(yīng)性場(chǎng)景搜索算法
本搜索算法有3個(gè)設(shè)計(jì)需求:1)搜索算法應(yīng)該是場(chǎng)景合理的,不能超出環(huán)境配置和對(duì)象描述所定義的合理狀態(tài);2)搜索到的相鄰2個(gè)場(chǎng)景應(yīng)該是駕駛語(yǔ)義不變的;3)搜索算法應(yīng)該是高效的,單次搜索耗時(shí)不能太長(zhǎng).
一是做好頂層設(shè)計(jì)。將節(jié)水優(yōu)先全面落實(shí)到規(guī)劃、取水許可、計(jì)劃用水、水量分配、延續(xù)取水、定額管理等水資源管理全過(guò)程;編制流域節(jié)水行動(dòng)方案并全面實(shí)施,助推流域形成節(jié)約資源的空間格局、產(chǎn)業(yè)結(jié)構(gòu)、生產(chǎn)方式、生活方式,加快推進(jìn)集約用水的方式轉(zhuǎn)變,提高用水效率,減少?gòu)U污水排放,全面推進(jìn)節(jié)水減污型社會(huì)建設(shè)。
我們通過(guò)拒絕采樣的方式保證搜索到的場(chǎng)景的合理性,即每次變換場(chǎng)景后,都要驗(yàn)證場(chǎng)景的合理性,如果不符合原本對(duì)象屬性文件中定義的分布,則重新變換.駕駛語(yǔ)義不變性是通過(guò)控制相機(jī)所處車(chē)輛前一定距離的對(duì)象的位置不變保證的.例如,在自動(dòng)駕駛車(chē)輛前有一輛車(chē)將造成車(chē)輛的剎車(chē)行為,那么在搜索過(guò)程中就不應(yīng)變換這輛車(chē)的空間位置,僅可改變方向角和車(chē)輛顏色.最后,算法的高效性是通過(guò)改變步長(zhǎng)的隨機(jī)搜索設(shè)計(jì)保證的,在搜索過(guò)程中,步長(zhǎng)預(yù)算是根據(jù)上次搜索過(guò)程是否被接納選擇進(jìn)行調(diào)整的.算法的細(xì)節(jié)描述見(jiàn)算法1.
算法1.適應(yīng)性場(chǎng)景搜索算法.
輸入:初始場(chǎng)景描述w、搜索步長(zhǎng)ε、變化維數(shù)Nd、迭代輪數(shù)預(yù)算Nt、示性函數(shù)δ、接口封裝好的自動(dòng)駕駛系統(tǒng)m、在實(shí)際渲染引擎中創(chuàng)建的傳感器φ;
輸出:搜索到的新場(chǎng)景wf.
/*初始化場(chǎng)景、控制以及搜索輪數(shù)*/
② for each iterationi≤Nt
④RVQ←randomWeather(n);
⑤RVD←randomEntity(Nd-n);/*生成
一個(gè)符合分布的Nd維隨機(jī)向量*/
/*控制搜索步長(zhǎng)為ε*/
⑦RVQ,RVD←RVQ×scale,RVD×scale;
⑧Q′,D′←將RVQ,RVD附加到Q,D上;
⑨w′←(E,Q′,D′);/*生成新的場(chǎng)景,如果天氣等參數(shù)超出閾值或者未通過(guò)碰撞檢測(cè),重新生成*/
⑩a←m(φ(w′));
圖3是測(cè)試系統(tǒng)進(jìn)行的一次場(chǎng)景搜索過(guò)程示意圖.圖中,紅線框框出的是動(dòng)態(tài)生成的車(chē)輛,藍(lán)線框是動(dòng)態(tài)生成的行人,綠線框是動(dòng)態(tài)生成的靜態(tài)網(wǎng)格體對(duì)象,天氣影響了全局的渲染效果,如圖3中的建筑物陰影和樹(shù)木的陰影、樹(shù)葉的擺動(dòng)角度等.測(cè)試系統(tǒng)通過(guò)動(dòng)態(tài)調(diào)整這些物體空間位置及其內(nèi)部屬性,改變渲染畫(huà)面,尋找造成故障的場(chǎng)景.
Fig. 3 Schematic diagram of the scene search圖3 一次場(chǎng)景搜索示意圖
對(duì)于造成示性函數(shù)取值為1的場(chǎng)景,缺陷分析器會(huì)分析、解釋哪些物體或?qū)傩砸l(fā)了系統(tǒng)異常.需要說(shuō)明的是,造成模型輸出異常的緣故是搜索過(guò)程的一整條路徑,而非某次具體的迭代過(guò)程;對(duì)于帶有高度非線性深度學(xué)習(xí)模塊的系統(tǒng)而言,單純分析路徑很難判斷究竟是什么原因造成了系統(tǒng)異常.
我們通過(guò)依次將天氣置零和移除場(chǎng)景中的實(shí)體對(duì)象來(lái)尋找造成自動(dòng)駕駛系統(tǒng)出現(xiàn)問(wèn)題的緣由.造成自動(dòng)駕駛出錯(cuò)的原因可能是相互耦合的,例如,對(duì)面行駛來(lái)的車(chē)輛由于霧天被識(shí)別錯(cuò)誤造成車(chē)輛停止.為了找到造成出錯(cuò)的一組物體,采取迭代貪心搜索的策略,以δ=0為停止標(biāo)志進(jìn)行場(chǎng)景搜索.算法細(xì)節(jié)見(jiàn)算法2.
算法2.自動(dòng)化缺陷分析算法.
輸出:造成故障的天氣或?qū)嶓w對(duì)象R.
①w←wf,a←m(φ(w));
/*初始化場(chǎng)景以及控制*/
③weights←[];
④ forobjectinw
⑤ if 移除object會(huì)影響駕駛語(yǔ)義
⑥ continue;
⑦ end if
⑧w′←w-object;
/*將天氣置0或移除實(shí)體對(duì)象*/
⑨a′←m(φ(w′));
選取目前最佳的條件自動(dòng)駕駛系統(tǒng)CILRS[44]作為測(cè)試對(duì)象,其使用ResNet-34作為圖像特征提取的卷積神經(jīng)網(wǎng)絡(luò),權(quán)重參數(shù)為使用CARLA的NoCrash數(shù)據(jù)集訓(xùn)練得到的預(yù)訓(xùn)練模型.同時(shí),為了顯示出測(cè)試系統(tǒng)在不同自動(dòng)駕駛系統(tǒng)上的能力,還選擇了基礎(chǔ)的條件自動(dòng)駕駛系統(tǒng)CIL[45]作為對(duì)比的基線.最后,對(duì)CIL和CILRS分別進(jìn)行了封裝,部署到測(cè)試系統(tǒng)中.
從預(yù)制資產(chǎn)豐富程度和API使用的靈活度的角度出發(fā),本文選擇了CARLA 0.9.11作為測(cè)試系統(tǒng)開(kāi)發(fā)平臺(tái).出于便捷導(dǎo)入靜態(tài)資產(chǎn)和地圖的目的,我們從源碼編譯Unreal Engine 4.24引擎和CARLA 0.9.11,部署于Windows平臺(tái).運(yùn)行時(shí),從Unreal Engine編輯器中啟動(dòng)CARLA以快速迭代構(gòu)建環(huán)境,驗(yàn)證場(chǎng)景生成算法的正確性.
受限于深度學(xué)習(xí)模型推導(dǎo)效率,通常部署于深度自動(dòng)駕駛中的CNN網(wǎng)絡(luò)的輸入圖像分辨率不會(huì)特別高,需要對(duì)相機(jī)捕獲的數(shù)據(jù)進(jìn)行預(yù)處理,裁剪出感興趣區(qū)域(region of interest,ROI).在這種情況下,場(chǎng)景中相對(duì)路面比較遠(yuǎn)的其他部分不會(huì)被捕獲到相機(jī)畫(huà)面中來(lái).但是,比較高或者比較低的道路兩側(cè)的建筑的高度實(shí)際會(huì)影響到道路的光照效果,一定會(huì)對(duì)自動(dòng)駕駛系統(tǒng)的預(yù)測(cè)產(chǎn)生影響.為了測(cè)試這種影響,我們?cè)O(shè)計(jì)了3種環(huán)境,分別為曠野、鄉(xiāng)村、城市,具有不同的環(huán)境物體高度,通過(guò)Unreal Engine編輯器創(chuàng)建,如圖4所示:
Fig. 4 Three environments圖4 3種環(huán)境
選取CARLA 0.9.11默認(rèn)提供的10種天氣參數(shù)(太陽(yáng)方位角、太陽(yáng)高度角、云量、降雨量、積雨量、風(fēng)強(qiáng)度、空氣濕度、霧濃度、霧距、霧密度)作為測(cè)試系統(tǒng)可以調(diào)節(jié)的天氣參數(shù).在不同場(chǎng)景中,太陽(yáng)方位角和太陽(yáng)高度角是必須存在的天氣參數(shù).霧濃度、霧距、霧密度三者之間具有相關(guān)性,必須同時(shí)存在.
我們對(duì)CARLA提供的89種可有效生成的靜態(tài)物體、28種車(chē)輛、26種行人進(jìn)行了對(duì)象屬性測(cè)算.28種車(chē)輛的差異體現(xiàn)在型號(hào)帶來(lái)的大小、形狀和顏色的差異.26種行人則包含男性、女性2種性別,年齡分成幼年、青年、老年3個(gè)年齡段.在89種靜態(tài)物體中,有一些重復(fù)的內(nèi)容,例如盒子包含6種,但有明顯差異的只有2種,而且有一些物體在我們?cè)O(shè)計(jì)的場(chǎng)景下不應(yīng)作為可以動(dòng)態(tài)生成在道路和人行道上的內(nèi)容,例如秋千.最終,選擇全部的28種車(chē)輛、26種行人以及15種具有代表性的靜態(tài)物體,將測(cè)算的數(shù)據(jù)按照格式要求寫(xiě)在對(duì)象屬性文件中.
實(shí)時(shí)渲染引擎中需要一個(gè)用以控制自動(dòng)駕駛的車(chē)輛和一個(gè)捕獲當(dāng)前場(chǎng)景圖像的相機(jī)傳感器,由于CARLA中車(chē)輛的物理模擬使用了相同的藍(lán)圖作為實(shí)現(xiàn),所以在該平臺(tái)上選擇哪種車(chē)輛作為控制車(chē)輛是無(wú)關(guān)緊要的.選取28種車(chē)輛中的Tesla Model 3作為控制車(chē)輛,傳感器選擇普通RGB單眼傳感器,位于相對(duì)車(chē)輛中心前方1.6 m處,相對(duì)地面高1.4 m,F(xiàn)OV取為100,畫(huà)面分辨率為800×600,幀率為25 Hz.相機(jī)捕獲的場(chǎng)景畫(huà)面如圖5所示:
Fig.5 The image captured by the on-board camera in the country environment圖5 鄉(xiāng)村環(huán)境中車(chē)載相機(jī)捕獲的畫(huà)面
我們對(duì)最新的自動(dòng)駕駛測(cè)試系統(tǒng)Paracosm進(jìn)行了復(fù)現(xiàn),并使用復(fù)現(xiàn)的Paracosm與我們的工作同時(shí)對(duì)自動(dòng)駕駛系統(tǒng)CILRS和CIL進(jìn)行安全性測(cè)試.我們選取了CARLA 0.9.11作為Paracosm和本系統(tǒng)的場(chǎng)景生成平臺(tái).Paracosm未考慮如何設(shè)置具體的安全性問(wèn)題檢出標(biāo)準(zhǔn),其在未來(lái)工作部分討論了與本文類(lèi)似的測(cè)試預(yù)言生成思路,但是并未設(shè)計(jì)具體的方法和參數(shù)選擇.故在本節(jié)的實(shí)驗(yàn)中,為了實(shí)驗(yàn)的公平性,復(fù)現(xiàn)的Paracosm系統(tǒng)和本文一樣,選取了蛻變測(cè)試作為測(cè)試預(yù)言機(jī)制,將場(chǎng)景變換前自動(dòng)駕駛系統(tǒng)輸出的結(jié)果視為正確輸出,詳細(xì)的設(shè)計(jì)見(jiàn)2.4節(jié).
我們選取了3種類(lèi)型的環(huán)境,即曠野、鄉(xiāng)村和城市,對(duì)CILRS系統(tǒng)和CIL系統(tǒng)分別進(jìn)行了安全性測(cè)試.請(qǐng)注意,3種環(huán)境的主要區(qū)別在于道路兩側(cè)的建筑物高度不同,從而影響自動(dòng)駕駛車(chē)輛上相機(jī)中的ROI的光照.將車(chē)輛生成于場(chǎng)景中的直道部分,設(shè)定車(chē)輛的駕駛分支為沿路行駛開(kāi)始測(cè)試.讓這2個(gè)測(cè)試系統(tǒng)分別在不同類(lèi)型的環(huán)境下動(dòng)態(tài)搜索300個(gè)場(chǎng)景.表2中展示了本文工作與Paracosm系統(tǒng)的安全問(wèn)題檢出率,檢出率的計(jì)算方法如式(2)所示.
Table 2 The Discovery Rate of Security Issues Between This Work and the Paracosm System
上述實(shí)驗(yàn)結(jié)果表明,本文工作在曠野、鄉(xiāng)村和城市3個(gè)代表性環(huán)境的300次場(chǎng)景搜索中,安全問(wèn)題發(fā)現(xiàn)能力均優(yōu)于自動(dòng)駕駛測(cè)試系統(tǒng)Paracosm.整體來(lái)看,本文工作在2個(gè)系統(tǒng)上的安全問(wèn)題檢出率皆是Paracosm的1.4倍.實(shí)驗(yàn)表明,本系統(tǒng)面向測(cè)試對(duì)象的適應(yīng)性搜索算法設(shè)計(jì)相比于非適應(yīng)性算法更加高效.
為排除其他因素造成的影響,選擇設(shè)計(jì)的3個(gè)環(huán)境中的曠野環(huán)境作為測(cè)試環(huán)境.其實(shí)驗(yàn)參數(shù)與4.1節(jié)相同.基于該設(shè)定分別對(duì)CIL和CILRS進(jìn)行實(shí)驗(yàn),并針對(duì)每個(gè)系統(tǒng)進(jìn)行了1 000輪場(chǎng)景搜索.使用式(2)計(jì)算故障率,并將結(jié)果列于表3中.
Table 3 Failure Rate of Autonomous Driving System
從表3中可以看出,存在實(shí)體對(duì)象時(shí),場(chǎng)景變換造成的故障率較只有天氣的情況更高.并且在考慮天氣和所有實(shí)體對(duì)象的情況下,我們對(duì)CILRS的故障發(fā)現(xiàn)率達(dá)到了58.4%.
比較CILRS與CIL的實(shí)驗(yàn)結(jié)果,可以發(fā)現(xiàn)兩者在只包含天氣的情況下表現(xiàn)相近,而在擁有表示場(chǎng)景擁擠程度的實(shí)體對(duì)象的情況下,CIL故障發(fā)生率高于CILRS.CILRS是在CARLA100數(shù)據(jù)集下訓(xùn)練的,著重解決擁擠場(chǎng)景下駕駛系統(tǒng)的正確性預(yù)測(cè)問(wèn)題.實(shí)驗(yàn)結(jié)果印證了CILRS確實(shí)緩解了擁擠場(chǎng)景下自動(dòng)駕駛系統(tǒng)故障率高的問(wèn)題.換言之,CILRS的安全性優(yōu)于CIL.
在2.4節(jié)的測(cè)試預(yù)言定義中,使用松弛的蛻變測(cè)試來(lái)避免采取固定真值測(cè)試時(shí),自動(dòng)駕駛系統(tǒng)測(cè)試可能會(huì)出現(xiàn)大量假陽(yáng)性的問(wèn)題.在4.1節(jié)中,使用ε=0.17對(duì)不包含實(shí)體對(duì)象的天氣場(chǎng)景進(jìn)行實(shí)驗(yàn),使用ε1=0.17,ε2=0.2對(duì)包含實(shí)體對(duì)象的場(chǎng)景進(jìn)行實(shí)驗(yàn).這2個(gè)值的選取是經(jīng)驗(yàn)選取的.本節(jié)通過(guò)調(diào)整ε進(jìn)行實(shí)驗(yàn),從而分析松弛限的取值對(duì)實(shí)驗(yàn)結(jié)果的影響.
選取CILRS系統(tǒng)的沿路行駛模式,在直道上進(jìn)行測(cè)試,測(cè)試系統(tǒng)擁有生成全部實(shí)體對(duì)象的能力.分別固定ε1=0.17和固定ε2=0.2,每次固定進(jìn)行100次實(shí)驗(yàn),將故障發(fā)現(xiàn)率繪在圖6中.
Fig. 6 The relationship between failure discovery rate and slack limit using metamorphosis test圖6 使用蛻變測(cè)試故障發(fā)現(xiàn)率與松弛限的關(guān)系
圖6中,折線ε1是固定ε2=0.2時(shí),ε1取值[0,0.5],故障發(fā)現(xiàn)率與松弛限的關(guān)系.折線ε2是固定ε1=0.17時(shí),ε2取值[0,0.5],故障發(fā)現(xiàn)率與松弛限的關(guān)系.注意當(dāng)ε=0時(shí),故障發(fā)現(xiàn)率并不為100%,這是由于ε1與ε2并非同時(shí)取0帶來(lái)的.
從圖6中可以觀察到,隨著松弛限逐漸變大,故障發(fā)現(xiàn)率不斷下降.如果松弛率比較小,那么系統(tǒng)就會(huì)報(bào)出大量的假陽(yáng)性.如果松弛率比較大,那么系統(tǒng)又會(huì)忽略可能的危險(xiǎn)錯(cuò)誤.正如前面解釋設(shè)計(jì)自動(dòng)駕駛測(cè)試預(yù)言的困難性,如何折中松弛率是一個(gè)很復(fù)雜的問(wèn)題,在DeepTest[15]中使用統(tǒng)計(jì)標(biāo)準(zhǔn)差作為松弛限,DeepRoad[34]直接使用經(jīng)驗(yàn)取值.根據(jù)圖6,ε在0~0.1區(qū)間內(nèi),隨自身增加,故障發(fā)現(xiàn)率下降速度比較快,推測(cè)排除了大量的假陽(yáng)性,而松弛限在0.1~0.22比較平滑,可以看作一個(gè)比較合理的取值范圍.另外,對(duì)自動(dòng)駕駛?cè)蝿?wù)而言,略高的假陽(yáng)性能夠避免故障場(chǎng)景的錯(cuò)誤排除,對(duì)實(shí)際任務(wù)并非不可接受.這是自動(dòng)駕駛?cè)蝿?wù)故障的危害性程度帶來(lái)的.
本節(jié)從不同的環(huán)境、不同的駕駛模式對(duì)深度自動(dòng)駕駛系統(tǒng)進(jìn)行測(cè)試,驗(yàn)證測(cè)試系統(tǒng)的覆蓋能力.
4.4.1 環(huán)境測(cè)試
我們提供的3種測(cè)試場(chǎng)景(曠野、鄉(xiāng)村和城市)的主要區(qū)別在于道路兩側(cè)的建筑物高度不同,從而影響自動(dòng)駕駛車(chē)輛上相機(jī)中的ROI的光照不同.在地圖中的直道區(qū)域,分別對(duì)CIL和CILRS進(jìn)行測(cè)試,結(jié)果列于表4中.
Table 4 Testing Results of Autonomous Driving Systems in Different Environments
從表4得到2個(gè)結(jié)論:
1) 在曠野、鄉(xiāng)村、城市3個(gè)不同的環(huán)境下進(jìn)行測(cè)試,故障發(fā)現(xiàn)率是比較接近的,一方面說(shuō)明了環(huán)境對(duì)故障發(fā)現(xiàn)率的影響比較小,另一方面印證了我們?cè)O(shè)計(jì)不同環(huán)境的依據(jù)——自動(dòng)駕駛中的ROI設(shè)計(jì)使得自動(dòng)駕駛系統(tǒng)更關(guān)注路面而非道路兩側(cè)的環(huán)境.
2) 有趣的是,在我們的設(shè)想中,低光照環(huán)境下的城市,故障發(fā)現(xiàn)率應(yīng)該高于正常光照或者高光照情況下的曠野和鄉(xiāng)村條件,因?yàn)榘凑罩庇X(jué),夜間駕駛相對(duì)白天駕駛更容易出現(xiàn)問(wèn)題.然而表4的數(shù)據(jù)與我們預(yù)料的結(jié)果相反,低光照情況下的故障搜索效率反而低了.通過(guò)觀察實(shí)驗(yàn)結(jié)果,我們推測(cè)在正常光照條件下,自動(dòng)駕駛車(chē)輛的轉(zhuǎn)向角一方面依賴實(shí)體對(duì)象,另一方面依賴道路中心的雙黃線.一旦雙黃線部分被遮蔽后,就很有可能造成駕駛輸出故障.在低光照情況下,雙黃線始終被遮蔽,這就使得駕駛輸出主要依賴場(chǎng)景中的其他實(shí)體對(duì)象.由2.4節(jié)可知,我們?cè)O(shè)計(jì)的駕駛語(yǔ)義保持的方式使得決定駕駛語(yǔ)義變化區(qū)域的實(shí)體對(duì)象沒(méi)有改變,這樣反而使得故障的搜索能力減弱了.
4.4.2 駕駛模式測(cè)試
在條件自動(dòng)駕駛系統(tǒng)中,除車(chē)載相機(jī)拍到的圖像外,高層的控制指令決定了當(dāng)前駕駛動(dòng)作應(yīng)采取的分支動(dòng)作.而自動(dòng)駕駛系統(tǒng)有4個(gè)駕駛模式,即沿路行駛、向左、向右和直行.我們?cè)诓煌膱?chǎng)景中分別選擇了直路來(lái)測(cè)試沿路行駛模式,選擇十字路口分別測(cè)試向左、向右和直行3種指令.注意,在地圖的不同位置進(jìn)行測(cè)試時(shí),場(chǎng)景初始化器需要根據(jù)區(qū)域配置重新合成對(duì)象分布進(jìn)行抽樣以適應(yīng)車(chē)載相機(jī)實(shí)際的FOV.測(cè)試結(jié)果如表5所示.可以看到,在不同分支的情況下,CILRS的安全性均優(yōu)于CIL.
Table 5 Testing Results of the Autonomous Driving System in Different Branches
本節(jié)中,將以CILRS系統(tǒng)為例,通過(guò)回答3個(gè)問(wèn)題來(lái)展示測(cè)試系統(tǒng)的自動(dòng)化測(cè)試能力.
問(wèn)題1.哪些天氣更容易造成CILRS系統(tǒng)出現(xiàn)故障?
使用缺陷分析器將擁有所有對(duì)象控制能力的實(shí)驗(yàn)中的天氣逐個(gè)置零,確定哪些天氣更容易造成自動(dòng)駕駛系統(tǒng)發(fā)生故障.由于不同天氣是通過(guò)采樣得到的,采樣得到的數(shù)量不同,故而使用造成故障的天氣相對(duì)該天氣出現(xiàn)次數(shù)的比值作為對(duì)比值,將結(jié)果顯示在圖7中,注意,天氣可能只是造成故障的原因之一,不一定是決定因素.
缺陷分析器給出的造成故障的原因可能是多個(gè)對(duì)象,故而該圖中總和大于100%.從圖7中可以看出,造成路面信息模糊(特別是道路標(biāo)識(shí)模糊)的積雨最容易造成自動(dòng)駕駛系統(tǒng)的不穩(wěn)定.隨后是干擾了相機(jī)傳感器畫(huà)面的降雨.風(fēng)的強(qiáng)度主要影響到了降雨的雨水飄落的傾斜程度和道路兩側(cè)樹(shù)葉的吹動(dòng),后者屬于環(huán)境內(nèi)容,根據(jù)表4,其對(duì)自動(dòng)駕駛系統(tǒng)的影響并不突出.可見(jiàn)CILRS系統(tǒng)在這些天氣條件中,最易受到降雨環(huán)境的干擾.
Fig. 7 Proportion of CILRS system failure caused by the weather圖7 天氣造成CILRS系統(tǒng)故障的比例
問(wèn)題2.哪些區(qū)域是CILRS駕駛系統(tǒng)的關(guān)鍵區(qū)域?
將深度自動(dòng)駕駛的關(guān)鍵區(qū)域定義為,當(dāng)這個(gè)區(qū)域出現(xiàn)實(shí)體對(duì)象時(shí),自動(dòng)駕駛的輸出更容易出現(xiàn)不穩(wěn)定性.對(duì)先前在直道上進(jìn)行測(cè)試,存在實(shí)體對(duì)象的實(shí)驗(yàn)結(jié)果進(jìn)行分析.首先,搜索到的造成故障的場(chǎng)景和原始場(chǎng)景會(huì)一并交給缺陷分析器進(jìn)行處理,分析出造成故障的物體.接著,把故障物體的區(qū)域繪在圖8中,橫坐標(biāo)是在沿道路方向的x軸,縱坐標(biāo)是道路切向方向的y軸.在我們的設(shè)置中,自動(dòng)駕駛車(chē)輛的坐標(biāo)為(0,-2.27).圖8的統(tǒng)計(jì)結(jié)果顯示CILRS系統(tǒng)的敏感區(qū)域在道路兩側(cè)的人行道上.
Fig. 8 The key area of the CILRS driving system圖8 CILRS駕駛系統(tǒng)的關(guān)鍵區(qū)域
問(wèn)題3.哪些物體更容易造成CILRS系統(tǒng)出現(xiàn)故障?
將造成系統(tǒng)故障的物體相對(duì)其采樣次數(shù)的比值用作比較物體造成CILRS系統(tǒng)故障的概率的標(biāo)準(zhǔn).去除重復(fù)物體,取錯(cuò)誤率最高的5個(gè)實(shí)體對(duì)象,將對(duì)象及其故障率列在表6中.
通過(guò)圖8和表6,可以發(fā)現(xiàn)2點(diǎn):
1) 位于道路上的車(chē)輛可能不是造成不穩(wěn)定性的主要原因,相反,處于道路兩側(cè)人行道上的物體可能更容易造成自動(dòng)駕駛系統(tǒng)的不穩(wěn)定.觀察CARLA100數(shù)據(jù)集,發(fā)現(xiàn)自動(dòng)駕駛系統(tǒng)針對(duì)復(fù)雜道路條件進(jìn)行了訓(xùn)練,忽略了人行道上物體的復(fù)雜性.
2) 黃色與紅色是CILRS系統(tǒng)的敏感顏色.這是很自然的,因?yàn)榻煌ㄐ盘?hào)燈的顏色恰好是黃色和紅色,當(dāng)人行道上出現(xiàn)黃色或者紅色物體時(shí),CILRS很有可能將其誤判成信號(hào)燈.
Table 6 The Entity Objects and Failure Rate
測(cè)試系統(tǒng)發(fā)現(xiàn)的CILRS的脆弱性正是CILRS優(yōu)化的方向,可以使用本文測(cè)試系統(tǒng)在網(wǎng)絡(luò)訓(xùn)練后校驗(yàn)系統(tǒng)的安全性.網(wǎng)絡(luò)優(yōu)化方案可以是數(shù)據(jù)增強(qiáng)、結(jié)構(gòu)優(yōu)化等,優(yōu)化后再次使用測(cè)試系統(tǒng)進(jìn)行校驗(yàn)可以確定深度網(wǎng)絡(luò)是否滿足了安全性需求.例如對(duì)CILRS系統(tǒng),建議增加雨天天氣、更豐富的道路兩側(cè)場(chǎng)景的訓(xùn)練數(shù)據(jù),以提高系統(tǒng)的穩(wěn)定性,設(shè)計(jì)雙保險(xiǎn)機(jī)制緩解對(duì)黃色、紅色物體的敏感性.
為了進(jìn)一步分析造成CILRS系統(tǒng)故障的原因,我們打開(kāi)了CILRS系統(tǒng),觀察ResNet的特征提取層.我們發(fā)現(xiàn),大多數(shù)情況下搜索到的故障場(chǎng)景和原場(chǎng)景的特征提取結(jié)果雖然有所差異,但差異不是特別明顯,在一系列分析過(guò)程中,發(fā)現(xiàn)了一個(gè)有趣的樣例,即身穿紅色衣服的行人在人行道上行走.
如圖9所示,設(shè)置環(huán)境在曠野上,車(chē)輛位于直行道路區(qū)域上,使用沿路行駛模式進(jìn)行測(cè)試,此時(shí)車(chē)速為4(歸一化數(shù)值),一個(gè)身穿紅色衣服的行人在右側(cè)人行道的中央位置沿著人行道向前走.自動(dòng)駕駛車(chē)輛停留在初始位置,根據(jù)行人所處的不同位置,可以得到CILRS系統(tǒng)預(yù)測(cè)輸出的變化,如圖10所示.
Fig. 9 Failure analysis example: Pedestrian in red walking on the side of the road圖9 故障分析樣例:身穿紅色衣服的行人在道路旁行走
Fig. 10 CILRS system output with pedestrian position changes圖10 CILRS系統(tǒng)輸出隨行人位置的變化
根據(jù)圖10可以看到,行人出現(xiàn)前,CILRS系統(tǒng)輸出比較穩(wěn)定.而在行人開(kāi)始出現(xiàn)時(shí),CILRS系統(tǒng)受到了影響并產(chǎn)生波動(dòng),然而始終處于故障范圍之外.大約在車(chē)輛中心位置前7.5 m處,預(yù)測(cè)輸出變?yōu)槊筒葎x車(chē)(剎車(chē)效應(yīng)優(yōu)先于轉(zhuǎn)向效應(yīng)).隨后自動(dòng)駕駛系統(tǒng)的輸出仍處于波動(dòng)狀態(tài),直到行人遠(yuǎn)離后車(chē)輛輸出才趨向穩(wěn)定(bias<0.1).這樣的表現(xiàn)顯然是不正常的,當(dāng)行人距離車(chē)比較近的時(shí)候,如果CILRS判定此時(shí)應(yīng)剎車(chē),則應(yīng)立即輸出剎車(chē),不應(yīng)該在行人繼續(xù)向前走之后才輸出剎車(chē).將沒(méi)有行人和行人在相對(duì)車(chē)輛中心位置前面7.5 m處時(shí)的相機(jī)輸入及CILRS卷積層前3層輸出的結(jié)果繪在圖11中.作為對(duì)比,將一張長(zhǎng)椅放在位于人行道上造成自動(dòng)駕駛系統(tǒng)輸出變化最大的位置,此時(shí)自動(dòng)駕駛輸出相對(duì)不存在任何物體時(shí)的偏移steer_bias=0.030<0.17,throttle_bias=0.05<0.2,不會(huì)被判定為系統(tǒng)故障.
圖11中,有長(zhǎng)椅的場(chǎng)景第3層卷積輸出的結(jié)果與不存在任何物體的場(chǎng)景的卷積輸出結(jié)果比較相似,而行人所出現(xiàn)的場(chǎng)景卷積輸出和不存在任何物體的場(chǎng)景的卷積輸出有明顯差異.
圖11中,前2列在原始畫(huà)面和特征提取前2層畫(huà)面有明顯差異,然而在第3層卻比較相近.第1列和第3列原始畫(huà)面與前3層都有很大的差異.這說(shuō)明盡管畫(huà)面中相同位置都出現(xiàn)了物體,但特征提取出來(lái)的內(nèi)容是不同的.這啟發(fā)我們或許可以在某一或某些特征層設(shè)置監(jiān)控器,通過(guò)監(jiān)控器的變化分析提前預(yù)警系統(tǒng)是否會(huì)發(fā)生故障.
Fig. 11 Input and convolutional layer output of CILRS圖11 CILRS輸入及卷積層輸出
本節(jié)對(duì)測(cè)試系統(tǒng)的運(yùn)行效率進(jìn)行分析.部署測(cè)試系統(tǒng)的硬件平臺(tái)為AMD R5 3600X+RTX 3070,使用的軟件平臺(tái)為Windows 10+Unreal Engine 4.24.3+CARLA 0.9.11+Python 3.9.1.
將動(dòng)態(tài)場(chǎng)景生成器根據(jù)初始場(chǎng)景搜索到一個(gè)造成自動(dòng)駕駛系統(tǒng)出錯(cuò)的場(chǎng)景或是超出迭代預(yù)算的用時(shí)定義為一次測(cè)試用時(shí).在考慮所有實(shí)體對(duì)象,對(duì)象數(shù)量根據(jù)正態(tài)分布采樣得到,包含渲染過(guò)程的情況下,一次實(shí)驗(yàn)的平均用時(shí)為16.86 s.排除渲染過(guò)程,采用分模塊測(cè)試取平均值的方式,對(duì)每個(gè)模塊及其內(nèi)部細(xì)節(jié)進(jìn)行效率的測(cè)試,結(jié)果見(jiàn)表7.
Table 7 Average Time Consumption of Each Module of the Testing System
與十幾秒的單次實(shí)驗(yàn)耗時(shí)相比,各個(gè)模塊內(nèi)部耗時(shí)是很短的,系統(tǒng)主要的性能瓶頸在渲染效率上.
為了保障車(chē)聯(lián)網(wǎng)場(chǎng)景下的自動(dòng)駕駛系統(tǒng)安全性,本文設(shè)計(jì)并實(shí)現(xiàn)了一套場(chǎng)景驅(qū)動(dòng)的針對(duì)自動(dòng)駕駛視覺(jué)感知模塊的安全測(cè)試系統(tǒng).該系統(tǒng)構(gòu)建了一套真實(shí)且豐富的場(chǎng)景描述方法,極大地拓展了測(cè)試系統(tǒng)的數(shù)據(jù)分布;本系統(tǒng)可以動(dòng)態(tài)地為不同自動(dòng)駕駛模型產(chǎn)生安全測(cè)試方案,可以實(shí)現(xiàn)高效、穩(wěn)定地發(fā)現(xiàn)安全缺陷;最后本系統(tǒng)設(shè)計(jì)了一套精細(xì)的自動(dòng)化安全問(wèn)題分析工具,該工具可以幫助自動(dòng)駕駛開(kāi)發(fā)人員快速定位系統(tǒng)的安全性問(wèn)題.我們相信,本文工作將啟發(fā)更多的自動(dòng)駕駛感知模塊的測(cè)試方案,會(huì)為車(chē)聯(lián)網(wǎng)場(chǎng)景下的自動(dòng)駕駛領(lǐng)域提供重要的安全基礎(chǔ).
作者貢獻(xiàn)聲明:吳昊負(fù)責(zé)論文撰寫(xiě)和解決方案設(shè)計(jì);王浩負(fù)責(zé)系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn);蘇醒負(fù)責(zé)系統(tǒng)實(shí)現(xiàn)和實(shí)驗(yàn);李明昊負(fù)責(zé)實(shí)驗(yàn)和結(jié)果分析;許封元負(fù)責(zé)定義問(wèn)題及修改論文;仲盛負(fù)責(zé)把控研究方向和修改論文.