『画像ラボ 2023年1月号 【特集】電池製造における自動外観検査&マシンビジョンテクノロジー①』(p. 47~49)に掲載されました。
発行:日本工業出版 2023年1月10日発行

以下本文

ノーコードで実用レベルの AI 画像処理アプリケーションを構築できるマシンビジョン 開発 IDE 「ImagePro」

No-code machine vision IDE “ImagePro” enables practical leveled AI
ImageProcessing application.

筆者
*矢野貴文
 株式会社 RUTILEA 代表取締役社長
大嶋悠一
 株式会社 RUTILEA 事業部 ImagePro 開発責任者
浪田一樹
 株式会社 RUTILEA 事業部 プロジェクトマネージャ


要約
 近年、深層学習を用いたマシンビジョンの製造現場において活用され始めている。特に、検査工程では、深層学習に従来からの画像処理技術を組み合わせる必要があるため、複雑なプログラミングが求められることが多い。そこで、深層学習と画像処理をノーコードで記述することができる製品とその応用例を紹介する。


はじめに
 深層学習に基づくセグメンテーション、読み取り、分類などが工業用マシンビジョンに応用されるようになって久しい。深層学習は、特徴量をデータから学習することができることで検出精度を高められることが強みの一つである。これにより、従来から用いられている手続きや特徴量エンジニアリングを用いる画像処理手法(以下、ルールベース画像処理という)では解決が困難であった、表面の外観の検査をはじめとして応用されるようになった。
 しかし、マシンビジョンの応用例である位置決めや計測においては、局所特徴点を用いたマッチングや画像計測は依然として有効な手法である。例えば、図1は、実装プリント基板の検査の例であるが、円の大きさの測定やピンの長さの測定は、画像計測が有効であるが、パーツ品種の認識や異常検知においては深層学習が有効である。このように、一つのワークに対して、深層学習と画像計測の両方が必要になる。


深層学習を適用する際の課題
 このように、深層学習を利用する際は、ルールベース画像処理と深層学習を組み合わせる必要があるが、この実装コストは一般的に大きい。よって、導入後の投資対効果が次の3点によって下がる。まず、コーディングができるエンジニアが限られるため実装コストが高い、次に、複雑な実装を行うためテストが煩雑化し信頼性を担保するコストも高い、最後に、導入後の保守ができる担当者が限定されてしまうため属人性が生じる。


                        図1 ルールベースと深層学習を併用する必要性の例


ソフトウェアの紹介
 そこで、これらの問題に対してノーコードプログラミングにより解決するソフトウェアである Image Pro を提案する。このソフトウェアのメイン画面(図 2)では、プログラムをノーコードで作成する機能が用意されている。以下、ノーコードで作ったプログラムをレシピと呼ぶ。ツール集(A)には様々な AI やルールベースなどのツールがカテゴリ別(表 1)に格納されており、それらを画面中央のプログラム編集エリア(B)へドラッグ&ドロップして使用する。配置されたツールは、ツール同士を矢印で連結することで処理のフローを構成する仕組みになっている。また、配置されたツールを選択すると、その処理が完了した結果をプレビュー表示することができる(D)。また、出力履歴(E)、処理の所要時間(F)も確認することができるため、デバッグや処理時間を縮めるためのボトルネックの特定を容易に行うことができる。より高度な機能として、グローバル変数や独自スクリプト、外部機器・照明コントローラ・複数カメラの管理、実行画面の設計などを行うことができる。
 次に、実際の事例で Image Pro 上でどのようにレシピを作成し、実際の課題の解決に活用していく事例を説明する。


                              図 2 ImagePro のメイン画面

(A)ツール集には、画像取得、位置特定、測定、認識、深層学習、校正、整列、画像演算、色処理、欠陥検出、論理ツール、通信ユニットなどの画像処理ツールと操作ツールが網羅されている。やりたい事に応じて必要なツールを追加し、レシピを作成する。
(B)レシピをデザインするエリア。各ツールを線で繋ぎ、フローを構築。後続のツールは前のツールの結果を引き継いだ処理が可能。各ツールの色で結果(OK または NG)が分かる。複数のレシピをタブで切り替えることも可能。
(C)レシピの保存や展開に加え、カメラ設定、外部機器の設定、グローバル変数、グローバルトリガ、グローバルスクリプト、画面作成など、よく使われる共通ツールへ 1クリックでアクセス可能。
(D)選択したツールの処理結果をプレビュー表示。マウスのスクロール操作で任意の場所を拡大・縮小できる他、複数のツールの結果画像を重ねて表示することも可能。
(E)選択されたツールの出力結果や、その履歴、またツールの簡単な使用方法を表示。
(F)レシピ全体や選択されたツール、アルゴリズムなどの「処理時間」を表示。ここを確認することで、レシピ内において処理時間が多くかかっているボトルネックを容易に見つけることが可能。

表 1 代表的なツール

機能カテゴリ

ツール数

代表的なツール

画像入力

5

カメラ入力、画像ファイル入力、照明コントロール

位置決め

20

マッチング、円//短形検出、BLOB解析、ピーク検出

計測

12

//点同士の距離計測、角度計測、ヒストグラム計測

読み取り

6

バーコード・QRコード読み取り、ルールベースOCR、深層学習OCR

深層学習

6

画像分類、異常検知、物体検出、文字検出、画像探索、教師あり/なしセグメンテーション
(
いずれもCPU/GPU両対応)

キャリブレーション

8

キャリブレーションボード、歪み補正、実寸サイズ変換、座標変換

位置合わせ

4

カメラのマッピング、1/点群の移動量計算、線の位置補正

画像処理

18

二値化、モルフォロジー演算、画像フィルタ、画像合成、アフィン変換、パノラマ結合

色の処理

4

色の抽出/計測/変換/認識

欠陥検出

10

エッジの欠陥検出、コントラスト欠陥検出(機械学習)

論理演算

15

IF、分岐、論理演算、変数の型変換、変数計算、文字比較、独自スクリプト(C#)、プロトコル解析/変換

外部接続

6

データ送受信、カメラのI/O出力、外部機器の管理、データのキュー管理



解決事例(出荷前検査の自動化)
 対象ワーク(図3右)は、自動車のブレーキ部品である。次の工程では、ロボットによる自動組付けを行うため、出荷前にすべての部品の向きが揃っていることが納品条件である。この確認作業を自動で行うため、ワークの向きをルールベース手法で推定する方法を検討していたが、日光や天候の変化による撮影環境変化に伴う精度の悪化が課題になっていた。そこで、深層学習を用いた精度の改善が求められた。
 図3に、実際に作成した Image Pro の画像処理レシピを示す。この例では、検査対象の各部品に対して処理を行うため、共通処理をグループ化して for ループを用いることで画像処理レシピを簡略化している。ループ内では、画像分類の深層学習を用いて部品の有無と右左の向きを判定する。図 4 は、その AI 分類器の詳細画面を表示した様子である。この詳細画面では、分類に用いる深層学習のモデルデータ(学習済みのパラメータ)の選択とその実行したあとの結果を表示することができる。深層学習は、GPU モードと CPU モードを選択することができるが、この案件ではタクトタイムが比較的長いことと、実行するモデルのパラメータ数が少ない軽量なモデルであるので CPU を用いて実行した。モデルの学習も同様にノーコードのインターフェイスを用いて実行することができる。
 それぞれの部品の向きを if 文のモジュールに入力し、その向きが一致している場合に、「正常」を出力し、向きが異なるまたは、部品が欠品している場合に「異常」 を出力する。
 従来のテンプレートマッチングを用いた方法では、向きの認識精度が 60%程度であったが、深層学習を導入することで 99.8%の実行精度を実現することができた。また、対象のワークが新しくなっても、ノーコードプログラミングであれば生産現場で設定を行うことができるため、生産現場での反響も好評であった。


                                     図3 レシピと検査の様子

 右の画像中で、縦に4個、横に5個並んでいるワークが、関心領域である。それぞれの領域の中で、深層学習を適用し、出力結果のフラグ「RIGHT、LEFT、NONE」を出力しそれを文字列から数値に変換するモジュールにより変換し、その結果に対して論理演算を行って、結果を出力する。


                            図4 (A)AI の学習設定ダイアログと(B)深層学習の出力結果

 深層学習モデルの選択には、事前に学習しておいたモデルを簡単に設定することができ、その認識のテスト画像を入力することで簡単に行うことができる。


おわりに
 本誌では、マシンビジョンにおいて、ルールベース手法と深層学習を併せて用いる必要性を提起し、その解決策として ImagePro を提案した。また、その実際の応用例を示した。最後に、Image Pro の有効性を3つの観点でまとめる。

・ノーコードによる開発の標準化と高速化によるコスト削減
 Python などを用いるプログラミングに比べて、処理中の画像の様子を視覚的に確認することができるため、デバッグの手間が減り開発を高速化することができる。また、プログラミングの手法を統一できるため、コードを標準化することができ、開発担当者への属人性を減らすことができる。

・ルールベースと深層学習の組み合わせの有効性
 まず、先述の事例のように、テンプレートマッチングのような画像処理の精度限界を深層学習を用いて精度改善を行うことに対して有効である。次に、外観検査でよく用いるアルゴリズムとして、セグメンテーションで見つけた不良に対して画像分類で本当に不良か、単なるホコリなのかを判別し、更にルールベースを用いて不良の面積を測定し、面積に応じた判定を行うことが可能である。このように、深層学習で見つけた不良箇所や検出した結果に対して、良、不良などの判定を客観的なルールを用いて行うことができる。このように、ルールを用いることで判定結果の説明可能性を高めることができる。

・汎用通信規格への対応による高い接続性
 Ethernet/IP, デジタル IO, シリアル通信, TCP/UDP 通信, Modbus などに対応しているため、システムインテグレーションが容易である。また、多くのメーカー製 PLC に対応し各種ロボットや機械と連携が可能であるため、実際の生産ラインへの導入も可能である