Edited at

【論文読み】新・オートエンコーダで異常検知

以前の記事でオートエンコーダによる異常検知は古い!と書いてしまいましたが、

最近は進化しているようです。

今回ご紹介する論文は、損失関数を工夫することで通常のオートエンコーダよりも

異常検知能力を上げる手法です。

※本稿の図は論文(Improving Unsupervised Defect Segmentation by Applying Structural Similarity To Autoencoders)より引用しています。


論文の概要


  • 通常のオートエンコーダによる異常検知は、微小な異常は捉えられない。

  • そこで、一枚の画像に対し小さな枠を用意して「輝度」、「コントラスト」、「構造情報」の類似度を計算して異常検知を行う。

  • 本手法を使うことで、通常のオートエンコーダやVAEの異常検知と比べて、AUCで大幅な向上が見られた。

  • 異常部分の可視化についても、通常のオートエンコーダよりも優れていた。


オートエンコーダによる異常検知

上の図はオートエンコーダによる異常検知を説明した図です。

異常検知の手順は以下のとおりです。(上段の図を見ていただくと分かりやすいです。)


  • まず、元画像をオートエンコーダに渡し、再構築画像(Reconstruction)を得ます。

  • そして、再構築画像と元画像の差をとって差分画像(Residual Map)を得ます。

  • 最後に差分画像で数値が大きいところを色付け(Segmentation)します。

通常のオートエンコーダによる異常検知は、損失関数が以下の式になっています。

論文では、これを$l_2-Autoencoder$と呼んでいます。

ところが、上図の上段のように可視化がうまくいっていません。

そして、後述するように異常検知のスコアも今一つといったところです。

そこで、論文ではSSIMという指標を使って損失関数を変更しています。

SSIMを使うと、上図の下段のように可視化がうまくいっています。


SSIM オートエンコーダ

SSIMは、2004年に提唱された画像の類似度を測る指標です。

いま、pとqという画像があるとしてSSIMは以下の式で与えられます。

ただし、$l$は輝度、cはコントラスト、sは構造情報です。

$l,c,s$は次で定義されます。

ここで、$\mu_p,\mu_q$は画像の平均強さ、$\sigma_p^2,\sigma_q^2$は画像の分散、$\sigma_{pq}$は画像p,qの共分散です。

パラメーターは以下の値を使っています。

\alpha=\beta=\gamma=1\\

c_1=0.01\\
c_2=0.03

まとめると、SSIMは以下の式になります。

式(8)は微分可能で、オートエンコーダの損失関数に組み込めます。


謎の後処理

ここまでは理解できたのですが、差分画像を得たあとに、SSIMでは

謎の後処理が入っています。

上図のように、差分画像の白い部分がそのまま色付けされているわけではなく、

ノイズを消してから色付けされています。論文中では以下の記載があります。


An opening with a circular structuring element of diameter 4 is applied as a morphological post-processing to delete outlier regions that are only a few pixels wide (Steger et al., 2018).


推察するに、「数ピクセルしかない異常部分を消すために直径4のフィルターの

ようなものを適用した」らしいのですが、参考文献が書籍のため、調査することが

できませんでした。(力及ばず、残念。)


実験

実験条件は以下のとおりです。


  • 元画像は512 x 512で256 x 256に圧縮し、128 x 128でランダムに画像を切り取る

  • 上記の手法で正常画像10000枚を採取

  • SSIMを適用する画像のサイズは11 x 11

  • 最適化手法はAdam(パラメーターは初期値)を使用

下の表は今回使用したエンコーダの構造を示しています。

デコーダはエンコーダと逆の構造です。

下の図は異なるデータセット(a),(b),(c)を使って異常検知したときの

AUCを示しています。

ご覧のとおり、AE(SSIM)(赤線)が圧倒的な性能を示しており、うまく機能している

ことが分かります。

下の図は異常部分の色付けを示しています。

ご覧のとおり、SSIMだと過不足なく可視化ができています。

下の表はパラメータを変えたときのAUCを示しています。

パラメータ変更によるAUCの変動は少なく、パラメータの探索はあまり必要ないようです。


感想


  • 可視化がきれいに行われていて現場で非常に役立ちそうです。

  • 本当は、本手法を実装して「metric learningによる異常検知」と比較してみたかったのですが、謎の後処理があり断念しました。

  • 論文で使われているデータセットもリンク切れになっている模様?

次回は「最新の異常検知データセット」を使って、SSIM vs metric learningの精度対決を行います。