混同行列 — 4つのマスに分けて数える
| 実際は正常 | 実際は不良 | |
|---|---|---|
| モデル: OK | 正解 | 見逃し(不良の流出) |
| モデル: NG | 過検出(正常品の廃棄・再検査) | 正解 |
不良率1%のラインで、すべての部品をOKと判定する「モデル」の正解率は99%です。しかし、不良は1つも検出できません。そのため、正解率だけでなく、以下の指標を合わせて確認します。
- 再現率(Recall) — 実際の不良のうち、モデルが検出できた割合。見逃しが少ないほど高くなります。
- 適合率(Precision) — モデルがNGと判定したもののうち、本当に不良だった割合。過検出が少ないほど高くなります。
- F1 — 再現率と適合率の調和平均。両者のバランスを1つの数値で見たいときに使います。
閾値はコストで決める
多くの現場では、**見逃し1件のコストは過検出1件よりはるかに大きくなります。**不良が顧客に渡るとクレームやリコールにつながりますが、過検出は再検査のコストで済みます。そのため、手順は次のようになります。
- 許容できる見逃し率を先に決めます。例: 0件。
- その条件を満たす閾値のうち、過検出が最も少ない値を選びます。
- 過検出が多すぎる場合は、閾値ではなく、画像(照明・位置合わせ)とモデルを改善します。
F1が最も高くなる点を自動で探す機能(RoboVision)は良い出発点になりますが、最終的な値はこのコスト基準で調整します。判断の確信が持てない区間は、二重閾値の Gray として人に引き継ぎます。
データを3つに分ける
- 学習セット — モデルが学習するデータ。
- 検証セット — アルゴリズムや閾値を選ぶときに参照するデータ。
- 評価セット — 最後に一度だけ性能を確認するデータ。
閾値を評価セットを見ながら合わせると、その数字は実際より良く出てしまいます。また、同じ部品を複数の角度で撮影した画像が、学習と評価に分かれて入ってはいけません。モデルが「見たことのある部品」を再び当てることになるためです。
ラインへの投入
- 速度 — 判定はラインのタクトタイム内に終わる必要があります。画像1枚の推論時間だけでなく、撮影・前処理・結果送信まで合計した時間を測ります。
- 最適化フォーマット — 学習したモデルを ONNX や TensorRT に変換すると、同じGPUで推論が速くなります。Physical AI Platform(PaaS)の Model Hub が変換とデプロイを管理します。
- 結果の記録 — 判定、スコア、画像パスをCSVで残し、fineAi Dash に集約すると、時間帯・ライン・不良タイプ別の傾向、SPC、パレート図を確認できます。
運用中の変化 — ドリフト
ラインは常に変化します。照明が経年劣化し、原材料のロットが変わり、カメラがわずかにずれます。すると、正常部品のスコア分布が少しずつ右へ移動し、ある日突然、過検出が増えます。PaaS は、スコア分布が学習時とどれだけ変わったかを PSI(Population Stability Index) で計算し、警告します。過検出が多発する前に原因を探せます。
再学習のサイクル
- 現場のオペレーターが、NGと Gray の画像に実際の判定を付けます。
- 判定を付けた画像がデータセットに蓄積されます。
- 定期的に再学習し、評価セットで以前のモデルより良くなっているかを確認します。
- 改善していれば、OTA で現場の装置に配信します。
このサイクルが回れば、モデルはラインとともに成長します。逆にサイクルがなければ、リリース日の性能が最高点になります。