画像異常検知の新展開！MVTec LOCO AD Dataset

# はじめに

MVTec ADとは産業向けのビジョンソフトを手がける[MVTec Software社](https://linx.jp/product/mvtec/)が提供する外観検査向けデータセットです。
- [MVTEC ANOMALY DETECTION DATASET](https://www.mvtec.com/company/research/datasets/mvtec-ad)

CVPR2019でデータセット公開されて以降、画像異常検知のアルゴリズム開発は飛躍的に進み、その検出精度（Detection AUROC）は99%を超えるほどまでになりました。
- SoTA推移👉 https://paperswithcode.com/sota/anomaly-detection-on-mvtec-ad

本稿作成時のSoTAはMVTec AD全15品目の半数以上を100%精度で検出可能としています。
![MVTecAD SoTA.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485510/cda77618-e6fb-5f6d-4c8b-f0f42f7b61fc.png)

「難タスクと思われたMVTec ADもこれにて終結か！？」という状況でしたが、2021年度**MVTec Software社は新たに2つの異常検知データセットを公開しました**。

- [**MVTec 3D Anomaly Detection Dataset**](https://www.mvtec.com/company/research/datasets/mvtec-3d-ad)
- [**MVTec Logical Constraints Anomaly Detection Dataset**](https://www.mvtec.com/company/research/datasets/mvtec-loco)

本稿ではこの中の"**MVTec Logical Constraints Anomaly Detection Dataset**"に関する論文を読み解き紹介します。

# MVTec LOCO AD

論文：[**Beyond Dents and Scratches: Logical Constraints in Unsupervised Anomaly Detection and Localization**](https://link.springer.com/article/10.1007/s11263-022-01578-9)
![mvtec_loco_dataset_overview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485510/32c9edba-b2c4-2af3-2326-187d312f0c61.png)

## コンセプト

従来のMVTec ADで扱っていた欠陥のほとんどは"へこみ"、"引っ搔き傷"、"汚れ"といった**構造的な不良**を扱っています。しかし産業分野における検査ではこういった構造的不良の他に、以下のような**論理的なルールに基づいた不良**を取り扱う場合があります。

- 回路が誤って配線されている
- 瓶の充填レベルがシフトしている
- 一部の部品が欠落している

**MVTec Logical Constraints Anomaly Detection（MVTec LOCO AD）はこの構造的異常と論理的異常をバランスよく含んだデータセットです**。

## データセットの内訳

MVTec LOCO ADは5つの品目で構成され、その内訳は下記表にまとめられています。
trainとtestとは別にvalidationデータがあらかじめ用意されている点、8～22種と多様な不良を扱う点が従来のMVTec ADと異なる要素になると思います。
![MVTec LOCO AD summary.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485510/9e96abff-1718-6652-8129-29ea91c75221.png)

## 各品目の欠陥例

本節で5つの品目の概要と欠陥例を簡単に説明します。
なお各欠陥種類については論文Appendix-Dに記載されています。

### Breakfast Box
左側に2つのタンジェリン（みかん）と1つのネクタリン（桃）。右側にシリアルとバナナチップ＋アーモンドが一定比率で充填されます。
- 構造的な不良例：ボックスやフルーツにダメージ、異物混入
- 論理的な不良例：フルーツの数が合わない、充填比率が間違っている
![Breakfast Box.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485510/4b30449f-08b7-399d-4a4d-39c550bf990a.png)

### Screw Bag
ワッシャー2つ、ナット2つ、長いネジ1つ、短いネジ1つで構成される部品セットが透明な袋に封入されています。
- 構造的な不良例：袋の破損、部品の破損や汚れ、異物や他の部品の混入
- 論理的な不良例：ネジが長すぎる or 短すぎる、部品の数が合わない
![Screw Bag.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485510/f2da2bbd-8f18-6158-9451-bb3cfe56feec.png)

### Pushpins
箱の各コンポーネントごとに1つ画鋲を配置されます。
- 構造的な不良例：ピンの曲がり、破損、汚れ、異物混入
- 論理的な不良例：画鋲がない or 余分な画鋲が入っている、セパレーターが外れている
![Pushpins.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485510/310657ba-f2f1-9a27-c2a5-7e72466f95e3.png)

### Splicing Connectors
クランプ数とケーブルの色が1対1で対応。全体は鏡面対称の構造となり、ケーブルは両端で同じ相対位置に接続される必要があります。
- 構造的な不良例：ケーブルの破損、汚れ、切断、コネクターの破損、反転
- 論理的な不良例：ケーブルの色がクランプ数と不一致、鏡面対象ではない、ケーブルやコネクタの欠落
![Splicing Connectors.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485510/b2c884fd-edd2-b8ba-d53f-b663a3e734a5.png)

### Juice Bottle
3つの異なるジュースのいずれかが充填され、各ボトルで同じ充填量となることが必要。ボトルには2つのラベルが貼り付けられ、1つは中央に液体の種類を示すアイコン、もう1つは下部に「100% Juice」のラベルが貼られます。
- 構造的な不良例：ジュースの色、ラベル破損、ミスプリント、異物混入
- 論理的な不良例：ラベルの欠落、貼り付け位置違い、充填量が異なる、ジュースと違うラベルが貼り付け
![Juice Bottle.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485510/ff3d2c12-754d-dbbd-0b6f-9b57838ab6ed.png)

## アノテーションの方針

構造的な欠陥に対するアノテーションは簡単ですが、論理的な欠陥に対してアノテーションを行うのは難しいものとなります。画鋲がないコンポーネントを含んだ欠陥サンプルでその例を示します。
![Missing_pushpin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485510/43e36026-d161-3ed2-fc40-69cc57e510a8.png)
この場合、以下の2つの方法でマークすることが考えられます。
- コンポーネント全体を異常とマークする
- コンポーネント内に画鋲のサイズと形状で領域をマークする

これらはおそらくどちらの方法でも検知に成功したとみなすことができます。本データセットの評価にはこういった曖昧さを考慮する必要があります。

本データセットでは、異常の原因となる可能性のある画像のすべての領域が異常としてアノテーションされています。ただし、**完全なスコアを達成するために、ground truthの領域全体を異常として予測する方法は必ずしも必要とはしていません**。これを反映するため著者らは新しい評価指標を導入しています。

## 評価指標 sPRO

新たな評価指標として、PROを拡張した**Saturated Per-Region Overlap** (sPRO)を提案しています。PROとは欠陥検出の性能を欠陥領域ごとに評価する評価指標です。詳しくは下記記事を参照ください。

- [外観検査向けデータセットMVTec ADの評価指標を理解する #Per-Resion Overlap](https://qiita.com/bezilla/items/55ff2faf2704267eab33#per-resion-overlap)

sPRO算出式を示します。各欠陥領域ごとにあらかじめsaturation thresholdを設けておくことで、先で挙げられた曖昧さを吸収して評価値を算出できるようにしています。

$$
\operatorname{sPRO}(P)=\frac{1}{m} \sum_{i=1}^{m} \min \left(\frac{\left|A_{i} \cap P\right|}{s_{i}}, 1\right)
$$

{${A_{1}, \ldots, A_{m}}$}: 全ground truthの欠陥領域のセット
{${s_{1}, \ldots, s_{m}}$}: 各欠陥領域に対応するsaturation thresholdのセット※
$P$: データセット内で異常と予測したピクセル数
※ 論文Appendix-Dに不良タイプごとのsaturation thresholdが記されています


以下の図は予測結果ごとにPROとsPROがどのように変化するかを示しています。
**Ground Truthはコンポーネントの領域全体に対してアノテーションがされていますが、(2)のセグメンテーション結果で十分に異常領域をセグメンテーションできたとみなされsPROは1.0となります**。

![sPRO_summary.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485510/b530d9b2-8f4e-1f8d-3edb-991249289c7a.png)


sPROの指標はPROと同様に誤検知の予測を考慮していません。そこで偽陽性率（FPR）の指標と合わせて評価をするsPRO曲線を使用します。2値化の閾値を変化させFPRとsPROの値をプロットすることで、一般的なROC曲線と同様に作成できます。この曲線下の面積（AUC）を求めることで、閾値に依存せずセグメンテーション性能を測ることができます。ただし高いFPRはセグメンテーションとしての意味をなさなくなるため、FPRの範囲を制限して正規化を行った上でスコアを取得することを推奨しています。

- 参考：[外観検査向けデータセットMVTec ADの評価指標を理解する #Area under the PRO curve](https://qiita.com/bezilla/items/55ff2faf2704267eab33#area-under-the-pro-curve)

:::note
MVTec Software社はデータセットと合わせて評価用のコードを公開しています。本データセットを使用する場合はこちらのコードを参照し評価を行いましょう。
:::

## 評価結果

以下にAU-sPRO（5%FPRで正規化）による評価結果を示します。
本論文で新たに提案した手法がもっとも高いスコアを示しましたが、スコア1.0には遠くおよびません。
![result_table.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485510/1c6bc1a6-80c2-3c5e-a0e2-33bb9d7d7bbf.png)
![reult_sPRO.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485510/0251a9bd-1d5c-3232-ccc1-9cdb324b05d6.png)

また本論文ではAU-sPROの他に、画像単位の評価評価であるDetection AUROCでも評価を行っています。
MVTec ADでは0.99を超える精度がSoTAとなっていましたが、こちらは0.833と改善の余地を大きく残す結果となりました。
![result_DetectionAUROC.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485510/09b067bd-c6aa-0d93-d2e6-499155051b93.png)
"MVTec LOCO AD"でフォーカスしている「構造的な不良」と「論理的な不良」の両方を検知するには、画像の視覚的な特徴に加えて意味的（セマンティック）な特徴も捉える必要があり、難易度が上がっています。

このように本データセットにおける異常検知は課題が残る状態といえます。

# まとめ

以上、MVTec Software社から新たに公開されたデータセット"MVTec LOCO AD"を紹介しました。

本データセットは産業分野の実検査を想定したものであり、このタスクを解くことが異常検知アルゴリズムの適応シーン拡大につながっていきます。MVTec ADの登場が異常検知アルゴリズムの進展を加速させたように、こちらの領域でも進展を期待したいですね。

画像異常検知に興味ある方、MVTec ADが物足りなくなった方、我こそは！と思う方、ぜひ本論文やデータセットに触れてみてください。