R&D
CENTER

正常だけを見て異常を見つける — 異常検知と PatchCore

不良サンプルは集めにくく、明日にはまだ見たことのない不良が出てきます。正常画像だけで学習し「正常と異なる箇所」を見つける異常検知の原理を、最も広く使われている PatchCore を例に説明します。

入門7 分0 閲覧
この講座のポイント
  1. 異常検知は不良を学習せず、正常だけを学習します。そのため、学習時に見ていない新しい不良も「正常と異なる」として検出できます。
  2. 結果はピクセルごとの異常度ヒートマップと、画像ひとつにつき1つの代表スコアです。スコアが閾値以上ならNGです。
  3. PatchCore は正常画像の小さな断片(パッチ)の特徴をメモリに蓄えておき、新しいパッチが最も近い正常パッチからどれだけ離れているかで異常度を測ります。
  4. 閾値を2つ設けると OK / Gray / NG の3区間ができ、判断のつかない Gray は人が確認して再学習に反映します。

検査の3つの世代

第1世代 · ルールベース 第2世代 · 教師あり学習 第3世代 · 正常学習
学習データ なし(人がルールを設計) 不良画像数千枚 + ラベル 正常画像数十〜数百枚、ラベル不要
初見の不良 ルールになければ見逃す 学習時に見ていないタイプに弱い 「正常と異なる」として検出
セットアップ期間 数週間(専門家による調整) 数週間〜数か月(不良の確保) 数日

製造現場では、不良率は通常低い水準です。不良画像を数千枚集めるには長く待たなければならず、集めている間にも新しいタイプの不良が発生します。異常検知はこの問題を逆転させます。**正常を十分に見せ、正常から外れたものはすべて異常とみなします。**少ないものでは正常2〜30枚から始める few-shot 方式もあります。

共通の処理の流れ

fineAi AD Workbench の11のアルゴリズムは、すべて同じ枠組みに従っています。アルゴリズムごとに異なるのは③と④だけです。

① 入力元画像 ② 前処理正方形パディング ③ 特徴抽出CNN · ViT ④ 異常度距離 · 確率 ⑤ 異常マップ拡大・平滑化 ⑥ スコアmax · 上位 q% ⑦ 判定score≥thr→NG アルゴリズムごとに異なる部分
② 前処理では、縦横比を保ったまま正方形にパディングします。5:1のような細長い部品でも歪まないため、欠陥の形状が保たれます。

PatchCore — 正常な断片の記憶

PatchCore は精度が高く、AD Workbench が標準として推奨しているアルゴリズムです。原理は意外にシンプルです。

学習 — 正常パッチを集める

  1. 大規模な画像で事前学習されたニューラルネットワーク(WideResNet50-2)に正常画像を入力し、中間層(layer2、layer3)の特徴マップを取り出します。特徴マップの1マスは、元画像の小さな断片(パッチ)ひとつを数値ベクトルとして要約したものです。
  2. すべての正常画像のすべてのパッチベクトルをメモリバンクに集めます。
  3. バンクが大きすぎると検索が遅くなるため、全体の分布を代表する一部だけを選びます(coreset サンプリング)。

ニューラルネットワークの重みを新たに学習することはありません。正常画像を一度走査して集めるだけなので、学習は数秒〜数分で終わります。

検査 — 最も近い正常との距離

  1. 新しい画像からも、同じ方法でパッチベクトルを抽出します。
  2. 各パッチについて、メモリバンクから**最も近い正常パッチk個(k=3)**を探し、距離を測ります。
  3. 正常に似たパッチは距離が小さく、キズのあるパッチは似た正常パッチがないため距離が大きくなります。この距離がその位置の異常度です。
  4. パッチごとの異常度を元のサイズに拡大して滑らかにするとヒートマップになり、ヒートマップの最大値(または上位数%の平均)を0〜1に正規化したものが画像スコアです。
メモリバンク(正常パッチの特徴) 正常パッチ → 距離が小さい キズのパッチ → 最も近い正常も遠い ヒートマップ · score 0.71 ≥ 0.50 → NG
異常度とは「最も似ている正常パッチとどれだけ違うか」です。学習時に見たことのない欠陥でも、距離は大きく出ます。

閾値と Gray 区間

スコアが出たら、閾値と比較して判定します。閾値を下げると不良の見逃しは減りますが、正常を不良と判定する過検出が増え、上げるとその逆になります。このバランスについては、講義モデル評価と現場運用で扱います。

fineAi は二重閾値を採用しています。

  • スコアが低い方の閾値より小さければ OK
  • 高い方の閾値より大きければ NG
  • その間は Gray — 人が確認します。

Gray の画像に人が下した判定は、再び学習データになります。運用するほど Gray が減っていく仕組みです。

異常検知が合いにくいケース

  • 正常そのもののばらつきが大きい対象 — 形がまちまちな農産物のように「正常」の範囲が広いと、欠陥との区別が難しくなります。
  • 欠陥の名前と位置が必要なとき — 異常検知は「どこがおかしいか」までは示しますが、「これはキズである」と分類まではしません。この場合は物体検出を併用します。

11のアルゴリズムのうちどれを選ぶかは、次の講義異常検知アルゴリズムの選び方で扱います。