Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Convolutional Neural Networkに対する攻撃手法

4,175 views

Published on

CNNに微小に細工した画像を入力させることで、クラスの誤分類を誘発する手法。

Published in: Software
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Convolutional Neural Networkに対する攻撃手法

  1. 1. 2017.04.25 AISECjp #10 Presented by Isao Takaesu Convolutional Neural Networkに対する攻撃手法 - 誤分類の誘発 -
  2. 2. About the speaker • 職業 : セキュリティエンジニア • 所属 : MBSD • 趣味 : 脆弱性スキャナ作り、機械学習 • ブログ: http://www.mbsd.jp/blog/ • Black Hat Asia Arsenal, CODE BLUE / 2016 • AISECjp 共同管理者 高江洲 勲 Takaesu Isao AISECjp
  3. 3. 元ネタの論文 Simple Black-Box Adversarial Perturbations for Deep Networks AISECjp Author : Nina Narodytska Shiva Prasad Kasiviswanathan (Samsung Research America) Post Date: 19 Dec 2016 arXiv:https://arxiv.org/abs/1612.06299
  4. 4. 概要 AISECjp CNNへの入力画像を(人間には分からないくらいに)微小に 細工することで、CNNの誤分類を誘発(効率良く、black-boxで)。 ※出典:Simple Black-Box Adversarial Perturbations for Deep Networks original : perturbed : (誤分類) stingray sea lion ostrich goose jay junco water ouzel redshank
  5. 5. 想定されるリスク  ビデオトラッキングの迂回 CNNで顔認識(入館用カメラや防犯カメラ等)をしている場合、 顔に微小なペイントを施すことで顔を誤認識する。 ⇒不正入館や要注意人物を取り逃がす可能性がある。  自動運転自動車の誤判断 CNNで車外の物体を認識している場合、 歩行者や他の車、道路標識や信号機等を誤認識する。 ⇒重大な事故に繋がる可能性がある。 ・・・ AISECjp
  6. 6. 検証したCNNモデル:VGG16 by Keras AISECjp _______________________________________________________ Layer (type) Output Shape ======================================================= input_1 (InputLayer) (None, 32, 32, 3) _______________________________________________________ block1_conv1 (Convolution2D) (None, 32, 32, 64) _______________________________________________________ block1_conv2 (Convolution2D) (None, 32, 32, 64) _______________________________________________________ block1_pool (MaxPooling2D) (None, 16, 16, 64) _______________________________________________________ block2_conv1 (Convolution2D) (None, 16, 16, 128) _______________________________________________________ block2_conv2 (Convolution2D) (None, 16, 16, 128) _______________________________________________________ block2_pool (MaxPooling2D) (None, 8, 8, 128) _______________________________________________________ block3_conv1 (Convolution2D) (None, 8, 8, 256) _______________________________________________________ block3_conv2 (Convolution2D) (None, 8, 8, 256) _______________________________________________________ block3_conv3 (Convolution2D) (None, 8, 8, 256) _______________________________________________________ block3_pool (MaxPooling2D) (None, 4, 4, 256) _______________________________________________________ block4_conv1 (Convolution2D) (None, 4, 4, 512) _______________________________________________________ block4_conv2 (Convolution2D) (None, 4, 4, 512) _______________________________________________________ block4_conv3 (Convolution2D) (None, 4, 4, 512) _______________________________________________________ block4_pool (MaxPooling2D) (None, 2, 2, 512) _______________________________________________________ block5_conv1 (Convolution2D) (None, 2, 2, 512) _______________________________________________________ block5_conv2 (Convolution2D) (None, 2, 2, 512) _______________________________________________________ block5_conv3 (Convolution2D) (None, 2, 2, 512) _______________________________________________________ block5_pool (MaxPooling2D) (None, 1, 1, 512) _______________________________________________________ sequential_1 (Sequential) (None, 10) _______________________________________________________ 畳み込み層:13層のNeural Network(ImageNetで学習済み)。 加えて、検証用のデータセット(CIFAR10)でFine-tuning。
  7. 7. 検証で使用したデータセット:CIFAR10 AISECjp ※出典:https://www.cs.toronto.edu/~kriz/cifar.html 50,000枚の訓練用画像と10,000枚のテスト用画像を収録。 クラスは10クラス(airplane, automobile, … , ship, truck) 32 x 32, RGB
  8. 8. VGG16による正常時の分類結果 AISECjp ('cat', 0.76542097) ('dog', 0.19257075) ('bird', 0.015834473) ('cat', 0.76715392) ('airplane', 0.12106296) ('dog', 0.074757278) ('horse', 0.45894068) ('dog', 0.44658324) ('cat', 0.070699759) CIFAR10:猫 32 x 32 pixel サイズの大きい画像:猫 6720 x 4480 pixel クラスに無い画像:人間 193 x 197 pixel ImageNetとCIFAR10で学習したことで、 様々なサイズ・種類の画像を尤もらしいクラスに分類可能。 ⇒CIFAR10に存在しないクラスの画像(人間)は、最も近しいクラス(?)に分類。
  9. 9. 誤分類を誘発させる AISECjp
  10. 10. 検証方法 1. CIFAR10のテスト用画像(クラスはcat)から1枚読み込む 2. 画像内からランダムに選択した1pixelを細工する pixel value > 128:RGB(0, 0, 0):黒 pixel value =< 128:RGB(255, 255, 255):白 3.細工した画像をCNN(VGG16)に入力 4.CNNの分類結果を観測 5.誤分類が発生したら次の画像をテストする(1に戻る) 誤分類されない場合は2~4の試行を最大100回繰り返す AISECjp
  11. 11. 検証結果サマリ AISECjp ・catのテスト用画像1,000枚の内、78枚を別のクラスに誤分類 ・dog, frogに誤分類する割合が多い ・誤分類に成功するpixel位置に規則性はない 誤分類したクラス 枚数 airplane 1 automobile 1 bird 8 deer 4 dog 36 frog 19 horse 4 ship 3 truck 2
  12. 12. 検証結果の詳細(一例) AISECjp ('cat', 0.68972313) ('dog', 0.29061893) ('bird', 0.0085681491) ('dog', 0.51095092) ('cat', 0.47476733) ('bird', 0.0056552952) perturbedoriginal 元画像は約68%の確率で猫(cat)と正しく分類。 細工画像は約51%の確率で犬(dog)と誤分類。
  13. 13. ('cat', 0.68972313) ('dog', 0.29061893) ('bird', 0.0085681491) ('dog', 0.51095092) ('cat', 0.47476733) ('bird', 0.0056552952) 元画像は約68%の確率で猫(cat)と正しく分類。 細工画像は約51%の確率で犬(dog)と誤分類。 検証結果の詳細(一例) AISECjp perturbedoriginal 細工箇所
  14. 14. 検証結果の詳細(一例) AISECjp ('cat', 0.57286674) ('frog', 0.26482207) ('deer', 0.088725276) ('frog', 0.55007768) ('cat', 0.29504463) ('deer', 0.094751559) perturbedoriginal 元画像は約57%の確率で猫(cat)と正しく分類。 細工画像は約55%の確率で蛙(frog)と誤分類。
  15. 15. ('cat', 0.57286674) ('frog', 0.26482207) ('deer', 0.088725276) ('frog', 0.55007768) ('cat', 0.29504463) ('deer', 0.094751559) 元画像は約57%の確率で猫(cat)と正しく分類。 細工画像は約55%の確率で蛙(frog)と誤分類。 検証結果の詳細(一例) AISECjp perturbedoriginal 細工箇所
  16. 16. 検証結果の詳細(一例) AISECjp ('cat', 0.48120362) ('bird', 0.40441346) ('dog', 0.059162639) ('bird', 0.48002127) ('cat', 0.42222592) ('dog', 0.047608543) perturbedoriginal 元画像は約48%の確率で猫(cat)と正しく分類。 細工画像は約48%の確率で鳥(bird)と誤分類。
  17. 17. 検証結果の詳細(一例) AISECjp perturbedoriginal 細工箇所 ('cat', 0.48120362) ('bird', 0.40441346) ('dog', 0.059162639) ('bird', 0.48002127) ('cat', 0.42222592) ('dog', 0.047608543) 元画像は約48%の確率で猫(cat)と正しく分類。 細工画像は約48%の確率で鳥(bird)と誤分類。
  18. 18. 1pixelの細工で 誤分類が誘発される AISECjp
  19. 19. どうやって対策する? AISECjp
  20. 20. 対策案 予めノイズが乗った画像で訓練する。 元の訓練用画像に、Salt&Pepperノイズを乗せた画像を加える。 ・ノイズを乗せた訓練用画像(一例) AISECjp ⇑ 細工画像に似ているため、細工の影響を緩和できるのでは?
  21. 21. 対策後の検証結果サマリ AISECjp ・対策前に誤分類した78枚の内、44枚を猫(cat)クラスに正しく分類 ・訓練用画像にノイズを乗せることで一定の効果がある 分類されたクラス 枚数 cat 44 automobile 2 bird 4 deer 1 dog 14 frog 5 horse 4 ship 3 truck 1
  22. 22. 対策後の検証結果詳細(一例) AISECjp ('cat', 0.53935719) ('dog', 0.4589588) ('bird', 0.00063569623) ('dog', 0.51095092) ('cat', 0.47476733) ('bird', 0.0056552952) perturbed 対策前は約51%の確率で犬(dog)と誤分類。 対策後は約53%の確率で猫(cat)と正しく分類。 細工箇所 対策前 対策後
  23. 23. 対策後の検証結果詳細(一例) AISECjp ('cat', 0.71672058) ('frog', 0.14184321) ('deer', 0.11105834) perturbed 対策前は約55%の確率で蛙(frog)と誤分類。 対策後は約71%の確率で猫(cat)と正しく分類。 細工箇所 対策前 対策後 ('frog', 0.55007768) ('cat', 0.29504463) ('deer', 0.094751559)
  24. 24. 対策後の検証結果詳細(一例) AISECjp ('cat', 0.88032275) ('dog', 0.04940429) ('bird', 0.042262945) perturbed 対策前は約48%の確率で鳥(bird)と誤分類。 対策後は約88%の確率で猫(cat)と正しく分類。 対策前 対策後 ('bird', 0.48002127) ('cat', 0.42222592) ('dog', 0.047608543) 細工箇所
  25. 25. まとめ ・微小な細工を加えるだけで誤分類を誘発可能 ・細工の有無は人間の目には分かりにくい ・細工箇所に規則性なし(猫本体や背景の細工でも誤分類する) ・任意のカテゴリに誤分類させることは困難(現手法では) ・訓練用画像にノイズを乗せると、誤分類への耐性が高まる。 ⇒コントラスト調整、ぼかし、他ノイズも加えると耐性が増すか?(要検証) AISECjp
  26. 26. 課題 AISECjp ・サイズの大きい画像で誤分類させる ⇒ランダム選択では効率が悪いため、別手法を考える。 ・なぜ誤分類するのか?CNNの原因個所を特定する ⇒分類過程の可視化やファジングで特定できるか? ・意図したクラスに誤分類させる手法を考える ⇒成功すると物体認識系にとって大きな脅威となる
  27. 27. 検証コード AISECjp https://github.com/13o-bbr-bbq/machine_learning_security/tree/master/CNN_test ・finetuning.py 検証用モデルの作成。 kerasのVGG16をCIFAR10でFine-tuning。 ・search_adv.py 細工画像の生成&誤分類の観測。 ・predict.py 画像のクラス分類(正常画像、細工画像の確認用)。
  28. 28. Download “.PDF” version of this document: ≫ https://aisecjp.connpass.com/event/52104/

×