(57)【要約】【課題】対象物の範囲を検出する能力を習得させるための機械学習に利用する学習データを用意するのにかかるコストを低減する。【解決手段】本発明の一側面に係る学習装置は、対象物を写した学習画像、対象物の種別を示すラベル、及び対象物の範囲を示す境界情報の組み合わせによりそれぞれ構成された複数の学習データセットを取得し、第１の機械学習を行うことで、各ラベルの入力に対して、学習画像に対応する画像を生成するように訓練された生成器を構築し、第２の機械学習を行うことで、各学習画像の入力に対して、ラベル及び境界情報と一致するように、学習画像に写る対象物の種別及び範囲を推定するように訓練された推定器を構築する。【選択図】図１
2020060879.tif 000002
【特許請求の範囲】
【請求項１】
外観検査の対象となる製品を写した学習画像、前記製品に含まれる欠陥の種別を示すラベル、及び前記欠陥の範囲を示す境界情報の組み合わせによりそれぞれ構成された複数の学習データセットを取得するデータ取得部と、
第１の機械学習を行うことで、前記各件の学習データセットに含まれる前記ラベルの入力に対して、入力された前記ラベルに関連付けられた前記学習画像に対応する画像を生成するように訓練された生成器を構築する第１学習処理部と、
第２の機械学習を行うことで、前記各件の学習データセットに含まれる前記学習画像の入力に対して、入力された前記学習画像に関連付けられた前記ラベル及び前記境界情報と一致するように、入力された前記学習画像に写る前記製品に含まれる前記欠陥の種別及び範囲を推定するように訓練された推定器を構築する第２学習処理部と、
を備える、
学習装置。
【請求項２】
前記生成器の入力は、エンコーダの出力に接続され、
前記生成器の出力は、前記推定器の入力及び判別器の入力に接続され、
前記第１の機械学習を行うことは、
前記判別器に入力された入力画像が、前記生成器により生成された前記画像であるか前記複数の学習データセットから得られた前記学習画像であるかを判別するように前記判別器を訓練する第１訓練ステップと、
前記生成器により生成される前記画像が、前記判別器による前記判別を誤らせるようなものとなるように、前記生成器を訓練する第２訓練ステップと、
前記生成器により生成される前記画像が、前記推定器により前記画像に写る製品に含まれる欠陥の種別を推定した結果が前記ラベルと一致するようなものとなるように、前記生成器を訓練する第３訓練ステップと、
前記ラベル及び潜在変数を前記生成器に入力することで前記生成器により生成された前記画像が、前記学習画像を復元したものとなるように、前記エンコーダ及び前記生成器を訓練する第４訓練ステップであって、前記潜在変数は、前記ラベル及び前記学習画像を前記エンコーダに入力することで前記エンコーダから得られる出力に基づいて導出される、第４訓練ステップと、
前記エンコーダから得られる出力に基づいて導出される前記潜在変数の分布が所定の事前分布に従うように前記エンコーダを訓練する第５訓練ステップと、
を含む、
請求項１に記載の学習装置。
【請求項３】
前記生成器の出力は、判別器の入力に接続され、
前記第１の機械学習を行うことは、
前記判別器に入力された入力画像が、前記生成器により生成された前記画像であるか前記複数の学習データセットから得られた前記学習画像であるかを判別するように、前記判別器を訓練する第１訓練ステップと、
前記生成器により生成される前記画像が、前記判別器による前記判別を誤らせるようなものとなるように、前記生成器を訓練する第２訓練ステップと、
を交互に行うことを含む、
請求項１に記載の学習装置。
【請求項４】
前記欠陥の範囲は、バウンディングボックスにより表される、
請求項１から３のいずれか１項に記載の学習装置。
【請求項５】
請求項１から４のいずれか１項に記載の学習装置により構築された前記生成器に、前記欠陥の種別を示す入力値を与えることで、前記欠陥を含む前記製品を写した生成画像を生成する生成部と、
前記学習装置により構築された前記推定器に生成された前記生成画像を与えることで、前記生成画像に写る前記製品に含まれる前記欠陥の種別及び範囲を推定する推定部と、
前記生成画像に写る前記製品に含まれる前記欠陥の種別を推定した結果が前記入力値により示される前記欠陥の種別と一致するか否かを判定する判定部と、
前記欠陥の種別を推定した結果が前記入力値により示される前記欠陥の種別と一致すると前記判定部が判定した場合に、生成した前記生成画像と前記欠陥の範囲を推定した結果とを関連付けて所定の記憶領域に格納する画像保存部と、
を備える、
画像生成装置。
【請求項６】
コンピュータが、
外観検査の対象となる製品を写した学習画像、前記製品に含まれる欠陥の種別を示すラベル、及び前記欠陥の範囲を示す境界情報の組み合わせによりそれぞれ構成された複数の学習データセットを取得するステップと、
第１の機械学習を行うことで、前記各件の学習データセットに含まれる前記ラベルの入力に対して、入力された前記ラベルに関連付けられた前記学習画像に対応する画像を生成するように訓練された生成器を構築するステップと、
第２の機械学習を行うことで、前記各件の学習データセットに含まれる前記学習画像の入力に対して、入力された前記学習画像に関連付けられた前記ラベル及び前記境界情報と一致するように、入力された前記学習画像に写る前記製品に含まれる前記欠陥の種別及び範囲を推定するように訓練された推定器を構築するステップと、
を実行する、
学習方法。
【請求項７】
コンピュータに、
外観検査の対象となる製品を写した学習画像、前記製品に含まれる欠陥の種別を示すラベル、及び前記欠陥の範囲を示す境界情報の組み合わせによりそれぞれ構成された複数の学習データセットを取得するステップと、
第１の機械学習を行うことで、前記各件の学習データセットに含まれる前記ラベルの入力に対して、入力された前記ラベルに関連付けられた前記学習画像に対応する画像を生成するように訓練された生成器を構築するステップと、
第２の機械学習を行うことで、前記各件の学習データセットに含まれる前記学習画像の入力に対して、入力された前記学習画像に関連付けられた前記ラベル及び前記境界情報と一致するように、入力された前記学習画像に写る前記製品に含まれる前記欠陥の種別及び範囲を推定するように訓練された推定器を構築するステップと、
を実行させるための、
学習プログラム。
【請求項８】
対象物を写した学習画像、前記対象物の種別を示すラベル、及び前記学習画像内における前記対象物の範囲を示す境界情報の組み合わせによりそれぞれ構成された複数の学習データセットを取得するデータ取得部と、
第１の機械学習を行うことで、前記各件の学習データセットに含まれる前記ラベルの入力に対して、入力された前記ラベルに関連付けられた前記学習画像に対応する画像を生成するように訓練された生成器を構築する第１学習処理部と、
第２の機械学習を行うことで、前記各件の学習データセットに含まれる前記学習画像の入力に対して、入力された前記学習画像に関連付けられた前記ラベル及び前記境界情報と一致するように、入力された前記学習画像に写る前記対象物の種別及び範囲を推定するように訓練された推定器を構築する第２学習処理部と、
を備える、
学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習装置、画像生成装置、学習方法、及び学習プログラムに関する。
【背景技術】
【０００２】
従来、製造ライン等の製品を製造する場面では、製造される製品を撮影装置により撮影し、得られた画像データに基づいて製品の良否を検査する技術が利用されている。例えば、特許文献１では、学習済みの第１のニューラルネットワークに基づいて画像に写る検査対象物が正常であるか異常であるかを判定し、検査対象物が異常であると判定した場合に、学習済みの第２のニューラルネットワークに基づいて当該異常の種類を分類する検査装置が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−０２６９８２号公報
【非特許文献】
【０００４】
【非特許文献１】Jianmin Bao, Dong Chen, Fang Wen, Houqiang Li, Gang Hua, "CVAE-GAN: Fine-Grained Image Generation through Asymmetric Training", 2017 IEEE International Conference on Computer Vision, 2764-2773, 2017
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本件発明者らは、特許文献１のようなニューラルネットワーク等の学習モデルにより構成される識別器を利用して、画像データから製品の良否を判定する従来の技術には、次のような問題が生じ得ることを見出した。すなわち、製品の良否を判定する能力を学習モデルに習得させるための機械学習を行う場合、訓練データとしてサンプル画像を用意することになる。このサンプル画像の件数が少ないと、学習済みの学習モデル（識別器）による良否の判定の精度が不十分になってしまう。一方で、識別器による判定の精度を高めるために、十分な件数のサンプル画像を用意するにはコストがかかってしまう。
【０００６】
そこで、本件発明者らは、生成器（生成モデル）を利用して、用意した画像から異なる複数の画像を量産し、量産した複数の画像を機械学習の訓練データとして利用することを検討した。例えば、非特許文献１には、機械学習により、用意した学習画像及びクラスから生成器（生成モデル）を構築する方法が提案されている。この生成器は、機械学習により、指定されたクラスの学習画像に対応する画像を生成するように訓練される。したがって、製品を写した画像を学習画像として利用し、製品に含まれる欠陥をクラスにより指定すれば、生成器は、指定された欠陥を含む製品の写り得る画像を生成するように訓練される。この訓練された生成器を利用すれば、指定したクラスの欠陥を含む製品の写る画像を自動的に生成することができるようになる。つまり、製品に含まれる欠陥を識別する能力を学習モデルに習得させるための機械学習に利用可能なサンプル画像を自動的に生成することができるようになる。そのため、サンプル画像を用意するコストを低減することができる。そして、自動的に生成したサンプル画像を機械学習に利用することにより、機械学習に利用するサンプル画像の件数を増やすことができ、これによって、製品の良否を判定する能力の高い学習済みの学習モデルを構築することができるようになる。
【０００７】
しかしながら、本件発明者らは、この生成器を利用する場面において、次のような問題点が生じ得ることを見出した。すなわち、製品に含まれる欠陥を識別すると共に、その欠陥の範囲を検出するように学習モデルを訓練する場合、欠陥の種別を示すラベルの他に、サンプル画像内における欠陥の範囲を示す境界情報（例えば、バウンディングボックスのグラウンドトゥルース）が教師データとして用意される。従来、この欠陥の範囲は、サンプル画像内において手動で指定され、指定された範囲を示す情報が境界情報としてサンプル画像に付与されていた。そのため、サンプル画像内で欠陥の範囲を指定する工程及び境界情報に付与する工程の分だけ機械学習に利用する学習データを用意する作業に手間がかかっていた。加えて、欠陥を識別し、その欠陥の範囲を特定するための知識を有さない作業者には、境界情報をサンプル画像に付与するのは困難であった。そのため、その知識を作業者に十分に習得させるのにも手間がかかっていた。したがって、欠陥の範囲を検出する能力を学習モデルに習得させるための機械学習に利用する学習データを用意するのにはコストがかかってしまうという問題点が生じ得る。
【０００８】
なお、このような問題点は、製品の良否を判定する能力と共に欠陥の範囲を検出する能力を学習モデルに習得させる場面だけではなく、何らかの対象物の範囲を検出する能力を学習モデルに習得させるあらゆる場面で生じ得る。例えば、対象者の顔を写した顔画像に対して目等の器官の写る範囲を検出する能力を学習モデルに習得させるための機械学習を行う場面を想定する。この場面において、サンプル画像内で目の写る範囲を手動により指定し、指定した範囲を示す情報を境界情報として手動でサンプル画像に付与していたのでは、機械学習に利用する学習データを用意するのに大きなコストがかかってしまう。
【０００９】
本発明は、一側面では、このような実情を鑑みてなされたものであり、その目的は、対象物の範囲を検出する能力を習得させるための機械学習に利用する学習データを用意するのにかかるコストを低減する技術を提供することである。
【課題を解決するための手段】
【００１０】
本発明は、上述した課題を解決するために、以下の構成を採用する。
【００１１】
すなわち、本発明の一側面に係る学習装置は、外観検査の対象となる製品を写した学習画像、前記製品に含まれる欠陥の種別を示すラベル、及び前記欠陥の範囲を示す境界情報の組み合わせによりそれぞれ構成された複数の学習データセットを取得するデータ取得部と、第１の機械学習を行うことで、前記各件の学習データセットに含まれる前記ラベルの入力に対して、入力された前記ラベルに関連付けられた前記学習画像に対応する画像を生成するように訓練された生成器を構築する第１学習処理部と、第２の機械学習を行うことで、前記各件の学習データセットに含まれる前記学習画像の入力に対して、入力された前記学習画像に関連付けられた前記ラベル及び前記境界情報と一致するように、入力された前記学習画像に写る前記製品に含まれる前記欠陥の種別及び範囲を推定するように訓練された推定器を構築する第２学習処理部と、を備える。
【００１２】
当該構成に係る学習装置によれば、指定されたラベルに関連付けられた学習画像に対応する画像を生成するように訓練された生成器を構築すると共に、学習画像に写る欠陥の種別及び範囲を推定するように訓練された推定器を構築することができる。これらのうち、生成器を利用することで、指定した欠陥を含む製品の写り得るサンプル画像を自動的に生成することができる。加えて、推定器を利用することで、生成されたサンプル画像に含まれる欠陥の範囲を推定し、推定した欠陥の範囲を示す情報を境界情報としてサンプル画像に自動的に付与することができる。したがって、当該構成によれば、学習データを用意する際に、サンプル画像内において欠陥の範囲を手動で指定する手間を省略することができる。そのため、対象物の範囲を検出する能力を習得させるための機械学習に利用する学習データを用意するのにかかるコストを低減することができる。
【００１３】
なお、推定器及び生成器はそれぞれ、機械学習を実施可能な学習モデルにより構成される。学習モデルには、例えば、ニューラルネットワーク等が用いられてよい。第１の機械学習及び第２の機械学習を実行する順序は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。第１の機械学習及び第２の機械学習は、同時に実行されてもよいし、別々に実行されてもよい。第１及び第２の機械学習を別々に実行する場合、第１の機械学習は、第２の機械学習よりも先に実行されてもよいし、第２の機械学習よりも後に実行されてもよい。
【００１４】
また、製品は、外観検査の対象となり得るものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。製品は、例えば、電子機器、電子部品、自動車部品、薬品、食品等の製造ラインで搬送される物であってよい。電子機器は、例えば、携帯電話等である。電子部品は、例えば、基盤、チップコンデンサ、液晶、リレーの巻線等である。自動車部品は、例えば、コンロッド、シャフト、エンジンブロック、パワーウィンドウスイッチ、パネル等である。薬品は、例えば、包装済みの錠剤、未包装の錠剤等であってよい。また、欠陥は、製品の良否に関係し得るものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。欠陥は、例えば、傷、汚れ、クラック、打痕、バリ、色ムラ、異物混入等である。
【００１５】
上記一側面に係る学習装置において、前記生成器の入力は、エンコーダの出力に接続されてよく、前記生成器の出力は、前記推定器の入力及び判別器の入力に接続されてもよい。そして、前記第１の機械学習を行うことは、前記判別器に入力された入力画像が、前記生成器により生成された前記画像であるか前記複数の学習データセットから得られた前記学習画像であるかを判別するように前記判別器を訓練する第１訓練ステップと、前記生成器により生成される前記画像が、前記判別器による前記判別を誤らせるようなものとなるように、前記生成器を訓練する第２訓練ステップと、前記生成器により生成される前記画像が、前記推定器により前記画像に写る製品に含まれる欠陥の種別を推定した結果が前記ラベルと一致するようなものとなるように、前記生成器を訓練する第３訓練ステップと、前記ラベル及び潜在変数を前記生成器に入力することで前記生成器により生成された前記画像が、前記学習画像を復元したものとなるように、前記エンコーダ及び前記生成器を訓練する第４訓練ステップであって、前記潜在変数は、前記ラベル及び前記学習画像を前記エンコーダに入力することで前記エンコーダから得られる出力に基づいて導出される、第４訓練ステップと、前記エンコーダから得られる出力に基づいて導出される前記潜在変数の分布が所定の事前分布に従うように前記エンコーダを訓練する第５訓練ステップと、を含んでもよい。当該構成によれば、学習済みの生成器及び推定器を適切に構築することができ、これにより、対象物の範囲を検出する能力を習得させるための機械学習に利用する学習データを用意するのにかかるコストを低減することができる。なお、第１〜第５訓練ステップを実行する順序は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。
【００１６】
上記一側面に係る学習装置において、前記生成器の出力は、判別器の入力に接続されてよい。そして、前記第１の機械学習を行うことは、前記判別器に入力された入力画像が、前記生成器により生成された前記画像であるか前記複数の学習データセットから得られた前記学習画像であるかを判別するように、前記判別器を訓練する第１訓練ステップと、前記生成器により生成される前記画像が、前記判別器による前記判別を誤らせるようなものとなるように、前記生成器を訓練する第２訓練ステップと、を交互に行うことを含んでもよい。当該構成によれば、学習済みの生成器を適切に構築することができ、これにより、対象物の範囲を検出する能力を習得させるための機械学習に利用する学習データを用意するのにかかるコストを低減することができる。
【００１７】
上記一側面に係る学習装置において、前記欠陥の範囲は、バウンディングボックスにより表されてよい。当該構成によれば、対象物の範囲としてバウンディングボックスを検出する能力を習得させるための機械学習に利用する学習データを用意するのにかかるコストを低減することができる。
【００１８】
また、本発明の一側面に係る画像生成装置は、上記いずれかの形態に係る学習装置により構築された前記生成器に、前記欠陥の種別を示す入力値を与えることで、前記欠陥を含む前記製品を写した生成画像を生成する生成部と、前記学習装置により構築された前記推定器に生成された前記生成画像を与えることで、前記生成画像に写る前記製品に含まれる前記欠陥の種別及び範囲を推定する推定部と、前記生成画像に写る前記製品に含まれる前記欠陥の種別を推定した結果が前記入力値により示される前記欠陥の種別と一致するか否かを判定する判定部と、前記欠陥の種別を推定した結果が前記入力値により示される前記欠陥の種別と一致すると前記判定部が判定した場合に、生成した前記生成画像と前記欠陥の範囲を推定した結果とを関連付けて所定の記憶領域に格納する画像保存部と、を備える。当該構成によれば、対象物の範囲を手動で指定する手間を省略した上で、対象物の範囲を検出する能力を習得させるための機械学習に利用可能な学習データを生成することができる。
【００１９】
また、上記各形態に係る学習装置及び画像生成装置は、製品の良否を判定する能力と共に欠陥の範囲を検出する能力を学習モデルに習得させる場面だけではなく、何らかの対象物の範囲を検出する能力を学習モデルに習得させるあらゆる場面に適用されてよい。例えば、上記各形態に係る学習装置及び画像生成装置は、対象者の顔を写した顔画像に対して目等の器官の写る範囲を検出する能力を学習モデルに習得させる場面に適用されてもよい。
【００２０】
例えば、本発明の一側面に係る学習装置は、対象物を写した学習画像、前記対象物の種別を示すラベル、及び前記学習画像内における前記対象物の範囲を示す境界情報の組み合わせによりそれぞれ構成された複数の学習データセットを取得するデータ取得部と、第１の機械学習を行うことで、前記各件の学習データセットに含まれる前記ラベルの入力に対して、入力された前記ラベルに関連付けられた前記学習画像に対応する画像を生成するように訓練された生成器を構築する第１学習処理部と、第２の機械学習を行うことで、前記各件の学習データセットに含まれる前記学習画像の入力に対して、入力された前記学習画像に関連付けられた前記ラベル及び前記境界情報と一致するように、入力された前記学習画像に写る前記対象物の種別及び範囲を推定するように訓練された推定器を構築する第２学習処理部と、を備える。
【００２１】
なお、「対象物」は、画像から検出する対象となり得るものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。対象物は、例えば、上記外観検査の対象となる製品、製品に含まれる欠陥、人物、人物の身体部位（例えば、顔等）、人物の器官等であってよい。また、道路交通の監視画像に本発明を利用する場合、対象物は、例えば、車、歩行者、標識等であってもよい。
【００２２】
本発明の一側面に係る画像生成システムは、上記いずれかの形態に係る学習装置及び画像生成装置により構成されてもよい。また、本発明の一側面に係る推定システムは、上記いずれかの形態に係る学習装置、上記画像生成装置、生成された画像を利用して、画像に写る対象物の範囲を推定する推定器を構築する推定器生成装置、及び構築された推定器を利用して、画像に写る対象物の範囲を推定する推定装置により構成されてよい。更に、上記各形態に係る学習装置、画像生成装置、画像生成システム、及び推定システムそれぞれの別の形態として、本発明の一側面は、以上の各構成を実現する情報処理方法であってもよいし、プログラムであってもよいし、このようなプログラムを記憶した、コンピュータ等が読み取り可能な記憶媒体であってもよい。ここで、コンピュータ等が読み取り可能な記憶媒体とは、プログラム等の情報を、電気的、磁気的、光学的、機械的、又は、化学的作用によって蓄積する媒体である。
【００２３】
例えば、本発明の一側面に係る学習方法は、コンピュータが、外観検査の対象となる製品を写した学習画像、前記製品に含まれる欠陥の種別を示すラベル、及び前記欠陥の範囲を示す境界情報の組み合わせによりそれぞれ構成された複数の学習データセットを取得するステップと、第１の機械学習を行うことで、前記各件の学習データセットに含まれる前記ラベルの入力に対して、入力された前記ラベルに関連付けられた前記学習画像に対応する画像を生成するように訓練された生成器を構築するステップと、第２の機械学習を行うことで、前記各件の学習データセットに含まれる前記学習画像の入力に対して、入力された前記学習画像に関連付けられた前記ラベル及び前記境界情報と一致するように、入力された前記学習画像に写る前記製品に含まれる前記欠陥の種別及び範囲を推定するように訓練された推定器を構築するステップと、を実行する、情報処理方法である。
【００２４】
また、例えば、本発明の一側面に係る学習プログラムは、コンピュータに、外観検査の対象となる製品を写した学習画像、前記製品に含まれる欠陥の種別を示すラベル、及び前記欠陥の範囲を示す境界情報の組み合わせによりそれぞれ構成された複数の学習データセットを取得するステップと、第１の機械学習を行うことで、前記各件の学習データセットに含まれる前記ラベルの入力に対して、入力された前記ラベルに関連付けられた前記学習画像に対応する画像を生成するように訓練された生成器を構築するステップと、第２の機械学習を行うことで、前記各件の学習データセットに含まれる前記学習画像の入力に対して、入力された前記学習画像に関連付けられた前記ラベル及び前記境界情報と一致するように、入力された前記学習画像に写る前記製品に含まれる前記欠陥の種別及び範囲を推定するように訓練された推定器を構築するステップと、を実行させるための、プログラムである。
【００２５】
また、例えば、本発明の一側面に係る学習方法は、コンピュータが、対象物を写した学習画像、前記対象物の種別を示すラベル、及び前記学習画像内における前記対象物の範囲を示す境界情報の組み合わせによりそれぞれ構成された複数の学習データセットを取得するステップと、第１の機械学習を行うことで、前記各件の学習データセットに含まれる前記ラベルの入力に対して、入力された前記ラベルに関連付けられた前記学習画像に対応する画像を生成するように訓練された生成器を構築するステップと、第２の機械学習を行うことで、前記各件の学習データセットに含まれる前記学習画像の入力に対して、入力された前記学習画像に関連付けられた前記ラベル及び前記境界情報と一致するように、入力された前記学習画像に写る前記対象物の種別及び範囲を推定するように訓練された推定器を構築するステップと、を実行する、情報処理方法である。
【００２６】
また、例えば、本発明の一側面に係る学習プログラムは、コンピュータに、対象物を写した学習画像、前記対象物の種別を示すラベル、及び前記学習画像内における前記対象物の範囲を示す境界情報の組み合わせによりそれぞれ構成された複数の学習データセットを取得するステップと、第１の機械学習を行うことで、前記各件の学習データセットに含まれる前記ラベルの入力に対して、入力された前記ラベルに関連付けられた前記学習画像に対応する画像を生成するように訓練された生成器を構築するステップと、第２の機械学習を行うことで、前記各件の学習データセットに含まれる前記学習画像の入力に対して、入力された前記学習画像に関連付けられた前記ラベル及び前記境界情報と一致するように、入力された前記学習画像に写る前記対象物の種別及び範囲を推定するように訓練された推定器を構築するステップと、を実行させるための、プログラムである。
【発明の効果】
【００２７】
本発明によれば、対象物の範囲を検出する能力を習得させるための機械学習に利用する学習データを用意するのにかかるコストを低減することができる。
【図面の簡単な説明】
【００２８】
【図１】図１は、本発明が適用される場面の一例を模式的に例示する。
【図２】図２は、実施の形態に係る学習画像に指定された欠陥の範囲を示す境界情報の一例を模式的に例示する。
【図３】図３は、実施の形態に係る学習装置のハードウェア構成の一例を模式的に例示する。
【図４】図４は、実施の形態に係る画像生成装置のハードウェア構成の一例を模式的に例示する。
【図５】図５は、実施の形態に係る推定器生成装置のハードウェア構成の一例を模式的に例示する。
【図６】図６は、実施の形態に係る検査装置のハードウェア構成の一例を模式的に例示する。
【図７】図７は、実施の形態に係る学習装置のソフトウェア構成の一例を模式的に例示する。
【図８Ａ】図８Ａは、実施の形態に係る学習ネットワークの機械学習の過程の一例を模式的に例示する。
【図８Ｂ】図８Ｂは、実施の形態に係る学習ネットワークの機械学習の過程の一例を模式的に例示する。
【図９】図９は、実施の形態に係る画像生成装置のソフトウェア構成の一例を模式的に例示する。
【図１０】図１０は、実施の形態に係る推定器生成装置のソフトウェア構成の一例を模式的に例示する。
【図１１】図１１は、実施の形態に係る検査装置のソフトウェア構成の一例を模式的に例示する。
【図１２】図１２は、実施の形態に係る学習装置の処理手順の一例を例示する。
【図１３】図１３は、実施の形態に係る画像生成装置の処理手順の一例を例示する。
【図１４】図１４は、実施の形態に係る推定器生成装置の処理手順の一例を例示する。
【図１５】図１５は、実施の形態に係る検査装置の処理手順の一例を例示する。
【図１６】図１６は、変形例に係る学習ネットワークの構成の一例を模式的に例示する。
【図１７Ａ】図１７Ａは、変形例に係る学習ネットワークの機械学習の過程の一例を模式的に例示する。
【図１７Ｂ】図１７Ｂは、変形例に係る学習ネットワークの機械学習の過程の一例を模式的に例示する。
【図１７Ｃ】図１７Ｃは、変形例に係る推定器の機械学習の仮定の過程を模式的に例示する。
【図１８】図１８は、変形例に係る第１の機械学習の処理手順の一例を例示する。
【図１９】図１９は、本発明が適用される場面の変形例を模式的に例示する。
【図２０】図２０は、変形例に係る検出装置のソフトウェア構成の一例を模式的に例示する。
【発明を実施するための形態】
【００２９】
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図面に基づいて説明する。ただし、以下で説明する本実施形態は、あらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。つまり、本発明の実施にあたって、実施形態に応じた具体的構成が適宜採用されてもよい。なお、本実施形態において登場するデータを自然言語により説明しているが、より具体的には、コンピュータが認識可能な疑似言語、コマンド、パラメータ、マシン語等で指定される。
【００３０】
§１  適用例
まず、図１を用いて、本発明が適用される場面の一例について説明する。図１は、製品Ｒの外観検査に本発明を適用した場面の一例を模式的に例示する。製品Ｒに含まれ得る欠陥は、本発明の「対象物」の一例である。ただし、本発明の適用範囲は、以下で例示する外観検査の例に限られる訳ではない。本発明は、画像に写る何らかの対象物の範囲を検出するあらゆる場面に適用可能である。
【００３１】
図１に例示されるとおり、本実施形態に係る検査システム１００は、ネットワークを介して接続される学習装置１、画像生成装置２、推定器生成装置３、及び検査装置４を備えている。これにより、検査システム１００は、製品Ｒの良否を検査するように構成される。学習装置１、画像生成装置２、推定器生成装置３、及び検査装置４の間のネットワークの種類は、特に限定されなくてもよく、例えば、インターネット、無線通信網、移動通信網、電話網、専用網等から適宜選択されてよい。
【００３２】
なお、図１の例では、学習装置１、画像生成装置２、推定器生成装置３、及び検査装置４はそれぞれ別個のコンピュータである。しかしながら、検査システム１００の構成は、このような例に限定されなくてもよい。学習装置１、画像生成装置２、推定器生成装置３、及び検査装置４の少なくともいずれかのペアは一体のコンピュータであってもよい。また、学習装置１、画像生成装置２、推定器生成装置３、及び検査装置４はそれぞれ複数台のコンピュータにより構成されてもよい。
【００３３】
本実施形態に係る学習装置１は、外観検査の対象となる製品Ｒを写した画像を生成するための生成器５０、及び生成器５０により生成された画像に対して製品Ｒに含まれる欠陥の種別及び範囲を推定するための推定器５２を構築するように構成されたコンピュータである。具体的には、学習装置１は、外観検査の対象となる製品Ｒを写した学習画像６１、製品Ｒに含まれる欠陥の種別を示すラベル６３、及び欠陥の範囲を示す境界情報６５の組み合わせによりそれぞれ構成された複数の学習データセット６０を取得する。
【００３４】
続いて、学習装置１は、第１の機械学習を実行することで、各学習データセット６０に含まれるラベル６３の入力に対して、入力されたラベル６３に関連付けられた学習画像６１に対応する画像を生成するように訓練された生成器５０を構築する。学習画像６１に対応する画像とは、学習画像６１に類似し、製品Ｒの写り得る画像である。生成器５０は、学習画像６１の分布に従った（沿う）画像を生成するように訓練される。更に、学習装置１は、第２の機械学習を実行することで、各学習データセット６０に含まれる学習画像６１の入力に対して、入力された学習画像６１に関連付けられたラベル６３及び境界情報６５と一致するように、入力された学習画像６１に写る製品Ｒに含まれる欠陥の種別及び範囲を推定するように訓練された推定器５２を構築する。
【００３５】
ここで、図２を用いて、欠陥の範囲を指定する方法の一例について説明する。図２は、本実施形態に係る学習画像６１内に指定された欠陥の範囲を示す境界情報６５の一例を模式的に例示する。図２の例では、学習画像６１には、楕円形状の欠陥６１２を含む製品Ｒが写っている。学習画像６１の横幅がＷピクセルであり、縦幅がＨピクセルであるのに対して、欠陥６１２の横幅はｗピクセルであり、縦幅はｈピクセルである。この欠陥６１２の範囲は、学習画像６１内で欠陥６１２の写る領域を含むように適宜指定されてよい。
【００３６】
欠陥６１２の範囲の表現方法は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。本実施形態では、欠陥６１２の範囲は、バウンディングボックスにより表される。図２に示されるとおり、欠陥６１２の中心座標（ｃｘ、ｃｙ）、横幅（ｗピクセル）、及び縦幅（ｈピクセル）により、バウンディングボックスを規定することができる。つまり、欠陥６１２の外周を囲む矩形状の範囲（図の点線で示される範囲）が、バウンディングボックスの一例である。ただし、バウンディングボックスを規定する形式は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、バウンディングボックスは、中心座標及び欠陥６１２を含むように指定された円（例えば、外接円）の半径により規定されてよい。この場合、欠陥６１２を含む円形状の範囲が、バウンディングボックスとなる。本実施形態に係る学習装置１によれば、学習画像６１に対応する画像を生成するように訓練された生成器５０を構築すると共に、このようなバウンディングボックスにより表される欠陥の範囲を学習画像６１内で推定するように訓練された推定器５２を構築することができる。
【００３７】
図１に戻り、本実施形態に係る画像生成装置２は、学習装置１により構築された学習済みの生成器５０及び推定器５２を利用して、製品Ｒの写り得る画像を生成すると共に、生成した画像内で欠陥の範囲を推定するように構成されたコンピュータである。具体的には、画像生成装置２は、学習装置１により構築された生成器５０に、欠陥の種別を示す入力値７１を与えることで、欠陥を含む製品Ｒを写した生成画像７３を生成する。生成された生成画像７３は、上記学習画像６１に対応する。
【００３８】
次に、画像生成装置２は、学習装置１により構築された推定器５２に生成された生成画像７３を与えることで、生成画像７３に写る製品Ｒに含まれる欠陥の種別及び範囲を推定する。続いて、画像生成装置２は、生成画像７３に写る製品に含まれる欠陥の種別を推定した結果が入力値７１により示される欠陥の種別と一致するか否かを判定する。そして、画像生成装置２は、欠陥の種別を推定した結果が入力値７１により示される欠陥の種別と一致すると判定した場合に、生成した生成画像７３と欠陥の範囲を推定した結果とを関連付けて所定の記憶領域に格納する。
【００３９】
本実施形態に係る推定器生成装置３は、製品Ｒの良否を推定するための推定器を構築するように構成されたコンピュータである。具体的に、推定器生成装置３は、製品Ｒを写したサンプル画像及び正解データの組み合わせによりそれぞれ構成された複数の学習データセットを取得する。正解データは、サンプル画像に写る製品Ｒの良否を判定した結果（すなわち、正解）を示す。本実施形態では、正解データは、サンプル画像に写る製品Ｒに含まれる欠陥の範囲を示す境界情報を含む。そして、推定器生成装置３は、複数の学習データセットを利用した機械学習を実施することで、与えられた画像に写る製品Ｒの良否を判定すると共に、製品Ｒが欠陥を含む場合には、その欠陥の範囲を検出する能力を習得した学習済みの推定器を構築する。なお、推定器生成装置３は、画像生成装置２により生成された生成画像７３をサンプル画像として利用し、かつ生成画像７３に関連付けられた欠陥の範囲を推定した結果を示す情報を正解データとして利用することができる。
【００４０】
これに対して、本実施形態に係る検査装置４は、推定器生成装置３により構築された学習済みの推定器を利用して、製品Ｒの良否を判定するように構成されたコンピュータである。検査装置４は、画像に写る対象物の範囲を推定する推定装置の一例である。具体的に、検査装置４は、外観検査の対象となる製品Ｒの写る対象画像を取得する。本実施形態では、検査装置４には、カメラＣＡが接続されている。検査装置４は、このカメラＣＡにより製品Ｒを撮影することで対象画像を取得する。次に、検査装置４は、取得した対象画像を学習済みの推定器に入力し、学習済みの推定器の演算処理を実行する。これにより、検査装置４は、製品Ｒの良否を判定した結果、及び製品Ｒに含まれる欠陥の範囲を検出した結果に対応する出力値を学習済みの推定器から取得する。そして、検査装置４は、学習済みの推定器から得られた出力値に基づいて製品Ｒの良否を判定した結果に関する情報を出力する。
【００４１】
以上のとおり、本実施形態に係る学習装置１によれば、欠陥の種別を指定するラベル６３に関連付けられた学習画像６１に対応する画像を生成するように訓練された生成器５０を構築すると共に、学習画像６１に写る欠陥の種別及び範囲を推定するように訓練された推定器５２を構築することができる。これらのうち、生成器５０を利用することで、指定した欠陥を含む製品の写り得るサンプル画像を自動的に生成することができる。加えて、推定器５２を利用することで、生成されたサンプル画像に写る製品Ｒに含まれる欠陥の範囲を推定し、推定した欠陥の範囲を示す情報を境界情報としてサンプル画像に自動的に付与することができる。したがって、本実施形態によれば、学習データを用意する際に、サンプル画像内において欠陥の範囲を手動で指定する手間を省略することができる。そのため、欠陥の範囲を検出する能力を習得させるための機械学習に利用する学習データを用意するのにかかるコストを低減することができる。
【００４２】
また、本実施形態に係る画像生成装置２では、学習装置１により構築された生成器５０及び推定器５２を利用することで、欠陥の範囲を手動で指定する手間を省略した上で、欠陥の範囲を検出する能力を習得させるための機械学習に利用可能な学習データを生成することができる。加えて、本実施形態では、画像生成装置２により生成された生成画像７３をサンプル画像として利用し、かつ生成画像７３に関連付けられた欠陥の範囲を推定した結果を示す情報を正解データとして利用することができる。これにより、推定器生成装置３において、学習データセットを収集するコストを低減することができる。更に、本実施形態では、画像生成装置２により生成された生成画像７３をサンプル画像として利用し、かつ生成画像７３に関連付けられた欠陥の範囲を推定した結果を示す情報を正解データとして利用することで、推定器の機械学習に利用する学習データセットの件数を増やすことができる。これにより、検査装置４において、製品Ｒに含まれ得る欠陥の範囲を推定する精度を高めることができる。
【００４３】
なお、外観検査の対象となる製品Ｒは、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。製品Ｒは、例えば、電子部品、自動車部品等の製造ラインで搬送される物であってよい。電子部品は、例えば、基盤、チップコンデンサ、液晶、リレーの巻線等である。自動車部品は、例えば、コンロッド、シャフト、エンジンブロック、パワーウィンドウスイッチ、パネル等である。また、良否の判定は、製品Ｒに欠陥があるか否かを単に判定することであってもよいし、製品Ｒに欠陥がある否かを判定することに加えて、その欠陥の種類を識別することを含んでもよい。欠陥は、例えば、傷、汚れ、クラック、打痕、埃、バリ、色ムラ等である。
【００４４】
§２  構成例
［ハードウェア構成］
＜学習装置＞
次に、図３を用いて、本実施形態に係る学習装置１のハードウェア構成の一例について説明する。図３は、本実施形態に係る学習装置１のハードウェア構成の一例を模式的に例示する。
【００４５】
図３に示されるとおり、本実施形態に係る学習装置１は、制御部１１、記憶部１２、通信インタフェース１３、入力装置１４、出力装置１５、及びドライブ１６が電気的に接続されたコンピュータである。なお、図３では、通信インタフェースを「通信Ｉ／Ｆ」と記載している。
【００４６】
制御部１１は、ハードウェアプロセッサであるＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等を含み、プログラム及び各種データに基づいて情報処理を実行するように構成される。記憶部１２は、メモリの一例であり、例えば、ハードディスクドライブ、ソリッドステートドライブ等で構成される。本実施形態では、記憶部１２は、学習プログラム１２１、複数の学習データセット６０、第１学習結果データ１２３、第２学習結果データ１２５等の各種情報を記憶する。
【００４７】
学習プログラム１２１は、製品Ｒの写り得る画像を生成するよう訓練された生成器５０、及び画像に写る製品Ｒに含まれ得る欠陥の種別及び範囲を推定するよう訓練された推定器５２を構築する後述の情報処理（図１２）を学習装置１に実行させるためのプログラムである。学習プログラム１２１は、当該情報処理の一連の命令を含む。各学習データセット６０は、外観検査の対象となる製品Ｒを写した学習画像６１、製品Ｒに含まれる欠陥の種別を示すラベル６３、及び欠陥の範囲を示す境界情報６５の組み合わせにより構成される。各学習データセット６０は、生成器５０及び推定器５２の機械学習に利用される。学習データセット６０の件数は、実施の形態に応じて適宜決定されてよい。第１学習結果データ１２３は、機械学習により構築された学習済みの生成器５０の設定を行うためのデータである。第２学習結果データ１２５は、機械学習により構築された学習済みの推定器５２の設定を行うためのデータである。第１学習結果データ１２３及び第２学習結果データ１２５は、学習プログラム１２１の実行結果として生成される。詳細は後述する。
【００４８】
通信インタフェース１３は、例えば、有線ＬＡＮ（Local Area Network）モジュール、無線ＬＡＮモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。学習装置１は、この通信インタフェース１３を利用することで、ネットワークを介したデータ通信を他の情報処理装置（例えば、画像生成装置２、推定器生成装置３）と行うことができる。
【００４９】
入力装置１４は、例えば、マウス、キーボード等の入力を行うための装置である。また、出力装置１５は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。オペレータは、入力装置１４及び出力装置１５を利用することで、学習装置１を操作することができる。
【００５０】
ドライブ１６は、例えば、ＣＤドライブ、ＤＶＤドライブ等であり、記憶媒体９１に記憶されたプログラムを読み込むためのドライブ装置である。ドライブ１６の種類は、記憶媒体９１の種類に応じて適宜選択されてよい。上記学習プログラム１２１及び複数の学習データセット６０の少なくともいずれかは、この記憶媒体９１に記憶されていてもよい。
【００５１】
記憶媒体９１は、コンピュータその他装置、機械等が、記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的又は化学的作用によって蓄積する媒体である。学習装置１は、この記憶媒体９１から、上記学習プログラム１２１及び複数の学習データセット６０の少なくともいずれかを取得してもよい。
【００５２】
ここで、図３では、記憶媒体９１の一例として、ＣＤ、ＤＶＤ等のディスク型の記憶媒体を例示している。しかしながら、記憶媒体９１の種類は、ディスク型に限定される訳ではなく、ディスク型以外であってもよい。ディスク型以外の記憶媒体として、例えば、フラッシュメモリ等の半導体メモリを挙げることができる。
【００５３】
なお、学習装置１の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部１１は、複数のハードウェアプロセッサを含んでもよい。ハードウェアプロセッサは、マイクロプロセッサ、ＦＰＧＡ（field-programmable gate array）、ＤＳＰ（digital signal processor）等で構成されてよい。記憶部１２は、制御部１１に含まれるＲＡＭ及びＲＯＭにより構成されてもよい。通信インタフェース１３、入力装置１４、出力装置１５及びドライブ１６の少なくともいずれかは省略されてもよい。学習装置１は、複数台のコンピュータで構成されてもよい。この場合、各コンピュータのハードウェア構成は、一致していてもよいし、一致していなくてもよい。また、学習装置１は、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、ＰＣ（Personal Computer）等であってもよい。
【００５４】
＜画像生成装置＞
次に、図４を用いて、本実施形態に係る画像生成装置２のハードウェア構成の一例について説明する。図４は、本実施形態に係る画像生成装置２のハードウェア構成の一例を模式的に例示する。
【００５５】
図４に示されるとおり、本実施形態に係る画像生成装置２は、制御部２１、記憶部２２、通信インタフェース２３、入力装置２４、出力装置２５、及びドライブ２６が電気的に接続されたコンピュータである。本実施形態に係る画像生成装置２の制御部２１〜ドライブ２６それぞれは、上記学習装置１の制御部１１〜ドライブ１６それぞれと同様に構成されてよい。
【００５６】
すなわち、制御部２１は、ハードウェアプロセッサであるＣＰＵ、ＲＡＭ、ＲＯＭ等を含み、プログラム及びデータに基づいて各種情報処理を実行するように構成される。記憶部２２は、例えば、ハードディスクドライブ、ソリッドステートドライブ等で構成される。記憶部２２は、画像生成プログラム２２１、第１学習結果データ１２３、第２学習結果データ１２５、１又は複数のデータセット等の各種情報を記憶する。
【００５７】
画像生成プログラム２２１は、学習済みの生成器５０を利用して生成画像７３を生成すると共に、学習済みの推定器５２を利用して生成画像７３内で欠陥の範囲を推定する後述の情報処理（図１３）を画像生成装置２に実行させるためのプログラムである。画像生成プログラム２２１は、当該情報処理の一連の命令を含む。各データセットは、生成画像７３、ラベル７５、及び境界情報７７の組み合わせにより構成される。ラベル７５は、生成画像７３を生成する際に生成器５０に与えた入力値７１に対応する。境界情報７７は、推定器５２により欠陥の範囲を推定した結果を示す。各データセットは、画像生成プログラム２２１の実行結果として生成される。詳細は後述する。
【００５８】
通信インタフェース２３は、例えば、有線ＬＡＮモジュール、無線ＬＡＮモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。画像生成装置２は、この通信インタフェース２３を利用することで、ネットワークを介したデータ通信を他の情報処理装置（例えば、学習装置１、推定器生成装置３）と行うことができる。
【００５９】
入力装置２４は、例えば、マウス、キーボード等の入力を行うための装置である。また、出力装置２５は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。オペレータは、入力装置２４及び出力装置２５を利用することで、画像生成装置２を操作することができる。
【００６０】
ドライブ２６は、例えば、ＣＤドライブ、ＤＶＤドライブ等であり、記憶媒体９２に記憶されたプログラムを読み込むためのドライブ装置である。上記画像生成プログラム２２１、第１学習結果データ１２３及び第２学習結果データ１２５のうちの少なくともいずれかは、記憶媒体９２に記憶されていてもよい。また、画像生成装置２は、記憶媒体９２から、上記画像生成プログラム２２１、第１学習結果データ１２３及び第２学習結果データ１２５のうちの少なくともいずれかを取得してもよい。
【００６１】
なお、画像生成装置２の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部２１は、複数のハードウェアプロセッサを含んでもよい。ハードウェアプロセッサは、マイクロプロセッサ、ＦＰＧＡ、ＤＳＰ等で構成されてよい。記憶部２２は、制御部２１に含まれるＲＡＭ及びＲＯＭにより構成されてもよい。通信インタフェース２３、入力装置２４、出力装置２５及びドライブ２６の少なくともいずれかは省略されてもよい。画像生成装置２は、複数台のコンピュータで構成されてもよい。この場合、各コンピュータのハードウェア構成は、一致していてもよいし、一致していなくてもよい。また、画像生成装置２は、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、汎用のＰＣ等であってもよい。
【００６２】
＜推定器生成装置＞
次に、図５を用いて、本実施形態に係る推定器生成装置３のハードウェア構成の一例について説明する。図５は、本実施形態に係る推定器生成装置３のハードウェア構成の一例を模式的に例示する。
【００６３】
図５に示されるとおり、本実施形態に係る推定器生成装置３は、制御部３１、記憶部３２、通信インタフェース３３、入力装置３４、出力装置３５、及びドライブ３６が電気的に接続されたコンピュータである。本実施形態に係る推定器生成装置３の制御部３１〜ドライブ３６それぞれは、上記学習装置１の制御部１１〜ドライブ１６それぞれと同様に構成されてよい。
【００６４】
すなわち、制御部３１は、ハードウェアプロセッサであるＣＰＵ、ＲＡＭ、ＲＯＭ等を含み、プログラム及びデータに基づいて各種情報処理を実行するように構成される。記憶部３２は、例えば、ハードディスクドライブ、ソリッドステートドライブ等で構成される。記憶部３２は、推定器生成プログラム３２１、学習データセット３２２、第３学習結果データ３２５等の各種情報を記憶する。
【００６５】
推定器生成プログラム３２１は、製品Ｒの良否を判定するための推定器を構築する後述の情報処理（図１４）を推定器生成装置３に実行させるためのプログラムである。推定器生成プログラム３２１は、当該情報処理の一連の命令を含む。学習データセット３２２は、この推定器の機械学習に利用される。第３学習結果データ３２５は、機械学習により構築された学習済みの推定器の設定を行うためのデータである。第３学習結果データ３２５は、推定器生成プログラム３２１の実行結果として生成される。詳細は後述する。
【００６６】
通信インタフェース３３は、例えば、有線ＬＡＮモジュール、無線ＬＡＮモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。推定器生成装置３は、この通信インタフェース３３を利用することで、ネットワークを介したデータ通信を他の情報処理装置（例えば、学習装置１、画像生成装置２、検査装置４）と行うことができる。
【００６７】
入力装置３４は、例えば、マウス、キーボード等の入力を行うための装置である。また、出力装置３５は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。オペレータは、入力装置３４及び出力装置３５を利用することで、推定器生成装置３を操作することができる。
【００６８】
ドライブ３６は、例えば、ＣＤドライブ、ＤＶＤドライブ等であり、記憶媒体９３に記憶されたプログラムを読み込むためのドライブ装置である。上記推定器生成プログラム３２１及び学習データセット３２２のうちの少なくともいずれかは、記憶媒体９３に記憶されていてもよい。また、推定器生成装置３は、記憶媒体９３から、上記推定器生成プログラム３２１及び学習データセット３２２のうちの少なくともいずれかを取得してもよい。
【００６９】
なお、推定器生成装置３の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部３１は、複数のハードウェアプロセッサを含んでもよい。ハードウェアプロセッサは、マイクロプロセッサ、ＦＰＧＡ、ＤＳＰ等で構成されてよい。記憶部３２は、制御部３１に含まれるＲＡＭ及びＲＯＭにより構成されてもよい。通信インタフェース３３、入力装置３４、出力装置３５及びドライブ３６の少なくともいずれかは省略されてもよい。推定器生成装置３は、複数台のコンピュータで構成されてもよい。この場合、各コンピュータのハードウェア構成は、一致していてもよいし、一致していなくてもよい。また、推定器生成装置３は、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、汎用のＰＣ等であってもよい。
【００７０】
＜検査装置＞
次に、図６を用いて、本実施形態に係る検査装置４のハードウェア構成の一例について説明する。図６は、本実施形態に係る検査装置４のハードウェア構成の一例を模式的に例示する。
【００７１】
図６に示されるとおり、本実施形態に係る検査装置４は、制御部４１、記憶部４２、通信インタフェース４３、入力装置４４、出力装置４５、ドライブ４６、及び外部インタフェース４７が電気的に接続されたコンピュータである。なお、図６では、外部インタフェースを「外部Ｉ／Ｆ」と記載している。検査装置４の制御部４１〜ドライブ４６はそれぞれ、上記学習装置１の制御部１１〜ドライブ１６それぞれと同様に構成されてよい。
【００７２】
すなわち、制御部４１は、ハードウェアプロセッサであるＣＰＵ、ＲＡＭ、ＲＯＭ等を含み、プログラム及びデータに基づいて各種情報処理を実行するように構成される。記憶部４２は、例えば、ハードディスクドライブ、ソリッドステートドライブ等で構成される。記憶部４２は、検査プログラム４２１、第３学習結果データ３２５等の各種情報を記憶する。
【００７３】
検査プログラム４２１は、推定器生成装置３により構築された学習済みの推定器を利用して、対象画像に写る製品Ｒの良否を判定する後述する情報処理（図１５）を検査装置４に実行させるためのプログラムである。検査プログラム４２１は、当該情報処理の一連の命令を含む。詳細は後述する。
【００７４】
通信インタフェース４３は、例えば、有線ＬＡＮモジュール、無線ＬＡＮモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。検査装置４は、この通信インタフェース４３を利用することで、ネットワークを介したデータ通信を他の情報処理装置（例えば、推定器生成装置３）と行うことができる。
【００７５】
入力装置４４は、例えば、マウス、キーボード等の入力を行うための装置である。また、出力装置４５は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。オペレータは、入力装置４４及び出力装置４５を利用することで、検査装置４を操作することができる。
【００７６】
ドライブ４６は、例えば、ＣＤドライブ、ＤＶＤドライブ等であり、記憶媒体９４に記憶されたプログラムを読み込むためのドライブ装置である。上記検査プログラム４２１及び第３学習結果データ３２５のうちの少なくともいずれかは、記憶媒体９４に記憶されていてもよい。また、検査装置４は、記憶媒体９４から、上記検査プログラム４２１及び第３学習結果データ３２５のうちの少なくともいずれかを取得してもよい。
【００７７】
外部インタフェース４７は、例えば、ＵＳＢ（Universal Serial Bus）ポート、専用ポート等であり、外部装置と接続するためのインタフェースである。外部インタフェース４７の種類及び数は、接続される外部装置の種類及び数に応じて適宜選択されてよい。本実施形態では、検査装置４は、外部インタフェース４７を介して、カメラＣＡに接続される。
【００７８】
カメラＣＡは、製品Ｒを写した対象画像を取得するのに利用される。カメラＣＡの種類及び配置場所は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。カメラＣＡには、例えば、デジタルカメラ、ビデオカメラ等の公知のカメラが利用されてよい。また、カメラＣＡは、製品Ｒが搬送される製造ラインの近傍に配置されてよい。なお、カメラＣＡが通信インタフェースを備える場合、検査装置４は、外部インタフェース４７ではなく、通信インタフェース４３を介して、カメラＣＡに接続されてもよい。
【００７９】
なお、検査装置４の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部４１は、複数のハードウェアプロセッサを含んでもよい。ハードウェアプロセッサは、マイクロプロセッサ、ＦＰＧＡ、ＤＳＰ等で構成されてよい。記憶部４２は、制御部４１に含まれるＲＡＭ及びＲＯＭにより構成されてもよい。通信インタフェース４３、入力装置４４、出力装置４５、ドライブ４６及び外部インタフェース４７の少なくともいずれかは省略されてもよい。検査装置４は、複数台のコンピュータで構成されてもよい。この場合、各コンピュータのハードウェア構成は、一致していてもよいし、一致していなくてもよい。また、検査装置４は、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、汎用のデスクトップＰＣ、ノートＰＣ、タブレットＰＣ、スマートフォンを含む携帯電話等が用いられてよい。
【００８０】
［ソフトウェア構成］
＜学習装置＞
次に、図７を用いて、本実施形態に係る学習装置１のソフトウェア構成の一例について説明する。図７は、本実施形態に係る学習装置１のソフトウェア構成の一例を模式的に例示する。
【００８１】
学習装置１の制御部１１は、記憶部１２に記憶された学習プログラム１２１をＲＡＭに展開する。そして、制御部１１は、ＲＡＭに展開された学習プログラム１２１をＣＰＵにより解釈及び実行して、各構成要素を制御する。これによって、図７に示されるとおり、本実施形態に係る学習装置１は、データ取得部１１１、第１学習処理部１１２、第２学習処理部１１３、及び保存処理部１１４をソフトウェアモジュールとして備えるコンピュータとして動作する。すなわち、本実施形態では、学習装置１の各ソフトウェアモジュールは、制御部１１（ＣＰＵ）により実現される。
【００８２】
データ取得部１１１は、外観検査の対象となる製品Ｒを写した学習画像６１、製品Ｒに含まれる欠陥の種別を示すラベル６３、及び欠陥の範囲を示す境界情報６５の組み合わせによりそれぞれ構成された複数の学習データセット６０を取得する。第１学習処理部１１２は、第１の機械学習を実行することで、各学習データセット６０に含まれるラベル６３の入力に対して、入力されたラベル６３に関連付けられた学習画像６１に対応する画像を生成するように訓練された生成器５０を構築する。第２学習処理部１１３は、第２の機械学習を実行することで、各学習データセット６０に含まれる学習画像６１の入力に対して、入力された学習画像６１に関連付けられたラベル６３及び境界情報６５と一致するように、入力された学習画像６１に写る製品Ｒに含まれる欠陥の種別及び範囲を推定するように訓練された推定器５２を構築する。保存処理部１１４は、構築された学習済みの生成器５０に関する情報、及び構築された学習済みの推定器５２に関する情報を所定の記憶領域に保存する。
【００８３】
（学習ネットワーク）
次に、図８Ａ及び図８Ｂを更に用いて、本実施形態に係る生成器５０及び推定器５２を含む学習ネットワーク５００の構成の一例について説明する。図８Ａ及び図８Ｂは、生成器５０を訓練する第１の機械学習及び推定器５２を訓練する第２の機械学習の過程の一例を模式的に例示する。
【００８４】
各図に示されるとおり、本実施形態では、エンコーダ５６、生成器５０、判別器５４、及び推定器５２により学習ネットワーク５００が構成されている。第１学習処理部１１２及び第２学習処理部１１３は、この機械学習を実施する対象となる学習ネットワーク５００を保持している。学習ネットワーク５００では、入力側から、エンコーダ５６、生成器５０、並びに判別器５４及び推定器５２の順に配置されている。判別器５４及び推定器５２は出力側で並列に配置されている。エンコーダ５６は、学習画像６１及びラベル６３の入力を受け付け、事前分布に沿う潜在変数に対応する出力値を出力するように構成される。エンコーダ５６の出力は、生成器５０の入力に接続されている。生成器５０の出力は、推定器５２の入力及び判別器５４の入力に接続されている。
【００８５】
本実施形態に係るエンコーダ５６、生成器５０、推定器５２及び判別器５４はそれぞれ、いわゆる深層学習に用いられる多層構造のニューラルネットワークにより構成されている。エンコーダ５６は、入力層５７１、中間層（隠れ層）５７２、及び出力層５７３を備えている。生成器５０は、入力層５１１、中間層（隠れ層）５１２、及び出力層５１３を備えている。推定器５２は、入力層５３１、中間層（隠れ層）５３２、及び出力層５３３を備えている。判別器５４は、入力層５５１、中間層（隠れ層）５５２、及び出力層５５３を備えている。ただし、エンコーダ５６、生成器５０、推定器５２及び判別器５４それぞれの構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。例えば、エンコーダ５６、生成器５０、推定器５２及び判別器５４はそれぞれ、２層以上の中間層を備えてもよい。エンコーダ５６、生成器５０、推定器５２及び判別器５４の構成はそれぞれ異なっていてよい。
【００８６】
それぞれの各層（５７１〜５７３、５１１〜５１３、５３１〜５３３、５５１〜５５３）に含まれるニューロン（ノード）の数は、実施の形態に応じて適宜設定されてよい。隣接する層のニューロン同士は適宜結合され、各結合には重み（結合荷重）が設定されている。図８Ａ及び図８Ｂの例では、各ニューロンは、隣接する層の全てのニューロンと結合されている。しかしながら、ニューロンの結合は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。各ニューロンには閾値が設定されており、基本的には、各入力と各重みとの積の和が閾値を超えているか否かによって各ニューロンの出力が決定される。
【００８７】
エンコーダ５６の各層５７１〜５７３に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用されるエンコーダ５６のパラメータの一例である。生成器５０の各層５１１〜５１３に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される生成器５０のパラメータの一例である。推定器５２の各層５３１〜５３３に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される推定器５２のパラメータの一例である。判別器５４の各層５５１〜５５３に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される判別器５４のパラメータの一例である。
【００８８】
第１学習処理部１１２及び第２学習処理部１１３は、この学習ネットワーク５００の機械学習を実施する。第１学習処理部１１２は、これらのうち生成器５０に関する第１の機械学習を実施する。一方、第２学習処理部１１３は、推定器５２に関する第２の機械学習を実施する。
【００８９】
本実施形態では、第１の機械学習を実施することは、次の第１〜第５訓練ステップを含む。第１訓練ステップでは、第１学習処理部１１２は、判別器５４に入力された入力画像が、生成器５０により生成された画像６９であるか複数の学習データセット６０から得られた学習画像６１であるかを判別するように判別器５４を訓練する。つまり、判別器５４は、与えられた入力画像が学習データ（学習画像６１）由来か生成器５０由来かを判別するように訓練される。第２訓練ステップでは、第１学習処理部１１２は、生成器５０により生成される画像６９が、判別器５４による判別を誤らせるようなものとなるように、生成器５０を訓練する。なお、図８Ａ及び図８Ｂの例では、学習データ由来であることを「真」と表現し、生成器５０由来であることを「偽」と表現している。ただし、各由来を表現する方法は、このような例に限定されなくてよく、実施の形態に応じて適宜選択されてよい。
【００９０】
第３訓練ステップでは、第１学習処理部１１２は、生成器５０により生成される画像６９が、推定器５２により画像６９に写る製品Ｒに含まれる欠陥の種別を推定した結果が対応するラベル６３と一致するようなものとなるように、生成器５０を訓練する。第４訓練ステップでは、第１学習処理部１１２は、ラベル６３及び潜在変数を生成器５０に入力することで生成器５０により生成された画像６９が、学習画像６１を復元したもの（つまり、学習画像６１に対応する画像）となるように、エンコーダ５６及び生成器５０を訓練する。潜在変数は、ラベル６３及び学習画像６１をエンコーダ５６に入力することでエンコーダ５６から得られる出力に基づいて導出される。第５訓練ステップでは、第１学習処理部１１２は、エンコーダ５６から得られる出力に基づいて導出される潜在変数の分布が所定の事前分布に従うようにエンコーダ５６を訓練する。事前分布の種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。事前分布には、例えば、ガウス分布等の公知の分布が用いられてよい。なお、第１〜第５訓練ステップを実行する順序は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。
【００９１】
具体的に、図８Ａに示されるとおり、第２学習処理部１１３は、各学習データセット６０について、学習画像６１を推定器５２の入力層５３１に入力し、推定器５２の演算処理を実行する。これにより、第２学習処理部１１３は、学習画像６１に写る製品Ｒに含まれる欠陥の種別及び範囲を推定した結果に対応する出力値を出力層５３３から取得する。第２学習処理部１１３は、欠陥の種別を推定した結果に対応する出力値とラベル６３の値との誤差（ＬC）を算出する。また、第２学習処理部１１３は、欠陥の範囲を推定した結果に対応する出力値と境界情報６５の値との誤差（ＬBB）を算出する。誤差（ＬBB）の計算には、例えば、ＩｏＵ（Intersection Over Union）等の公知の指標が用いられてよい。
【００９２】
また、第１学習処理部１１２は、各学習データセット６０について、学習画像６１及びラベル６３をエンコーダ５６の入力層５７１に入力し、エンコーダ５６の演算処理を実行する。これにより、第１学習処理部１１２は、何らかの特徴量を導出した結果に対応する出力値（潜在変数）をエンコーダ５６の出力層５７３から取得する。この出力値は、事前分布の任意の確率変数（例えば、平均及び共分散）に対応するように設定されてよい。第１学習処理部１１２は、この出力値と事前分布から導出された値との誤差（ＬKL）を算出する。
【００９３】
次に、第１学習処理部１１２は、エンコーダ５６から得られた出力値及び対応するラベル６３を生成器５０の入力層５１１に入力し、生成器５０の演算処理を実行する。これにより、第１学習処理部１１２は、各学習データセット６０について、学習画像６１に対応する画像をラベル６３から生成した結果に対応する出力（画像６９）を出力層５１３から取得する。
【００９４】
続いて、第１学習処理部１１２は、生成器５０により生成された各画像６９を判別器５４の入力層５５１に入力し、判別器５４の演算処理を実行する。これにより、第１学習処理部１１２は、入力画像が生成器５０由来か学習データセット６０由来（つまり、学習画像６１そのもの）かを判別した結果に対応する出力値を出力層５５３から取得する。この場面では、生成器５０により生成された各画像６９が入力画像であるため、判別器５４は、「偽」と判別するのが正解である。第１学習処理部１１２は、生成器５０により生成された各画像６９について、出力層５５３から得られる出力値とこの正解との誤差（ＬD）を算出する。
【００９５】
同様に、第１学習処理部１１２は、各学習データセット６０について、学習画像６１を判別器５４の入力層５５１に入力し、判別器５４の演算処理を実行する。これにより、第１学習処理部１１２は、入力画像が生成器５０由来か学習データセット６０由来かを判別した結果に対応する出力値を出力層５５３から取得する。この場面では、学習画像６１そのものが入力画像であるため、判別器５４は、「真」と判別するのが正解である。第１学習処理部１１２は、各学習データセット６０について、出力層５５３から得られる出力値とこの正解との誤差（ＬD）を算出する。
【００９６】
また、図８Ｂに示されるとおり、第１学習処理部１１２は、生成器５０により生成された各画像６９を判別器５４に入力することで得られた出力値について、判別器５４による判別を誤らせるような画像を生成するように生成器５０を訓練するための誤差（ＬGD）を算出する。詳細には、この生成器５０の訓練では、判別器５４による判別の結果を誤らせることが正解である。つまり、出力層５５３から得られる出力値が「真」に対応することが正解である。第１学習処理部１１２は、各学習データセット６０について、一連の処理により出力層５５３から得られる出力値とこの正解（つまり、「真」）との誤差（ＬGD）を算出する。
【００９７】
次に、第１学習処理部１１２は、生成器５０により生成された各画像６９を推定器５２の入力層５３１に入力し、推定器５２の演算処理を実行する。これにより、第１学習処理部１１２は、各画像６９に写る製品Ｒに含まれる欠陥の種別を推定した結果に対応する出力値を推定器５２の出力層５３３から取得する。第１学習処理部１１２は、欠陥の種別を推定した結果に対応する出力値と対応するラベル６３の値との誤差（ＬGC）を算出する。
【００９８】
次に、図８Ａに示されるとおり、第１学習処理部１１２は、各学習データセット６０について、エンコーダ５６の出力から学習画像６１を復元するデコーダとして機能ように生成器５０を訓練するための誤差を算出する。詳細には、第１学習処理部１１２は、各学習データセット６０について、生成器５０により生成された画像６９と対応する学習画像６１との誤差（ＬG）を算出する。
【００９９】
そして、図８Ａ及び図８Ｂに示されるとおり、第１学習処理部１１２及び第２学習処理部１１３は、算出される各誤差（ＬC、ＬBB、ＬKL、ＬD、ＬGD、ＬGC、ＬG）の和が小さくなるように、学習ネットワーク５００の各パラメータの値を調節する。詳細には、第２学習処理部１１３は、算出される各誤差（ＬC、ＬBB）の和が小さくなるように、推定器５２のパラメータの値を調節する。第１学習処理部１１２は、算出される誤差（ＬD）の和が小さくなるように、判別器５４のパラメータの値を調節する。第１学習処理部１１２は、算出される各誤差（ＬG、ＬGD、ＬGC）の和が小さくなるように、生成器５０のパラメータの値を調節する。第１学習処理部１１２は、算出される誤差（ＬKL、ＬG）の和が小さくなるように、エンコーダ５６のパラメータの値を調節する。
【０１００】
第１学習処理部１１２及び第２学習処理部１１３は、算出される各誤差（ＬC、ＬBB、ＬKL、ＬD、ＬGD、ＬGC、ＬG）の和が閾値以下になるまで、上記一連の処理により、各パラメータの値の調節を繰り返す。これにより、第１学習処理部１１２は、判別器５４、生成器５０、及びエンコーダ５６それぞれを訓練し、第２学習処理部１１３は、推定器５２を訓練する。これらのうち、各誤差（ＬC、ＬBB）の和が小さくなるように推定器５２のパラメータを調節する処理が、第２の機械学習の処理の一例である。誤差（ＬKL）の和が小さくなるように、エンコーダ５６のパラメータの値を調節する処理が、第１の機械学習の第５訓練ステップの一例である。誤差（ＬD）の和が小さくなるように判別器５４のパラメータの値を調節する処理が、第１訓練ステップの一例である。誤差（ＬGD）の和が小さくなるように生成器５０のパラメータの値を調節する処理が、第２訓練ステップの一例である。誤差（ＬGC）の和が小さくなるように生成器５０のパラメータの値を調節する処理が、第３訓練ステップの一例である。誤差（ＬG）の和が小さくなるように生成器５０及びエンコーダ５６のパラメータの値を調節する処理が、第４訓練ステップの一例である。なお、パラメータの調節を繰り返す基準は、このような閾値を用いる例に限定されなくてもよい。例えば、第１学習処理部１１２及び第２学習処理部１１３は、指定された回数分、上記一連の処理により、各パラメータの値の調節を繰り返すようにしてもよい。
【０１０１】
この機械学習が完了した後、保存処理部１１４は、構築された生成器５０の構成（例えば、ニューラルネットワークの層数、各層におけるニューロンの個数、ニューロン同士の結合関係、各ニューロンの伝達関数）、及び演算パラメータ（例えば、各ニューロン間の結合の重み、各ニューロンの閾値）を示す第１学習結果データ１２３を生成する。また、保存処理部１１４は、構築された推定器５２の構成（例えば、ニューラルネットワークの層数、各層におけるニューロンの個数、ニューロン同士の結合関係、各ニューロンの伝達関数）及び演算パラメータ（例えば、各ニューロン間の結合の重み、各ニューロンの閾値）を示す第２学習結果データ１２５を生成する。そして、保存処理部１１４は、生成した第１学習結果データ１２３及び第２学習結果データ１２５を所定の記憶領域に保存する。
【０１０２】
＜画像生成装置＞
次に、図９を用いて、本実施形態に係る画像生成装置２のソフトウェア構成の一例について説明する。図９は、本実施形態に係る画像生成装置２のソフトウェア構成の一例を模式的に例示する。
【０１０３】
画像生成装置２の制御部２１は、記憶部２２に記憶された画像生成プログラム２２１をＲＡＭに展開する。そして、制御部２１は、ＲＡＭに展開された画像生成プログラム２２１をＣＰＵにより解釈及び実行して、各構成要素を制御する。これによって、図９に示されるとおり、本実施形態に係る画像生成装置２は、生成部２１１、推定部２１２、判定部２１３、及び画像保存部２１４をソフトウェアモジュールとして備えるコンピュータとして動作する。すなわち、本実施形態では、画像生成装置２の各ソフトウェアモジュールも、上記学習装置１と同様に、制御部２１（ＣＰＵ）により実現される。
【０１０４】
生成部２１１は、第１学習結果データ１２３を保持することで、学習装置１により構築された学習済みの生成器５０を含んでいる。生成部２１１は、欠陥の種別を示す入力値７１を生成器５０に与えることで、欠陥を含む製品Ｒを写した生成画像７３を生成する。本実施形態では、生成部２１１は、第１学習結果データ１２３を参照して、学習済みの生成器５０の設定を行う。次に、生成部２１１は、所定の確率分布からノイズ（潜在変数）を取得する。所定の確率分布は、例えば、ガウス分布等であってよい。そして、生成部２１１は、取得したノイズ及び入力値７１を生成器５０の入力層５１１に入力し、生成器５０の演算処理を実行する。これにより、生成部２１１は、生成器５０の出力層５１３から生成画像７３を取得する。
【０１０５】
推定部２１２は、第２学習結果データ１２５を保持することで、学習装置１により構築された学習済みの推定器５２を含んでいる。推定部２１２は、生成された生成画像７３を推定器５２に与えることで、生成画像７３に写る製品Ｒに含まれる欠陥の種別及び範囲を推定する。本実施形態では、推定部２１２は、第２学習結果データ１２５を参照して、学習済みの推定器５２の設定を行う。そして、推定部２１２は、生成器５０により生成された生成画像７３を推定器５２の入力層５３１に入力し、推定器５２の演算処理を実行する。これにより、推定部２１２は、生成画像７３に写る製品Ｒに含まれる欠陥の種別及び範囲を推定した結果に対応する出力値を推定器５２の出力層５３３から取得する。
【０１０６】
判定部２１３は、生成画像７３に写る製品Ｒに含まれる欠陥の種別を推定した結果が入力値７１により示される欠陥の種別と一致するか否かを判定する。欠陥の種別を推定した結果が入力値７１により示される欠陥の種別と一致すると判定部２１３が判定した場合に、画像保存部２１４は、生成した生成画像７３と欠陥の範囲を推定した結果とを関連付けて所定の記憶領域に格納する。本実施形態では、画像保存部２１４は、欠陥の範囲を推定した結果を示す情報を境界情報７７として生成する。更に、画像保存部２１４は、入力値７１に対応して、欠陥の種別を示す情報をラベル７５として生成する。そして、画像保存部２１４は、生成画像７３、ラベル７５、及び境界情報７７を組み合わせることでデータセットを生成し、生成したデータセットを所定の記憶領域に格納する。なお、これらのうち、ラベル７５は省略されてもよい。
【０１０７】
＜推定器生成装置＞
次に、図１０を用いて、本実施形態に係る推定器生成装置３のソフトウェア構成の一例について説明する。図１０は、本実施形態に係る推定器生成装置３のソフトウェア構成の一例を模式的に例示する。
【０１０８】
推定器生成装置３の制御部３１は、記憶部３２に記憶された推定器生成プログラム３２１をＲＡＭに展開する。そして、制御部３１は、ＲＡＭに展開された推定器生成プログラム３２１に含まれる命令をＣＰＵにより解釈及び実行して、各構成要素を制御する。これによって、図１０に示されるとおり、本実施形態に係る推定器生成装置３は、データ取得部３１１、学習処理部３１２、及び保存処理部３１３をソフトウェアモジュールとして備えるコンピュータとして構成される。すなわち、本実施形態では、推定器生成装置３の各ソフトウェアモジュールも、上記学習装置１と同様に、制御部３１（ＣＰＵ）により実現される。
【０１０９】
データ取得部３１１は、製品Ｒを写したサンプル画像３２２１、製品Ｒに含まれ得る欠陥の種別を示すラベル３２２２、及び製品Ｒに含まれ得る欠陥の範囲を示す境界情報３２２３の組み合わせによりそれぞれ構成された複数の学習データセット３２２を取得する。サンプル画像３２２１は、機械学習の入力データ（訓練データ）として利用される。一方、ラベル３２２２及び境界情報３２２３は、機械学習の正解データ（教師データ）として利用される。すなわち、ラベル３２２２及び境界情報３２２３は、対応するサンプル画像３２２１に写る製品Ｒの良否を判定した結果（すなわち、正解）を示す。サンプル画像３２２１に写る製品Ｒに欠陥が含まれない場合、ラベル３２２２及び境界情報３２２３の各値は、製品Ｒに欠陥が含まれないことを示すように適宜設定されてよい。
【０１１０】
ここで、上記画像生成装置２により生成されたデータセットは、学習データセット３２２として利用されてよい。すなわち、少なくとも一部の学習データセット３２２のサンプル画像３２２１、ラベル３２２２、及び境界情報３２２３はそれぞれ、上記生成画像７３、ラベル７５、及び境界情報７７であってよい。また、データ取得部３１１は、学習データセット３２２を学習装置１に送信し、学習データセット３２２を学習データセット６０として利用させて、上記機械学習の処理を学習装置１に実行させてよい。つまり、データ取得部３１１は、サンプル画像３２２１を学習画像６１として利用させ、ラベル３２２２をラベル６３として利用させ、境界情報３２２３を境界情報６５として利用させることで、サンプル画像３２２１に対応する画像を生成するための生成器５０、並びに生成された画像に対して製品Ｒに含まれる欠陥の種別及び範囲を推定するための推定器５２を学習装置１に構築させてもよい。そして、データ取得部３１１は、構築された生成器５０及び推定器５２を画像生成装置２に利用させて、学習データセット３２２に対応する複数のデータセットを画像生成装置２に生成させてもよい。データ取得部３１１は、生成された複数のデータセットを学習データセット３２２として受信することで、機械学習に利用する学習データセット３２２の件数を増やすことができる。
【０１１１】
学習処理部３１２は、機械学習の対象となる推定器８０を保持している。学習処理部３１２は、取得した各学習データセット３２２を利用した機械学習を実施することで、与えられた画像に写る製品Ｒの良否を判定する能力を習得した学習済みの推定器８０を構築する。換言すると、学習処理部３１２は、各学習データセット３２２について、サンプル画像３２２１を入力すると、ラベル３２２２及び境界情報３２２３と一致する出力値を出力するように訓練された推定器８０を構築する。保存処理部３１３は、構築された学習済みの推定器８０に関する情報を所定の記憶領域に保存する。
【０１１２】
なお、学習装置２及び推定器生成装置３の間の関係において、学習処理部３１２は、第３学習処理部と称されてよい。上記データ取得部１１１及び保存処理部１１４はそれぞれ、第１データ取得部及び第１保存処理部と称されてよい。学習データセット６０は、第１学習データセットと称されてよい。これに応じて、データ取得部３１１及び保存処理部３１３はそれぞれ、第２データ取得部及び第２保存処理部と称されてよい。学習データセット３２２は、第２学習データセットと称されてよい。
【０１１３】
（推定器）
次に、本実施形態に係る推定器８０の構成の一例について説明する。図１０に示されるとおり、本実施形態に係る推定器８０は、上記生成器５０等と同様に、いわゆる深層学習に用いられる多層構造のニューラルネットワークにより構成されている。具体的に、推定器８０は、入力層８０１、中間層（隠れ層）８０２、及び出力層８０３を備えている。ただし、推定器８０の構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。例えば、推定器８０は、２層以上の中間層を備えてもよい。推定器８０の構成は、上記生成器５０等と異なっていてよい。
【０１１４】
各層８０１〜８０３に含まれるニューロン（ノード）の数は、実施の形態に応じて適宜設定されてよい。隣接する層のニューロン同士は適宜結合され、各結合には重み（結合荷重）が設定されている。図１０の例では、各ニューロンは、隣接する層の全てのニューロンと結合されている。しかしながら、ニューロンの結合は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。各ニューロンには閾値が設定されており、基本的には、各入力と各重みとの積の和が閾値を超えているか否かによって各ニューロンの出力が決定される。各層８０１〜８０３に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される推定器８０のパラメータの一例である。
【０１１５】
学習処理部３１２は、各学習データセット３２２について、サンプル画像３２２１を推定器８０の入力層８０１に入力し、推定器８０の演算処理を実行する。この演算処理の結果、学習処理部３１２は、サンプル画像３２２１に写る製品Ｒの良否を判定した結果、換言すると、製品Ｒに含まれ得る欠陥の種別及び範囲を推定した結果に対応する出力値を出力層８０３から取得する。
【０１１６】
続いて、学習処理部３１２は、取得した出力値とラベル３２２２及び境界情報３２２３の各値との誤差を算出する。そして、学習処理部３１２は、各学習データセット３２２について、算出される誤差の和が小さくなるように、推定器８０のパラメータの値を調節する。例えば、学習処理部３１２は、出力層８０３から得られる出力値とラベル３２２２及び境界情報３２２３の各値との誤差の和が閾値以下になるまで、上記一連の処理による推定器８０のパラメータの値の調節を繰り返す。これにより、学習処理部３１２は、各学習データセット３２２について、サンプル画像３２２１を入力層８０１に入力すると、入力したサンプル画像３２２１に関連付けられたラベル３２２２及び境界情報３２２３と一致する出力値を出力層８０３から出力するように訓練された推定器８０を構築することができる。なお、パラメータの調節を繰り返す基準は、このような閾値を用いる例に限定されなくてもよい。例えば、学習処理部３１２は、指定された回数分、上記一連の処理により、推定器８０のパラメータの値の調節を繰り返すようにしてもよい。
【０１１７】
この機械学習の処理が完了した後、保存処理部３１３は、構築された学習済みの推定器８０の構成（例えば、ニューラルネットワークの層数、各層におけるニューロンの個数、ニューロン同士の結合関係、各ニューロンの伝達関数）、及び演算パラメータ（例えば、各ニューロン間の結合の重み、各ニューロンの閾値）を示す第３学習結果データ３２５を生成する。そして、保存処理部３１３は、生成した第３学習結果データ３２５を所定の記憶領域に保存する。
【０１１８】
＜検査装置＞
次に、図１１を用いて、本実施形態に係る検査装置４のソフトウェア構成の一例について説明する。図１１は、本実施形態に係る検査装置４のソフトウェア構成の一例を模式的に例示する。
【０１１９】
検査装置４の制御部４１は、記憶部４２に記憶された検査プログラム４２１をＲＡＭに展開する。そして、制御部４１は、ＲＡＭに展開された検査プログラム４２１に含まれる命令をＣＰＵにより解釈及び実行して、各構成要素を制御する。これによって、図１１に示されるとおり、本実施形態に係る検査装置４は、対象データ取得部４１１、良否判定部４１２、及び出力部４１３をソフトウェアモジュールとして備えるコンピュータとして構成される。本実施形態では、検査装置４の各ソフトウェアモジュールも、上記学習装置１と同様に、制御部４１（ＣＰＵ）により実現される。
【０１２０】
対象データ取得部４１１は、外観検査の対象となる製品Ｒの写る対象画像４２２を取得する。本実施形態では、対象データ取得部４１１は、カメラＣＡにより製品Ｒを撮影することで、対象画像４２２を取得する。良否判定部４１２は、第３学習結果データ３２５を保持することで、推定器生成装置３により構築されたが学習済みの推定器８０を含んでいる。良否判定部４１２は、学習済みの推定器８０を利用して、対象画像４２２に写る製品Ｒの良否を判定する。
【０１２１】
具体的には、良否判定部４１２は、第３学習結果データ３２５を参照して、学習済みの推定器８０の設定を行う。次に、良否判定部４１２は、取得した対象画像４２２を推定器８０の入力層８０１に入力し、推定器８０の演算処理を実行する。これにより、良否判定部４１２は、対象画像４２２に写る製品Ｒの良否を判定した結果（詳細には、製品Ｒに含まれ得る欠陥の種別及び範囲を推定した結果）に対応する出力値を推定器８０の出力層８０３から取得する。本実施形態では、この出力値を得ることが、製品Ｒの良否を判定することに対応する。出力部４１３は、製品Ｒの良否を判定した結果に関する情報を出力する。
【０１２２】
＜その他＞
学習装置１、画像生成装置２、推定器生成装置３及び検査装置４の各ソフトウェアモジュールに関しては後述する動作例で詳細に説明する。なお、本実施形態では、学習装置１、画像生成装置２、推定器生成装置３及び検査装置４の各ソフトウェアモジュールがいずれも汎用のＣＰＵによって実現される例について説明している。しかしながら、以上のソフトウェアモジュールの一部又は全部が、１又は複数の専用のプロセッサにより実現されてもよい。また、学習装置１、画像生成装置２、推定器生成装置３及び検査装置４それぞれのソフトウェア構成に関して、実施形態に応じて、適宜、ソフトウェアモジュールの省略、置換及び追加が行われてもよい。
【０１２３】
§３  動作例
［学習装置］
次に、図１２を用いて、本実施形態に係る学習装置１の動作例について説明する。図１２は、本実施形態に係る学習装置１の処理手順の一例を示す。以下で説明する処理手順は、本発明の「学習方法」の一例である。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【０１２４】
（ステップＳ１０１）
ステップＳ１０１では、制御部１１は、データ取得部１１１として動作し、外観検査の対象となる製品Ｒを写した学習画像６１、製品Ｒに含まれる欠陥の種別を示すラベル６３、及び欠陥の範囲を示す境界情報６５の組み合わせによりそれぞれ構成された複数の学習データセット６０を取得する。
【０１２５】
学習データセット６０を取得する方法は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。例えば、カメラ及び欠陥のある製品Ｒを用意し、欠陥の部分が写るように製品Ｒをカメラにより撮影する。これにより、学習画像６１を生成することができる。次に、学習画像６１に写る製品Ｒに含まれる欠陥の種別を示すラベル６３、及び欠陥の範囲を示す境界情報６５を適宜生成する。例えば、ラベル６３は、欠陥の種別の一覧から対象の学習画像６１に写る欠陥を選択することで生成されてよい。また、境界情報６５は、学習画像６１上で欠陥の範囲を含むようにバウンディングボックスを指定することで生成されてよい。そして、生成したラベル６３及び境界情報６５を対応する学習画像６１に関連付ける。これにより、各学習データセット６０を生成することができる。
【０１２６】
この学習データセット６０の生成は、コンピュータの動作により自動的に行われてもよいし、オペレータの操作により手動的に行われてもよい。また、この学習データセット６０を生成する情報処理は、学習装置１において実行されてもよいし、学習装置１以外の他のコンピュータにおいて実行されてもよい。
【０１２７】
学習データセット６０を学習装置１が生成する場合、制御部１１は、自動的又はオペレータの操作により手動的に上記情報処理を実行することで、複数の学習データセット６０を取得する。一方、学習データセット６０を他のコンピュータが生成する場合、制御部１１は、例えば、ネットワーク、記憶媒体９１等を介して、他のコンピュータにより生成された複数の学習データセット６０を取得する。一部の学習データセット６０を学習装置１が生成し、残りの学習データセット６０を他のコンピュータが生成してもよい。
【０１２８】
取得する学習データセット６０の件数は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。複数の学習データセット６０を取得すると、制御部１１は、次のステップＳ１０２に処理を進める。
【０１２９】
（ステップＳ１０２及びＳ１０３）
ステップＳ１０２では、制御部１１は、第１学習処理部１１２として動作し、第１の機械学習を実行することで、各学習データセット６０に含まれるラベル６３の入力に対して、入力されたラベル６３に関連付けられた学習画像６１に対応する画像を生成するように訓練された生成器５０を構築する。ステップＳ１０３では、制御部１１は、第２学習処理部１１３として動作し、第２の機械学習を実行することで、各学習データセット６０に含まれる学習画像６１の入力に対して、入力された学習画像６１に関連付けられたラベル６３及び境界情報６５と一致するように、入力された学習画像６１に写る製品Ｒに含まれる欠陥の種別及び範囲を推定するように訓練された推定器５２を構築する。
【０１３０】
ステップＳ１０２及びＳ１０３を処理する順序は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。ステップＳ１０２及びＳ１０３の処理は、同時に実行されてもよいし、別々に実行されてもよい。本実施形態では、生成器５０及び推定器５２は、エンコーダ５６及び判別器５４と共に、学習ネットワーク５００を構成している。そこで、本ステップＳ１０２及びＳ１０３では、制御部１１は、学習ネットワーク５００の機械学習を実施することで、生成器５０及び推定器５２を訓練する。
【０１３１】
詳細には、まず、制御部１１は、処理対象となる学習ネットワーク５００を用意する。用意する学習ネットワーク５００の構成、各ニューロン間の結合の重みの初期値、及び各ニューロンの閾値の初期値は、テンプレートにより与えられてもよいし、オペレータの入力により与えられてもよい。また、再学習を行う場合には、制御部１１は、過去の機械学習を行うことで得られた学習結果データに基づいて、学習ネットワーク５００を用意してもよい。
【０１３２】
次に、制御部１１は、各学習データセット６０の学習画像６１を入力データとして利用し、対応するラベル６３及び境界情報６５を教師データとして利用して、推定器５２の学習処理を実行する。制御部１１は、各学習データセット６０の学習画像６１及びラベル６３を入力データとして利用し、事前分布から導出された値を教師データとして利用して、エンコーダ５６の学習処理を実行する。制御部１１は、各学習データセット６０について、エンコーダ５６から得られた出力値及びラベル６３を生成器５０に入力し、生成器５０の演算処理を実行する。これにより、制御部１１は、生成器５０から各画像６９を取得する。制御部１１は、各画像６９及び各学習画像６１を入力データとして利用し、各画像（６１、６９）の由来を教師データとして利用して、判別器５４の学習処理を実行する。制御部１１は、各学習データセット６０について、エンコーダ５６から得られた出力値及びラベル６３を入力データとして利用し、判別器５４に判別を誤らせることを教師データとして利用して、生成器５０の学習処理を実行する。制御部１１は、各学習データセット６０について、エンコーダ５６から得られた出力値及びラベル６３を入力データとして利用し、推定器５２が欠陥の種別を正しく推定することを教師データとして利用して、生成器５０の学習処理を実行する。制御部１１は、各学習データセット６０について、学習画像６１及びラベル６３を入力データとして利用し、学習画像６１を教師データとして利用して、エンコーダ５６及び生成器５０の学習処理を実行する。これらの学習処理には、確率的勾配降下法等が用いられてよい。
【０１３３】
例えば、制御部１１は、各学習データセット６０に含まれる学習画像６１を推定器５２の入力層５３１に入力し、入力側から順に各層５３１〜５３３に含まれる各ニューロンの発火判定を行う。これにより、制御部１１は、各学習画像６１に写る製品Ｒに含まれる欠陥の種別及び範囲を推定した結果に対応する出力値を出力層５３３から取得する。制御部１１は、欠陥の種別を推定した結果に対応する出力値とラベル６３の値との誤差（ＬC）を算出する。また、制御部１１は、欠陥の範囲を推定した結果に対応する出力値と境界情報６５の値との誤差（ＬBB）を算出する。
【０１３４】
次に、制御部１１は、各学習データセット６０に含まれる学習画像６１及びラベル６３をエンコーダ５６の入力層５７１に入力し、入力側から順に各層５７１〜５７３に含まれる各ニューロンの発火判定を行う。これにより、制御部１１は、何らかの特徴量を導出した結果に対応する出力値（潜在変数）をエンコーダ５６の出力層５７３から取得する。制御部１１は、この出力値と事前分布から導出された値との誤差（ＬKL）を算出する。事前分布には、例えば、ガウス分布等であってよい。
【０１３５】
次に、制御部１１は、エンコーダ５６から得られた出力値及び対応するラベル６３を生成器５０の入力層５１１に入力し、入力側から順に各層５１１〜５１３に含まれる各ニューロンの発火判定を行う。これにより、制御部１１は、各学習画像６１に対応する画像をラベル６３から生成した結果として各画像６９を出力層５１３から取得する。
【０１３６】
続いて、制御部１１は、生成器５０により生成された各画像６９を判別器５４の入力層５５１に入力し、入力側から順に各層５５１〜５５３に含まれる各ニューロンの発火判定を行う。これにより、制御部１１は、入力画像が生成器５０由来か学習データセット６０由来（つまり、学習画像６１そのもの）かを判別した結果に対応する出力値を出力層５５３から取得する。この場面では、生成器５０により生成された各画像６９が入力画像であるため、判別器５４は、「偽」と判別するのが正解である。制御部１１は、生成器５０により生成された各画像６９について、出力層５５３から得られる出力値とこの正解との誤差（ＬD）を算出する。
【０１３７】
また、制御部１１は、各学習データセット６０に含まれる学習画像６１を判別器５４の入力層５５１に入力し、入力側から順に各層５５１〜５５３に含まれる各ニューロンの発火判定を行う。これにより、制御部１１は、入力画像が生成器５０由来か学習データセット６０由来かを判別した結果に対応する出力値を出力層５５３から取得する。この場面では、学習画像６１そのものが入力画像であるため、判別器５４は、「真」と判別するのが正解である。制御部１１は、各学習データセット６０について、出力層５５３から得られる出力値とこの正解との誤差（ＬD）を算出する。
【０１３８】
次に、制御部１１は、生成器５０により生成された各画像６９を判別器５４に入力することで得られた出力値について、判別器５４による判別を誤らせるような画像を生成するように生成器５０を訓練するための誤差（ＬGD）を算出する。具体的には、生成器５０により生成された各画像６９を判別器５４に入力したときに、判別器５４から得られる出力値が「真」に対応することが正解である。制御部１１は、各学習データセット６０について、一連の処理により出力層５５３から得られる出力値とこの正解（つまり、「真」）との誤差（ＬGD）を算出する。
【０１３９】
次に、制御部１１は、生成器５０により生成された各画像６９を推定器５２の入力層５３１に入力し、入力側から順に各層５３１〜５３３に含まれる各ニューロンの発火判定を行う。これにより、制御部１１は、各画像６９に写る製品Ｒに含まれる欠陥の種別を推定した結果に対応する出力値を推定器５２の出力層５３３から取得する。制御部１１は、各学習データセット６０について、一連の処理により欠陥の種別を推定した結果に対応する出力値と対応するラベル６３の値との誤差（ＬGC）を算出する。
【０１４０】
次に、制御部１１は、各学習データセット６０について、エンコーダ５６の出力から学習画像６１を復元するデコーダとして機能ように生成器５０を訓練するための誤差を算出する。具体的には、制御部１１は、各学習データセット６０について、生成器５０により生成された画像６９と対応する学習画像６１との誤差（ＬG）を算出する。
【０１４１】
そして、制御部１１は、誤差逆伝播法（Back propagation）により、算出される各誤差（ＬC、ＬBB、ＬKL、ＬD、ＬGD、ＬGC、ＬG）を用いて、各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。すなわち、制御部１１は、算出される各誤差（ＬC、ＬBB）を用いて、推定器５２の各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。制御部１１は、算出される誤差（ＬD）を用いて、判別器５４の各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。制御部１１は、算出される各誤差（ＬG、ＬGD、ＬGC）を用いて、生成器５０の各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。制御部１１は、算出される各誤差（ＬKL、ＬG）を用いて、エンコーダ５６の各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。制御部１１は、算出した各誤差に基づいて、推定器５２、判別器５４、生成器５０、及びエンコーダ５６それぞれにおける各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの値の更新を行う。
【０１４２】
制御部１１は、算出される各誤差（ＬC、ＬBB、ＬKL、ＬD、ＬGD、ＬGC、ＬG）の和が閾値以下になるまで、上記一連の処理により、各パラメータの値の調節を繰り返す。各閾値は、実施の形態に応じて適宜設定されてよい。これにより、制御部１１は、各学習データセット６０について、学習画像６１の入力に対して、対応するラベル６３及び境界情報６５と一致するように、入力された学習画像６１に写る製品Ｒに含まれる欠陥の種別及び範囲を推定するように訓練された推定器５２を構築することができる。制御部１１は、入力された入力画像が、生成器５０由来か学習データセット６０由来かを適切に判別可能に訓練された判別器５４を構築することができる。制御部１１は、判別器５４が判別を誤り、対応するラベル６３と一致するように推定器５２が欠陥の種別を推定し、かつ学習画像６１に対応し得る画像６９を生成可能に訓練された生成器５０を構築することができる。制御部１１は、各学習データセット６０について、学習画像６１及びラベル６３の入力に対して、事前分布に従う出力値であって、学習画像６１に対応する画像を生成器５０に生成させることが可能な出力値を出力するように訓練されたエンコーダ５６を構築することができる。この機械学習の処理が完了すると、制御部１１は、次のステップＳ１０４に処理を進める。なお、パラメータの調節を繰り返す基準は、このような閾値を用いる例に限定されなくてもよい。例えば、制御部１１は、指定された回数分、上記一連の処理により、各パラメータの値の調節を繰り返すようにしてもよい。
【０１４３】
（ステップＳ１０４）
ステップＳ１０４では、制御部１１は、保存処理部１１４として動作し、構築された学習済みの生成器５０に関する情報、及び構築された学習済みの推定器５２に関する情報を所定の記憶領域に保存する。
【０１４４】
本実施形態では、制御部１１は、ステップＳ１０２により構築された学習済みの生成器５０の構成及びパラメータを示す情報を第１学習結果データ１２３として生成する。また、制御部１１は、ステップＳ１０３により構築された学習済みの推定器５２の構成及びパラメータを示す情報を第２学習結果データ１２５として生成する。そして、制御部１１は、生成した第１学習結果データ１２３及び第２学習結果データ１２５を所定の記憶領域に保存する。所定の記憶領域は、例えば、制御部１１内のＲＡＭ、記憶部１２、外部記憶装置、記憶メディア又はこれらの組み合わせであってよい。
【０１４５】
記憶メディアは、例えば、ＣＤ、ＤＶＤ等であってよく、制御部１１は、ドライブ１６を介して記憶メディアに第１学習結果データ１２３及び第２学習結果データ１２５を格納してもよい。外部記憶装置は、例えば、ＮＡＳ（Network Attached Storage）等のデータサーバであってよい。この場合、制御部１１は、ネットワークを介してデータサーバに第１学習結果データ１２３及び第２学習結果データ１２５を格納してもよい。また、外部記憶装置は、例えば、学習装置１に接続された外付けの記憶装置であってもよい。
【０１４６】
なお、エンコーダ５６及び判別器５４の取り扱いについては、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。例えば、制御部１１は、エンコーダ５６及び判別器５４についても、生成器５０及び推定器５２と同様に、それぞれの構成及びパラメータを示す情報を学習結果データとして生成し、生成した学習結果データを所定の記憶領域に保存してもよい。或いは、制御部１１は、この学習結果データの生成及び保存の処理を省略してもよい。
【０１４７】
第１学習結果データ１２３及び第２学習結果データ１２５を保存すると、制御部１１は、本動作例に係る処理を終了する。学習済みの生成器５０及び推定器５２を構築した後、制御部１１は、生成した第１学習結果データ１２３及び第２学習結果データ１２５を任意のタイミングで画像生成装置２に転送してもよい。画像生成装置２は、学習装置１から転送を受け付けることで、第１学習結果データ１２３及び第２学習結果データ１２５を取得してもよい。画像生成装置２は、学習装置１又はデータサーバにアクセスすることで、第１学習結果データ１２３及び第２学習結果データ１２５を取得してもよい。或いは、第１学習結果データ１２３及び第２学習結果データ１２５は、画像生成装置２に予め組み込まれてもよい。
【０１４８】
また、制御部１１は、上記ステップＳ１０１〜Ｓ１０４の処理を定期的に繰り返すことで、第１学習結果データ１２３及び第２学習結果データ１２５の少なくともいずれかを定期的に更新してもよい。この繰り返す際に、学習データセット６０の変更、修正、追加、削除等が適宜実行されてよい。そして、制御部１１は、更新した第１学習結果データ１２３及び第２学習結果データ１２５の少なくともいずれかを機械学習の実行毎に画像生成装置２に転送することで、画像生成装置２の保持する第１学習結果データ１２３及び第２学習結果データ１２５の少なくともいずれかを定期的に更新してもよい。
【０１４９】
［画像生成装置］
次に、図１３を用いて、本実施形態に係る画像生成装置２の動作例について説明する。図１３は、本実施形態に係る画像生成装置２の処理手順の一例を示す。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【０１５０】
（ステップＳ２０１）
ステップＳ２０１では、制御部２１は、生成部２１１として動作し、学習装置１により構築された学習済みの生成器５０を利用して、指定された欠陥を含む製品Ｒの写り得る生成画像７３を生成する。
【０１５１】
本実施形態では、制御部２１は、第１学習結果データ１２３を参照して、学習済みの生成器５０の設定を行う。次に、制御部２１は、所定の確率分布からノイズ（潜在変数）を取得する。所定の確率分布は、例えば、ガウス分布等であってよい。また、制御部２１は、欠陥の種別を示す入力値７１を適宜取得する。例えば、欠陥の種別の一覧を示す情報（不図示）が、画像生成プログラム２２１内、記憶部２２、外部記憶装置、記憶メディア等に格納されていてよい。この場合、制御部２１は、この欠陥の種別の一覧を示す情報を取得し、取得した情報を参照して、画像を生成する対象に指定する欠陥を一覧から選択することで、入力値７１を取得してもよい。また、例えば、制御部２１は、所定の数値範囲からランダムに入力値７１を選択してもよい。そして、制御部２１は、取得したノイズ及び入力値７１を生成器５０の入力層５１１に入力し、入力側から順に各層５１１〜５１３に含まれる各ニューロンの発火判定を行う。これにより、制御部２１は、生成器５０の出力層５１３から生成画像７３を取得する。生成画像７３の生成が完了すると、制御部２１は、次のステップＳ２０２に処理を進める。
【０１５２】
（ステップＳ２０２）
ステップＳ２０２では、制御部２１は、推定部２１２として動作し、学習装置１により構築された学習済みの推定器５２を利用して、生成画像７３に写り得る製品Ｒに含まれる欠陥の種別及び範囲を推定する。
【０１５３】
本実施形態では、制御部２１は、第２学習結果データ１２５を参照して、学習済みの推定器５２の設定を行う。そして、制御部２１は、生成器５０により生成された生成画像７３を推定器５２の入力層５３１に入力し、入力側から順に各層５３１〜５３３に含まれる各ニューロンの発火判定を行う。これにより、制御部２１は、生成画像７３に写る製品Ｒに含まれる欠陥の種別及び範囲を推定した結果に対応する出力値を推定器５２の出力層５３３から取得する。欠陥の種別及び範囲の推定が完了すると、制御部２１は、次のステップＳ２０３に処理を進める。
【０１５４】
（ステップＳ２０３及びＳ２０４）
ステップＳ２０３では、制御部２１は、判定部２１３として動作し、生成画像７３に写る製品Ｒに含まれる欠陥の種別を推定した結果が入力値７１により示される欠陥の種別と一致するか否かを判定する。ステップＳ２０４では、制御部２１は、ステップＳ２０３の判定結果に応じて、条件分岐を処理する。
【０１５５】
推定器５２により欠陥の種別を推定した結果が入力値７１と一致していることは、指定した欠陥を含む製品Ｒを写した画像（生成画像７３）を生成器５０により生成することができたことを示す。そのため、欠陥の種別を推定した結果が入力値７１により示される欠陥の種別と一致すると判定した場合、制御部２１は、この生成画像７３を保存するための次のステップＳ２０５に処理を進める。
【０１５６】
一方、推定器５２により欠陥の種別を推定した結果が入力値７１と一致していないことは、指定した欠陥を含む製品Ｒを写した画像を生成器５０により生成することができなかったことを示す。そのため、欠陥の種別を推定した結果が入力値７１により示される欠陥の種別と一致しないと判定した場合、制御部２１は、次のステップＳ２０５の処理を省略し、本動作例に係る処理を終了する。
【０１５７】
この場合、制御部２１は、ステップＳ２０１により生成した生成画像７３を破棄してもよい。或いは、制御部２１は、生成した生成画像７３に対して欠陥の種別及び範囲の少なくとも一方の指定を受け付けてもよい。そして、制御部２１は、指定された欠陥の種別及び範囲の少なくとも一方を示す情報を生成画像７３に関連付けることでデータセットを生成し、生成したデータセットを所定の記憶領域に保存してもよい。所定の記憶領域は、例えば、制御部２１内のＲＡＭ、記憶部２２、外部記憶装置、記憶メディア又はこれらの組み合わせであってよい。
【０１５８】
（ステップＳ２０５）
ステップＳ２０５では、制御部２１は、画像保存部２１４として動作し、生成した生成画像７３と欠陥の範囲を推定した結果とを関連付けて所定の記憶領域に格納する。本実施形態では、制御部２１は、欠陥の範囲を推定した結果を示す情報を境界情報７７として生成する。また、制御部２１は、入力値７１に対応して、欠陥の種別を示す情報をラベル７５として生成する。そして、制御部２１は、生成画像７３、ラベル７５、及び境界情報７７を組み合わせることでデータセットを生成し、生成したデータセットを所定の記憶領域に格納する。所定の記憶領域は、例えば、制御部２１内のＲＡＭ、記憶部２２、外部記憶装置、記憶メディア又はこれらの組み合わせであってよい。なお、この一連の処理において、ラベル７５は省略されてもよい。すなわち、制御部２１は、ラベル７５の生成を省略し、生成画像７３及び境界情報７７を組み合わせることでデータセットを生成し、生成したデータセットを所定の記憶領域に格納してもよい。
【０１５９】
以上により、制御部２１は、本動作例に係る処理を終了する。制御部２１は、上記ステップＳ２０１〜Ｓ２０５を繰り返し実行することで、複数のデータセットを生成してもよい。生成するデータセットの数は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。また、制御部２１は、生成したデータセットを学習データセット３２２として利用させるために、生成したデータセットを推定器生成装置３に転送してもよい。
【０１６０】
［推定器生成装置］
次に、図１４を用いて、本実施形態に係る推定器生成装置３の動作例について説明する。図１４は、本実施形態に係る推定器生成装置３の処理手順の一例を例示するフローチャートである。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【０１６１】
（ステップＳ３０１）
ステップＳ３０１では、制御部３１は、データ取得部３１１として動作し、製品Ｒを写したサンプル画像３２２１、製品Ｒに含まれ得る欠陥の種別を示すラベル３２２２、及び製品Ｒに含まれ得る欠陥の範囲を示す境界情報３２２３の組み合わせによりそれぞれ構成された複数の学習データセット３２２を取得する。
【０１６２】
学習データセット３２２を取得する方法は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。例えば、カメラ及び製品Ｒを用意し、欠陥のある又は欠陥のない製品Ｒをカメラにより撮影する。これにより、サンプル画像３２２１を生成することができる。次に、サンプル画像３２２１に写る製品Ｒに含まれ得る欠陥の種別を示すラベル３２２２、及び欠陥の範囲を示す境界情報３２２３を適宜生成する。ラベル３２２２及び境界情報３２２３を生成する方法は、上記ラベル６３及び境界情報６５を生成する方法と同様であってよい。境界情報３２２３は、バウンディングボックスにより欠陥の範囲を示すように適宜生成されてよい。また、サンプル画像３２２１に写る製品Ｒに欠陥が含まれない場合、ラベル３２２２及び境界情報３２２３の各値は、製品Ｒに欠陥が含まれないことを示すように適宜設定されてよい。そして、生成したラベル３２２２及び境界情報３２２３を対応するサンプル画像３２２１に関連付ける。これにより、各学習データセット３２２を生成することができる。
【０１６３】
この学習データセット３２２の生成は、コンピュータの動作により自動的に行われてもよいし、オペレータの操作により手動的に行われてもよい。また、この学習データセット３２２を生成する情報処理は、推定器生成装置３において実行されてもよいし、推定器生成装置３以外の他のコンピュータにより行われてもよい。
【０１６４】
学習データセット３２２を推定器生成装置３が生成する場合、制御部３１は、自動的又はオペレータの操作により手動的に上記情報処理を実行することで、複数の学習データセット３２２を取得する。一方、学習データセット３２２を他のコンピュータが生成する場合、制御部３１は、例えば、ネットワーク、記憶媒体９３等を介して、他のコンピュータにより生成された複数の学習データセット３２２を取得する。一部の学習データセット３２２を推定器生成装置３が生成し、残りの学習データセット３２２を他のコンピュータが生成してもよい。
【０１６５】
ここで、取得される学習データセット３２２の少なくとも一部は、画像生成装置２により生成されたデータセットであってよい。すなわち、少なくとも一部の学習データセット３２２のサンプル画像３２２１、ラベル３２２２、及び境界情報３２２３はそれぞれ、上記生成画像７３、ラベル７５、及び境界情報７７であってよい。制御部３１は、ネットワーク、記憶媒体９３等を介して、画像生成装置２により生成されたデータセットを学習データセット３２２として取得してもよい。
【０１６６】
取得する学習データセット３２２の件数は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。複数の学習データセット３２２を取得すると、制御部３１は、次のステップＳ３０２に処理を進める。
【０１６７】
（ステップＳ３０２）
ステップＳ３０２では、制御部３１は、学習処理部３１２として動作し、複数の学習データセット３２２を利用して、推定器８０の機械学習を実施する。この機械学習では、制御部３１は、各学習データセット３２２について、サンプル画像３２２１を入力層８０１に入力すると、対応するラベル３２２２及び境界情報３２２３と一致する出力値を出力層８０３から出力するように推定器８０を訓練する。これにより、制御部３１は、製品Ｒの良否を判定する能力を習得した学習済みの推定器８０を構築する。
【０１６８】
この機械学習の処理は、基本的には、上記学習装置１による機械学習の処理と同様に実行されてよい。すなわち、制御部３１は、処理対象となる推定器８０を用意する。用意する推定器８０の構成、各ニューロン間の結合の重みの初期値、及び各ニューロンの閾値の初期値は、テンプレートにより与えられてもよいし、オペレータの入力により与えられてもよい。また、再学習を行う場合には、制御部３１は、過去の機械学習を行うことで得られた学習結果データに基づいて、推定器８０を用意してもよい。
【０１６９】
次に、制御部３１は、ステップＳ３０１で取得した各学習データセット３２２に含まれるサンプル画像３２２１を入力データとして利用し、対応するラベル３２２２及び境界情報３２２３を教師データとして利用して、推定器８０の学習処理を実行する。この学習処理には、確率的勾配降下法等が用いられてよい。
【０１７０】
例えば、制御部３１は、各学習データセット３２２について、サンプル画像３２２１を入力層８０１に入力し、入力側から順に各層８０１〜８０３に含まれる各ニューロンの発火判定を行う。これにより、制御部３１は、サンプル画像３２２１に写る製品Ｒに含まれ得る欠陥の種別及び範囲を推定した結果に対応する出力値を出力層８０３から取得する。次に、制御部３１は、各結果に対応する出力値とラベル３２２２及び境界情報３２２３の各値との誤差を算出する。続いて、制御部３１は、誤差逆伝播法により、算出した出力値の誤差を用いて、推定器８０における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。そして、制御部３１は、算出した各誤差に基づいて、推定器８０における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの値の更新を行う。
【０１７１】
制御部３１は、上記一連の処理を繰り返すことで、各学習データセット３２２について、サンプル画像３２２１を入力すると、対応するラベル３２２２及び境界情報３２２３と一致する出力値を出力するように、推定器８０のパラメータの値を調節する。例えば、制御部３１は、各学習データセット３２２について、出力層８０３から得られる出力値とラベル３２２２及び境界情報３２２３の各値との誤差の和が閾値以下になるまで、上記一連の処理による推定器８０のパラメータの値の調節を繰り返す。閾値は、実施の形態に応じて適宜設定されてよい。これにより、制御部３１は、各学習データセット３２２について、サンプル画像３２２１を入力層８０１に入力すると、対応するラベル３２２２及び境界情報３２２３と一致する出力値を出力層８０３から出力するように訓練された推定器８０を構築することができる。この推定器８０の機械学習の処理が完了すると、制御部３１は、次のステップＳ３０３に処理を進める。なお、パラメータの調節を繰り返す基準は、このような閾値を用いる例に限定されなくてもよい。例えば、制御部３１は、、指定された回数分、上記一連の処理により、推定器８０のパラメータの値の調節を繰り返すようにしてもよい。
【０１７２】
（ステップＳ３０３）
ステップＳ３０３では、制御部３１は、保存処理部３１３として動作し、構築された学習済みの推定器８０に関する情報を所定の記憶領域に保存する。本実施形態では、制御部３１は、ステップＳ３０２により構築された学習済みの推定器８０の構成及びパラメータを示す情報を第３学習結果データ３２５として生成する。そして、制御部３１は、生成した第３学習結果データ３２５を所定の記憶領域に保存する。所定の記憶領域は、例えば、制御部３１内のＲＡＭ、記憶部３２、外部記憶装置（例えば、ＮＡＳ等のデータサーバ）、記憶メディア又はこれらの組み合わせであってよい。これにより、制御部３１は、本動作例に係る処理を終了する。
【０１７３】
なお、学習済みの推定器８０を構築した後、制御部３１は、生成した第３学習結果データ３２５を任意のタイミングで検査装置４に転送してもよい。検査装置４は、推定器生成装置３から転送を受け付けることで第３学習結果データ３２５を取得してもよいし、推定器生成装置３又はデータサーバにアクセスすることで第３学習結果データ３２５を取得してもよい。第３学習結果データ３２５は、検査装置４に予め組み込まれてもよい。
【０１７４】
また、制御部３１は、上記ステップＳ３０１〜３０３の処理を定期的に繰り返すことで、第３学習結果データ３２５を定期的に更新してもよい。この繰り返す際には、学習データセット３２２の変更、修正、追加、削除等が適宜実行されてよい。そして、制御部３１は、更新した第３学習結果データ３２５を機械学習の実行毎に検査装置４に転送することで、検査装置４の保持する第３学習結果データ３２５を定期的に更新してもよい。
【０１７５】
更に、制御部３１は、評価用データセットを利用して、構築した推定器８０の判定性能を評価してもよい。評価用データセットは、上記各学習データセット３２２と同様に構成可能である。すなわち、評価用データセットは、製品Ｒを写したサンプル画像、製品Ｒに含まれ得る欠陥の種別を示すラベル、及び製品Ｒに含まれ得る欠陥の範囲を示す境界情報の組み合わせにより構成されてよい。制御部３１は、後述するステップＳ４０２と同様に、推定器８０を利用して、評価用データセットのサンプル画像に写る製品Ｒの良否を判定する。制御部３１は、この判定結果とラベル及び境界情報により示される正解とを照合することで、推定器８０の判定性能を評価することができる。
【０１７６】
この推定器８０の判定性能が所定の基準以下である（例えば、正答率が閾値以下である）場合には、制御部３１は、複数の学習データセット３２２から選択した１又は複数の学習データセット３２２を学習装置１に送信してもよい。次に、制御部３１は、送信した学習データセット３２２を学習データセット６０として利用させて、生成器５０及び推定器５２の機械学習の処理を学習装置１に実行させてよい。これにより、サンプル画像３２２１に対応する画像を生成するための生成器５０、並びに生成された画像に対して製品Ｒに含まれる欠陥の種別及び範囲を推定するための推定器５２を学習装置１に構築させることができる。制御部３１は、学習装置１に学習済みの生成器５０及び推定器５２を画像生成装置２へ転送させてもよい。そして、制御部３１は、学習済みの生成器５０及び推定器５２を利用して、生成画像７３、ラベル７５、及び境界情報７７の組み合わせによりそれぞれ構成された１又は複数のデータセットを生成する処理を画像生成装置２に実行させてもよい。
【０１７７】
これに応じて、制御部３１は、画像生成装置２により生成された１又は複数のデータセットを学習データセット３２２として取得してもよい。そして、制御部３１は、取得した１又は複数の学習データセット３２２を元の学習データ群に追加してもよい。これにより、制御部３１は、機械学習に利用する学習データセット３２２の件数を増やすことができる。制御部３１は、この新たな学習データ群を利用して、推定器８０の機械学習を再度実施してもよい。この一連の再学習の処理により、構築された学習済みの推定器８０の判定性能を高めることができる。
【０１７８】
［検査装置］
次に、図１５を用いて、本実施形態に係る検査装置４の動作例について説明する。図１５は、本実施形態に係る検査装置４の処理手順の一例を例示するフローチャートである。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【０１７９】
（ステップＳ４０１）
ステップＳ４０１では、制御部４１は、対象データ取得部４１１として動作し、外観検査の対象となる製品Ｒの写る対象画像４２２を取得する。本実施形態では、検査装置４は、外部インタフェース４７を介してカメラＣＡに接続している。そのため、制御部４１は、カメラＣＡから対象画像４２２を取得する。この対象画像４２２は、動画像データであってもよいし、静止画像データであってもよい。対象画像４２２を取得すると、制御部４１は、次のステップＳ４０２に処理を進める。
【０１８０】
ただし、対象画像４２２を取得する経路は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、検査装置４とは異なる他の情報処理装置が、カメラＣＡに接続されていてもよい。この場合、制御部４１は、他の情報処理装置を介して対象画像４２２を取得してもよい。
【０１８１】
（ステップＳ４０２）
ステップＳ４０２では、制御部４１は、良否判定部４１２として動作し、学習済みの推定器８０を利用して、対象画像４２２に写る製品Ｒの良否を判定する。
【０１８２】
具体的には、制御部４１は、第３学習結果データ３２５を参照して、学習済みの推定器８０の設定を行う。次に、良否判定部４１２は、取得した対象画像４２２を推定器８０の入力層８０１に入力し、入力側から順に各層８０１〜８０３に含まれる各ニューロンの発火判定を行う。これにより、制御部４１は、対象画像４２２に写る製品Ｒに含まれ得る欠陥の種別及び範囲を推定した結果に対応する出力値を推定器８０の出力層８０３から取得する。
【０１８３】
これにより、制御部４１は、推定器８０から取得した出力値に基づいて、対象画像４２２に写る製品Ｒの良否を判定する。推定器８０から取得した出力値が製品Ｒに欠陥が含まれることを示す場合、制御部４１は、この出力値から、製品Ｒは良品ではない（すなわち、欠陥を含む）と判定することができる。この場合、制御部４１は、推定器８０から取得した出力値から、その欠陥の種別及び範囲を特定することができる。欠陥の範囲は、バウンディングボックスにより示される。一方、推定器８０から取得した出力値が製品Ｒに欠陥が含まれないことを示す場合、制御部４１は、この出力値から、製品Ｒは良品である（すなわち、欠陥を含まない）と判定することができる。
【０１８４】
なお、この良否の判定は、推定器８０の出力形式に応じて適宜行われてもよい。例えば、推定器８０は、欠陥の各種別に応じて、その欠陥の発生確率を出力するように構成されてもよい。この場合、制御部４１は、推定器８０の出力値と閾値とを比較することで、製品Ｒの良否を判定することができる。すなわち、閾値を超える（又は以上の）出力値が存在する場合に、制御部４１は、製品Ｒは良品ではなく、その出力値に対応する種別の欠陥が製品Ｒに含まれていると判定することができる。他方、そうではない場合に、制御部４１は、製品Ｒは良品であると判定することができる。
【０１８５】
また、例えば、推定器８０は、欠陥の種別（欠陥を含まないことを含む）に対応するクラスを出力するように構成されてもよい。この場合、検査装置４は、推定器８０から得られる出力値と欠陥の種別とを対応付けたテーブル形式等の参照情報（不図示）を記憶部４２に保持していてもよい。これに応じて、制御部４１は、参照情報を参照することにより、推定器８０から得られた出力値に応じて、対象画像４２２に写る製品Ｒの良否を判定することができる。
【０１８６】
以上により、制御部４１は、推定器８０を利用して、対象画像４２２に写る製品Ｒの良否を判定することができる。製品Ｒの良否の判定が完了すると、制御部４１は、次のステップＳ４０３に処理を進める。
【０１８７】
（ステップＳ４０３）
ステップＳ４０３では、制御部４１は、出力部４１３として動作し、ステップＳ４０２により製品Ｒの良否を判定した結果を出力する。
【０１８８】
製品Ｒの良否を判定した結果の出力形式は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、制御部４１は、製品Ｒの良否を判定した結果をそのまま出力装置４５に出力してもよい。更に、ステップＳ４０２において、製品Ｒに欠陥があると判定した場合、制御部４１は、欠陥を発見したことを知らせるための警告を本ステップＳ４０３の出力処理として行ってもよい。このとき、制御部４１は、発見した欠陥の存在する範囲をバウンディングボックスにより示すことができる。
【０１８９】
また、制御部４１は、本ステップＳ４０３の出力処理として、製品Ｒの良否を判定した結果に応じた所定の制御処理を実行してもよい。具体例として、検査装置４は、製品の搬送を行う製造ラインに接続されていてもよい。この場合に、制御部４１は、製品Ｒに欠陥があると判定したときに、欠陥のある製品Ｒを欠陥のない製品とは異なる経路で搬送する指令を製造ラインに送信する処理を本ステップ４０３の出力処理として行ってもよい。
【０１９０】
製品Ｒの良否を判定した結果の出力処理が完了すると、制御部４１は、本動作例に係る処理を終了する。なお、制御部４１は、製造ライン上を搬送される製品ＲがカメラＣＡの撮影範囲に入る度に、ステップＳ４０１〜Ｓ４０３の一連の処理を実行してもよい。これにより、検査装置４は、製造ライン上を搬送される製品Ｒの外観検査を行うことができる。
【０１９１】
［特徴］
以上のとおり、本実施形態に係る学習装置１は、ステップＳ１０２及びＳ１０３の処理により、学習画像６１に対応する画像を生成するように訓練された生成器５０を構築すると共に、学習画像６１に写る欠陥の種別及び範囲を推定するように訓練された推定器５２を構築することができる。これらのうち、生成器５０を利用することで、指定した欠陥を含む製品の写り得るサンプル画像を自動的に生成することができる。加えて、推定器５２を利用することで、生成されたサンプル画像に写る製品Ｒに含まれる欠陥の範囲を推定し、推定した欠陥の範囲を示す情報を境界情報としてサンプル画像に自動的に付与することができる。したがって、本実施形態によれば、学習データを用意する際に、サンプル画像内において欠陥の範囲を手動で指定する手間を省略することができる。そのため、欠陥の範囲を検出する能力を習得させるための機械学習に利用する学習データを用意するのにかかるコストを低減することができる。
【０１９２】
また、本実施形態に係る画像生成装置２では、ステップＳ２０１〜Ｓ２０５の一連の処理により、学習装置１により構築された生成器５０及び推定器５２を利用することで、欠陥の範囲を手動で指定する手間を省略した上で、欠陥の範囲を検出する能力を習得させるための機械学習に利用可能なデータセットを生成することができる。加えて、本実施形態では、画像生成装置２により生成されたデータセットを学習データセット３２２として利用することができる。これにより、本実施形態に係る推定器生成装置３では、上記ステップＳ３０１において、学習データセット３２２を収集するコストを低減することができる。更に、本実施形態では、画像生成装置２にデータセットを生成させることで、推定器８０の機械学習に利用する学習データセット３２２の件数を増やすことができる。これにより、本実施形態に係る検査装置４では、製品Ｒの良否を判定する精度を高めることができる。
【０１９３】
§４  変形例
以上、本発明の実施の形態を詳細に説明してきたが、前述までの説明はあらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。例えば、以下のような変更が可能である。なお、以下では、上記実施形態と同様の構成要素に関しては同様の符号を用い、上記実施形態と同様の点については、適宜説明を省略した。以下の変形例は適宜組み合わせ可能である。
【０１９４】
＜４．１＞
上記実施形態では、生成器５０、推定器５２、判別器５４、エンコーダ５６、及び推定器８０それぞれには、いわゆる多層構造の全結合ニューラルネットワークが用いられている。しかしながら、生成器５０、推定器５２、判別器５４、エンコーダ５６、及び推定器８０それぞれを構成するニューラルネットワークの構造及び種類は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、生成器５０、推定器５２、判別器５４、エンコーダ５６、及び推定器８０それぞれには、畳み込みニューラルネットワークが利用されてもよい。
【０１９５】
また、上記実施形態では、生成器５０、推定器５２、及び推定器８０を構成する学習モデルとしてニューラルネットワークが用いられている。しかしながら、生成器５０、推定器５２、及び推定器８０それぞれを構成する学習モデルは、画像の機械学習を実施可能であれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。
【０１９６】
＜４．２＞
上記実施形態では、第１学習結果データ１２３は、生成器５０の構成を示す情報を含んでいる。第２学習結果データ１２５は、推定器５２の構成を示す情報を含んでいる。第３学習結果データ３２５は、推定器８０の構成を示す情報を含んでいる。しかしながら、各学習結果データ（１２３、１２５、３２５）の構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。例えば、それぞれに利用するニューラルネットワークの構成が各装置で共通化されている場合には、各学習結果データ（１２３、１２５、３２５）は、ニューラルネットワークの構成を示す情報を含んでいなくてもよい。
【０１９７】
＜４．３＞
上記実施形態では、境界情報（６５、７７、３２２３）は、バウンディングボックスにより欠陥の範囲を示す。しかしながら、欠陥の範囲を示す方法は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。欠陥の範囲は、バウンディングボックス以外の形式で示されてもよい。
【０１９８】
＜４．４＞
上記実施形態では、推定器生成装置３は、ラベル３２２２及び境界情報３２２３を教師データとして利用することで、画像に写る製品Ｒに含まれ得る欠陥の種別及び範囲を推定するように訓練された推定器８０を構築している。しかしながら、推定器８０に習得される能力は、このような例に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。例えば、この一連の処理から、ラベル３２２２は省略されてよい。これにより、推定器生成装置３は、欠陥の範囲のみを推定するように訓練された推定器８０を構築することができる。
【０１９９】
＜４．５＞
上記実施形態に係る学習ネットワーク５００では、エンコーダ５６の出力が生成器５０の入力に接続されており、生成器５０の出力が推定器５２の入力及び判別器５４の入力に接続されている。そして、機械学習の処理では、算出される各誤差（ＬC、ＬBB、ＬKL、ＬD、ＬGD、ＬGC、ＬG）の和が小さくなるように、学習ネットワーク５００の各パラメータの値が調節される。しかしながら、学習ネットワーク５００の構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。各機械学習の処理は、生成器５０及び推定器５２の構成に応じて適宜選択されてよい。生成器５０及び推定器５２はそれぞれ単独で訓練されてもよい。
【０２００】
図１６は、本変形例に係る学習ネットワーク５００Ａを保持する学習装置１のソフトウェア構成の一例を模式的に例示する。上記実施形態に係る学習ネットワーク５００が学習ネットワーク５００Ａに置き換わる点を除き、本変形例に係る学習装置１は、上記実施形態と同様に構成されている。
【０２０１】
本変形例に係る学習ネットワーク５００Ａは、生成器５０Ａ及び判別器５４Ａを含んでいる。生成器５０Ａの出力は、判別器５４Ａの入力に接続されている。一方、推定器５２Ａは、生成器５０Ａには接続されておらず、学習ネットワーク５００Ａから切り離されている。本変形例では、推定器５２Ａは、個別に訓練される。
【０２０２】
次に、図１７Ａ〜図１７Ｃを更に用いて、生成器５０Ａ及び推定器５２Ａの機械学習の過程の一例について説明する。図１７Ａ及び図１７Ｂは、生成器５０Ａを含む学習ネットワーク５００Ａの機械学習の過程の一例を模式的に例示する。図１７Ｃは、推定器５２Ａの機械学習の過程の一例を模式的に例示する。
【０２０３】
本変形例では、第１学習処理部１１２は、学習ネットワーク５００Ａの機械学習を行う。この学習ネットワーク５００Ａの機械学習を行うことは、判別器５４Ａを訓練する第１訓練ステップ及び生成器５０Ａを訓練する第２訓練ステップを交互に行うことを含む。本変形例に係る生成器５０Ａ及び判別器５４Ａそれぞれの構成は、上記実施形態に係る生成器５０及び判別器５４それぞれと同様であってよい。本変形例に係る第１訓練ステップ及び第２訓練ステップはそれぞれ、上記実施形態に係る第１訓練ステップ及び第２訓練ステップとほぼ同様である。すなわち、第１訓練ステップでは、第１学習処理部１１２は、判別器５４Ａに入力された入力画像が、生成器５０Ａにより生成された画像６９であるか複数の学習データセット６０から得られた学習画像６１であるかを判別するように、判別器５４Ａを訓練する。第２訓練ステップでは、第１学習処理部１１２は、生成器５０Ａにより生成される画像６９が、判別器５４Ａによる判別を誤らせるようなものとなるように、生成器５０Ａを訓練する。
【０２０４】
具体的には、図１７Ａに示されるとおり、第１訓練ステップでは、第１学習処理部１１２は、所定の確率分布からノイズ（潜在変数）を抽出し、抽出したノイズと各ラベル６３とを組み合わせて、複数の第１データセットを生成する。所定の確率分布は、例えば、ガウス分布、一様分布等であってよい。ノイズの抽出には、任意の確率分布が利用されてよい。続いて、第１学習処理部１１２は、各第１データセット（各ラベル６３及びノイズ）を生成器５０Ａに入力し、生成器５０Ａの演算処理を実行する。これにより、第１学習処理部１１２は、各ラベル６３から画像を生成した結果に対応する出力（画像６９）を生成器５０Ａから取得する。第１学習処理部１１２は、生成された各画像６９と各ラベル６３とを組み合わせることで、複数の第２データセットを生成する。
【０２０５】
次に、第１学習処理部１１２は、各第２データセット（生成器５０Ａの生成した各画像６９及び各ラベル６３）を判別器５４Ａに入力し、判別器５４Ａの演算処理を実行する。これにより、第１学習処理部１１２は、入力画像が生成器５０Ａ由来か学習データセット６０由来かを判別した結果に対応する出力値を判別器５４Ａから取得する。この場面では、生成器５０Ａにより生成された各画像６９が入力画像であるため、判別器５４Ａは、「偽」と判別するのが正解である。第１学習処理部１１２は、各第２データセットについて、判別器５４Ａから得られる出力値とこの正解との誤差（ＬDA）を算出する。
【０２０６】
同様に、第１学習処理部１１２は、各学習データセット６０に含まれる学習画像６１及びラベル６３を判別器５４Ａに入力し、判別器５４Ａの演算処理を実行する。これにより、第１学習処理部１１２は、入力画像が生成器５０Ａ由来か学習データセット６０由来かを判別した結果に対応する出力値を判別器５４Ａから取得する。この場面では、各学習画像６１が入力画像であるため、判別器５４Ａは、「真」と判別するのが正解である。第１学習処理部１１２は、各学習データセット６０について、判別器５４Ａから得られる出力値とこの正解との誤差（ＬDA）を算出する。
【０２０７】
そして、第１学習処理部１１２は、算出される誤差（ＬDA）の和が小さくなるように、判別器５４Ａのパラメータの値を調節する。例えば、判別器５４から得られる出力値と真偽の正解との誤差の和が閾値以下になるまで、第１学習処理部１１２は、上記一連の処理により、判別器５４Ａのパラメータの値の調節を繰り返す。これにより、第１訓練ステップでは、第１学習処理部１１２は、判別器５４Ａに入力された入力画像が、生成器５０Ａにより生成された画像６９であるか複数の学習データセット６０から得られた学習画像６１であるかを判別するように、判別器５４Ａを訓練する。
【０２０８】
図１７Ｂに示されるとおり、第２訓練ステップでは、第１学習処理部１１２は、所定の確率分布からノイズ（潜在変数）を抽出し、抽出したノイズと各ラベル６３とを組み合わせて、複数のデータセットを生成する。各データセットは、上記第１データセットと同じでもよいし、異なっていてもよい。続いて、第１学習処理部１１２は、各データセット（各ラベル６３及びノイズ）を生成器５０Ａに入力し、生成器５０Ａの演算処理を実行する。これにより、第１学習処理部１１２は、各ラベル６３から画像を生成した結果に対応する出力（画像６９）を生成器５０Ａから取得する。
【０２０９】
次に、第１学習処理部１１２は、生成された各画像６９及び対応する各ラベル６３の組み合わせを判別器５４Ａに入力し、判別器５４Ａの演算処理を実行する。これにより、第１学習処理部１１２は、入力画像が生成器５０Ａ由来か学習データセット６０由来かを判別した結果に対応する出力値を判別器５４Ａから取得する。この生成器５０Ａの訓練では、判別器５４Ａによる判別の結果が誤ることが正解である。つまり、判別器５４Ａから得られる出力値が「真」に対応することが正解である。第１学習処理部１１２は、各データセットについて、一連の処理により判別器５４Ａから得られる出力値とこの正解（つまり、「真」）との誤差（ＬGDA）を算出する。
【０２１０】
そして、第１学習処理部１１２は、算出される誤差（ＬGDA）の和が小さくなるように、生成器５０Ａのパラメータの値を調節する。例えば、各データセットについて、判別器５４Ａから得られる出力値と「真」との誤差の和が閾値以下になるまで、第１学習処理部１１２は、上記一連の処理により、生成器５０Ａのパラメータの値の調節を繰り返す。これにより、第２訓練ステップでは、第１学習処理部１１２は、生成器５０Ａにより生成される画像６９が、判別器５４Ａによる判別を誤らせるようなものとなるように、生成器５０Ａを訓練する。
【０２１１】
本変形例では、第１学習処理部１１２は、上記第１訓練ステップ及び第２訓練ステップを交互に繰り返すことで、各学習データセット６０に含まれるラベル６３の入力に対して、入力されたラベル６３に関連付けられた学習画像６１に対応する画像を生成するように訓練された生成器５０Ａを構築する。保存処理部１１４は、構築された生成器５０Ａの構成及びパラメータを示す第１学習結果データ１２３Ａを生成し、生成した第１学習結果データ１２３Ａを所定の記憶領域に保存する。
【０２１２】
一方、図１７Ｃに示されるとおり、本変形例に係る推定器５２Ａは、いわゆる畳み込みニューラルネットワークにより構成されている。具体的に、本変形例に係る推定器５２Ａは、１又は複数の畳み込み層５２４、領域提案ネットワーク（region proposal network, RPN）５２５、ＲＯＩ（region of interest）プーリング層５２６、１又は複数の全結合層５２７、分類部５２８、及び回帰部５２９を備えている。
【０２１３】
畳み込み層５２４は、画像の畳み込み演算を行う層である。画像の畳み込みとは、画像と所定のフィルタとの相関を算出する処理に相当する。推定器５２Ａが複数の畳み込み層５２４を含む場合、最も入力側に配置された畳み込み層５２４に入力画像が入力され、最も出力側に配置された畳み込み層５２４の出力が領域提案ネットワーク５２５及びＲＯＩプーリング層５２６に接続される。
【０２１４】
領域提案ネットワーク５２５は、最も出力側に配置される畳み込み層５２４から出力される特徴マップの局所領域毎に、物体らしさを示すスコアの付与された複数のバウンディングボックスを提案するように構成される。領域提案ネットワーク５２５は、例えば、１又は複数の全結合層、バウンディングボックスのパラメータ（位置及びアスペクト比）を予測する回帰ネットワーク、及び物体の有無を予測する分類ネットワークにより構成される。１又は複数の全結合層は、入力側に配置される。最も出力側に配置される全結合層の出力が、回帰ネットワーク及び分類ネットワークに接続される。回帰ネットワーク及び分類ネットワークはそれぞれ、例えば、１又は複数の全結合層により構成される。
【０２１５】
ＲＯＩプーリング層５２６は、畳み込み層５２４から出力された特徴マップにおいて、領域提案ネットワーク５２５の出力に基づいて提案された任意サイズの物体領域候補をプーリングすることで、一定の大きさのベクトルに変換するように構成される。ＲＯＩプーリング層５２６の出力は、（最も入力側に配置された）全結合層５２７に接続される。
【０２１６】
全結合層５２７は、隣接する層の間のニューロン全てを結合した層である。推定器５２Ａが複数の全結合層５２７を含む場合、最も出力側に配置された全結合層５２７の出力が分類部５２８及び回帰部５２９に接続される。分類部５２８は、最も出力側に配置された全結合層５２７の出力から画像に写る製品Ｒに含まれる欠陥の種別を分類するように構成される。分類部５２８は、例えば、全結合層により構成される。回帰部５２９は、最も出力側に配置された全結合層５２７の出力から画像に写る製品Ｒに含まれる欠陥の範囲（例えば、バウンディングボックス）を回帰するように構成される。回帰部５２９は、例えば、全結合層により構成される。
【０２１７】
第２の機械学習では、第２学習処理部１１３は、領域提案ネットワーク５２５を訓練する第１訓練ステップとそれ以外の部分を訓練する第２訓練ステップとを交互に実行する。第１訓練ステップでは、第２学習処理部１１３は、物体の有無の分類に関する誤差とバウンディングボックスの位置及びアスペクト比に関する誤差とが小さくなるように、領域提案ネットワーク５２５のパラメータの値を調節する。第２訓練ステップでは、第２学習処理部１１３は、学習済みの領域提案ネットワーク５２５を利用して、上記実施形態と同様に、各誤差（ＬC、ＬBB）が小さくなるように、各パラメータの値を調節する。
【０２１８】
本変形例では、第２学習処理部１１３は、上記第１訓練ステップ及び第２訓練ステップを交互に繰り返すことで、各学習データセット６０に含まれる学習画像６１の入力に対して、入力された学習画像６１に関連付けられたラベル６３及び境界情報６５と一致するように、入力された学習画像６１に写る製品Ｒに含まれる欠陥の種別及び範囲を推定するように訓練された推定器５２Ａを構築する。保存処理部１１４は、構築された推定器５２Ａの構成及びパラメータを示す第２学習結果データ１２５Ａを生成し、生成した第２学習結果データ１２５Ａを所定の記憶領域に保存する。ただし、推定器５２Ａの構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。推定器５２Ａの構成は、上記推定器５２と同様であってもよい。
【０２１９】
（動作例）
次に、本変形例に係る学習装置１の動作例について説明する。本変形例に係る学習装置１は、各機械学習の処理過程の一部が上記実施形態と異なる点を除き、上記実施形態と同様に動作することができる。すなわち、ステップＳ１０１では、制御部１１は、複数の学習データセット６０を取得する。次のステップＳ１０２では、制御部１１は、第１学習処理部１１２として動作し、生成器５０Ａに関する第１の機械学習を実行する。
【０２２０】
図１８を更に用いて、第１の機械学習の処理手順の一例について説明する。図１８は、本変形例に係る第１の機械学習の処理手順の一例を例示する。本変形例に係る第１の機械学習を行うことは、以下のステップＳ６０１〜Ｓ６０３を含む。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【０２２１】
ステップＳ６０１を実行する前に、制御部１１は、上記実施形態と同様に、処理対象となる生成器５０Ａ及び判別器５４Ａを用意する。ステップＳ６０１では、制御部１１は、上記のとおり、算出される誤差（ＬDA）の和が小さくなるように、判別器５４Ａのパラメータの値を調節する。これにより、制御部１１は、判別器５４Ａに入力された入力画像が、生成器５０Ａにより生成された画像６９であるか複数の学習データセット６０から得られた学習画像６１であるかを判別するように、判別器５４Ａを訓練する。
【０２２２】
ステップＳ６０２では、制御部１１は、上記のとおり、算出される誤差（ＬGDA）の和が小さくなるように、生成器５０Ａのパラメータの値を調節する。これにより、制御部１１は、生成器５０Ａにより生成される画像６９が、判別器５４Ａによる判別を誤らせるようなものとなるように、生成器５０Ａを訓練する。なお、各ステップＳ６０１及びＳ６０２におけるパラメータの値の調節は、上記実施形態と同様に処理されてよい。
【０２２３】
ステップＳ６０３では、制御部１１は、ステップＳ６０２及びＳ６０３の訓練ステップの実行を繰り返すか否かを判定する。訓練ステップの実行を繰り返す基準は、実施の形態に応じて適宜決定されてよい。例えば、ステップＳ６０２及びＳ６０３の訓練ステップを実行する回数が予め設定されていてもよい。この場合、制御部１１は、ステップＳ６０２及びＳ６０３の訓練ステップを実行した回数が設定回数に到達したか否かを判定する。ステップＳ６０２及びＳ６０３の訓練ステップを実行した回数が設定回数に到達していないと判定した場合には、制御部１１は、ステップＳ６０１に処理を戻す。一方、ステップＳ６０２及びＳ６０３の訓練ステップを実行した回数が設定回数に到達したと判定した場合には、制御部１１は、本変形例に係る第１の機械学習の処理を完了し、次のステップＳ１０３に処理を進める。これにより、制御部１１は、各学習データセット６０に含まれるラベル６３の入力に対して、入力されたラベル６３に関連付けられた学習画像６１に対応する画像を生成するように訓練された生成器５０を構築する。
【０２２４】
ステップＳ１０３では、制御部１１は、第２学習処理部１１３として動作し、推定器５２Ａに関する第２の機械学習を実行する。第２の機械学習では、制御部１１は、上記のとおり、領域提案ネットワーク５２５を訓練する第１訓練ステップとそれ以外の部分を訓練する第２訓練ステップとを交互に実行する。第１訓練ステップでは、制御部１１は、物体の有無の分類に関する誤差とバウンディングボックスの位置及びアスペクト比に関する誤差とが小さくなるように、領域提案ネットワーク５２５のパラメータの値を調節する。第２訓練ステップでは、制御部１１は、学習済みの領域提案ネットワーク５２５を利用して、各誤差（ＬC、ＬBB）が小さくなるように、各パラメータの値を調節する。各ステップにおけるパラメータの値の調節は、上記実施形態と同様に処理されてよい。これにより、制御部１１は、各学習データセット６０について、学習画像６１の入力に対して、対応するラベル６３及び境界情報６５と一致するように、入力された学習画像６１に写る製品Ｒに含まれる欠陥の種別及び範囲を推定するように訓練された推定器５２を構築する。
【０２２５】
次のステップＳ１０４では、制御部１１は、上記実施形態と同様に、構築された学習済みの生成器５０Ａに関する情報、及び構築された学習済みの推定器５２Ａに関する情報を所定の記憶領域に保存する。以上により、本変形例では、学習装置１は、上記実施形態に係る生成器５０及び推定器５２と同様の機能を有する生成器５０Ａ及び推定器５２Ａを生成することができる。
【０２２６】
＜４．６＞
上記実施形態では、画像に写る製品Ｒの外観検査を実施する場面に本発明を適用した例を示している。しかしながら、本発明の適用範囲は、このような外観検査の例に限られる訳ではない。本発明は、与えられた画像内で何らかの対象物の写る範囲を推定するあらゆる場面に適用可能である。製品Ｒの写る画像から何らかの対象物の写る画像に検査システム１００で取り扱う画像を変更することで、与えられた画像内で何らかの対象物の写る範囲を推定する推定システムを構成することができる。
【０２２７】
図１９は、本変形例に係る推定システム１００Ｂの適用場面の一例を模式的に例示する。図１９に示されるとおり、本変形例に係る推定システム１００Ｂは、ネットワークを介して接続される学習装置１Ｂ、画像生成装置２Ｂ、推定器生成装置３Ｂ、及び推定装置４Ｂを備えている。製品Ｒの写る画像から何らかの対象物の写る画像に取り扱う画像を変更する点を除き、各装置１Ｂ〜４Ｂのハードウェア構成及びソフトウェア構成は、上記実施形態に係る各装置１〜４のハードウェア構成及びソフトウェア構成と同じであってよい。また、各装置１Ｂ〜４Ｂは、上記実施形態に係る各装置１〜４と同様に動作してよい。
【０２２８】
すなわち、本変形例に係る学習装置１Ｂは、対象物ＲＢを写した学習画像６１Ｂ、対象物ＲＢの種別を示すラベル６３Ｂ、及び学習画像６１Ｂ内における対象物ＲＢの範囲を示す境界情報６５Ｂの組み合わせによりそれぞれ構成された複数の学習データセット６０Ｂを取得する。次に、学習装置１Ｂは、第１の機械学習を行うことで、各学習データセット６０Ｂに含まれるラベル６３Ｂの入力に対して、入力されたラベル６３Ｂに関連付けられた学習画像６１Ｂに対応する画像を生成するように訓練された生成器５０Ｂを構築する。また、学習装置１Ｂは、第２の機械学習を行うことで、各学習データセット６０Ｂに含まれる学習画像６１Ｂの入力に対して、入力された学習画像６１Ｂに関連付けられたラベル６３Ｂ及び境界情報６５Ｂと一致するように、入力された学習画像６１Ｂに写る対象物ＲＢの種別及び範囲を推定するように訓練された推定器５２Ｂを構築する。生成器５０Ｂ及び推定器５２Ｂの構成は、上記生成器５０及び推定器５２と同じであってよい。また、生成器５０Ｂ及び推定器５２Ｂの機械学習の処理は、上記生成器５０及び推定器５２の機械学習の処理と同様であってよい。
【０２２９】
これに対して、画像生成装置２Ｂは、学習装置１Ｂにより構築された生成器５０Ｂに、対象物ＲＢの種別を示す入力値７１Ｂを与えることで、対象物ＲＢを含み得る生成画像７３Ｂを生成する。次に、画像生成装置２Ｂは、学習装置１Ｂにより構築された推定器５２Ｂに生成された生成画像７３Ｂを与えることで、生成画像７３Ｂに写り得る対象物ＲＢの種別及び範囲を推定する。続いて、画像生成装置２Ｂは、生成画像７３Ｂに写る対象物ＲＢの種別を推定した結果が入力値７１Ｂにより示される対象物ＲＢの種別と一致するか否かを判定する。そして、画像生成装置２Ｂは、対象物ＲＢの種別を推定した結果が入力値７１Ｂにより示される対象物ＲＢの種別と一致すると判定した場合に、生成した生成画像７３Ｂと対象物ＲＢの範囲を推定した結果とを関連付けて所定の記憶領域に格納する。
【０２３０】
また、推定器生成装置３Ｂは、対象物ＲＢを含み得るサンプル画像３２２１Ｂ、対象物ＲＢの種別を示すラベル３２２２Ｂ、及び対象物ＲＢの範囲を示す境界情報３２２３Ｂの組み合わせによりそれぞれ構成された複数の学習データセット３２２Ｂを取得する。次に、推定器生成装置３Ｂは、複数の学習データセット３２２Ｂを利用して、推定器８０Ｂの機械学習を実施する。推定器８０Ｂの構成は、上記推定器８０と同じであってよい。また、推定器８０Ｂの機械学習の処理は、上記推定器８０の機械学習の処理と同様であってよい。これにより、推定器生成装置３Ｂは、サンプル画像３２２１Ｂを入力すると、対応するラベル３２２２Ｂ及び境界情報３２２３Ｂと一致する出力値を出力するように訓練された推定器８０Ｂを構築することができる。そして、推定器生成装置３Ｂは、学習済みの推定器８０Ｂの構成及びパラメータを示す情報を学習結果データ３２５Ｂとして生成する。なお、推定器生成装置３Ｂは、画像生成装置２Ｂにより生成されたデータセットを学習データセット３２２Ｂとして利用することができる。
【０２３１】
図２０は、本変形例に係る推定装置４Ｂのソフトウェア構成の一例を模式的に例示する。本変形例に係る推定装置４Ｂは、対象物ＲＢの写り得る対象画像４２２Ｂを取得する。本変形例では、推定装置４ＢにはカメラＣＡが接続されている。推定装置４Ｂは、このカメラＣＡにより対象物ＲＢの存在し得る範囲を撮影することで対象画像４２２Ｂを取得する。次に、推定装置４Ｂの制御部は、推定部４１２Ｂとして動作し、学習結果データ３２５Ｂを参照して、学習済みの推定器８０Ｂの設定を行う。続いて、推定装置４Ｂは、取得した対象画像４２２Ｂを学習済みの推定器８０Ｂに入力し、学習済みの推定器８０Ｂの演算処理を実行する。これにより、推定装置４Ｂは、対象物ＲＢの種別及び範囲を推定した結果（すなわち、対象物ＲＢを検出した結果）に対応する出力値を推定器８０Ｂから取得する。そして、推定装置４Ｂは、推定器８０Ｂから得られた出力値に基づいて対象物ＲＢを検出した結果に関する情報を出力する。これにより、本変形例に係る推定システム１００Ｂは、与えられた画像内で対象物ＲＢの写る範囲を推定するように構成される。
【０２３２】
なお、対象物ＲＢは、画像から検出する対象となり得るものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。対象物ＲＢは、例えば、上記外観検査の対象となる製品、人物、人物の身体部位（例えば、顔等）等であってよい。また、道路交通の監視に本変形例を利用する場合、対象物ＲＢは、例えば、車、歩行者、標識等であってもよい。
【符号の説明】
【０２３３】
１００…検査システム、
１…学習装置、
１１…制御部、１２…記憶部、１３…通信インタフェース、
１４…入力装置、１５…出力装置、１６…ドライブ、
１１１…（第１）データ取得部、１１２…第１学習処理部、
１１３…第２学習処理部、１１４…（第１）保存処理部、
１２１…学習プログラム、１２３…第１学習結果データ、
１２５…第２学習結果データ、
２…画像生成装置、
２１…制御部、２２…記憶部、２３…通信インタフェース、
２４…入力装置、２５…出力装置、２６…ドライブ、
２１１…生成部、２１２…推定部、２１３…判定部、
２１４…画像保存部、
２２１…画像生成プログラム、
５０…生成器、５２…推定器、５４…判別器、
５６…エンコーダ、
６０…（第１）学習データセット、
６１…学習画像、６３…ラベル、６５…境界情報、
７１…入力値、７３…生成画像、７５…ラベル、
７７…境界情報、
３…推定器生成装置、
３１…制御部、３２…記憶部、３３…通信インタフェース、
３４…入力装置、３５…出力装置、３６…ドライブ、
３１１…（第２）データ取得部、
３１２…（第３）学習処理部、
３１３…（第２）保存処理部、
３２１…推定器生成プログラム、
３２２…（第２）学習データセット、
３２２１…サンプル画像、３２２２…ラベル、
３２２３…境界情報、
３２５…第３学習結果データ、
４…検査装置（推定装置）、
４１…制御部、４２…記憶部、４３…通信インタフェース、
４４…入力装置、４５…出力装置、４６…ドライブ、
４７…外部インタフェース、
４１１…対象データ取得部、４１２…良否判定部、
４１３…出力部、
４２１…検査プログラム、
８０…推定器、
９１・９２・９３・９４…記憶媒体
【図１】
2020060879.tif 000003
【図２】
2020060879.tif 000004
【図３】
2020060879.tif 000005
【図４】
2020060879.tif 000006
【図５】
2020060879.tif 000007
【図６】
2020060879.tif 000008
【図７】
2020060879.tif 000009
【図８Ａ】
2020060879.tif 000010
【図８Ｂ】
2020060879.tif 000011
【図９】
2020060879.tif 000012
【図１０】
2020060879.tif 000013
【図１１】
2020060879.tif 000014
【図１２】
2020060879.tif 000015
【図１３】
2020060879.tif 000016
【図１４】
2020060879.tif 000017
【図１５】
2020060879.tif 000018
【図１６】
2020060879.tif 000019
【図１７Ａ】
2020060879.tif 000020
【図１７Ｂ】
2020060879.tif 000021
【図１７Ｃ】
2020060879.tif 000022
【図１８】
2020060879.tif 000023
【図１９】
2020060879.tif 000024
【図２０】
2020060879.tif 000025