外観検査とは

外観検査(visual inspection)は製造業で生産された部品、製品を出荷前にチェックする目的で行われます。外観検査では、複雑な形状の部品や製品などもあることから、検査対象により柔軟な判断が求められます。経験豊かな職人が視覚、もしくは触覚を合わせて検査を行う必要があるため、自動化が進む製造プロセスの中で最も人手に頼られてきた領域です。しかし、ディープラーニングの登場により外観検査の自動化が急速に浸透しています。

外観検査の成功例と製造業でのAI導入における課題

Visual inspection for defect detection in semiconductor manufacturing.

外観検査を中心に現場へのAI導入が進む一方で、「AIで何かしてほしい」という指示により現場が混乱したり、実運用での効率化につなげられていないケースもあります。そこで、外観検査を中心に製造業でAIを導入する際に検討すべき3つの点をご紹介します。

  1. どの課題をAI(ディープラーニング)で取り組むべきか
  2. 開発の進め方
  3. PoCから現場での運用

どの課題をAI(ディープラーニング)で取り組むべきか

ディープラーニングは、「大量のデータから人が教えた通りに正確に線引きできるようになる」手法である性質上、以下に該当するテーマが適しています。

  • データが十分にあり、また継続的に追加できる
  • 経験を持った人であれば全員同じ判断ができる

人が迷うタスクを正確に判断してくれるものではないことに注意しましょう。現在の第三次AIブームでは畳み込みニューラルネットワーク(CNN)を用いて「人の目をコンピュータで置き換える」ことが汎用化されたため、外観検査への適用に期待が高まっています。一般的に、人の作業を自動化できる割合が高いほど、高い成果が期待できますが、課題が解決できるか不確実な場合は実用化に到達できないリスクも考慮する必要があります。一つ目の課題には効果の確実性が高い、つまり人が簡単に見分けられる課題から取り組むことが望ましいといえます。

ではどのような課題が実際にAIによって解決されているのでしょうか。テクニックも含め具体例をご紹介します。

  • 外観検査 – 出荷品の仕分け
ディープラーニングが得意とするタスクで、部品A、部品Bなど同じ量のデータが手に入る際には、転移学習という方法が適しています。短いコーディングで、うまくいけば一日で成果が出ることもあります。
 

Musashi Seimitsu Industry’s visual inspection system for automotive parts.

  • 外観検査 - 良否判定
製造業で最もAIへの期待が高いタスクは、外観検査での良否判定です。この際多くのケースで課題になるのは、正常な画像に対して異常なデータが圧倒的に少ない点です。そのようなときは正常/異常を教える教師あり学習は利用できません。ここではCNNと1-class SVMの組み合わせで正常画像のみで学習する手法をご紹介します。
 

Detecting multiple defects in elements of the aircraft with automated visual inspection.

  • 外観検査 – 異常個所の特定

外観検査の中でもフィルムなどの化学材料、食品材料や衣料など一様な模様の中から異常や混入物を判定したいケースがあります。その際は「どこに」 異常があるかまで特定したい場合もあります。このような課題に利用できるオートエンコーダーを正常画像のみで学習させる手法をご紹介します。

End-to-end defect detection workflow in MATLAB.

※応用としてVAE (Variational Auto Encoder) を用いた例のサンプルコードはこちら

異常なデータが少ない場合は上記の異常検知テクニックを利用し、異常画像が集まってきた時点で教師あり学習に移行していきましょう。

外観検査以外の製造業でのAI活用例を下記にご紹介します。

  • メーターの値読み取り
多くの作業現場ではメーターで表示される値を定期的に確認する作業が多くあり、人の作業では見間違い、書き間違い、時には忘れてしまうリスクもあります。以下のビデオでは、ディープラーニングの回帰を用いて反射の映り込みにも柔軟にメーターの値を読み取る方法をご紹介します。
 

Registration Estimator app aligning a pair of images of hex bolts in different orientations.

  • 作業工程の計測、行動解析、装備品のチェック
製造業での生産性向上のため作業効率を上げたい場合には、各工程にかかる時間を把握する必要があります。下記の事例では、カメラとディープラーニングで動作の解析を行い、CNNとLSTMを用いて精度向上に成功しています。

Convolutional neural network (CNN) from scratch (top) vs. CNN from transfer learning (bottom).

MATLAB provides the Deep Network Designer app, which lets you build, visualize, edit, and train deep learning networks. You can also analyze the network to ensure that the network architecture is defined correctly and detect problems before training.

In MATLAB, you can import networks and network architectures from TensorFlow™-Keras, from Caffe, and from and to the ONNX™ model format. You can use these pretrained networks and edit them for transfer learning.

Deployment

Deep learning models must be incorporated into a larger system to be useful. MATLAB offers a code generation framework that allows models developed in MATLAB to be deployed anywhere, without having to rewrite the original model. This gives you the ability to test and deploy the model within an entire system.

MATLAB enables you to deploy your deep learning networks to various embedded hardware platforms, such as NVIDIA® GPUs, Intel® and ARM® CPUs, and Xilinx® and Intel SoCs and FPGAs. With the help of MathWorks tools, you can explore and target embedded hardware easily.

Deployment of deep learning networks from MATLAB to various embedded hardware platforms.

また、シンプルな適用例としては作業現場で適切な装備品を身に着けているかなどの判定にも利用されています。

  • 打音検査

工場内では音から製品や製造装置の異常を検出することもあります。以下のサンプルコードでは1次元の音声信号を2次元に変換して、CNNにかけることで正常/異常を判定する方法を学ぶことができます。

その他、AI以外でも、バーコード読み取りQRコード読み取りを用いることで在庫管理も合わせて行うことができます。

開発の進め方

製造業でAIエンジニアが自社にいない場合でも、最近では上記で紹介した手法や、実践的なサンプルコードが手軽に入手できますので、自社で開発を進めることが容易になりました。

特に、下記のケースでは自社での開発を進めることでメリットがあります。

  • 外観検査など似た課題が複数ある
  • AIを使って業界差別化したい
  • プログラム経験者がいる

実例の中にはAI未経験から3か月程度で実プロジェクトにおける成功の見通しが立つケースは珍しくありません。また旧来のルールベースの手法とは異なり、ディープラーニングではモデルを置き換えるだけで異なる判定ができるなど、プログラムの転用がしやすく2つ目以降の開発効率は格段に上がります。MathWorksではお客様のデータを元にアルゴリズム開発を支援する技術コンサルティングサービスを提供していますので、必要に応じて技術アドバイザーの支援をうけ自社内にノウハウを蓄積することで、費用対効果があがり、業界内での差別化が期待されます。

PoCから現場での運用

アルゴリズムの検討は進みながらも、実証実験には進めていないケースも多くあります。最初から完全にAIで置き換えることに固執してしまうと、精度100%にこだわるあまり次のステップに進むことができません。

正常/異常判定におけるしきい値設定

例えば上図のように正常/異常が分布しているとき判定精度が高いのは左ですが、右のようにスコアのしきい値をずらし「過検出」となるように運用することで、異常品を正常と判定して出荷されてしまうことを避けることができます。AIで1次判定し、自信が持てない20%は人が最終チェックを行う、異なる役割の二つのモデルを組み合わせる等、実用化のための運用方法を確立していくことができます。

また、ディープラーニングは「ブラックボックス」であることから現場に受け入れられにくいケースもあります。これに対する対応として、PoCの段階から現場でAIのモデルを活用できるようにすることが重要です。プログラムのコードと精度だけではAIについて関係者の理解は進みません。GUI化し、現場での判定支援ツール作業効率を向上しつつ、どういう場面で誤判定が起こりやすいかのフィードバックを収集していきます。MATLABには標準でApp DesignerというGUIを作成できる機能が搭載されており、配布用のオプションがあれば、マウス操作でAIを利用できるツールを簡単な操作で実行ファイルに変換でき、社内の現場やお客様に配布することが可能です。Caffe、Tensorflow-kerasやONNX形式を経由して既存のモデルをMATLAB®に取り込んで、GUIツールにすることもできます。

Grad-CAMによる注目領域の可視化 (サンプルコードはこちら)

その際に「説明できるAI」としての機能は不可欠です。上図のツールでは外観検査での良否判定にClass Activation Mapping(CAM)やその応用であるGrad-CAMを用いて、そのモデルはどこに注目してその判定を行ったかをヒートマップで可視化しながら、動作の傾向を理解し精度向上につなげています。傷がついている部分が赤く反応していることがわかります。

PoC完了後はシステムへ統合し実証実験に移行していきます。この時目指すシステムのイメージを持つことは重要ですが、取り組む前に確定し固執してしまうことは危険です。

下の表ではそれぞれのメリットや課題を簡単にまとめています。

展開するターゲット メリット 課題
組み込み (Raspberry Pi, NVIDIA Jetson等)
  • データトラフィックを低減
  • 単価が安い
  • 生データの保存
  • マシンパワー
デスクトップ/ラップトップ
  • コストは中
  • セキュリティ(ネットワーク隔離)
  • 扱いやすい

複数必要な場合:

  • コスト増
  • データ管理が複雑
オンプレミスサーバー
  • セキュリティ(ネットワーク隔離)
  • 独自のシステムで最適化
  • 初期コスト
  • スケールアップ/ダウン
  • ネットワークの知識
クラウド
  • スケールアップ/ダウンが容易
  • 各種APIサービスと連携
  • ネットワークトラフィック
  • セキュリティ

例えば、サーバーやクラウドで判定させたい場合でも、ネットワークトラフィックがボトルネックになり満足な速度で利用できない、組み込みボードで判定させたいが、精度向上のためデスクトップマシンで判定と画像収集を合わせて行うなど、利用目的やフェーズによって最適なターゲットが変わることを念頭にいれておく必要があります。

MATLABではデスクトップマシン、社内サーバーやクラウド、Raspberry Pi™やNVIDIA® Jetson®などの組み込みボードと様々なターゲットを選択できます。開発途中での変更や目的ごとに柔軟に対応することが可能です。

ディープラーニングのシステムへの統合

特にGPU向けへのコード生成では、ターゲットに対して最適なコードを生成することができ、高速な推論を行うことが可能です。

まとめ

  • 外観検査をはじめ製造業ではAIで取り組むことができる課題が多くあります。
  • 取り組みはAIエンジニアと現場との協調が不可欠で、説明できるAIとGUIの組み合わせが有用です。
  • 最初から完全にAIに置き換ることに固執せず、まずは「作業者をアシストする」ところから柔軟にAI利用の成果を積み上げていきましょう。
  • MathWorksが提供するMATLABと技術サービスを利用し製造業で効率的なAI開発が可能です。


Software Reference

参考: MATLAB for image processing and computer vision, Deep Learning Toolbox