(57)【要約】【課題】ティーチングレス学習による学習が行われたモデルの認識精度を向上させること。【解決手段】学習プログラムは、モデルに、第１の画像を入力し、複数の領域の候補、及び前記候補ごとの信頼度を出力させる処理をコンピュータに実行させる。モデルは、入力された画像から特定の領域の候補、及び各候補が前記特定の領域であることの確からしさを表す信頼度を出力する。また、学習プログラムは、前記モデルによって出力された候補のうち、前記信頼度が所定の基準を満たさない候補のそれぞれについて、前記信頼度が大きいほど大きくなる第１の値を計算する処理をコンピュータに実行させる。また、学習プログラムは、前記第１の値を、前記信頼度が大きいほど小さくなるように重み付けした第２の値を計算する処理をコンピュータに実行させる。また、学習プログラムは、前記第２の値が小さくなるように前記モデルを更新する処理をコンピュータに実行させる。【選択図】図１
2020080023.tif 000002
【特許請求の範囲】
【請求項１】
入力された画像から特定の領域の候補、及び各候補が前記特定の領域であることの確からしさを表す信頼度を出力するモデルに、第１の画像を入力し、複数の領域の候補、及び前記候補ごとの信頼度を出力させ、
前記モデルによって出力された候補のうち、前記信頼度が所定の基準を満たさない候補のそれぞれについて、前記信頼度が大きいほど大きくなる第１の値を計算し、
前記第１の値を、前記信頼度が大きいほど小さくなるように重み付けした第２の値を計算し、
前記第２の値が小さくなるように前記モデルを更新する、
処理をコンピュータに実行させることを特徴とする学習プログラム。
【請求項２】
前記第２の値を計算する処理は、前記候補における前記第１の値の大きさの順位が所定の順位以内である候補について、前記第２の値を計算することを特徴とする請求項１に記載の学習プログラム。
【請求項３】
前記第２の値を計算する処理は、入力された値に対して出力値が単調減少する所定の関数に、前記信頼度を入力して得られる出力値を、前記第１の値に掛けることで前記第２の値を計算することを特徴とする請求項１又は２に記載の学習プログラム。
【請求項４】
前記モデルによって出力された候補から、前記信頼度が前記所定の基準を満たす候補を選択領域として選択する処理をさらに実行させ、
前記更新する処理は、前記第１の画像にあらかじめ設定された正解の領域に対する、前記選択領域の差異の大きさを示す第３の値と、前記第２の値と、の両方が小さくなるように前記モデルを更新することを特徴とする請求項１から３のいずれか１項に記載の学習プログラム。
【請求項５】
前記出力させる処理は、入力された画像から物体の把持位置の候補、及び各候補が前記把持位置であることの確からしさを表す信頼度を出力するモデルに、第１の画像を入力し、複数の把持位置の候補、及び前記候補ごとの信頼度を出力させることを特徴とする請求項１から４のいずれか１項に記載の学習プログラム。
【請求項６】
入力された画像から特定の領域の候補、及び各候補が前記特定の領域であることの確からしさを表す信頼度を出力するモデルに、第１の画像を入力し、複数の領域の候補、及び前記候補ごとの信頼度を出力させ、
前記モデルによって出力された候補のうち、前記信頼度が所定の基準を満たさない候補のそれぞれについて、前記信頼度が大きいほど大きくなる第１の値を計算し、
前記第１の値を、前記信頼度が大きいほど小さくなるように重み付けした第２の値を計算し、
前記第２の値が小さくなるように前記モデルを更新する、
処理をコンピュータが実行することを特徴とする学習方法。
【請求項７】
入力された画像から特定の領域の候補、及び各候補が前記特定の領域であることの確からしさを表す信頼度を出力するモデルに、第１の画像を入力し、複数の領域の候補、及び前記候補ごとの信頼度を出力させる出力部と、
前記モデルによって出力された候補のうち、前記信頼度が所定の基準を満たさない候補のそれぞれについて、前記信頼度が大きいほど大きくなる第１の値を計算する第１の計算部と、
前記第１の値を、前記信頼度が大きいほど小さくなるように重み付けした第２の値を計算する第２の計算部と、
前記第２の値が小さくなるように前記モデルを更新する更新部と、
を有することを特徴とする学習装置。
【請求項８】
入力された画像から特定の領域の候補、及び各候補が前記特定の領域であることの確からしさを表す信頼度を出力するモデルに、第１の画像を入力し、複数の領域の候補、及び前記候補ごとの信頼度を出力させ、前記モデルによって出力された候補のうち、前記信頼度が所定の基準を満たさない候補のそれぞれについて、前記信頼度が大きいほど大きくなる第１の値を計算し、前記第１の値を、前記信頼度が大きいほど小さくなるように重み付けした第２の値を計算し、前記第２の値が小さくなるように前記モデルを更新する、処理によって更新された前記モデルに、第２の画像を入力し、第２の候補、及び前記第２の候補ごとの信頼度を出力させ、
前記第２の候補のうち、前記信頼度が最大である候補を検知領域として検知する、
処理をコンピュータに実行させることを特徴とする検知プログラム。
【請求項９】
前記出力させる処理は、入力された画像から物体の把持位置の候補、及び各候補が前記把持位置であることの確からしさを表す信頼度を出力するモデルに、前記第１の画像を入力し、複数の把持位置の候補、及び前記候補ごとの信頼度を出力させ、前記第２の値が小さくなるように前記モデルを更新する、処理によって更新された前記モデルに、前記第２の画像を入力し、前記第２の候補、及び前記第２の候補ごとの信頼度を出力させ、
前記検知する処理は、前記第２の候補のうち、前記信頼度が最大である候補を把持位置として検知する、
ことを特徴とする請求項８に記載の検知プログラム。
【請求項１０】
前記検知する処理によって検知した把持位置を、物体を把持するロボットを制御する把持装置に対して出力する処理をコンピュータにさらに実行させることを特徴とする請求項９に記載の検知プログラム。
【請求項１１】
入力された画像から特定の領域の候補、及び各候補が前記特定の領域であることの確からしさを表す信頼度を出力するモデルに、第１の画像を入力し、複数の領域の候補、及び前記候補ごとの信頼度を出力させ、前記モデルによって出力された候補のうち、前記信頼度が所定の基準を満たさない候補のそれぞれについて、前記信頼度が大きいほど大きくなる第１の値を計算し、前記第１の値を、前記信頼度が大きいほど小さくなるように重み付けした第２の値を計算し、前記第２の値が小さくなるように前記モデルを更新する、処理によって更新された前記モデルに、第２の画像を入力し、第２の候補、及び前記第２の候補ごとの信頼度を出力させ、
前記第２の候補のうち、前記信頼度が最大である候補を検知領域として検知する、
処理をコンピュータが実行することを特徴とする検知方法。
【請求項１２】
入力された画像から特定の領域の候補、及び各候補が前記特定の領域であることの確からしさを表す信頼度を出力するモデルに、第１の画像を入力し、複数の領域の候補、及び前記候補ごとの信頼度を出力させ、前記モデルによって出力された候補のうち、前記信頼度が所定の基準を満たさない候補のそれぞれについて、前記信頼度が大きいほど大きくなる第１の値を計算し、前記第１の値を、前記信頼度が大きいほど小さくなるように重み付けした第２の値を計算し、前記第２の値が小さくなるように前記モデルを更新する、処理によって更新された前記モデルに、第２の画像を入力し、第２の候補、及び前記第２の候補ごとの信頼度を出力させる出力部と、
前記第２の候補のうち、前記信頼度が最大である候補を検知領域として検知する検知部と、
を有することを特徴とする検知装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習プログラム、学習方法、学習装置、検知プログラム、検知方法及び検知装置に関する。
【背景技術】
【０００２】
従来、ピッキングロボットが部品を把持するための把持位置を、画像認識により検知する技術が知られている。また、例えば、画像認識による物体検知の手法として、ＳＳＤ（Single  Shot  MultiBox  Detector）が知られている。
【０００３】
ＳＳＤでは、モデルとして畳み込みニューラルネットワークが用いられる。また、ＳＳＤのモデルは、入力された画像内のバウンディングボックスごとに、検知対象が存在する確率の高さの度合いを出力する。なお、バウンディングボックスとは、入力された画像におけるデフォルトの矩形領域である。
【０００４】
また、画像認識に用いられるモデルによる出力結果が妥当であるかを実際に試行し、試行結果をフィードバックとして得ながらさらにモデルの学習を行うという一連の手順を、コンピュータが自動的に行うティーチングレス学習が知られている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】株式会社  安川電機、"ロボットによる対象物の多様なつかみ方を実現するAIピッキング機能を開発"、［online］、［平成３０年１０月２９日検索］、インターネット＜URL：https://www.yaskawa.co.jp/newsrelease/technology/35697＞
【非特許文献２】Wei  Liu,  Dragomir  Anguelov,  Dumitru  Erhan,  Christian  Szegedy,  Scott  Reed,  Cheng-Yang  Fu,  Alexander  C.  Berg，"SSD:  Single  Shot  MultiBox  Detector"、  ［online］、  ［平成３０年１０月２９日検索］、  インターネット＜URL：http://www.cs.unc.edu/~wliu/papers/ssd.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記の技術では、ティーチングレス学習による学習が行われたモデルの認識精度が低下する場合があるという問題がある。
【０００７】
ここで、ピッキングロボットの把持位置の検知に用いられるモデルのティーチング学習を行う場合の例を説明する。この場合、まず、実際に複数の物体が置かれたトレイの画像がモデルに入力され、１つの把持位置が検知される。そして、ピッキングロボットは、検知された把持位置に対して実際に把持を試行する。さらに、ピッキングロボットによる把持の成否がモデルにフィードバックされ、学習が行われる。
【０００８】
ここで、ピッキングロボットによる把持が試行されると、トレイ上の物体の位置等が変化する。このため、１つの入力画像に対しては、試行は１回のみ行われる。つまり、把持位置の候補が複数あった場合、学習においては、１つの候補のみが正解として扱われ、他の候補は不正解として扱われる。
【０００９】
例えば、図４の例において、トレイ上のＴ字の形状の物体を把持するための把持位置の候補として、破線で囲まれた各領域、及び領域ごとの把持位置であることの確からしさを表す信頼度がモデルによって出力されたものとする。さらに、候補３１１ａの信頼度が最も大きかったため、候補３１１ａに対する把持が試行され、成功したものとする。
【００１０】
このとき、候補３１１ｂ及び候補３１１ｃ等は候補３１１ａと類似しているため、候補３１１ｂ及び候補３１１ｃの信頼度はある程度大きいことが考えられる。一方で、候補３１１ｈは明らかに把持位置ではないため、候補３１１ｈの信頼度は、候補３１１ｂ及び候補３１１ｃ等と比べて小さいことが考えられる。しかしながら、ティーチングレス学習においては、試行の結果、候補３１１ａ以外の全ての領域が一様に不正解として扱われる。
【００１１】
つまり、候補３１１ｂ及び候補３１１ｃが実際に把持位置として採用可能であったとしても、学習後のモデルは、候補３１１ｂ及び候補３１１ｃ等の信頼度を小さく出力するようになってしまう。
【００１２】
１つの側面では、ティーチングレス学習による学習が行われたモデルの認識精度を向上させることを目的とする。
【課題を解決するための手段】
【００１３】
１つの態様において、学習プログラムは、モデルに、第１の画像を入力し、複数の領域の候補、及び前記候補ごとの信頼度を出力させる処理をコンピュータに実行させる。モデルは、入力された画像から特定の領域の候補、及び各候補が前記特定の領域であることの確からしさを表す信頼度を出力する。また、学習プログラムは、前記モデルによって出力された候補のうち、前記信頼度が所定の基準を満たさない候補のそれぞれについて、前記信頼度が大きいほど大きくなる第１の値を計算する処理をコンピュータに実行させる。また、学習プログラムは、前記第１の値を、前記信頼度が大きいほど小さくなるように重み付けした第２の値を計算する処理をコンピュータに実行させる。また、学習プログラムは、前記第２の値が小さくなるように前記モデルを更新する処理をコンピュータに実行させる。
【発明の効果】
【００１４】
１つの側面では、ティーチングレス学習による学習が行われたモデルの認識精度を向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施例に係る学習装置及び検知装置を含むシステムの機能構成を示す機能ブロック図である。
【図２】図２は、学習部の機能構成を示す機能ブロック図である。
【図３】図３は、画像認識による事前学習を説明する図である。
【図４】図４は、生成処理の流れを説明する図である。
【図５】図５は、画像認識による把持位置の選択を説明する図である。
【図６】図６は、画像認識によるパレットの重み付けを説明する図である。
【図７】図７は、学習処理の流れを説明する図である。
【図８】図８は、関数を説明する図である。
【図９】図９は、誤差を説明する図である。
【図１０】図１０は、事前学習処理の流れを示すフローチャートである。
【図１１】図１１は、生成処理の流れを示すフローチャートである。
【図１２】図１２は、学習処理の流れを示すフローチャートである。
【図１３】図１３は、検知処理の流れを示すフローチャートである。
【図１４】図１４は、ハードウェア構成例を説明する図である。
【発明を実施するための形態】
【００１６】
以下に、本発明にかかる学習プログラム、学習方法、学習装置、検知プログラム、検知方法及び検知装置の実施例を図面に基づいて詳細に説明する。なお、この実施例により本発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【実施例１】
【００１７】
［機能構成］
図１を用いて、学習装置及び検知装置の機能構成を説明する。図１は、実施例に係る学習装置及び検知装置を含むシステムの機能構成を示す機能ブロック図である。システム１は、ピッキングロボットで用いられるモデルの学習、モデルを用いた把持位置の検知、及びピッキングロボットによる実際の把持の制御等を行うためのシステムである。図１に示すように、システム１は、学習装置１０、検知装置２０、把持システム３０、把持システム４０及び把持制御装置５０を有する。
【００１８】
学習装置１０は、把持システム３０を用いてモデルの学習を行う。また、検知装置２０は、学習装置１０によって学習が行われたモデルを用いて、把持システム４０から取得したテストデータ２０ａを基に、把持位置を検知し、その結果を検知結果２０ｂとして出力する。把持制御装置５０は、検知装置２０によって出力された検知結果２０ｂを基に把持システム４０を制御する。
【００１９】
ここで、例えば、把持システム３０は、開発及び試験用の環境に構築されたものであってよい。また、把持システム４０は、実際に工場等で運用されているものであってよい。また、把持システム３０及び把持システム４０は、同一のものであってもよい。
【００２０】
［学習装置の構成］
図１に示すように、学習装置１０は、把持システム３０と接続されている。把持システム３０は、トレイ３１、ロボット３２及びカメラ３３を有する。トレイ３１には、把持対象の物体が置かれる。また、ロボット３２は、二指ハンドを有するピッキングロボットである。ロボット３２は、トレイ３１上の物体を把持する。このとき、ロボット３２は、学習装置１０から指示された把持位置に対し把持を行う。また、カメラ３３は、トレイ３１を上から撮影し、撮影した画像を学習装置１０に送信する。
【００２１】
図１に示すように、学習装置１０は、取得部１１、把持制御部１２、付与部１３、出力部１５、学習部１６、学習データ記憶部１７及びモデルパラメータ記憶部１８を有する。
【００２２】
取得部１１は、カメラ３３からトレイ３１上の物体の画像を取得する。また、把持制御部１２は、入力された把持位置に従い、ロボット３２を制御し物体を把持させる。付与部１３は、取得部１１によって取得された画像にラベルを付与する。
【００２３】
ここで、ラベルは、把持位置、及び当該把持位置に対してロボット３２が把持を試行した際の、物体の把持の成否を示す情報である。把持の成否は、カメラ３３又は図示しない他のカメラ、及び所定のセンサ等によって取得される。また、以降の説明では、学習データは画像とラベルとの組み合わせであるものとする。例えば、付与部１３は、把持が成功した領域には信頼度として１を付与し、他の領域には信頼度として０を付与する。
【００２４】
ここで、モデルは、入力された画像から特定の領域の候補、及び各候補が特定の領域であることの確からしさを表す信頼度を出力する。本実施例では、モデルは、特定の領域を含む複数のクラスごとの信頼度を出力する。また、特定の領域は物体の把持位置である。
【００２５】
例えば、クラスは、把持位置と背景の２種類である。また、物体の種類が複数ある場合、クラスは、第１の物体の把持位置、第２の物体の把持位置及び背景のように設定されてもよい。また、信頼度は、矩形が所定のクラスである確率であってよい。例えば、ある領域が把持位置である確率が０．９である場合、その領域の把持位置クラスの信頼度は０．９である。
【００２６】
なお、実施例のモデルは、ＳＳＤのモデルに、さらにバウンディングボックスの回転角を示す角度を出力させるようにすることで実現されるものとする。なお、ＳＳＤのモデルは、入力された画像から、あらかじめ設定された矩形であるバウンディングボックスのいずれか及びクラスごとの信頼度を出力する。
【００２７】
認識部１４は、学習データの生成及びモデルの事前学習等のための画像認識を行う。また、認識部１４は、物体がない状態の画像と、物体が置かれた状態の画像との差分を取ることで、物体が存在する可能性がある領域を抽出することができる。また、認識部１４は、トレイ上の座標と対応させているパレットに物体の存在確率を重み付けすることができる。
【００２８】
出力部１５は、入力された画像から特定の領域の候補、及び各候補が特定の領域であることの確からしさを表す信頼度を出力するモデルに、第１の画像を入力し、複数の領域の候補、及び候補ごとの信頼度を出力させる。例えば、第１の画像は、取得部１１によってカメラ３３から取得された画像である。
【００２９】
学習部１６は、学習データを用いて学習を行い、モデルを更新する。図２は、学習部の機能構成を示す機能ブロック図である。図２に示すように、学習部１６は、選択部１６１、第１の計算部１６２、第２の計算部１６３及び更新部１６４を有する。
【００３０】
選択部１６１は、モデルによって出力された候補から、信頼度が所定の基準を満たす候補を選択領域として選択する。例えば、選択部１６１は、モデルによって出力された候補から、信頼度が最大である候補を選択する。また、選択部１６１によって選択された候補の領域は、把持位置クラスに分類される。以降の説明では、選択部１６１によって選択された候補を正例と呼ぶ場合がある。
【００３１】
第１の計算部１６２は、モデルによって出力された候補のうち、信頼度が所定の基準を満たさない候補のそれぞれについて、信頼度が大きいほど大きくなる第１の値を計算する。ここで、信頼度が所定の基準を満たさない候補は、選択部１６１によって選択されなかった候補、すなわち背景クラスの分類される候補である。以降の説明では、選択部１６１によって選択されなかった候補を負例と呼ぶ場合がある。また、第１の値は、信頼度そのものであってもよいし、信頼度に比例する所定の値であってもよい。
【００３２】
第２の計算部１６３は、第１の値を、信頼度が大きいほど小さくなるように重み付けした第２の値を計算する。従来の手法では、第１の値はモデルの学習における誤差として利用可能であるが、本実施例では、第２の値が誤差として用いられる。つまり、第２の計算部１６３は、負例の候補について、信頼度が大きいものほど誤差を小さく抑えるような処理を行う。これは、前述の通り、把持位置の候補が複数あった場合に、１つの候補のみが正解として扱われ、他の候補は不正解として扱われるケースがあるためである。このとき、本来は把持可能な候補が背景として扱われる。さらに、そのような候補は信頼度が大きくなる傾向があるため、信頼度に比例する第１の値をそのまま誤差として利用した場合、モデルの認識精度を向上させることが難しくなる場合がある。
【００３３】
また、第２の計算部１６３は、候補における第１の値の大きさの順位が所定の順位以内である候補について、第２の値を計算する。この場合、第２の計算部１６３は、全ての負例の候補について第２の値を誤差として計算するのではなく、信頼度が上位の一定数の候補について第２の値を計算する。
【００３４】
更新部１６４は、第２の値が小さくなるようにモデルを更新する。また、更新部１６４は、第１の画像にあらかじめ設定された正解の領域に対する、選択領域の差異の大きさを示す第３の値と、第２の値と、の両方が小さくなるようにモデルを更新する。
【００３５】
更新部１６４は、ＳＳＤと同様の手法で、矩形の誤差及び信頼度の誤差を最小化する。ここで、第３の値は、モデルによって出力されたバウンディングボックス及び信頼度と学習データに対してあらかじめ設定された正解の把持位置及び信頼度との誤差である。
【００３６】
また、正解の把持位置及び信頼度は、付与部１３によって付与されたラベルであってよい。例えば、ある領域で把持が成功している場合であって、モデルによって出力された当該領域が把持位置であることの信頼度が０．９である場合、当該領域の信頼度の誤差は０．１である。なお、ある領域で把持が成功している場合、当該領域には付与部１３によって信頼度として１が付与されているものとする。
【００３７】
学習データ記憶部１７は、学習データを記憶する。前述の通り、学習データは、画像とラベルとの組み合わせである。具体的には、学習データは、画像及び付与部１３によって信頼度として１が付与された画像内の領域の組み合わせである。
【００３８】
モデルパラメータ記憶部１８は、モデルのパラメータを記憶する。例えば、モデルパラメータ記憶部１８は、ニューラルネットワークにおける重みやバイアス等のパラメータを記憶する。また、モデルパラメータ記憶部１８によって記憶されたパラメータを使うことで、学習装置１０によって学習が行われた学習済みのモデルを再現することが可能であるものとする。また、更新部１６４は、モデルパラメータ記憶部１８に記憶されたパラメータを更新することにより、モデルを更新することができる。
【００３９】
［学習装置の処理］
ここで、学習装置１０の処理を具体的に説明する。まず、学習装置１０は、ティーチングレス学習を行うため、モデルを用いて学習データを自動的に生成する。その際、初めはモデルの把持位置の検知精度が低いため、学習データを効率的に生成することができない場合がある。そこで、学習装置１０は、画像認識を用いた事前学習を行うことでモデルの精度を向上させる。
【００４０】
図３は、画像認識による事前学習を説明する図である。図３に示すように、まず、認識部１４は、把持対象の物体の３Ｄモデル１４１を生成する。ここで、把持対象の物体は、六角ボルトであるものとする。次に、認識部１４は、トレイ３１を模した背景に３Ｄモデル１４１を配置したＣＧ（computer  graphics）画像１４２を生成する。そして、認識部１４は、画像認識によりＣＧ画像１４２の把持位置の候補を特定する。
【００４１】
そして、認識部１４は、ＣＧ画像１４２と特定した把持位置の座標や角度等であるラベルとを組み合わせた学習データを生成する。その際、認識部１４は、把持位置の候補１４２ａを含む各候補に信頼度を付与しておく。そして、認識部１４は、生成した学習データを学習データ記憶部１７に格納する。ここで、学習部１６は、認識部１４によって格納された学習データを用いて事前学習を行う。
【００４２】
また、図３に示すように、把持位置は、傾いた矩形で表される。ロボット３２は、２つの指部のそれぞれを、把持位置を表す矩形の短辺に重ねることで、物体３１１の把持を実行することができる。
【００４３】
学習装置１０は、把持試行により学習データを生成する。図４は、生成処理の流れを説明する図である。図４に示すように、まず、出力部１５は、取得部１１によって取得された画像３３ａを、モデル１８ａに入力する。モデル１８ａは、モデルパラメータ記憶部１８に記憶されたパラメータであって、事前学習において格納されたパラメータを基に構築されたモデルである。モデル１８ａは、入力された画像３３ａを基に、把持位置の候補及び信頼度を出力する。
【００４４】
ここで、モデル１８ａは、把持位置の候補３１１ａ、候補３１１ｂ、候補３１１ｃ、候補３１１ｄ、候補３１１ｅ、候補３１１ｆ、候補３１１ｇ及び候補３１１ｈを出力したものとする。また、このとき、候補３１１ａの信頼度が最も大きかったものとする。このとき、把持制御部１２は、ロボット３２に、候補３１１ａが示す把持位置に対する把持を試行させる。そして、付与部１３は、画像３３ａと、候補３１１ａと、把持の成否を示すラベルとを組み合わせて学習データ記憶部１７に格納する。
【００４５】
また、把持を試行する際に、特に学習が十分に進んでいないうちは、モデルが明らかに誤った位置や危険な位置にある候補の信頼度を大きく出力する場合がある。認識部１４は、そのような候補を画像認識により特定し、把持試行の対象から除外することができる。図５は、画像認識による把持位置の選択を説明する図である。
【００４６】
図５の画像１４３は、取得部１１によって取得された画像に、モデルによって出力された把持位置の候補を配置したものである。認識部１４は、画像１４３に対し、把持位置と明らかに異なる領域を候補から除外する。図５の領域１４３ｂ等の一点鎖線で囲まれた領域は、認識部１４によって除外されなかった領域である。例えば、認識部１４は、把持対象の物体を全く含んでいない領域を除外する。
【００４７】
また、モデルによって信頼度が大きい候補が出力されない場合、又は選択された候補に対する把持の試行が失敗した場合、認識部１４は、モデルに代わって画像認識により把持位置の候補を出力する。例えば、認識部１４は、トレイ３１上に物体が置かれていない状態の画像と、取得部１１が取得した画像との差分を取ることで、物体が存在する可能性がある領域を抽出する。そして、認識部１４は、トレイ３１の座標と対応付けたパレットの、抽出した領域と対応する箇所に、物体の存在確率を重み付けする。例えば、図６の画像１４４に示すように、重み付けされた箇所は背景より濃い色が付される。図６は、画像認識によるパレットの重み付けを説明する図である。
【００４８】
次に、学習装置１０は、把持試行によって生成した学習データを用いて学習処理を行う。なお、学習データは、既定の形式のデータであればよく、把持試行によって生成されたものでなくてもよい。例えば、学習データは、実際に把持試行を行うことなく、ＣＧや画像認識技術を使って仮想的に生成されたものであってもよい。
【００４９】
図７は、学習処理の流れを説明する図である。図７に示すように、出力部１５は、複数の学習データを拡張した上でモデル１８ａに入力する。例えば、学習データの１つは、画像３３ａ及び把持の試行が成功した候補３１１ａを含む。
【００５０】
出力部１５は、候補３１１ａを含むように、画像３３ａをランダムな位置で所定のサイズに切り出すことによって学習データの拡張を行う。例えば、出力部１５は、画像３３ａを含む学習データを、画像３３１ａを含む複数の切り出し画像のそれぞれに対応する学習データに拡張する。
【００５１】
さらに、選択部１６１は、モデル１８ａが出力した候補のうち信頼度が最大であった正例の候補３１１ａ´を選択する。そして、更新部は１６４、学習データの候補３１１ａと正例の候補３１１ａ´との誤差が最小化されるようにモデルを更新する。
【００５２】
さらに、モデルは、３１１ａ´以外の負例の候補３１１ｂ´、３１１ｃ´、３１１ｄ´、３１１ｅ´、３１１ｆ´、３１１ｇ´及び３１１ｈ´を出力する。第１の計算部１６２及び第２の計算部１６３は、負例の候補の誤差を計算する。
【００５３】
ここで、誤差は、（１）式のＬｏｓｓによって表される。
【００５４】
【数１】
2020080023.tif 000003
【００５５】
（１）式のＬｏｓｓは、正例の誤差と、負例の修正済みの誤差を足した値である。Ｌｒｅｃ，ｔｒｕｅは、正例の位置及び回転角度の誤差である。Ｌｃｏｎｆ，ｔｒｕｅは、正例の信頼度の誤差である。Ｌｒｅｃ，ｆａｌｓｅは、負例の位置及び回転角度の誤差である。Ｌｃｏｎｆ，ｆａｌｓｅは、負例の信頼度の誤差である。
【００５６】
第１の計算部１６２は、Ｌｒｅｃ，ｆａｌｓｅ＋Ｌｃｏｎｆ，ｆａｌｓｅを計算する。また、第２の計算部１６３は、係数αを計算し、さらに係数αをＬｒｅｃ，ｆａｌｓｅ＋Ｌｃｏｎｆ，ｆａｌｓｅに掛ける。例えば、第２の計算部１６３は、入力された値に対して出力値が単調減少する所定の関数に、信頼度を入力して得られる出力値を係数αとして得る。
【００５７】
ここで、負例の中での各候補の信頼度の大きさの順位をｋとする。係数αを出力する関数は、図８のように表される。図８は、関数を説明する図である。図８に示すように、関数ｆ（ｋ）は、ｋに対して単調増加である。ただし、順位ｋが大きくなるほど信頼度は小さくなるため、関数ｆ（ｋ）は、ｋから導かれる信頼度に対しては単調減少である。
【００５８】
また、誤差を小さく抑える対象の範囲を特定する順位Ｋがあらかじめ定められていてもよい。この場合、図８に示すように、関数ｆ（ｋ）は、順位がＫ以内である場合（ｋ≦Ｋである場合）は１以下の値を出力し、順位がＫより下である場合（ｋ＞Ｋである場合）は、１を出力する。
【００５９】
例えば、Ｋは、トレイ３１上の物体数、把持範囲の面積や体積を基に設定される。また、物体数の推定は、認識部１４が、テンプレートマッチング、ポイントクラウド、ＳＳＤ等の従来の手法を用いて行うことができる。
【００６０】
例えば、第２の計算部１６３は、（２）式によるαを計算することができる。ここで、ｃｏｎｆｋは、順位ｋの候補の信頼度である。ここでは、また、０≦ｃｏｎｆｋ≦１が成り立つものとする。
【００６１】
【数２】
2020080023.tif 000004
【００６２】
（２）式を用いて第２の値を計算した誤差の一例を図９に示す。図９は、誤差を説明する図である。選択部１６１は、信頼度が最も大きい候補である候補３１１ａ´を正例として選択する。このため、候補３１１ａ´把持位置クラスに分類される。このとき、候補３１１ｂ´、３１１ｃ´、３１１ｄ´、３１１ｅ´、３１１ｆ´、３１１ｇ´、３１１ｈ´は負例の候補であり、背景クラスに分類される。
【００６３】
図９の未修正誤差は、第１の値の一例である。ここでは、負例の候補の未修正誤差は、信頼度そのものであるものとする。また、負例内ランクは、負例の候補の信頼度の大きさのランクである。また、修正済み誤差は、第２の値の一例である。
【００６４】
ここで、図７に示すように、候補３１１ｂ´、３１１ｃ´、３１１ｄ´、３１１ｅ´、３１１ｆ´は、物体に対する相対的な位置が候補３１１ａ´に類似しているため、把持位置として適当である可能性が高いと考えられる。一方で、候補３１１ｈ´は、明らかに把持位置としては不適当である。また、候補３１１ｇ´は候補３１１ａ´と比べると、把持位置としてはやや不適等であると考えられる。
【００６５】
候補３１１ｂ´、３１１ｃ´、３１１ｄ´、３１１ｅ´、３１１ｆ´は、潜在的な正解の把持位置といえるので、負例としての誤差は小さい方が望ましい。そこで、第２の計算部１６３は、候補３１１ｂ´、３１１ｃ´、３１１ｄ´、３１１ｅ´、３１１ｆ´について、未修正誤差が小さくなるように（２）式により修正済み誤差を計算する。また、このとき、Ｋ＝５であるとする。このため、第２の計算部１６３は、負例内ランクが６以降である場合、係数αが１になるため、未修正誤差と修正済み誤差が等しくなる。
【００６６】
［検知装置の構成］
図１に示すように、検知装置２０は、把持システム４０と接続されている。把持システム４０は、トレイ４１、ロボット４２及びカメラ４３を有する。トレイ４１には、把持対象の物体が置かれる。また、ロボット４２は、二指ハンドを有するピッキングロボットである。ロボット４２は、トレイ４１上の物体を把持する。このとき、ロボット４２は、把持制御装置５０から指示された把持位置に対し把持を行う。また、カメラ４３は、トレイ４１を上から撮影し、撮影した画像を把持制御装置５０に送信する。
【００６７】
把持制御装置５０は、学習装置１０の取得部１１及び把持制御部１２と同様の機能を有する。つまり、把持制御装置５０は、カメラ４３からトレイ４１上の物体の画像を取得する。また、把持制御装置５０は、取得した画像をテストデータ２０ａとして検知装置２０に送信する。また、把持制御装置５０は、検知結果２０ｂとして入力された把持位置に従い、ロボット４２を制御し物体を把持させる。
【００６８】
図１に示すように、検知装置２０は、出力部２１、検知部２２及びモデルパラメータ記憶部２４を有する。モデルパラメータ記憶部２４は、学習装置１０のモデルパラメータ記憶部１８に記憶されているパラメータと同一のパラメータを記憶する。
【００６９】
出力部２１は、学習装置１０の出力部１５と同様の機能を有する。すなわち、出力部２１は、テストデータ２０ａの画像をモデルに入力し、把持位置の候補及び信頼度を出力させる。また、検知部２２は、モデルによって出力された候補のうち、信頼度が最も大きい組み合わせを検知する。テストデータ２０ａの画像は、第２の画像の一例である。また、出力部２１が出力させる把持位置の候補は、第２の候補の一例である。また、検知部２２によって検知された把持位置は、検知結果２０ｂとして把持制御装置５０に送信される。
【００７０】
［処理の流れ］
図１０、図１１、図１２及び図１３のフローチャートを用いて、実施例の処理の流れを説明する。図１０は、事前学習処理の流れを示すフローチャートである。また、図１１は、生成処理の流れを示すフローチャートである。また、図１２は、学習処理の流れを示すフローチャートである。また、図１３は、検知処理の流れを示すフローチャートである。
【００７１】
図１０のフローチャートを用いて、事前学習処理について説明する。図１０に示すように、まず、学習装置１０は、ＣＧで物体の３Ｄモデルを生成する（ステップＳ１０１）。次に、学習装置１０は、生成した３Ｄモデルを画像に配置する（ステップＳ１０２）。そして、学習装置１０は、画像認識により把持位置の候補を特定し、事前学習データを作成する（ステップＳ１０３）。
【００７２】
ここで、学習装置１０は、作成した事前学習データの画像が規定枚数であるか否かを判定する。学習装置１０は、事前学習データの画像が規定枚数である場合（ステップＳ１０４、Ｙｅｓ）、事前学習データを使ったモデルの事前学習を実行する（ステップＳ１０５）。一方、学習装置１０は、事前学習データの画像が規定枚数でない場合（ステップＳ１０４、Ｎｏ）、ステップＳ１０２に戻り、処理を繰り返す。
【００７３】
図１１のフローチャートを用いて、生成処理について説明する。図１１に示すように、まずトレイ３１上に把持対象の物体が配置される（ステップＳ２０１）。そして、カメラ３３は、配置された物体の画像を撮影する（ステップＳ２０２）。ここで、学習装置１０は、画像のパレットを重み付けしておく（ステップＳ２０３）。
【００７４】
次に、学習装置１０は、試行が規定回数行われたか否かを判定する（ステップＳ２０４）。学習装置１０は、試行が規定回数行われたと判定した場合（ステップＳ２０４、Ｙｅｓ）、カメラ３３によって撮影された画像をモデルに入力し、把持位置の候補及び信頼度を出力させる（ステップＳ２０５）。そして、学習装置１０は、最も信頼度が大きい候補を選択する（ステップＳ２０６）。一方、学習装置１０は、試行が規定回数行われていないと判定した場合（ステップＳ２０４、Ｎｏ）、パレットの重みに基づいて把持位置を選択する（ステップＳ２０７）。
【００７５】
ステップＳ２０４からＳ２０７の処理は、把持が成功しないまま試行回数が規定回数に達した場合に、学習装置１０がモデルによる候補の出力を中止し、画像認識による候補の出力を行うものである。
【００７６】
学習装置１０は、選択した候補に対し、試行を行うか否かを判定する（ステップＳ２０８）。ここでは、学習装置１０は、モデルによって出力された信頼度が高い候補であっても、画像認識によって明らかに誤り又は危険と判定できる場合、当該候補に対する試行を行わない。
【００７７】
学習装置１０は、試行を行わないと判定した場合（ステップＳ２０８、Ｎｏ）、ステップＳ２０２に戻り、他の画像を使って生成処理を行う。一方、学習装置１０は、試行を行うと判定した場合（ステップＳ２０８、Ｙｅｓ）、把持を試行する（ステップＳ２０９）。
【００７８】
ここで、学習装置１０は、試行において把持が成功したか否かを判定する（ステップＳ２１０）。学習装置１０は、把持が成功しなかったと判定した場合（ステップＳ２１０、Ｎｏ）、ステップＳ２０２に戻り、他の画像を使って生成処理を行う。一方、学習装置１０は、把持が成功したと判定した場合（ステップＳ２１０、Ｙｅｓ）、画像及び把持位置に、把持結果をラベルとして付与し学習データを生成する（ステップＳ２１１）。
【００７９】
さらに、学習装置１０は、トレイ３１に把持位置が残っているか否かを判定する（ステップＳ２１２）。例えば、画像認識によりトレイ３１上に物体が１つもないことが判明している場合、学習装置１０は、把持位置が残っていないと判定する。学習装置１０は、把持位置が残っていると判定した場合（ステップＳ２１２、Ｙｅｓ）、ステップＳ２０２に戻り、他の画像を使って生成処理を行う。
【００８０】
一方、学習装置１０は、把持位置が残っていないと判定した場合（ステップＳ２１２、Ｎｏ）、規定数の学習データが生成されたか否かを判定する（ステップＳ２１３）。学習装置１０は、規定数の学習データが生成されていないと判定した場合（ステップＳ２１３、Ｎｏ）、ステップＳ２０１に戻り、物体が配置し直された後、さらに生成処理を行う。一方、学習装置１０は、規定数の学習データが生成されたと判定した場合（ステップＳ２１３、Ｙｅｓ）、ステップＳ２０１に戻り、物体が配置し直された後、さらに生成処理を行う。
【００８１】
図１２のフローチャートを用いて学習処理の流れを説明する。図１２に示すように、まず、学習装置１０は、モデルパラメータ記憶部１８に記憶されたモデルのパラメータを初期化する（ステップＳ３０１）。
【００８２】
ここで、学習装置１０は、学習データの画像をモデルに入力し、把持位置の候補及び信頼度を出力させる（ステップＳ３０２）。そして、学習装置１０は、誤差を計算する（ステップＳ３０３）。ステップＳ３０３における誤差は、第１の値である。
【００８３】
そして、学習装置１０は、誤差を修正する負例ランクの範囲を決定する（ステップＳ３０４）。そして、学習装置１０は、修正範囲の候補の誤差を修正する（ステップＳ３０５）。ステップＳ３０５における修正後の誤差は、第２の値である。
【００８４】
学習装置１０は、修正した誤差をフィードバックする（ステップＳ３０６）。このとき、例えば、学習装置１０は、誤差のフィードバックによる更新後のモデルのパラメータを一時データとして保持しておく。そして、学習装置１０は、所定の条件が満たされているか否かに基づき、学習が終了したか否かを判定する（ステップＳ３０７）。例えば、所定の条件は、未入力の学習データがなくなったこと、学習が既定の回数だけ行われたこと及びパラメータの更新量が収束したこと等である。
【００８５】
学習装置１０は、学習が終了したと判定した場合（ステップＳ３０７、Ｙｅｓ）、モデルパラメータ記憶部１８のパラメータを更新し（ステップＳ３０８）、処理を終了する。このとき、学習装置１０は、保持している一時データでモデルパラメータ記憶部１８を上書きすることによってパラメータを更新することができる。
【００８６】
学習装置１０は、学習が終了していないと判定した場合（ステップＳ３０７、Ｎｏ）、ステップＳ３０２に戻り、処理を繰り返す。このとき、学習装置１０は、保持している一時データをモデルに反映させた上で、以降の処理を行うことができる。
【００８７】
図１３のフローチャートを用いて検知処理の流れを説明する。図１３に示すように、まず、検知装置２０は、学習装置１０から学習済みのモデルのパラメータを取得し、モデルパラメータ記憶部２４に格納する（ステップＳ４０１）。なお、検知装置２０は、学習装置１０とモデルパラメータ記憶部１８を共有するようにしてもよい。その場合、ステップＳ４０１は省略される。
【００８８】
ここで、検知装置２０は、テストデータ２０ａの画像をモデルに入力し、把持位置の候補及び信頼度を出力させる（ステップＳ４０２）。そして、検知装置２０は、最も信頼度が大きい候補を把持位置として検知する（ステップＳ４０３）。
【００８９】
［効果］
上述したように、学習装置１０は、入力された画像から特定の領域の候補、及び各候補が特定の領域であることの確からしさを表す信頼度を出力するモデルに、第１の画像を入力し、複数の領域の候補、及び候補ごとの信頼度を出力させる。また、学習装置１０は、モデルによって出力された候補のうち、信頼度が所定の基準を満たさない候補のそれぞれについて、信頼度が大きいほど大きくなる第１の値を計算する。また、学習装置１０は、第１の値を、信頼度が大きいほど小さくなるように重み付けした第２の値を計算する。また、学習装置１０は、第２の値が小さくなるようにモデルを更新する。このように、学習装置１０は、負例の潜在的に正解である候補の誤差を小さくした上で学習を行う。これは、特に、全ての正解候補に正解ラベルを付与することが困難なティーチングレスにおいて有効である。このため、実施例によれば、ティーチングレス学習による学習が行われたモデルの認識精度を向上させることができる。
【００９０】
学習装置１０は、候補における第１の値の大きさの順位が所定の順位以内である候補について、第２の値を計算する。これにより、学習装置１０は、潜在的な正解候補の誤差を小さくしつつ、不正解の候補の誤差は大きいままにしておくことができる。
【００９１】
学習装置１０は、入力された値に対して出力値が単調減少する所定の関数に、信頼度を入力して得られる出力値を、第１の値に掛けることで第２の値を計算する。これにより、学習装置１０は、信頼度の大きさに応じた誤差の修正を行うことができる。
【００９２】
学習装置１０は、モデルによって出力された候補から、信頼度が所定の基準を満たす候補を選択領域として選択する。また、学習装置１０は、第１の画像にあらかじめ設定された正解の領域に対する、選択領域の差異の大きさを示す第３の値と、第２の値と、の両方が小さくなるようにモデルを更新する。これにより、学習装置１０は、正例及び負例の両方を学習に反映させることができる。
【００９３】
学習装置１０は、入力された画像から物体の把持位置の候補、及び各候補が把持位置であることの確からしさを表す信頼度を出力するモデルに、第１の画像を入力し、複数の把持位置の候補、及び候補ごとの信頼度を出力させる。これにより、ピッキングロボットの把持位置を検知するモデルのティーチングレス学習が可能になる。
【００９４】
検知装置２０は、学習装置１０によって更新されたモデルに、第２の画像を入力し、第２の候補、及び第２の候補ごとの信頼度を出力させる。また、検知装置２０は、第２の候補のうち、信頼度が最大である候補を検知領域として検知する。また、検知装置２０は、第２の候補のうち、信頼度が最大である候補を把持位置として検知する。これにより、検知装置２０は、精度良く把持位置の検知を行うことができる。
【００９５】
また、検知装置２０は、検知した把持位置を、物体を把持するロボット４２を制御する把持制御装置５０に対して出力する。これにより、検知装置２０は、把持制御装置５０及びロボット４２に、精度良く把持を行わせることができる。
【００９６】
なお、上記の実施例では、学習装置１０が第２の値を計算するための係数αを、（２）式を使って計算するものとして説明した。一方で、学習装置１０は、対象の範囲を特定する順位Ｋをあらかじめ設定することなく、第２の値の計算を（３）式により行ってもよい。
【００９７】
【数３】
2020080023.tif 000005
【００９８】
［システム］
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、実施例で説明した具体例、分布、数値等は、あくまで一例であり、任意に変更することができる。
【００９９】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１００】
［ハードウェア］
図１４は、ハードウェア構成例を説明する図である。図１４に示すように、学習装置１０は、通信インタフェース１０ａ、ＨＤＤ（Hard  Disk  Drive）１０ｂ、メモリ１０ｃ、プロセッサ１０ｄを有する。また、図１４に示した各部は、バス等で相互に接続される。また、検知装置２０も、学習装置１０と同様のハードウェア構成を有する。また、検知装置２０も、学習装置１０と同様のハードウェア構成により実現される。
【０１０１】
通信インタフェース１０ａは、ネットワークインタフェースカード等であり、他のサーバとの通信を行う。ＨＤＤ１０ｂは、図１に示した機能を動作させるプログラムやＤＢを記憶する。
【０１０２】
プロセッサ１０ｄは、図１に示した各処理部と同様の処理を実行するプログラムをＨＤＤ１０ｂ等から読み出してメモリ１０ｃに展開することで、図１等で説明した各機能を実行するプロセスを動作させるハードウェア回路である。すなわち、このプロセスは、学習装置１０が有する各処理部と同様の機能を実行する。具体的には、プロセッサ１０ｄは、取得部１１、把持制御部１２、付与部１３、認識部１４、出力部１５、学習部１６と同様の機能を有するプログラムをＨＤＤ１０ｂ等から読み出す。そして、プロセッサ１０ｄは、取得部１１、把持制御部１２、付与部１３、認識部１４、出力部１５、学習部１６等と同様の処理を実行するプロセスを実行する。
【０１０３】
このように学習装置１０は、プログラムを読み出して実行することで学習類方法を実行する情報処理装置として動作する。また、学習装置１０は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、学習装置１０によって実行されることに限定されるものではない。例えば、他のコンピュータ又はサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【０１０４】
このプログラムは、インターネット等のネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ（Magneto−Optical  disk）、ＤＶＤ（Digital  Versatile  Disc）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
【符号の説明】
【０１０５】
１  システム
１０  学習装置
１１  取得部
１２  把持制御部
１３  付与部
１４  認識部
１５、２１  出力部
１６  学習部
１７  学習データ記憶部
１８  モデルパラメータ記憶部
２０  検知装置
２０ａ  テストデータ
２０ｂ  検知結果
２２  検知部
２４  モデルパラメータ記憶部
３０、４０  把持システム
３１、４１  トレイ
３２、４２  ロボット
３３、４３  カメラ
【図１】
2020080023.tif 000006
【図２】
2020080023.tif 000007
【図３】
2020080023.tif 000008
【図４】
2020080023.tif 000009
【図５】
2020080023.tif 000010
【図６】
2020080023.tif 000011
【図７】
2020080023.tif 000012
【図８】
2020080023.tif 000013
【図９】
2020080023.tif 000014
【図１０】
2020080023.tif 000015
【図１１】
2020080023.tif 000016
【図１２】
2020080023.tif 000017
【図１３】
2020080023.tif 000018
【図１４】
2020080023.tif 000019