
如果僅允許攻擊者修改一個像素的顏色並僅查看預測概率,則導致深層神經網絡錯誤地分類圖像有多簡單?原來這很簡單。在許多情況下,攻擊者甚至可以使網絡返回他們想要的任何答案。
以下項目是重新實現的KERAS和“用於欺騙深層神經網絡”的“一個像素攻擊”的教程。該論文的官方代碼可以在此處找到。
對於此攻擊,我們將使用CIFAR10數據集。數據集的任務是將32x32像素圖像正確分類為10個類別(例如,鳥,鹿,卡車)。黑框攻擊僅需要由神經網絡輸出的概率標籤(每個類別的概率值)。我們通過選擇像素並將其修改為某種顏色來生成對抗圖像。
通過使用稱為差異進化(DE)的進化算法,我們可以迭代生成對抗圖像,以嘗試最大程度地減少神經網絡分類的置信度(概率)。

學分:Pablo R. Mier的博客
首先,生成幾個對抗樣本,這些樣本修改隨機像素並通過神經網絡運行圖像。接下來,將以前的像素的位置和顏色結合在一起,從中生成更多的對抗樣本,並通過神經網絡運行新圖像。如果有像素從最後一步降低了網絡的置信度,請將它們替換為當前最著名的解決方案。重複這些步驟以進行一些迭代;然後在最後一步返回對抗圖像,從而最大程度地降低了網絡的信心。如果成功,信心將被降低,以至於新的(不正確)類別現在具有最高的分類信心。
有關成功攻擊的一些示例,請參見下文:

需要GPU還是只想閱讀?使用Google Colab查看第一個教程筆記本。
要在本地教程中運行代碼,建議使用適合與Keras( tensorflow-gpu )運行的專用GPU。需要Python 3.5+。
git clone https://github.com/Hyperparticle/one-pixel-attack-keras
cd ./one-pixel-attack-keraspip install -r ./requirements.txtjupyter notebook ./one-pixel-attack.ipynb要訓練模型,請運行train.py 。每個時期之後,將檢查該模型(保存)到networks/models目錄。
例如,訓練具有200個時期和批次大小為128的重新系統:
python train.py --model resnet --epochs 200 --batch_size 128要執行攻擊,請運行attack.py 。默認情況下,這將運行所有具有默認參數的模型。要指定要測試的模型類型,請使用--model 。
python attack.py --model densenet capsnet當前可用的模型是:
lenet -Lenet,第一個CNN模型pure_cnn一個只有捲積層的nnnet_in_net網絡中的網絡resnet - 圖像識別的深度殘留學習densenet密集連接的捲積網絡wide_resnet寬剩餘網絡capsnet膠囊之間的動態路由在各種模型上運行多個實驗後的初步結果。每個實驗都會產生100個對抗性圖像,併計算出攻擊成功率,即成功導致模型將圖像錯誤分類在圖像總數上的圖像之比。對於給定的模型,基於圖像中可以修改的像素的數量(1,3或5),運行多個實驗。差異算法的人口大小為400,最大迭代計數為75。
攻擊1,3,5像素擾動(100個樣本)
| 模型 | 參數 | 測試準確性 | 像素 | 攻擊成功(未靶向) | 攻擊成功(針對性) |
|---|---|---|---|---|---|
| Lenet | 62k | 74.9% | 1 | 63.0% | 34.4% |
| 3 | 92.0% | 64.4% | |||
| 5 | 93.0% | 64.4% | |||
| 純CNN | 14m | 88.8% | 1 | 13.0% | 6.67% |
| 3 | 58.0% | 13.3% | |||
| 5 | 63.0% | 18.9% | |||
| 網絡中的網絡 | 970k | 90.8% | 1 | 34.0% | 10.0% |
| 3 | 73.0% | 24.4% | |||
| 5 | 73.0% | 31.1% | |||
| 重新連接 | 470k | 92.3% | 1 | 34.0% | 14.4% |
| 3 | 79.0% | 21.1% | |||
| 5 | 79.0% | 22.2% | |||
| Densenet | 850k | 94.7% | 1 | 31.0% | 4.44% |
| 3 | 71.0% | 23.3% | |||
| 5 | 69.0% | 28.9% | |||
| 寬重新設備 | 11m | 95.3% | 1 | 19.0% | 1.11% |
| 3 | 58.0% | 18.9% | |||
| 5 | 65.0% | 22.2% | |||
| CAPSNET | 12m | 79.8% | 1 | 19.0% | 0.00% |
| 3 | 39.0% | 4.44% | |||
| 5 | 36.0% | 4.44% |
看來,膠囊網絡蓋瓶網雖然比所有其他CNN都對一個像素攻擊更具彈性,但仍然很容易受到攻擊。