以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明する。ただし、以下で説明する本実施形態は、あらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。つまり、本発明の実施にあたって、実施形態に応じた具体的構成が適宜採用されてもよい。なお、本実施形態において登場するデータを自然言語により説明しているが、より具体的には、コンピュータが認識可能な疑似言語、コマンド、パラメータ、マシン語等で指定される。
§1 適用例
まず、図1を用いて、本発明が適用される場面の一例について説明する。図1は、製品Rの外観検査に本発明を適用した場面の一例を模式的に例示する。ただし、本発明の適用範囲は、以下で例示する外観検査の例に限られる訳ではない。本発明は、画像に写る対象物の何らかの特徴を推定するあらゆる場面に適用可能である。
図1に例示されるとおり、本実施形態に係る検査システム100は、ネットワークを介して接続される学習装置1、画像生成装置2、推定器生成装置3、及び検査装置4を備えている。これにより、検査システム100は、製品Rの良否を検査するように構成される。学習装置1、画像生成装置2、推定器生成装置3、及び検査装置4の間のネットワークの種類は、特に限定されなくてもよく、例えば、インターネット、無線通信網、移動通信網、電話網、専用網等から適宜選択されてよい。
なお、図1の例では、学習装置1、画像生成装置2、推定器生成装置3、及び検査装置4はそれぞれ別個のコンピュータである。しかしながら、検査システム100の構成は、このような例に限定されなくてもよい。学習装置1、画像生成装置2、推定器生成装置3、及び検査装置4の少なくともいずれかのペアは一体のコンピュータであってもよい。また、学習装置1、画像生成装置2、推定器生成装置3、及び検査装置4はそれぞれ複数台のコンピュータにより構成されてもよい。
本実施形態に係る学習装置1は、外観検査の対象となる製品Rを写した画像を生成するための生成器50を構築するように構成されたコンピュータである。具体的には、学習装置1は、外観検査の対象となる製品Rを写した学習画像60を取得し、取得した学習画像60を複数のパッチ画像61に分割する。次に、学習装置1は、学習画像60内に各パッチ画像61の位置に応じて、複数のラベル62のうちのいずれかのラベル62を各パッチ画像61に関連付ける(付与する)。各ラベル62は、学習画像60内における各パッチ画像61の位置を示す。
そして、学習装置1は、各パッチ画像61及び各ラベル62を利用して、生成器50の機械学習を実施することで、生成器50のパラメータを調節する。これにより、学習装置1は、各パッチ画像61に関連付けられたラベル62から各パッチ画像61に対応する画像を生成するように訓練された生成器50を構築する。各パッチ画像61に対応する画像とは、各パッチ画像61に類似し、各パッチ画像61に写る対象が写り得る画像である。生成器50は、各パッチ画像61の分布に従った(沿う)画像を生成するように訓練される。
なお、図1の「P1」は、パッチ画像61の種別を示し、「C1」は、ラベル62の種別を示す。図1の例では、左上角のパッチ画像「P1」にラベル「C1」が付与されている。ただし、パッチ画像61の種別、ラベル62の種別、及びパッチ画像61とラベル62との対応関係は、このような例に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。
これに対して、本実施形態に係る画像生成装置2は、学習装置1により構築された学習済みの生成器50を利用して、製品Rの写り得る画像を生成するように構成されたコンピュータである。具体的には、画像生成装置2は、学習装置1により構築された生成器50を利用して、複数のラベル62それぞれから複数の画像67それぞれを生成する。生成される画像67は、上記各パッチ画像61に対応する画像である。
そして、画像生成装置2は、生成された複数の画像67それぞれを、複数のラベル62それぞれに応じた位置に配置した後に結合することで、結合画像69を生成する。生成される結合画像69は、製品Rを写した上記学習画像60に対応する画像である。なお、図1の「Q1」は、生成器50により生成された画像67の種別を示す。図1の例では、ラベル「C1」から生成された画像「Q1」が、左上角に配置された後、他のラベル62から生成された他の画像67と結合される。
本実施形態に係る推定器生成装置3は、製品Rの良否を推定するための推定器を構築するように構成されたコンピュータである。具体的に、推定器生成装置3は、製品Rを写したサンプル画像及び正解データの組み合わせによりそれぞれ構成された複数の学習データセットを取得する。正解データは、サンプル画像に写る製品Rの良否を判定した結果(すなわち、正解)を示す。そして、推定器生成装置3は、複数の学習データセットを利用した機械学習を実施することで、与えられた画像に写る製品Rの良否を判定する能力を習得した学習済みの推定器を構築する。なお、推定器生成装置3は、画像生成装置2により生成された結合画像69をサンプル画像に利用することができる。
これに対して、本実施形態に係る検査装置4は、推定器生成装置3により構築された学習済みの推定器を利用して、製品Rの良否を判定するように構成されたコンピュータである。検査装置4は、画像に写る対象物の何らかの特徴を推定するための推定装置の一例である。具体的に、検査装置4は、外観検査の対象となる製品Rの写る対象画像を取得する。本実施形態では、検査装置4にはカメラCAが接続されている。検査装置4は、このカメラCAにより製品Rを撮影することで対象画像を取得する。次に、検査装置4は、取得した対象画像を学習済みの推定器に入力し、学習済みの推定器の演算処理を実行する。これにより、検査装置4は、製品Rの良否を判定した結果に対応する出力値を学習済みの推定器から取得する。そして、検査装置4は、学習済みの推定器から得られた出力値に基づいて製品Rの良否を判定した結果に関する情報を出力する。
以上のとおり、本実施形態に係る学習装置1は、学習画像60を分割することで得られた各パッチ画像61に対応する画像の生成を生成器50に学習させる。これにより、フルサイズの学習画像60に対応する画像を直接的に生成する能力を生成器50に習得させるのではなく、各パッチ画像61に対応する画像の生成を介して学習画像60に対応するフルサイズの画像を間接的に生成する能力を生成器50に習得させる。そのため、本実施形態では、生成器50に学習させる画像のサイズを抑えることができるため、生成器50の構成を単純化することができる。したがって、本実施形態によれば、機械学習により生成器50を構築するのにかかる計算コストを低減することができる。これによって、機械学習の計算処理の際に使用するメモリの量を抑えたり、当該計算処理にかかる時間を短くしたりすることができる。
また、本実施形態に係る画像生成装置2では、学習装置1により構築された生成器50を利用することで、製品Rの写り得る画像(結合画像69)を量産するのにかかる計算コストを抑えることができる。加えて、本実施形態では、画像生成装置2により量産された結合画像69をサンプル画像として利用することができる。これにより、推定器生成装置3において、学習データセットを収集するコストを低減することができる。更に、本実施形態では、画像生成装置2により量産された結合画像69をサンプル画像として利用することで、推定器の機械学習に利用するサンプル画像の件数を増やすことができる。これにより、検査装置4において、製品Rの良否を判定する精度を高めることができる。
なお、外観検査の対象となる製品Rは、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。製品Rは、例えば、電子部品、自動車部品等の製造ラインで搬送される物であってよい。電子部品は、例えば、基盤、チップコンデンサ、液晶、リレーの巻線等である。自動車部品は、例えば、コンロッド、シャフト、エンジンブロック、パワーウィンドウスイッチ、パネル等である。また、良否の判定は、製品Rに欠陥があるか否かを単に判定することであってもよいし、製品Rに欠陥がある否かを判定することに加えて、その欠陥の種類を識別することを含んでもよい。欠陥は、例えば、傷、汚れ、クラック、打痕、埃、バリ、色ムラ等である。
§2 構成例
[ハードウェア構成]
<学習装置>
次に、図2を用いて、本実施形態に係る学習装置1のハードウェア構成の一例について説明する。図2は、本実施形態に係る学習装置1のハードウェア構成の一例を模式的に例示する。
図2に示されるとおり、本実施形態に係る学習装置1は、制御部11、記憶部12、通信インタフェース13、入力装置14、出力装置15、及びドライブ16が電気的に接続されたコンピュータである。なお、図2では、通信インタフェースを「通信I/F」と記載している。
制御部11は、ハードウェアプロセッサであるCPU(Central Processing Unit)、RAM(Random Access Memory)、ROM(Read Only Memory)等を含み、プログラム及び各種データに基づいて情報処理を実行するように構成される。記憶部12は、メモリの一例であり、例えば、ハードディスクドライブ、ソリッドステートドライブ等で構成される。本実施形態では、記憶部12は、学習プログラム121、学習画像60、ラベル情報621、第1学習結果データ125等の各種情報を記憶する。
学習プログラム121は、製品Rの写り得る画像を生成するための生成器50を構築する後述の情報処理(図11〜図14)を学習装置1に実行させるためのプログラムである。学習プログラム121は、当該情報処理の一連の命令を含む。学習画像60は、生成器50の機械学習に利用される。学習画像60の件数は、実施の形態に応じて適宜決定されてよい。ラベル情報621は、各パッチ画像61と各ラベル62との対応関係を示す。第1学習結果データ125は、機械学習により構築された学習済みの生成器50の設定を行うためのデータである。第1学習結果データ125は、学習プログラム121の実行結果として生成される。詳細は後述する。
通信インタフェース13は、例えば、有線LAN(Local Area Network)モジュール、無線LANモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。学習装置1は、この通信インタフェース13を利用することで、ネットワークを介したデータ通信を他の情報処理装置(例えば、画像生成装置2、推定器生成装置3)と行うことができる。
入力装置14は、例えば、マウス、キーボード等の入力を行うための装置である。また、出力装置15は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。オペレータは、入力装置14及び出力装置15を利用することで、学習装置1を操作することができる。
ドライブ16は、例えば、CDドライブ、DVDドライブ等であり、記憶媒体91に記憶されたプログラムを読み込むためのドライブ装置である。ドライブ16の種類は、記憶媒体91の種類に応じて適宜選択されてよい。上記学習プログラム121及び学習画像60の少なくともいずれかは、この記憶媒体91に記憶されていてもよい。
記憶媒体91は、コンピュータその他装置、機械等が、記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的又は化学的作用によって蓄積する媒体である。学習装置1は、この記憶媒体91から、上記学習プログラム121及び学習画像60の少なくともいずれかを取得してもよい。
ここで、図2では、記憶媒体91の一例として、CD、DVD等のディスク型の記憶媒体を例示している。しかしながら、記憶媒体91の種類は、ディスク型に限定される訳ではなく、ディスク型以外であってもよい。ディスク型以外の記憶媒体として、例えば、フラッシュメモリ等の半導体メモリを挙げることができる。
なお、学習装置1の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部11は、複数のハードウェアプロセッサを含んでもよい。ハードウェアプロセッサは、マイクロプロセッサ、FPGA(field-programmable gate array)、DSP(digital signal processor)等で構成されてよい。記憶部12は、制御部11に含まれるRAM及びROMにより構成されてもよい。通信インタフェース13、入力装置14、出力装置15及びドライブ16の少なくともいずれかは省略されてもよい。学習装置1は、複数台のコンピュータで構成されてもよい。この場合、各コンピュータのハードウェア構成は、一致していてもよいし、一致していなくてもよい。また、学習装置1は、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、PC(Personal Computer)等であってもよい。
<画像生成装置>
次に、図3を用いて、本実施形態に係る画像生成装置2のハードウェア構成の一例について説明する。図3は、本実施形態に係る画像生成装置2のハードウェア構成の一例を模式的に例示する。
図3に示されるとおり、本実施形態に係る画像生成装置2は、制御部21、記憶部22、通信インタフェース23、入力装置24、出力装置25、及びドライブ26が電気的に接続されたコンピュータである。本実施形態に係る画像生成装置2の制御部21〜ドライブ26それぞれは、上記学習装置1の制御部11〜ドライブ16それぞれと同様に構成されてよい。
すなわち、制御部21は、ハードウェアプロセッサであるCPU、RAM、ROM等を含み、プログラム及びデータに基づいて各種情報処理を実行するように構成される。記憶部22は、例えば、ハードディスクドライブ、ソリッドステートドライブ等で構成される。記憶部22は、画像生成プログラム221、ラベル情報621、第1学習結果データ125、結合画像69等の各種情報を記憶する。
画像生成プログラム221は、学習済みの生成器50を利用して結合画像69を生成する後述の情報処理(図15)を画像生成装置2に実行させるためのプログラムである。画像生成プログラム221は、当該情報処理の一連の命令を含む。結合画像69は、画像生成プログラム221の実行結果として生成される。詳細は後述する。
通信インタフェース23は、例えば、有線LANモジュール、無線LANモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。画像生成装置2は、この通信インタフェース23を利用することで、ネットワークを介したデータ通信を他の情報処理装置(例えば、学習装置1、推定器生成装置3)と行うことができる。
入力装置24は、例えば、マウス、キーボード等の入力を行うための装置である。また、出力装置25は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。オペレータは、入力装置24及び出力装置25を利用することで、画像生成装置2を操作することができる。
ドライブ26は、例えば、CDドライブ、DVDドライブ等であり、記憶媒体92に記憶されたプログラムを読み込むためのドライブ装置である。上記画像生成プログラム221、ラベル情報621及び第1学習結果データ125のうちの少なくともいずれかは、記憶媒体92に記憶されていてもよい。また、画像生成装置2は、記憶媒体92から、上記画像生成プログラム221、ラベル情報621及び第1学習結果データ125のうちの少なくともいずれかを取得してもよい。
なお、画像生成装置2の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部21は、複数のハードウェアプロセッサを含んでもよい。ハードウェアプロセッサは、マイクロプロセッサ、FPGA、DSP等で構成されてよい。記憶部22は、制御部21に含まれるRAM及びROMにより構成されてもよい。通信インタフェース23、入力装置24、出力装置25及びドライブ26の少なくともいずれかは省略されてもよい。画像生成装置2は、複数台のコンピュータで構成されてもよい。この場合、各コンピュータのハードウェア構成は、一致していてもよいし、一致していなくてもよい。また、画像生成装置2は、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、汎用のPC等であってもよい。
<推定器生成装置>
次に、図4を用いて、本実施形態に係る推定器生成装置3のハードウェア構成の一例について説明する。図4は、本実施形態に係る推定器生成装置3のハードウェア構成の一例を模式的に例示する。
図4に示されるとおり、本実施形態に係る推定器生成装置3は、制御部31、記憶部32、通信インタフェース33、入力装置34、出力装置35、及びドライブ36が電気的に接続されたコンピュータである。本実施形態に係る推定器生成装置3の制御部31〜ドライブ36それぞれは、上記学習装置1の制御部11〜ドライブ16それぞれと同様に構成されてよい。
すなわち、制御部31は、ハードウェアプロセッサであるCPU、RAM、ROM等を含み、プログラム及びデータに基づいて各種情報処理を実行するように構成される。記憶部32は、例えば、ハードディスクドライブ、ソリッドステートドライブ等で構成される。記憶部32は、推定器生成プログラム321、学習データセット322、第2学習結果データ325等の各種情報を記憶する。
推定器生成プログラム321は、製品Rの良否を判定するための推定器を構築する後述の情報処理(図16)を推定器生成装置3に実行させるためのプログラムである。推定器生成プログラム321は、当該情報処理の一連の命令を含む。学習データセット322は、この推定器の機械学習に利用される。第2学習結果データ325は、機械学習により構築された学習済みの推定器の設定を行うためのデータである。第2学習結果データ325は、推定器生成プログラム321の実行結果として生成される。詳細は後述する。
通信インタフェース33は、例えば、有線LANモジュール、無線LANモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。推定器生成装置3は、この通信インタフェース33を利用することで、ネットワークを介したデータ通信を他の情報処理装置(例えば、学習装置1、画像生成装置2、検査装置4)と行うことができる。
入力装置34は、例えば、マウス、キーボード等の入力を行うための装置である。また、出力装置35は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。オペレータは、入力装置34及び出力装置35を利用することで、推定器生成装置3を操作することができる。
ドライブ36は、例えば、CDドライブ、DVDドライブ等であり、記憶媒体93に記憶されたプログラムを読み込むためのドライブ装置である。上記推定器生成プログラム321及び学習データセット322のうちの少なくともいずれかは、記憶媒体93に記憶されていてもよい。また、推定器生成装置3は、記憶媒体93から、上記推定器生成プログラム321及び学習データセット322のうちの少なくともいずれかを取得してもよい。
なお、推定器生成装置3の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部31は、複数のハードウェアプロセッサを含んでもよい。ハードウェアプロセッサは、マイクロプロセッサ、FPGA、DSP等で構成されてよい。記憶部32は、制御部31に含まれるRAM及びROMにより構成されてもよい。通信インタフェース33、入力装置34、出力装置35及びドライブ36の少なくともいずれかは省略されてもよい。推定器生成装置3は、複数台のコンピュータで構成されてもよい。この場合、各コンピュータのハードウェア構成は、一致していてもよいし、一致していなくてもよい。また、推定器生成装置3は、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、汎用のPC等であってもよい。
<検査装置>
次に、図5を用いて、本実施形態に係る検査装置4のハードウェア構成の一例について説明する。図5は、本実施形態に係る検査装置4のハードウェア構成の一例を模式的に例示する。
図5に示されるとおり、本実施形態に係る検査装置4は、制御部41、記憶部42、通信インタフェース43、入力装置44、出力装置45、ドライブ46、及び外部インタフェース47が電気的に接続されたコンピュータである。なお、図5では、外部インタフェースを「外部I/F」と記載している。検査装置4の制御部41〜ドライブ46はそれぞれ、上記学習装置1の制御部11〜ドライブ16それぞれと同様に構成されてよい。
すなわち、制御部41は、ハードウェアプロセッサであるCPU、RAM、ROM等を含み、プログラム及びデータに基づいて各種情報処理を実行するように構成される。記憶部42は、例えば、ハードディスクドライブ、ソリッドステートドライブ等で構成される。記憶部42は、検査プログラム421、第2学習結果データ325等の各種情報を記憶する。
検査プログラム421は、推定器生成装置3により構築された学習済みの推定器を利用して、対象画像に写る製品Rの良否を判定する後述する情報処理(図17)を検査装置4に実行させるためのプログラムである。検査プログラム421は、当該情報処理の一連の命令を含む。詳細は後述する。
通信インタフェース43は、例えば、有線LANモジュール、無線LANモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。検査装置4は、この通信インタフェース43を利用することで、ネットワークを介したデータ通信を他の情報処理装置(例えば、推定器生成装置3)と行うことができる。
入力装置44は、例えば、マウス、キーボード等の入力を行うための装置である。また、出力装置45は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。オペレータは、入力装置44及び出力装置45を利用することで、検査装置4を操作することができる。
ドライブ46は、例えば、CDドライブ、DVDドライブ等であり、記憶媒体94に記憶されたプログラムを読み込むためのドライブ装置である。上記検査プログラム421及び第2学習結果データ325のうちの少なくともいずれかは、記憶媒体94に記憶されていてもよい。また、検査装置4は、記憶媒体94から、上記検査プログラム421及び第2学習結果データ325のうちの少なくともいずれかを取得してもよい。
外部インタフェース47は、例えば、USB(Universal Serial Bus)ポート、専用ポート等であり、外部装置と接続するためのインタフェースである。外部インタフェース47の種類及び数は、接続される外部装置の種類及び数に応じて適宜選択されてよい。本実施形態では、検査装置4は、外部インタフェース47を介して、カメラCAに接続される。
カメラCAは、製品Rを写した対象画像を取得するのに利用される。カメラCAの種類及び配置場所は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。カメラCAには、例えば、デジタルカメラ、ビデオカメラ等の公知のカメラが利用されてよい。また、カメラCAは、製品Rが搬送される製造ラインの近傍に配置されてよい。なお、カメラCAが通信インタフェースを備える場合、検査装置4は、外部インタフェース47ではなく、通信インタフェース43を介して、カメラCAに接続されてもよい。
なお、検査装置4の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部41は、複数のハードウェアプロセッサを含んでもよい。ハードウェアプロセッサは、マイクロプロセッサ、FPGA、DSP等で構成されてよい。記憶部42は、制御部41に含まれるRAM及びROMにより構成されてもよい。通信インタフェース43、入力装置44、出力装置45、ドライブ46及び外部インタフェース47の少なくともいずれかは省略されてもよい。検査装置4は、複数台のコンピュータで構成されてもよい。この場合、各コンピュータのハードウェア構成は、一致していてもよいし、一致していなくてもよい。また、検査装置4は、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、汎用のデスクトップPC、ノートPC、タブレットPC、スマートフォンを含む携帯電話等が用いられてよい。
[ソフトウェア構成]
<学習装置>
次に、図6を用いて、本実施形態に係る学習装置1のソフトウェア構成の一例について説明する。図6は、本実施形態に係る学習装置1のソフトウェア構成の一例を模式的に例示する。
学習装置1の制御部11は、記憶部12に記憶された学習プログラム121をRAMに展開する。そして、制御部11は、RAMに展開された学習プログラム121をCPUにより解釈及び実行して、各構成要素を制御する。これによって、図6に示されるとおり、本実施形態に係る学習装置1は、画像取得部111、画像分割部112、ラベル付与部113、学習処理部114、及び保存処理部115をソフトウェアモジュールとして備えるコンピュータとして動作する。すなわち、本実施形態では、学習装置1の各ソフトウェアモジュールは、制御部11(CPU)により実現される。
画像取得部111は、外観検査の対象となる製品Rを写した学習画像60を取得する。画像分割部112は、取得した学習画像60を複数のパッチ画像61に分割する。図6の例では、画像分割部112は、W×Hのサイズを有する学習画像60をw×hのパッチサイズを有するパッチ画像61に分割している。学習画像60のサイズ(W×H)に対する各パッチ画像61のパッチサイズ(w×h)は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。本実施形態では、後述する情報処理(図12)により、学習画像60の複雑度に基づいて、各パッチ画像61のパッチサイズを決定する。
ラベル付与部113は、学習画像60内における各パッチ画像61の位置に応じて、複数のラベル62のうちのいずれかのラベル62を各パッチ画像61に関連付ける。学習処理部114は、機械学習を行うことで、各パッチ画像61に関連付けられたラベル62から各パッチ画像61に対応する画像を生成するように訓練された生成器50を構築する。保存処理部115は、構築された学習済みの生成器50に関する情報を所定の記憶領域に保存する。
(学習ネットワーク)
次に、図7A及び図7Bを更に用いて、本実施形態に係る生成器50を含む学習ネットワーク500の構成の一例について説明する。各図に示されるとおり、本実施形態では、生成器50は判別器52に接続されており、生成器50及び判別器52により学習ネットワーク500が構成されている。図7Aは、この学習ネットワーク500のうち判別器52を訓練する第1訓練ステップの過程の一例を模式的に例示する。一方、図7Bは、生成器50を訓練する第2訓練ステップの過程の一例を模式的に例示する。
本実施形態に係る生成器50は、いわゆる深層学習に用いられる多層構造のニューラルネットワークにより構成されている。具体的に、生成器50は、入力層501、中間層(隠れ層)502、及び出力層503を備えている。ただし、生成器50の構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。例えば、生成器50は、2層以上の中間層502を備えてもよい。
各層501〜503に含まれるニューロン(ノード)の数は、実施の形態に応じて適宜設定されてよい。隣接する層のニューロン同士は適宜結合され、各結合には重み(結合荷重)が設定されている。図7A及び図7Bの例では、各ニューロンは、隣接する層の全てのニューロンと結合されている。しかしながら、ニューロンの結合は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。各ニューロンには閾値が設定されており、基本的には、各入力と各重みとの積の和が閾値を超えているか否かによって各ニューロンの出力が決定される。各層501〜503に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される生成器50のパラメータの一例である。
同様に、本実施形態に係る判別器52も、いわゆる深層学習に用いられる多層構造のニューラルネットワークにより構成されている。具体的に、判別器52は、入力層521、中間層(隠れ層)522、及び出力層523を備えている。ただし、判別器52の構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。例えば、判別器52は、2層以上の中間層522を備えてもよい。判別器52の構成は、生成器50と異なっていてよい。
各層521〜523に含まれるニューロン(ノード)の数は、実施の形態に応じて適宜設定されてよい。隣接する層のニューロン同士は適宜結合され、各結合には重み(結合荷重)が設定されている。図7A及び図7Bの例では、各ニューロンは、隣接する層の全てのニューロンと結合されている。しかしながら、ニューロンの結合は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。各ニューロンには閾値が設定されており、基本的には、各入力と各重みとの積の和が閾値を超えているか否かによって各ニューロンの出力が決定される。各層521〜523に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される判別器52のパラメータの一例である。
学習処理部114は、この学習ネットワーク500の機械学習を実施する。この機械学習を実施することは、判別器52を訓練する第1訓練ステップ及び生成器50を訓練する第2訓練ステップを交互に行うことを含む。第1訓練ステップでは、学習処理部114は、判別器52に入力された入力画像が、生成器50により生成された画像であるか学習画像60から分割された各パッチ画像61であるかを判別するように判別器52を訓練する。つまり、判別器52は、与えられた入力画像が学習データ(学習画像60)由来か生成器50由来かを判別するように訓練される。第2訓練ステップでは、学習処理部114は、判別器52による判別が誤るような画像を生成するように生成器50を訓練する。なお、図7A及び図7Bの例では、学習データ由来であることを「真」と表現し、生成器50由来であることを「偽」と表現している。ただし、各由来を表現する方法は、このような例に限定されなくてよく、実施の形態に応じて適宜選択されてよい。
具体的に、図7Aに示されるとおり、第1訓練ステップでは、学習処理部114は、所定の確率分布からノイズを抽出し、抽出したノイズと各ラベル62とを組み合わせて、複数の第1データセットを生成する。続いて、学習処理部114は、各第1データセット(各ラベル62及びノイズ)を生成器50の入力層501に入力し、生成器50の演算処理を実行する。これにより、学習処理部114は、各ラベル62から画像を生成した結果に対応する出力を出力層503から取得する。学習処理部114は、生成された各画像と各ラベル62とを組み合わせることで、複数の第2データセットを生成する。また、学習処理部114は、各パッチ画像61と対応する各ラベル62とを組み合わせることで、複数の第3データセットを生成する。
次に、学習処理部114は、各第2データセット(生成器50の生成した各画像及び各ラベル62)を判別器52の入力層521に入力し、判別器52の演算処理を実行する。これにより、学習処理部114は、入力画像が生成器50由来か学習画像60由来かを判別した結果に対応する出力値を出力層523から取得する。この場面では、入力画像は生成器50の生成した各画像であるため、判別器52は、「偽」と判別するのが正解である。学習処理部114は、各第2データセットについて、出力層523から得られる出力値とこの正解との誤差を算出する。
同様に、学習処理部114は、各第3データセット(各パッチ画像61及び各ラベル62)を判別器52の入力層521に入力し、判別器52の演算処理を実行する。これにより、学習処理部114は、入力画像が生成器50由来か学習画像60由来かを判別した結果に対応する出力値を出力層523から取得する。この場面では、入力画像は各パッチ画像61であるため、判別器52は、「真」と判別するのが正解である。学習処理部114は、各第3データセットについて、出力層523から得られる出力値とこの正解との誤差を算出する。
そして、学習処理部114は、算出される誤差の和が小さくなるように、判別器52のパラメータの値を調節する。出力層523から得られる出力値と真偽の正解との誤差の和が閾値以下になるまで、学習処理部114は、上記一連の処理により、判別器52のパラメータの値の調節を繰り返す。これにより、第1訓練ステップでは、学習処理部114は、生成器50により生成された画像であるか学習画像60から分割された各パッチ画像61であるかを判別するように判別器52を訓練する。
一方、図7Bに示されるとおり、第2訓練ステップでは、学習処理部114は、所定の確率分布からノイズを抽出し、抽出したノイズと各ラベル62とを組み合わせて、複数のデータセットを生成する。各データセットは、上記第1データセットと同じでもよいし、異なっていてもよい。続いて、学習処理部114は、各データセット(各ラベル62及びノイズ)を生成器50の入力層501に入力し、生成器50の演算処理を実行する。これにより、学習処理部114は、各ラベル62から画像を生成した結果に対応する出力を出力層503から取得する。
次に、学習処理部114は、生成された各画像及び対応する各ラベル62の組み合わせを判別器52の入力層521に入力し、判別器52の演算処理を実行する。これにより、学習処理部114は、入力画像が生成器50由来か学習画像60由来かを判別した結果に対応する出力値を出力層523から取得する。この生成器50の訓練では、判別器52による判別の結果が誤らせることが正解である。つまり、出力層523から得られる出力値が「真」に対応することが正解である。学習処理部114は、各データセットについて、一連の処理により出力層523から得られる出力値とこの正解(つまり、「真」)との誤差を算出する。
そして、学習処理部114は、算出される誤差の和が小さくなるように、生成器50のパラメータの値を調節する。各データセットについて、一連の処理により出力層523から得られる出力値と「真」との誤差の和が閾値以下になるまで、学習処理部114は、上記一連の処理により、生成器50のパラメータの値の調節を繰り返す。これにより、第2訓練ステップでは、学習処理部114は、判別器52による判別が誤るような画像を各ラベル62から生成するように生成器50を訓練する。
学習処理部114は、上記第1訓練ステップ及び第2訓練ステップを交互に実施することで、判別器52及び生成器50の精度を交互に高めていく。これにより、生成器50は、学習画像60から分割された各パッチ画像61に対応する画像を適切に生成する能力を習得することができる。
この機械学習が完了した後、保存処理部115は、構築された生成器50の構成(例えば、ニューラルネットワークの層数、各層におけるニューロンの個数、ニューロン同士の結合関係、各ニューロンの伝達関数)、及び演算パラメータ(例えば、各ニューロン間の結合の重み、各ニューロンの閾値)を示す第1学習結果データ125を生成する。そして、保存処理部115は、生成した第1学習結果データ125を所定の記憶領域に保存する。
<画像生成装置>
次に、図8を用いて、本実施形態に係る画像生成装置2のソフトウェア構成の一例について説明する。図8は、本実施形態に係る画像生成装置2のソフトウェア構成の一例を模式的に例示する。
画像生成装置2の制御部21は、記憶部22に記憶された画像生成プログラム221をRAMに展開する。そして、制御部21は、RAMに展開された画像生成プログラム221をCPUにより解釈及び実行して、各構成要素を制御する。これによって、図8に示されるとおり、本実施形態に係る画像生成装置2は、生成部211、結合部212、及び画像保存部213をソフトウェアモジュールとして備えるコンピュータとして動作する。すなわち、本実施形態では、画像生成装置2の各ソフトウェアモジュールも、上記学習装置1と同様に、制御部21(CPU)により実現される。
生成部211は、第1学習結果データ125を保持することで、学習装置1により構築された学習済みの生成器50を含んでいる。生成部211は、学習装置1により構築された学習済みの生成器50を利用して、複数のラベル62それぞれから複数の画像67それぞれを生成する。本実施形態では、生成部211は、第1学習結果データ125を参照して、学習済みの生成器50の設定を行う。そして、生成部211は、所定の確率分布からノイズを取得し、取得したノイズ及び各ラベル62を生成器50の入力層501に入力して、生成器50の演算処理を実行する。これにより、生成部211は、出力層503からの出力として、各ラベル62から生成された各画像67を取得する。結合部212は、生成された各画像67を、各ラベル62に応じた位置に配置した後に結合することで、結合画像69を生成する。画像保存部213は、生成された結合画像69を所定の記憶領域に保存する。
<推定器生成装置>
次に、図9を用いて、本実施形態に係る推定器生成装置3のソフトウェア構成の一例について説明する。図9は、本実施形態に係る推定器生成装置3のソフトウェア構成の一例を模式的に例示する。
推定器生成装置3の制御部31は、記憶部32に記憶された推定器生成プログラム321をRAMに展開する。そして、制御部31は、RAMに展開された推定器生成プログラム321に含まれる命令をCPUにより解釈及び実行して、各構成要素を制御する。これによって、図9に示されるとおり、本実施形態に係る推定器生成装置3は、学習データ取得部311、学習処理部312、及び保存処理部313をソフトウェアモジュールとして備えるコンピュータとして構成される。すなわち、本実施形態では、推定器生成装置3の各ソフトウェアモジュールも、上記学習装置1と同様に、制御部31(CPU)により実現される。
学習データ取得部311は、製品を写したサンプル画像3221、及び正解データ3222の組み合わせによりそれぞれ構成された複数の学習データセット322を取得する。正解データ3222は、対応するサンプル画像3221に写る製品Rの良否を判定した結果(すなわち、正解)を示す。サンプル画像3221は、機械学習の入力データ(訓練データ)として利用され、正解データ3222は、教師データとして利用される。
ここで、サンプル画像3221には、上記画像生成装置2により生成された結合画像69が利用されてよい。すなわち、少なくとも一部の学習データセット322のサンプル画像3221は、上記結合画像69であってよい。また、学習データ取得部311は、サンプル画像3221を学習画像60として学習装置1に送信し、サンプル画像3221に対応する画像を生成するための生成器50を構築させてよい。そして、学習データ取得部311は、構築された生成器50を画像生成装置2に利用させて、サンプル画像3221に対応する複数の結合画像69を生成させてよい。学習データ取得部311は、生成された複数の結合画像69をサンプル画像3221として受信することで、機械学習に利用する学習データセット322の件数を増やすことができる。
学習処理部312は、取得した各学習データセット322を利用した機械学習を実施することで、与えられた画像に写る製品Rの良否を判定する能力を習得した学習済みの推定器70を構築する。換言すると、学習処理部312は、各学習データセット322について、サンプル画像3221を入力すると、正解データ3222と一致する出力値を出力するように訓練された推定器70を構築する。保存処理部313は、構築された学習済みの推定器70に関する情報を所定の記憶領域に保存する。
なお、学習装置1及び推定器生成装置3の間の関係において、上記学習処理部114及び保存処理部115はそれぞれ、第1学習処理部及び第1保存処理部と称されてよい。これに応じて、学習処理部312及び保存処理部313はそれぞれ、第2学習処理部及び第2保存処理部と称されてよい。
(推定器)
次に、本実施形態に係る推定器70の構成の一例について説明する。図9に示されるとおり、本実施形態に係る推定器70は、上記生成器50と同様に、いわゆる深層学習に用いられる多層構造のニューラルネットワークにより構成されている。具体的に、推定器70は、入力層701、中間層(隠れ層)702、及び出力層703を備えている。ただし、推定器70の構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。例えば、推定器70は、2層以上の中間層702を備えてもよい。推定器70の構成は、生成器50及び判別器52と異なっていてよい。
各層701〜703に含まれるニューロン(ノード)の数は、実施の形態に応じて適宜設定されてよい。隣接する層のニューロン同士は適宜結合され、各結合には重み(結合荷重)が設定されている。図9の例では、各ニューロンは、隣接する層の全てのニューロンと結合されている。しかしながら、ニューロンの結合は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。各ニューロンには閾値が設定されており、基本的には、各入力と各重みとの積の和が閾値を超えているか否かによって各ニューロンの出力が決定される。各層701〜703に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される推定器70のパラメータの一例である。
学習処理部312は、各学習データセット322について、サンプル画像3221を推定器70の入力層701に入力し、推定器70の演算処理を実行する。この演算処理の結果、学習処理部312は、サンプル画像3221に写る製品Rの良否を判定した結果に対応する出力値を出力層703から取得する。続いて、学習処理部312は、取得した出力値と正解データ3222との誤差を算出する。そして、学習処理部312は、各学習データセット322について、算出される誤差の和が小さくなるように、推定器70のパラメータの値を調節する。出力層703から得られる出力値と正解データ3222との誤差の和が閾値以下になるまで、学習処理部312は、上記一連の処理による推定器70のパラメータの値の調節を繰り返す。これにより、学習処理部312は、各学習データセット322について、サンプル画像3221を入力層701に入力すると、入力したサンプル画像3221に関連付けられた正解データ3222と一致する出力値を出力層703から出力するように訓練された推定器70を構築することができる。
この機械学習の処理が完了した後、保存処理部313は、構築された学習済みの推定器70の構成(例えば、ニューラルネットワークの層数、各層におけるニューロンの個数、ニューロン同士の結合関係、各ニューロンの伝達関数)、及び演算パラメータ(例えば、各ニューロン間の結合の重み、各ニューロンの閾値)を示す第2学習結果データ325を生成する。そして、保存処理部313は、生成した第2学習結果データ325を所定の記憶領域に保存する。
<検査装置>
次に、図10を用いて、本実施形態に係る検査装置4のソフトウェア構成の一例について説明する。図10は、本実施形態に係る検査装置4のソフトウェア構成の一例を模式的に例示する。
検査装置4の制御部41は、記憶部42に記憶された検査プログラム421をRAMに展開する。そして、制御部41は、RAMに展開された検査プログラム421に含まれる命令をCPUにより解釈及び実行して、各構成要素を制御する。これによって、図10に示されるとおり、本実施形態に係る検査装置4は、対象データ取得部411、良否判定部412、及び出力部413をソフトウェアモジュールとして備えるコンピュータとして構成される。本実施形態では、検査装置4の各ソフトウェアモジュールも、上記学習装置1と同様に、制御部41(CPU)により実現される。
対象データ取得部411は、外観検査の対象となる製品Rの写る対象画像422を取得する。本実施形態では、対象データ取得部411は、カメラCAにより製品Rを撮影することで、対象画像422を取得する。良否判定部412は、第2学習結果データ325を保持することで、推定器生成装置3により構築されたが学習済みの推定器70を含んでいる。良否判定部412は、学習済みの推定器70を利用して、対象画像422に写る製品Rの良否を判定する。
具体的には、良否判定部412は、第2学習結果データ325を参照して、学習済みの推定器70の設定を行う。次に、良否判定部412は、取得した対象画像422を推定器70の入力層701に入力し、推定器70の演算処理を実行する。これにより、良否判定部412は、対象画像422に写る製品Rの良否を判定した結果に対応する出力値を推定器70の出力層703から取得する。本実施形態では、この出力値を得ることが、製品Rの良否を判定することに対応する。出力部413は、製品Rの良否を判定した結果に関する情報を出力する。
<その他>
学習装置1、画像生成装置2、推定器生成装置3及び検査装置4の各ソフトウェアモジュールに関しては後述する動作例で詳細に説明する。なお、本実施形態では、学習装置1、画像生成装置2、推定器生成装置3及び検査装置4の各ソフトウェアモジュールがいずれも汎用のCPUによって実現される例について説明している。しかしながら、以上のソフトウェアモジュールの一部又は全部が、1又は複数の専用のプロセッサにより実現されてもよい。また、学習装置1、画像生成装置2、推定器生成装置3及び検査装置4それぞれのソフトウェア構成に関して、実施形態に応じて、適宜、ソフトウェアモジュールの省略、置換及び追加が行われてもよい。
§3 動作例
[学習装置]
次に、図11を用いて、本実施形態に係る学習装置1の動作例について説明する。図11は、本実施形態に係る学習装置1の処理手順の一例を示す。以下で説明する処理手順は、本発明の「学習方法」の一例である。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
(ステップS101)
ステップS101では、制御部11は、画像取得部111として動作し、外観検査の対象となる製品Rを写した学習画像60を取得する。
学習画像60を取得する方法は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、カメラ及び製品Rを用意し、欠陥のある又は欠陥のない製品Rをカメラにより撮影する。これにより、学習画像60を生成することができる。この学習画像60の生成は、コンピュータの動作により自動的に行われてもよいし、オペレータの操作により手動的に行われてもよい。また、この学習画像60を生成する情報処理は、学習装置1において実行されてもよいし、学習装置1以外の他のコンピュータにより行われてもよい。
学習画像60を学習装置1が生成する場合、制御部11は、自動的又はオペレータの操作により手動的に上記情報処理を実行することで、1又は複数の学習画像60を取得する。一方、学習画像60を他のコンピュータが生成する場合、制御部11は、例えば、ネットワーク、記憶媒体91等を介して、他のコンピュータにより生成された1又は複数の学習画像60を取得する。この場合、制御部11は、推定器生成装置3又は他のコンピュータからサンプル画像3221を学習画像60として取得してもよい。
取得する学習画像60の件数は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。1又は複数の学習画像60を取得すると、制御部11は、次のステップS102に処理を進める。
(ステップS102)
ステップS102では、制御部11は、画像分割部112として動作し、取得した学習画像60を複数のパッチ画像61に分割する。具体的には、制御部11は、パッチサイズを適宜決定し、決定したパッチサイズで学習画像60を分割する。これにより、制御部11は、それぞれパッチサイズを有する複数のパッチ画像61を学習画像60から得ることができる。
パッチサイズを決定する方法は、特に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。例えば、パッチサイズは、指定値、設定値等により固定されていてもよい。ただし、パッチサイズが固定されていると、生成に適したパッチサイズの各パッチ画像61に学習画像60を分割することができない可能性がある。そこで、本実施形態では、パッチ分割の好ましい形態として、制御部11は、以下の図12に示す方法により、パッチサイズを決定し、決定したパッチサイズで学習画像60を分割する。
図12は、本実施形態に係る学習装置1によるパッチ分割の処理手順の一例を例示する。本実施形態に係るステップS102は、以下のステップS201〜S203を含む。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
(ステップS201)
ステップS201では、制御部11は、学習画像60の複雑度を計算する。複雑度は、学習画像60の複雑さを示す指標である。複雑度は、適宜導出されてよい。本実施形態では、制御部11は、情報エントロピー(E)、境界率(R)、コントラスト(CT)、相関(CL)、及びエネルギー(EN)の5つの指標を用いて、学習画像60の複雑度を導出する。ただし、複雑度の指標は、これらの例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、学習画像60の複雑度の導出において、これら5つの指標のうちの少なくともいずれかは省略されてよい。
情報エントロピー(E)は、学習画像60の有する情報量の期待値を示す。制御部11は、以下の式1により、情報エントロピー(E)を算出することができる。境界率(R)は、学習画像60のピクセル総数に対する境界点の割合を示す。境界点は、異なる画像領域の境界に属する点である。例えば、ソーベル(Sobel)法、キャニー(Canny)法、プレウィット(Prewitt)法等により検出されたエッジを境界点として利用することができる。制御部11は、以下の式2により、境界率(R)を算出することができる。コントラスト(CTは、あるピクセルとその近傍のピクセルとの間の差分の程度を示す。コントラスト(CT)は、「分散」又は「慣性」とも称されてよい。制御部11は、以下の式3により、コントラスト(CT)を算出することができる。相関(CL)は、あるピクセルとその近傍のピクセルとの間に存在する関係の程度を示す。制御部11は、以下の式4により、相関(CL)を算出することができる。エネルギー(EN)は、グレーレベルの同時生起行列(Gray-level Co-occurrence Matrix:GLCM)の要素の二乗和を示す。エネルギー(EN)は、「均一性」又は「角度2次モーメント」と称されてもよい。制御部11は、以下の式5により、エネルギー(EN)を算出することができる。グレーレベルの同時生起行列は、グレーレベル(グレースケール強度)値iのピクセルが値jのピクセルに指定方向に隣接して出現する頻度を導出する。上記境界率(R)、コントラスト(CT)、相関(CL)、及びエネルギー(EN)の4つの指標は、このグレースケールの同時生起行列から導出される。制御部11は、以下の式6により、これら5つの指標から複雑度(CP)を算出する。
ここで、kは、学習画像60内に存在する画素値の種類数を示す。niは、i番目の種類の画素数を示す。Nは、学習画像60内に存在する画素数を示す。Peは、境界点の数を示す。Wは、学習画像60の横方向の画素数を示す。Hは、学習画像60の縦方向の画素数を示す。WとHとの積によりNを算出することができる。p(i,j)は、同時生起行列の要素を示す。ui、uj、ai、及びajはそれぞれ、以下の式7〜式10に示される。
なお、複数の学習画像60に対して共通のパッチサイズを決定する場合、制御部11は、複数の学習画像60を平均化することで、平均化された学習画像(平均画像)60を取得する。そして、制御部11は、上記方法により、平均化された学習画像60の複雑度を算出する。学習画像60の複雑度を算出すると、制御部11は、次のステップS202に処理を進める。
(ステップS202)
ステップS202では、制御部11は、算出した複雑度に応じて、パッチサイズを決定する。本実施形態では、制御部11は、複雑度が高いほどパッチサイズが小さくなり、複雑度が低いほどパッチサイズが大きくなるように、パッチサイズを決定する。例えば、32×32、64×64、128×128、256×256等のように複数の段階でパッチサイズが用意されていてもよい。これに応じて、パッチサイズの各段階に対応する数値範囲が複雑度に対して設定されていてもよい。各段階のパッチサイズは、学習画像60のサイズ及び生成するパッチ画像61の数に応じて適宜設定されてよい。例えば、以下の表1のとおり、パッチサイズの各段階に対して複雑度の数値範囲が設定されていてもよい。
この場合、制御部11は、算出した複雑度がいずれの数値範囲に属するかを判定してよい。そして、制御部11は、算出した複雑度の属する数値範囲に対応して、パッチサイズを決定してもよい。パッチサイズを決定すると、制御部11は、次のステップS203に処理を進める。
(ステップS203)
ステップS203では、制御部11は、決定したパッチサイズをそれぞれ有する複数のパッチ画像61に学習画像60を分割する。例えば、学習画像60のサイズが1280×1024であり、上記ステップS202においてパッチサイズを256×256に決定した場合、学習画像60は、20枚のパッチ画像61に分割される。ステップS101において、複数の学習画像60を取得している場合、制御部11は、決定したパッチサイズで各学習画像60を分割する。学習画像60の分割が完了すると、制御部11は、パッチ分割の処理を終了し、次のステップS103に処理を進める。
(ステップS103)
図11に戻り、ステップS103では、制御部11は、ラベル付与部113として動作し、学習画像60内における各パッチ画像61の位置に応じて、複数のラベル62のうちのいずれかのラベル62を各パッチ画像61に関連付ける。各ラベル62は、学習画像60内における各パッチ画像61の位置を示す。
各パッチ画像61と各ラベル62との対応関係は、実施の形態に応じて適宜決定されてよい。制御部11は、各パッチ画像61に異なるラベル62を付与してもよい。ただし、この場合には、ラベル62の種類数が多くなってしまい、これに応じて、生成器50の構成が複雑化してしまう可能性がある。本実施形態では、学習画像60は、外観検査の対象となる製品Rを写した画像であり、その背景部分に対応する各パッチ画像61は一致している(すなわち、差が無い)可能性が高い。一致している各パッチ画像61は同じラベル62に統合すれば、ラベル62の種類数を低減することができ、これによって、生成器50の構成を更に単純化することが可能である。そこで、本実施形態では、ラベリングの好ましい形態として、制御部11は、以下の図13に示す方法により、各パッチ画像61と各ラベル62との対応関係を決定する。
図13は、本実施形態に係る学習装置1によるラベリングの処理手順の一例を例示する。本実施形態に係るステップS103は、以下のステップS301〜305を含む。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
(ステップS301)
ステップS301では、制御部11は、各パッチ画像61の複雑度を算出する。各パッチ画像61の複雑度を算出する方法は、上記ステップS201と同様でよい。ただし、学習画像60の複雑度を算出する方法と各パッチ画像61の複雑度を算出する方法とは必ずしも一致していなくてもよい。制御部11は、例えば、学習画像60の複雑度を上記5つの指標から導出するのに対して、各パッチ画像61の複雑度の導出では上記5つの指標のうちの少なくともいずれかを省略してもよい。これにより、学習画像60の複雑度を算出する方法と各パッチ画像61の複雑度を算出する方法とは異なっていてもよい。各パッチ画像61の複雑度を算出すると、制御部11は、次のステップS302に処理を進める。
(ステップS302〜S304)
ステップS302〜S304では、制御部11は、算出した複雑度に基づいて、複数のパッチ画像61のうちの互いに類似する2つ以上のパッチ画像61を同じラベル62に統合する。
具体的に、ステップS302では、制御部11は、算出した複雑度に基づいて、互いに類似する2つ以上のパッチ画像61が存在するか否かを判定する。類似する2つのパッチ画像61の複雑度は互いに近似する。つまり、2つのパッチ画像61の内容がほぼ同一であれば、当該2つのパッチ画像61の複雑度はほぼ同一となる。そこで、制御部11は、2つのパッチ画像61の複雑度の差分を算出し、算出された差分が閾値以下であるか否かを判定する。閾値は、実施の形態に応じて適宜設定されてよい。そして、算出された差分が閾値以下である場合、制御部11は、対象の2つのパッチ画像61は互いに類似していると判定する。一方、算出された差分が閾値以下ではない場合、制御部11は、対象の2つのパッチ画像61は類似していないと判定する。制御部11は、全てのパッチ画像61に対してこの判定処理を実行する。これにより、算出した複雑度に基づいて、互いに類似する2つ以上のパッチ画像が存在するか否かを特定することができる。
なお、複雑度は、上記各指標に基づいて画像の内容を表すものである。そのため、複雑度の差は比較的に小さいにも関わらず、2つのパッチ画像61が互いに大きく相違してしまう可能性がある。そこで、ステップS302では、制御部11は、対象の2つのパッチ画像61が互いに類似するか否かを判定するための指標として、上記複雑度以外の他の指標を更に利用してもよい。上記複雑度に基づく判定及び他の指標に基づく判定の処理順序は実施の形態に応じて適宜決定されてよい。他の指標に基づく判定方法の一例として、例えば、モノクロヒストグラムに基づく判定方法が挙げられる。モノクロヒストグラムに基づく判定方法を採用する場合、制御部11は、各パッチ画像61のモノクロヒストグラムを生成する。モノクロヒストグラムは、画像内における各輝度の画素数、すなわち、画像の輝度の統計情報を示す。次に、制御部11は、2つのパッチ画像61のモノクロヒストグラムの差分を算出し、算出された差分が閾値以下であるか否かを判定する。閾値は、実施の形態に応じて適宜決定されてよい。複雑度の差分に対する閾値を第1閾値と称し、モノクロヒストグラムの差分に対する閾値を第2閾値と称してもよい。算出された複雑度の差分が第1閾値以下であり、かつ算出されたモノクロヒストグラムの差分が第2閾値以下である場合、制御部11は、対象の2つのパッチ画像61は互いに類似していると判定する。一方、そうではない場合、制御部11は、対象の2つのパッチ画像61は類似していないと判定する。制御部11は、全てのパッチ画像61に対してこれらの判定処理を実行する。このように、ステップS302では、制御部11は、上記複雑度に基づく判定処理に加えて、他の指標に基づく判定処理を実行してもよい。
ステップS303では、制御部11は、ステップS302の判定結果に応じて、条件分岐を処理する。ステップS302において、互いに類似する2つ以上のパッチ画像61が存在すると判定した場合には、制御部11は、次のステップS304に処理を進める。一方、ステップS302において、互いに類似する2つ以上のパッチ画像61は存在しないと判定した場合には、制御部11は、ステップS304を省略し、次のステップS305に処理を進める。
ステップS304では、制御部11は、互いに類似する2つ以上のパッチ画像61を統合する。つまり、制御部11は、互いに類似する2つ以上のパッチ画像61に同一のラベル62が付与されるように設定する。互いに類似する2つ以上のパッチ画像61の群は複数存在してもよい。この場合、制御部11は、同一の群内における各パッチ画像61には同一のラベル62を付与するように設定するが、異なる群のパッチ画像61同士には異なるラベル62を付与するように設定する。パッチ画像61の統合処理が完了すると、制御部11は、次のステップS305に処理を進める。
(ステップS305)
ステップS305では、制御部11は、各パッチ画像61にラベル62を関連付ける(付与する)。この処理において、制御部11は、ステップS304で統合した2つ以上のパッチ画像61には同一のラベル62を付与する。一方、制御部11は、統合されていない異なるパッチ画像61には異なるラベル62を付与する。
このラベリングの過程で、制御部11は、各パッチ画像61と各ラベル62との対応関係を示すラベル情報621を生成する。制御部11は、生成したラベル情報621を所定の記憶領域に保存する。ラベル情報621のデータ形式及び所定の記憶領域はそれぞれ、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。所定の記憶領域は、例えば、制御部11内のRAM、記憶部12、外部記憶装置、記憶メディア又はこれらの組み合わせであってよい。記憶メディアは、例えば、CD、DVD等であってよく、制御部11は、ドライブ16を介して記憶メディアにラベル情報621を格納してもよい。外部記憶装置は、例えば、学習装置1に接続された外付けの記憶装置であってよい。この場合、制御部11は、外付けの記憶装置にラベル情報621を格納してもよい。また、外部記憶装置は、例えば、NAS(Network Attached Storage)等のデータサーバであってよい。この場合、制御部11は、ネットワークを介してデータサーバにラベル情報621を格納してもよい。
全てのパッチ画像61にいずれかのラベル62を付与し終えると、制御部11は、本実施形態に係るラベリングの処理を終了し、次のステップS104に処理を進める。
(ステップS104)
図11に戻り、制御部11は、学習処理部114として動作し、各パッチ画像61及び各ラベル62を利用して、生成器50の機械学習を実施する。これにより、制御部11は、各パッチ画像61に関連付けられたラベル62から各パッチ画像61に対応する画像を生成するように訓練された生成器50を構築する。本実施形態では、生成器50の出力は判別器52の入力に接続されており、生成器50及び判別器52により学習ネットワーク500が構成されている。そこで、本実施形態では、制御部11は、以下の図14に示す方法により、学習ネットワーク500の機械学習を実施する。
図14は、本実施形態に係る学習装置1による機械学習の処理手順の一例を例示する。本実施形態に係るステップS104は、以下のステップS401〜403を含む。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
ステップS401を実行する前に、制御部11は、処理対象となる生成器50及び判別器52を用意する。用意する生成器50及び判別器52それぞれの構成、各ニューロン間の結合の重みの初期値、及び各ニューロンの閾値の初期値は、テンプレートにより与えられてもよいし、オペレータの入力により与えられてもよい。また、再学習を行う場合には、制御部11は、過去の機械学習を行うことで得られた学習結果データに基づいて、生成器50及び判別器52を用意してもよい。この前処理が完了すると、制御部11は、次のステップS401から機械学習の処理を実行する。
(ステップS401)
ステップS401では、制御部11は、判別器52の機械学習を実施することで、判別器52に入力された入力画像が、生成器50により生成された画像であるか学習画像60から分割された各パッチ画像61であるかを判別するように判別器52を訓練する。ステップS401は、本発明の「第1訓練ステップ」の一例である。
具体的に、制御部11は、所定の確率分布からノイズ(潜在変数)を抽出し、抽出したノイズと各ラベル62とを組み合わせて、複数の第1データセットを生成する。所定の確率分布は、例えば、ガウス分布、一様分布等であってよい。続いて、制御部11は、各第1データセット(各ラベル62及びノイズ)を生成器50の入力層501に入力し、入力側から順に各層501〜503に含まれる各ニューロンの発火判定を行う。これにより、制御部11は、各ラベル62から画像を生成した結果に対応する出力を出力層503から取得する。制御部11は、生成した各画像と各ラベル62とを組み合わせることで、複数の第2データセットを生成する。また、各パッチ画像61と対応する各ラベル62とを組み合わせることで、複数の第3データセットを生成する。
次に、制御部11は、各第2データセット及び各第3データセットを入力データ(訓練データ)として利用し、各データセットに含まれる画像の由来を教師データ(正解データ)として利用して、判別器52の学習処理を実行する。この学習処理には、確率的勾配降下法等が用いられてよい。
例えば、制御部11は、各第2データセット(生成器50の生成した各画像及び各ラベル62)を判別器52の入力層521に入力し、入力側から順に各層521〜523に含まれる各ニューロンの発火判定を行う。これにより、制御部11は、データセットに含まれる入力画像が生成器50由来か学習画像60由来かを判別した結果に対応する出力値を出力層523から取得する。この場面では、入力画像は生成器50の生成した各画像であるため、判別器52は、「偽」と判別するのが正解である。学習処理部114は、各第2データセットについて、出力層523から得られる出力値とこの正解との誤差を算出する。
同様に、制御部11は、各第3データセット(各パッチ画像61及び各ラベル62)を判別器52の入力層521に入力し、入力側から順に各層521〜523に含まれる各ニューロンの発火判定を行う。これにより、制御部11は、データセットに含まれる入力画像が生成器50由来か学習画像60由来かを判別した結果に対応する出力値を出力層523から取得する。この場面では、入力画像は各パッチ画像61であるため、判別器52は、「真」と判別するのが正解である。学習処理部114は、各第3データセットについて、出力層523から得られる出力値とこの正解との誤差を算出する。
そして、制御部11は、誤差逆伝播法(Back propagation)により、算出した出力値の誤差を用いて、判別器52における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。制御部11は、算出した各誤差に基づいて、判別器52における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの値の更新を行う。制御部11は、各データセットについて、出力層523から得られる出力値と入力画像の由来の正解との誤差の和が閾値以下になるまで、この一連の処理によるパラメータの値の調節を繰り返す。閾値は、実施の形態に応じて適宜設定されてよい。これにより、制御部11は、各データセットについて、入力された入力画像が、生成器50により生成された画像であるか学習画像60から分割された各パッチ画像61であるかを適切に判別可能に訓練された判別器52を構築することができる。この判別器52の機械学習が完了すると、制御部11は、次のステップS402に処理を進める。
(ステップS402)
ステップS402では、制御部11は、生成器50の機械学習を実施することで、判別器52による判別が誤るような画像を生成するように生成器50を訓練する。ステップS402は、本発明の「第2訓練ステップ」の一例である。
具体的に、制御部11は、所定の確率分布からノイズを抽出し、抽出したノイズと各ラベル62とを組み合わせて、複数のデータセットを生成する。各データセットは、上記第1データセットと同じでもよいし、異なっていてもよい。続いて、制御部11は、各データセット(各ラベル62及びノイズ)を生成器50の入力層501に入力し、入力側から順に各層501〜503に含まれる各ニューロンの発火判定を行う。これにより、制御部11は、各ラベル62から画像を生成した結果に対応する出力を出力層503から取得する。
次に、制御部11は、各データセットを入力データ(訓練データ)として利用し、判別器52に判別を誤らせることを教師データ(正解データ)として利用して、生成器50の学習処理を実行する。ステップS401と同様に、この学習処理には、確率的勾配降下法等が用いられてよい。
例えば、制御部11は、生成された各画像及び対応する各ラベル62の組み合わせを判別器52の入力層521に入力し、入力側から順に各層521〜523に含まれる各ニューロンの発火判定を行う。これにより、制御部11は、入力画像が生成器50由来か学習画像60由来かを判別した結果に対応する出力値を出力層523から取得する。この生成器50の訓練では、判別器52による判別の結果が誤らせることが正解である。つまり、出力層523から得られる出力値が「真」に対応することが正解である。制御部11は、各データセットについて、一連の処理により出力層523から得られる出力値とこの正解(つまり、「真」)との誤差を算出する。
そして、制御部11は、誤差逆伝播法により、算出した出力値の誤差を用いて、生成器50における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。制御部11は、算出した各誤差に基づいて、生成器50における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの値の更新を行う。制御部11は、各データセットについて、一連の処理により出力層523から得られる出力値と「真」との誤差の和が閾値以下になるまで、この一連の処理によるパラメータの値の調節を繰り返す。閾値は、実施の形態に応じて適宜設定されてよい。これにより、制御部11は、各データセットについて、判別器52による判別が誤るような画像を各ラベル62から生成可能に訓練された生成器50を構築することができる。この生成器50の機械学習が完了すると、制御部11は、次のステップS403に処理を進める。
(ステップS403)
ステップS403では、制御部11は、ステップS401及びS402の機械学習の処理を繰り返すか否かを判定する。機械学習の処理を繰り返す基準は、実施の形態に応じて適宜決定されてよい。例えば、ステップS401及びS402の機械学習を実施する回数が設定されていてもよい。この場合、制御部11は、ステップS401及びS402の機械学習を実施した回数が設定回数に到達したか否かを判定する。ステップS401及びS402の実行回数が設定回数に到達していないと判定した場合には、制御部11は、ステップS401に処理を戻す。一方、ステップS401及びS402の実行回数が設定回数に到達したと判定した場合には、制御部11は、本実施形態に係る機械学習の処理を終了し、次のステップS105に処理を進める。
このように、制御部11は、ステップS401及びS401の処理を交互に実施することで、判別器52及び生成器50の精度を交互に高めていく。その結果、生成器50は、学習画像60から分割された各パッチ画像61に対応する画像を適切に生成する能力を習得することができる。
(ステップS105)
図11に戻り、ステップS105では、制御部11は、保存処理部115として動作し、構築された学習済みの生成器50に関する情報を所定の記憶領域に保存する。本実施形態では、制御部11は、ステップS104により構築された学習済みの生成器50の構成及びパラメータを示す情報を第1学習結果データ125として生成する。第1学習結果データ125は、判別器52の構成及びパラメータを示す情報を含んでもよいし、含んでいなくてもよい。そして、制御部11は、生成した第1学習結果データ125を所定の記憶領域に保存する。所定の記憶領域は、上記ラベル情報621の保存先と同様に、例えば、制御部11内のRAM、記憶部12、外部記憶装置(例えば、NAS等のデータサーバ)、記憶メディア又はこれらの組み合わせであってよい。これにより、制御部11は、本動作例に係る処理を終了する。
なお、学習済みの生成器50を構築した後、制御部11は、生成した第1学習結果データ125を任意のタイミングで画像生成装置2に転送してもよい。画像生成装置2は、学習装置1から転送を受け付けることで第1学習結果データ125を取得してもよいし、学習装置1又はデータサーバにアクセスすることで第1学習結果データ125を取得してもよい。第1学習結果データ125は、画像生成装置2に予め組み込まれてもよい。
また、制御部11は、上記ステップS101〜S105の処理を定期的に繰り返すことで、第1学習結果データ125を定期的に更新してもよい。この繰り返す際には、学習画像60の変更、修正、追加、削除等が適宜実行されてよい。そして、制御部11は、更新した第1学習結果データ125を機械学習の実行毎に画像生成装置2に転送することで、画像生成装置2の保持する第1学習結果データ125を定期的に更新してもよい。
[画像生成装置]
次に、図15を用いて、本実施形態に係る画像生成装置2の動作例について説明する。図15は、本実施形態に係る画像生成装置2の処理手順の一例を示す。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
(ステップS501)
ステップS501では、制御部21は、生成部211として動作し、学習装置1により構築された学習済みの生成器50を利用して、複数のラベル62それぞれから複数の画像67それぞれを生成する。
本実施形態では、制御部21は、第1学習結果データ125を参照して、学習済みの生成器50の設定を行う。制御部21は、ラベル情報621を参照して、各パッチ画像61に付与したラベル62を特定する。続いて、制御部21は、所定の確率分布からノイズ(潜在変数)を取得する。所定の確率分布は、上記と同様に、例えば、ガウス分布、一様分布等であってよい。制御部21は、取得ノイズ及び各ラベル62を生成器50の入力層501に入力して、入力側から順に各層501〜503に含まれる各ニューロンの発火判定を行う。これにより、出力層503からの出力として、各ラベル62から生成された各画像67を取得する。各ラベル62に対して各画像67を生成すると、制御部21は、次のステップS502に処理を進める。
(ステップS502)
ステップS502では、制御部21は、結合部212として動作し、ラベル情報621を参照して、生成された各画像67を、各ラベル62に応じた位置に配置する。その後、制御部21は、各ラベル62に応じた位置に配置した各画像67を結合する。これにより、制御部21は、結合画像69を生成する。結合画像69は、学習画像60に対応する。結合画像69の生成が完了すると、制御部21は、次のステップS503に処理を進める。
(ステップS503)
ステップS503では、制御部21は、画像保存部213として動作し、生成された結合画像69を所定の記憶領域に保存する。所定の記憶領域は、例えば、制御部21内のRAM、記憶部22、外部記憶装置(例えば、NAS等のデータサーバ)、記憶メディア又はこれらの組み合わせであってよい。これにより、制御部21は、本動作例に係る処理を終了する。
なお、制御部21は、上記ステップS502及びS502を繰り返し実行することで、複数の結合画像69を生成してもよい。生成する結合画像69の数は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。また、制御部21は、生成した結合画像69をサンプル画像3221として利用させるために、生成した結合画像69を推定器生成装置3に転送してもよい。
[推定器生成装置]
次に、図16を用いて、本実施形態に係る推定器生成装置3の動作例について説明する。図16は、本実施形態に係る推定器生成装置3の処理手順の一例を例示するフローチャートである。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
(ステップS701)
ステップS701では、制御部31は、学習データ取得部311として動作し、製品を写したサンプル画像3221、及び正解データ3222の組み合わせによりそれぞれ構成された複数の学習データセット322を取得する。正解データ3222は、対応するサンプル画像3221に写る製品Rの良否を判定した結果(すなわち、正解)を示す。
学習データセット322を取得する方法は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。例えば、カメラ及び製品Rを用意し、欠陥のある又は欠陥のない製品Rをカメラにより撮影する。これにより、サンプル画像3221を生成することができる。そして、サンプル画像3221に写る製品Rの良否を示す正解データ3222を適宜生成し、生成した正解データ3222を対応するサンプル画像3221に関連付ける。これにより、各学習データセット322を生成することができる。
この学習データセット322の生成は、コンピュータの動作により自動的に行われてもよいし、オペレータの操作により手動的に行われてもよい。また、この学習データセット322を生成する情報処理は、推定器生成装置3において実行されてもよいし、推定器生成装置3以外の他のコンピュータにより行われてもよい。
学習データセット322を推定器生成装置3が生成する場合、制御部31は、自動的又はオペレータの操作により手動的に上記情報処理を実行することで、複数の学習データセット322を取得する。一方、学習データセット322を他のコンピュータが生成する場合、制御部31は、例えば、ネットワーク、記憶媒体93等を介して、他のコンピュータにより生成された複数の学習データセット322を取得する。一部の学習データセット322を推定器生成装置3が生成し、残りの学習データセット322を他のコンピュータが生成してもよい。
ここで、取得される学習データセット322の少なくとも一部に含まれるサンプル画像3221は、画像生成装置2により生成された結合画像69であってよい。制御部31は、ネットワーク、記憶媒体93等を介して、画像生成装置2により生成された結合画像69をサンプル画像3221として取得してもよい。この結合画像69(サンプル画像3221)を含む学習データセット322の生成は、画像生成装置2により行われてもよい。つまり、画像生成装置2は、上記他のコンピュータの一例である。
なお、正解データ3222のデータ形式は、推定器70の出力形式に応じて適宜決定されてよい。例えば、正解データ3222は、製品Rの良否を2値で示すように設定されてよい。また、例えば、正解データ3222は、製品Rが良品である(すなわち、欠陥が無い)確率又は製品Rに欠陥が存在する確率を連続値で示すように設定されてもよい。また、例えば、正解データ3222は、製品Rの良否又は欠陥の種別のインデックス(クラス)を示すように設定されてもよい。また、例えば、正解データ3222は、欠陥のある箇所等を示すように設定されてもよい。
取得する学習データセット322の件数は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。複数の学習データセット322を取得すると、制御部31は、次のステップS702に処理を進める。
(ステップS702)
ステップS702では、制御部31は、学習処理部312として動作し、複数の学習データセット322を利用して、推定器70の機械学習を実施する。この機械学習では、制御部31は、各学習データセット322について、サンプル画像3221を入力層701に入力すると、正解データ3222と一致する出力値を出力層703から出力するように推定器70を訓練する。これにより、制御部31は、製品Rの良否を判定する能力を習得した学習済みの推定器70を構築する。
この機械学習は、上記学習装置1による機械学習と同様に実行されてよい。すなわち、制御部31は、処理対象となる推定器70を用意する。用意する推定器70の構成、各ニューロン間の結合の重みの初期値、及び各ニューロンの閾値の初期値は、テンプレートにより与えられてもよいし、オペレータの入力により与えられてもよい。また、再学習を行う場合には、制御部31は、過去の機械学習を行うことで得られた学習結果データに基づいて、推定器70を用意してもよい。
次に、制御部31は、ステップS701で取得した各学習データセット322に含まれるサンプル画像3221を入力データ(訓練データ)として利用し、対応する正解データ3222を教師データとして利用して、推定器70の学習処理を実行する。この学習処理には、確率的勾配降下法等が用いられてよい。
例えば、第1のステップでは、制御部31は、各学習データセット322について、サンプル画像3221を入力層701に入力し、入力側から順に各層701〜703に含まれる各ニューロンの発火判定を行う。これにより、制御部31は、サンプル画像3221に写る製品Rの良否を判定した結果に対応する出力値を出力層703から取得する。第2のステップでは、制御部31は、取得した出力値と正解データ3222との誤差を算出する。第3のステップでは、制御部31は、誤差逆伝播法により、算出した出力値の誤差を用いて、推定器70における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。第4のステップでは、制御部31は、算出した各誤差に基づいて、推定器70における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの値の更新を行う。
制御部31は、上記第1〜第4のステップを繰り返すことで、各学習データセット322について、サンプル画像3221を入力すると、対応する正解データ3222と一致する出力値を出力するように、推定器70のパラメータの値を調節する。換言すると、制御部31は、各学習データセット322について、出力層703から得られる出力値と正解データ3222との誤差の和が閾値以下になるまで、上記第1〜第4のステップによる推定器70のパラメータの値の調節を繰り返す。閾値は、実施の形態に応じて適宜設定されてよい。これにより、制御部31は、各学習データセット322について、サンプル画像3221を入力層701に入力すると、正解データ3222と一致する出力値を出力層703から出力するように訓練された推定器70を構築することができる。この推定器70の機械学習が完了すると、制御部31は、次のステップS703に処理を進める。
(ステップS703)
ステップS703では、制御部31は、保存処理部313として動作し、構築された学習済みの推定器70に関する情報を所定の記憶領域に保存する。本実施形態では、制御部31は、ステップS702により構築された学習済みの推定器70の構成及びパラメータを示す情報を第2学習結果データ325として生成する。そして、制御部31は、生成した第2学習結果データ325を所定の記憶領域に保存する。所定の記憶領域は、例えば、制御部31内のRAM、記憶部32、外部記憶装置(例えば、NAS等のデータサーバ)、記憶メディア又はこれらの組み合わせであってよい。これにより、制御部31は、本動作例に係る処理を終了する。
なお、学習済みの推定器70を構築した後、制御部31は、生成した第2学習結果データ325を任意のタイミングで検査装置4に転送してもよい。検査装置4は、推定器生成装置3から転送を受け付けることで第2学習結果データ325を取得してもよいし、推定器生成装置3又はデータサーバにアクセスすることで第2学習結果データ325を取得してもよい。第2学習結果データ325は、検査装置4に予め組み込まれてもよい。
また、制御部31は、上記ステップS701〜703の処理を定期的に繰り返すことで、第2学習結果データ325を定期的に更新してもよい。この繰り返す際には、学習データセット322の変更、修正、追加、削除等が適宜実行されてよい。そして、制御部31は、更新した第2学習結果データ325を機械学習の実行毎に検査装置4に転送することで、検査装置4の保持する第2学習結果データ325を定期的に更新してもよい。
更に、制御部31は、評価用データセットを利用して、構築した推定器70の判定性能を評価してもよい。評価用データセットは、上記各学習データセット322と同様に構成可能である。すなわち、評価用データセットは、製品Rの写るサンプル画像、及びサンプル画像に写る製品Rの良否を示す正解データの組み合わせにより構成されてよい。制御部31は、後述するステップS902のとおり、推定器70を利用して、評価用データセットのサンプル画像に写る製品Rの良否を判定する。制御部31は、この判定結果と正解データにより示される正解とを照合することで、推定器70の判定性能を評価することができる。
この推定器70の判定性能が所定の基準以下である(例えば、正答率が閾値以下である)場合には、制御部31は、複数の学習データセット322から選択した1又は複数の学習データセット322に含まれる各サンプル画像3221を学習装置1に送信してもよい。次に、制御部31は、送信した各サンプル画像3221に対応する画像を生成するための生成器50を学習装置1に構築させてよい。更に、制御部31は、学習装置1に学習済みの生成器50を画像生成装置2に転送させ、学習済みの生成器50を利用して結合画像69を生成する処理を画像生成装置2に実行させてよい。
これに応じて、画像生成装置2により生成された1又は複数の結合画像69をサンプル画像3221として受信してもよい。そして、制御部31は、受信した結合画像69(サンプル画像3221)を含む学習データセット322を生成し、生成した学習データセット322を元の学習データ群に追加してもよい。これにより、制御部31は、機械学習に利用する学習データセット322の件数を増やすことができる。制御部31は、この新たな学習データ群を利用して、推定器70の機械学習を再度実施してもよい。この一連の再学習の処理により、構築された学習済みの推定器70の判定性能を高めることができる。
[検査装置]
次に、図17を用いて、本実施形態に係る検査装置4の動作例について説明する。図17は、本実施形態に係る検査装置4の処理手順の一例を例示するフローチャートである。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
(ステップS901)
ステップS901では、制御部41は、対象データ取得部411として動作し、外観検査の対象となる製品Rの写る対象画像422を取得する。本実施形態では、検査装置4は、外部インタフェース47を介してカメラCAに接続している。そのため、制御部41は、カメラCAから対象画像422を取得する。この対象画像422は、動画像データであってもよいし、静止画像データであってもよい。対象画像422を取得すると、制御部41は、次のステップ902に処理を進める。
ただし、対象画像422を取得する経路は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、検査装置4とは異なる他の情報処理装置が、カメラCAに接続されていてもよい。この場合、制御部41は、他の情報処理装置を介して対象画像422を取得してもよい。
(ステップS902)
ステップS902では、制御部41は、良否判定部412として動作し、学習済みの推定器70を利用して、対象画像422に写る製品Rの良否を判定する。
具体的には、制御部41は、第2学習結果データ325を参照して、学習済みの推定器70の設定を行う。次に、制御部41は、取得した対象画像422を推定器70の入力層701に入力し、入力側から順に各層701〜703に含まれる各ニューロンの発火判定を行う。これにより、制御部41は、対象画像422に写る製品Rの良否を判定した結果に対応する出力値を推定器70の出力層703から取得する。
これにより、制御部41は、推定器70の出力層703から取得した出力値に基づいて、対象画像422に写る製品Rの良否を判定する。なお、良否の判定は、推定器70の出力形式に応じて適宜行われてよい。例えば、推定器70から得られる出力値が製品Rの良否を2値で示す場合、制御部41は、推定器70から得られる出力値に応じて、製品Rの良否を特定することができる。また、例えば、推定器70から得られる出力値が、製品Rが良品である確率又は製品Rに欠陥がある確率を連続値で示す場合、制御部41は、推定器70から得られる出力値と閾値とを比較することで、製品Rの良否を判定することができる。また、例えば、推定器70から得られる出力値が欠陥のある箇所を示す場合、制御部41は、推定器70から得られる出力値に基づいて、対象画像422に写る製品Rの良否を判定することができると共に、欠陥が存在する場合にはその欠陥の箇所を特定することができる。
また、例えば、推定器70から得られる出力値が、製品Rの良否又は欠陥の種別のインデックスを示す場合、検査装置4は、推定器70から得られる出力値と製品Rの良否又は欠陥の種別とを対応付けたテーブル形式等の参照情報(不図示)を記憶部42に保持していてもよい。この場合、制御部41は、この参照情報を参照することにより、推定器70から得られた出力値に応じて、対象画像422に写る製品Rの良否を判定することができる。
以上により、制御部41は、推定器70を利用して、対象画像422に写る製品Rの良否を判定することができる。製品Rの良否の判定が完了すると、制御部41は、次のステップS903に処理を進める。
(ステップS903)
ステップS903では、制御部41は、出力部413として動作し、ステップS902により製品Rの良否を判定した結果を出力する。
製品Rの良否を判定した結果の出力形式は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、制御部41は、製品Rの良否を判定した結果をそのまま出力装置45に出力してもよい。また、ステップS902において、製品Rに欠陥があると判定した場合、制御部41は、欠陥を発見したことを知らせるための警告を本ステップS903の出力処理として行ってもよい。また、制御部41は、本ステップS903の出力処理として、製品Rの良否を判定した結果に応じた所定の制御処理を実行してもよい。具体例として、製品の搬送を行う製造ラインに検査装置4が接続されている場合、製品Rに欠陥があると判定したときに、制御部41は、欠陥のある製品Rを欠陥のない製品とは異なる経路で搬送する指令を製造ラインに送信する処理を本ステップS903の出力処理として行ってもよい。
製品Rの良否を判定した結果の出力処理が完了すると、制御部41は、本動作例に係る処理を終了する。なお、制御部41は、製造ライン上を搬送される製品RがカメラCAの撮影範囲に入る度に、ステップS901〜S903の一連の処理を実行してもよい。これにより、検査装置4は、製造ライン上を搬送される製品Rの外観検査を行うことができる。
[特徴]
以上のとおり、本実施形態に係る学習装置1は、ステップS102により学習画像60を複数のパッチ画像61に分割し、ステップS104により各パッチ画像61に対応する画像を生成するように訓練された生成器50を構築する。これにより、フルサイズの学習画像60に対応する画像を直接的に生成する能力を生成器50に習得させるのではなく、各パッチ画像61に対応する画像の生成を介して学習画像60に対応するフルサイズの画像を間接的に生成する能力を生成器50に習得させる。そのため、本実施形態では、生成器50に学習させる画像のサイズを抑えることができるため、生成器50の構成を単純化することができる。したがって、本実施形態によれば、ステップS104において機械学習により生成器50を構築するのにかかる計算コストを低減することができる。これによって、ステップS104を処理するのにかかるメモリの量を抑えたり、ステップS104の計算時間を短くしたりすることができる。
また、本実施形態に係る画像生成装置2は、学習装置1により構築された生成器50を利用することで、ステップS501及びS502により製品Rの写り得る画像(結合画像69)を量産するのにかかる計算コストを抑えることができる。加えて、本実施形態では、画像生成装置2により量産された結合画像69をサンプル画像として利用することができる。これにより、推定器生成装置3において、機械学習に利用する学習データセット322を収集するコストを低減することができる。更に、本実施形態では、画像生成装置2により量産された結合画像69をサンプル画像3221として利用することで、推定器70の機械学習に利用するサンプル画像3221の件数を増やすことができる。これにより、本実施形態に係る検査装置4において、ステップS902により製品Rの良否を判定する精度を高めることができる。
また、本実施形態に係る学習装置1は、ステップS201〜S203の処理により、学習画像60の複雑度に応じてパッチサイズを決定する。学習画像60の複雑度が高いとは、学習画像60内の各画素値が変化に富んでいる状態である。この場合に、パッチ画像61のサイズを大きくすると、パッチ画像61に対応する画像を生成するために学習するパッチ画像61内の変化の量が多くなってしまうことから、生成器50の構成が複雑化し得る。一方、学習画像60の複雑度が低い場合に、パッチ画像61のサイズを小さくすると、無駄な処理が増えてしまう。そこで、本実施形態に係る学習装置1は、上記ステップS202において、学習画像60の複雑度が高い場合には、各パッチ画像61のパッチサイズを小さくなるように設定し、学習画像60の複雑度が低い場合には、各パッチ画像61のパッチサイズを大きくなるように設定する。これにより、生成に適したパッチサイズを有する各パッチ画像61に学習画像60を分割することができる。したがって、本実施形態によれば、機械学習により生成器50を構築するのにかかる計算コストを低減しつつ、その機械学習によって、学習画像60に対応する適切な画像を生成可能な学習済みの生成器50を構築することができる。
また、本実施形態に係る学習装置1は、ステップS301〜S305の処理により、互いに類似する2つ以上のパッチ画像61を同一のラベル62を付与するように統合する。これにより、学習するラベル62の種類数を低減することができ、これによって、生成器50の構成を更に単純化することができる。したがって、本実施形態によれば、ステップS104において機械学習により生成器50を構築するのにかかる計算コストを更に低減することができる。
§4 変形例
以上、本発明の実施の形態を詳細に説明してきたが、前述までの説明はあらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。例えば、以下のような変更が可能である。なお、以下では、上記実施形態と同様の構成要素に関しては同様の符号を用い、上記実施形態と同様の点については、適宜説明を省略した。以下の変形例は適宜組み合わせ可能である。
<4.1>
上記実施形態では、生成器50及び推定器70にはいわゆる多層構造の全結合ニューラルネットワークが用いられている。しかしながら、生成器50及び推定器70それぞれを構成するニューラルネットワークの構造及び種類は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、生成器50及び推定器70それぞれには畳み込みニューラルネットワークが利用されてよい。
また、上記実施形態では、生成器50及び推定器70を構成する学習モデルとしてニューラルネットワークが用いられている。しかしながら、生成器50及び推定器70それぞれを構成する学習モデルは、画像の機械学習を実施可能であれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。
<4.2>
上記実施形態では、第1学習結果データ125は、生成器50の構成を示す情報を含んでいる。同様に、第2学習結果データ325は、推定器70の構成を示す情報を含んでいる。しかしながら、各学習結果データ(125、325)の構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。例えば、利用するニューラルネットワークの構成が各装置で共通化されている場合、各学習結果データ(125、325)は、ニューラルネットワークの構成を示す情報を含んでいなくてもよい。
<4.3>
上記実施形態に係る各情報処理(図11〜図17)について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。例えば、上記実施形態に係る学習装置1は、ステップS201〜S203の処理に代えて、設定値で指定されたパッチサイズで学習画像60を分割してもよい。また、例えば、上記実施形態に係る学習装置1は、ステップS301〜S305の処理に代えて、各パッチ画像61に異なるラベル62を付与してもよい。
<4.4>
上記実施形態に係る学習ネットワーク500では、生成器50は、判別器52に接続されている。これにより、上記実施形態に係る学習装置1は、判別器52の第1訓練ステップと生成器50の第2訓練ステップとを交互に実施することで、各パッチ画像61に対応する画像を適切に生成する能力を習得した生成器50を構築している。しかしながら、学習ネットワーク500の構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。また、このような学習ネットワーク500を構成するのではなく、生成器50は、単独で訓練されてもよい。
図18は、本変形例に係る学習装置1Aのソフトウェア構成の一例を模式的に例示する。上記実施形態に係る学習ネットワーク500が学習ネットワーク500Aに置き換わる点を除き、本変形例に係る学習装置1Aのハードウェア構成及びソフトウェア構成は、上記実施形態に係る学習装置1と同じであってよい。
本変形例に係る学習ネットワーク500Aは、生成器50A及びエンコーダ54を含んでいる。生成器50Aは、エンコーダ54に接続されている。具体的には、エンコーダ54の出力が生成器50Aの入力に接続されている。エンコーダ54は、与えられた画像(パッチ画像61及びラベル62)から特徴量(潜在変数)を導出するように構成される。これに対して、生成器50Aは、デコーダとしての役割を果たす。つまり、生成器50Aは、導出された特徴量から画像を復元するように構成される。このような生成器50A及びエンコーダ54は、上記実施形態と同様に、いわゆる多層構造の全結合ニューラルネットワークにより構成されてよい。
本変形例に係る学習装置1Aは、上記実施形態に係る学習装置1と同様に動作してもよい。すなわち、ステップS101では、学習装置1Aの制御部は、学習画像60を取得する。ステップS102では、制御部は、学習画像60を複数のパッチ画像61に分割する。ステップS103では、制御部は、各パッチ画像61にラベル62を付与する。ステップS101〜S103は、上記実施形態と同様に処理されてよい。そして、ステップS104では、制御部は、学習処理部114Aとして動作し、機械学習を行うことで、各パッチ画像61をエンコーダ54に入力することでエンコーダ54から得られる出力値及び各パッチ画像61に関連付けられたラベル62から、各パッチ画像61に対応する画像を生成するように生成器50Aを訓練する。
具体的に、制御部は、互いに対応するパッチ画像61及びラベル62の組み合わせで構成されたデータセットを入力データ(訓練データ)として利用し、事前分布を教師データ(正解データ)として利用して、エンコーダ54の学習処理を実行する。また、制御部は、互いに対応するパッチ画像61及びラベル62の組み合わせで構成されたデータセットを入力データ(訓練データ)として利用し、対応するパッチ画像61を教師データ(正解データ)として利用して、エンコーダ54及び生成器50Aの学習処理を実行する。
例えば、制御部は、互いに対応するパッチ画像61及びラベル62の組み合わせで構成されたデータセットをエンコーダ54に入力し、エンコーダ54の演算処理を実行する。これにより、制御部は、何らかの特徴量を導出した結果に対応する出力値をエンコーダ54から取得する。制御部は、この出力値と事前分布との第1誤差を算出する。事前分布は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。事前分布は、例えば、ガウス分布等であってよい。制御部は、この第1誤差の和が小さくなるように、エンコーダ54のパラメータの値を調節する。
また、制御部は、エンコーダ54から得られた出力値及び対応するラベル62を生成器50Aに入力し、生成器50Aの演算処理を実行する。これにより、制御部は、各ラベル62から画像を生成した結果に対応する出力を生成器50Aから取得する。制御部は、生成された各画像と対応するパッチ画像61との第2誤差を算出する。制御部は、この第2誤差の和が小さくなるように、生成器50A及びエンコーダ54のパラメータの値を調節する。
上記実施形態と同様に、各パラメータの値の調節には、誤差逆伝播法が用いられてよい。各誤差の和が閾値以下になるまで、制御部は、上記一連の処理による各パラメータの値の調節を繰り返す。これにより、制御部は、各パッチ画像61をエンコーダ54に入力することでエンコーダ54から得られる出力値及び対応するラベル62から、各パッチ画像61に対応する画像を生成するように訓練された生成器50Aを構築することができる。
ステップS105では、制御部は、ステップS104により構築された学習済みの生成器50Aの構成及びパラメータを示す情報を第1学習結果データ125Aとして生成する。第1学習結果データ125Aは、エンコーダ54の構成及びパラメータを示す情報を含んでもよいし、含んでいなくてもよい。そして、制御部は、生成した第1学習結果データ125Aを所定の記憶領域に保存する。所定の記憶領域は、例えば、制御部内のRAM、記憶部、外部記憶装置(例えば、NAS等のデータサーバ)、記憶メディア又はこれらの組み合わせであってよい。これにより、本変形例に係る学習装置1Aは、各パッチ画像61に対応する画像を生成するための生成器50Aを構築することができる。なお、構築された生成器50Aは、上記実施形態に係る生成器50と同様に利用可能である。上記実施形態に係る画像生成装置2は、この生成器50Aを利用して、結合画像69を生成してもよい。
<4.5>
上記実施形態では、画像に写る製品Rの外観検査を実施する場面に本発明を適用した例を示している。しかしながら、本発明の適用範囲は、このような外観検査の例に限られる訳ではない。本発明は、画像に写る対象物の何らかの特徴を推定するあらゆる場面に適用可能である。製品Rの写る画像から対象物の写る画像に検査システム100で取り扱う画像を変更することで、対象物の写る画像から何らかの特徴を推定する推定システムを構成することができる。
図19は、本変形例に係る推定システム100Bの適用場面の一例を模式的に例示する。図19に示されるとおり、本変形例に係る推定システム100Bは、ネットワークを介して接続される学習装置1B、画像生成装置2B、推定器生成装置3B、及び推定装置4Bを備えている。製品Rの写る画像から対象物の写る画像に取り扱う画像を変更する点を除き、各装置1B〜4Bのハードウェア構成及びソフトウェア構成は、上記実施形態に係る各装置1〜4のハードウェア構成及びソフトウェア構成と同じであってよい。また、各装置1B〜4Bは、上記実施形態に係る各装置1〜4と同様に動作してよい。
すなわち、本変形例に係る学習装置1Bは、対象物RBを写した学習画像60Bを取得し、取得した学習画像60Bを複数のパッチ画像61Bに分割する。次に、学習装置1Bは、学習画像60B内における各パッチ画像61Bの位置に応じて、複数のラベル62Bのうちのいずれかのラベル62Bを各パッチ画像61Bに関連付ける。そして、学習装置1Bは、機械学習を行うことで、各パッチ画像61Bに関連付けられたラベル62Bから各パッチ画像61Bに対応する画像を生成するように訓練された生成器50Bを構築する。
これに対して、画像生成装置2Bは、学習装置1Bにより構築された学習済みの生成器50Bを利用して、複数のラベル62Bそれぞれから複数の画像67Bそれぞれを生成する。そして、画像生成装置2Bは、生成された複数の画像67Bそれぞれを、複数のラベル62Bそれぞれに応じた位置に配置した後に結合することで、結合画像69Bを生成する。生成される結合画像69Bは、対象物RBの写り得る画像であって、上記学習画像60Bに対応する画像である。
また、推定器生成装置3Bは、対象物RBを写したサンプル画像3221B及び正解データ3222Bの組み合わせによりそれぞれ構成された複数の学習データセット322Bを取得する。正解データ3222Bは、サンプル画像3221Bに写る対象物RBの特徴を特定した結果(すなわち、正解)を示す。そして、推定器生成装置3Bは、複数の学習データセット322Bを利用した機械学習を実施することで、与えられた画像に写る対象物RBの特徴を推定する能力を習得した学習済みの推定器70Bを構築する。これに応じて、推定器生成装置3Bは、学習済みの推定器70Bの構成及びパラメータを示す情報を学習結果データ325Bとして生成する。なお、推定器生成装置3Bは、画像生成装置2Bにより生成された結合画像69Bをサンプル画像3221Bとして利用することができる。
図20は、本変形例に係る推定装置4Bのソフトウェア構成の一例を模式的に例示する。本変形例に係る推定装置4Bは、対象物RBの写る対象画像422Bを取得する。本変形例では、推定装置4BにはカメラCAが接続されている。推定装置4Bは、このカメラCAにより対象物RBを撮影することで対象画像422Bを取得する。次に、推定装置4Bの制御部は、推定部412Bとして動作し、学習結果データ325Bを参照して、学習済みの推定器70Bの設定を行う。続いて、推定装置4Bは、取得した対象画像422Bを学習済みの推定器70Bに入力し、学習済みの推定器70Bの演算処理を実行する。これにより、推定装置4Bは、対象物RBの特徴を推定した結果に対応する出力値を学習済みの推定器70Bから取得する。そして、推定装置4Bは、学習済みの推定器70Bから得られた出力値に基づいて対象物RBの特徴を推定した結果に関する情報を出力する。これにより、本変形例に係る推定システム100Bは、対象物RBの写る画像から何らかの特徴を推定するように構成される。
なお、対象物RBは、何らかの属性を識別する対象となり得るものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。対象物RBは、例えば、上記外観検査の対象となる製品、人物、人物の身体部位(例えば、顔等)、文字、車両における車外の状況等であってよい。推定する対象となる特徴は、特に限定されなくてもよく、対象物RBに応じて適宜選択されてよい。対象物RBが人物の顔である場合、推定する対象となる特徴は、例えば、表情の種別、顔のパーツの状態、その顔の人物の属性等であってよい。対象物RBが文字である場合、推定する対象となる特徴は、印字の鮮明度、歪み、文字列のずれ等の属性であってよい。対象物RBが車外の状況である場合、推定する対象となる特徴は、例えば、車線の状態、渋滞具合等の道路状況の属性であってよい。