結論:不良が集まらない工程は良品学習、種類分けが要るなら不良学習
良品学習(教師なし異常検知、one-class異常検知とも呼ぶ)は、良品画像だけを学習し、良品の分布から外れたものを「異常」とします。不良学習(教師あり学習)は、不良画像に「傷」「打痕」「異物」などのラベルを付けて学習し、欠陥を種類ごとに見分けます。
製造現場で実際によくある状況は、不良率が低くて不良サンプルが集まらない、しかも過去に見たことのない欠陥が時々出る、というものです。この条件では良品学習が先に立ち上がります。一方、検査結果を工程にフィードバックして「この傷は搬送工程、この打痕はプレス工程」と原因工程まで切り分けたい場合は、欠陥の種類を出せる不良学習が要ります。量産ラインでは両者を組み合わせる構成が現実解になります。
PatchCoreとPaDiMは「良品の特徴の地図」と比べる
代表的な良品学習手法の2つは、どちらもImageNetで事前学習済みのCNNを特徴抽出器として使い、ネットワーク自体は再学習しません。違いは良品の特徴をどう持つかです。
PatchCoreは、CNN(ResNet系)の中間層から画像の小領域(パッチ)ごとの特徴を取り出し、良品の特徴を「メモリバンク」に貯めます。検査時は、入力画像の各パッチがメモリバンク内の最も近い良品パッチからどれだけ離れているか(最近傍距離)を異常度とします。メモリバンクはcoresetサブサンプリングで25%・10%・1%まで圧縮でき、1%なら100分の1の容量になります(Roth et al., CVPR 2022)。
PaDiMは、画像の位置ごとに良品の特徴を多変量ガウス分布(平均と共分散)で表します。検査時は、その位置の分布からのマハラノビス距離を異常度にします。位置ごとに分布を持つため、ワークの位置決めが安定していることが前提になります(Defard et al., arXiv 2011.08785)。
公開ベンチマークMVTec ADでの精度は、PatchCoreが画像レベルAUROC最大99.6%、PaDiMが97.9%(EfficientNet-B5)と報告されています。ただし、OSSライブラリanomalibで再現したベンチマークでは、PaDiMの画像AUROCは0.891にとどまり、論文値より低くなりました(anomalib論文、arXiv 2202.08341)。手法名だけで精度を見積もらず、自社データで比べる必要があります。
使い分けの判断基準5つ
工程ごとに方式を決めるときは、次の5つを順に確認します。
| # | 判断基準 | 良品学習が向く | 不良学習が向く |
|---|---|---|---|
| 1 | 不良サンプルの集まり方 | 年に数件、種類ごとに数枚しかない | 種類ごとに数十枚以上集まる |
| 2 | 未知の欠陥の出現 | 新しい欠陥が時々出る | 欠陥の種類がほぼ固定 |
| 3 | 結果の使い道 | 合否判定と人の再判定で足りる | 欠陥種類を工程改善・原因工程に返す |
| 4 | 良品の見た目のばらつき | 小さい(色・模様が安定) | 大きい(自然なムラ・刻印違い) |
| 5 | 異常の性質 | 傷・汚れなど局所的な見た目の違い | 欠品・配置違いなど論理的な異常も含む |
4と5は見落とされがちです。良品の色ムラや刻印の違いが大きい製品では、良品学習がそのばらつきを異常と判定して過検出が増えます。また、部品の欠落や配置違いのような論理的な異常はパッチ単位の手法が苦手で、論理異常を含むMVTec LOCOを加えた3データセット平均ではPatchCoreは91.1まで下がります(EfficientAD論文)。
量産では2段構成で併用する
量産ラインで多い構成は、1段目に良品学習で「いつもと違う」ものを広く拾い、2段目で不良学習モデルが欠陥の種類を判定するものです。1段目で異常とされたが2段目のどのクラスにも当てはまらない画像は、人が判定して新しい欠陥クラスの候補として貯めます。
この構成の利点は、立ち上げ時は良品学習だけで動かし、不良画像が貯まるにつれて2段目を育てられることです。貯まる画像をロット・品番・設備と紐付けて保存しておけば、どの工程条件のときにどの欠陥が増えたかを後から分析できます。判定結果の記録方法は外観検査AIの判定結果をMESに戻す設計を参照してください。
よくある質問
PatchCoreとPaDiMのどちらから試すべきですか?
公開ベンチマークではPatchCoreのほうが高い精度を示しており、ワークの位置決めが多少揺れても扱いやすいため、最初の比較対象に入れることが多い手法です。ただし推論速度はRTX A6000で約32msと、EfficientADの約2msより遅いため、タクトの短いラインでは速度も合わせて比べてください。
不良学習には不良画像が何枚必要ですか?
欠陥の種類ごとに十分な枚数が必要で、まれな不良は集まらないことが多いのが実情です。集まらない欠陥クラスは良品学習側で拾い、人の判定を経て画像を貯める運用にすると、無理に枚数を揃える必要がなくなります。
良品学習の結果から欠陥の場所はわかりますか?
PatchCoreやPaDiMはパッチ単位で異常度を出すため、異常度の高い領域をヒートマップとして表示できます。欠陥の「種類」は出せませんが「場所」は示せるので、人の再判定を速くする材料になります。
この記事に出てくる用語
外観検査AIの選び方
良品学習か不良学習か、撮像系を誰が持つか。精度の数字だけで選ばないための比較軸 全51本
- 外観検査AIとは?2つの学習方式と導入5ステップを製造現場の目線で解説
- 製造業のAI活用10領域:外観検査・予知保全から設計・技能伝承まで一覧
- 外観検査AI製品の比較軸10項目:学習方式・撮像系の範囲・エッジ対応・再学習の手間
- 自動車メーカーのAI活用:溶接・塗装検査から生産計画・フィジカルAIまで10用途
