
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活動と競技ドッジボールの審判が忙しい。
関連記事


【MoA】 ローカルモデルを組み合わせてgpt-4o-miniと同等の性能?「Mixture of Agents」を試してみる
- 生成系AI
- ChatGPT
- 言語系AI

「Gemini 2.0 Flash Thinking」の画像入力を試してみる
- 生成系AI
- ChatGPT
- 言語系AI

人間のフィードバックによる強化学習とデータセット構築
- 生成系AI
- ChatGPT
- 言語系AI

OpenAI Canvas - AIと共同作業を加速する新たな作業空間 -
- 生成系AI
- ChatGPT
- 言語系AI

AI Agent Vol.3【Agent の 学習と評価】
- ChatGPT
- 生成系AI
- 言語系AI

Google のLLM「Gemini 2.0 Flash Thinking」を試してみる
- 生成系AI
- ChatGPT
- 言語系AI

【GroqCloud】 爆速回答!?GroqCloudの実力とは

【まとめ】GPT-4.5 登場!史上最強のAIモデルがリサーチプレビューを公開
- ChatGPT
- インタビュー
- 生成系AI
- 言語系AI

AI Agent Vol.2【Agent の 4つの要素】
- ChatGPT
- 生成系AI
- 言語系AI

Google のLLM「Gemini 2.0 Flash」を試してみる
- 生成系AI
- ChatGPT
- 言語系AI

2024年 年末のAI関連発表について
- ChatGPT
- 生成系AI
- 言語系AI

OpenAIが公開したLLMの事実性を評価する指標「SimpleQA」でモデルを測定してみた
- 生成系AI
- 言語系AI
- ChatGPT

AI導入に必須!PoC(概念実証)を成功させる進め方とポイント

The AI Scientist:AIによる論文の自動生成|さまざまな研究テーマを提案させてみる
- 生成系AI
- ChatGPT
- 言語系AI

AI Agent Vol. 1【Single AgentとMulti Agent】
- ChatGPT
- 生成系AI
- 言語系AI

AI活用成功に導く「AI導入アセスメント」とは――数理最適化AI事例をもとにポイントを解説

Llama 3 の日本語継続事前学習モデル「Llama-3-ELYZA-JP-8B」を試してみる
- 生成系AI
- 言語系AI
- ChatGPT

「戻れない変化」を生み出し続ける。コンサルを通して見極める業界DX実現への道筋
- インタビュー
- 生成系AI
- ChatGPT

サステナビリティ領域で活躍するAI―SDGs×AI活用事例
- 数値系AI
- 画像系AI

MetaのオープンLLM「Llama3.2 3B-Instract」の精度を検証してみた|GPT4o-miniとの比較あり
- 生成系AI
- 言語系AI

OpenAIの軽量モデル「GPT-4o mini」を試してみる
- 生成系AI
- 言語系AI
- ChatGPT

Microsoft「GraphRAG」とLangchainの知識グラフを活用したRAGを比較
- ChatGPT
- 言語系AI
- 生成系AI

ChatGPTのAPI利用料金比較|最新モデルGPT-4o miniも検証
- ChatGPT
- 言語系AI
- 生成系AI

Langchain+Neo4j で「GraphRAG」を実装してみる
- ChatGPT
- 生成系AI
- 言語系AI

数理最適化ソルバー活用事例|組合せ最適化で社内交流会の班分けを自動化
- 数値系AI

GoogleのマルチモーダルLLM「Gemini.1.5 Flash」の精度を検証してみる
- ChatGPT
- 生成系AI
- 言語系AI

3次元点群データを用いた物体検出
- 画像系AI

GPT-4oを活用した画像検索システムの構築方法
- 画像系AI
- ChatGPT

Pythonコーディングを簡単に|LangChainで効率化【LLMことはじめ Vol.2】
- ChatGPT
- 言語系AI
- 生成系AI

Microsoft 365 Copilot:AIによる業務効率化の革新
- ChatGPT
- 生成系AI
- 言語系AI

Google のオープンLLM「Gemma」を試してみる|GPT-3.5 Turboとの比較あり
- ChatGPT
- 生成系AI
- 言語系AI

3次元点群データとAIを用いたオガ粉の体積計測
- 画像系AI

Llama 3 の日本語継続事前学習モデル「Llama 3 Youko 8B」を試してみる|他LLMとの比較あり
- ChatGPT
- 言語系AI
- 生成系AI

RAG(Retrieval Augmented Generation)を「Command R+」で試してみた|精度をGPT-4 Turboと比較
- ChatGPT
- 生成系AI
- 言語系AI

Wood Powder Volume Calculation using Point Cloud Data and AI
- 画像系AI

Dify(ディファイ)をGoogle Cloudにデプロイしてみた
- 生成系AI

“Azure OpenAI”で始めるPythonプログラミング【LLMことはじめ Vol.1】
- 生成系AI
- 言語系AI
- ChatGPT

Combating the Malicious Use of AI-Powered Image Editing: A Deep Technical Dive
- 生成系AI
- 画像系AI

最新版「GPT-4 Turbo」を試してみた|GPT-4oとの比較あり(5/14追記)
- ChatGPT

PrecisionとRecallを何度も調べ直さないために
- 言語系AI

Stable Diffusion+LoRAを使って異常画像データを生成できるか検証してみた
- 生成系AI
- 画像系AI

大規模言語モデルによるソースコード生成:GitHub CopilotからCopilot Xへの進化と未来
- 生成系AI
- 言語系AI

AI導入の前に知っておくべき基礎知識(後編)――効率的に自業務にAIを導入するための4ステップ
- 数値系AI
- 画像系AI
- 言語系AI

配達ルート最適化AIにより作業時間80%削減を実現。成功の鍵は“人とAIの調和”
- インタビュー
- 数値系AI

AI画像生成の法的リスク(後編):著作権侵害を回避するために
- 生成系AI
- 画像系AI

AI画像生成の法的リスク(前編):著作権法の基本を学ぼう
- 画像系AI
- 生成系AI

AIというツールを使い 「生命たらしめるもの」が何かを見つけたい【調和技研✖️AIの旗手 Vol.4】
- インタビュー

AI導入の前に知っておくべき基礎知識(前編)――AIのキホンと活用事例
- 数値系AI
- 画像系AI
- 言語系AI

AIアルゴリズムの構築には、 課題の本質を見極めることが重要 【調和技研✖️AIの旗手 Vol.3】
- インタビュー

CNNで浮世絵画風変換はできるのか――Ukiyolator開発ストーリー Vol.2
- 画像系AI
- 生成系AI

住宅写真という資産をAIで利活用し、工務店とお客様をつなぐ新たなビジネスを創造
- インタビュー
- 画像系AI
- ChatGPT

シフト最適化への応用が期待される強化学習を用いた組合せ最適化の解法
- 数値系AI

多彩なサービスと紐づく「交通」の課題解決で地域の活性化や住みやすさの向上を【調和技研×AIの旗手 Vol.2】
- インタビュー

AIプロダクトを開発する際に考えるべき品質保証のキホン
- 数値系AI
- 生成系AI
- 画像系AI
- 言語系AI

Microsoft GuidanceでのFunction Calling機能の使い方とその特徴
- ChatGPT
- 言語系AI

Segment Anything Model(SAM)を使いこなそう!パラメータ設定のポイントも徹底解説
- 画像系AI

Stable Diffusionを使って異常画像データを生成できるか検証してみた
- 画像系AI
- 生成系AI

基礎から解説!数値系異常検知の概要と代表的な手法
- 数値系AI

実践!ChatGPT×Slackの具体的な連携方法と日常業務での効果的な活用事例
- ChatGPT
- 言語系AI
- 生成系AI

最先端AI技術で浮世絵を現代に再現する――Ukiyolator開発ストーリー Vol.1
- 画像系AI
- 生成系AI

社内の暗黙知を可視化するナレッジネットワークでイノベーションが生まれやすい環境に
- インタビュー
- 言語系AI

人の幸せや社会の豊かさに、AIをいかに「調和」させるか【調和技研×AIの旗手 Vol.1】
- インタビュー