139
142

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【異常検知】深層距離学習の最新手法を使ってみる

Last updated at Posted at 2020-01-07

以前に、深層距離学習を使い「画像の異常検知」を行いました。
その後、深層距離学習の最新手法「AdaCos」が登場しました。

本稿では、AdaCosを「異常検知」に適用し簡単なベンチマークを行いたいと思います。
コード全体はこちら

※こちらはPythonデータ分析勉強会#15の発表資料です。

#結論から
AdaCosを異常検知に適用することで、以下が分かりました。

  • 精度はArcFaceと同等
  • パラメータのチューニングが不要になるのがありがたい

#AdaCos
AdaCosは深層距離学習の最新手法といいながら、2020年1月現在、論文掲載後、半年以上も
経っています。しかし、私が知る範囲では「純粋な深層距離学習」の枠では、未だに
SOTAだと思われます。

AdaCosとは、ArcFaceなどを主体にした手法であり、ArcFaceなどで用いられるパラメータを
自動的に決める手法です。ArcFaceはパラメータの選択次第で精度が劇的に変わるため、
パラメータのチューニングが非常にシビアでした。しかし、AdaCosを導入して自動的に
パラメータを決められるおかげで、このチューニング作業から解放されます。

さらに、精度も上がることが確認されており、作業能率と精度が向上することから非常に
有用性の高い手法です。詳しくは、以下の記事を参考にしてください。

AdaCos: Adaptively Scaling Cosine Logits for Effectively Learning Deep Face Representationsを読んだ

##制約
AdaCosには、FixedとDynamicの二種類があります。
本稿で用いる手法は「Fixed AdaCos」とします。

また、AdaCosはクラス数が3以上のときのみ適用できます。
これは自己教師あり学習を適用する際に、ネックになってきますが、そこの考察は
次回の記事で行います。今回行う実験はクラス数が9のため、ここは問題になりません。

#実験
以前に行った実験と同じ条件で実験を行います。

AdaCosのコード自体はArceFaceのものとほぼ同じです。
ただ、パラメータの与え方をAdaCos流に変更しています。

コード全体はこちら

##条件

  • AdaCosのepochは10、最適化手法はAdam
  • バッチサイズは128
  • ベースモデルはMobileNet V2(学習済モデルを使用、つまり転移学習)
  • 10回試行してAUCを算出
  • データはFashion-MNISTとcifar-10を使用

<Fashion-MNIST>
データの内訳は以下のとおりです。
正常は「スニーカー」、異常は「ブーツ」。

個数 クラス数 備考
学習用リファレンスデータ 8000 8 スニーカーとブーツを除く
学習用正常データ 1000 1 スニーカー
テストデータ(正常) 1000 1 スニーカー
テストデータ(異常) 1000 1 ブーツ

※学習用リファレンスデータとは、学習用正常データと見比べるためのデータです。

<cifar-10>
データの内訳は以下のとおりです。
正常は「鹿」、異常は「馬」。

個数 クラス数 備考
学習用リファレンスデータ 8000 8 鹿と馬を除く
学習用正常データ 1000 1 鹿
テストデータ(正常) 1000 1 鹿
テストデータ(異常) 1000 1

##Fashion-MNISTの結果
image.png

「L2-SoftmaxLoss」と「ArcFace」は前回の実験結果を掲載しています。
「AdaCos」の結果が今回の実験結果です。

「AdaCos」の中央値はArcFaceとほぼ同じAUCになりました。

やはり、パラメータチューニングが不要になっているのはありがたいです。

##CIFAR-10の結果
image.png
「L2-SoftmaxLoss」と「ArcFace」は前回の実験結果を掲載しています。
「AdaCos」の結果が今回の実験結果です。

Fashin-MNISTと同様に、「AdaCos」の中央値はArcFaceとほぼ同じAUCになっています。

#まとめ

  • AdaCosを異常検知に適用すると、ArcFaceと同等の精度が出た
  • しかも、「パラメータのチューニングが不要」でありがたい
  • そもそも、異常検知の性能評価では、異常データが非常に少ない状況が考えられ、その状況下でパラメータチューニング用のデータを捻出しなければならない状況が避けられると思うと、非常に有用性の高い手法と思われる。
139
142
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
139
142

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?