外観検査

外観検査とは

外観検査とは、表面の破損または欠陥を検出することを目的としたタスクです。製造、建設、航空宇宙などの分野で広く適用されています。

自動外観検査システム

製造業における高解像度のカメラを使用した自動外観検査システムでは、人間の目では検出するのが困難なマイクロスケール、さらにはナノスケールの欠陥を効率的に検出します。しかし、未知の欠陥がある場合や欠陥の種類が多岐にわたる場合に誤検出が発生することがあり、大きな課題となっています。そのため、MATLAB® および Computer Vision Toolbox™ Automated Visual Inspection Library などディープラーニングの技術を用いたソフトウェアがより重要な役割を果たすようになっています。

実装基板と MATLAB により計算および可視化された異常検出出力のスクリーンショット。

MATLAB でディープラーニングを使用して強調表示された異常のある実装基板。

MATLAB  および Computer Vision Toolbox による自動外観検査システムの開発

MATLAB と Computer Vision Toolbox Automated Visual Inspection Library を使用すると、外観検査システムを開発できます。MATLAB は、画像の取得からアルゴリズム開発、そして展開に至るまでのワークフロー全体をサポートしています。対話形式の MATLAB のアプリを活用して、エンジニアはアルゴリズムを検討、反復、自動化して生産性を向上させることができます。エンジニアは、多くの産業用途でこれらの手法を適用しています。

ユーザー事例: 自動車や航空宇宙産業分野における自動外観検査

たとえば、自動車部品メーカーの武蔵精密工業では、毎月約 130 万の部品の外観検査を手作業で行っていました。MATLAB を使用することで、各種の異常を検出して位置推定するディープラーニング ベースの手法を開発し、かさ歯車を検査する自動外観検査システムを構築しました。この新しい手法により、同社における作業負荷とコストの大幅な削減が期待されています。

自動車部品のかさ歯車および MATLAB により構築された検査システム。

武蔵精密工業では MATLAB による自動車部品の自動外観検査にディープラーニングを使用しています。

同様に、Airbus は、複数の航空機コンポーネントの欠陥を自動的に検出する堅牢性の高い外観検査 AI (人工知能) モデルを構築し、航空機の運航前にすべての欠陥を排除できるようにしています。MATLAB の使用により、Airbus のエンジニアは欠陥検出のアルゴリズムのプロトタイピングとテストを対話的に短時間で行えるようになり、プロセスが簡略化されました。

Airbus において MATLAB で開発したオブジェクト検出により検出された部分的異常のスクリーンショット。

Airbus は MATLAB を使用して、複数の航空機コンポーネントの欠陥を自動的に検出する堅牢性の高い外観検査 AI モデルを構築しました。

欠陥検出プロセス: データの準備、AI モデリング、および展開

欠陥検出プロセスは、データの準備、AI モデリング、展開という 3 つの主要な段階に分けることができます。

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

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

外観検査では、異常画像が十分に取得できなかったり、多種多様なものとなる場合があります。その場合は、学習に正常な画像のみを必要とする教師なし学習を使用して、異常検出器の学習を行うことができます。異常画像の数が十分にある場合は、教師あり学習が機能します。

以下のセクションでは、異常検出手法を教師なし学習として、またオブジェクト検出を教師あり学習として行うために必要な手順と実用的な MATLAB の機能を説明しています。

外観検査のためのデータの準備

データは複数のソースから取得され、通常、構造化されておらず、ノイズが含まれています。そのため、データの準備と管理は困難で時間のかかる作業になります。データセット内の画像を前処理すると、異常検出の精度が向上します。

MATLAB による画像前処理

MATLAB には、各種前処理手法をサポートする複数のアプリが用意されています。たとえば、MATLAB のレジストレーション推定アプリを使用すると、位置がずれている画像のレジストレーション用に各種アルゴリズムを検討できるため、AI モデルによる欠陥の検出が容易になります。

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

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

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

外観検査のための AI モデリング

外観検査で使用される異常検出手法の特性

外観検査で使用できる異常検出器には以下があります。

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

次の表は、Computer Vision Toolbox Automated Visual Inspection Library により学習および推論で使用可能なこれらの異常検出手法について、その特性と性能の違いを示したものです。

学習における側面 PatchCore FastFlow FCDD
入力画像サイズ 小から中が望ましい (大きな画像に対するメモリ制限のため) 小から中が望ましい (大きな画像に対するメモリ制限のため) 小から大 (高解像度画像)
モデルサイズ 中から大 (圧縮率の値によって異なる場合がある) 中から大 小 (最軽量モデル)
パフォーマンス速度 速い 速い 最も速い
ローショット学習レジーム サポートされている サポートされていない サポートされていない

外観検査における異常しきい値および説明可能な AI

異常検出手法では、異常しきい値の自動計算を行うことで人による判断のばらつきを回避できます。説明可能な AI の表示による評価では、分類結果を調べて解釈できます。

外観検査における AI モデルの理解と利用に役立つ関数 viewAnomalyDetectionResults のスクリーンショット。

説明可能な AI の表示は、外観検査への AI 実装を成功させる鍵となります。

外観検査における教師あり学習で使用する事前学習済みネットワーク

教師あり学習へのディープラーニングの適用には 2 つの手法があります。1 つ目の手法では、ディープネットワークの構築および学習をゼロから行います。もう 1 つの手法では、事前学習済みのニューラル ネットワークを編集および微調整します。この手法は転移学習とも呼ばれます。いずれの手法も MATLAB で簡単に実装できます。

ディープ ネットワーク デザイナー アプリを使用したディープラーニング ネットワークの構築、編集、および学習

MATLAB には、ディープラーニング ネットワークの構築、可視化、編集、学習が可能なディープ ネットワーク デザイナー アプリが用意されています。ネットワークを解析して、ネットワーク アーキテクチャが正しく定義されているかどうかを確認し、学習を行う前に問題を検出することもできます。

外部のプラットフォームからの事前学習済みネットワークを MATLAB で使用すると、TensorFlow™ や PyTorch® から、または ONNX™ モデル形式との間で相互に、ネットワークおよびネットワーク アーキテクチャをインポートできます。これらの事前学習済みのネットワークを使用し、転移学習用に編集できます。

外観検査で使用できる事前学習済みのニューラル ネットワークを示すディープ ネットワーク デザイナー アプリのスクリーンショット。

ディープ ネットワーク デザイナー アプリには多くの事前学習済みモデルが用意されています。

欠陥の検出および位置特定のためのオブジェクト検出

YOLOX などのオブジェクト検出を使用して、画像の欠陥を検出、特定、および分類します。YOLOX オブジェクト検出モデルは単一ステージかつアンカーフリーの手法であり、小さなオブジェクトの検出を容易にし、モデルサイズを大幅に削減できるほか、以前の YOLO モデルと比べて計算速度が向上しています。四角形の関心領域 (ROI) のラベルが付いたエクスポート済みデータを使用して、オブジェクト検出モデルの学習を行います。

オブジェクト検出手法の YOLOX を使用した PCB の異常検出の結果を示すスクリーンショット。

外観検査において小さな異常を検出するための YOLOX オブジェクト検出。

外観検査システムの展開

コード生成と展開のフレームワーク

ディープラーニング モデルは、大規模なシステムに組み入れなければ、有効には活用できません。MATLAB には、MATLAB で開発したモデルを、元のモデルを書き直すことなく任意の場所に展開できるコード生成フレームワークが用意されています。これにより、システム全体でモデルをテストおよび展開できます。

まずは組み込みハードウェア プラットフォームに展開

MATLAB を使用すると、構築したディープラーニング ネットワークを各種組み込みハードウェア プラットフォーム (NVIDIA® GPU、Intel® と ARM® の CPU、Xilinx® と Intel の SoC および FPGA など) に展開できます。MATLAB を使用すれば、組み込みハードウェアの検討とターゲット設定を簡単に行うことができます。

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

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

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