(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-19
(45)【発行日】2024-03-28
(54)【発明の名称】情報処理装置、情報処理方法及びプログラム
(51)【国際特許分類】
G06F 8/30 20180101AFI20240321BHJP
G01N 21/88 20060101ALI20240321BHJP
G06T 7/00 20170101ALI20240321BHJP
【FI】
G06F8/30
G01N21/88 J
G06T7/00 610Z
(21)【出願番号】P 2020032141
(22)【出願日】2020-02-27
【審査請求日】2022-12-07
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100108213
【氏名又は名称】阿部 豊隆
(72)【発明者】
【氏名】加藤 豊
【審査官】牛丸 太希
(56)【参考文献】
【文献】特開2019-100917(JP,A)
【文献】特開2003-030007(JP,A)
【文献】特開2019-060780(JP,A)
【文献】千賀 大司 ほか,サービス評価 機械学習 Azure Machine Learning,日経クラウドファースト,日経BP社,2016年11月,12~19頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00- 8/77
G06T 7/00- 7/90
G01N21/00-21/958
(57)【特許請求の範囲】
【請求項1】
検査対象物の
一部であるオブジェクトの状態を規定する検査基準を取得する取得部と、
取得された検査基準をプログラム生成モデルに入力することにより、前記プログラム生成モデルに、前記検査対象物の画像データに関する要素処理をそれぞれ実行する複数の処理ユニットを組み合わせた、前記画像データに基づき前記検査対象物を検査するための検査プログラムを生成させる生成部と、
を備える、情報処理装置。
【請求項2】
前記プログラム生成モデルは、予め取得された検査プログラムが有する複数の処理ユニットのうちの少なくとも1つを調整することにより検査プログラムを生成する、
請求項1に記載の情報処理装置。
【請求項3】
前記検査基準は、前記画像データに含まれるオブジェクト、前記オブジェクトの状態変数及び前記状態変数の状態値により規定される、
請求項1又は2に記載の情報処理装置。
【請求項4】
前記取得部は、検査プログラムの制約条件をさらに取得し、
前記生成部は、前記制約条件を前記プログラム生成モデルにさらに入力して、前記プログラム生成モデルに、前記制約条件を満たす検査プログラムを生成させる、
請求項1から3のいずれか1項に記載の情報処理装置。
【請求項5】
前記制約条件は、前記検査プログラムに含まれる前記処理ユニットの数の上限を含む、
請求項4に記載の情報処理装置。
【請求項6】
前記制約条件は、前記検査プログラムによる検査にかかる時間の上限を含む、
請求項4又は5に記載の情報処理装置。
【請求項7】
前記プログラム生成モデルは、所定の機械学習アルゴリズムに基づき構築されたモデルである、
請求項1から6のいずれか1項に記載の情報処理装置。
【請求項8】
プロセッサを備える情報処理装置による情報処理方法であって、
前記プロセッサが、
検査対象物の
一部であるオブジェクトの状態を規定する検査基準を取得することと、
取得された検査基準をプログラム生成モデルに入力することにより、前記プログラム生成モデルに、前記検査対象物の画像データに関する要素処理をそれぞれ実行する複数の処理ユニットを組み合わせた、前記画像データに基づき前記検査対象物を検査するための検査プログラムを生成させることと、
を含む、情報処理方法。
【請求項9】
コンピュータに、
検査対象物の
一部であるオブジェクトの状態を規定する検査基準を取得することと、
取得された検査基準をプログラム生成モデルに入力することにより、前記プログラム生成モデルに、前記検査対象物の画像データに関する要素処理をそれぞれ実行する複数の処理ユニットを組み合わせた、前記画像データに基づき前記検査対象物を検査するための検査プログラムを生成させることと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
従来、製品の画像データを用いた検査を行うためのプログラムを生成する技術が知られている。例えば、特許文献1には、検査目的項目及び画像処理対象項目の項目ごとに、複数種類の画像処理サブルーチン候補のセットを用意して、検査目的項目および画像処理対象項目の少なくとも一方に応じて、画像処理サブルーチン候補のセットを選択し、画像処理プログラムに画像処理サブルーチンを組み込む技術が記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
画像データを用いて製品を検査するためのプログラム(以下、「検査プログラム」と称する。)を設計するためには、画像処理に関する専門知識が必要となる。しかしながら、専門知識を持つ人材を確保することは難しい。このため、ユーザに専門的な知識がなくても検査プログラムを自動的に設計できる技術が求められている。
【0005】
特許文献1に記載の技術では、画像処理プログラムには予め用意された画像処理サブルーチンが用いられる。従って、予め用意された画像処理サブルーチンの中に所望の処理が含まれない場合には、適切なプログラムを生成することができなかった。
【0006】
そこで、本発明は、画像処理に関する専門的な知識がユーザになくても、適切な検査プログラムを生成することを可能とする情報処理装置、情報処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の一態様に係る情報処理装置は、取得された検査基準をプログラム生成モデルに入力することにより、プログラム生成モデルに、検査対象物の画像データに関する要素処理をそれぞれ実行する複数の処理ユニットを組み合わせた、画像データに基づき検査対象物を検査するための検査プログラムを生成させる生成部と、を備える。
【0008】
この態様によれば、予め構築されたプログラム生成モデルにより検査プログラムが生成される。このため、ユーザに画像処理に関する専門知識がなくても、適切な検査プログラムを自動的に生成することが可能になる。
【0009】
上記態様において、プログラム生成モデルは、予め取得された検査プログラムが有する複数の処理ユニットのうちの少なくとも1つを調整することにより検査プログラムを生成してもよい。
【0010】
この態様によれば、処理ユニットが調整されることにより新たな検査プログラムが生成されるため、より適切な検査プログラムを生成することが可能になる。
【0011】
上記態様において、検査基準は、画像データに含まれるオブジェクト、オブジェクトの状態変数及び状態変数の状態値により規定されてもよい。
【0012】
この態様によれば、検査基準が、検査プログラムを生成するうえで有用な情報により規定されているため、より適切な検査プログラムを生成することが可能になる。
【0013】
上記態様において、取得部は、検査プログラムの制約条件をさらに取得し、生成部は、制約条件をプログラム生成モデルにさらに入力して、プログラム生成モデルに、制約条件を満たす検査プログラムを生成させてもよい。
【0014】
この態様によれば、検査プログラムが制約条件を満たすようになるため、より適切な検査プログラムが生成されるようになる。
【0015】
上記態様において、制約条件は、検査プログラムに含まれる処理ユニットの数の上限を含んでもよい。
【0016】
この態様によれば、生成される検査プログラムの処理ユニットの数の上限が規定されるため、生成される検査プログラムの複雑化が抑制される。
【0017】
上記態様において、制約条件は、検査プログラムによる検査にかかる時間の上限を含んでもよい。
【0018】
この態様によれば、より短時間で検査できる検査プログラムを生成することが可能になる。
【0019】
上記態様において、プログラム生成モデルは、所定の機械学習アルゴリズムに基づき構築されたモデルであってもよい。
【0020】
この態様によれば、プログラム生成モデルが機械学習アルゴリズムに基づき構築されているため、より適切な検査プログラムを生成することが可能になる。
【0021】
本発明の他の態様に係る情報処理方法は、プロセッサを備える情報処理装置による情報処理方法であって、プロセッサが、検査対象物の検査基準を取得することと、取得された検査基準をプログラム生成モデルに入力することにより、プログラム生成モデルに、検査対象物の画像データに関する要素処理をそれぞれ実行する複数の処理ユニットを組み合わせた、画像データに基づき検査対象物を検査するための検査プログラムを生成させることと、を含む。
【0022】
この態様によれば、予め構築されたプログラム生成モデルにより検査プログラムが生成される。このため、ユーザに画像処理に関する専門知識がなくても、適切な検査プログラムを自動的に生成することが可能になる。
【0023】
本発明の他の態様に係るプログラムは、コンピュータに、検査対象物の検査基準を取得することと、取得された検査基準をプログラム生成モデルに入力することにより、プログラム生成モデルに、検査対象物の画像データに関する要素処理をそれぞれ実行する複数の処理ユニットを組み合わせた、画像データに基づき検査対象物を検査するための検査プログラムを生成させることと、を実行させる。
【0024】
この態様によれば、予め構築されたプログラム生成モデルにより検査プログラムが生成される。このため、ユーザに画像処理に関する専門知識がなくても、適切な検査プログラムを自動的に生成することが可能になる。
【発明の効果】
【0025】
本発明によれば、画像処理に関する専門的な知識がユーザになくても、適切な検査プログラムを生成することを可能とする情報処理装置、情報処理方法及びプログラムを提供することができる。
【図面の簡単な説明】
【0026】
【
図1】第1実施形態に係る情報処理装置の構成例を示す機能ブロック図である。
【
図2】同実施形態に係る処理ユニットの一例を示す図である。
【
図3】同実施形態に係る情報処理装置による処理の一例を示すフローチャートである。
【
図4】同実施形態において、取得部が取得する画像データを示す図である。
【
図5】生成されることが期待される検査プログラムを示す図である。
【
図6】ステップS105及びS107において抽出された第1画像データ及び対応する第1検査プログラムを示す図である。
【
図7】ステップS105及びS107において抽出された第2画像データ及び対応する第2検査プログラムを示す図である。
【
図8】ステップS105及びS107において抽出された第3画像データ及び対応する第3検査プログラムを示す図である。
【
図9】生成された新たな検査プログラムを示す図である。
【
図10】ステップS113の処理の流れを示すフローチャートである。
【
図11】第2実施形態に係る学習装置の構成を示す機能ブロック図である。
【
図12】N個のデータセットのそれぞれから抽出された入力特徴ベクトルがマッピングされた、n次元の特徴空間を示す図である。
【
図13】学習装置がプログラム生成モデルを構築する処理の流れを示すフローチャートである。
【
図14】情報処理装置が、学習装置により構築されたプログラム生成モデルを用いて検査プログラムを生成する処理の流れを示すフローチャートである。
【
図15】上記実施形態に係る情報処理装置及び学習装置のハードウェア構成の一例を示す図である。
【
図16】条件分岐する処理ユニットを有する検査プログラムと、画像データと、を示す図である。
【発明を実施するための形態】
【0027】
添付図面を参照して、本発明の好適な実施形態について説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。
【0028】
[第1実施形態]
図1は、第1実施形態に係る情報処理装置10の構成例を示す機能ブロック図である。本実施形態に係る情報処理装置10は、予め構築されたプログラム生成モデルを用いて、検査対象物を検査するための検査プログラムを生成する装置である。
【0029】
生成された検査プログラムは、画像センサなどに組み込まれ、画像センサは取得した画像データと検査プログラムを用いることにより、製品を検査することができる。なお、画像センサは、一般物体認識を行う機能と、位置、寸法、汚れ、異物及び変形などに関する情報を有しているものとする。
【0030】
図1に示すように、本実施形態に係る情報処理装置10は、主として、入力部100、記憶部110、制御部120及び出力部130を備える。
【0031】
入力部100は、ユーザの操作に応じて、操作に対応するデータ又は信号を生成する。入力部100は、生成したデータ又は信号を制御部120に伝達する。入力部100は、例えば、ユーザの操作に応じて、検査対象物の検査基準及び検査プログラムの制約条件などのデータを生成する。入力部100は、検査基準及び制約条件を記号のデータとして生成してもよい。このとき、入力部100は、当該記号を直接的に表す操作を受け付けて記号のデータを生成してもよいし、自然言語(テキスト)を入力する操作を受け付け、言語解析により記号のデータを生成しても良い。あるいは、入力部100は、音声による入力を受け付け、音声認識により音声をテキストに変換したうえで記号のデータを生成してもよい。
【0032】
ここで、検査対象物の検査基準とは、良品又は不良品である検査対象物の状態を規定する基準である。本実施形態では、検査基準は、画像データに含まれる「オブジェクト」、オブジェクトの「状態変数」及び状態変数の「状態値」により規定される。例えば、「オブジェクトAの状態変数Xが状態値X1ならばNG」や、「オブジェクトBの状態変数Yが状態値Y1ならばNG」といった形式で記述される。なお、検査基準は、オブジェクトに対して1つである場合に限定されず、複数の検査基準が設定されていてもよい。
【0033】
オブジェクトは、画像に映る検査対象物の一部である。オブジェクトは、例えば、ねじ穴、ケーブル、針、容器、リング、電極、切削面、賞味期限印字等である。また、状態変数は、例えば、幅、長さ、面積、大きさ、方向、数、色、形状、表面状態、日付等である。さらに、状態値は、当該状態変数の値であり、例えば、100画素、平行、30度、4個、赤、変形、バリあり、傷あり、汚れあり、曇りあり、10月17日等である。
【0034】
検査プログラムの制約条件は、情報処理装置10により生成される検査プログラムを制約する条件である。制約条件は、例えば、処理速度、検査正答率及び検査プログラムの長さ(複雑さ)などを規定する条件であってよい。具体的には、処理速度を規定する制約条件は、検査プログラムによる検査にかかる時間(以下、単に「検査時間」とも称する。)の上限(例えば、数秒)あってよい。また、検査正答率を規定する制約条件は、検査プログラムが検査対象物による検査の正答率が所定の値を超えることであってよい。さらに、検査プログラムの長さ(複雑さ)を規定する制約条件は、例えば、検査プログラムに含まれる処理ユニットの数の上限値であってよい。
【0035】
記憶部110は、各種のデータを記憶している。記憶部110が記憶している各種のデータは、必要に応じて制御部120により参照される。記憶部110は、モデル格納部112、データセット格納部114、検査プログラム格納部116及び画像データ格納部118を備える。
【0036】
モデル格納部112には、予め構築されたプログラム生成モデルが格納されている。プログラム生成モデルは、検査対象物の画像データに基づき、検査対象物を検査するための検査プログラムを生成するモデルである。また、検査プログラムは、複数の処理ユニットを組み合わせて構成されている。
【0037】
プログラム生成モデルは、所定の機械学習アルゴリズムに基づき構築されたモデルであってよい。機械学習アルゴリズムは特に限定されないが、本実施形態では、プログラム生成モデルは、近傍法により構築されてモデルであるものとする。本実施形態に係るプログラム生成モデルは、データセット格納部114に格納されたデータセットから入力データと類似する複数のデータセットを抽出し、抽出したデータセットに対応する検査プログラムを合成することにより新たな検査プログラムを生成する。
【0038】
ここで、処理ユニットは、画像データに関する要素処理を行うものであって、検査プログラムを構成する最小単位である。
図2は、本実施形態に係る処理ユニットの一例を示す図である。
図2には、処理ユニットの分類、処理ユニットの名称及び処理ユニットの内容が示されている。
【0039】
「画像入力」に分類される処理ユニットは、検査を行う装置に、検査の対象となる画像データを入力する処理ユニットである。「前処理」に分類される処理ユニットは、画像データに各種の前処理を施す処理ユニットである。「計測」に分類される処理ユニットは、画像を認識することにより、オブジェクトを分類したり、オブジェクトの座標における位置及び姿勢を判断したりすることを目的とした処理ユニットである。「計測補助」に分類される処理ユニットは、例えば距離の算出など、各種の計測を補助する処理ユニットである。「表示」に分類される処理ユニットは、検査の結果を表示する処理ユニットである。また、「出力」に分類される処理ユニットは、判定(例えば、製品のOK又はNG)を出力する処理ユニットである。「分岐」に分類されている処理ユニットは、条件に応じて処理の内容を分岐する処理ユニットである。なお、処理ユニットは、
図2に示される内容に限定されるものではない。
【0040】
図1に戻って記憶部110の構成について説明する。データセット格納部114は、複数のデータセットを格納している。ここで、データセットは、検査対象物の画像データと、当該検査対象物を検査するための検査基準と、当該検査対象物を検査するための検査プログラムの制約条件とを対応付けたデータである。
【0041】
検査プログラム格納部116は、複数の検査プログラムが格納されている。複数の検査プログラムのそれぞれは、データセット格納部114に格納されている複数のデータセットのいずれかに対応付けられている。
【0042】
画像データ格納部118には、複数の画像データが格納されている。ユーザは、入力部100の操作を行うことにより、画像データ格納部118から1つの画像データを選択することができる。選択された画像データは、プログラム生成モデルの入力データとして制御部120に伝達される。
【0043】
制御部120は、プログラム生成モデルを用いて検査プログラムを生成するための各種の制御を行う。制御部120は、取得部122、生成部124、変更部126及び選択部128を備える。
【0044】
取得部122は、各種のデータを取得する。具体的には、取得部122は、検査基準、制約条件及び画像データを取得する。より具体的には、取得部122は、ユーザによる操作により入力部100において生成されたデータに基づき、検査基準及び制約条件を取得する。また、取得部122は、画像データ格納部118に格納されている画像データのうち、ユーザの操作により選択された画像データを取得する。取得部122は、取得した検査基準、制約条件及び画像データを生成部124に伝達する。
【0045】
生成部124は、モデル格納部112に格納されているプログラム生成プログラムに各種のデータを入力することにより、プログラム生成モデルに検査プログラムを生成させる。本実施形態では、生成部124は、プログラム生成モデルに検査基準、制約条件及び画像データを入力することにより、プログラム生成モデルに検査プログラムを生成させる。なお、プログラム生成モデルに検査基準、制約条件及び画像データを入力することは、検査基準、制約条件及び画像データの加工又は抽出により得られるデータ(例えば特徴ベクトルなど)をプログラム生成モデルに入力することを含むものとする。生成された検査プログラムは、変更部126又は出力部130に伝達される。
【0046】
変更部126は、生成された検査プログラムの条件を変更することができる。例えば、変更部126は、検査プログラムが制約条件を満たすように、生成された検査プログラムが有する処理ユニットの条件を変更する。ここで、変更される処理ユニットの条件は、処理ユニットの種類、モード(例えば、高速モード、高精度モードなど)又は設定パラメータなどであってよい。このとき、変更部126は、条件が変更された複数の検査プログラムを生成することもできる。生成された検査プログラムは、選択部128に伝達される。
【0047】
選択部128は、変更部126により生成された複数の検査プログラムから1つの検査プログラムを選択する。例えば、選択部128は、変更部126により生成された複数の検査プログラムのうち、最も制約条件を満たす検査プログラムを選択することができる。選択された検査プログラムは、出力部130に伝達される。
【0048】
出力部130は、各種の情報を出力する。出力部130は、例えば、生成された検査プログラムの内容を表示してもよい。
【0049】
図3は、本実施形態に係る情報処理装置10による処理の一例を示すフローチャートである。
図3に示す処理は、例えば、ユーザによる操作に応じて、入力部100が検査プログラムの生成を指示する信号を制御部120に伝達するときに開始される。
【0050】
まず、取得部122は、ユーザの操作に応じて、検査基準、制約条件及び画像データを取得する(ステップS101)。
図4は、本実施形態において、取得部122が取得する画像データ200を示す図である。画像データ200には、オブジェクトとして、円形の第1ねじ穴202及び第2ねじ穴204が含まれている。また、検査基準は、「2つのねじ穴間の距離d1が100mm±5%ならOK」という基準である。また、制約条件は、検査時間が50ms以内、検査プログラムの処理ユニットの数が5個以内、条件分岐の数が2個以内、という条件である。取得された検査基準、制約条件及び画像データは、生成部124に伝達される。また、制約条件は、変更部126にも伝達される。
【0051】
図5は、生成されることが期待される検査プログラム300を示す図である。検査プログラム300は、画像入力ユニット302、円サーチユニット304、距離演算ユニット306及び判定出力ユニット308を順番に実行するプログラムである。ここで、円サーチユニット304は、第1ねじ穴202の中心位置と、第2ねじ穴204の中心位置を特定する処理ユニットである。また、円サーチユニット304のモードは、高速モードである。距離演算ユニット306は、円サーチユニット304により特定された2つの中心位置の間の距離d1を算出する処理ユニットである。
【0052】
次いで、生成部124は、プログラム生成モデルに、ステップS101において取得された検査基準、制約条件及び画像データを入力する(ステップS103)。
【0053】
次いで、プログラム生成モデルにより、入力されたデータに基づき、データセット格納部114に格納されているデータセットから、データセットが抽出される(ステップS105)。ここでは、データセット格納部114から、入力された検査基準、制約条件及び画像データに対する総合類似度の高い3つのデータセットが抽出されるものとする。
【0054】
ここで、総合類似度は、例えば、次の式(1)、(2)により定義される。式(1)、(2)に含まれるa~fは、類似度に重みづけを行うパラメータである。
総合類似度=a×(画像データの類似度)+b×(検査基準の類似度)+c×(制約条件の類似度)・・・(1)
検査基準の類似度=d×(オブジェクトの類似度)+e×(状態変数の類似度)+f×(状態値の類似度)・・・(2)
【0055】
ここで、オブジェクトの類似度は、オブジェクトを表す語句の相関テーブルから求められてもよい。例えば、文言上は異なる語句(例えば、ディスク、穴及び円)であっても、検査プログラムのフローが類似している場合には相関が高いと判断され、オブジェクトの類似度が高くなる。また、状態変数の類似度は、状態変数の語句を表す相関テーブルから求められてもよい。
【0056】
次いで、プログラム生成モデルにより、ステップS105において抽出された3つのデータセットのそれぞれに対応する3つの検査プログラムが、検査プログラム格納部116から抽出される(ステップS107)。
【0057】
図6から
図8は、ステップS105及びS107において抽出された3つのデータセットのうちの画像データと対応する検査プログラムを示す図である。
【0058】
図6は、ステップS105及びS107において抽出された第1画像データ210及び対応する第1検査プログラム310を示す図である。第1画像データ210は、オブジェクトである矩形状の第1矩形マーク212及び第2矩形マーク214を含む。第1画像データ210に対応する検査基準は、「2つの矩形マークのX軸方向の距離d2が90mm±5%であればOK」という条件である。さらに、第1画像データ210に対応する制約条件は、検査時間が100ms以内であり、検査プログラムの処理ユニットの数が10個以内であり、条件分岐がなし、という条件である。
【0059】
また、第1検査プログラム310は、画像入力ユニット312、図形サーチユニット314、距離演算ユニット316及び判定出力ユニット318を含み、これらの処理ユニットを順番に実行するプログラムである。図形サーチユニット314は、高速モードで、2つの矩形マークの中心位置を特定する処理ユニットである。また、距離演算ユニット316は、図形サーチユニット314により特定された2つの中心位置の間におけるX軸方向の距離d2を算出する処理ユニットである。
【0060】
図7は、ステップS105及びS107において抽出された第2画像データ220及び対応する第2検査プログラム320を示す図である。第2画像データ220は、オブジェクトである円状のディスク222が含まれる。第2画像データ220に対応する検査基準は、「ディスクの中心が画像の中央から±1%に位置していればOK」という基準である。また、制約条件は、検査時間が500ms以内であり、検査プログラムの処理ユニットの数が5個以内であり、条件分岐の数が5個以内、という条件である。
【0061】
第2検査プログラム320は、画像入力ユニット322、円サーチユニット324及び判定出力ユニット326を順番に実行するプログラムである。ここで、円サーチユニット324は、高精度モードで、ディスクの中心位置を特定する処理ユニットである。
【0062】
図8は、ステップS105及びS107において抽出された第3画像データ230及び対応する第3検査プログラム330を示す図である。第3画像データ230は、一様な幅を有するテープ232を含む。第3画像データ230に対応する検査基準は、テープの幅が10mm±3%であればOK」という基準である。また、第3画像データ230に対応する制約条件は、検査時間が200ms以内であり、検査プログラムの処理ユニットの数が10個以内であり、条件分岐がない、という条件である。
【0063】
第3検査プログラム330は、画像入力ユニット332、エッジユニット334、距離演算ユニット336及び判定出力ユニット338を順番に実行するプログラムである。ここで、エッジユニット334は、テープのエッジを検出する処理ユニットである。また、距離演算ユニットは、エッジユニット334により検出されたエッジに基づき、テープの幅の長さを算出する処理ユニットである。
【0064】
図3に戻って、ステップS107の処理が終了すると、プログラム生成モデルにより、入力された検査基準を規定する状態変数と最も類似度が高い状態変数を有する検査基準に対応する検査プログラムが抽出される(ステップS109)。プログラム生成モデルに入力された検査基準の状態変数は、2点間の距離(距離d1)である。第3検査プログラム330に対応する検査基準は2点間の距離(テープの幅)であり、入力された検査基準の状態変数と第3検査プログラムに対応する検査基準の状態変数が類似している。このため、第3検査プログラム330が抽出される。本実施形態では、ここで抽出された第3検査プログラム330が基準の検査プログラムとなる。
【0065】
次いで、プログラム生成モデルにより、ステップS109において抽出された検査プログラムが有する処理ユニットの条件が調整されることで、新たな検査プログラムが生成される(ステップS111)。具体的には、まず、抽出された3つの検査プログラムのうち、検査基準のオブジェクトと最も類似しているオブジェクトで規定された検査基準に対応する検査プログラムが選択される。
【0066】
ここでは、入力された検査基準のオブジェクトはねじ穴であり、第2検査プログラムに対応する検査基準のオブジェクトは円形のディスクである。当該検査基準のオブジェクトが、3つの検査基準のオブジェクトの中で、最も入力された検査基準のオブジェクトに類似している。このため、第2検査プログラム320が選択される。プログラム生成モデルにより、基準の第3検査プログラム330が有するエッジユニット334が、第2検査プログラム320の円サーチユニット324に置換される。これにより、新たな検査モデルが生成される。
【0067】
図9は、生成された新たな検査プログラム340を示す図である。新たな検査プログラム340は、画像入力ユニット342、円サーチユニット344、距離演算ユニット346及び判定出力ユニット348を順番に実行するプログラムである。本実施形態では、生成された新たな検査プログラム340は、変更部126に伝達される。
【0068】
新たな検査モデルが生成されると、制御部120が、制約条件に基づく処理を行う(ステップS113)。
図10は、ステップS113の処理の流れを示すフローチャートである。
【0069】
まず、変更部126は、ステップS111において生成された検査プログラムが、ステップステップS101において取得された制約条件を満たすか否かを判定する(ステップS201)。生成された検査プログラムが制約条件を満たすと判定されると(ステップS201:YES)、
図10に示す処理は終了し、生成された検査プログラムが出力部130に伝達される。一方、生成された検査プログラムが制約条件を満たさないと判定されると(ステップS201:NO)、ステップS203に進む。
【0070】
ステップS201においてNOと判定されると、変更部126は、検査プログラムが有する処理ユニットの条件を変更する(ステップS203)。例えば、生成された検査プログラムの検査時間が制約条件(50ms以内)を満たさない場合には、変更部126は、例えば、円サーチユニット344のモードを高精度モードから高速モードに変更する。これにより、検査プログラム340の検査時間が短縮される。このとき、変更部126は、処理ユニットの条件を変更して、複数の検査プログラムを生成してもよい。
【0071】
次いで、変更部126は、ステップS203において条件が変更された検査プログラムが、制約条件を満たすか否かを判定する(ステップS205)。制約条件が満たされると判定された場合には(ステップS205:YES)、
図10に示す処理は終了する。このとき、制約条件を満たす検査プログラムは、出力部130に伝達される。一方、制約条件が満たされないと判定された場合(ステップS205:NO)、ステップS207に進む。このとき、ステップS203において条件が変更された検査プログラムが選択部128に伝達される。
【0072】
ステップS205においてNOと判定されると、選択部128は、パラメータが変更された検査プログラムのうち、最も制約条件を満たす検査プログラムを選択する(ステップS207)。このとき、選択部128は、条件が変更された処理ユニットを有する検査プログラムのうち、最も制約条件を満たす検査プログラムと、当該検査プログラムが満たさない制約条件を出力部130に伝達する。
【0073】
次いで、出力部130は、ステップS207において選択された検査プログラムと、当該検査プログラムが満たさない制約条件を表示する(ステップS209)。これにより、ユーザは、生成された検査プログラムが満たさない制約条件を確認することができる。
【0074】
ステップS209の処理が終了すると、
図10に示す処理が終了し、
図3に示すステップS113の処理が終了する。ステップS113の処理が終了すると、出力部130は、制約条件を満たす検査プログラムを表示する(ステップS115)。このとき、出力部130は、ステップS109において抽出された第3検査プログラムを表示してもよい。これにより、ユーザは、プログラム生成モデルによる検査プログラムの生成の根拠を確認することができる。
【0075】
以上、第1実施形態に係る情報処理装置10の処理について説明した。本実施形態によれば、予め構築されたプログラム生成モデルに検査基準、制約条件及び画像データを入力することにより、新たな検査プログラムが生成される。このため、ユーザは、画像処理に関する専門知識を有していなくとも、ユーザのアプリケーションに適応する、適切な検査プログラムを獲得することができる。また、本実施形態に係る情報処理装置10によれば、大量のデータを準備しなくとも、好適な検査プログラムを生成することが可能になる。
【0076】
また、検査プログラムを生成する方法として、問題設定(評価関数及び画像データ)を用いて処理ユニットの配置及び組み合わせの最適解を探索する方法が考えられる。この場合、全探索する方法と、近似解を求める方法がある。例えば、GA(遺伝的アルゴリズム)あるいはNNを用いる方法がある。しかしながら、全探索する方法では、コンピュータの処理に時間がかかり、当該方法は現場で用いることが難しい。一方、近似解を求める方法では、解が適切に求まる場合もあれば、求まらない場合もある。本実施形態に係る情報処理装置10によれば、長い時間をかけなくとも、適切な検査プログラムをより確実に生成することが可能になる。
【0077】
また、本実施形態では、制約条件を満たす検査プログラムが生成される。このため、ユーザは、より適切な検査プログラムを獲得することができる。
【0078】
[第2実施形態]
第2実施形態では第1実施形態と共通の事柄についての記述を省略し、異なる点についてのみ説明する。
【0079】
第1実施形態ではプログラム生成モデルが近傍法に基づくモデルであるが、第2実施形態ではプログラム生成モデルが決定木に基づくモデルである。決定木による学習方法の一例は、下記の文献1に記載されている。
(文献1)菅原 康滉・三浦 勇気・栗林 倫・沼倉 彬雄・加藤 成将・佐藤 和幸・冨澤 武弥・三好 扶・明石 卓也・金 天海(2017)、力学系学習木における適応的ノード選択、情報処理学会第79回全国大会
【0080】
第2実施形態では、
図11に示す構成を有する学習装置40によりプログラム生成モデルが構築される。
図11に示すように、第2実施形態に係る学習装置40は、入力部400、記憶部410及び制御部420を備える。
【0081】
入力部400は、ユーザの操作に応じて、操作に応じたデータ又は信号を生成する。入力部400は、例えば、ユーザの操作に応じて、プログラム生成モデルの構築を指示する信号を制御部420に伝達する。
【0082】
記憶部410は、各種のデータを記憶している。記憶部410は、データセット格納部412及び検査プログラム格納部414を備える。
【0083】
データセット格納部412は、複数のデータセットを格納している。ここで、データセットは、検査対象物の画像データと、当該検査対象物を検査するための検査基準と、当該検査対象物を検査するための検査プログラムの制約条件とを対応付けたデータである。
【0084】
検査プログラム格納部414は、複数の検査プログラムが格納されている。複数の検査プログラムのそれぞれは、データセット格納部412に格納されている複数のデータセットのいずれかに対応付けられている。
【0085】
制御部420は、プログラム生成モデルを構築するための各種の制御を行う。制御部420は、抽出部422及び学習部424を備える。
【0086】
抽出部422は、各種のデータから特徴ベクトルを抽出する。例えば、抽出部422は、データセット格納部412に格納されているN(N:自然数)個のデータセット(すなわち、検査基準、制約条件及び画像データ)のそれぞれから、n(n:自然数)次元の入力特徴ベクトルを抽出する。さらに、抽出部422は、検査プログラム格納部414に格納されている、N個のデータセットのそれぞれに対応付けられた検査プログラムのそれぞれからm(m:自然数)次元の出力特徴ベクトルを抽出することもできる。抽出部422は、抽出した特徴ベクトルを学習部424に伝達する。
【0087】
学習部424は、決定木を学習する。具体的な決定木の学習方法は、例えば、DLT(力学系決定木)を用いた方法であってよい(上述の文献1を参照)。本実施形態では、学習部424は、抽出されたN個の特徴ベクトルの分布に応じて、入力特徴ベクトルがマッピングされる特徴空間を仕分ける判別境界を形成する。
【0088】
図12は、N個のデータセットのそれぞれから抽出された入力特徴ベクトルがマッピングされた、n次元の特徴空間500を示す図である。特徴空間500には、N個の入力特徴ベクトル510がマッピングされている。特徴空間500は、判別境界520により分割され、複数の部分空間530により構成されている。
【0089】
学習部424は、特徴空間500を構成する部分空間530のそれぞれに代表値を割り当てることができる。代表値は、例えば、部分空間530に対応する出力特徴ベクトルの平均値であってよい。当該平均値を変換することで、検査プログラムを生成することが可能である。このようにして、学習部424は、入力特徴ベクトルを入力として、特徴空間500における対応する部分空間を特定し、特定された部分空間に対応する出力特徴ベクトルを変換することで検査プログラムを生成するプログラム生成モデルを構築することができる。
【0090】
構築されたプログラム生成モデルは、学習装置40が備える通信部(
図11には図示しない。)により、
図1を参照して説明した情報処理装置10に送信され、記憶部110のモデル格納部112に格納されてよい。
【0091】
図13は、学習装置40がプログラム生成モデルを構築する処理の流れを示すフローチャートである。
【0092】
まず、抽出部422は、データセット格納部412に格納されているN個のデータセットのそれぞれからn次元の入力特徴ベクトルを抽出する(ステップS301)。
【0093】
次いで、抽出部422は、ステップS301において入力特徴ベクトルが抽出されたN個のデータセットのそれぞれに対応する検査プログラムから、出力特徴ベクトルを抽出する(ステップS303)。
【0094】
次いで、学習部424は、ステップS301及びS303において抽出された特徴ベクトルに基づき、特徴空間を仕分ける(ステップS305)。これにより、
図12を参照して説明した、複数の部分空間により構成される特徴空間が構築される。
【0095】
次いで、学習部424は、ステップS305において形成された複数の部分空間のそれぞれに代表値を割り当てる(ステップS307)。これにより、プログラム生成モデルが構築される。代表値が割り当てられると、
図13に示す処理は終了する。
【0096】
図14は、情報処理装置10が、学習装置40により構築されたプログラム生成モデルを用いて検査プログラムを生成する処理の流れを示すフローチャートである。
【0097】
まず、取得部122は、ユーザの操作に応じて、検査基準、制約条件及び画像データを取得する(ステップS401)。ここで、ステップS401の処理は、
図3のステップS101の処理と実質的に同一である。
【0098】
次いで、生成部124は、ステップS401において取得された検査基準、制約条件及び画像データから入力特徴ベクトルを抽出する(ステップS403)。
【0099】
次いで、生成部124は、学習装置40により構築されたプログラム生成モデルに、ステップS403において抽出した入力特徴ベクトルを入力する(ステップS405)。
【0100】
プログラム生成モデルにより、特徴空間における入力特徴ベクトルに対応する部分空間が特定される(ステップS407)。
【0101】
次いで、プログラム生成モデルにより、特定された部分空間に対応する代表値に基づき、検査プログラムが生成される(ステップS409)。
【0102】
次いで、ステップS411及びS413の処理が行われるが、ステップS411及びS413の処理は、
図3のステップS113及びS115の処理と実質的に同一であるため、ここでは説明を省略する。
【0103】
以上、第2実施形態について説明した。
【0104】
[ハードウェア構成]
図15は、上記実施形態に係る情報処理装置10及び学習装置40(以下、これらの装置をまとめて「情報処理装置等」とも称する。)のハードウェア構成の一例を示す図である。情報処理装置等は、演算部に相当するCPU(Central Processing Unit)10aと、記憶部110に相当するRAM(Random Access Memory)10bと、記憶部110に相当するROM(Read only Memory)10cと、通信部10dと、入力部10eと、表示部10fと、を有する。これらの各構成は、バスを介して相互にデータ送受信可能に接続される。なお、本例では情報処理装置10が一台のコンピュータで構成される場合について説明するが、情報処理装置10は、複数のコンピュータが組み合わされて実現されてもよい。また、
図3で示す構成は一例であり、情報処理装置10はこれら以外の構成を有してもよいし、これらの構成のうち一部を有さなくてもよい。ここで、演算部は、制御部120、420を含む。
【0105】
CPU10aは、RAM10b又はROM10cに記憶されたプログラムの実行に関する制御やデータの演算、加工を行う。CPU10aは、プログラム生成モデルを用いて検査プログラムを生成するプログラムを実行する演算部であり得る。また、CPU10aは、プログラム生成モデルを生成するプログラムを実行する演算部であり得る。CPU10aは、入力部10eや通信部10dから種々のデータを受け取り、データの演算結果を表示部10fに表示したり、RAM10bに格納したりする。
【0106】
RAM10bは、記憶部のうちデータの書き換えが可能なものであり、例えば半導体記憶素子で構成されてよい。RAM10bは、CPU10aが実行するプログラム、プログラム生成モデル、画像データ、検査基準及び制約条件といったデータを記憶してよい。なお、これらは例示であって、RAM10bには、これら以外のデータが記憶されていてもよいし、これらの一部が記憶されていなくてもよい。
【0107】
ROM10cは、記憶部のうちデータの読み出しが可能なものであり、例えば半導体記憶素子で構成されてよい。ROM10cは、例えばプログラムや、書き換えが行われないデータを記憶してよい。
【0108】
通信部10dは、情報処理装置10を他の機器に接続するインターフェースである。通信部10dは、インターネット等の通信ネットワークに接続されてよい。
【0109】
入力部10eは、ユーザからデータの入力を受け付けるものであり、例えば、マウス、キーボード、マイク及びタッチパネルを含んでよい。
【0110】
表示部10fは、CPU10aによる演算結果を視覚的に表示するものであり、例えば、LCD(Liquid Crystal Display)により構成されてよい。表示部10fは、生成された検査プログラムの内容を表示してよい。
【0111】
プログラムは、RAM10bやROM10c等のコンピュータによって読み取り可能な記憶媒体に記憶されて提供されてもよいし、通信部10dにより接続される通信ネットワークを介して提供されてもよい。情報処理装置等では、CPU10aがプログラムを実行することにより、
図1又は
図11を用いて説明した様々な動作が実現される。なお、これらの物理的な構成は例示であって、必ずしも独立した構成でなくてもよい。例えば、情報処理装置10は、CPU10aとRAM10bやROM10cが一体化したLSI(Large-Scale Integration)を備えていてもよい。
【0112】
[その他の実施形態]
(NNによるプログラム生成モデルの構築)
上記実施形態では、主に、プログラム生成モデルが、近傍法又は決定木により構築されるものとして説明した。これに限らず、プログラム生成モデルは、例えばNN(ニューラルネットワーク)を用いて構築されてもよい。ここで、データセットは問題設定(画像データ及びアノテーション)などの学習データであり、検査プログラムは教師データであるものとする。例えば、NNに学習データを入力し、教師データに基づきNNの出力の誤差を修正するようにNNのパラメータを学習することで、プログラム生成モデルを構築してもよい。NNは、例えば、CNN(畳み込みニューラルネットワーク)であってよい。
【0113】
(条件分岐する検査プログラム)
上記実施形態では、主に、条件分岐する処理ユニットを有しない検査プログラムを用いて説明した。これに限らず、検査プログラムは、条件分岐する処理ユニットを有していてもよい。
【0114】
図16は、条件分岐する処理ユニットを有する検査プログラム350と、画像データ250と、を示す図である。画像データ250に対応する検査基準は、「楕円の長径が100mm±5%であればOK」という基準である。また、対応する制約条件は、検査時間が50ms以内、検査プログラムの処理ユニットの数が10個以内、条件分岐の数が3個以内、という条件である。また、検査プログラム350は、生成されることが期待される検査プログラムである。
【0115】
画像データ250には、楕円状のオブジェクト252が含まれている。また、検査プログラム350は、オブジェクト252の長軸の長さを計測するための検査プログラムである。オブジェクト252の長径を計測する方法として、複数(例えば10)の互いに向きが異なる仮想線(
図16には、2本の仮想線254及び256を例示している。)におけるオブジェクト252のエッジ間隔を計測し、計測した10の間隔の最大値を長径として求める方法が考えられる。
【0116】
この場合には、
図16に示す条件分岐する処理ユニット(条件分岐ユニット355)を設けることにより、検査プログラムの処理ユニットの数を低減することが可能になる。
図16に示す検査プログラム350では、オブジェクト252のエッジ位置がエッジユニット353により10回特定されると、演算ユニット356による処理が行われる。演算ユニット356は、10の間隔の最大値をオブジェクト252の長径として算出する。
図16に示す検査プログラム350では、条件分岐の数が1回(エッジユニット353の直前における合流を考慮すると2回ともいえる。)、処理ユニットの数が5個である。このため、検査プログラム350は、制約条件を満たしている。
【0117】
(第1実施形態の変形例)
第1実施形態では、
図3を参照して説明したステップS105において、主として、プログラム生成モデルに検査基準、制約条件及び画像データの類似度に応じてデータセットが抽出されるものとして説明した。これに限らず、第2実施形態のように検査基準、制約条件及び画像データから特徴ベクトルが抽出され、特徴ベクトルの類似度に基づきデータセットが抽出されてもよい。
【0118】
また、検査プログラムの合成方法は、
図3を参照して説明したステップS111の処理に限定されるものではない。例えば、第2実施形態のように、ステップS105において抽出されたデータセットから特徴ベクトルを抽出し、特徴ベクトルの平均値を変換することにより検査プログラムが生成されてもよい。
【0119】
(検査の変形例)
上記実施形態では、主に、生成される検査プログラムは、検査対象物に含まれるもの(マーク又はねじ穴など)の寸法又は位置などを検査するものとして説明した。これに限らず、生成される検査プログラムは、検査対象物の欠陥検査又は文字照合などを行うプログラムであってもよい。欠陥検査とは、製品(検査対象物)の表面にキズ又は打痕などの欠陥があるか否かを検査することである。また、文字照合とは、日付又はロット番号などの印字がされた製品に対して、正しい位置に正しい印字がされているか否かを検査することである。ここで、正しい印字とは、期待される文字列と一致する印字である。
【0120】
(プログラム生成モデルへの入力)
上記実施形態では、主として、プログラム生成モデルに検査基準、制約条件及び画像データが入力されるものとして説明した。これに限らず、プログラム生成モデルには画像データが入力されず、プログラム生成モデルの入力を検査基準及び制約条件としてもよい。さらに、プログラム生成モデルの入力には、画像データ及び制約条件が含まれず、プログラム生成モデルの入力を検査基準のみとしてもよい。
【0121】
(情報処理装置及び学習装置の配置)
上記実施形態では、学習装置40及び情報処理装置10により、機械学習によりプログラム生成モデルを構築する機能及び、構築されたプログラム生成モデルに基づき検査プログラムを生成(推論)する機能等が実現されるものとして説明したが、これに限定されない。これらの機能、すなわち、情報処理装置10が備える記憶部110、制御部120、学習装置40が備える制御部420及び記憶部410などが、情報処理装置10単体又は学習装置40単体により備えられていてもよい。
【0122】
また、情報処理装置10及び学習装置40が配置される場所は特に限定されない。例えば、学習装置40は、サービス提供者が運用するクラウド上に実装されてもよい。ユーザは、情報処理装置10を用いて、学習装置40による機械学習に基づき構築されたプログラム生成モデルを、学習装置40からダウンロードして用いることができる。
【0123】
また、機械学習によりプログラム生成モデルが構築されるタイミングも特に限定されない。ここで、学習装置が、機械学習によりプログラム生成モデルを構築する機能及び検査プログラムを生成する機能を有し、クラウド上に実装されている場合の運用について説明する。この場合には、ユーザは、例えば自己が所有する情報通信端末を用いて、検査基準等を学習装置に送信して、学習装置に検査プログラムを生成させ、生成された検査プログラムを情報通信端末で受信することにより取得することができる。このとき、学習装置は、このようにしてユーザの情報処理端末から送信された検査基準等及び生成した検査プログラムを学習データとして、機械学習により新たにプログラム生成モデルを構築することができる。
【0124】
[補足]
以上説明した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。実施形態が備える各要素及びその配置、材料、条件、形状、サイズ等は、例示したものに限定されるわけではなく適宜変更することができる。また、異なる実施形態で示した構成同士を部分的に置換し又は組み合わせることが可能である。
【0125】
[附記]
検査対象物の検査基準を取得する取得部(122)と、
取得された検査基準をプログラム生成モデルに入力することにより、前記プログラム生成モデルに、前記検査対象物の画像データに関する要素処理をそれぞれ実行する複数の処理ユニットを組み合わせた、前記画像データに基づき前記検査対象物を検査するための検査プログラムを生成させる生成部(124)と、
を備える、情報処理装置(10)。
【符号の説明】
【0126】
10…情報処理装置、100…入力部、100…入力部、110…記憶部、112…モデル格納部、114…データセット格納部、116…検査プログラム格納部、118…画像データ格納部、120…制御部、122…取得部、124…生成部、126…変更部、128…選択部、130…出力部、200…画像データ、300…検査プログラム、302…画像入力ユニット、304…円サーチユニット、306…距離演算ユニット、308…判定出力ユニット、40…学習装置、400…入力部、410…記憶部、412…データセット格納部、414…検査プログラム格納部、420…制御部、422…抽出部、424…学習部