當前位置:
首頁 > 知識 > GeekPwn對抗樣本挑戰賽冠軍隊伍開源人臉識別攻擊解決方案

GeekPwn對抗樣本挑戰賽冠軍隊伍開源人臉識別攻擊解決方案

機器之心編輯

參與:路、王淑婷

10 月 24 日,2018 GeekPwn 國際安全極客大賽在上海展開,由 FAIR 研究工程師吳育昕、約翰霍普金斯大學在讀博士謝慈航組成的團隊獲得了令人矚目的CAAD CTF 冠軍。近日,該冠軍隊伍開源了其在人臉識別攻擊項目中的解決方案。

2018 Geekpwn CAAD(對抗樣本挑戰賽)繼承了 NIPS CAAD 2017 比賽的形式,但同時也添加了一些新的挑戰。2018 年 10 月,吳育昕和謝慈航受邀參加 Geekpwn CAAD CTF,這是一場展示不同類型對抗樣本攻防的現場比賽。

比賽上半場中,賽會要求所有選手進行非定向圖片(將飛行器識別為任何其他物體)、定向圖片(將武器識別為特定的其他物品)以及亞馬遜名人鑒別系統(將大賽主持人蔣昌建的照片識別為施瓦辛格)共計三種圖像的對抗樣本攻擊。由於在比賽前選手並不知曉題目模型所採用的演算法,所以此類攻擊也被稱為「黑盒攻擊」,其中第三個挑戰在賽前更是被評委視為「無法完成的任務」。

第三項挑戰是一項新挑戰,要求參賽隊伍攻擊未知的人臉識別系統。在限時 30 分鐘的上半場比賽中,參賽者拿到大賽主持人蔣昌建的照片。他們需要對照片做一些小的修改,以欺騙人臉識別系統,讓它把照片中的人識別為施瓦辛格。比賽結束後,大家才知道該人臉識別系統是亞馬遜名人鑒別系統。

由吳育昕與謝慈航組成的「IYSWIM」戰隊在限時 30 分鐘的比賽中,首先於 21 分鐘破解了亞馬遜名人鑒別系統 Celebrity Recognition,並隨後在定向圖片的對抗樣本攻擊上破解成功,取得了領先。

近日,吳育昕在博客中簡單介紹了他們對人臉識別的攻擊,代碼也放到了 GitHub 上。吳育昕稱他們對比賽其他類型的攻擊使用的是類似的演算法,只是換了不同的 CNN。而關於比賽下半段防禦相關內容的 paper 將稍後放出,代碼和模型將於明年開源。

攻擊方法

吳育昕在博客中稱其黑盒攻擊是很傳統的方法,即用已知模型做梯度下降。

1. Model:

搜了搜 GitHub 上的人臉識別代碼,找了個 5 分鐘內能跑起來的 facenet。畢竟 GitHub 上大部分代碼質量堪憂,有不少項目完全是靠 README 騙 star 的。能否短時間內復現 evaluation 結果是評判質量的重要 metric。更何況,我這次只需要能 evaluation 就夠了。

facenet 的人臉識別流程很標準:對每張臉 I 輸出一個 vector f(I),然後通過比較不同臉的 f(I) 之間的 cosine distance 進行人臉識別。

2. Objective:

對於分類器的 target/untarget attack,沒什麼好說的,就是 minimize/maximize 一個 cross entropy loss。而對於人臉,我們首先收集 target 人物的 N 張人臉圖片,運行模型得到 N 個 embedding vector v_i。我們的 objective 就是 minimize 輸入圖片的 embedding 到這 N 個 embedding 的平均距離:

3. Attack:

我們在最原始的 PGD (Projected Gradient Descent) 攻擊上加了點 trick。原始的 PGD 就是

1)算 objective 對輸入圖片的梯度 ΔI

2)更新輸入 I = I?sign(ΔI)

3)clip 以免輸入超出允許範圍:Iclip(I,I_orig??,I_orig+?)

4)回到第一步循環

這裡有不少 trick 可以提高黑盒攻擊的 generalization 能力:

1)對梯度 normalize 一下,然後更新時用 0.9 的 momentum

2)在循環每一步給圖片隨機加點小 noise

3)在循環每一步對輸入圖片做些亂七八糟的隨機 resize 變換

4)對梯度做 spatial smoothing

這些 trick 從去年的 NIPS 比賽之後就陸續被大家用了。這次的人臉攻擊用了 1,2,3。第三條是我比賽時發現代碼不 work 臨時加上的。事後驗證發現,這一點尤其重要。如果不加的話攻擊很難成功。

在相關的 GitHub repo 中,我們可以看到該團隊的攻擊代碼和結果:

結果

比賽期間,吳育昕團隊成功地攻擊了 AWS 名人鑒別系統,讓它把蔣昌建識別為了施瓦辛格。

下面這個挑戰比較困難(不同隨機種子的成功率較低),可能是因為:1)原人物和目標人物都是美國名人。2)性別不同。

很明顯,Azure Vision API 和 Clarifai Celebrity Recognition 系統都可以被欺騙:

以上圖像的原版本和對抗版本都可以從以下地址找到,若有興趣你可以下載並在公開 API 上進行測試:https://github.com/ppwwyyxx/Adversarial-Face-Attack/blob/master/images

使用代碼的準備工作

1. 安裝TensorFlow≥ 1.7

2. 按照 facenet wiki 中的步驟 1 - 4 設置 facenet(https://github.com/davidsandberg/facenet/wiki/Validate-on-LFW)

3. 複製此 repo 並解壓內部的預訓練模型:

你也可以從 facenet 下載模型(https://github.com/davidsandberg/facenet#pre-trained-models)。

4. 驗證模型和數據集:

它應該在 LFW 數據集上有高準確率,如:

執行攻擊

--target 必須是在 LFW 數據集中有很多圖像(越多越好)的人。可以通過以下方式找到這種人:

你可以在 LFW 目錄中添加新的名人作為 victim,或者為 LFW 中現有的名人添加圖像。添加新圖像之後,你需要重複 facenet wiki 中的步驟 4,以裁剪和對齊添加的新圖像。

請注意,攻擊包含隨機性:你不會每次都得到相同的輸出。

博客地址:http://ppwwyyxx.com/2018/Geekpwn-CAAD-CTF/

GitHub 地址:https://github.com/ppwwyyxx/Adversarial-Face-Attack

本文為機器之心編輯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

NeurIPS 2018優化相關論文提前看
Facebook新研究優化硬體浮點運算,強化AI模型運行速率

TAG:機器之心 |