(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024018792
(43)【公開日】2024-02-08
(54)【発明の名称】検査装置及び方法
(51)【国際特許分類】
G06T 7/00 20170101AFI20240201BHJP
G06V 10/82 20220101ALI20240201BHJP
【FI】
G06T7/00 600
G06T7/00 350C
G06V10/82
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022122335
(22)【出願日】2022-07-29
(71)【出願人】
【識別番号】502129933
【氏名又は名称】株式会社日立産機システム
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】若菜 裕紀
(72)【発明者】
【氏名】根尾 敦
(72)【発明者】
【氏名】山崎 正裕
(72)【発明者】
【氏名】尾島 正禎
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096BA03
5L096CA02
5L096GA51
5L096HA11
5L096KA04
5L096KA15
(57)【要約】
【課題】検査対象の検査に用いる機械学習モデルに関する処理の負荷を低減する。
【解決手段】それぞれ機械学習モデルであるエンコーダモデル及びデコーダモデルが検査対象の検査に用いられる。エンコーダモデルは、検査対象のデータを入力とし検査対象の異常度を出力とするモデルである。デコーダモデルは、検査対象が正常か異常かを表す値であるOK/NG値と、検査対象のデータの特徴量とを入力とし、当該入力されたOK/NG値が異常を表す場合に当該入力された特徴量を基に検査対象の復元されたデータを出力とするモデルである。
【選択図】
図2
【特許請求の範囲】
【請求項1】
検査対象のデータを受け付けるインターフェース装置と、
それぞれ機械学習モデルであるエンコーダモデル及びデコーダモデルが格納された記憶装置と、
前記インターフェース装置及び前記記憶装置に接続されたプロセッサと
を備え、
前記プロセッサは、前記エンコーダモデル及び前記デコーダモデルを学習することを含む学習処理と、学習済のエンコーダモデル及びデコーダモデルを用いて前記検査対象の検査を行うことを含む推論処理とを行うようになっており、
前記エンコーダモデルは、前記検査対象のデータを入力とし前記検査対象の異常度を出力とするモデルであり、
前記デコーダモデルは、前記検査対象が正常か異常かを表し前記異常度を基に決定された値であるOK/NG値と、前記検査対象のデータの特徴量とを入力とし、当該入力されたOK/NG値が異常を表す場合に当該入力された特徴量を基に前記検査対象の復元されたデータを出力とするモデルである、
検査装置。
【請求項2】
前記推論処理において、前記プロセッサが、前記エンコーダモデルから出力された異常度が閾値以上か否かを表す値を、前記検査対象が正常か異常かを表す値として出力する、
請求項1に記載の検査装置。
【請求項3】
前記学習処理において、
複数の正常データがそれぞれ前記エンコーダモデルに入力され、
前記複数の正常データの各々は、正常な対象のデータであり、
前記プロセッサは、前記複数の正常データの各々について前記エンコーダモデルから出力された異常度についてのばらつきに基づく指標を基に、異常度の閾値を決定し、
当該決定された閾値が、前記推論処理における前記閾値である、
請求項2に記載の検査装置。
【請求項4】
前記指標は、第1の距離であり、
前記第1の距離は、正常データについての異常度の分散の中央値からの、正常データについての異常度までの最大距離である、
請求項3に記載の検査装置。
【請求項5】
前記推論処理後の前記学習処理において、
フィードバック値に基づき、前記閾値が更新され、
前記フィードバック値は、前記推論処理において前記エンコーダモデルに入力されたデータが正常データであるにも関わらず前記OK/NG値が異常を表す値となった場合の当該正常データに対応した製品の異常度である、
請求項3に記載の検査装置。
【請求項6】
前記インターフェース装置に表示デバイスが接続されており、
前記推論処理において、前記プロセッサは、前記エンコーダモデルから前記復元されたデータが出力された場合、当該復元されたデータと、当該復元されたデータに対応し前記エンコーダモデルに入力されたデータとの差分を算出し、当該差分に基づく検査結果を前記表示デバイスに表示し、当該検査結果に対する回答をユーザから受け付け、
当該回答が、製品が正常であることを表している場合、前記フィードバック値は、当該入力されたデータに対応した製品の異常度である、
請求項5に記載の検査装置。
【請求項7】
前記検査対象のデータは、前記検査対象の撮影画像のデータである、
請求項6に記載の検査装置。
【請求項8】
前記エンコーダモデルは、シーケンシャルな複数の中間層を含むニューラルネットワークであり、
前記学習処理において、前記デコーダモデルに入力される特徴量は、前記複数の中間層のうちの最終層から出力された特徴量である、
請求項1に記載の検査装置。
【請求項9】
前記インターフェース装置が、一つ又は複数の制御対象装置を制御するコントロール装置に接続され、
前記コントロール装置は、制御プログラムと情報プログラムを実行し、前記制御プログラム及び前記情報プログラムの共有メモリを有し、
前記制御プログラムは、当該制御プログラムについて定められた制御周期毎に、制御対象装置を制御する処理でありリアルタイム性を有する処理であるスキャン処理を当該制御周期内に行うプログラムであり、
前記情報プログラムは、当該情報プログラムについて定められた情報処理を行うプログラムであり、
前記共有メモリは、前記制御プログラムからデータが書き込まれる領域である制御領域と、前記情報プログラムからデータが書き込まれる領域である情報領域とを有し、
前記情報領域は前記制御領域よりも小さく、
前記プロセッサが、前記インターフェース装置を通じて前記OK/NG値を前記コントロール装置に出力し、
前記コントロール装置において、
前記情報プログラムが、前記OK/NG値を、前記情報領域に書き込み、
前記制御プログラムが、前記情報領域から前記OK/NG値を読み出し、当該OK/NG値を基に、少なくとも一つの制御対象装置を制御する、
請求項1に記載の検査装置。
【請求項10】
前記エンコーダモデルの学習パラメータと前記デコーダモデルの学習パラメータは異なり、
学習パラメータ毎に、学習パラメータは、パラメータ項目及びパラメータ値の組であり、
学習パラメータが異なることは、パラメータ項目が異なること、及び/又は、パラメータ項目が同じであるがパラメータ値が異なることである、
請求項1に記載の検査装置。
【請求項11】
前記プロセッサは、前記第1の距離が第2の距離未満の場合に、前記エンコーダモデルの学習を終了し、
前記第2の距離は、異常データについての異常度の分散の中央値からの、異常データについての異常度までの最大距離である、
請求項4に記載の検査装置。
【請求項12】
それぞれ機械学習モデルであるエンコーダモデル及びデコーダモデルを学習することを含む学習処理と、
学習済のエンコーダモデル及びデコーダモデルを用いて検査対象の検査を行うことを含む推論処理と
を行い、
前記エンコーダモデルは、前記検査対象のデータを入力とし前記検査対象の異常度を出力とするモデルであり、
前記デコーダモデルは、前記検査対象が正常か異常かを表す値であるOK/NG値と、前記検査対象のデータの特徴量とを入力とし、当該入力されたOK/NG値が異常を表す場合に当該入力された特徴量を基に前記検査対象の復元されたデータを出力とするモデルである、
検査方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、製品のような検査対象の検査に関する。
【背景技術】
【0002】
例えば、検査対象のデータ(例えば撮影画像データ)を入力とし製品の検査結果を出力とする機械学習モデルを用いて、製品の検査を行う方法が知られている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1によれば、エンコーダモデル及びデコーダモデルがあり、エンコーダモデルに入力された全てのデータが、デコーダモデルを用いたデコード処理の対象である。このため、処理の負荷が大きい。
【課題を解決するための手段】
【0005】
それぞれ機械学習モデルであるエンコーダモデル及びデコーダモデルが検査対象の検査に用いられる。エンコーダモデルは、検査対象のデータを入力とし検査対象の異常度を出力とするモデルである。デコーダモデルは、検査対象が正常か異常かを表す値であるOK/NG値と、検査対象のデータの特徴量とを入力とし、当該入力されたOK/NG値が異常を表す場合に当該入力された特徴量を基に検査対象の復元されたデータを出力とするモデルである。
【発明の効果】
【0006】
本発明によれば、検査対象の検査に用いる機械学習モデルに関する処理の負荷を低減することができる。
【図面の簡単な説明】
【0007】
【
図1】第1の実施形態に係る検査装置を含むシステム全体の構成例を示す。
【
図5】第2の実施形態に係る検査装置を含むシステム全体の構成例を示す。
【発明を実施するための形態】
【0008】
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイスであるI/Oインターフェース装置。I/Oインターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイスである通信インターフェース装置。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0009】
また、以下の説明では、「メモリ」は、一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【0010】
また、以下の説明では、「永続記憶装置」は、一つ以上の永続記憶デバイスである。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)であり、具体的には、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)である。
【0011】
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
【0012】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサモジュールである。少なくとも一つのプロセッサモジュールは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスであるが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサモジュールは、プロセッサコアでもよい。
【0013】
また、以下の説明では、プログラムを主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置及び/又はインターフェース装置等を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有するコントローラのようなデバイス)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
【0014】
また、以下の説明では、機能を主語として処理を説明する場合があるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び/又はインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【0015】
また、様々な物又はサービスを「検査対象」とすることができるが、以下の実施形態では、検査対象は、物の一例としての製品であるとする。
【0016】
また、「検査対象のデータ」は、典型的には多次元データであり、具体的には、例えば、画像データや音データである。以下の実施形態では、「検査対象のデータ」は、製品の画像データ、特に、製品の外観の画像データであるとし、このため、以下の実施形態に係る検査装置は、外観検査装置であるとする。
【0017】
図1は、第1の実施形態に係る検査装置を含むシステム全体の構成例を示す。
【0018】
検査装置110は、インターフェース装置131、記憶装置132及びそれらに接続されたプロセッサ133を備える。検査装置110は、複数のエッジ装置(例えばクライアント)と通信可能なコア装置(例えばサーバ装置)でもよいが(例えば、クラウド基盤に基づくクラウドコンピューティングシステムでもよいが)、本実施形態では、検査装置110は、エッジ装置(例えば、パーソナルコンピュータのような情報処理端末)である。学習処理の負荷が低いため、検査装置110がエッジ装置であっても、製品の検査を含む推論処理に加えて、機械学習モデルの学習処理も、エッジ装置により行うことができる。
【0019】
インターフェース装置131は、データソース101から製品の画像データを受け付ける。画像データは、プロセッサ133により記憶装置132に格納される。データソース101は、本実施形態ではカメラでよいが、マイクロフォンでもよいし、カメラやマイクロフォンのようなセンシングデバイスが接続された情報処理端末でもよい。
【0020】
検査装置110は、表示デバイス102及び入力デバイス103(例えば、キーボード及びポインティングデバイス)を備え、それらのデバイス102及び103はインターフェース装置131に接続される。
【0021】
記憶装置132には、エンコーダモデル141及びデコーダモデル142が格納される。エンコーダモデル141及びデコーダモデル142は、いずれも機械学習モデルである。エンコーダモデル141及びデコーダモデル142は、例えば、いずれも深層学習モデルであり、具体的には、ニューラルネットワーク(特にDNN(Deep Neural Network))である。
【0022】
また、記憶装置132には、管理データ143が格納される。管理データ143は、学習及び推論に関する種々のデータ、例えば、下記のうちの少なくとも一部を含んでよい。
・エンコーダモデル141及びデコーダモデル142の各々について、使用される一種類以上の学習パラメータと、学習の終了条件とを表すデータ。
・閾値を表すデータ。当該閾値は、後述のOK/NG値を正常品(OK)と異常品(NG)のいずれを表す値とするかのために製品の異常度と比較される値。
・推論処理において検査対象とされた製品毎に(例えば、異常品と判定された製品毎に)、エンコーダモデル141に入力された画像データ、エンコーダモデル141の中間層から出力された特徴量、エンコーダモデル141から出力された異常度、デコーダ203により復元された画像データ、差分算出部204により生成された差分画像データ。
【0023】
記憶装置132には、一つ以上のコンピュータプログラムが格納される。それらのコンピュータプログラムがプロセッサ133に実行されることで、学習部151、推論部152、エンコーダ201、判定部202、デコーダ203、差分算出部204及び目視確認部205といった機能が実現される。学習部151が、エンコーダモデル141及びデコーダモデル142の学習を含む学習処理を行う。推論部152が、学習済のエンコーダモデル141及びデコーダモデル142を用いた推論処理を行う。エンコーダ201が、エンコーダモデル141を用いてエンコード処理を行う。判定部202が、製品の異常度から製品が正常品か異常品かを判定する。デコーダ203が、デコーダモデル142を用いてデコード処理を行う。差分算出部204が、入力された画像データと復元された画像データの差分を表す画像データを生成する。目視確認部205が、当該データが表す画像の目視確認をユーザに実行させる。
【0024】
エンコーダモデル141は、製品の画像データ(検査対象のデータの一例)を入力とし当該製品の異常度を出力とするモデルである。デコーダモデル142は、製品が正常か異常かを表す値であるOK/NG値と、製品の画像データの特徴量とを入力とし、当該入力されたOK/NG値が異常を表す場合に当該入力された特徴量を基に当該製品の復元されたデータを出力とするモデルである。このように、エンコーダモデル141とデコーダモデル142の学習を、それぞれ独立した異なる学習とすることができ、また、エンコーダモデル141に入力された全ての画像データについて復元が行われるわけではないため、製品の検査に用いる機械学習モデルに関する処理の負荷を低減することができる。なお、学習パラメータは、学習率、各更新の学習率減衰、バッチサイズ、エポック数、及び、バッチサイズなどが有り、学習時にはそのうちの少なくとも一つ以上を用いる。エンコーダモデル141の学習パラメータとデコーダモデル142の学習パラメータは異なってよい。「学習パラメータ」とは、パラメータ項目及びパラメータ値の組でよい。従って、「学習パラメータが異なる」とは、パラメータ項目が異なることでもよいし、パラメータ項目が同じであってパラメータ値が異なることでもよいし、それらが混在してもよい。
【0025】
【0026】
エンコーダモデル141は、入力層211と、シーケンシャルな二つの中間層213A及び213Bと、出力層215とを備える。中間層213の数は、2より多くても少なくてもよい。デコーダモデル142も、図示しないが、入力層、一つ以上の中間層及び出力層を備える。また、推論処理において、当該推論処理において検査対象とされた製品毎に、エンコーダモデル141に入力された画像データ、エンコーダモデル141の中間層213(本実施形態では中間層213B)から出力された特徴量、及び、エンコーダモデル141から出力された異常度が、管理データ143に含められてよい。
【0027】
推論部152は、製品の画像データ210を入力する。エンコーダ201が、エンコーダモデル141を用いてエンコード処理を行う。エンコード処理は、画像データ210を入力層211に入力することと、画像データ210の特徴量を中間層213A及び213Bにおいて算出することと、最終の中間層213Bから出力された特徴量を基に出力層215から当該製品の異常度を出力することとを含む。
【0028】
判定部202が、エンコーダ201から出力された異常度が、管理データ143が表す閾値以上か否かを判定する。判定部202が、この判定結果を表す値を、OK/NG値として出力する。異常度が閾値以上であれば、OK/NG値は、“1”であり(NGを表し)、異常度が閾値未満であれば、OK/NG値は、“0”である(OKを表す)。
【0029】
デコーダ203が、デコーダモデル142を用いてデコード処理を行う。デコード処理は、OK/NG値をデコーダモデル142に入力することと、最終の中間層213Bから出力された特徴量をデコーダモデル142に入力することと、入力されたOK/NG値がNGを表していれば入力された特徴量を基に製品の画像データを復元し復元された画像データを出力することとを含む。デコーダ203は、デコーダモデル142に入力されたOK/NG値がOKを表していれば、入力された特徴量を基に画像データを復元することを行わない。
【0030】
差分算出部204が、入力された画像データ210と復元された画像データ(デコーダ203から出力された画像データ)の差分を表す画像データである差分画像データ(差分を表す差分データの一例)を生成する。例えば、画像データは、製品の外観の撮影画像のデータであり、差分画像データは、製品の傷等の異常箇所が強調された画像データである。具体的には、例えば、デコーダモデル142は、異常品の画像データの特徴量から正常品の画像データを復元するよう学習されているため、推論処理に置いて、異常品の画像データの特徴量を基に復元された画像データは、正常品の画像データに類似した画像データである。このため、異常品の入力された画像データと復元された画像データを比較した場合、入力された画像データが表す画像に傷等の異常箇所がある場合、当該異常箇所が差分として検出され、結果として、異常箇所を強調とした差分画像データを生成することができる。
【0031】
目視確認部205が、生成された差分画像データが表す差分画像に基づく検査結果を表示デバイス102に表示し、当該検査結果に対する回答をユーザから受け付ける。例えば、目視確認部205が、検査結果と正常品か否かの回答受付とを表示したUI(User Interface)を表示デバイス102に表示し、当該UIを介して、製品が正常品か否かの回答を受け付ける。表示された検査結果は、差分画像を含んでよく、更に、入力画像(入力された画像データが表す画像)も含んでよい。ユーザは、表示された検査結果を目視確認し、製品が正常品か否かの回答をUIに入力する。当該回答が、製品が正常品であることを表している場合、推論処理後の学習処理において、目視確認部205が、当該製品に対応した異常度を、例えば管理データ143から特定する。推論処理後の学習処理において、判定部202が、当該特定された異常度(正常品の異常度)を、フィードバック値として判定部202に入力する。
【0032】
エンコーダモデル141は、シーケンシャルな複数の中間層213を含むニューラルネットワークである。学習部151が学習処理を行うが、当該学習処理では、デコーダモデル142に入力される特徴量は、複数の中間層213のうちの最終層から出力された特徴量である。複数の中間層213のうちの最終層の特徴量が、最もデータサイズの小さい特徴量であるため、デコーダモデル142の学習の負荷を低減することができる。
【0033】
また、デコーダモデル142に入力されたOK/NG値がNGを表す場合に限り画像データが復元されるようになっている。これにより、推論処理の負荷が低減する。また、ユーザが目視確認しなければならない頻度が減り、結果として、ユーザにとっての負担も低減する。
【0034】
本実施形態での学習の一例は、下記の通りである。
【0035】
エンコーダモデル141の学習では、一つ以上のDNNで構成される。エンコーダモデル141の生成(学習)において、複数の画像(例えば、複数の正常画像と、複数の異常画像(正常画像ではない画像))の各々の画像のデータが、当該学習の訓練データとして使用される。当該学習の一つ又は複数の学習パラメータ(パラメータ項目及びパラメータ値)は、十分な精度が得られることや、過学習の発生が避けられる等の要件に応じて、ユーザにより決定される。例えば、エポック数、学習率、及び、各更新の学習率減衰のパラメータ値は、要件により異なってよい。バッチサイズは、検査装置110のハードウェアスペックに応じて決定されてよい。
【0036】
デコーダモデル142の生成(学習)では、エンコーダモデル141の中間層213からの特徴量(デコーダモデル142に入力された訓練データの特徴量)が、訓練データとして使用される。訓練データとしての特徴量は、デコーダモデル142に入力された正常画像データの特徴量でよい。当該特徴量から画像復元のためのデコーダモデル142が生成(学習)される。デコーダモデル142の学習に使用される訓練データの数(特徴量データの数)は、エンコーダモデル141の学習に使用される訓練データの数と同じでよいし異なっていてもよい。また、エンコーダモデル141と同様に、デコーダモデル142の一つ以上の学習パラメータは、要件や検査装置110のハードウェアスペックに応じて決められてよい。また、エンコーダモデル141とデコーダモデル142はそれぞれ独立した学習が可能であるため、それらのモデル141及び142の学習の学習パラメータ(例えば、学習率及びエポック数のそれぞれのパラメータ値、或いは、他の学習パラメータ)が異なってよい。
【0037】
エンコーダモデル141は、製品の異常度を出力するモデルであり、デコーダモデル142は、製品の異常度を基に決定されたOK/NG値が異常を表す場合に当該製品の画像データを復元し出力するモデルである。このため、エンコーダモデル141に入力された全ての画像データについて復元が行われることに比べて、処理負荷が低減する。
【0038】
異常度が判定部202に入力され当該異常度に基づくOK/NG値は判定部202から出力される。異常度とOK/NG値の関係は、異常度と比較される閾値に依存する。学習処理において、閾値は、
図3及び
図4を参照して説明する通りに決定される。
【0039】
図3は、正常品と異常品の異常度の分布の例を示す。
図4は、判定部202の処理フローを示す。
【0040】
学習処理において、訓練データとして、正常品の複数の画像データと、異常品の複数の画像データが、エンコーダモデル141に入力される。正常品の画像データが、正常データの一例であり、異常品の画像データが、異常データの一例である。学習処理における「異常品」は、異常箇所を持つ製品に限らず、製品以外の対象であってもよい。
【0041】
正常品と異常品のいずれについても異常度はばらつくものの、全体として、正常品の方が異常品よりも異常度は低い。
【0042】
異常度の閾値は、正常品の異常度の統計値の一例としての平均値ベースに決定されてもよいが、本実施形態では、次のように決定される。
【0043】
すなわち、学習処理において、学習部151が、正常品の画像データ毎に、異常度とその頻度の統計を、管理データ143に含める。また、学習処理において、学習部151が、異常品の画像データ毎に、異常度とその頻度の統計を、管理データ143に含める。
【0044】
学習処理において、判定部202は、正常品について、異常度と頻度との関係から、異常度の分散の中央値を算出し、当該中央値からの距離としての値であるDTを算出する。DTは、第1の距離の一例であり、正常品の異常度の中央値と、正常品の異常度との最大距離である。判定部202は、DTを基に、異常度の閾値を決定し、当該閾値を管理データ143に含める。
【0045】
推論処理では、判定部202は、エンコーダモデル141(エンコーダ201)から出力された異常度が閾値以上か否かを表す値を、OK/NG値としてデコーダモデル142(デコーダ203)へ出力する。
【0046】
このように、エンコーダモデル141からの出力値(ここでは異常度といった高次元特徴量)がそのままデコーダモデル142の入力値となるのではなく、エンコーダモデル141からの出力値がOK/NG値といった1ビットで表現可能なスカラ値に変換されてデコーダモデル142へ出力される。これは、エンコーダモデル141とデコーダモデル142を別々に学習し以って学習処理の負荷を低減することに寄与する。
【0047】
また、学習処理において、判定部202は、正常品の複数の画像データの各々についてエンコーダモデル141から出力された異常度についてのばらつきに基づく指標を算出し、当該指標を基に、異常度の閾値を決定する。このため、閾値が適切な値となることが期待される。
【0048】
閾値が未設定(未学習)の場合、OK/NG値は、異常度がゼロ以上ならばNG値(NGを表す値)となり、異常度がゼロ未満ならばOK値(OKを表す値)となる。つまり、正常品の異常度はゼロ以下となる。本実施形態では、閾値のベースとなる指標は、正常品の異常度の分散の中央値からの、正常品の異常度までの最大距離DTである。これにより、正常値の分布の中央値が異常度分布においてどの位置にあるかに応じて閾値が適切な値となる。なお、正常品の異常度の最小値及び/又は最大値は、予め定義された値でもよいし、学習処理において得られる異常度の分布(異常度の統計)を基に判定部202により決定された値でもよい(異常品の異常度の最小値及び/又は最大値についても同様でよい)。
【0049】
推論処理では、例えば、NGを表すOK/NG値が判定部202から出力される都度に、閾値と比較された異常度、復元された画像データ、及び、目視確認の回答(正常品か異常品かの回答)を表すデータが、管理データ143に含められる。本実施形態では、OK/NG値がNGを表す場合に限り目視確認がされるが、目視確認の結果として、正常品であるとの回答が入力され得る。推論処理後の学習処理では、上述したように、判定部202が、製品が正常品であるとの回答に対応した異常度を管理データ143から特定し、特定された異常度(正常品の異常度)を、フィードバック値として判定部202に入力する。すなわち、フィードバック値は、推論処理においてエンコーダモデルに入力された画像データが正常品の画像データであるにも関わらずOK/NG値がNGを表す値となった場合の当該正常製品の異常度である。判定部202は、このフィードバック値を基に、DTを算出し、算出されたDTを基に閾値を更新する。これにより、推論処理におけるフィードバック値を基に、閾値をより適切な値とすることができる。なお、フィードバック値は、DTの算出に代えて又は加えて、閾値それ自体の更新に使用されてもよい。言い換えれば、閾値は、フィードバック値を基に、直接的に更新されてもよいし(フィードバック値を基にDTのような指標が計算されること無しに更新されてもよいし)、間接的に更新されてもよい(フィードバック値を基にDTのような指標が計算され、当該計算された指標を基に閾値が更新されてもよい)。
【0050】
また、判定部202は、学習処理において、異常品について、異常品の複数の画像データの各々についてエンコーダモデル141から出力された異常度についてのばらつきに基づく指標の一例として、DFを算出してよい。DFは、第2の距離の一例であり、異常品について、異常度の分散の中央値から異常度の最大距離としての値である。学習処理において、学習部151は、エンコーダモデル141の学習の終了条件として、DT<DF(DTがDFより小さいこと)を採用してよい。エンコーダモデル141についてDT<DFの条件が満たされたことが、エンコーダモデル141が正しく生成(学習)されたことを意味する。このため、学習処理において、出力される異常度が適切であることが期待され、故に、適切な閾値が設定されることが期待される。結果として、異常品が正常品として誤判定される頻度の低減が期待される。なお、DT<DFが満たされたか否かの判定は、所定数の画像データを用いた学習が行われた後に行われてもよい。
【0051】
また、判定部202で使用される閾値が、適切な値となるよう上述の通り学習されるため、検査対象が正常品であるにも関わらず推論処理においてOK/NG値が誤ってNGを表す値となる可能性が低減する。故に、デコーダ203により画像データが復元される可能性が低減し、結果として、処理負荷が低減することが期待される。
[第2の実施形態]
【0052】
第2の実施形態を説明する。その際、第1の実施形態との相違点を主に説明し、第1の実施形態との共通点については説明を省略又は簡略する。
【0053】
図5は、第2の実施形態に係る検査装置を含むシステム全体の構成例を示す。
【0054】
検査装置110のインターフェース装置131が、一つ又は複数の制御対象装置を制御するコントロール装置501(コントロール装置501のインターフェース装置511)に接続される。検査装置110とコントロール装置501間は、例えばTCP/IPで通信されてよい。
【0055】
コントロール装置501は、インターフェース装置511、共有メモリ512を含む記憶装置、当該インターフェース装置511及び記憶装置に接続されたプロセッサ513を有する。制御対象装置として、製品550の搬送装置(例えば、搬送ベルト533を駆動する装置)を採用することができる。
【0056】
コントロール装置501のインターフェース装置511には、I/O(Input/Output)装置502が接続される。I/O装置502に、周辺装置や、周辺装置又は他の制御対象装置といった装置が接続される。それらの装置に対し、I/O装置502経由で、コントロール装置501から入出力がされる。周辺装置は、製品550を撮影するためのカメラ531や製品550を検出するための光学センサ532A及び532Bといった装置でよい。検査装置110は、コントロール装置のインターフェース装置511に代えて又は加えて、I/O装置502に接続されてもよい。カメラ531に検査装置110が接続されてもよい。
【0057】
コントロール装置501のプロセッサ513は、OS(Operating System)563を実行し、且つ、OS563上で動作する制御プログラム561と情報プログラム562を実行する。OS563は、リアルタイム汎用OS(情報処理向けの汎用OSの系統ではあるものの必要とされるリアルタイム性を提供できるリアルタイム機能を持ったOS)でよく、制御プログラム561や情報プログラム562の実行タイミングは、リアルタイム汎用OSにより制御されてよい。或いは、制御プログラム561や情報プログラム562の実行タイミングは、ランタイムソフトウェアにより制御されてよい。
【0058】
制御プログラム561は、当該制御プログラム561について定められた制御周期毎に、制御対象装置を制御する処理でありリアルタイム性を有する処理であるスキャン処理を当該制御周期内に行うプログラムである。情報プログラム562は、当該情報プログラム562について定められた情報処理を行うプログラムである。
【0059】
共有メモリ512は、制御プログラム561及び情報プログラム562の共有メモリであり、制御プログラム561からデータが書き込まれる領域である制御領域と、情報プログラム562からデータが書き込まれる領域である情報領域とを有する。情報領域は制御領域よりも小さい。
【0060】
第2の実施形態では、例えば以下の処理が行われる。
【0061】
制御プログラム561が、搬送ベルト533上の製品550を光学センサ532A及び532Bを通じて検出すると、カメラ531に撮影を実行させる。これにより、光学センサ532A及び532Bを通じて検出された製品550の画像が撮影され、その撮影画像のデータが、カメラ531からコントロール装置501経由で又は非経由で検査装置110に入力される。検査装置110の推論部152が、当該画像データについて推論処理を行う。推論処理において、判定部202が、OK/NG値を、デコーダ203の他に加えてコントロール装置501にも出力する。情報プログラム562が、OK/NG値を受けて、共有メモリ512の情報領域に書き込む。OK/NG値は小サイズなので、OK/NG値の書込み先が、制御領域に比べてサイズの小さい情報領域であることに問題は生じない。制御プログラム561が、当該情報領域から当該OK/NG値を読み出し、当該OK/NG値を基に、少なくとも一つの制御対象装置を制御する。例えば、制御対象装置として、撮影された製品550を搬送ベルト533から除外する装置である除外装置があり、制御プログラム561は、読み出したOK/NG値がNGを表している場合、除外装置に、撮影された製品550を搬送ベルト533から除外させる。OK/NG値に基づく制御として、製品550の除外に代えて又は他の処理が行われてよい。
【0062】
コントロール装置501は、産業用のコントロール装置でよい。制御対象装置は、例えば、産業用モータやコンプレッサのような産業機器でよい。コントロール装置501が、コントロールシステムのメインの演算装置でよく、検査装置110が、コントロールシステムにおける拡張装置としての演算装置でもよい。拡張装置としての演算装置において情報プログラムが実行されることで、上述した学習部151、推論部152、エンコーダ201、判定部202、デコーダ203、差分算出部204及び目視確認部205といった機能が実現されてもよい。
【0063】
以上、幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【符号の説明】
【0064】
110…検査装置、131…インターフェース装置、132…記憶装置、133…プロセッサ、141…エンコーダモデル、142…デコーダモデル