開発工程 | 攻撃分類 | 攻撃手法 | 防御手法 |
---|---|---|---|
学習データの収集/作成 (Data Preparation) |
データ汚染 |
|
|
モデルの学習/作成 (Model Fitting) |
モデル汚染 |
|
|
モデルの設置 (Deployment) |
敵対的サンプル | ||
データ窃取 |
|
||
|
|||
モデル窃取 |
|
Adversarial Patches
AIによる物体検知を回避する手法。攻撃の目標は「敵対的サンプル」と同じく分類器や物体検知器の誤分類を誘発することですが、本手法は現実世界で攻撃を行うことに焦点を当てており、Adversarial Patchesと呼ばれる「特殊な柄のパッチ」を物体に貼り付けることで、AIベースのカメラ(監視カメラなど)で撮影された物体を全く関係のない物体として誤検知または検知不能にすることができます。仮に、建物への侵入を試みる攻撃者がAdversarial Patchesを(AIベースの)監視カメラに提示した場合、監視カメラが攻撃者を検知できずに建物への侵入を許してしまうおそれがあります。
Adversarial Patchesは、モデルの設置/運用・保守工程を狙った「敵対的サンプル」の1手法です。
2019年に発表された論文「Fooling automated surveillance cameras: adversarial patches to attack person detection」において、当時最先端の物体検知モデル「YOLOv2」に対し、本論文の提案手法で作成したAdversarial Patchesを提示することで、人物を検知不能にすることに成功したことで大きな注目を集めました。
Adversarial Patchesは、特殊な柄のパッチをAIベースの物体検知カメラ(以下、物体検知器)に提示することで、物体を「全く関係のない物体として誤検知」または「検知不能」にする手法です。
攻撃者は「ランダムな値で初期化されたパッチ」を物体検知器への入力データに挿入し、物体検知器の損失関数を観察します。そして、損失を基に、物体検知の「誤差が大きくなる方向」にパッチに変更を加えます。これを繰り返し行うことで、徐々に物体検知の精度を著しく低下させるパッチ柄が作成されていきます。
以下の図は、Adversarial Patchesを印刷したボードを貼り付けた右側の人物を、物体検知器「YOLOv2」が検知できなくなった様子を表しています。
左側の人物は正しく「person」と検知されているのに対し、右側の人物は全く検知されていないことが分かります。
なぜ、このようなことが起きるのでしょうか?
Adversarial PatchesはYOLOv2の物体検知の仕組みを巧みに利用しています。Adversarial Patchesの解説に入る前に、YOLOv2の物体検知の仕組みを見ていきましょう。
YOLO(You Only Look Once)は、リアルタイムで物体検知を行うことができる最先端のモデルです。
YOLOでは、入力画像をCNN(畳み込みニューラルネットワーク)に一度与えるだけで、画像に含まれる複数の物体を同時に検知できるという優れた特徴を持っています。
以下の図は、YOLOが物体検知を行う手順を表しています。
先ず、YOLOでは入力画像をNxNのグリッドセルとして扱います(左の画像)。
各セルは(画像に含まれる物体を区切る)バウンディングボックスを物体に当てはめる役割を果たし、真ん中の上の画像のように、セル内に存在する「物体と思しきピクセルの集合」にバウンディングボックスを当てはめていきます。
次に、各バウンディングボックス内の「物体と思しきピクセル集合が物体である確率」と、(仮に物体であった場合)その「物体が属するクラスの確率」が同時に計算され、最大値のクラス確率を持つクラスが選択されます。真ん中の下の画像は、この処理結果を視覚化するために、選択されたクラスを色分けしています(本例では、オレンジ色が車クラス、ピンク色が自転車クラス、緑色が犬クラス)。
最後に、バウンディングボックスを結合する処理が行われ、右の画像のようなバウンディングボックスに集約されて出力されます。
このようにYOLOでは、「物体と思しきピクセル集合が物体である確率」と(仮に物体であった場合)その「物体が属するクラスの確率」を同時に計算することで、入力画像を一度だけCNNに与えるのみで同時に複数の物体を検知することができます。
次に、この特性を踏まえた上で、Adversarial Patchesの仕組みを見ていきましょう。
以下の図は、Adversarial Patchesを作成する手順を表しています。
先ず、ランダムな値で初期化したパッチ(Adversarial patch)を様々な入力画像(Dataset)に挿入(Patch applier)してYOLOv2に入力します。この時、YOLOv2は前セクションで説明したように各グリッドセルでバウンディングボックスを計算します。
なお、図の右上に示す「Lobj」は、バウンディングボックス内に存在するピクセル集合の物体らしさの損失、「Lcls」は(仮にピクセル集合が物体であった場合)物体が属する可能性のある各クラスの損失を表しています。
通常の学習では各損失を最小化するように重みを更新していきますが、Adversarial Patchesでは重みを固定した上で、各損失(Lobj, Lcls)を最大化するような摂動をAdversarial Patchに加えていきます。この手順を繰り返すことで、物体として検知されないパッチ柄(=Lobjが大きくなるパッチ柄)や、(物体として検知された場合でも)全く関係のない物体として検知されるパッチ柄(=Lclsが大きくなるパッチ柄)を作成することができます。
なお、実世界における物体検知では、物体がカメラに映り込む角度や照明条件などが大きく影響します。また、不自然なパッチ柄は人間に怪しまれます。このため本論文の手法では、攻撃の成功率を高めるために、紙に印刷する際の色味や角度、より滑らかな画像になるようにAdversarial Patchを作成するなど工夫を凝らしています。
以下は、本論文の著者らによるAdversarial Patchesのデモ動画です。
Adversarial Patchesを印刷した紙を持たない人物は正しく「person」として検知されていますが、Adversarial Patchesを持つ人物は、カメラに映る角度や距離を変えても全く検知されていないことが分かります。
本記事では、リアルタイムの物体検知AIによる物体検知を不能にする、または、誤分類を引き起こす「Adversarial Patches」と呼ばれる手法を紹介しました。Adversarial Patchesは様々な論文で改良が続けられており、様々な条件でも有効に作用するロバストなAdversarial Patchesや、キャラクター画像に扮したAdversarial Patchesなど、より現実世界で利用可能なAdversarial Patchesが次々と提案されています。
物体検知AIを開発している方は、開発している製品がAdversarial Patchesの影響を受けないよう、リリース前にAdversarial Patchesへの耐性テストを行う必要があると考えます。そのテストに役立つデータセットの一つとしてMITREが「APRICOT」を公開しています。このデータセットには様々なAdversarial Patchesのパターンが収録されているため、Adversarial Patchesへの耐性テストに役立つことでしょう。
より詳細な内容を知りたい方は、論文「Fooling automated surveillance cameras: adversarial patches to attack person detection」をご参照ください。