(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024111550
(43)【公開日】2024-08-19
(54)【発明の名称】学習方法、学習装置、及びプログラム
(51)【国際特許分類】
G06T 7/00 20170101AFI20240809BHJP
G06V 10/72 20220101ALI20240809BHJP
【FI】
G06T7/00 350C
G06V10/72
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023016125
(22)【出願日】2023-02-06
(71)【出願人】
【識別番号】000005326
【氏名又は名称】本田技研工業株式会社
(74)【代理人】
【識別番号】100165179
【弁理士】
【氏名又は名称】田▲崎▼ 聡
(74)【代理人】
【識別番号】100126664
【弁理士】
【氏名又は名称】鈴木 慎吾
(74)【代理人】
【識別番号】100154852
【弁理士】
【氏名又は名称】酒井 太一
(74)【代理人】
【識別番号】100194087
【弁理士】
【氏名又は名称】渡辺 伸一
(72)【発明者】
【氏名】奈良村 五十志
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096FA67
5L096FA69
5L096HA11
5L096KA04
(57)【要約】 (修正有)
【課題】トレーニングデータとして利用可能な画像データを大量に生成する学習方法、学習装置及びプログラムを提供する。
【解決手段】学習装置の処理部における学習方法であって、オブジェクトを把持又は操作することが可能であり、かつ、複数の関節が設けられたエンドエフェクタの姿勢データと、互いに異なる複数の視点の其々からエンドエフェクタによってオブジェクトが把持又は操作されるシーンを観測する際の視線の方向データと、複数の視点の其々の位置データと、複数の視点の其々から観測したシーンの画像データである原画像データと、を取得すること、取得した姿勢データ、方向データ、位置データ及び原画像データを用いて、原画像データを再構成した画像データである再構成画像データを生成するようにオートエンコーダを学習すること、を含む。
【選択図】
図6
【特許請求の範囲】
【請求項1】
オブジェクトを把持又は操作することが可能であり、かつ複数の関節が設けられたエンドエフェクタの姿勢データと、互いに異なる複数の視点の其々から前記エンドエフェクタによって前記オブジェクトが把持又は操作されるシーンを観測する際の視線の方向データと、前記複数の視点の其々の位置データと、前記複数の視点の其々から観測した前記シーンの画像データである原画像データと、を取得すること、
取得された前記姿勢データ、前記方向データ、前記位置データ、及び前記原画像データを用いて、前記原画像データを再構成した画像データである再構成画像データを生成するようにオートエンコーダを学習すること、
を含む学習方法。
【請求項2】
前記オートエンコーダには、エンコーダ及びデコーダが含まれ、
前記エンコーダに対して前記姿勢データ、前記方向データ、前記位置データ、及び前記原画像データが入力されると、前記エンコーダは潜在変数を出力し、
前記デコーダに対して前記潜在変数が入力されると、前記デコーダは前記視線上における前記シーンの色及び密度を出力し、
前記オートエンコーダを学習することには、
前記デコーダによって出力された前記シーンの色及び密度を前記視線上において可視化することで、前記再構成画像データを生成すること、及び
前記エンコーダに入力された前記原画像データと、生成された前記再構成画像データとが一致するように、前記エンコーダ及び前記デコーダの其々のパラメータを調整すること、が含まれる、
請求項1に記載の学習方法。
【請求項3】
前記デコーダは、ニューラルレイディアンスフィールズである、
請求項2に記載の学習方法。
【請求項4】
前記姿勢データには、前記エンドエフェクタに設けられた前記複数の関節の其々の位置及び向きが要素として含まれる、
請求項1から3のうちいずれか一項に記載の学習方法。
【請求項5】
前記姿勢データを、前記姿勢データに比べて低次元であり、かつ前記関節の数に依存しない次元数のデータである低次元姿勢データに変換すること、並びに
前記低次元姿勢データ、前記方向データ、及び前記位置データを高次元化させること、が更に含まれ、
前記オートエンコーダを学習することは、高次元化させた前記低次元姿勢データ、高次元化させた前記方向データ、及び高次元化させた前記位置データを用いて、前記再構成画像データを生成するように前記オートエンコーダを学習すること、である、
請求項4に記載の学習方法。
【請求項6】
前記姿勢データ、前記方向データ、及び前記位置データを高次元化させること、が更に含まれ、
前記オートエンコーダを学習することは、高次元化させた前記姿勢データ、高次元化させた前記方向データ、及び高次元化させた前記位置データを用いて、前記再構成画像データを生成するように前記オートエンコーダを学習すること、である、
請求項4に記載の学習方法。
【請求項7】
オブジェクトを把持又は操作することが可能であり、かつ複数の関節が設けられたエンドエフェクタの姿勢データと、互いに異なる複数の視点の其々から前記エンドエフェクタによって前記オブジェクトが把持又は操作されるシーンを観測する際の視線の方向データと、前記複数の視点の其々の位置データと、前記複数の視点の其々から観測した前記シーンの画像データである原画像データと、を取得する取得部と、
取得された前記姿勢データ、前記方向データ、前記位置データ、及び前記原画像データを用いて、前記原画像データを再構成した画像データである再構成画像データを生成するようにオートエンコーダを学習する学習部と、
を備える学習装置。
【請求項8】
オブジェクトを把持又は操作することが可能であり、かつ複数の関節が設けられたエンドエフェクタの姿勢データと、互いに異なる複数の視点の其々から前記エンドエフェクタによって前記オブジェクトが把持又は操作されるシーンを観測する際の視線の方向データと、前記複数の視点の其々の位置データと、前記複数の視点の其々から観測した前記シーンの画像データである原画像データと、を取得すること、
取得された前記姿勢データ、前記方向データ、前記位置データ、及び前記原画像データを用いて、前記原画像データを再構成した画像データである再構成画像データを生成するようにオートエンコーダを学習すること、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、学習方法、学習装置、及びプログラムに関する。
【背景技術】
【0002】
多層パーセプトロン(Multilayer Perceptrons:MLPs)を含む機械学習モデルを用いて、あるオブジェクト又はシーンを任意の視点から観測した際に得られる画像(ビュー)を生成又は合成するコンピューティングシステムが知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来の技術では、DenseFusionなどRGB-Dデータと物体姿勢を直接回帰する深層学習を用いたネットワークなども検討が進められているものの、未知の視点から観測した画像を入力とした場合、出力結果が不安定になる場合があった。一方で、ロボットを用いたアプリケーションにおいて、実機で再現性良く大量のトレーニングデータを収集することは困難である。
【0005】
本発明は、このような事情を考慮してなされたものであり、トレーニングデータとして利用可能な画像データを大量に生成することができる学習方法、学習装置、及びプログラムを提供することを目的の一つとする。
【課題を解決するための手段】
【0006】
本発明に係る学習方法、学習装置、及びプログラムは以下の構成を採用した。
(1)本発明の第1の例は、オブジェクトを把持又は操作することが可能であり、かつ複数の関節が設けられたエンドエフェクタの姿勢データと、互いに異なる複数の視点の其々から前記エンドエフェクタによって前記オブジェクトが把持又は操作されるシーンを観測する際の視線の方向データと、前記複数の視点の其々の位置データと、前記複数の視点の其々から観測した前記シーンの画像データである原画像データと、を取得すること、取得された前記姿勢データ、前記方向データ、前記位置データ、及び前記原画像データを用いて、前記原画像データを再構成した画像データである再構成画像データを生成するようにオートエンコーダを学習すること、を含む学習方法である。
【0007】
(2)本発明の第2の例は、第1の例において、前記オートエンコーダには、エンコーダ及びデコーダが含まれ、前記エンコーダに対して前記姿勢データ、前記方向データ、前記位置データ、及び前記原画像データが入力されると、前記エンコーダは潜在変数を出力し、前記デコーダに対して前記潜在変数が入力されると、前記デコーダは前記視線上における前記シーンの色及び密度を出力し、前記オートエンコーダを学習することには、前記デコーダによって出力された前記シーンの色及び密度を前記視線上において可視化することで、前記再構成画像データを生成すること、及び前記エンコーダに入力された前記原画像データと、生成された前記再構成画像データとが一致するように、前記エンコーダ及び前記デコーダの其々のパラメータを調整すること、が含まれるものである。
【0008】
(3)本発明の第3の例は、第2の例において、前記デコーダは、ニューラルレイディアンスフィールズであるものである。
【0009】
(4)本発明の第4の例は、第1から第3の例のいずれかにおいて、前記姿勢データには、前記エンドエフェクタに設けられた前記複数の関節の其々の位置及び向きが要素として含まれるものである。
【0010】
(5)本発明の第5の例は、第4の例において、前記姿勢データを、前記姿勢データに比べて低次元であり、かつ前記関節の数に依存しない次元数のデータである低次元姿勢データに変換すること、並びに前記低次元姿勢データ、前記方向データ、及び前記位置データを高次元化させること、が更に含まれ、前記オートエンコーダを学習することは、高次元化させた前記低次元姿勢データ、高次元化させた前記方向データ、及び高次元化させた前記位置データを用いて、前記再構成画像データを生成するように前記オートエンコーダを学習すること、であるものである。
【0011】
(6)本発明の第6の例は、第4の例において、前記姿勢データ、前記方向データ、及び前記位置データを高次元化させること、が更に含まれ、前記オートエンコーダを学習することは、高次元化させた前記姿勢データ、高次元化させた前記方向データ、及び高次元化させた前記位置データを用いて、前記再構成画像データを生成するように前記オートエンコーダを学習すること、であるものである。
【0012】
(7)本発明の第7の例は、オブジェクトを把持又は操作することが可能であり、かつ複数の関節が設けられたエンドエフェクタの姿勢データと、互いに異なる複数の視点の其々から前記エンドエフェクタによって前記オブジェクトが把持又は操作されるシーンを観測する際の視線の方向データと、前記複数の視点の其々の位置データと、前記複数の視点の其々から観測した前記シーンの画像データである原画像データと、を取得する取得部と、取得された前記姿勢データ、前記方向データ、前記位置データ、及び前記原画像データを用いて、前記原画像データを再構成した画像データである再構成画像データを生成するようにオートエンコーダを学習する学習部と、を備える学習装置である。
【0013】
(8)本発明の第8の例は、オブジェクトを把持又は操作することが可能であり、かつ複数の関節が設けられたエンドエフェクタの姿勢データと、互いに異なる複数の視点の其々から前記エンドエフェクタによって前記オブジェクトが把持又は操作されるシーンを観測する際の視線の方向データと、前記複数の視点の其々の位置データと、前記複数の視点の其々から観測した前記シーンの画像データである原画像データと、を取得すること、取得された前記姿勢データ、前記方向データ、前記位置データ、及び前記原画像データを用いて、前記原画像データを再構成した画像データである再構成画像データを生成するようにオートエンコーダを学習すること、をコンピュータに実行させるためのプログラムである。
【発明の効果】
【0014】
上記の例によれば、トレーニングデータとして利用可能な画像データを大量に生成することができる。
【図面の簡単な説明】
【0015】
【
図1】実施形態に係る学習システム1の構成の一例を表す図である。
【
図2】実施形態に係るロボット10の外観を模式的に表す図である。
【
図3】実施形態に係るロボット10及び制御装置100の構成図である。
【
図4】実施形態に係る学習装置200の構成図である。
【
図6】実施形態に係る処理部240のトレーニングの処理の流れを表すフローチャートである。
【
図7】オートエンコーダの構成を模式的に表す図である。
【
図8】実施形態に係る処理部240のデータアーギュメンテーションの処理の流れを表すフローチャートである。
【
図9】学習済みデコーダを用いたデータアーギュメンテーションを模式的に表す図である。
【発明を実施するための形態】
【0016】
以下、図面を参照し、本発明の学習方法、学習装置、及びプログラムの実施形態について説明する。
【0017】
[システムの構成]
図1は、実施形態に係る学習システム1の構成の一例を表す図である。学習システム1は、例えば、制御装置100と、学習装置200とを備える。例えば、制御装置100及び学習装置200は、ネットワークNWを介して接続される。ネットワークNWは、LAN(Local Area Network)やWAN(Wide Area Network)などを含む。
【0018】
制御装置100は、ロボット10が自律的に行動するように自律制御を行う。制御装置100は、典型的には、ロボット10に搭載され、直接ロボット10を制御する。また、制御装置100は、ロボット10から遠く離れた地点に設置され、ネットワークNWを介して遠隔でロボット10を制御してもよい。
【0019】
学習装置200は、機械学習モデルのトレーニングデータとして利用可能な画像データを大量に生成することを目的に、制御装置100を介してロボット10から間接的に様々なデータを取得したり、制御装置100を介さずにロボット10から直接的に様々なデータを取得したりする。機械学習モデルは、例えば、ロボット10を自律的に行動させるためのものであってもよいし、ロボット10にオブジェクトを認識させるためのものであってもよいし、その用途は特段限定されず、あらゆる用途に適用されてよい。
【0020】
学習装置200は、ロボット10から取得したデータを用いて、トレーニングデータとして利用可能な画像データを人工的に生成又は合成するためのオートエンコーダを学習する。オートエンコーダの学習の詳細については後述する。
【0021】
学習装置200は、単一の装置であってもよいし、ネットワークNWを介して接続された複数の装置が互いに協働して動作する一つのシステムであってもよい。すなわち、学習装置200は、分散コンピューティングシステムやクラウドコンピューティングシステムに含まれる複数のコンピュータ(プロセッサ)によって実現されてもよい。
【0022】
[ロボットの外観]
図2は、実施形態に係るロボット10の外観を模式的に表す図である。ロボット10は、典型的には、エンドエフェクタによってオブジェクトOBを把持したり、又は操作したりすることができる人型ロボット(ヒューマノイドロボット)であるがこれに限られず、オブジェクトOBを把持又は操作できれば如何なる態様のロボットであってもよい。例えば、ロボット10は、四足歩行の動物型のロボットであってもよいし、産業用ロボットであってもよいし、軍事用ロボットであってもよいし、家庭用の掃除用ロボットであってもよいし、その他種々のロボットであってよい。
【0023】
エンドエフェクタは、ロボットハンドともいう。そのため以下の説明では、エンドエフェクタのことを単に「手」と称して説明する場合がある。ロボット10のエンドエフェクタには、例えば、数本の指がグリッパーとして設けられてよい。
【0024】
ロボット10は、例えば、ロボット10から見た外界環境を画像化するためのカメラ11や、ロボット10の動作を制御するための制御装置100などを備えており、制御装置100によって決定された行動に従って目的のタスクを実行する。
【0025】
タスクとは、例えば、オブジェクトOBを手で掴んだり、オブジェクトOBをもう一方の手に持ち替えたり、又はオブジェクトOBを移動させたりすることである。なお、タスクはこれらに限られず、任意のタスクが設定可能である。
【0026】
カメラ11は、ロボット10のボディの一部(典型的には頭部)に設置される。カメラ11は、例えば、デプスカメラ(3Dカメラ)であってよい。例えば、カメラ11は、エンドエフェクタによってオブジェクトOBが把持されたり、又は操作されたりするシーンを撮像し、そのシーンを写した画像データを制御装置100に送信する。
【0027】
[ロボット及び制御装置の構成]
図3は、実施形態に係るロボット10及び制御装置100の構成図である。ロボット10は、上述したカメラ11に加えて、更にアクチュエータ12と、状態センサ13と、動作制御部14とを備える。
【0028】
アクチュエータ12は、動作制御部14の制御を受けてロボット10の各部位(腕、指、足、頭、胴、腰等)を駆動する。アクチュエータ12は、例えば、電磁モータ、ギア、人工筋などを含む。
【0029】
状態センサ13は、ロボット10の状態(例えば関節角度や角速度、トルク等)を検出するセンサである。状態センサ13は、例えば、ロボット10やエンドエフェクタの関節の回動の度合いを検出するロータリエンコーダや、関節を回動させるためのワイヤーの張力を検出する張力センサ、関節軸にかかるトルクを検出するトルクセンサ、ロボット10の姿勢を検出するための加速度センサやジャイロセンサなどを含む。
【0030】
動作制御部14は、制御装置100によって生成された制御コマンドに基づいて、アクチュエータ12を制御する。
【0031】
制御装置100は、例えば、通信インターフェース110と、処理部120と、記憶部130とを備える。
【0032】
通信インターフェース110は、ネットワークNWを介して外部装置と通信したり、バスのような通信線を介してロボット10と通信したりする。外部装置は、例えば、学習装置200や、ロボット10に対してタスクの実行を要求するユーザが利用可能な端末装置(スマートフォンやパーソナルコンピュータなど)などである。通信インターフェース110には、例えば、受信機や送信機を含む無線通信モジュールや、NIC(Network Interface Card)などが含まれる。
【0033】
処理部120は、例えば、取得部121と、把持姿勢決定部122と、コマンド生成部123と、通信制御部124とを備える。
【0034】
取得部121は、通信インターフェース110を介して、ロボット10から画像データと状態データを取得する。
【0035】
画像データは、カメラ11がオブジェクトOBを撮像した際に生成された画像データである。例えば、カメラ11がロボット10の頭部に設置された場合、取得部121は、エンドエフェクタによってオブジェクトOBが把持されたり又は操作されたりするシーンを、ロボット10の頭部という視点から観測したときの画像データを取得する。
【0036】
状態データには、例えば、ロボット10の状態センサ13の検出値が含まれる。具体的には、状態データには、ロータリエンコーダにより検出されたロボット10又はエンドエフェクタの関節の角度、張力センサにより検出されたロボット10又はエンドエフェクタの関節のワイヤー張力、トルクセンサにより検出されたロボット10又はエンドエフェクタの関節軸のトルク、加速度センサにより検出されたロボット10又はエンドエフェクタの加速度、ジャイロセンサにより検出されたロボット10又はエンドエフェクタの角速度などが含まれる。
【0037】
取得部121は、ロボット10の作業空間上に監視カメラ20が存在する場合、ロボット10から画像データを取得することに加えて、或いは代えて、監視カメラ20から画像データを取得してもよい。以下、カメラ11及び/又は監視カメラ20によって観測されたシーンの画像データのことを「原画像データ」と称して説明する。
【0038】
把持姿勢決定部122は、原画像データや、その他の様々なデータに基づいて、エンドエフェクタがとるべき姿勢(ポーズ)を決定する。
【0039】
コマンド生成部123は、把持姿勢決定部122によって決定されたエンドエフェクタの姿勢と、取得部121によって取得された状態データとに基づいて、ロボット10の各アクチュエータ12を制御するための制御コマンドを生成する。
【0040】
通信制御部124は、通信インターフェース110を介して、コマンド生成部123によって生成された制御コマンドをロボット10に送信する。ロボット10の動作制御部14は、制御装置100から制御コマンドを受信すると、その制御コマンドに基づいてアクチュエータ12を制御する。これによってロボット10が行動し、オブジェクトOBを把持したり操作したりするようなタスクが実行される。
【0041】
処理部120の構成要素は、例えば、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などが記憶部130に格納されたプログラム又はインストラクションを実行することにより実現される。これらの構成要素の一部または全部は、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、またはFPGA(Field-Programmable Gate Array)などのハードウェアにより実現されてもよいし、ソフトウェアとハードウェアの協働によって実現されてもよい。
【0042】
記憶部130は、例えば、HDD(Hard Disc Drive)、フラッシュメモリ、EEPROM(Electrically Erasable Programmable Read Only Memory)、ROM(Read Only Memory)、RAM(Random Access Memory)などにより実現される。記憶部130は、ファームウェアやアプリケーションプログラム、処理部120の演算結果などを格納する。
【0043】
[学習装置の構成]
以下、実施形態に係る学習装置200の構成を説明する。
図4は、実施形態に係る学習装置200の構成図である。学習装置200は、例えば、通信インターフェース210と、入力インターフェース220と、出力インターフェース230と、処理部240と、記憶部250とを備える。
【0044】
通信インターフェース210は、ネットワークNWを介して制御装置100などと通信する。通信インターフェース210には、例えば、受信機や送信機を含む無線通信モジュールや、NICなどが含まれる。
【0045】
入力インターフェース220は、ユーザからの各種の入力操作を受け付け、受け付けた入力操作を電気信号に変換して処理部240に出力する。例えば、入力インターフェース220は、マウス、キーボード、トラックボール、スイッチ、ボタン、ジョイスティック、タッチパネル等を含む。
【0046】
出力インターフェース230は、例えば、ディスプレイやスピーカなどを備える。ディスプレイは、処理部240によって生成された画像や、操作者からの各種の入力操作を受け付けるためのGUI(Graphical User Interface)等を表示する。例えば、ディスプレイは、LCD(Liquid Crystal Display)や、有機EL(Electro Luminescence)ディスプレイ等である。スピーカは、処理部240から入力された情報を音声として出力する。
【0047】
処理部240は、例えば、取得部241と、データ変換部242と、学習部243と、画像生成部244と、出力制御部245とを備える。
【0048】
処理部240の構成要素は、例えば、CPUやGPUなどが記憶部250に格納されたプログラムを実行することにより実現される。これらの構成要素の一部または全部は、LSI、ASIC、またはFPGAなどのハードウェアにより実現されてもよいし、ソフトウェアとハードウェアの協働によって実現されてもよい。
【0049】
記憶部250は、例えば、HDD、フラッシュメモリ、EEPROM、ROM、RAMなどにより実現される。記憶部250は、ファームウェアやアプリケーションプログラムなどの各種プログラムの他に、モデルデータを格納する。
【0050】
モデルデータは、オートエンコーダを定義したプログラム又はアルゴリズムである。オートエンコーダには、エンコーダ及びデコーダが含まれる。
【0051】
エンコーダは、例えば、CNN(Convolutional Neural Network(s))等のニューラルネットワークを用いて実装されてよい。
【0052】
デコーダは、例えば、NeRF(Neural Radiance Fields)によって実装されてよい。NeRFは、主に、複数の視点の画像から、任意の視点(新たな視点)の画像を生成するタスク(新規視点画像生成(Novel View Synthesis)という)を実現するために提案された手法である。具体的には、NeRFは、対象とするシーンを観測することができる任意の視点が指定され、更に、その視点からシーンを観測する際の視線の方向が指定された場合、指定された視点及び方向で対象シーンを観測したときに人間であれば認識し得るような三次元構造に関する情報を出力するように予め学習されたニューラルネットワークである。
【0053】
オートエンコーダがニューラルネットワークによって実装される場合、例えば、当該ニューラルネットワークを構成する入力層、一以上の隠れ層(中間層)、出力層の其々の層に含まれるユニットが互いにどのように結合されるのかという結合情報や、結合されたユニット間で入出力されるデータに付与される結合係数がいくつであるのかという重み情報などが含まれる。
【0054】
結合情報は、例えば、各層に含まれるユニット数や、各ユニットの結合先のユニットの種類を指定する情報、各ユニットを実現する活性化関数、隠れ層のユニット間に設けられたゲートなどの情報を含む。
【0055】
ユニットを実現する活性化関数は、例えば、ReLU(Rectified Linear Unit)関数やELU(Exponential Linear Units)関数、クリッピング関数、シグモイド関数、ステップ関数、ハイパポリックタンジェント関数、恒等関数などであってよい。ゲートは、例えば、活性化関数によって返される値(例えば1または0)に応じて、ユニット間で伝達されるデータを選択的に通過させたり、重み付けたりする。
【0056】
結合係数は、例えば、ニューラルネットワークの隠れ層において、ある層のユニットから、より深い層のユニットにデータが出力される際に、出力データに対して付与される重みを含む。また、結合係数は、各層の固有のバイアス成分などを含んでもよい。
【0057】
図5は、NeRFの概要を説明するための図である。NeRFは、ある視点の三次元位置を示す位置ベクトルx(→)=(x,y,z)と、その視点からシーンを観測する際の視線の方向を示す方向ベクトルd(→)=(θ,φ)とが指定されると、視線上においてN個のサンプリング点を定め、各サンプリング点の色を示す色ベクトルc(→)=(R,G,B)と密度σを出力する。括弧付きの矢印(→)はベクトルを表している。
【0058】
例えば、xは三次元空間の幅を表し、yは奥行きを表し、zは高さを表してよい。θ及びφのうち一方は仰角を表し、θ及びφのうち他方は方位角を表してよい。Rは赤色を表し、Gは緑色を表し、Bは青色を表している。Nは任意の自然数である。
【0059】
本実施形態では、ロボット10のエンドエフェクタの関節の姿勢によって条件付けられたNeRFを利用する。人の身体などのポーズを制御することを目的としたNeRFモデルは既にいくつか提案されており、最もシンプルなモデルとして、Pose-conditioned NeRF(以下、P-NeRFという)が知られている。本実施形態では、一例として、エンドエフェクタの関節の姿勢によって条件付られたP-NeRFによってオートエンコーダのデコーダが実装されるものとして説明する。
【0060】
[学習装置の処理フロー・トレーニング]
以下、学習装置200の処理部240の各構成要素についてフローチャートを用いて説明する。
図6は、実施形態に係る処理部240のトレーニングの処理の流れを表すフローチャートである。本フローチャートの処理は、オートエンコーダをトレーニングする際に実行される。
【0061】
まず、取得部241は、ある視点からカメラ11及び/又は監視カメラ20によって観測されたシーン(エンドエフェクタによってオブジェクトOBが把持されたり又は操作されたりするシーン)の画像データである原画像データと、当該視点の三次元位置を表す位置ベクトルx(→)と、当該視点からシーンを観測する際の視線の方向を示す方向ベクトルd(→)とを、通信インターフェース210を介して、ロボット10又は制御装置100から取得する(ステップS100)。位置ベクトルx(→)は「位置データ」の一例であり、方向ベクトルd(→)は「方向データ」の一例である。
【0062】
次に、取得部241は、エンドエフェクタの関節の姿勢を表す姿勢ベクトルl(→)を取得する(ステップS102)。
【0063】
姿勢ベクトルl(→)は、エンドエフェクタに設けられた複数の関節の其々の回転行列と平行移動ベクトルからなる4×4次元のポーズ変換行列li(i=1,...,P)として表される。以下、回転行列と平行移動ベクトルをまとめて「変換行列」と説明する場合がある。Pは関節数である。つまり、姿勢ベクトルl(→)は、P×4×4次元である。例えば、関節数Pが17である場合、姿勢ベクトルl(→)は272次元となる。位置ベクトルx(→)が3次元であり、方向ベクトルd(→)が2次元であることを考慮すると、これらベクトルに比べて姿勢ベクトルl(→)は非常に高次元なベクトルである。
【0064】
例えば、取得部241は、通信インターフェース210を介して、ロボット10又は制御装置100から、状態センサ13の検出値が含まれる状態データを取得する。そして、取得部241は、状態データに含まれる複数の検出値の中から、エンドエフェクタに設けられた複数の関節の其々の変換行列(回転行列及び平行移動ベクトル)を抽出し、これらを組み合わせて姿勢ベクトルl(→)を生成する。姿勢ベクトルl(→)は「姿勢データ」の一例である。
【0065】
次に、データ変換部242は、姿勢ベクトルl(→)を低次元表現に変換(圧縮)する(ステップS104)。言い換えれば、データ変換部242は、姿勢ベクトルl(→)を次元圧縮する。
【0066】
エンドエフェクタの関節からなる可動域の空間は、より低次元の空間で表現することができる。例えば、取得部241は、、関節数Pで各関節の変換行列を横に並べた姿勢ベクトルl(→)をNサンプル分取得する。データ変換部242は、それらNサンプルの姿勢ベクトルl(→)を(x,y,z,yaw,pitch,roll)の6次元ベクトルに変換し、その6次元ベクトルに変換したNサンプルの姿勢ベクトルl(→)の集合D∈{li}N
i=1に対して主成分分析を行う。データ変換部242は、主成分分析により得られた共分散行列の固有値と固有ベクトルを用いて、P×4×4次元の姿勢ベクトルl(→)を、d次元の低次元表現e(→)に変換(圧縮)する。
【0067】
P×4×4次元の姿勢ベクトルl(→)は、関節数Pの増加に比例して次元数が増加する。一方、低次元表現e(→)は、関節数Pに依存せず固定長のベクトル表現(次元数が一定のベクトル)である。以下、低次元表現e(→)のことを「固有把持表現(Eigengrasp representation)」と称して説明する。固有把持表現e(→)は「低次元姿勢データ」の一例である。
【0068】
なお、データ変換部242は、主成分分析の代わりに、重回帰分析や独立成分分析、因子分析といったその他の多変量解析を行ってもよい。また、データ変換部242は、多変量解析を行うことで姿勢ベクトルl(→)を固有把持表現e(→)に変換する代わりに、上記のオートエンコーダとは異なるその他のオートエンコーダを用いて姿勢ベクトルl(→)を固有把持表現e(→)に変換してもよい。その他のオートエンコーダは、入力データの次元を圧縮するように予め学習されたモデルであり、例えば、畳み込み層を含むニューラルネットワークによって実装される。
【0069】
次に、データ変換部242は、位置ベクトルx(→)、方向ベクトルd(→)、及び固有把持表現e(→)の其々を高次元化させる(ステップS106)。言い換えれば、データ変換部242は、位置ベクトルx(→)、方向ベクトルd(→)、及び固有把持表現e(→)の其々を高次元空間に埋め込む。
【0070】
上述したように一般的なNeRFは、3次元の位置ベクトルx(→)と2次元の方向ベクトルd(→)が入力されると、色ベクトルc(→)と密度σを出力する。しかしながら、入力データの次元は5次元のみである。多層パーセプトロン(MLPs)は任意の連続関数を理論上近似できるが、低次元の入力は色と形状の高周波成分を表現できないことが知られている。これは周波数バイアスやスペクトラルバイアスと呼ばれる。この現象はNeural Tangent Kernelの深層学習の理論分野で研究されている現象であり、ニューラルネットワークは低周波な信号から高周波な信号へ学習されるというものである。言い換えると、簡単な関数から複雑な関数へフィッティングされる。結果として、多層パーセプトロン(MLPs)の出力が低周波成分へ収束し、自然画像が持つ高周波成分を捉えるのに失敗し、不鮮明な画像生成につながることが知られている。
【0071】
従って、データ変換部242は、低次元な入力データ(位置ベクトルx(→)、方向ベクトルd(→)、及び固有把持表現e(→))を高次元空間に埋め込む。例えば、データ変換部242は、Positional Encodingと呼ばれる手法によって、低次元な入力データを低次元の入力を高次元空間に埋め込んでよい。Positional Encodingは、数式(1)によって表される。
【0072】
【0073】
ρは入力データ、つまり位置ベクトルx(→)、方向ベクトルd(→)、及び固有把持表現e(→)のいずれかを表しており、Lは、入力データρの埋め込み対象となる高次元空間の次元数を表している。Lはハイパーパラメータである。
【0074】
例えば、データ変換部242は、数式(1)に表すPositional Encodingによって、位置ベクトルx(→)をより高次元のベクトルγ(x(→))に変換し、方向ベクトルd(→)をより高次元のベクトルγ(d(→))に変換し、固有把持表現e(→)をより高次元のベクトルγ(e(→))に変換する。
【0075】
次に、学習部243は、データ変換部242によって高次元化された位置ベクトルγ(x(→))、方向ベクトルγ(d(→))、及び姿勢ベクトルγ(e(→))と、原画像データとを、未学習のオートエンコーダに入力する(ステップS108)。
【0076】
未学習とは、例えば、一度も学習されていない状態であってもよいし、何度か学習されたものの、その学習が不十分である状態であってもよい。
【0077】
図7は、オートエンコーダの構成を模式的に表す図である。図示のように、学習部243は、オートエンコーダの前段に設けられたエンコーダ(例えばCNN)に対して、データ変換部242によって高次元化されたベクトルγ(x(→))、γ(d(→))、γ(e(→))と、原画像データとを入力する。これを受けてエンコーダは、それら高次元化されたベクトルと原画像データが入力されたことに応じて潜在変数z(→)を出力する。潜在変数z(→)は、潜在表現や潜在ベクトルとも呼ばれる。
【0078】
オートエンコーダの後段に設けられたデコーダには、γ(x(→))、γ(d(→))、γ(e(→))、及び原画像データからエンコードされた潜在変数z(→)が入力される。これを受けてデコーダは、潜在変数z(→)が入力されたことに応じて色ベクトルc(→)と密度σを出力する。
【0079】
画像生成部244は、デコーダによって出力された色ベクトルc(→)及び密度σに基づいて、原画像データを再構成した画像データ(以下「再構成画像データ」という)を生成する(ステップS110)。
【0080】
例えば、画像生成部244は、デコーダによって出力された色ベクトルc(→)と密度σを視線方向(方向ベクトルd(→))上においてボリュームレンダリングすることで、位置ベクトルx(→)が示す三次元位置(つまり原画像データに写るシーンが観測された視点)から観測したときに得られるであろうシーンの画像データを再構成画像データとして生成する。
【0081】
例えば、画像生成部244は、ボリュームレンダリングとして、人間が知覚する視覚が網膜に入射する光の輝度から決定されるように、視線方向(方向ベクトルd(→))上の色を密度に応じて積算することで、再構成画像中の画素値を決定する。
【0082】
このとき、視線方向に沿って、光源から視点へ逆向きに進む光を、光線rと呼ぶ。画像生成部244は、3次元空間上を進む光線r上の各サンプル点において、デコーダ(NeRF)によって決定された各サンプル点の色ベクトルc(→)と密度σから、画像空間上の画素値をボリュームレンダリングによって決定する。この一連のレンダリング手順を定式化する。光線rに沿った画像空間上の色C(r)を決定するために、ボリュームレンダリングではオブジェクトOBが位置する3次元空間上を通る光線rを画像空間上の一点を決定する方向dに沿って飛ばす。この方向dはカメラ11(又は監視カメラ20)のパラメータから決定される。カメラ11(又は監視カメラ20)の位置を原点o(→)としたとき、光線r上の任意の点r(t)はカメラ原点o(→)から方向d(→)に向かってどれだけ進むかを示すパラメータtを用いて数式(2)のように表すことができる。
【0083】
【0084】
光線上の密度σ(r(→)(t))と色c(r(→)(t),d(→))をtで積分することで、画像面上の色を決定できる。このとき、光線rの評価はカメラ原点o(→)から無限遠に渡って計算することができるが、ボリュームレンダリングでは光線rを評価する下限tnと上限tfを設定する。画像空間上の点の色C(r(→))を決定する積算処理は数式(3)及び(4)で定義される。
【0085】
【0086】
【0087】
ここで、関数TはAccumulated Transmittanceと呼ばれ、光源から観測視点(カメラ)へ向かう光線の輝度が観測視点により近い物質又は物体によって減衰する現象を表現している。数式(4)の通り、積分内の項は密度σが高いと積分値が大きくなり、結果として関数Tの出力値が小さくなる。これによって、その点の光線r(t)の影響が小さくなる。実装上、この積分は離散化して計算される。そのために、カメラの位置である原点o(→)からの距離に応じた区間[tn,tf]で、ハイパーパラメータによって決定されるN個の評価したい光線の3次元位置をサンプリングする。レンダリング時は、光線上のサンプリングされた点でのみ評価され、画素値に影響する。このとき、一定間隔ではなく、数式(5)のように一様分布Uに基づくランダム性が付与され、光線がサンプリングされる。
【0088】
【0089】
このサンプリングされたtiの集合に対して、NeRFは密度σiと色ci(→)を出力する。この密度σiと色ci(→)を離散的に積分することで、画像空間上の色C^(r)を決定する。C^(r)は、数式(6)によって表される。数式(6)におけるTiは数式(7)によって表され、δiは数式(8)によって表される。
【0090】
【0091】
【0092】
【0093】
ここで、δiは隣接するサンプル点の間の距離を示す。画像生成部244は、ボリュームレンダリングによって画像上の画素値C^(r)を求めることを、全ての画素に対して実行することで、再構成画像を生成する。
【0094】
画像生成部244は、写実的な再構成画像をより効果的に生成するために、オブジェクトOBの境界付近などの色が急激に変動する領域やオブジェクトOBが密集する領域において、重点的に光線をサンプリングしてよい(Hierarchical Volume Sampling)。
【0095】
また、画像生成部244は、デコーダによって出力された密度σと、光線r上のサンプリング点tまでの距離zを用いて深度画像を再構成画像データとしてレンダリングしてもよい。深度は数式(9)によって計算できる。
【0096】
【0097】
なお、画像生成部244は、ボリュームレンダリングに代えて、例えば最大値投影法やサーフェスレンダリングといった他の手法で再構成画像を生成してもよい。また、画像生成部244は、デコーダによって出力された密度σからSDF(Signed Distance Field)を構成し、3次元再構成した後に通常の3次元2次元射影を行うことで再構成画像を生成してもよい。
【0098】
フローチャートの説明に戻る。次に、学習部243は、原画像データと再構成画像データとの誤差(損失や差分ともいう)を算出し、その誤差に基づいて、オートエンコーダのパラメータ(重み係数やバイアス成分など)を調整又は決定する(ステップS112)。
【0099】
例えば、学習部243は、誤差が小さくなるように(つまり原画像データと再構成画像データとが一致するように)、オートエンコーダに含まれるエンコーダとデコーダの其々のパラメータである重み係数やバイアス成分などを確率的勾配降下法などを用いて調整する。
【0100】
次に、学習部243は、トレーニングの反復回数(イタレーション回数)が所定回数に達したか否かを判定し、反復回数が所定回数に達していなければ、上述したS100の処理に戻る。S100の処理に戻った場合、前回の処理と異なる視点の原画像データ、位置ベクトルx(→)、方向ベクトルd(→)が取得される。この結果、前回の処理と異なる視点の原画像データ及び再構成画像データを基にオートエンコーダが再学習される。
【0101】
一方、反復回数が所定回数に達した場合、本フローチャートの処理が終了する。
【0102】
[学習装置の処理フロー・データアーギュメンテーション]
以下、学習済みのオートエンコーダを用いて、機械学習モデルのトレーニングデータとして利用可能な再構成画像データを大量に生成する処理(以下、データアーギュメンテーションという)について説明する。
図8は、実施形態に係る処理部240のデータアーギュメンテーションの処理の流れを表すフローチャートである。本フローチャートの処理は、データアーギュメンテーションの際に実行される。
【0103】
まず、画像生成部244は、乱数などを用いて潜在変数z(→)を生成する(ステップS200)。
【0104】
次に、画像生成部244は、学習済みのオートエンコーダの一部であるデコーダ(つまり学習済みデコーダ)に対して、生成された潜在変数z(→)を入力する(ステップS202)。学習済みデコーダは、潜在変数z(→)が入力されたことに応じて色ベクトルc(→)と密度σを出力する。
【0105】
次に、画像生成部244は、学習済みデコーダによって出力された色ベクトルc(→)及び密度σに基づいて、再構成画像データを生成する(ステップS206)。
【0106】
次に、出力制御部245は、画像生成部244によって生成された再構成画像データを出力する(ステップS206)。例えば、出力制御部245は、通信インターフェース210を介して、制御装置100に再構成画像データを送信してもよいし、出力インターフェース230のディスプレイに再構成画像データを表示させてもよい。
【0107】
次に、画像生成部244は、ランタイム(画像生成)の反復回数が所定回数に達したか否かを判定し、反復回数が所定回数に達していなければ、上述したS200の処理を戻す。S200の処理に戻った場合、新たな潜在変数z(→)が生成される。
【0108】
一方、反復回数が所定回数に達した場合、本フローチャートの処理が終了する。
【0109】
図9は、学習済みデコーダを用いたデータアーギュメンテーションを模式的に表す図である。図示のように、反復回数が所定回数に達するまで、潜在変数z(→)が生成され、その潜在変数z(→)を基に再構成画像データが生成されるという一連の処理が繰り返される。
【0110】
以上説明した実施形態によれば、学習装置200は、オブジェクトOBを把持又は操作することが可能であり、かつ複数の関節が設けられたエンドエフェクタの姿勢ベクトルl(→)(「姿勢データ」の一例)を取得する。学習装置200は、互いに異なる複数の視点の其々からエンドエフェクタによってオブジェクトOBが把持又は操作されるシーンを観測する際の視線の方向ベクトルd(→)(「方向データ」の一例)を取得する。学習装置200は、複数の視点の其々の位置ベクトルx(→)(「位置データ」の一例)を取得する。学習装置200は、複数の視点の其々から観測したシーンの画像データである原画像データを取得する。学習装置200は、それら姿勢ベクトルl(→)、方向ベクトルd(→)、位置ベクトルx(→)、及び原画像データを用いて、原画像データを再構成した画像データである再構成画像データを生成するようにオートエンコーダを学習する。このように学習されたオートエンコーダを用いることで、トレーニングデータとして利用可能であり、かつ、現実的にあり得る画像データを疑似的に大量に生成することができる。
【0111】
[実施形態の変形例]
以下、上述した実施形態の変形例について説明する。上述した実施形態において、学習装置200は、姿勢ベクトルl(→)を、低次元表現である固有把持表現e(→)に変換し、位置ベクトルx(→)、方向ベクトルd(→)、及び固有把持表現e(→)の其々を高次元化させ、位置ベクトルx(→)の高次元ベクトルであるγ(x(→))と、方向ベクトルd(→)の高次元ベクトルであるγ(d(→))と、固有把持表現e(→)の高次元ベクトルであるγ(e(→))と、原画像データとを、オートエンコーダに入力するものとして説明したがこれに限られない。
【0112】
実施形態の変形例において、学習装置200は、姿勢ベクトルl(→)を低次元表現である固有把持表現e(→)に変換せずに、姿勢ベクトルl(→)のまま高次元化させてよい。そして、学習装置200は、位置ベクトルx(→)の高次元ベクトルであるγ(x(→))と、方向ベクトルd(→)の高次元ベクトルであるγ(d(→))と、姿勢ベクトルl(→)の高次元ベクトルであるγ(l(→))と、原画像データとを、オートエンコーダに入力してよい。このように、姿勢ベクトルl(→)を次元圧縮せずとも、再構成画像データを生成するようにオートエンコーダを学習することができる。
【0113】
以上、本発明を実施するための形態について実施形態を用いて説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【符号の説明】
【0114】
1…学習システム、10…ロボット、11…カメラ、12…アクチュエータ、13…状態センサ、14…動作制御部、100…制御装置、110…通信インターフェース、120…処理部、130…記憶部、200…学習装置、210…通信インターフェース、220…入力インターフェース、230…出力インターフェース、240…処理部、241…取得部、242…データ変換部、243…学習部、244…画像生成部、245…出力制御部