DX station

AI を活用して外観検査の課題を解決!撮影した画像に異常が含まれているか判定して DX を推進しよう

藤 亮太

こんにちは。データサイエンスチームの藤 (トウ) です。

工場の生産ライン上で発生する不良品のチェックを自動化できていますか?目視によるチェックは人件費が増え、作業員の経験に左右されるでしょう。一定の基準で選別して AI による効率化を目指し、作業員の時間を作っていきたいものです。また AI による制御に取り組んだものの精度が満たせず、 AI 活用プロジェクトが頓挫した経験はありませんか? PoC (ビジネスとして利用できるか検証する) からシステム化まで検討する上で何が必要になるのか洗い出すのも簡単ではないです。

この記事では不良品のチェックの自動化を目的とし、ディープラーニングを活用して、撮影した画像に含まれる異常箇所を検知してみます。また AI 活用プロジェクトを通して、工場などの DX推進を進めていく上で必要になる考えも掲載しています。 AI 活用、 DX 推進に興味がある方は最後までお付き合いください。



「機械学習導入支援サービス」はこちら

「ML Connect」はこちら


画像の異常検知とは

画像の異常検知では、一般的に以下の 2 つの判定を行います。

  • 画像に異常が含まれているかどうか判定する
  • 画像内の異常箇所がどこか判定する

具体例で示しましょう。

上記のように画像に異常が含まれているかどうか判定する場合は、画像に対して “正常” または “異常” の判定を行うことを目標に学習を行います。一方、画像内の異常箇所がどこかを判定する場合は、実際にどこが異常なのか出力することを目標に学習を行います。

業務によっては異常箇所を求めるより、画像に異常が含まれているかどうか判定さえできればよい場合もあるかと思います。一般的に異常箇所を判定する際の処理時間は、画像に対して異常検知をする場合よりも時間がかかる傾向があります。業務のプロセスに求められる速度を吟味しながら選択したいところです。


「機械学習導入支援サービス」はこちら

「ML Connect」はこちら


画像の異常検知は“教師なし異常検知”がオススメ

前章では判定方法について見てきましたが、ここでは実際にどのような手法を使っているのか見ていきます。大きく分けて以下の 3 種類の方法があります。

  • 教師なし異常検知
    • 正常画像のみを用いて学習する。テストする際に、正常画像には見られない特徴が検出された場合異常とみなす。
  • 教師あり異常検知
    • 正常と異常のラベルが付与された画像を用いて学習し、正常と異常が分類できるようにする。
  • 半教師あり異常検知
    • ラベルが付与されている画像と、ラベルが付与されていない画像を用いてモデルを学習する。ラベルがない画像はすべて正常画像として扱う。

上記の手法のメリット、デメリットをまとめると以下になります。

左右にスクロールしてご覧ください。

手法 学習に必要なデータ メリット デメリット
教師なし
異常検知
正常画像
(ラベルなし)
正常画像さえあれば学習ができる
  • 異常データを持っている場合でも学習に使用できない
教師あり
異常検知
正常画像
(ラベルあり)
異常画像
(ラベルあり)
条件が整えば精度を出しやすい
  • 異常パターンが複数あると精度が落ちる
  • 異常データを多く用意することが難しい
半教師あり
異常検知
正常画像
(ラベルの有無は問わない)
異常画像
(ラベルあり)
異常画像を用意するコストが少ない
  • 教師あり/なし異常検知と比較して、モデルを構築する難易度が高く、横展開や精度向上においてコストがかかる

実務上、上記 3 つの手法の中では教師なし異常検知をオススメします。データを確保する障壁の低さや、運用面の容易さが理由になります。そもそも工程の中で異常が発生しにくく、異常データを集めることが難しい点はよくヒアリング時に伺う現場の声です。

教師あり異常検知に必要なデータ量を確保できない、または複数の機器や現場に転用を考えているのであれば、教師なし異常検知を利用した方がよいでしょう。


「機械学習導入支援サービス」はこちら

「ML Connect」はこちら


異常検知を適用するシーンとニーズ

異常検知によって以下のシーンとニーズを想定します。

想定するシーン

  • 製品を個別に撮影している
  • 画像に異常箇所が含まれているか、そうでないかを判定する
  • 不良品として弾いたあと、どこに異常があったのかを可視化し、担当者が最終的に判断を下す

満たしたいニーズ

  • 目視による検査から、 AI による判定に置き換えたい
  • 上記によって、労力と時間を節約したい
  • 個人間の判定のばらつきをなくしたい


「機械学習導入支援サービス」はこちら

「ML Connect」はこちら


今回の検証で使用するデータセット

今回扱うデータは製造業の製品に着目し、 BSData を使用します。 BS というのは Ball Screw の略で、ボールねじと呼ばれる製品です。金属の表面に発生する局部腐食 (通常、孔食や Pitting と呼ばれる) を異常と定義します。前章の 「異常検知を適用するシーンとニーズ」 にて製品を個別に撮影しているという設定に合わせたデータセットです。一般に、撮影する画像の角度が一定であると検知する精度が向上します。どのようなアルゴリズムであれ、画像によってぶれが生じることは避けたいです。

(Wikipedia 参照)


「機械学習導入支援サービス」はこちら

「ML Connect」はこちら


今回使用するアルゴリズム PaDiM とは

PaDiM は正常画像のみで学習可能な教師なし異常検知の手法です。 2021 年 5 月末段階で、異常検知タスクでよく使用される工業製品データセットの MVTec AD Dataset で 1 位を記録したアルゴリズムになります。 (現在の 1 位は PatchCore というアルゴリズムです)

PaDiM の処理内容を以下に簡単にまとめます。
① 学習用の画像をパッチと呼ばれるグリッド状の小さい画像に分割する
② 学習に使用するすべての正常画像の特徴量の平均、共分散をパッチごとに求める
③ テスト用画像の特徴量を抽出する
④ ②と③の結果を用いて、パッチごとに正常画像群とテスト画像の特徴量の差をマハラノビス距離という尺度で計算し、それを異常度と定義する

では実際に BSData の正常画像 485 枚を学習させます。テスト画像 450 枚 (正常画像 225 枚、異常画像 225 枚) で画像に異常が含まれるか、またその異常がどこにあるのかを出力させた実験結果について説明します。

  • ※ 左から画像、異常箇所の正解データ、予測した異常度、異常度から判断した異常箇所、画像と異常箇所の位置を合わせた画像

上記は正常画像をテストした際の結果の一例です。

  • Ground Truth が実際の異常箇所になりますが、黒一色のため正常画像であることを示します
  • 異常度を色で表現した Predicted heat map には比較的異常度の高い赤い領域がいくつか見受けられますが、少ない異常度の中で “強いて言うならここが異常だ” と判定した領域です。この後、設定した閾値によって異常か判定します
  • Predicted mask が黒一色のため、本画像はすべての領域で異常度が閾値を下回り、異常箇所がないと推定したことになります
  • 最終的な異常箇所は Predicted mask や Segmentation result を見て判断してください

続いて異常画像についても結果を見ていきます。

正常画像の結果とは異なり、 Predicted heat map に赤い領域が顕著に現れました。 Ground Truth と Predicted mask を見比べると異常箇所を検出できていることがわかります。

次に精度について見ていきます。

  • 画像に異常が含まれているかどうか分類したところ、精度は 92.9 %でした
  • ピクセルごとに異常箇所が含まれているのかどうかを評価するにあたっては、 ROC 曲線の AUC という評価を使用しました。 結果として AUC が 99.5 %でした
  • ※ ROC 曲線 : 検査などの性能を 2 次元のグラフに表したもの。異常と判定する異常度の閾値をずらしながら真陽性率と偽陽性率を計算し、プロットすることで得られる曲線。
  • ※ AUC : ROC 曲線のグラフの下部の面積。 0.5 以上 1.0 以下の値をとり、 1.0 に近づくほど良い性能といえる。

画像に異常が含まれているかどうか分類した際の混同行列は以下です。

上図の見方としては True label (正解のラベル) が正常で、 Predicted label (予測されたラベル) が正常である数がどのくらいあるのか、という見方をします。
例えば True label が異常であるにもかかわらず、 Predicted label が正常と予測されてしまったラベルは 28 枚あるので、この 28 枚の画像を分析してモデルのパラメーターを調整するなどの検討が必要になります。

最後に速度を見ていきましょう。実際に導入するにあたり、処理速度は気になるところだと思います。 ローカル PC で 450 枚のテスト画像を処理した結果、 1 枚当たりの平均推論時間は約 0.34 秒となりました。念のため私の動作環境の情報を掲載します。

この処理速度が許容できるのかは業務プロセスに依存します。ただ時間を短縮したいということであれば工夫する術はあります。

  • カメラを複数台設置して並列処理させる
  • 計算リソースの性能を上げる
  • モデルに使用するネットワークの種類を Mobile Net などの軽量なモデルにする (今回は ResNet18 を利用しています)。ただし精度が損なわれることがあるため注意が必要
  • 撮影をするとき製品を個別で撮影するのではなく、複数撮影させて処理回数を減らす

などが挙げられます。


「機械学習導入支援サービス」はこちら

「ML Connect」はこちら


AI 活用と、 DX 推進のポイント

前章 「今回使用するアルゴリズム PaDiM とは」 において、出力結果、精度、速度を見てきました。少し考察していきます。撮影する位置に関しては画角が固定されており、ボールねじが傾くなどのブレがないことは精度の高さに寄与すると考えられます。実際の現場にカメラを導入する場合はぜひとも考慮したいポイントです。また環境面にも左右されることが多く、汚れなどが異常パターンに似ているのであれば検知されることもあります。発生する異常パターンや導入する環境も考慮に入れて AI の適用を進めていくことがポイントになるでしょう。

また作業効率化の施策として、そもそも AI を活用することが本当に有用なのかという視点も大事になります。これまでは精度や速度を見てきました。しかし、よい精度、よい速度を実現したとしても、 1 つの作業を単に効率化しただけでは DX が成功するとは限らないです。効率化した前後のプロセスにて手動の作業が発生し、 AI 活用の恩恵が減りかねないからです。

これまでの話をまとめて、 DX を推進する上でまず以下 2 つから考えてみるのはいかがでしょうか。

  • 作業プロセスが簡略化できるか
  • 何度も反復する作業が解消されるのか

RPA を軸に考えて業務プロセスを整理すれば、例えば不良品を AI で弾くだけでなく、 AI 側は不良品率を計算しているので品質管理台帳への起票まで自動化できるでしょう。 AI を発端に効率化できるプロセスを徹底して洗い出すことが DX を成功させるカギだと私は考えています。



「機械学習導入支援サービス」はこちら

「ML Connect」はこちら


さいごに

画像の異常検知について見てきました。 PaDiM の威力を見つつ、速度や活用、 DX についてもスポットを当ててみました。 AI の活用をご検討されている方はぜひご一考ください。

当社では、 AI 活用支援をはじめ、機械学習のモデル構築、クラウドを活用したシステム構築支援までご支援しています。現行の作業を軽減してより重要な作業に時間を充てたい、取得しているデータを活用して課題解決を行いたいなど AI 活用を検討中のご担当者の方、まず何からはじめればよいか悩んでいるといったお客様も、ぜひ一度お問い合わせください。

また、センサーデータを活用してエネルギー効率化を進める ML Connect - Forecast と、センサーデータの異常を検知する ML Connect - Anomaly Detection というサービスもご用意しています。画像に限らずセンサーデータに関してもぜひお問い合わせください。




関連ブログ記事

請求書やレシートの入力を自動化!Microsoft の OCR サービス、Form Recognizer のご紹介
画像のデータセット作成を Azure ML 上で!Azure ML のラベル付け機能のご紹介
Video Analyzer for Media を使用して動画データからインサイトを見つけよう!

関連ページ

「機械学習導入支援サービス」はこちら
「ML Connect」はこちら

【総合】お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録