【検証】音声異常へゼロショット学習

##はじめに
画像の異常検知技術は、ビデオ監視、製造業の欠陥検出、医療画像分析などに応用されますが、中でも大量の画像(映像)に対して、自動かつ高精度に異常を判定する目的でAIモデルの活用が研究されています。近年、正常データのみで省コストかつ高性能に異常を検知することが可能な手法として、ゼロショット学習が注目されています[1]。今回は、ゼロショット学習モデルの音声異常検知への適用について検証します。

##モデル概要
今回検証に使用するゼロショット学習モデル[2]の仕組みは非常にシンプルです。正常データを学習済みモデル(EfficientNetなど)に入力し、出力された値から正常の基準を作成します。そして、テストデータに対しての出力が基準に近ければ正常、遠ければ異常と判定します。(以下イメージ)
イメージでは、簡略化して一つの値を出力するように記載していますが、今回検証するモデルではモデルの「各ブロックから抽出した特徴量」[3]を利用します。検知性能は非常に高く、ある工業製品の異常検知データセット[4]では、当時のSOTAを記録したほどです[5]。
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/892617/e7fbe250-cc11-e1a7-b66e-c4fdb97a83ad.png)

##音声異常へ着目した背景
ゼロショット学習モデルがなぜ高性能なのかについて、学習済みモデルから特徴抽出する過程を入れることで、学習済みデータに類似したデータにおける異常と無関係な外れ値の影響が緩和されるからではないかと発想しました。そこで、工業製品データセットのテクスチャー系の異常画像(カーペットなど)と音声の異常画像の類似性※に着目し、工業製品データの学習済みモデルでも異常音検知の性能が出るのかを検証します。

※ノイズの少ないデータでは、一様な背景に異常部分が特徴的に存在する点でテクスチャー系画像と音声画像は類似していると発想(以下例)
![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/892617/d6a64ea7-2d3b-1fde-a54a-2539468264a7.png)
##検証方法
- モデル：ゼロショット学習モデル（EfficientNetB4ベース）[参考コード：3]
- テストデータ：音声異常検知コンペデータ(DCASE Challenge2020 task2)[6,7,8]
- 評価方法：ROC-AUC（以下ROC-AUCをスコアと記載）

####テストデータについて
- 機器の種類は6種類※。IDで３〜４個のデータに分けられている  
※ 6種類：ToyCar, ToyConveyor, fan, pump, slide rail, valve
- IDが異なると音声取得状況が変わる（環境音や音の強さが異なる、詳細は[6]を参照)

##検証内容
以下に分けて検証します。
１．	音声データへの適用
２．	データ取得環境による影響の分析
３．	ノイズによる影響の分析

##１． 音声データへの適用
まずはゼロショット学習モデルにテストデータを入力し、異常度を計算し、ROC-AUCを計算してみました。（正常、異常データ件数は300件程度）
結果、データ種類がslide railやvalveでは非常に高いスコアですが、fanなどではスコアがベースラインモデル(AE) [9]以下となりました。（以下表）

####表：データ種類ごとのスコア(ROC-AUC)

| 項番 | データ種類 | 各ブロック平均 | 各ブロック最大 | ベースライン(AE) |
|:-:|:-:|:-:|:-:|:-:|
| 1  | ToyCar  | 0.721  | 0.733  | 0.801  |
| 2  | ToyConveyor  | 0.714  | 0.748  | 0.854  |
| 3  | **fan**  | **0.565**  | **0.604**  | **0.828**  |
| 4  | pump  | 0.863  | 0.880  | 0.824  |
| 5  | **slide rail**  | **0.991**  | **0.998**  | **0.794**  |
| 6  | **valve**  | **0.959**  | **0.966**  | **0.574**  |


####参考：計算時間
モデルの大きさやデータ量にもよるため、あくまで参考値ですが、訓練時間がない分、ゼロショット学習モデルは全体の計算時間が短くなる傾向があります。

| モデル | 計算時間 |
|:-:|:-:|
| ゼロショット検証モデル | 94s |
| ベースライン(AE)[9] | 2,485s(うち訓練時間:2,450s) |

※ 検証環境：MacBook Pro 2.3GHzデュアルコアIntel Core i5 
※ 検証条件：Toycar音声画像データ1,000枚の訓練＋テストの時間

####参考：高スコアと低スコアの可視化
可視化してみると、高スコアのslide railデータは目視でも異常が判別可能ですが、スコアが落ちるfanデータでは異常部位が判別しづらいことが分かります。
![図3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/892617/6c5be6d5-2c23-499d-2e05-7f1cd001feee.png)

##２． データ取得環境による影響の分析
１．で性能が出なかったデータ種類(fan)について、データ取得環境（ID）別で分析したところ、同じデータ種類でも環境によってスコアが変化する結果となりました。（以下表）

| 項番 | データ種類 | ID=0 | ID=2 | ID=4 | ID=6 |
|:-:|:-:|:-:|:-:|:-:|:-:|
| 1  | fan  | 0.565  | 0.728  | 0.602  | **0.891** |

また、高いスコアの環境の方がより深いブロック（level）でスコアがピークとなる傾向も見られました。（以下の表はID４とID６の例）

| ID | level_1 | level_2 | level_3 | level_4 | level_5 | level_6 | level_7 | level_8 | level_9 | level_10 |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| 4  | 0.555  | 0.55  | 0.568  | 0.6  | **0.626**  | **0.626**  | 0.586  | 0.599  | 0.593  | 0.602  |
| 6  | 0.77  | 0.79  | 0.798  | 0.848  | 0.888  | 0.885  | **0.891**  | 0.889  | 0.877  | **0.891**  |



##３． ノイズによる影響の分析
最後に、検証モデルが音声異常検知の性能において、どの種類のノイズに強く影響を受けるかを分析しました。5種類の人工的に作成したノイズでの検証の結果、音のかすれや高音シフトについて、性能が落ちる傾向が見られました。

####5種類のノイズ
![図4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/892617/2906d0d0-6af1-e216-6eba-0ee3d186050e.png)
####可視化例（縦軸:Hz,横軸:秒）
![図5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/892617/7b0eaac7-772c-ab72-e3db-3e456d74aac4.png)
####分析結果表
| 項番 | 異常データ種類 | ROC-AUC |
|:-:|:-:|:-:|
| 1  | 正常音  | 0.565  |
| 2  | 異常音（常時加算）  | 0.947  |
| 3  | 異常音（常時ノイズ）  | 0.899  |
| 4  | 異常音（短時間）  | **0.776**  |
| 5  | 正常音のかすれ  | **0.748**  |
| 6  | 正常音の高音シフト  | **0.765**  |


##まとめ
今回は近年注目度が高くなってきているゼロショット学習を音声異常に適用し、いくつかの検証を行いました。状況によっては、他の手法と比較して高速・高精度に検知できる可能性があることや、音声のかすれなど苦手な状況が存在することが示唆されました。

今回参考にした論文[2]からの発展的な研究として、パッチを活用する手法[10]なども提案されており、より良いモデルが日々提案されている状況です。引き続き、ゼロショット学習モデルの研究動向には注目していきたいと思います。

改善点やご質問などあれば、コメントいただければ幸いです。

##参考
1.	【異常検知】学習ゼロの衝撃！を可視化する（@shinmura0）
https://qiita.com/shinmura0/items/5f2c363812f7cdcc8771

2.	元論文
Modeling the Distribution of Normal Data in Pre-Trained Deep Features for Anomaly Detection(Oliver Rippel, Patrick Mertens, Dorit Merhof)
https://arxiv.org/abs/2005.14140
公開コード(AGPL ライセンス)：
https://github.com/ORippler/gaussian-ad-mvtec

3.	【異常検知】MVTec-ADを学習無しで正常/異常分類する(@sUeharaE4)
https://qiita.com/sUeharaE4/items/023455822376c07cd6ef

4.	MVtec AD データ
https://www.mvtec.com/company/research/datasets/mvtec-ad
> - Paul Bergmann, Kilian Batzner, Michael Fauser, David Sattlegger, Carsten Steger: The MVTec Anomaly Detection Dataset: A Comprehensive Real-World Dataset for Unsupervised Anomaly Detection;
in: International Journal of Computer Vision, January 2021.
> - Paul Bergmann, Michael Fauser, David Sattlegger, Carsten Steger: MVTec AD – A Comprehensive Real-World Dataset for Unsupervised Anomaly Detection;
in: IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 2019. 
5.	MVtecADのSOTA
https://paperswithcode.com/sota/anomaly-detection-on-mvtec-ad

6.	DCASE Challenge2020 task2
http://dcase.community/challenge2020/task-unsupervised-detection-of-anomalous-sounds 

7.	DCASE2020task2 データ（ToyADMOS）
> - Yuma Koizumi, Shoichiro Saito, Hisashi Uematsu, Noboru Harada, and Keisuke Imoto. ToyADMOS: a dataset of miniature-machine operating sounds for anomalous sound detection. In Proceedings of IEEE Workshop on Applications of Signal Processing to Audio and Acoustics (WASPAA), 308–312. November 2019. URL: https://ieeexplore.ieee.org/document/8937164.

8.	DCASE2020task2 データ（MIMII）
> - Harsh Purohit, Ryo Tanabe, Takeshi Ichige, Takashi Endo, Yuki Nikaido, Kaori Suefusa, and Yohei Kawaguchi. MIMII Dataset: sound dataset for malfunctioning industrial machine investigation and inspection. In Proceedings of the Detection and Classification of Acoustic Scenes and Events 2019 Workshop (DCASE2019), 209–213. November 2019.　: http://dcase.community/documents/workshop2019/proceedings/DCASE2019Workshop_Purohit_21.pdf.

9.	ベースライン(AE)コード
https://github.com/y-kawagu/dcase2020_task2_baseline
>Copyright (c) 2020 Hitachi, Ltd.
Released under the MIT license
https://opensource.org/licenses/mit-license.php

10.	PaDiM (Thomas Defard, Aleksandr Setkov, Angelique Loesch, Romaric Audigier)
https://arxiv.org/abs/2011.08785