(57)【要約】【課題】物体の把持位置を検知するモデルの学習を安定して行うこと。【解決手段】学習プログラムは、第１の画像内にあらかじめ第１の傾きで設定された図形であって、物体の把持位置を示す図形を内部に含み、いずれかの辺が第１の方向と平行な第１の矩形を生成する処理をコンピュータに実行させる。また、学習プログラムは、入力された画像から第１の方向と平行な矩形及び傾きを出力するモデルに、第１の画像を入力し、第２の矩形及び第２の傾きを出力させる処理をコンピュータに実行させる。また、学習プログラムは、第２の矩形及び第２の傾きの、第１の矩形及び第１の傾きに対する誤差が小さくなるようにモデルを更新する処理をコンピュータに実行させる。【選択図】図１
2020080022.tif 000002
【特許請求の範囲】
【請求項１】
第１の画像内にあらかじめ第１の傾きで設定された図形であって、物体の把持位置を示す図形を内部に含み、いずれかの辺が第１の方向と平行な第１の矩形を生成し、
入力された画像から前記第１の方向と平行な矩形及び傾きを出力するモデルに、前記第１の画像を入力し、第２の矩形及び第２の傾きを出力させ、
前記第２の矩形及び前記第２の傾きの、前記第１の矩形及び前記第１の傾きに対する誤差が小さくなるように前記モデルを更新する、
処理をコンピュータに実行させることを特徴とする学習プログラム。
【請求項２】
前記生成する処理は、矩形である前記図形の頂点の全てを内部に含む矩形のうち、面積が最小かついずれかの辺が前記第１の方向と平行な矩形を前記第１の矩形として生成することを特徴とする請求項１に記載の学習プログラム。
【請求項３】
前記モデルは、入力された画像から、矩形及び傾きとともに、当該入力された画像内の当該矩形における表示内容を示すクラスごとの信頼度をさらに出力し、
前記出力させる処理は、前記モデルに、前記第１の画像を入力し、前記第２の矩形及び前記第２の傾きとともに、所定のクラスごとの信頼度を出力させ、
前記更新する処理は、さらに、前記図形に対してあらかじめ設定された第１のクラスの信頼度と、前記モデルによって出力された前記第２の矩形に対する信頼度との誤差が小さくなるように前記モデルを更新することを特徴とする請求項１に記載の学習プログラム。
【請求項４】
前記モデルは、入力された画像から、あらかじめ設定された矩形であるバウンディングボックスのいずれか及びクラスごとの信頼度を出力するＳＳＤ（Single  Shot  MultiBox  Detector）のモデルに、さらに角度を出力させるようにしたモデルであり、
前記出力させる処理は、前記モデルに、前記第１の画像を入力し、バウンディングボックス、角度、及びクラスごとの信頼度を出力させ、
前記更新する処理は、前記モデルによって出力されたバウンディングボックスと前記第１の矩形との誤差、前記モデルによって出力された角度と前記第１の傾きを示す角度との誤差、及び前記モデルによって出力された前記第１のクラスの信頼度と前記図形に対してあらかじめ設定された第１のクラスの信頼度との誤差が小さくなるように前記モデルを更新することを特徴とする請求項３に記載の学習プログラム。
【請求項５】
第１の画像内にあらかじめ第１の傾きで設定された図形であって、物体の把持位置を示す図形を内部に含み、いずれかの辺が第１の方向と平行な第１の矩形を生成し、
入力された画像から前記第１の方向と平行な矩形及び傾きを出力するモデルに、前記第１の画像を入力し、第２の矩形及び第２の傾きを出力させ、
前記第２の矩形及び前記第２の傾きの、前記第１の矩形及び前記第１の傾きに対する誤差が小さくなるように前記モデルを更新する、
処理をコンピュータが実行することを特徴とする学習方法。
【請求項６】
第１の画像内にあらかじめ第１の傾きで設定された図形であって、物体の把持位置を示す図形を内部に含み、いずれかの辺が第１の方向と平行な第１の矩形を生成する生成部と、
入力された画像から前記第１の方向と平行な矩形及び傾きを出力するモデルに、前記第１の画像を入力し、第２の矩形及び第２の傾きを出力させる出力部と、
前記第２の矩形及び前記第２の傾きの、前記第１の矩形及び前記第１の傾きに対する誤差が小さくなるように前記モデルを更新する更新部と、
を有することを特徴とする学習装置。
【請求項７】
第１の画像内にあらかじめ第１の傾きで設定された図形であって、物体の把持位置を示す図形を内部に含み、いずれかの辺が第１の方向と平行な第１の矩形を生成し、入力された画像から前記第１の方向と平行な矩形及び傾きを出力するモデルに、前記第１の画像を入力し、第２の矩形及び第２の傾きを出力させ、前記第２の矩形及び前記第２の傾きの、前記第１の矩形及び前記第１の傾きに対する誤差が小さくなるように前記モデルを更新する、処理によって更新された前記モデルに、第２の画像を入力し、第３の矩形及び第３の傾きを出力させ、
前記第３の矩形及び前記第３の傾きから物体の把持位置を検知する、
処理をコンピュータに実行させることを特徴とする検知プログラム。
【請求項８】
前記検知する処理によって検知した把持位置を、物体を把持するロボットを制御する把持制御装置に対して出力する処理をコンピュータにさらに実行させることを特徴とする請求項７に記載の検知プログラム。
【請求項９】
第１の画像内にあらかじめ第１の傾きで設定された図形であって、物体の把持位置を示す図形を内部に含み、いずれかの辺が第１の方向と平行な第１の矩形を生成し、入力された画像から前記第１の方向と平行な矩形及び傾きを出力するモデルに、前記第１の画像を入力し、第２の矩形及び第２の傾きを出力させ、前記第２の矩形及び前記第２の傾きの、前記第１の矩形及び前記第１の傾きに対する誤差が小さくなるように前記モデルを更新する、処理によって更新された前記モデルに、第２の画像を入力し、第３の矩形及び第３の傾きを出力させ、
前記第３の矩形及び前記第３の傾きから物体の把持位置を検知する、
処理をコンピュータが実行することを特徴とする検知方法。
【請求項１０】
第１の画像内にあらかじめ第１の傾きで設定された図形であって、物体の把持位置を示す図形を内部に含み、いずれかの辺が第１の方向と平行な第１の矩形を生成し、入力された画像から前記第１の方向と平行な矩形及び傾きを出力するモデルに、前記第１の画像を入力し、第２の矩形及び第２の傾きを出力させ、前記第２の矩形及び前記第２の傾きの、前記第１の矩形及び前記第１の傾きに対する誤差が小さくなるように前記モデルを更新する、処理によって更新された前記モデルに、第２の画像を入力し、第３の矩形及び第３の傾きを出力させる出力部と、
前記第３の矩形及び前記第３の傾きから物体の把持位置を検知する検知部と、
を有することを特徴とする検知装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習プログラム、学習方法、学習装置、検知プログラム、検知方法及び検知装置に関する。
【背景技術】
【０００２】
従来、ピッキングロボットが部品を把持するための把持位置を、画像認識により検知する技術が知られている。また、例えば、画像認識による物体検知の手法として、ＳＳＤ（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）や画像認識技術を使って仮想的に生成されたものであってもよい。
【００３８】
図５は、学習処理の流れを説明する図である。図５に示すように、出力部１４は、複数の学習データを拡張した上でモデル１８ａに入力する。例えば、学習データの１つは、画像３３ａ、画像３３ａに平行な矩形３１１ｂ及び角度θを含む。
【００３９】
出力部１４は、矩形３１１ｂを含むように、画像３３ａをランダムな位置で所定のサイズに切り出すことによって学習データの拡張を行う。例えば、出力部１４は、画像３３ａを含む学習データを、画像３３１ａを含む複数の切り出し画像のそれぞれに対応する学習データに拡張する。
【００４０】
更新部１６は、学習データを入力されたモデル１８ａの出力を基に、モデルパラメータ記憶部１８に記憶されたパラメータを更新する。例えば、更新部１６は、ニューラルネットワークの誤差逆伝播等の手法によりパラメータを更新することができる。
【００４１】
また、更新部１６は、従来のＳＳＤと同様に、矩形３１１ｂの誤差を、デフォルトのバウンディングボックスとの誤差とすることができる。モデル１８ａが出力した角度θ´は、２種類の傾きを表現し得る。このとき、更新部１６は、モデル１８ａが出力した角度θ´と、正解の角度θとの誤差を、回帰及び分類の問題として最適化することができる。
【００４２】
ここで、生成部１５による、画像に平行な矩形の生成方法について説明する。図６は、把持位置を表す矩形を説明する図である。矩形３１１ａは、把持位置を示す図形である。（ｘ，ｙ）は、矩形３１１ａの中心の座標である。また、ｗ及びｈは、矩形３１１ａの幅及び高さである。また、θは、矩形３１１ａの傾きを表す角度である。
【００４３】
まず、生成部１５は、矩形３１１ａの頂点を示す点群ｐ１、ｐ２、ｐ３及びｐ４を算出する。次に、生成部１５は、点群ｐ１、ｐ２、ｐ３及びｐ４を含み、画像に平行な矩形のうち、面積が最小の矩形を生成する。例えば、図６に示すように、生成部１５は、点群ｐ１、ｐ２、ｐ３及びｐ４が、互いに異なる辺上に存在するような矩形３１１ｂを生成する。
【００４４】
逆に、生成部１５は、矩形３１１ｂ及び角度θから、把持位置を表す矩形３１１ａを生成することができる。このとき、矩形３１１ａが一意に定まるように、幅ｗ及び高さｈの少なくともいずれかが固定値として設定されていてもよい。
【００４５】
［検知装置の構成］
図１に示すように、検知装置２０は、把持システム４０と接続されている。把持システム４０は、トレイ４１、ロボット４２及びカメラ４３を有する。トレイ４１には、把持対象の物体が置かれる。また、ロボット４２は、二指ハンドを有するピッキングロボットである。ロボット４２は、トレイ４１上の物体を把持する。このとき、ロボット４２は、把持制御装置５０から指示された把持位置に対し把持を行う。また、カメラ４３は、トレイ４１を上から撮影し、撮影した画像を把持制御装置５０に送信する。
【００４６】
把持制御装置５０は、学習装置１０の取得部１１及び把持制御部１２と同様の機能を有する。つまり、把持制御装置５０は、カメラ４３からトレイ４１上の物体の画像を取得する。また、把持制御装置５０は、取得した画像をテストデータ２０ａとして検知装置２０に送信する。また、把持制御装置５０は、検知結果２０ｂとして入力された把持位置に従い、ロボット４２を制御し物体を把持させる。
【００４７】
図１に示すように、検知装置２０は、出力部２１、検知部２２、生成部２３及びモデルパラメータ記憶部２４を有する。モデルパラメータ記憶部２４は、学習装置１０のモデルパラメータ記憶部１８に記憶されているパラメータと同一のパラメータを記憶する。
【００４８】
出力部２１は、学習装置１０の出力部１４と同様の機能を有する。すなわち、出力部２１は、テストデータ２０ａの画像をモデルに入力し、バウンディングボックス、角度、及びクラスごとの信頼度を出力させる。また、検知部２２は、モデルによって出力されたバウンディングボックス及び角度の組み合わせのうち、信頼度が最も大きい組み合わせを検知する。テストデータ２０ａの画像は、第２の画像の一例である。また、出力部２１が出力させるバウンディングボックス及び角度は、第３の矩形及び第３の傾きの一例である。
【００４９】
生成部２３は、学習装置１０の生成部１５と同様の機能を有する。すなわち、生成部２３は、検知部２２によって検知されたバウンディングボックス及び角度から、把持位置を示す傾いた矩形を生成する。そして、生成部２３によって生成された把持位置は、検知結果２０ｂとして把持制御装置５０に送信される。
【００５０】
［処理の流れ］
図７、図８及び図９のフローチャートを用いて、実施例の処理の流れを説明する。図７は、生成処理の流れを示すフローチャートである。また、図８は、学習処理の流れを示すフローチャートである。また、図９は、検知処理の流れを示すフローチャートである。
【００５１】
図７のフローチャートを用いて生成処理について説明する。図７に示すように、まず、学習装置１０は、カメラ３３によって撮影された画像をモデルに入力し、バウンディングボックス、角度及び信頼度を出力させる（ステップＳ１０１）。
【００５２】
次に、学習装置１０は、バウンディングボックス及び角度によって示される把持位置のうち、最も信頼度が大きい把持位置に対し、把持を試行させる（ステップＳ１０２）。そして、学習装置１０は、画像及び把持位置に、把持結果をラベルとして付与した学習データを生成し、学習データ記憶部１７に格納する（ステップＳ１０３）。
【００５３】
図８のフローチャートを用いて学習処理の流れを説明する。図８に示すように、まず、学習装置１０は、モデルパラメータ記憶部１８に記憶されたモデルのパラメータを初期化する（ステップＳ２０１）。次に、学習装置１０は、学習データの把持位置から点群を算出する（ステップＳ２０２）。そして、学習装置１０は、点群から矩形及び角度を生成する（ステップＳ２０３）。
【００５４】
ここで、学習装置１０は、学習データの画像をモデルに入力し、バウンディングボックス、角度及び信頼度を出力させる（ステップＳ２０４）。そして、学習装置１０は、生成した矩形及び角度と、モデルによって出力されたバウンディングボックス及び角度との誤差を計算する（ステップＳ２０５）。さらに、学習装置１０は、信頼度の誤差を計算する（ステップＳ２０６）。
【００５５】
学習装置１０は、計算した誤差をフィードバックする（ステップＳ２０７）。このとき、例えば、学習装置１０は、誤差のフィードバックによる更新後のモデルのパラメータを一時データとして保持しておく。そして、学習装置１０は、所定の条件が満たされているか否かに基づき、学習が終了したか否かを判定する（ステップＳ２０８）。例えば、所定の条件は、未入力の学習データがなくなったこと、学習が既定の回数だけ行われたこと及びパラメータの更新量が収束したこと等である。
【００５６】
学習装置１０は、学習が終了したと判定した場合（ステップＳ２０８、Ｙｅｓ）、モデルパラメータ記憶部１８のパラメータを更新し（ステップＳ２０９）、処理を終了する。このとき、学習装置１０は、保持している一時データでモデルパラメータ記憶部１８を上書きすることによってパラメータを更新することができる。
【００５７】
学習装置１０は、学習が終了していないと判定した場合（ステップＳ２０８、Ｎｏ）、ステップＳ２０４に戻り、処理を繰り返す。このとき、学習装置１０は、保持している一時データをモデルに反映させた上で、以降の処理を行うことができる。
【００５８】
図９のフローチャートを用いて検知処理の流れを説明する。図９に示すように、まず、検知装置２０は、学習装置１０から学習済みのモデルのパラメータを取得し、モデルパラメータ記憶部２４に格納する（ステップＳ３０１）。なお、検知装置２０は、学習装置１０とモデルパラメータ記憶部１８を共有するようにしてもよい。その場合、ステップＳ３０１は省略される。
【００５９】
ここで、検知装置２０は、テストデータ２０ａの画像をモデルに入力し、バウンディングボックス、角度及び信頼度を出力させる（ステップＳ３０２）。そして、検知装置２０は、最も信頼度が大きいバウンディングボックス及び角度から把持位置を示す矩形を生成し、生成した矩形を把持位置として検知する（ステップＳ３０３）。
【００６０】
このとき、検知装置２０は、図８のステップＳ２０２及びＳ２０３と逆の処理を行う。つまり、検知装置２０は、矩形であるバウンディングボックス及び角度から把持位置を示す点群を生成する。
【００６１】
［効果］
上述したように、学習装置１０は、第１の画像内にあらかじめ第１の傾きで設定された図形であって、物体の把持位置を示す図形を内部に含み、いずれかの辺が第１の方向と平行な第１の矩形を生成する。また、学習装置１０は、入力された画像から第１の方向と平行な矩形及び傾きを出力するモデルに、第１の画像を入力し、第２の矩形及び第２の傾きを出力させる。また、学習装置１０は、第２の矩形及び第２の傾きの、第１の矩形及び第１の傾きに対する誤差が小さくなるようにモデルを更新する。このように、学習装置１０は、把持位置を矩形で表し、角度を連続値として扱うことができる。このため、実施例によれば、物体の把持位置を検知するモデルの学習を安定して行うことができる。
【００６２】
また、学習装置１０は、矩形である図形の頂点の全てを内部に含む矩形のうち、面積が最小かついずれかの辺が第１の方向と平行な矩形を第１の矩形として生成する。これにより、学習装置１０は、画像に平行な矩形から把持位置を算出することができる。
【００６３】
モデルは、モデルは、入力された画像から、矩形及び傾きとともに、当該入力された画像内の当該矩形における表示内容を示すクラスごとの信頼度をさらに出力する。学習装置１０は、モデルに、第１の画像を入力し、第２の矩形及び第２の傾きとともに、所定のクラスごとの信頼度を出力させる。また、学習装置１０は、さらに、図形に対してあらかじめ設定された第１のクラスの信頼度と、モデルによって出力された第２の矩形に対する信頼度との誤差が小さくなるようにモデルを更新する。このように、学習装置１０は、従来の画像認識と同様の方法でモデルを更新することができる。このため、学習装置１０の学習処理は、従来の手法を基に容易に実現することができる。
【００６４】
モデルは、入力された画像から、あらかじめ設定された矩形であるバウンディングボックスのいずれか及びクラスごとの信頼度を出力するＳＳＤのモデルに、さらに角度を出力させるようにしたものである。学習装置１０は、モデルに、第１の画像を入力し、バウンディングボックス、角度、及びクラスごとの信頼度を出力させる。また、学習装置１０は、モデルによって出力されたバウンディングボックスと第１の矩形との誤差、及びモデルによって出力された角度と第１の傾きを示す角度との誤差が小さくなるようにモデルを更新する。また、学習装置１０は、モデルによって出力された第１のクラスの信頼度と図形に対してあらかじめ設定された第１のクラスの信頼度との誤差が小さくなるようにモデルを更新する。このように、学習装置１０は、ＳＳＤと同様の方法でモデルを更新することができる。このため、学習装置１０の学習処理は、従来の手法を基に容易に実現することができる。
【００６５】
検知装置２０は、学習装置１０によって更新されたモデルに、第２の画像を入力し、第３の矩形及び第３の傾きを出力させる。また、検知装置２０は、第３の矩形及び第３の傾きから物体の把持位置を検知する。これにより、検知装置２０は、安定した把持位置の検知を行うことができる。
【００６６】
また、検知装置２０は、検知した把持位置を、物体を把持するロボット４２を制御する把持制御装置５０に対して出力する。これにより、検知装置２０は、把持制御装置５０及びロボット４２に、安定して把持を行わせることができる。
【００６７】
なお、上記の実施例では、モデルが、画像に平行な矩形及び角度を出力するものとして説明した。一方で、モデルは、把持位置を示す傾いた矩形の幅及び高さの少なくともいずれかを出力するようにしてもよい。このとき、学習装置１０は、把持位置の幅及び高さを含む学習データを取得し、それぞれの誤差を最小化するように学習を行う。
【００６８】
［システム］
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、実施例で説明した具体例、分布、数値等は、あくまで一例であり、任意に変更することができる。
【００６９】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７０】
［ハードウェア］
図１０は、ハードウェア構成例を説明する図である。図１０に示すように、学習装置１０は、通信インタフェース１０ａ、ＨＤＤ（Hard  Disk  Drive）１０ｂ、メモリ１０ｃ、プロセッサ１０ｄを有する。また、図１０に示した各部は、バス等で相互に接続される。また、検知装置２０も、学習装置１０と同様のハードウェア構成を有する。また、検知装置２０も、学習装置１０と同様のハードウェア構成により実現される。
【００７１】
通信インタフェース１０ａは、ネットワークインタフェースカード等であり、他のサーバとの通信を行う。ＨＤＤ１０ｂは、図１に示した機能を動作させるプログラムやＤＢを記憶する。
【００７２】
プロセッサ１０ｄは、図１に示した各処理部と同様の処理を実行するプログラムをＨＤＤ１０ｂ等から読み出してメモリ１０ｃに展開することで、図１等で説明した各機能を実行するプロセスを動作させるハードウェア回路である。すなわち、このプロセスは、学習装置１０が有する各処理部と同様の機能を実行する。具体的には、プロセッサ１０ｄは、取得部１１、把持制御部１２、付与部１３、出力部１４、生成部１５、更新部１６と同様の機能を有するプログラムをＨＤＤ１０ｂ等から読み出す。そして、プロセッサ１０ｄは、取得部１１、把持制御部１２、付与部１３、出力部１４、生成部１５、更新部１６等と同様の処理を実行するプロセスを実行する。
【００７３】
このように学習装置１０は、プログラムを読み出して実行することで学習類方法を実行する情報処理装置として動作する。また、学習装置１０は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、学習装置１０によって実行されることに限定されるものではない。例えば、他のコンピュータ又はサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【００７４】
このプログラムは、インターネット等のネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ（Magneto−Optical  disk）、ＤＶＤ（Digital  Versatile  Disc）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
【符号の説明】
【００７５】
１  システム
１０  学習装置
１１  取得部
１２  把持制御部
１３  付与部
１４、２１  出力部
１５、２３  生成部
１６  更新部
１７  学習データ記憶部
１８  モデルパラメータ記憶部
２０  検知装置
２０ａ  テストデータ
２０ｂ  検知結果
２２  検知部
２４  モデルパラメータ記憶部
３０、４０  把持システム
３１、４１  トレイ
３２、４２  ロボット
３３、４３  カメラ
【図１】
2020080022.tif 000003
【図２】
2020080022.tif 000004
【図３】
2020080022.tif 000005
【図４】
2020080022.tif 000006
【図５】
2020080022.tif 000007
【図６】
2020080022.tif 000008
【図７】
2020080022.tif 000009
【図８】
2020080022.tif 000010
【図９】
2020080022.tif 000011
【図１０】
2020080022.tif 000012