文字認識をWatermarkで騙す手法の論文:「Attacking Optical Character Recognition (OCR) Systems with Adversarial Watermarks」

Attacking Optical Character Recognition (OCR) Systems with Adversarial Watermarks」という論文を読んだ。

概要

OCRシステムを騙すためのAdversarial Exampleを作成する手法の論文。OCRにかけるような文書は写真などとは異なり背景が白・文字が黒、となっているので写真データに対するAdversarial Exampleの手法を使うと、人間が見ておかしいことに気づく。
そこでこの論文ではWatermarkと呼ばれるスタンプを文書に付与することで、文書読み取りの結果を改変することを目指している。
Watermarkは例えば「Sample」や会社名みたいなスタンプを文書に重ね合わせる。そのWatermarkと重なる部分のピクセルを上手い具合に変えると、文書の意味を反転するような形でのAdversarial Exampleをいくつか作成できている。

基本的には評価はモデルがホワイトボックスだと仮定したうえで行っているが、ブラックボックスのOCRシステムとしてTesseract OCRに対してもWatermark を付与したAdversarial Exampleが働くことを確認している。ブラックボックスシステムに対しては、ホワイトボックスモデルに対してAdversarial Exampleを作成して、そのAdversarial Exampleを入力とすることで確認している。

アルゴリズム

具体的なアルゴリズムとしては、元文書とAdversarial Exampleのノルムを閾値以下である・Watermarkの中に含まれるピクセルをのみを変更する、という制約の下でCTC loss functionと呼ばれる最終層で出力される値から正解のデータ列になりうる確率を元に計算する損失関数を最小化するように最適化問題を解いていく。論文では、再急降下法+モーメンタムのようにして文書ベクトルを更新していくと述べられている。

実験結果

具体的な実験では以下の図のように、いくつかの文の意味を変えるように改変することができたことを示している。免許証の番号を変える例も示されている。

Future Work

この論文ではWatermarkの位置は固定なので、任意の箇所を改変できるようになっていないが、今後は自由な位置・形状でWatermarkを追加することも考えている。

所感

WatermarkがつけられたらそもそもOCRは上手くいかなさそうなので、Watermarkがついた部分は人間がチェックするべきではないかと思った。手法としてWatermark付与以外にも文字のエッジの部分を改変することで、印刷がかすれているように見せかけて人間とOCRを騙す方法も述べられており、これが進んでいくと悪用される可能性もありそうに思った。

論文読み:Squeeze-and-Excitation Networks

元論文:Squeeze-and-Excitation Networks

最近良くCNN関連のタスクでよく使われる手法なので、論文を読んでみたときのメモ。
ググると他にも詳しい解説記事があるので、あくまでも個人的なメモとして残します。

概要

Squeeze-and-Excitationブロック(SEブロック)というモジュールを導入することで、明示的にチャンネル間の相互作用をモデル化できる手法。
チャネル間の相互作用はイメージがつきにくかったが、例えばある特徴マップとまた別の特徴マップが同時に強く反応する場合に、特定のクラスと判定されるといったケースだろうか。チャンネル方向でSEブロックの処理を行うことで、チャンネル間の相互作用を表せるということのようだ。
SEブロックい色々なCNNに組み込んだSENetは様々なデータセットに対して効果的であったことを確認した。既存のCNNに少しの計算コストを追加するだけで性能を高めることもできた。

Introduction

CNNは画像認識の分野で広く使われている。CNNは畳み込みフィルタによって局所的な特徴をつかみ、層を重ねることで局所から大局までの広い範囲の画像特徴をつかむことができる。近年は高精度なネットワーク構造を作ることが研究のフロンティアであるが、いくつかの研究では既存のネットワークにモジュールを追加することで精度向上を目指す取り組みもある。

この論文で提案されたSEブロックはそのような取り組みの一つにあたる。SEブロックは特徴の再調整(論文ではfeature recalibrationと書かれている)を果たすように設計されている。

論文中Fig.1にあるように、SEブロックは特徴マップを受けとってチャンネルごとに空間情報を凝縮する(Squeeze)。そして、Excitationと呼ぶ操作によりチャンネルごとの重みづけを行ったベクトルとしてSqueeze後の情報を変換する。これによって生成されたベクトルを元の特徴マップにかけ合わせることで、特徴マップがチャンネル間の相互作用をモデル化することができる。つまり価値の高いチャンネルを強調することで表現の質を挙げることを目指している。
目的に応じてSEブロックをどこに配置するかを決めることもできる。例えば、ネットワークの初めの方の層にSEブロックを入れると、クラスに依存しない局所的な特徴を共有することができ、後ろの方の層に入れるとクラスに依存した特徴の相互作用を共有することができる。

Related Work

モジュールを追加することでネットワークの性能を向上させる手法は色々と研究されている。多くの手法はチャンネル間の相互作用はクラスに無関係な関数の合成で表すことができると仮定しており、チャンネル間の相互作用を取り入れていない。一方、この論文では、チャンネル間の相互作用を非線形の変換を用いて調整することで、効果的に学習を進めることができるようになるというのが著者らの主張。

Squeeze and Excitation Blocks

Squeeze: 各特徴マップはフィルタがかけられた局所的な部分の情報の集まりであり、大局的な情報を持っていない。そのためSqueeze処理でチャネルごとの統計情報を取得する。具体的にはGlobal Average Poolingをかける。もっと複雑な処理を使っても良いかもしれないと著者らは述べている。

Excitation: 非線形なチャネル間の相互関係を学習し、複数チャネルが強調されることを許可するような設計になるように、ReLUを挟んでSigmoidを使っている。2層の全結合層で途中で削減率rをもちいてネットワークをいったんくびれさせている。

そして最後に元の特徴マップにSEブロックの結果をかけ合わせることで、特徴マップを強調することができる。
前述の通り、SEブロックはCNNの特徴マップを出力するところなら組み込むことができ、VGG, Inception, RexNet, ResNeXtなどに適用できる。

Model and Computational Complexity

SEブロックを追加してもパラメータ数の増加はSE-ResNet-50で約10%程度。推論速度も数ミリ秒程度の増加に抑えられており効率的。
SEブロックをCNNの最後の方に置くと、特徴マップの枚数が多いため計算量がその分増えるが、最後の層にSEブロックを追加するのを止めても性能はそれほど変わらずパラメータ数を削減できると論文中で議論している。

Experiments

様々なデータセットでSEブロックを追加してあげることでSoTAを達成した。

Ablation Study

Ablation Studyとは構成要素を1つだけ抜いた手法を比較すること。他のパラメータを固定して、あるパラメータを変化させた場合の挙動を調査している。
Reduction ratio r: Reduction ratioを増やしていくと精度は落ちていくが、線形の関係ではない。Reduction ratioが小さいと精度が上がるがパラメータ数が増える。16くらいが精度とパラメータ数のバランスが良いと述べられている

Squeeze Operator: Global Average PoolingとGlobal Max Poolingを比較したが大差はない。ここの選択にはSEブロックは頑健

Excitation Operator: 最後のSigmoidをReLUやTanhに置き換えた結果が示されているが、Sigmoidが一番良い。

Different Stages: ResNetのステージのどこにSEブロックを入れるかで実験しているが、どこでも精度は向上する。どこに入れるかは互いに補いあう関係なので、複数個所入れると精度がさらに上がると述べられている。

Integration Strategy: SEブロックをどこに入れ込むか。大差がないので、入れ込む一に関しては頑健だろうと述べている。

Role of SE Blocks

SEブロックの役割を現実的なレベルで理解するための考察が述べられている。Global Average Poolingを行わないNoSqueezeというモジュールを構成し、精度を見るとSEブロックよりも下がる。これはSEブロックが特徴マップ全体の情報を活用していることを示している。また、Excitationの理解のために、ImageNetの異なるクラスの画像に対して特徴マップが各層でどのように反応しているかを見ている。

Conclusion

SEブロックは強力。チャネル間の相互関係を利用した精度向上手法であり、今後はこのような方向性の研究が出てくることを期待している。著者らは最後にチャネルの重みづけを、ネットワークの枝刈りに使えるのではないかと提案している。

所感

非常に簡単な構成で、精度が向上するのが驚き。Kaggleなどでも使われるようになってきており、解説記事も多いので理解はしやすかった。