劉思婷,葛萬成
(同濟大學,上海 201800)
面對復雜多變的駕駛環(huán)境,如何減少環(huán)境因素的干擾,提高自動駕駛視覺領域檢測精度,提升安全性和可靠性,是自動駕駛領域必須解決的重要難題。而在自動駕駛技術圖像識別領域中,自動駕駛的環(huán)境感知應用模型的本質就是黑盒屬性,也已有實驗證明深度卷積網絡對普遍性對抗擾動(Universal Adversarial Perturbations)[1]非常敏感。研究如何大規(guī)模、低成本地生成對抗樣本,并且對深度學習模型進行攻擊,對深度卷積神經網絡和整個自動駕駛領域的進步都很重要。
深度卷積神經網絡的概念最初來源于概率論統(tǒng)計中的最大似然估計,分析變量與發(fā)生概率之間的關系,并且找到參數能夠實現(xiàn)最優(yōu)概率分布。在深度學習中,它不斷利用輸入數據來更新優(yōu)化參數。一個基礎的卷積神經網絡通常由卷積層、池化層和全連接層等部分組成。
卷積層由濾波器組成,而每個濾波器可以看成數字矩陣。每張彩色由RGB 這3 個像通道構成,R代表紅色,G 代表綠色,B 代表藍色。每個通道的像素值由[0,255]范圍內的數字來表示,如圖片的大小為299×299 像素,那么此時就用299×299×3的數組進行表示。設單個通道的坐標為(x,y),卷積核的權重為w,圖片亮度值為v,則卷積的定義式為:
在卷積層進行運算后,要將結果送入池化層。由于圖片中相鄰像素點的數值具有一定的相似性,再加上卷積運算后的數值會存在部分接近的情況,因此此時會有很多無效數值,即存在大量的冗余信息。進行池化處理就是大幅度去除冗余信息,提高處理速率。常見的池化方法有一般池化(General Pooling)、均值池化(Mean/Average Pooling)、最大池化(Max Pooling)以及隨機池化(Stochastic Pooling)等。不同的池化方式對圖像特征值做不同的處理。
全連接層通常位于卷積層和池化層之后,在進行一定次數的卷積運算和池化操作后再次進行計算,實現(xiàn)一個匯總特征向量的作用,結構如圖1所示。
這里參數多、計算量大,會占用很大的內存,所以在部分網絡結構中也會省去在全連接層計算的流程,計算公式如下:
式中,x1、x2、x3為輸入,a1、a2、a3為輸出。
圖1 全連接層結構
VGG16 是由Simonyan 和Zisserman[2]提出的一種網絡結構,共有16 層網絡結構,其中包含13 個卷積層、5 個池化層和3 個全連接層。在13 個卷積層中,每一層都需要64 個卷積核,而每一個卷積核大小是3×3,且通道數為3。在進行2~3 次的卷積作用后,采取最大池化的方式進行池化,以達到降維減小深入尺寸的效果,從而減少計算量。在池化層和卷積層中獲得的區(qū)分性的局部信息將會在全連接層進行整合,最后利用Softmax 邏輯回歸分類后進行輸出。在2014 年的ImageNet 圖像挑戰(zhàn)賽的分類和定位任務上,VGG16 分別獲得第二名和第一名的好成績。它收斂速度快,網絡結構整齊,穩(wěn)定性較高。
ResNet 又叫深度殘差網絡(Deep Residual Network),是由He K N 等[3]等人提出的一種殘差學習框架。它由VGG19 進化而來,即在VGG19 的原有基礎上通過短路機制引入兩種不同的殘差單元機制(如圖2 所示),并且利用global average pool 代替VGG19 中的全連接層,通過增加特征圖的數量來保證網絡層的復雜性,在ILSVRC 2015 分類任務中獲得第一名。它能夠解決目標部分網絡結構如VGG 系列隨著網絡層數的不斷增加面臨的檢測效果退化問題。
要提高檢測精度,一般是增加網絡層數和寬度,但同時也會帶來參數量過多和存在過擬合的現(xiàn)象。然而,InceptionV4[4]很好地解決了這一問題,已經被證實能夠低成本獲取高性能,是近年來在計算機視覺領域的一個代表性突破。如圖3 所示,InceptionV4 由之前的Inception 版本演化而來,利用DepthConcat 在每個block 后合成特征獲得非線性特征代替原有Relu 激活函數,通過Global average pool代替原有全連接層中的FC避免過擬合現(xiàn)象的產生。因此,對VGG16、ResNet34、InceptionV4 這3 種優(yōu)勢突出的網絡結構進行攻擊更能夠體現(xiàn)本文方法的可行性和普遍適用性。
圖2 兩種殘差單元機制結構
圖3 InceptionV4 網絡結構
對抗性樣本是指在模型的輸入數據上人為添加一些擾動導致模型發(fā)生錯誤判斷,這一過程即對抗攻擊。例如,對于一張正確分類的圖片來說,它的正確分類應該是貓,當加入細微的像素點進行擾動后,最后分類的結果變成了狗。這些細微的擾動不影響人類的判定,但對模型的預測結果卻有很大的影響。根據攻擊方法的特點,具有不同的分類。根據攻擊者是否了解被攻擊對象的內部結構,可以分成白盒攻擊和黑盒攻擊。白盒攻擊是指攻擊者掌握被攻擊網絡模型所有的內部結構特征和訓練參數。黑盒攻擊是指攻擊者對被攻擊的網絡模型一無所知,只能通過輸入與輸出的結果進行判斷。本文采取黑盒攻擊方法,即在無需知道神經網絡的內部情況下實現(xiàn)攻擊,適用于各種復雜的網絡。
傳統(tǒng)的噪聲生成方法是通過隨機序列發(fā)生器產生不同的隨機數,使事物圖片呈現(xiàn)隨機的噪聲干擾。這個過程看似隨機自然,但能夠模擬仿真在現(xiàn)實世界的真實效果。實際上,隨著操作者的需求會進行一定的修改變成偽隨機。利用圖形學噪聲進行黑盒攻擊,能夠減少算法成本且高效。在1985 年的SIGGRAPH 會議上,Perlin[5]首次提出柏林噪聲這一個全新概念。與之前傳統(tǒng)的噪聲生成算法相比,Perlin 噪聲能在一維、二維和三維等多個維度提供自然逼真的擾動,生成更真實的逼真紋理。樹木的紋理、火焰和云霧的形狀等,都可以通過柏林噪聲模擬獲得。為了更好地模擬自然的視覺效果干擾,本文對交通標志牌采取基于Perlin 噪聲的攻擊方法。
本文以常見的道路交通標志牌為研究對象。在眾多交通標志牌數據集中,選擇德國GTRSB 數據集。GTRSB 數據集種類豐富,數量龐大,在計算機視覺領域的應用中有著很好的實驗效果。此數據分為測試集和訓練集,其中測試集12 587 張,訓練集39 209 張。測試集和訓練集都具有含43 種常見交通標志牌圖像數據庫,部分數據集類別如圖4 所示。
圖4 GTRSB 數據集部分示例
近年來,大數據處理的計算能力快速提升。深度學習因其自身強大的特征表達能力和對復雜任務的建模能力,使得自身在圖像處理、語音識別以及情感分類等各大領域有著廣泛的應用,掀起了人工智能的技術浪潮,但在現(xiàn)實世界中會面臨很多干擾。對人類來說一些小小的干擾對人類的判斷結果無影響,但是對于深度學習模型來說影響很大。2014 年,Szegedy 等[6]驗證了即使是很小的擾動,也能對深度卷積神經網絡的模型預測結果造成很大的變化,尤其在自動駕駛領域嚴重影響系統(tǒng)的安全性。近幾年,對深度學習目標檢測器模型上的攻擊得到了廣泛關注。Lu[7]等人在交通標志牌STOP 標志上和人臉圖像上添加擾動,結果導致模型結果預測誤判。Xie 等人[8]設計了一種通過不斷迭代來生成對抗樣本的方法,結果表明也能使得深度學習模型無法進行正確的預測。同樣,Li 等人[9]提出R-AP 攻擊算法概念,證實了在不知道模型內部構造的情況下能夠降低性能。Universal Adversarial Perturbations[1]的提出又是對抗攻擊的一大突破,能夠生成對任何圖像實現(xiàn)攻擊的擾動,對人類來說很難察覺。雖然此實驗是在ResNet 上測試,但已經證明這種方法能夠泛化到其他網絡。如何低成本制造對抗樣本進行對抗攻擊從而不短提升深度學習模型的魯棒性,是當下的熱點也是要攻克的難題。本文方法既具備低成本優(yōu)勢,也能夠可視化展示這些擾動。
為了滿足實驗環(huán)境的需求,要對GTRSB 數據集進行兩次數據集格式處理:第一次處理是將從GTRSB 官網中下載下來的.ppm 的數據集利用其ROI 區(qū)域的坐標,提取出所需的ROI 區(qū)域,轉化成.jpg 格式的數據集;第二次是在進行攻擊時,需要將.gpg 的格式轉化成二進制文件的格式。
柏林噪聲本質是一種帶限白噪聲,可由不同頻率、不同振幅的白噪聲疊加而來:
式中,i表示第i次被疊加的白噪聲,p表示持續(xù)度。p是由Mandelbrot[4]提出的振幅和頻率關系的綜合表示,定義為:
柏林噪聲生成流程如下。
第1 步:利用偽隨機序列發(fā)生器生成隨機數,利用隨機數初步生成白噪聲,并將不連續(xù)的白噪聲數值取部分進行梯度插值,得到連讀的梯度噪聲。
第2 步:利用插值函數的方法可以實現(xiàn)噪聲平滑后將值返回。插值方法有線性插值、余弦插值和立方插值。立方插值執(zhí)行速度慢,占用空間大,且不能夠保證很好的平滑效果。余弦插值雖然能夠保證較好的平滑效果,但是需要利用計算周期長換取效果。因此,綜合執(zhí)行時間和平滑效果,本文采取線性插值的方法,既能保持較優(yōu)的平滑效果,也具備時間上的高效性。線性插值函數需要3 個參數{a,b,x},x的取值范圍是[0,1]。當x=0 時,返回a的值;當x=1 時,返回b的值;當x的值位于[0,1]之間時,返回[a,b]范圍內的某個數值。
線性插值函數偽碼如下:
第3 步:將不同頻率和不同振幅的噪聲進行疊加,也就是倍頻。倍頻次數越高,噪聲紋理越自然,但倍頻次數過高,顯示器無法分辨,效果會下降。圖5、圖6 和圖7 從左往右依次顯示了不同頻率的倍頻數為1、2、3、4 的Perlin 噪聲圖像。
圖5 Norm=12,amplitude=60,frequency=36 的Perlin 噪聲圖像
圖6 Norm=12,amplitude=91,frequency=36 的Perlin 噪聲圖像
圖7 Norm=12,amplitude=125,frequency=36 的Perlin 噪聲圖像
最后,加上生成的不同的噪聲擾動得到對抗性樣本,用此攻擊3 種不同的網絡,如圖8 所示。
圖8 對抗樣本生成流程
本文基于Facebook 開源的神經網絡框架Pytorch進行模型訓練,網絡訓練時長如表1 所示,epoch=199,adecay=0.9,學習率=0.045,每兩個時期使用0.94的指數率衰減一次。
表1 網絡訓練時長
實驗數據表明,這3 種不同結構的深度神經網絡對Perlin 噪聲有不同程度的敏感性,如圖9、圖10 和圖11 所示。其中,Perlin1 代表倍頻數為1 時Perlin 噪聲對網絡進行攻擊的結果,Perlin2、Perlin3等同理。
圖9 freq=28 時3 種網絡的分類準確率
圖10 freq=36 時3 種網絡的分類準確率
圖11 freq=44,freq=52 時3 種網絡的分類準確率
從圖9、圖10 和圖11 可以總結以下3 個方面的規(guī)律。
(1)隨著freqsine 頻率的增高,攻擊效果越來越好。值得注意的是,freq=28 時攻擊效果很弱,但是freq=36 時效果提升明顯,從freq=36 再到freq=44 再增至freq=52 時,攻擊效果又有一定幅度的提升。比如,當倍頻數為2、freq=36 時,VGG16的準確率為0.897 8,而當freq的值逐漸增加到44和52 時,VGG16 的準確率依次降為0.852 4 和0.837 2。當倍頻數為2、freq=36 時,InceptionV4 的準確率為0.856 4,而當freq的值逐漸增加到44 和52 時,InceptionV4 的準確率依次降為0.852 4 和0.819 7。當倍頻數為2、freq=36 時,ResNet34 的準確率為0.887 8,而當freq的值逐漸增加到44 和52 時,ResNet34 的準確率依次降為0.852 9 和0.826 8。
(2)無論是在高頻還是低頻區(qū)域,從這3 種模型來看,攻擊效果效果最好(最差)時的分布存在共性。如圖9 所示,在freq值較低時(freq=28)、倍頻數為2 時,攻擊效果最好;倍頻數為1 時,攻擊效果最差。相反,當freq值較高時,正如實驗數據所示,在freq為36、44、52 時,倍頻數為1 時攻擊效果最好,而倍頻數為2 時攻擊效果最差。
(3)從整體效果來看,無論是在高頻還是低頻,通常當倍頻數超過3、4 時,即使隨著噪聲疊加次數不斷提高,攻擊效果也不會有明顯提升,有時反而會隨著倍頻次數的增加而下降。當倍頻數為5 且疊加次數過多時,也會導致計算周期過長,不利于提高實驗效果。
總體來說,在原始數據集上,分類準確率由高到底依次是InceptionV4、ResNet34、Vgg16,分別為0.991 7、0.986 9、0.981 4。這3 種網絡的穩(wěn)定性從低到高依次是InceptionV4、ResNet34、VGG16。VGG16 面對噪聲攻擊最穩(wěn)定,InceptionV4 最不穩(wěn)定。從實驗數據來看,這3 種網絡在freq=44、倍頻數=1 時,攻擊效果最好,InceptionV4 的準確率下降了20.49%,ResNet34 的準確率下降了19%,VGG16 的準確率下降了15.63%。無論當freq和倍頻數為何值,檢測精度的下降排名保持一致。早有實驗證明,隨著網絡層數的增加,檢測精度會提高,但同時也會遇到穩(wěn)定性減弱的情況。結合現(xiàn)實來看,當倍頻數過低時,噪聲擾動較為明顯,不符合一個優(yōu)秀擾動所具備的條件,而倍頻數過高攻擊效果也會下降,所以當倍頻數為3、4 時能總體達到最好的效果,且噪聲頻率越高總體攻擊效果越好。
本文提出了一種基于Perlin 噪聲對深度卷積神經網絡的攻擊方法,并實驗驗證了Perlin 噪聲攻擊的有效性,能夠達到類似UAP 的效果,且便捷高效,能夠可視化觀察不同參數對輸入樣本的影響。這一現(xiàn)象和結果對提升自動駕駛技術的安全性和穩(wěn)定性有著重要的研究意義,因為提出了一種便捷的、低成本、高效的黑盒攻擊方法,而且具備泛化性。此外,Perlin 噪聲也可以用來進行數據增強,有效生成新數據,用于對抗性訓練,以提高深度學習模型的魯棒性。未來的工作中,有必要分析不同噪聲模式隱藏的對神經網絡攻擊的效果,并研究降低卷積神經網絡對擾動敏感性的技術。