gLupe をうまく使うコツ

前回ご紹介しました AI 外観検査ソフトウェア gLupe について、今回は gLupe を使って不良品検出をする際のコツをご紹介したいと思います。

データの撮り方

ライティング

一般に画像処理ベースの外観検査を行う場合の撮影は、強い光量でコントラストを高めにすることが多いと思います。しかし gLupe では、人間の目視検査のときのような見た目に近い画像であることが望まれます。キズ、汚れなど想定する異常が、人間が見ても判る画像を撮影してください。

また、環境光(室内灯や外光など)の影響を排除するため、覆いを掛けるなどすると良いでしょう。

位置

gLupe は画像中の対象物の位置ずれにはそれほどシビアではありませんが、それでも位置がズレない方が精度は上がります。特に、感度 3 で検出する場合は些細な変化も発見しようとするので、この場合は位置ずれしないように撮影することが必須となります。

02-diff_size

カラーかグレイスケールか

撮影速度を考えると白黒(グレイスケール)画像の方が有利ですが、 gLupe の場合はカラー (RGB) 画像の方が一般に検出精度が高くなります。人間も、カラーでは見えていたものがグレイスケールでは見づらくなるものもあります。

グレイスケール画像でうまく検出できない場合は、カラー画像も試してみてください。

学習データの選定

gLupe は少ない数の正常データのみで学習できることが特長です。それが故に、学習データの選定は非常に重要です。

なるべく万遍なく選ぶ

gLupe は良品データのみを学習します。したがって gLupe の学習データは、現実に良品が取り得る状態を表現していることが理想となります。イメージとしては下図のように、収集した良品データ(学習データ候補)の中でもなるべく万遍なく選抜することを意識してください。

取りうる良品の分布
なるべく満遍なく選抜
偏りがあってはいけない

例えば、ビデオカメラでデータ収集をして、その動画からフレーム画像を切り出して学習・評価データを作成するとします。通常、動画内のあるフレームとその前後のフレームはほとんど変わりません。したがって、フレームを連続して採用してしまうと、その時間帯に偏ったデータセットになってしまいます。

チャンピオンデータ

外観検査においては **限度品** という考え方があり、多少キズや汚れがあっても、ある規定の限度内であれば“良品”とすることがあります。しかし gLupe に“良品”を学習させる場合、限度品も学習させてしまうと検出精度が落ちてしまうことが多いです。これは、限度品とはいえどもキズ・汚れなど異常があるには違いなく、そのような異常の特徴を gLupe に正常として教えてしまうことになるからです。

gLupe の最初期の学習・評価では、期待する異常をそもそも検出できるかどうかを確認することになると思いますが、最初から限度品データを学習データに混ぜてしまうと期待通りの結果にならないことになります。まずは、異常がほとんど見られない明らかに正常なデータ = チャンピオンデータ を学習データとして使用し、検出できるかどうかを評価しましょう。

このチャンピオンデータで検出できることが確認した上で、徐々に限度品データを加えていくなどデータセットを変更して評価を進めていくと、どこが良くてどこが悪いのかが分かりやすくなります。

評価の仕方

反応の様子を確認

gLupe が出力する異常度マップはピクセル単位で異常度を示しており、異常箇所が判るようになっています。評価データによる評価作業では、既知の異常箇所に対して異常度ヒートマップが反応していることを確認します。

この際、期待しない箇所に反応している場合は学習データに問題があることが多いので、学習データの見直しを検討しましょう。よくある例を次に挙げます。

  • 対象物の輪郭に反応
    位置ずれが大きい
  • 対象物の表面テクスチャに反応
    個体差を学習しきれていない
  • 期待する異常に反応していない
    学習データにその異常と似たようなデータが混ざっている

前処理の検討

gLupe の反応が期待通りにならない場合、データの前処理(画像処理的手法の適用)を検討してみましょう。

  • 入力画像の解像度が大きく、小さい異常に反応しない
    入力画像を何分割かしてパッチ画像とし、それぞれでモデルを作る
  • 背景の変化が大きく、期待する異常よりもそちらに反応してしまう
    背景部分をマスクする
  • 対象物の位置ずれが多く、うまく学習できない
    位置補正をする

ただし、精度や処理速度の観点から、カメラ・照明などの撮影条件で解決できることはなるべくそちらで解決した方が良いでしょう。

しきい値の考え方

最大異常値に対するしきい値は、 gLupe が出す答えから“異常”を決定する条件の1つとなります。これを考えるには、評価データセットの最大異常値ヒストグラムを取ると判りやすくなります。

理想的には、ヒストグラム上で良品の分布範囲と不良品の分布範囲が明確に別れていることになりますが、実際には双方の裾野部分が重なることが殆どです。次図は最大異常値ヒストグラムの例です。横軸が最大異常値、縦軸はデータ数になります。左側の青い山が良品データのビン、右側の赤い山が不良品データのビンです

一般の外観検査では、不良品を取りこぼすことを防ぐために過検出気味に検出条件を設定することになりますので、この場合のしきい値も、評価データセット中の不良品データ最大異常値の最低値未満にすることになります。
次に問題になるのは誤検出する良品の数を減らすことですが、こちらはデータの見直しによって対応しましょう。

その他の判定方法

gLupe の出す異常値の最大値で OK / NG 判定する以外にも、いろいろな判定方法が考えられます。
例えば異常箇所の大きさを加味したい場合、しきい値以上の異常値のピクセル数(=面積)を数え上げて判断する、ということができるでしょう。 gLupe の出力する異常度マップはグレイスケール画像に相当(ただし値範囲は 0 ~ 1 の浮動小数点数)しますので、画像処理手法を適用することもできます

最後に

本記事では、対象の製品や検出したい課題によらない範囲でのコツをご紹介しましたが、やはり実際には対象物やどんなものを見つけたいかによって対処が変わってくることが多いです。 ISP としてもユーザ様が抱える課題に応じてノウハウをご提供できるよう、開発サポートやデータ解析サービスを用意しておりますので、ぜひお気軽にご相談ください。