黃 橫 韓 青 李曉東
北京電子科技學(xué)院,北京市 100070
現(xiàn)在主流的自動人臉識別技術(shù)主要可以分為三類。 第一類為集合特征法,這類代表方法有模板匹配法[1]、彈性圖匹配法[2]等。 第二類是基于子空間的方法,這類代表方法有主成分分析[3]、線性判別分析[4]、獨(dú)立分量分析[5]等。 第三類為基于學(xué)習(xí)的方法,這類代表方法有基于神經(jīng)網(wǎng)絡(luò)人臉識別方法[6]、基于稀疏表示人臉識別方法[7]等。 2014 年,Szegedy 等人首次提出深度神經(jīng)網(wǎng)絡(luò)并不是完美的,在計(jì)算機(jī)視覺領(lǐng)域應(yīng)用時(shí)盡管效果很好,但是卻很容易被微小,人類肉眼難以察覺的向量擾動,即這種向量增加到圖像上,圖像很難被看出有明顯差異,但是深度神經(jīng)網(wǎng)絡(luò)對這類圖片會得到錯(cuò)誤結(jié)果[8]。 這種微小難以察覺卻能擾動深度神經(jīng)網(wǎng)絡(luò)的向量被稱為對抗擾動,而增加了對抗擾動的圖片被稱為對抗樣本。 并且進(jìn)一步發(fā)現(xiàn),這種對抗擾動生成的對抗樣本甚至可以欺騙多個(gè)深度神經(jīng)網(wǎng)絡(luò)模型。自此以后,出現(xiàn)了多樣化的對抗攻擊研究。 2017年,Su 等人提出了一種一個(gè)像素攻擊的對抗樣本生成方法[9], Sarkar 等人提出了UPSET 和ANGRI 兩個(gè)深度神經(jīng)網(wǎng)絡(luò)攻擊算法[10]。 一個(gè)像素攻擊方法中盡量少的改變圖像中像素點(diǎn)而實(shí)現(xiàn)對目標(biāo)模型的攻擊,利用差分算法對圖像像素進(jìn)行迭代生成子圖像,盡可能少的改變圖像像素個(gè)數(shù),一般為1,3,5 個(gè)圖像像素的改變,原則上像素改變的個(gè)數(shù)越多,攻擊效果越好,但是為了保持?jǐn)_動不被察覺,盡量少改變圖像像素。Moosavi-Dezfooli 等人提出一種不針對具體圖像的算法——通用對抗擾動[11]。 該方法為白盒攻擊,生成一個(gè)通用擾動向量,這個(gè)通用擾動向量對數(shù)據(jù)集上大量照片有效,可以實(shí)現(xiàn)錯(cuò)誤分類[12]。 Moosavi-Dezfooli 還證明該方法不僅對ResNet 網(wǎng)絡(luò)攻擊有效,還具有很好的泛化能力,在跨模型與跨數(shù)據(jù)集情況下依然具有很好效果。在防御對抗擾動方面主要有三種方法。 第一種針對目標(biāo)模型改變訓(xùn)練過程或者訓(xùn)練數(shù)據(jù)集,第二種為針對目標(biāo)模型修改其網(wǎng)絡(luò),第三種增加一個(gè)新網(wǎng)絡(luò)作為檢測器檢測圖像是否加有擾動[13][14][15][16]。 該論文目的為實(shí)現(xiàn)能夠防御來自一個(gè)像素攻擊和通用擾動攻擊的人臉安全識別,利用其產(chǎn)生的對抗樣本對人臉識別模型進(jìn)行微調(diào)(fine-tuning)訓(xùn)練以提升對抗樣本防御能力。
現(xiàn)有的facenet[17]模型大多是利用西方人臉圖像構(gòu)成的數(shù)據(jù)集來訓(xùn)練生成。 西方人的長相實(shí)際上和東方人是有很大區(qū)別的,所以為了使模型更適合國內(nèi)使用,在原來利用西方人臉圖像構(gòu)成的數(shù)據(jù)集訓(xùn)練的基礎(chǔ)上,增加一些東方人的圖像數(shù)據(jù)進(jìn)行訓(xùn)練,提高模型在東方人數(shù)據(jù)上識別的準(zhǔn)確率。 另外還采用對數(shù)據(jù)集中人臉圖像數(shù)據(jù)做隨機(jī)變換來提高整個(gè)模型的性能。
為了提高模型在國內(nèi)實(shí)際應(yīng)用效果,需要采集大量東方人臉圖像數(shù)據(jù)來對模型做訓(xùn)練。 采集的過程主要利用爬蟲的方式,從網(wǎng)上爬取大量人臉圖片。 然后將不適合作為訓(xùn)練的人臉圖像過濾掉。 人臉有遮擋,有陰影,或者表情太夸張等等問題的圖片都是不適合作為訓(xùn)練數(shù)據(jù)。
圖1 合適圖片與不合適圖片示意圖
如圖1,上面一行圖片為不合適作為數(shù)據(jù)集的圖片,不合適圖片的問題依次為臉部有異物遮擋,照片不夠正面,臉上有飾品(眼鏡),側(cè)臉照片并且光照太強(qiáng),妝容太重,表情太夸張等等。過濾掉不合適的圖片,最后得到新的100 類的圖片,每類設(shè)定20 張圖片。 不夠20 張圖片的將現(xiàn)有圖片采用隨機(jī)裁剪,翻轉(zhuǎn)等技術(shù)構(gòu)建新的圖片,最后得到20 張圖片。 faces94 數(shù)據(jù)集有152個(gè)類,每個(gè)類有20 張圖片。 將這些數(shù)據(jù)與faces94 數(shù)據(jù)集合并形成一個(gè)新的數(shù)據(jù)集newfaces94,這個(gè)新的數(shù)據(jù)集有252 個(gè)類,每個(gè)類中20 張圖片。
利用一個(gè)像素攻擊方法來生成對抗樣本。該攻擊辦法主要利用差分進(jìn)化算法,對測試集圖像的每個(gè)像素迭代修改生成子圖像,然后測試每個(gè)子圖像的攻擊效果,將攻擊效果最好的子圖像作為為對抗樣本。 這個(gè)方法可以以最小程度的改變圖像,生成可用的對抗樣本,在最好情況下可以只修改一個(gè)像素就達(dá)到很好的攻擊效果。另外與其他攻擊方式不同的是一個(gè)像素攻擊法利用改變的像素的數(shù)量衡量攻擊的強(qiáng)度,控制像素的修改個(gè)數(shù)保持?jǐn)_動足夠小而不被察覺,而其他攻擊方式則是控制整個(gè)圖像修改的幅度。 一個(gè)像素攻擊法中的對抗樣本生成實(shí)際上是一種包含限制條件的優(yōu)化問題。 設(shè)輸入圖像為X=(x1,...,xn)。f為一個(gè)分類器,v(x)=(v1,...,vn)為對抗擾動向量,f表示類別標(biāo)簽,ft(X) 表示圖像X 屬于類別t 的概率,d 為最大修改器限制。對抗樣本生成轉(zhuǎn)為包含限制條件的優(yōu)化問題:
對于單像素攻擊,將d 設(shè)置為1。 這種方法的優(yōu)點(diǎn)是可以高概率找到全局最優(yōu)解,不用計(jì)算梯度,降低了計(jì)算量。 并且屬于半黑盒攻擊,只需要得到黑盒的類別概率而無需知道網(wǎng)絡(luò)的內(nèi)部參數(shù)。 根據(jù)一個(gè)像素攻擊法針對Faces94 數(shù)據(jù)集生成對抗擾動樣本。 缺點(diǎn)是需要為每一個(gè)圖像生成特定的對抗樣本,在數(shù)據(jù)集上沒有泛化能力。
通用擾動具有以下的三個(gè)特點(diǎn)。 第一是生成通用擾動與圖片無關(guān),在數(shù)據(jù)集上具有很好的泛化性。 第二是范數(shù)很小,所以加上這個(gè)通用擾動對圖片本身的結(jié)構(gòu)的改變并不是很大,擾動對于圖像是不可知的。 第三是對于同一個(gè)數(shù)據(jù)集生成的通用擾動跨模型有效,即在模型A 上生成的通用擾動對于模型B 在一定程度上也是有效的。 通用擾動并不是唯一的,即對于一個(gè)深度神經(jīng)網(wǎng)絡(luò)模型可以生成多個(gè)不同的通用擾動。
記μ 是圖片空間Rd中的分布,采樣獲得圖片集X={x1,x2,…,xm},是分類器函數(shù),擾動向量v∈Rd。v滿足以下約束:
上述公式中ξ 控制擾動的范數(shù),δ 用來量化愚弄率。 整個(gè)生成算法是基于v=0 的初始情況下進(jìn)行迭代,最后生成對抗攻擊效果最好的v。在迭代計(jì)算的整個(gè)過程中,如果當(dāng)前的v 不是一個(gè)有效擾動,則使得
再記投影操作為:
則v的更新法則為:
記Xv={x1+v,x2+v,...,xm+v},則迭代停止條件為:
根據(jù)擾動生成的算法,生成1 個(gè)通用擾動。然后將通用擾動加在測試集上的圖片生成對抗樣本后再驗(yàn)證。
在Faces94 數(shù)據(jù)集上生成對抗擾動樣本,F(xiàn)aces94 數(shù)據(jù)集上包括152 個(gè)類,每個(gè)類20 張圖片,共有3040 張圖片。 將Faces94 數(shù)據(jù)集分為兩個(gè)數(shù)據(jù)集,一個(gè)為干凈測試集d1(沒有增加擾動),另一個(gè)為擾動測試集d2。 兩個(gè)數(shù)據(jù)集都包含152 個(gè)類。d1中每個(gè)類包含10 張人臉圖像,d2中每個(gè)類有10 張人臉圖像。 利用上述的兩種方式針對中科院自動化所基于facenet 結(jié)構(gòu)在Webface 數(shù)據(jù)集上預(yù)訓(xùn)練好的模型20181108-102900在d2上分別生成的對抗樣本構(gòu)成新的擾動測試集d2′。 另外由于生成的通用擾動是跨模型的,所以再增加一個(gè)利用其他模型生成的通用擾動生成的對抗樣本對模型進(jìn)行測試。 最后得到的擾動測試集為三個(gè)集合,分別為一個(gè)像素攻擊方法生成的擾動數(shù)據(jù)集d2-1′, 針對模型20181108-102900 的通用擾動方法生成的擾動數(shù)據(jù)集d2-2-1′, 以及針對其他深度神經(jīng)網(wǎng)絡(luò)模型生成的通用擾動形成的擾動數(shù)據(jù)集d2-2-2′。
使用20181108-102900 模型對以上數(shù)據(jù)集進(jìn)行測試,結(jié)果發(fā)現(xiàn)其對于d′2-1的識別成功率只有87.53%,對于d′2-2-1的識別成功率為96.97%,而對于d1與d′2-2-2均有100%的識別成功率,說明通用擾動的泛化性弱。
根據(jù)上述生成對抗樣本的方法,將new-Faces94 中的人臉圖像數(shù)據(jù)劃分成訓(xùn)練集,驗(yàn)證集,測試集,比例為8 ∶1 ∶1。 訓(xùn)練集、驗(yàn)證集、測試集的每個(gè)類分別包含16、2、2 張圖片。 在訓(xùn)練集、驗(yàn)證集、測試集上生成對應(yīng)的對抗樣本。 將對抗樣本分別加入對應(yīng)的數(shù)據(jù)集中。 訓(xùn)練集最終有152 個(gè)類,每個(gè)類64 張圖片;驗(yàn)證集最終有152 個(gè)類,每個(gè)類8 張圖片;測試集最終有152個(gè)類,每個(gè)類8 張圖片。 將其投入對20180408-102900 的訓(xùn)練測試。
本文使用的facenet 人臉識別算法不同于常規(guī)的網(wǎng)絡(luò)結(jié)構(gòu),具體的結(jié)構(gòu)設(shè)計(jì)圖如圖2 所示。
圖2 Facenet 整體結(jié)構(gòu)設(shè)計(jì)圖
如圖2 所示,facenet 和常規(guī)的深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)是兩種概念。 facenet 中可以用各種深度神經(jīng)網(wǎng)絡(luò)。 對于facenet 來說,可以將深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)看作是一個(gè)黑盒子,即不用管具體采用何種神經(jīng)網(wǎng)絡(luò),作用都是一樣的。 不同的是這些神經(jīng)網(wǎng)絡(luò)都需要將softmax 層去掉。 設(shè)輸入圖像為x,則通過上述圖中的Deep Architecture 得到結(jié)果f(x)。 然后再經(jīng)過L2 對f(x) 進(jìn)行歸一化。然 后 再 利 用 Triplet loss ( anchor, positive,negative)對這個(gè)模型訓(xùn)練,端對端的學(xué)習(xí)將一個(gè)圖像變換到歐式空間上。 對于每一個(gè)人臉圖像可以得到一個(gè)128 維的數(shù)據(jù)作為其特征數(shù)據(jù)。在實(shí)際應(yīng)用中,訓(xùn)練得到完整的模型以后可以將這個(gè)模型用作特征提取器。
本文使用的預(yù)訓(xùn)練好的模型20181108-102900 中Deep Architecture 采用的具體神經(jīng)網(wǎng)絡(luò)為Inception resnet v1 網(wǎng)絡(luò)。 Inception resnet v1網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示,但用在facenet 結(jié)構(gòu)中時(shí)需要將softmax 層移除。
將訓(xùn)練集圖像數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),對原始預(yù)訓(xùn)練好的模型進(jìn)行fine-tuning。 在微調(diào)訓(xùn)練開始之前需要重新設(shè)置學(xué)習(xí)率。 并且學(xué)習(xí)率要設(shè)置為隨著迭代次數(shù)的增加而變小。 相對于原來的初始的學(xué)習(xí)率將學(xué)習(xí)率降低設(shè)置為0.01。 考慮到GPU 性能問題將batch_size 值設(shè)置為90。
圖3 Inception resnet v1 網(wǎng)絡(luò)結(jié)構(gòu)圖
預(yù)訓(xùn)練好的模型之中沒有softmax 層,所以不需要對softmax 層做調(diào)整。 因?yàn)橛?xùn)練集數(shù)據(jù)不夠多,所以為了防止過擬合現(xiàn)象,增加了一個(gè)驗(yàn)證集。 過擬合(over-fitting),一般是指在機(jī)器學(xué)習(xí)或者深度過程中由于訓(xùn)練數(shù)據(jù)集較小,學(xué)習(xí)效果太好,導(dǎo)致模型學(xué)習(xí)到一些無用特征。 這樣的模型在測試集上表現(xiàn)很差。 在每個(gè)迭代期的最后通過計(jì)算在驗(yàn)證集上的識別準(zhǔn)確率來判斷是否需要提前停止訓(xùn)練。 如果在驗(yàn)證集上分類準(zhǔn)確率以及飽和,將停止訓(xùn)練。
圖4 驗(yàn)證集上識別率
每一個(gè)epoch 結(jié)束表示使用訓(xùn)練集中的全部樣本訓(xùn)練一次完成,實(shí)際上為一次迭代過程。在實(shí)際fine-tuning 中,采取提前終止的方式防止過擬合問題。 在每一個(gè)epoch 結(jié)束時(shí),計(jì)算模型在驗(yàn)證集的識別準(zhǔn)確率,將截止目前最好的驗(yàn)證集識別準(zhǔn)確率記錄下來,在連續(xù)20 個(gè)epoch 都沒有更新最好記錄時(shí),判定識別效果不再提升,停止迭代。 從圖4 中可以看出準(zhǔn)確率最好為98.78%,在迭代次數(shù)為80 時(shí)訓(xùn)練完成以后停止迭代。 這個(gè)新的模型為20181108-102900。
因?yàn)樗媚P蜎]有softmax 層所以沒有辦法直接用于人臉識別分類測試,而是用于特征提取器。 利用原始模型和新的人臉安全識別模型在驗(yàn)證集上分別訓(xùn)練生成SVM 分類器1,分類器2后在測試集上檢驗(yàn)分類器的識別效果。 這個(gè)測試集數(shù)據(jù)由四部分組成,分別為測試集1 干凈圖像,測試集2 第一種攻擊生成的對抗樣本,測試集3 第二種攻擊生成的通用擾動形成的對抗樣本,測試集4 第二種攻擊生成的另一種通用擾動形成的對抗樣本。 在以上四個(gè)測試集上檢驗(yàn)分類器人臉識別的效果。 測試結(jié)果如表1 所示:
表1 人臉識別準(zhǔn)確率
從表中數(shù)據(jù)可以看出,經(jīng)過fine-tuning 后得到的模型20181108-102900 在正常圖像上的識別效果很好,與原模型的效果相比人臉識別準(zhǔn)確率在新構(gòu)建的含有東方人臉圖像數(shù)據(jù)的數(shù)據(jù)集中沒有下降。 在第一種攻擊方法生成的對抗樣本數(shù)據(jù)集上,人臉識別準(zhǔn)確率為94.65%,與正常數(shù)據(jù)集上識別準(zhǔn)確率相比有所下降,但與未fine-tuning 的識別模型在此類數(shù)據(jù)集上的識別正確率相比很大提高。 而模型20181108 -102900 在通用擾動形成的對抗樣本上識別的準(zhǔn)確率與在普通數(shù)據(jù)集上識別的準(zhǔn)確率保持一致。通用擾動不能再成功影響這個(gè)模型。 從這些數(shù)據(jù)可以看出模型20181108-102900 與原始模型相比在人臉識別方面對東方人臉的人臉識別準(zhǔn)確率更高,識別效果更好,對于對抗樣本攻擊的防御能力進(jìn)一步提高擾動,實(shí)現(xiàn)人臉安全識別。
本文首先介紹了基于同態(tài)加密的人臉安全識別方案中所用到的深度神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)facenet 以及其設(shè)計(jì)原理。 在本文中還分析了幾種主流對抗擾動的原理,并根據(jù)基于facenet 結(jié)構(gòu)的人臉識別模型生成對應(yīng)對抗樣本,然后利用對抗樣本對該模型進(jìn)行驗(yàn)證。 為了進(jìn)一步防御對抗樣本,對原始模型進(jìn)行fine-funing,最后得到人臉安全識別模型20181108-102900。 通過實(shí)驗(yàn)數(shù)據(jù)分析模型20181108-102900 對于東方人臉識別適應(yīng)性更好,在防御對抗樣本攻擊方面能力顯著提高,識別準(zhǔn)確率和安全性都更高。 在人臉識別模型層級上,防御第三方利用對抗樣本攻擊人臉識別模型,生成了人臉安全識別模型,實(shí)現(xiàn)人臉安全識別。