外観検査

外観検査の自動化

外観検査の自動化は、効率的な品質管理にとって不可欠であり、製造業、建設業、インフラ産業で広く行われています。近年、ディープラーニングを活用することによって、画像解析AI・人工知能が代替できるようになり、従来は困難であった判定も可能になりつつあります。

外観検査では、以下のような種類の判定が考えられます。

良否判定

製造業における外観検査においては、ラインに流れてくる部品や製品の外観写真を取得し、これに画像解析を加えることで良否を判定し、判定結果に応じて仕分けます。

錠剤の不良品判定

錠剤の不良品判定

異常個所の特定

フィルムなどの化学材料、食品材料や衣料などにおいては、一様な模様の中から異常や混入物を判定します。また電子回路基板のように、回路のどこに異常があるかを特定したい場合もあります。

回路基板における不良個所の特定

回路基板における不良個所の特定

外観検査の自動化:システム開発のためのワークフロー

一般に、自動化された外観検査システムを開発するときに必要なステップは、「画像取得」、「画像解析」、「仕分け」の3ステップです。「画像取得」から「画像解析」までと、「仕分け」の部分で、必要になる専門知識が変わります。

この3つのステップには、ハードウェアで対応することとソフトウェアで対応することが混在しています。大まかな分類は以下のようになります。

  ハードウェアでの対応 ソフトウェアでの対応
画像取得

撮影機材の選定

撮影方法の決定と撮影

ラベリング

レジストレーション

画像解析 開発したAIモデルの実運用に耐えうるコンピューティング リソースの選定

AIモデルの開発

AIモデルによる推論

仕分け ランプ、仕分け機などのハードウェアの選定 該当ハードウェアへの推論結果出力

AIを導入する場合、従来の画像解析と異なり、AI固有の専門知識も必要になります。

そのため、AIを活用した外観検査の自動化においては、これら複数の専門知識の習得の困難さがシステムの内製化・手の内化の障壁となることがあります。MATLABでは、外観検査システムのソフトウェア開発の各工程において、専門知識習得の負担を下げつつ、開発を迅速化できる各種ツールを提供しています。

上記3つのステップにおいて、ソフトウェアで対応する処理を、AI開発ではしばしば、「データの準備」、「AIモデリング」、「デプロイ」と呼びます。

MATLAB でのデータの準備、AI モデリング、展開の例と、手順間で発生する反復と調整を示した、エンドツーエンドの外観検査ワークフローの図。

MATLAB によるエンドツーエンドの自動外観検査ワークフロー。

データの準備(Data Preparation)では、画像の取得、ラベリング、レジストレーションなどの前処理を行います。

AIモデリング(AI Modeling)では、良品分類や異常個所特定のためのAIモデルの構築・学習を行います。GPUによる高速化が必要とされる場合もあります。

デプロイ(Deployment)では、作成したAIモデルを、コード生成や実行形式の生成により、組み込みデバイスやワークステーションなどへ実装します。

外観検査のAI開発プロセス

ディープラーニングを使った外観検査のAI開発において、一般的に遭遇する課題とMATLABを活用した解決策について、各工程にわけて説明します。

1. データの準備

AIモデルの開発においては、画像データの準備は時間と労力がかかる作業になります。データセット内の画像を前処理すると異常検出の精度が向上する場合がありますが、MATLAB には、画像の各種前処理やラベリングをサポートする以下のようなアプリが用意されています。

位置がずれている画像の位置合わせ

位置がずれている画像の位置合わせを行うことで、AI モデルによる欠陥の検出精度を向上できることあります。MATLAB のレジストレーション推定アプリを使用すると、位置がずれている画像のレジストレーション用に各種アルゴリズムを検討できるため、画像の位置合わせが容易になります。

外観検査の精度を高めるために 2 つの画像の位置合わせを行うレジストレーション推定アプリのスクリーンショット。

MATLAB のレジストレーション推定アプリを使用すると画像前処理を簡単に実行できます。

ラベリングの迅速化

取得した大量の画像データを「教師あり学習」で用いるには、画像のラベリングが必要となります。

分類モデルのためのラベリングであれば、画像をフォルダーに分ければ済みますが、オブジェクト(物体)検出やセマンティック セグメンテーションでは、物体を囲うなどの作業も必要になります。

MATLAB には、ラベル付けプロセスを迅速化するオートメーション機能が用意されています。たとえば、イメージラベラーおよびビデオラベラーアプリでは、カスタムのセマンティック セグメンテーションまたはオブジェクト検出アルゴリズムを適用して、画像または動画フレーム内の領域またはオブジェクトにラベル付けすることができます。

オブジェクトの周りにバウンディングボックスでラベル付けを行っている例

オブジェクトの周りにバウンディングボックスでラベル付けを行っている例

2. AIモデリング

外観検査でAIを用いる場合、ディープラーニングを活用することで精度の向上が期待できます。ディープラーニングは多層化したニューラルネットワークを使用した技術であり、その技術を活用したAIモデルの構築では、ニューラルネットワークの編集・学習が必要となります。

ニューラルネットワークの構築には、AIモデルの学習に利用できる不良品画像の有無、AIモデルの構築方針によって以下のような選択肢があります。

教師あり学習

ニューラルネットワークの構築・学習をゼロから行います。

事前学習済みのニューラルネットワークを編集・微調整しAIモデルを作成します。

教師なし学習 不良品の画像データが少ない、用意できないときに用いる手法です。

ディープラーニングを使った画像解析では、AIモデルの学習用に不良品の画像データが一定数必要となりますが、大量生産でない場合、不良品の画像データを短期間では十分な数だけ用意できないこともあります。このようなときは、当初は「教師なし学習」の異常検知テクニックを利用したAIモデルを作成・利用し、不良品画像が集まってきた段階で、それらを使った「教師あり学習」によるAIモデルに移行していくことで、判定精度を上げることができる場合があります。

教師あり学習

良否判定のための分類モデルの作成

分類モデルの開発においては、ニューラルネットワークの構築、編集、学習が必要となりますが、コードで記述すると大変な労力がかかります。MATLABのDeep Learning Toolbox™に含まれるディープ ネットワーク デザイナーを用いることで、ニューラル ネットワークの確認、編集が容易になります。

ディープ ネットワーク デザイナーで事前学習済みネットワークを読み込み編集

ディープ ネットワーク デザイナーで事前学習済みネットワークを読み込み編集

ディープ ネットワーク デザイナーを利用すれば、転移学習も容易に行うことができます。

転移学習とは、あるタスク向けに学習したモデルを、類似したタスクを実行するモデルの開始点として使用するディープラーニングの手法です。転移学習によるネットワークの更新と再学習は、ゼロからネットワークを学習させるよりも高速で簡単であるため、外観検査向けのAIモデルを開発する際にもよく用いられます。

欠陥の検出および位置特定:オブジェクト検出とセマンティック セグメンテーション

物体検出は、画像または動画内のオブジェクトの位置(およびラベル)を特定するための手法です。外観検査向けのAIモデルにはYOLOX などがあり、画像内の欠陥を検出、特定、および分類することができます。バウンディングボックスのラベルが付いた学習データを使用して、AIモデルの学習を行います。

バウンディングボックス

バウンディングボックス

セマンティックセグメンテーションは、画像内の全画素にラベルやカテゴリを関連付けるディープラーニングのタスクです。セマンティック セグメンテーションは、自動運転、医療用画像処理などで用いられますが、外観検査においては、不規則な形状の傷の検出などに用いられます。

セマンティック セグメンテーションは、対象物の画像内を画素レベルで複数の領域に分けることができる点で、オブジェクト検出よりも便利です。バウンディングボックス内に対象物が収まらなければならないオブジェクト検出とは対照的に、セマンティック セグメンテーションは不規則な形状の対象物を明瞭に検出することができます。

セマンティック セグメンテーションのため画像にラベルを付ける MATLAB イメージラベラー アプリ

セマンティック セグメンテーションのため画像にラベルを付ける MATLAB イメージラベラー アプリ

教師なし学習

不良品の画像データが用意できない、もしくは少ない場合には、「教師なし学習」の方法が利用できます。異常検知手法の選択、異常しきい値の決定、異常度の可視化が必要となります。

異常検出手法

Computer Vision Toolbox™内のAutomated Visual Inspection Libraryは、「教師なし学習」で使われる以下のような各種異常検出手法をサポートしています。

  • 完全畳み込みデータ記述 (FCDD)
  • FastFlow
  • PatchCore

これらの手法は、良否判定だけでなく、領域ごとの異常度をヒートマップで示すことができます。

次の表は、Computer Vision Toolbox Automated Visual Inspection Library を用いた学習および推論で使用可能な異常検出手法について、その特性と性能の違いを示したものです。入力画像サイズ、モデルサイズ、求められるパフォーマンスなどの制約条件に応じて適切な手法を選択ください。

学習における側面 PatchCore FastFlow FCDD
入力画像サイズ 小から中が望ましい (大きな画像に対するメモリ制限のため) 小から中が望ましい (大きな画像に対するメモリ制限のため) 小から大 (高解像度画像)
モデルサイズ 中から大 (圧縮率の値によって異なる場合がある)

中から大

小 (最軽量モデル)
パフォーマンス速度 速い 速い 最も速い
ローショット学習(比較的少ない画像での学習) サポートされている サポートされていない サポートされていない

外観検査における異常しきい値の決定、異常度の可視化

異常検出手法では、異常度のヒストグラムを見て正常/異常をよく分離できるしきい値を設定したり、ROC曲線で最適な異常しきい値の自動計算を行うことで、人による判断のばらつきを回避できます。

ヒストグラム

ヒストグラム

ROC曲線

ROC曲線

また、ヒートマップを用いた異常度の可視化による評価では、分類結果を調べてAIモデルが適切な判断を行えているかどうかを解釈できます。

ヒートマップによる異常度の可視化

ヒートマップによる異常度の可視化

3. デプロイ

コード生成とデプロイのフレームワーク

構築したAIモデルを 実際のラインで利用するには、各種組み込みハードウェア プラットフォーム、デスクトップパソコン、サーバーなどにAIモデルをデプロイ(展開)します。MATLAB では、開発したAIモデルを、ハンド コードでC/C++などの言語に書き直すことなく、組み込みデバイスなど任意の場所に展開できるコード生成フレームワークが用意されています。

MATLAB から各種組み込みハードウェア プラットフォームへのディープラーニング ネットワークの展開ワークフローを示す図。

MATLAB は各種組み込みハードウェア プラットフォームをターゲットとするコード生成機能をサポートしています。

また、MATLAB Compiler™を使用すれば、MATLAB で開発した外観検査のプログラムをスタンドアロン アプリケーションおよび Web アプリとして共有できます。

MATLABではデスクトップマシン、社内サーバーやクラウド、Raspberry Pi™やNVIDIA® Jetson®などの組み込みボードといった様々なターゲットを選択できます。


参考: 画像処理およびコンピューター ビジョン向け MATLAB, Deep Learning Toolbox, パターン認識, コンピューター ビジョン, 製造分析, Image Acquisition Toolbox