01 / AI INSPECTION
不良画像が少なくても、AI外観検査は成立する?
AI・技術PoC|成立性の評価
不良画像を十分に集めにくい検査を想定し、正常画像を使う3方式を比較しました。公開データで見逃し・誤検出を評価し、事前の採用基準に照らして成立性を判断した検証例です。
今回の条件では、3方式とも採用を見送りました。不良画像10枚での学習や現場への導入を検証したものではなく、導入前に小さく試し、次へ進むかを判断するPoCの考え方をご紹介いたします。
01
まず、手元の画像に何が写っているかを確認する
同じ傷を似た角度で何枚も撮った画像と、異なる不良を撮った画像では、確認できる範囲が変わります。
初回のご相談では、例えば次のことを伺います。
- 見つけたいのは傷、欠け、汚れ、組み付け違いなど、どのような異常か。
- 手元の画像に、対象となる不良の種類がどれくらい含まれているか。
- 正常品の画像は、どれくらい用意できるか。
- 照明、角度、背景、品種などに、どのような変化があるか。
- AIの判定後に、人が再確認する工程を設けられるか。
すべての条件が分かっている必要はありません。足りない情報を整理することも、検証の準備に含まれます。
02
正常品の画像を見本にして、不良の候補を探す
不良画像が少ないときは、正常品の画像を見本にして、「いつもの見た目から外れている部分はないか」を調べる方法が候補になります。
Inefficiency Labでは、この考え方を使う3つの方法を、公開されているプリント基板の画像で比較しました。不良の見本を覚えさせるのではなく、正常な状態との違いから異常を探す検証です。
比較した3つの方法
-
画像を重ねて、明るさの差を見る(ECC残差法)
正常な基板の見本と検査画像の位置を合わせ、重ねたときに残る明るさの差を数値にします。 -
輪郭の向きや並びの違いを見る(Patch HOG+One-Class
SVM)
画像を小さな領域に分け、輪郭の向きなどを数値にします。正常画像で見られる特徴から、どれくらい外れているかを調べます。 -
学習済みAIで、見た目の特徴を比べる(DINOv2)
学習済みの画像AIを追加学習せずに使い、小さな領域ごとの特徴を数値にします。224×224画素へそろえた検査画像の特徴を、正常20枚から集めた5,120領域の特徴と比べます。
学習・調整用の画像と、性能テスト用の画像を分ける
学習や判定基準の調整に使った画像は、性能テストには使いません。使った画像では正しく判定できても、初めて見る画像で同じ性能が出るとは限らないためです。この研究では、画像を次の3つの用途に分け、同じ画像を別の用途に使わないようにしました。
-
正常画像20枚:正常な状態を学習・比較するための見本。
3つの方法が同じ20枚を使い、基板の通常の見た目や特徴を捉えます。 -
別の正常画像881枚:判定基準を調整する。
正常品にも見た目の違いがあるため、その違いだけで異常と決めつけないよう、判定の境目を調整します。 -
さらに別の正常100枚・異常100枚:性能テストに使う。
学習・調整後の設定を変えずに判定します。その後、正常・異常の正解情報と照合し、見逃しと誤判定を数えます。
各方式をCPUで動かし、性能テストの正解情報を伏せて判定を保存しました。独立して起動したプログラムで各方式の先頭10枚のスコアが一致することも確認してから、正解情報と照合しています。判定基準(閾値)はテスト結果を見て変更していません。
この研究で使ったのは、見本20枚に加え、判定基準の調整と性能テストのための画像です。「見本に必要な枚数」と「性能を確かめるために必要な枚数」は分けて考える必要があります。
03
3つの方法を比べた結果、今回は採用を見送った
結果は「見つけた数」と「間違えた数」で確認する
今回の研究では、次の検証へ進む条件の一部として、次の2つを事前に決めました。
- 異常100枚のうち、90枚以上を異常と判定する。
- 正常100枚のうち、異常と間違えるのは5枚以下にする。
これは研究用に仮に置いた条件です。実際の現場では、不良を見逃す影響や、人が再確認する負担に合わせて基準を決めます。
| 方法 | 異常100枚のうち見つけた数 | 正常100枚のうち異常と間違えた数 |
|---|---|---|
| 画像を重ねる(ECC) | 13枚 | 4枚 |
| 輪郭を見る(Patch HOG) | 16枚 | 5枚 |
| 学習済みAIで比べる(DINOv2) | 34枚 | 7枚 |
最も多く異常を見つけたDINOv2でも、100枚中34枚の検出にとどまり、66枚を見逃しました。正常品を異常と間違えた数も7枚となり、上限の5枚を超えました。検出した割合は再現率(recall)、正常品を異常とする割合は誤検出率(FPR)として評価しています。
採用の判定では、DINOv2は正常品の誤判定が上限を超えた時点で不採用になりました。ほかの2つは、異常を見つけた数が基準に届きませんでした。3つとも条件を満たさなかったため、今回は次の検証へ進める方法を選びませんでした。
異常らしい順に画像を並べる能力の指標AUROCは、DINOv2で0.7943と3方式中で最も高い値でした。ただし、これは正答率ではありません。実際に使う判定基準での見逃し・誤検出が、業務の許容範囲に収まるかを別に判断します。
この結果が示す範囲と限界
今回の比較実験は、3つの方法を評価し、いずれも採用を見送る判断まで完了しています。基板の種類と参照画像の組は一つに限られ、画像全体の正常・異常だけを評価しました。欠陥位置の特定、別の製品・撮影条件での性能は未検証です。
この比較実験には、誤判定した画像を目視で調べる原因分析や、方法を改善した後の再評価は含まれていません。
04
先に決めたいのは、導入を判断する条件
「AIが異常を見つけた」という試作から、実際の検査へ進むには、少なくとも次を整理したいと考えています。
| 確認すること | 業務上の問い |
|---|---|
| 見逃し | 対象の不良を、どれくらい見つける必要があるか |
| 誤検出 | 正常品の再確認が、どれくらい発生しても運用できるか |
| 処理時間 | 撮影から確認・記録まで、必要な時間に収まるか |
| 適用範囲 | どの品種・撮影条件までを対象にするか |
| 人の判断 | AIが判断しにくい画像を、誰がどう確認するか |
小規模PoCでは、この条件を先に決めてから検証いたします。結果に応じて、画像を追加する、撮影方法を見直す、別の方式を試す、現時点では見送る、といった選択肢を整理いたします。
05
手元の画像で、何を確かめられるかご相談いただけます
最初は、不良画像と正常画像の有無、検査対象、現在の確認方法をお知らせください。画像を共有する前に、検証の目的や共有方法からご相談いただけます。
技術担当の方へ:公開研究のコードと文書