yoheikikuta / paper-reading

Notes about papers I read (in Japanese)
156 stars 4 forks source link

[2018] Beyond Pixel Norm-Balls: Parametric Adversaries using an Analytically Differentiable Renderer #48

Open yoheikikuta opened 4 years ago

yoheikikuta commented 4 years ago

論文リンク

https://arxiv.org/abs/1808.02651

公開日(yyyy/mm/dd)

2018/08/08

概要

adversarial example を作るために摂動を加える時、従来手法の多くは物体の形状などは気にせず単にピクセルに誤認識を引き起こすような摂動を加えるものだった。これは物体の形状を考慮していないので、デジタル上の処理では気にすることはないが 3D の実世界の物体に摂動を加えることを考えれば非現実的な摂動になりうるものだった。 この論文では、微分レンダラーを用いて、3D の物体形状を考慮した上で lighthing と geometry に注目してそれらに沿って摂動を加えることで adversarial example を作ることに成功した。ligthing は物体形状を変えずに光の反射具合や色味を変えるようなもので、geometry は質感に凹凸を加えて少し形状を変えるようなものである。レンダリングの式にいくつか仮定を入れて、球面調和関数展開の低次の項だけを使うことで効率的な計算を可能にした。 物体形状を捉えているので多視点でも adversarial attack が成功するようになる。 また、この手法で作成したデータを作って adversarial training をすることで、実データ(3D モデリングではなくて実際の物体をラインティグなどを変えて撮影して 2D のテストデータを作成)でも防御がある程度成功することを示した。

典型的な結果は以下。

yoheikikuta commented 4 years ago

adversarial example を作る際の摂動に関して、これまでは画像に写っている対象とかには興味がなくて好き勝手にピクセル値をいじってたけど、人間に知覚できないという観点からは物体形状とかに合わせて摂動を加えた方がいいよな、と思っていたところに発見した論文。

微分レンダラーとか名前しか知らなかったので、ちょうどよくその辺もちと勉強しようかなということで読んでみることにした。

yoheikikuta commented 4 years ago

従来までの摂動の加え方は、pixel norm-ball というものだ。 これは例えば $ l_2 $ で摂動の大きさに制限をかけたりするので、その意味で norm-ball と呼んでいる。

これは大きさを制限しているだけで、上で述べたように写っている物体に関しては何も気にしていない。 画像中に何かしらの物体が写っている場合でも、摂動はそんなことを気にせずモデルが誤認識しやすいようにピクセル値を変更させていく(背景をいじるのが効くならガンガン背景もいじっていく)。

これで確かに攻撃成功率が高いわけだが、現実世界で適用することを考えれば、このような摂動の加え方はあまり効果的ではないように思える。物体との距離や角度が変わるし、当然背景だって変化し得る。 より現実世界で意味のある攻撃というのは、物体形状に沿って摂動を加えるようなものであろう。

ということで、この論文では parametric norm-ball という手法を提案していく。parametric というのは物体形状をパラメトライズして、それに沿った形で摂動を加えるというものになる。

こういうモチベーションはまっとうなものに感じる。実際やるのはちと大変だろうけど...

yoheikikuta commented 4 years ago

ちなみにこういう話はこの論文が初めてというものではなくて、例えば Adversarial Attacks Beyond the Image Space という論文でも 3D オブジェクトを用いてそのオブジェクトに沿って摂動を加えたりしている。

この論文と先行研究との比較は以下。Perf. は adversarial example を作るスピードやスケーラビリティという観点。上で挙げた先行研究が中段のもので、3D オブジェクトとレンダリングネットワークを使っているので lighting に関する摂動などを作れるが作成には何分も掛かるものになっているらしい。 この論文ではスピーディー(必要な部分のパラメタだけを対象に計算)にかつオブジェクトに沿った ligthing や geometry に摂動を加えることを可能にしたものになっている。

そして微分レンダラーとしても以下の比較のように優秀なものになっているとの主張。 まあこの人たちのは adversarial example としてある種のものに限定して作るという決め事をして、そこだけを対象に計算をしているという話なのであまりフェアな比較ではないかもしれない(比較手法の目的と内容があまり分かってないので自分には判断できない)。

yoheikikuta commented 4 years ago

(white box attack の) adversarial example の基本は、loss function を微分して誤認識するような方向に画像をいじっていくということだが、この論文では物体の形状に着目して摂動を加えたいので物体の形状をパラメトライズする必要がある。

物体の形状といっても色々な捉え方があるが、この論文では lighting U と geometry V に着目している。I を image (これはすなわちピクセル値から成る) とすれば、loss function C を U, V で微分するというのは以下のような chain rule を実施することになる。

抽象論で言えばこれで尽きている。 あとは微分レンダラーを用いてどのように U, V を定め、その微分を計算していくのかということが論点になる。

yoheikikuta commented 4 years ago

話を理解するためにはまず physically based rendering (PBR) について知る必要がある。

PBR とは以下のように、光源存在下の 3D のオブジェクト(を含む風景全体)を、反射光なども考慮して、カメラで撮影した時に得られる 2D の像を得るというものである。

これを実施するために本質的な役割を果たすのがレンダリング方程式となる。 空間上のある点 $ p $ に注目し、その $ p $ が角度 $ w_0 $ にどれくらい光を発しているか(radiance: 放射輝度)を求めるための方程式である。 第一項は $ p $ に光源があってそれが発する光となる。ただしこの論文では物体自身は光を発しないとして無視する。 第二項は $ p $ に角度 $ w_i $ で $ u_i $ だけ光が入ってきたときに、物質がどれくらいひ光を反射するかを $ f_r $ で記述して、それを全立体角で積分したものになっている。

論文でこの式が出た時はまだ $ n $ が何者かは紹介していないが、これは表面の法線ベクトルになる。これで光がどれくらい $ p $ に注ぎ込まれるかが定まる(90°の方向からは光は入り込んでこない)ということなんだと思う。

この段階ですでにいくつか過程を置いていて、まず時間に依らない定常状態のみを相手にする(できる)と仮定する。さらに光の波長による違いは無視している。

あとはこれを全 $ p $ 点と全出力角度 $ w_o $ で計算できれば、任意の角度から眺めたときに全部の点がどれくらい光を反射しているかが分かるので、どのように 2D に mapping されるかが分かる。 光の軌跡をちゃんと追跡するためのさらなる仮定として、空気中での相互作用は無視するし、物体を透過するのも無視する。まあ光と物体表面での反射だけを考えれば大体の場合十分だろうということは想像に難くない。

ただしこれだけだと当然まだまだ計算が大変なので、以下で更なる簡単化をしていく。

LOCAL ILLUMINATION

本来光は何度も反射をしてカメラに飛び込んでくる。そういうのを取り扱うのは無理筋なので、一回だけ反射をする場合だけを考える。つまり、光源から光が入射して、それが反射されてカメラに飛び込んでくる光だけを対象にする。

こうすると、他の物体に遮られた光が無視されるので、例えば影ができない。 これの取り扱いとしては OPENGL で使われているラスタライゼーションを使うとしている。$ u(p, w_0) = R(p, n, w_0) $ と書くとか以下の図のようなイメージとしているが、どう特殊なことをしているかよく分かってない。

LAMBERTIAN MATERIAL

Lambertian materials は各点で等方的に光を反射する物質のことを指すらしい。簡単化のためですね。 こうすると、物質の反射の仕方を司っていた $ f_r $ は角度に依らなくなるので $ ρ(p) $ などと書け、全体は以下の形に簡単化される。

ここで立体角積分は上半分の球面 $ \Omega(n) $ に限定している。 これは、太陽のように上から光がくる場合、一回の反射だけでカメラに向かうという状況だけ考えているので、下から光が入ってくる時点で下のどこかで反射してないといけないのでそういうのは無視できるというものになっている。 あとは、$ w, u $ は入射する分だけ考えればよくなっているので添字も省略。

ENVIRONMENT MAPPING

地面や空や山のような遠く離れた背景は、どの点を見るかによって違いが出るようなものではない。この場合 $ u(p, w) $ は点 $ p $ に依らなくなるので $ u(w) $ と書ける。例えば地面を考えるならば、太陽が差し込んでくる角度だけが重要で地面のどの点を取るかで入ってくる光は変わらないというものだ。

このように環境が十分離れているとして、対象物にも同じ仮定を適用してしまおう。 つまり、どのように光が入ってくるかは角度のみに依存して、物体のどの位置かには依存しないというものである。この辺も本当は物体の形状によって影になる部分があるとかそういう話があるが、いまはそれらを無視するとしているのでその意味では理解できる。

結果、以下の形に簡単化される。

SPHERICAL HARMONICS

ここまで簡単化してきたが、やはり立体角全体(正確に言うと上半球だが)で積分するのは骨が折れる。 これを簡単化する色々な方法があるらしいが、この論文では積分を球面調和関数の低次展開で近似して計算するという手法を採用している。低次だけで 99% 再現できるという話もあるらしい。

立体角積分を以下のように書く。これは立体角全体の積分だが、上半球だけという場合は下半球の寄与がゼロになるように細工をすればよい。

この結果、(陪)ルジャンドル多項式とかを扱うことになって非常に懐かしい。

yoheikikuta commented 4 years ago

これで道具立ては揃ったので、後は lighting とか geometry がこれらの言葉でどう書けるのかを明らかにして、さらにそれらで微分した時の表式を求めれば摂動を求めることができる。

これらは論文の Appendix C に書いてあって、難しくはないが数式がちと多いので後でかいつまんで書くとして一旦求めることができるものとして進めておく。


かいつまいんで書いておく。

まず、ルジャンドル陪多項式で表現された球面調和関数の言葉で $ u(w) $ や $ \max(w n, 0) $ (これは立体角積分を上半球から全球に拡張する際に上半球だけを使うために挿入される) を近似すると、$ R(p, n) $ が球面調和関数の言葉で書ける。それを使い、カメラパラメタを $ η $ とすれば、レンダリングされた画像は次のように書ける。

$ V, U, N $ はそれぞれ shape, lighting, surface normal である。 雑に言って、$ U $ は $ u $ を球面調和関数で近似した際の係数に対応するもので、$ G $ は $ \max(w n, 0) $ を球面調和関数で近似した際の係数に対応するもの、になっている。

あとはこれを lighting $ U $ や geometry $ V $ で微分すれば勾配法で adversarial example が作れていくことになる。$ U $ は簡単だが $ V $ の方は少し計算が必要だ。ただこれもルジャンドル陪多項式を法線ベクトルで微分するというのが肝で既知の計算だし Appendix E に書いてあるので素直に追えば特別難しくはない。

最終的にはそれぞれ以下の形を得る。 $ U $ での微分。

$ V $ での微分。

loss function は当然 $ I $ の言葉で書かれるので、あとはこの微分を素直に使っていけばよい。

yoheikikuta commented 4 years ago

定式化が済めばあとは普通の adversarial examples と同じようにできる。

Adversarial lighting

以下のように摂動を加えていく。

Adversarial geometry

こちらは形状とはどういうものかという話が入るのでちょっと複雑になる。 形状として、$ |V| $ 個の頂点と $ |F| $ 個の面を有する三角形で与えられているとする。この辺全然知らないんだが、幾何における三角分割みたいなものと思っておけばいいのだろうか? 物体表面の点としては $ V ∈ R^{|V| × 3} $ の三次元上の点として与えられ、法線ベクトルは $ N ∈ R^{|F| × 3} $ という三次元ベクトルとして与えられるということになっている。

摂動の加え方は以下のように実施する。

これによって三角形の頂点(とそれに合わせて法線も変更すると思う)がずれていくので、物体の形状も元の形状からずれていくということになる。隣の三角形とか気にしないで計算していくので滑らかさが失われて凸凹になっていくイメージかな。

yoheikikuta commented 4 years ago

典型的な結果は以下。 モデルは ImageNet pre-trained の ResNet-101 をしよう。

lighting の場合は物体の形状を変えずに色味を変えるようになっている。 さらに、3D の物体をベースにして摂動を加えているので、自然に多視点での adversarial attack が成功するようになっている。どこから見るかで targeted のクラスを変えることで、視点を変えると別のクラスに間違えさせるような摂動を作れる。

geometry の場合も同様。こちらも同様に視点によって識別されるクラスが異なる deep optical illusion ができている。

もちろん、異なる視点で同じ targeted class に誤認識させることも可能。 以下の例では street sign をどの角度から見ても mailbox に誤認識させることに成功している。このように多視点でもしっかりと adversarial examples を作れるというのは 3D モデリングを使っている利点だよなぁ。

yoheikikuta commented 4 years ago

universality もある。 ResNet で作成した 5000 個の adversarial example を他のモデルに入力した結果が以下で、DenseNet が少し攻撃成功率が低いが、色々なモデルに対して有効だということがわかる。この手の検証で DenseNet 使っているのを見たことがなかったが、ほ〜という感じ。

正しく認識される stop sign の 500 個の View を対象にして、そのうちのいくつかだけをサンプルして adversarial example を作るための摂動を計算し、その摂動を 500 個全部に適用してどれくらい攻撃が成功するかを見たものが以下。 lighting の方が騙すための攻撃力が強く、数個の視点の情報を使うだけであらゆる角度で誤認識を引き起こすことが可能であることを示している。

さらに、adversarial example のノイズの入れ方が確かに効率的であることを示すために、lighting や geometry の係数を一定の大きさ以下でランダムに変えた場合にどういう違いが出るかを調べたものが以下。 ただ単に lighting や geometry を変えるだけでも少し誤認識を誘うが、やはり勾配情報に則って変化させた方が誤認識しやすい。それはそう、という感じ。

yoheikikuta commented 4 years ago

この論文の面白いところは実際の物体を写真に撮ってテストデータを作成し、adversarial training でそれらを誤認識しないかを試している点である。

ここはちょっとやり方が入り組んでいるので整理しておくと、以下のようなものになっている。

これで、結果として、上で紹介した学習データそれぞれの場合で 4.6%, 40.4%, 65.8% という正答率が得られる。つまり、adversarial training をした結果が一番汎化性能が高いという結果になっている。

テストデータの作り方は adversarial example ではなくて光の当て方を変えたものなので、そもそもこんなに間違うもんなのかなという気もするが、具体的なデータ例は以下のようにだいぶ色味が違うので確かに間違えるのかもしれない。この辺はデータセット公開してもらいたいところだけど。

実際のオレンジの写真を頑張って撮影した、という点はなかなか面白いと思う。 デジタル処理でなくて実環境下での性能検証は全然固まってないので色々な人が色々試して良い評価方法が固まっていくことを期待したい。

yoheikikuta commented 4 years ago

ということで一通り読んだ。

どうやってより効果的な(これはかなり多義的で、例えば人間にとって知覚しづらいだったり、様々な物理的状況下でも有効だったり)adversarial example を作るか、という問題に対して物体の形状を尊重するために微分レンダラーを用いるという話だった。

テストデータには実際の撮影画像を用いることで adversarial training の有効性を示したので、形状が定まったものの判別がしたいという時に、3D モデルがあればこういう使い方もできそうだということでなかなか興味深いものだった。

レンダリングも軽くだけど勉強できたのでよかった。