【トレンドまとめ】DeepLearningを用いた異常検知(Anomaly Detection)

当記事では異常検知の[サーベイ論文](https://arxiv.org/abs/2301.11514v5)を元にトレンドについてまとめました。異常検知のアルゴリズムは基本的には「特徴量ベース(feature-embedding-based)」と「再構成ベース(reconstructed-based)」の2があるので以下それぞれについて詳しくまとめました。



## 特徴量ベースの手法
特徴量ベース(feature-embedding-based)の手法では画像の特徴量表現(ベクトル)を抽出し、そのベクトルに基づいて異常検知を行います。当節では以下、Teacher-Student Architecture、Distribution Map、Memory Bankについてそれぞれ確認します。


### Teacher-Student Architecture
Teacher-Student Architectureの概要については下図を元に把握すると良いです。

![AnomalyDetection1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936087/de5225b3-37be-4bb1-b309-a3ba5d7e890e.png)
[Deep Industrial Image Anomaly Detection: A Survey](https://arxiv.org/abs/2301.11514v5) Fig.2

学習済みのTeacher Networkに対し正常なサンプル(normal sample)を入力し抽出した特徴量を元にStudent Networkの学習を行い、推論にあたってはそれぞれのサンプルのTeacher NetworkとStudent Networkの特徴量が類似しているかについて確認します。

Student Networkは正常なサンプルのみを用いて学習を行うことで異常なサンプルの特徴量を学習できず、図の右側のように異常サンプルでは正常サンプルよりもTeacher NetworkとStudent Networkの出力に差が出ることが期待されます。Teacher-Student Architectureの研究例については下記から確認できます。

![AnomalyDetection2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936087/2a24687b-7ff9-48fa-8dc4-8fc237cafb77.png)
[Deep Industrial Image Anomaly Detection: A Survey](https://arxiv.org/abs/2301.11514v5) Table.2

Teacher-Student Architectureは蒸留(Distillation)の実現方法の一つであることも合わせて抑えておくと良いです。

他のネットワークを用いて新しいネットワークを学習させることを蒸留といいます。


### Distribution Map
Distributiona Mapの概要は下図を元に把握すると良いです。

![AnomalyDetection3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936087/4d1b589b-b7bb-40b4-bda9-d3862bae1bed.png)
[Deep Industrial Image Anomaly Detection: A Survey](https://arxiv.org/abs/2301.11514v5) Fig.4

基本的には強力な事前学習ネットワーク(a strong pre-trained network)を用いて正常サンプル(normal images)の特徴量を抽出し、マッピングモジュール(mapping module)を用いることで正規分布に従うように変換します。

同様な変換を推論時にも用いると異常サンプル(abnormal images)が正規分布の中心から外れた値になることが期待されるので、この値を元に異常検知を行うことが可能です。Distributional Mapの研究例については下記から確認できます。

![AnomalyDetection4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936087/92224a55-fb90-4b3a-b034-20f6ebc7d321.png)
[Deep Industrial Image Anomaly Detection: A Survey](https://arxiv.org/abs/2301.11514v5) Table.4


### Memory Bank
Memory Bankの概要は下図を元に把握すると良いです。

![AnomalyDetection4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936087/f1e08cc8-f4a6-4d0e-8a62-d5e206011cd3.png)
[Deep Industrial Image Anomaly Detection: A Survey](https://arxiv.org/abs/2301.11514v5) Fig.5

事前学習ネットワーク(Pre-trained Network)を元に抽出した各サンプルの特徴量から正常サンプルのサンプリングやマッピングを行い、Memory Bankを作成します。推論時にこのMemory Bankと近いサンプルを正常、遠いサンプルを異常と見なすことで異常検知を行うことができます。

Memory Bankの推論にあたってはkNN(k-Nearest Neighbor)法が用いられることが一般的です。kNNから派生したSPADE(Semantic Pyramid Anomaly DEtection)なども合わせて抑えておくと良いと思います。Memory Bankの研究例については下記から確認できます。

![AnomalyDetection6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936087/c92ece4b-fc7b-43c0-81be-96e0fc5aa2cc.png)
[Deep Industrial Image Anomaly Detection: A Survey](https://arxiv.org/abs/2301.11514v5) Table.5



## 再構成ベースの手法
再構成ベース(reconstruction-based)の手法では生成モデルの再現性に着目して異常検知を行います。以下、当節ではAutoEncoder、GAN(Generative Adversarial Networks)、拡散モデル(Diffusion Model)についてそれぞれ確認します。


### Autoencoder
AutoEncoderを用いた異常検知の概要は下図を元に把握すると良いです。

![AnomalyDetection5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936087/272d8fd0-0cc5-477f-8585-fa6c48823007.png)
[Deep Industrial Image Anomaly Detection: A Survey](https://arxiv.org/abs/2301.11514v5) Fig.6


### Generative Adversarial Networks
Generative Adversarial Networks(GANs)を用いた異常検知はAutoEncoderほど安定するというわけではありませんが、Discriminatorを用いて異常検知を行うことは原理的に可能です。


### Diffusion Model
近年人気のある拡散モデル(Diffution Model)を用いて異常検知を行うことも原理的に可能です。AnoDDPMなどが拡散モデルを用いた異常検知の研究例に挙げられます。