2022年5月11日

学習済み深層学習モデルを用いた外観検査向け異常検知手法についてのサーベイ

Deep LearningAnomaly Detection

cover

LeapMindの花元です。

異常検知、してますか?

学習済み深層学習モデルを使って外観検査向け異常検知をしたくなること、長い人生で、たまにはありますよね。今日はそんなときに使える手法を紹介したいと思います。

はじめに

異常検知とは、データの中から、通常のデータとは振る舞いの異なるデータ(異常なデータ)を検出するタスクを指します。例えば、画像を入力とした異常検知では、製品の画像から、傷が付いていたり、必要な部品が欠けていたりする画像を検出することを目指します。一般に、異常検知モデルの訓練時には、異常なデータが全くないか、あったとしてもごく少数であることが仮定されます。これは、異常なデータ(例えば傷が付いている製品の画像)は通常とても得られにくいことに起因しています。今回紹介する手法は全て、訓練時に異常なデータは不要です。

近年、外観検査向け異常検知の手法として、画像の特徴を得るために学習済み深層学習モデルを用いる手法が多く提案されています。このアプローチの利点としては、①異常画像がなく、正常画像も数十枚〜数百枚しかない場合においても、異常検知モデルの学習が可能、②深層学習モデルを1から学習させる手法と比較して、短時間(例えば数十秒)で学習が可能、という点があります。今回は、このアプローチを採用している手法をいくつか紹介したいと思います。

学習済みモデルから得られた特徴量の復元誤差を求める手法

このアプローチでは、学習済みモデルから得られた訓練画像(正常データのみで構成される)の特徴量を、何らかの手段で圧縮/復元するモデルを構築します。この圧縮/復元するモデルは、訓練画像に似たデータ(=正常画像から得られた特徴)に対しては精度高く圧縮/復元できる傾向がある一方で、訓練画像から大きく異なるデータ(=異常画像から得られた特徴)に対しては精度高く圧縮/復元できず、復元誤差が大きくなる傾向があります。このアプローチでは、この特性を異常検知に用います。

例えば、LeapMindが開発したMLF-SCでは、画像をパッチに分割し、学習済みのVGG16を用いて特徴を抽出した上で、スパースコーディングと呼ばれる手法を用いて特徴を圧縮/復元します(図1)。復元した結果、もとの特徴との差分が基準値より大きいものを異常とみなします。また、VGG16から特徴を抽出する際は、最終層の出力のみを用いるのではなく、中間層の出力も用いることで、局所的な異常(小さな傷など)と大域的な異常(広範囲に渡るシミなど)の両方を検出することを目指しています。結果として、MVTec ADデータセットのテクスチャ(カーペットなど、物体の表面を撮影したもの)カテゴリの平均AUROCで97を達成しています。

MLF-SC

図1: MLF-SCの概略図(論文より引用)。VGG16の中間層の出力もスパースコーディングの入力として用いられる。

学習済みモデルから得られた特徴量を用いて近傍法を適用する手法

近傍法とは、正常データはその近傍に訓練データに含まれるデータ点が多くあり、逆に、異常データの近傍には訓練データに含まれるデータ点がないという仮定に基づき、近傍点との距離を基に異常を判定する手法です。例えば、最近傍法では、訓練データに含まれるデータ点の中から最も距離が短いデータとの距離が基準値より大きなデータを異常とみなします。

例えば、SPADEでは、ResNetの最終畳み込み層から得られた特徴量をGlobal Average Poolingし、訓練データに含まれるデータ点の中から最も距離の短いデータをk点抽出します。その結果、その距離の平均が基準値より大きなデータを異常とみなします。

PatchCoreでは、①画像全体でなく、画像のパッチごとに特徴を抽出する、②最終層だけでなく、中間層の出力も特徴量として用いて近傍法を適用することでさらなる異常検知性能の向上を図っています(図2)。ここで、単純にこれらの方策を適用してしまうとデータ量が多くなり速度が遅くなることから、距離を計算する対象となる正常データの特徴量の数を貪欲法により大幅に削減する手法を提案しています。また、特徴量の次元もランダムプロジェクションと呼ばれる手法を用いて削減しています。なお、PatchCoreのアルゴリズムの詳細についてはこちらの記事で紹介しています。

PatchCore

図2: PatchCoreの概略図(論文より引用)。訓練時には正常データからパッチごとに特徴を抽出し、貪欲法で少数の特徴をサブサンプリングする。推論時には対象から特徴を抽出し、近傍法で異常判定に用いるスコアを算出する。

MVTec ADデータセットを用いたベンチマークでは、平均AUROCでSPADEが85.5、PatchCoreが99.1を達成しています。

学習済みモデルから得られた特徴量を用いてマハラノビス距離を求める手法

マハラノビス距離とは、変数間の相関関係を考慮した距離の一種です。我々が通常「距離」と呼ぶユークリッド距離とは異なり、マハラノビス距離ではばらつきが大きな方向の距離を相対的に小さく評価し、反対にばらつきが小さな方向の距離を相対的に大きく評価します。学習済みモデルから得られた特徴量を用いてマハラノビス距離を求める手法では、訓練データを入力として、学習済みモデルから得られた特徴量とのマハラノビス距離を求め、その距離が基準値より大きいものを異常とみなします。

Modeling the Distribution of Normal Data in Pre-Trained Deep Features for Anomaly Detectionでは、EfficientNetの各層の出力をGlobal Average Poolingしたものについて、層別にマハラノビス距離を計算し、その合計値が基準を超えるデータを異常とみなすアルゴリズムを提案しています(図3)。

Mahalanobis AD

図3: Modeling the Distribution of Normal Data in Pre-Trained Deep Features for Anomaly Detectionの概略図(論文より引用)。各層の出力それぞれでマハラノビス距離を求め、その合計を用いて異常判定を行う。

PaDiMでは、①画像全体でなく、画像のパッチごとに特徴を抽出する、②層別にマハラノビス距離を計算するのではなく、各層から出力した特徴を結合してマハラノビス距離を計算する、というアルゴリズムを採用することでさらなる異常検知精度の向上を図っています(図4)。また、各層から出力した特徴を結合してマハラノビス距離を計算すると次元が大きくなる分計算量が大きくなりますが、ランダムに次元を削減して計算量を大きく削減しても異常検知性能を維持できることが示されています。

PaDiM

図4: PaDiMの概略図(論文より引用)。各層から得られた特徴量をパッチに分割し、結合した上でマハラノビス距離を求める。

MVTec ADデータセットを用いたベンチマークでは、平均AUROCでModeling the Distribution of Normal Data in Pre-Trained Deep Features for Anomaly Detectionが95.8、PaDiMが97.9を達成しています。

まとめ

この記事では、学習済み深層学習モデルを用いた外観検査向け異常検知手法を紹介しました。このアプローチを適用することで、訓練データとして異常画像が使えない場合でも、短時間で異常検知モデルを構築することが可能になります。

ところで、LeapMindでは異常検知モデルだったり、異常検知とは全く関係ないモデルだったりを開発する機械学習エンジニアを絶賛募集中です!興味のある方は以下からぜひご応募ください!

https://leapmind.io/careers/