精度の数字を一つ受け取ったときに聞き返すこと、見逃し率・過検出率の分母と評価単位、不良サンプル数、処理量の測定条件、IntLearn Proの評価レポートで同じ数字を読む方法をまとめました。
AI検査を試験するとき、見逃し・過検出・処理量はどのように一緒に確認すればよいですか?
精度の数字一つでは、導入を判断できません。見逃しと過検出と処理量を、同じ試験サンプル、同じ判定基準、同じ評価単位で一緒に見て、分母とサンプル数を横に書いておく必要があります。試験を始める前に、何を1件と数えるか、どこまでを不良とみなすかから合意してください。
試験の結果として「精度○○%」という数字を一つだけ受け取ったら、表に書き写す前に、次の四つを聞き返してみてください。
この四つの答えがなければ、同じ試験からでもまったく違う数字が出ます。誰かが隠しているというより、違うものを数えていると気づかないまま進んでしまうために起こることです。
過検出率を全検査数で割るところもあります。間違った方法ではありませんが、分母が違えば二つの結果を並べて比べることはできません。
IntLearn Proの評価画面では、同じ概念が別の名前で出てきます。正常だけを学習する異常検知(IntAnomaly)は、見逃し率をFNR(MISS)、過検出率をFPR(OVERKILL)として表示し、正常と不良をどれだけうまく分けられるかをAUROCで表示します。位置を見つける検出(IntDetection)のレポートは、適合率(見つけたとしたもののうち正しかった割合)と再現率(実際の対象のうち見つけ出した割合)を使います。再現率を1から引くと、その単位の見逃し率になります。ただし適合率は分母が「不良と判定したもの」なので、過検出率に読み替えることはできません。
同じ試験でも、数える単位によって数字が変わります。
製品1個を4方向から撮るとしましょう。良品1個の4枚のうち1枚だけが誤って不良と出たなら、画像単位では過検出1枚(4枚中)、製品単位では過検出1個です。過検出を画像単位で数えるとよく見えるのは、このためです。出荷は製品単位で決まるので、最終的な比較も製品単位で行うのが妥当で、結果表には単位を必ず一緒に書きます。
判定基準を厳しくすると、見逃しは減って過検出が増えます。緩くすると逆です。IntLearn Proではこの基準は、検出の確信度しきい値(Confidence Threshold)や異常検知の判定しきい値で、マニュアルに書かれたコツも簡単です。過検出が多ければ上げ、見逃しが多ければ下げます。しきい値一つで両方を同時に減らすことはできません。
どちらをより痛手と考えるかは、会社が決めます。不良1個がそのまま顧客クレームになる部品なら、過検出を受け入れて見逃しを減らします。過検出のせいでラインが何度も止まり、再検査の人員が持たないなら、反対側に振ります。IntAnomalyに「Low overkill」という学習シナリオが別にあるのも、この二つ目の状況のためです。
そのため、次のような結果表は導入の判断には使いにくいものです。見逃し率だけがあって同じ基準の過検出率がない表、過検出率はあるのに不良サンプルがいくつだったかが書かれていない表、処理時間だけがあって、その時間に撮影と排出信号まで含まれているかわからない表です。
良品だけで試験したなら、見逃し率の分母である実際の不良数は0です。このときの見逃し率は「0%」ではなく「計算できない」です。
不良サンプルをすべて見つけたとしても、サンプルが少なければ実際の見逃し率が0だとは言えません。統計で使われる「3の法則」によれば、不良n個をすべて見つけたとき、95%信頼水準での見逃し率の上限はおおよそ3 ÷ nです。
上の表は計算方法を示す例であり、特定の製品の性能値ではありません。根拠:Hanley JA, Lippman-Hand A, JAMA 1983;249(13):1743-1745.
不良30個で「一つも見逃さなかった」という結果は、「見逃し率は10%を超えなさそうだ」に近いものです。不良サンプルを集めにくい工程ほど、この違いを知ったうえで数字を読む必要があります。
わざとでなくても起こります。試験を準備するときは、この五つをまず確認してください。
試験サンプルの良品と不良の比率は実際の生産とは違うことも、覚えておいてください。現場で過検出がいくつ出るかは、実際の生産量でもう一度計算してみる必要があります。
説明用の例:1日に10,000個を検査し、製品単位の過検出率が1%なら、1日に約100個が人の手でもう一度確認する対象になります。
過検出率は、つまるところ再検査にかかる人の時間です。見逃し率の目標を決めるときは、過検出率の目標も一緒に決めてください。
画像1枚の推論時間は、処理量の一部にすぎません。IntLearn Proの製品ページにある2.47msも、そのように読む必要があります。これはSegmentationエンジン、1024×1024画像あたり、KIPT試験での平均値であり、ラインの1サイクルにはこれに撮影、画像の転送、前処理、複数カメラの結果の統合、排出信号が加わります。
平均だけでなく、最も遅い場合を見てください。排出装置は決められた時間内に信号を受け取る必要があり、遅れた1回が不良をそのまま流してしまいます。ロール素材はライン速度(m/min)と幅で、個別の製品は1分あたりの個数で書き、二つの単位を混ぜません。試験時の画像サイズとカメラ台数が、実際の設置構成と同じかどうかも確認します。
試験が終われば数字は固定されるように思えますが、実際にはしきい値を一度変えただけで見逃しも過検出も変わります。IntLearn Proでしきい値を変えたり再学習したりしたら、現場用のモデルファイル(.dx)を書き出し直し、検査パッケージ(.izpkg)を作り直さないと、ラインには反映されません。画面で見た数字とラインの結果が違うなら、まずこれを確認します。
判定基準を変えるときは、誰が、いつ、なぜ変えたかを残し、サンプルでもう一度確認してください。検査パッケージを書き出すときにゴールデンセットゲートを有効にしておくと、基準画像の判定がずれたパッケージは書き出されません。書き出したパッケージはデプロイレジストリがSHA-256とともに記録し、現場ごとの適用・ロールバックの履歴を残すので、ある日数字が変わったときに、その日何が変わったのかをさかのぼれます。
試験に使うサンプルの選び方は、射出成形品のサンプル準備ガイドに書きました。
この記事の表と例の数字は計算方法を示すためのものであり、インテリズの製品の性能ではありません。2.47ms(Segmentationエンジン、1024×1024画像あたり、KIPT試験)だけは、製品ページに載っている外部試験の値です。試験結果も、試験したサンプルと条件での結果なので、新しい不良の種類や新しい色、照明の変化が生じたら、改めて確認する必要があります。