ノウハウ

PaDiMとPatchCoreどちらを選ぶべき?異常検知モデルの選択肢を見極めるポイント

目次

こんにちは、皆さん!株式会社調和技研で異常検知プロダクトの開発を担当しております鈴木卓麻です。今回、AIによる異常検知の導入を検討している企業の皆さんに向けて、異常検知モデルの特徴を解説します。今回対象とするアルゴリズムは、PatchCore(パッチコア)とPaDiM(パディム)です。

異常検知におけるPaDiM(パディム)とは?

PaDiM(パディム)*[1]は、2020年11月に発表された異常検知のための機械学習モデルです。PaDiMは、ImageNetの学習済みモデルに画像を入力して特徴を抽出した後、複数の層の特徴を結合してパッチを計算をします。このとき、複数の層から出力された特徴を組み合わせており、大きさの異なる欠陥にも対応できるように工夫がされています。また学習時には、正常画像のパッチの各要素の平均と共分散を求めておき、推論時にはマハラノビス距離でパッチが正常の分布からどの程度乖離しているのかを計測して異常度をスコア化するアルゴリズムとなっています。

異常検知におけるPatchCore(パッチコア)とは?

PatchCore(パッチコア)*[2]は、CVPR2022で発表された異常検知のための機械学習モデルです。

正常画像から得たパッチをクラスタリングし、推論時には各クラスタの中心からどの程度乖離しているのかを計測します。ImageNetの学習済みモデルを用いて入力画像からパッチを計算します。その後、正常画像から抽出したパッチを多次元空間の中の一つの点として捉えてクラスタリングを行い、その結果をメモリバンクとして保持します。推論時には、推論画像から得られたパッチと最も近いクラスタの代表値の間のユークリッド距離を異常スコアとしています。

PatchCoreとPaDiMの使い分け

では、皆さんの会社ではPatchCoreとPaDiM、どちらを選ぶべきなのでしょうか?

以下に、両者の特徴と使い分けのポイントをまとめました。

1. PatchCoreの特徴と使いどころ

  • 位置ずれに対する頑健性:PatchCoreは、検査対象物体に位置ずれがあっても異常を検出することができる。そのため、位置合わせが難しい場合や多少の位置ずれが許容される場合に適している。
  • 大まかな異常検知:PatchCoreは、微細な異常(小傷)などを見逃す傾向がある。そのため、異常の検出において大まかな判断が求められる場合に適している。

2. PaDiMの特徴と使いどころ

  • 厳密な位置合わせの必要性:PaDiMは、検査対象物体と学習データの位置合わせが厳密に求められる。位置ずれが少しでも起こると異常として検出されるため、精度の高い異常検知が必要な場合に適している。
  • 微細な異常の検出:PaDiMは、微細な異常を見つけやすい特徴がある。細部までの異常を検知する必要がある場合に適している。

3. 共通の特徴

  • 少量の正解画像と異常画像があれば(10枚程度)モデルが作成できる。
  • 精度は学習した枚数によって変わる

PatchCoreとPaDiMを実際に使って比較してみた

以上、PatchCoreとPaDiMの概要をご説明してきましたが、「具体的にどういうことか?」を見ていただくために、MVTecという異常検知界隈ではメジャーなデータセットを使って実際に比較してみました。

まず、次のような画像があります。赤枠はトリミング領域です。


次に、下記のように赤枠の位置を変えて2パターンのデータセットを作成しました。

1. センタークロップ(赤枠そのまま)

2. ランダムクロップ(赤枠をずらして切り取り)

これらのデータセットを使用して、PaDiMとPatchCoreの精度を比較してみました。

【条件】

  • 学習に用いるデータは位置ずれをしていない「CenterCrop」の画像を使用したモデル
  • 評価した画像は、「cable」「capule」「carpet」「screw」「wood」「zipper」の6種類
  • 評価は画像に対してのAUROCで評価1.0に近いほど優れたものと考える

【結果】

以上の結果から、次のような考察ができます。

なお、以下の画像の見方は以下の通りです。

左から順に

  • 「入力画像」
  • 「正解データ」
  • 「モデル推論結果のヒートマップ」
  • 「モデルが出力したマスク画像」
  • 「異常と判断した領域を赤枠で囲んだ画像」

オブジェクトに対しての評価結果考察

capsuleでの結果から、オブジェクトに対する評価結果は下記のようにまとめることができます。

  • 学習画像が位置ずれをしていない場合、PaDiMの出力結果は位置ずれのないCenterCropの画像について高い性能を示している。一方、位置ずれをしたRandomCrop画像に関しては、多くの領域を誤検出している。
  • PatchCoreに関しては、異常と反応している領域はPaDiMに比べて広いが、CenterCrop/RandomCropのどちらの場合でも安定した結果を返している。

テクスチャに対しての評価結果考察

一方、carpetの結果を見ると、テクスチャに対してはPaDiMとPatchCoreの両方とも安定した結果を返しており、異常個所を正確に検出していると言えます。

以上の結果から、オブジェクト系に関しては、異常を検知する際にはPatchCoreを使用する方が適していると考えられます。

一方、テクスチャ系に関しては、PaDiMもPatchCoreも優れた性能を示しており、どちらを選んでも良い結果を得ることができます。


続いて、「Zipper」の評価結果も詳しく見てみましょう。

PaDiMは、やはり位置ずれをしていない画像については高い性能を示しています。一方、位置ずれをした画像に関しては、誤検出しています。

PatchCoreは、位置ずれの有無に関わらず安定して異常個所を検知していますが、正解データにある小さい異常は検出ができていません。

もう一度PaDiMを見てみましょう。位置ずれをしていない方の結果を見てみると、正解データとはしていませんが、微細なゴミも検出してます。

ちりひとつも許さないような検査内容ではPaDiMの方を選択した方がよいこともありそうです。

以上の事から、次のような使い分けができるのかなと考察できます。

最適な異常検知の選択して効果的に生産性を上げよう

異常検知の選択肢として、PatchCoreとPaDiMはそれぞれ異なる特徴を持っています。会社のニーズや検査対象物体の特性に合わせて、適切な手法を選択することが重要です。PatchCoreは位置ずれに対する頑健性があり、大まかな異常検知に適しています。一方、PaDiMは厳密な位置合わせが必要であり、微細な異常の検出に優れています。

効果的に生産性の向上を実現するためには、異常検知手法の選択に加えて、正確な学習データや適切なパラメータの設定も重要です。専門家の助言や評価を活用しながら、最適な異常検知手法を導入しましょう。

調和技研では異常検知プロダクトとして上記モデルを試せるデモソフトを用意しています。「どの程度、異常検知ができるのか知りたい」「自社にとって最適な手法を知りたい」といった企業の皆さまには詳細をご説明させていただきますので、ぜひお気軽にお問い合せください。異常検知の選択肢を活用して、効果的な生産性の向上を実現しましょう!

>> 調和技研の「オーダーメイドAI開発・運用支援サービス」を見る

>> 調和技研に相談してみる

この記事が皆さまのシステム導入にお役立ていただければ幸いです。



【参考文献】
*[1] [PaDiM](https://arxiv.org/pdf/2011.08785.pdf) paper.
*[2] [PatchCore](https://arxiv.org/pdf/2106.08265.pdf) paper.

記事を書いた人
鈴木 卓麻

画像系AIの開発に従事。2002年立命館大学理工学部卒。写真現像機の開発、プリントシール機の開発を経て2022年8月に調和技研に参加。二児の父。子育てのために京都からフルリモートワークが可能な会社を探していたら北海道の調和技研に出会う。最近はPTA活動と競技ドッジボールの審判が忙しい。