(57)【要約】【課題】多自由度を有する物体に対する動的な制御情報を推定する。【解決手段】推定装置は、物体の状態に関するデータと、前記物体に与えられる制御情報候補に基づいたデータを出力する、第２ネットワークと、前記第２ネットワークにより出力されたデータから、前記制御情報候補に基づいた制御が与えられた将来の前記物体の状態を示すデータを出力する、第３ネットワークと、前記第３ネットワークの出力に基づいて、前記第３ネットワークを逆伝播させてターゲット状態となるような制御情報を出力させる、逆伝播部と、を備える。【選択図】図２
2020095471.tif 000002
【特許請求の範囲】
【請求項１】
物体の状態に関するデータと、前記物体に与えられる制御情報候補と、に基づいたデータを出力する、第２ネットワークと、
前記第２ネットワークにより出力されたデータから、前記制御情報候補に基づいた制御が与えられた将来の前記物体の状態を示すデータを出力する、第３ネットワークと、
前記第３ネットワークの出力に基づいて、前記第３ネットワークを逆伝播させてターゲット状態となるような制御情報を出力させる、逆伝播部と、
を備える推定装置。
【請求項２】
前記第３ネットワークが出力したデータと、前記ターゲット状態との間の損失を算出する、損失算出部と、
前記損失の勾配を算出する、勾配算出部と、
をさらに備え、
前記逆伝播部は、前記勾配を前記第３ネットワークについて逆伝播して、前記制御情報を出力させる、
請求項１に記載の推定装置。
【請求項３】
前記物体は、複数の自由度を有する、請求項１又は請求項２に記載の推定装置。
【請求項４】
前記物体の状態から前記物体の特徴量を抽出する、第１ネットワークをさらに備え、
前記第２ネットワークは、前記物体の特徴量と、前記制御情報候補と、に基づいたデータを出力する、請求項１乃至請求項３のいずれかに記載の推定装置。
【請求項５】
前記第２ネットワークは、前記物体の情報に関するデータと、前記物体の状態から所定時間内に前記物体に与えられた制御情報と、を混合したデータを出力し、
前記第３ネットワークは、前記所定時間内に前記物体に前記制御情報を与えた場合における前記物体の状態に関するデータを出力する、
請求項１乃至請求項４のいずれかに記載の推定装置。
【請求項６】
前記制御情報候補は、複数であり、前記第３ネットワークは複数の前記制御情報候補それぞれについて前記将来の物体の状態を示すデータを出力する、請求項１乃至請求項５のいずれかに記載の推定装置。
【請求項７】
前記逆伝播部は、前記第３ネットワークに前記複数の制御情報候補を入力した結果と、前記ターゲット状態と、に基づいて選択された前記制御情報候補に対して逆伝播を実行し、前記選択された制御情報候補を更新する、請求項６に記載の推定装置。
【請求項８】
前記物体の状態を示すデータは、前記物体の画像情報及び前記物体の速度情報である、請求項１乃至請求項７のいずれかに記載の推定装置。
【請求項９】
前記第３ネットワークは、前記第２ネットワークに入力された前記制御情報候補を前記物体に与えた場合に推定される、前記物体の画像情報を出力し、
前記損失算出部は、前記物体のターゲット状態を示す画像情報と、前記第３ネットワークが出力した前記物体の画像情報と、に基づいて前記損失を算出する、
請求項２に記載の推定装置。
【請求項１０】
前記制御情報は、前記物体の所定点に与えられるトルクの情報である、請求項１乃至請求項９のいずれかに記載の推定装置。
【請求項１１】
前記第２ネットワークは、前記物体の状態に関するデータと、定数又は乱数に基づいた情報と、とに基づいて出力する、請求項１乃至請求項１０のいずれかに記載の推定装置。
【請求項１２】
リアルタイムに前記物体に与える時系列の制御情報を出力する、請求項１乃至請求項１１のいずれかに記載の推定装置。
【請求項１３】
前記第２ネットワークは、単位時間前に出力された前記物体に与える時系列の制御情報候補に基づいて生成された前記制御情報候補を、前記物体の特徴量と混合して出力する、請求項６に記載の推定装置。
【請求項１４】
物体の状態を示すデータと、前記物体の状態から所定時間内に前記物体に与えられる時系列の制御情報候補と、に基づいたデータを出力する、第２ネットワークと、
前記第２ネットワークが出力したデータから、前記所定時間後における前記物体の状態を示すデータを出力する、第３ネットワークと、
前記物体のターゲット状態を示すデータと、前記第３ネットワークが出力したデータとの間の損失を算出する、損失算出部と、
前記損失の勾配を算出する、勾配算出部と、
前記損失及び前記勾配に基づいて、前記第３ネットワーク及び前記第２ネットワークについて逆伝播して、前記第３ネットワーク及び前記第２ネットワークを更新する、ネットワーク更新部と、
を備える物体を制御する情報を出力するモデルを訓練する、訓練装置。
【請求項１５】
物体の状態に関するデータと、前記物体に与えられる制御情報候補と、に基づいたデータを出力し、
出力されたデータから、前記制御情報候補に基づいた制御が与えられた将来の前記物体の状態を示すデータを出力し、
前記物体の状態を示すデータに基づいて、逆伝播させてターゲット状態となるような制御情報を出力させる、
推定方法。
【請求項１６】
第２ネットワークが、物体の状態を示すデータと、前記物体の状態から所定時間内に前記物体に与えられる時系列の制御情報と、に基づいたデータを出力し、
第３ネットワークが、前記第２ネットワークが出力したデータから、前記所定時間後における前記物体の状態を示すデータを出力し、
損失算出部が、前記物体のターゲット状態を示すデータと、前記第３ネットワークが出力したデータとの間の損失を算出し、
勾配算出部が、前記損失の勾配を算出し、
ネットワーク更新部が、前記損失及び前記勾配に基づいて、前記第３ネットワーク及び前記第２ネットワークについて逆伝播して、前記第３ネットワーク及び前記第２ネットワークを更新する、
物体を制御する情報を出力するモデルを訓練する、訓練方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、推定装置、訓練装置、推定方法及び訓練方法に関する。
【背景技術】
【０００２】
従来、物体操作について盛んに研究が行われている。その中でも柔軟物体操作は、ロボットマニピュレーションの難しい問題の１つである。これまでの研究では、物体状態、幾何関係を推定し、現状の幾何関係から所望の幾何関係となるように次の動作を決定していく。これらの動作に機械学習を用いてモデリングを構築する手法も多く研究されている。しかしながら、特に柔軟物の操作に関して、従来手法でモデルを訓練及び推定するのが困難であった。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】"Survey on model-based manipulation planning of deformable objects," P. Jimenez, Robotics and computer-integrated manufacturing, vol. 28, no. 2, p.154-p.163, 2012
【発明の概要】
【発明が解決しようとする課題】
【０００４】
そこで、物体、特に多自由度を有する物体に対する制御情報を推定する推定装置、当該推定装置を訓練する訓練装置、推定方法及び訓練方法を提供する。
【課題を解決するための手段】
【０００５】
一実施形態によれば、推定装置は、物体の状態に関するデータと、前記物体に与えられる制御情報候補に基づいたデータを出力する、第２ネットワークと、前記第２ネットワークにより出力されたデータから、前記制御情報候補に基づいた制御が与えられた将来の前記物体の状態を示すデータを出力する、第３ネットワークと、前記第３ネットワークの出力に基づいて、前記第３ネットワークを逆伝播させてターゲット状態となるような制御情報を出力させる、逆伝播部と、を備える。
【図面の簡単な説明】
【０００６】
【図１】一実施形態に係る装置の状態を示す図。
【図２】一実施形態に係る推定装置の機能を示すブロック図。
【図３】一実施形態に係る推定装置の実装例を示す図。
【図４】一実施形態に係る推定装置の処理の流れを示すフローチャート。
【図５】一実施形態に係る訓練装置の機能を示すブロック図。
【図６】一実施形態に係る訓練装置の処理の流れを示すフローチャート。
【図７】一実施形態に係る推定装置の実験結果を示す図。
【図８】一実施形態に係る推定装置の実験結果を示す図。
【図９】一実施形態に係るハードウェア実装例を示す図。
【発明を実施するための形態】
【０００７】
以下、図面を参照して本実施形態について詳しく説明する。
【０００８】
図１は、一実施形態に係る全体像を概念的に示す図である。本実地形態に係る推定装置は、物体、特に、多自由度の物体（柔軟性を有する物体）を所望の形状にするには、物体の任意の所定の位置においてどのようなトルクを与えればよいかを予測する。図１の例では、一端がトルクを与える制御装置に固定されている柔軟物体にどのようなトルクを与えるとターゲットに近い状態になるかを示す図である。過去のある時点での状態において、当該過去の物体の状態及びターゲットの状態と、トルクの情報を推定装置に入力することにより、現在の状態でターゲットに近い物体の形状となる。
【０００９】
なお、トルクを与える物体として本実施形態では多自由度の物体としているが、これは、複数の関節を有する物体と言うことである。この関節の数は、１以上の数であればよい。なお、紐や布等の柔軟物は多関節の物体（すなわち多自由度の物体）とみなすことができる。また、関節を有しない物体（剛体）に対しても同様に与えるトルクの推定をすることができる。すなわち、１又は複数の関節を有する物体に対して本実施形態に係る推定装置によるトルクの推定を行うことが可能である。
【００１０】
図２は、ターゲットとなる形状となるために物体に与えるトルクを推定する推定装置１の機能を示すブロック図である。推定装置１は、入力部１００と、第１ネットワーク１０２と、第２ネットワーク１０４と、時系列データ生成部１０６と、第３ネットワーク１０８と、損失算出部１１０と、逆伝播部１１２と、出力部１１４と、を備える。
【００１１】
入力部１００は、現在の物体の状態を示すデータの入力を受け付ける。物体は、１又は複数の自由度（関節）を有する物体であり、これらの各関節で接続された物体の状態を示すデータが入力される。例えば、入力部１００は、物体の状態を示すデータとして、物体を撮影した画像データが入力される。さらに、画像データに併せて、物体の速度情報を示すオプティカルフローのデータが入力されてもよい。以下の説明においては、物体の状態を示すデータとして、物体の画像及びオプティカルフローが入力される。また、多自由度の物体の場合、各関節の接続状態、より詳しくは、各関節により関節間の枝がどのように接続されるかを示す値が入力されてもよい。各関節の接続状態は、例えば、ジョイントステート（Joint state）である。
【００１２】
第１ネットワーク１０２は、多自由度の物体の状態を示すデータが入力されると、入力されたデータの特徴を示すデータを出力するネットワークであり、機械学習による訓練によって最適化されるネットワークである。第１ネットワーク１０２は、例えば、入力層の次元よりも出力層の次元の方が小さく形成され、入力されたデータの集約された特徴量を抽出するのに適したネットワークであり、ＣＮＮ（Convolutional neural network）の畳み込み層を備えて形成される。この場合、第１ネットワーク１０２は、所謂エンコーダである。第１ネットワーク１０２に備えられるネットワークは、ＣＮＮによるものには限られず、ＭＬＰ（Multilayer perceptron）等の他のネットワークにより形成されていてもよい。
【００１３】
第２ネットワーク１０４は、第１ネットワーク１０２が出力した特徴量と、物体を制御する所定時間内における時系列の情報とが入力されると、これらのデータを混合したデータを出力するネットワークであり、機械学習による訓練によって最適化されるネットワークである。例えば、エンコーダとデコーダとの間にある中間層により形成される。第２ネットワーク１０４は、例えば、物体を制御する時系列の情報として各関節に与えられるトルク及び各関節間の接続状況を示すジョイントステートとが入力され、第１ネットワーク１０２の出力とこれらのデータとを混合されたデータを出力する。
【００１４】
時系列データ生成部１０６は、第２ネットワーク１０４に入力される物体を制御する時系列のデータである、制御情報候補を生成する。例えば、初期状態においては、時系列データは、乱数又は所定値により初期化される。既に推定装置１において推定が開始されている場合には、１単位時間前に推定された値に基づいて時系列データを生成する。生成されたデータは、第２ネットワーク１０４へと入力され、第１ネットワーク１０２が出力したデータと混合されて第３ネットワーク１０８へと入力される。
【００１５】
第３ネットワーク１０８は、第２ネットワーク１０４が出力したデータが入力されると、推定された所定時間後の物体の状態を示すデータを出力する。すなわち、第３ネットワーク１０８は、制御情報候補に基づいた制御を行った場合に、将来の物体の状態がどのようになるかを推定する。本実施形態においては、この制御情報候補をもとに実際に物体を制御するための制御情報が選択される。ここでいう物体の状態を示すデータは、例えば、物体がどのような位置、形状となっているかを示す画像である。以下の説明において、この制御情報候補を、単に制御情報、又は、時系列データ、等と記載することがある。
【００１６】
損失算出部１１０は、第３ネットワーク１０８が出力した物体の状態を示すデータと、ターゲットのデータとに基づいて、損失を算出する。この損失は、例えば、一般的な機械学習で行われている手法により求められてもよい。
【００１７】
逆伝播部１１２は、損失算出部１１０が算出した損失を第３ネットワーク１０８に逆伝播させ、どのようなデータが第３ネットワーク１０８に入力されると、損失が小さくなるか、すなわち、どのような入力をすれば、よりターゲットに近い状態になるかを算出する。逆伝播部１１２は、算出された損失の時系列データによる勾配を求め、当該勾配に基づいて時系列データを更新する。出力されたデータは、例えば、トルクの発生器に入力される。
【００１８】
このように、エンコーダに対応する第１ネットワーク１０２と、中間層に対応する第２ネットワーク１０４と、デコーダに対応する第３ネットワーク１０８と、を備えるネットワークにより、本実施形態に係るネットワークは形成される。
【００１９】
ここで、データの流れについて整理する。図２において、点線で示した経路は、推定装置１における第２ネットワーク１０４以降のデータの流れを示す。以下、単位時間を１フレームとし、時系列を生成する所定の時間をＴフレームの間とし、ｔは、現時点での時刻を示すものとする。また、自由度の数、すなわち、関節（アクチュエータ）の数をＭとする。一例として、物体は、３次元空間中、平面（２次元）内で動くものとする。３次元空間を動く物体の場合には、例えば、以下に述べる画像、ジョイントステート等の入力の次元を適切に増減してもよい。また、ネットワークの状態についても一例として記載しているものであり、本発明の技術的範囲を限定するものではない。
【００２０】
入力部１００には、時刻ｔにおける物体の画像（２次元）と、オプティカルフロー（２次元）が入力され、これとは別に、時刻ｔ（現時刻におけるフレーム）におけるジョイントステート（Ｍ次元）の情報が入力される。
【００２１】
第１ネットワーク１０２には、画像とオプティカルフローが入力され、特徴量マップを出力する。第２ネットワーク１０４は、この特徴量マップと、ジョイントステート、及び、時系列データ生成部１０６により生成された時刻ｔ〜ｔ＋Ｔ−１の間に物体に与えられるトルクデータとを結合して新たな特徴量として出力する。第２ネットワーク１０４は、この結合前に、あらかじめ第１ネットワーク１０２が出力した特徴量マップの次元を、全結合層を介して削減してもよい。
【００２２】
結合したデータは、第３ネットワーク１０８に入力され、第２ネットワーク１０４に入力された時系列データで示されるトルクを物体に与えた場合に、時刻ｔ＋Ｔにおいて物体がどのような状態になっているかを示す推定画像を出力する。損失算出部１１０は、ターゲットとなる物体の形状を表す画像と、第３ネットワーク１０８が出力した画像とを比較することにより損失を算出する。逆伝播部１１２は、損失の時系列データに対する勾配を算出して時系列データを更新する。これらの処理は、Ｎ個のバッチにより並列に処理される。トルクの時系列データがバッチごとに異なるので、それぞれ異なるトルクの時系列データとして更新される。
【００２３】
第２ネットワーク１０４は、更新された時系列データが入力され、混合データを出力し、第３ネットワーク１０８は、混合データが入力され、損失算出部１１０により損失が算出される。ここで、バッチごとの損失を比較し、一番損失の低いバッチにおけるトルクの時系列データを出力部１１４から出力する。求められた時系列データは、時系列データ生成部１０６へと入力され、時刻ｔ＋１における時系列データが生成される。
【００２４】
すなわち、各バッチにおいて求められた時系列データのうち、損失が一番低い時系列データが時系列データ生成部１０６へと入力される。これにより、時刻ｔの単位時間後の時刻ｔ＋１においては、各バッチには時刻ｔにおいて損失の低かった時系列データに基づいて生成された時系列データが入力される。このように、単位時間ごとにバッチごとに算出された時系列データ（時刻ｔにおける損失の低い時系列データ）を用いて、第２ネットワーク１０４に入力する時系列データ（時刻ｔ＋１における時系列データ）が生成される。
【００２５】
時刻ｔ＋１においては、時刻ｔで推定されたトルクにより制御された物体の画像、オプティカルフロー、そして、時刻ｔで推定されたトルクの時系列データにより時系列データ生成部１０６が生成した時系列データに基づいて、同様の処理を行う。
【００２６】
図３は、推定装置１の設置された状態の一例を示す図である。推定装置１は、例えば、カメラ等の情報取得装置３と接続される。情報取得装置３は、物体Ｏｂｊの可動空間内での状態を取得する。情報取得装置３は、例えば、ＲＧＢカメラ、ＲＧＢＤカメラであるがこれら光学的なセンサには限られず、超音波センサ等、物体Ｏｂｊの特性に基づき適切に状態が取得可能なセンサ、キャプチャであればよい。
【００２７】
物体制御装置４０は、推定装置１により制御された信号が伝えられ、当該信号に基づいて物体に力（トルクを含む）を加える装置である。物体制御装置４０は、例えば、モータであり、推定装置１が推定した時系列のトルクを与えるように回転軸を回転させる。図中の矢印は、物体制御装置４０の回転軸を示す。トルク付加部４２は、物体制御装置４０に接続され、物体Ｏｂｊにトルクを付加する。例えば、図に示すように、物体Ｏｂｊの一端についてトルクを付加して物体を制御する。なお、物体Ｏｂｊの一端に接続される場合には限られず、例えば、物体Ｏｂｊの中央付近にトルクを与えるものであってもよいし、物体の一点ではなく、さらに多くの点、面についてトルク又は力を加えるものであってもよい。また、トルク付加部４２は、必ずしも必須ではなく、物体制御装置４０が直接的にトルクを与えるものであってもよい。
【００２８】
推定装置１は、情報取得装置３からフレームごとに物体Ｏｂｊの位置情報等を示す画像を取得し、フレームごとに物体制御装置４０から物体Ｏｂｊに与えられるトルクについての信号をリアルタイムに推定する。推定されたトルクに関する信号に基づいて物体制御装置４０は、物体Ｏｂｊを制御するためのトルクを与えるようにトルク付加部４２を制御する。このように、ターゲットの状態、形状となるように、推定装置１は、現在の状態に基づいて制御信号を出力する。
【００２９】
ここで、リアルタイム（実時間）とは、情報科学、情報工学等における一般的な意味で使用されている。例えば、１フレームごとにデータの入出力処理が実行される場合には、当該フレームに掛かる所定の時間（１／３０秒、１／６０秒と言った時間）のことを示す。さらには、１／３０秒といった時間に対応するためのマージンを持たせた３０ミリ秒といった時間を示す。これらの数値は一例として示したものであり、コンピュータ及びその周辺機器の少なくとも１つに対応する時間として示されるものであればよい。また、この所定の時間よりも遅くてもよく、この場合、次の制御に間に合う時間、又は、次の制御において予測された制動と大きく異ならないような遅れを持つ時間を意味してもよい。例えば、現フレームにおける処理が、現フレーム、又は、１〜３フレーム後等に制御を実行できる状態を意味してもよい。
【００３０】
物体の姿勢をθとすると、物体の運動方程式は、Ｍ（θ）ｄ２θ／ｄｔ２＋ｃ（θ，ｄθ／ｄｔ）＋ｇ（θ）＝τとして表すことができる。ここで、ｄθ／ｄｔは、物体の速度、ｄ２θ／ｄｔ２は、物体の加速度、τは、関節トルク、Ｍは、慣性行列、ｃは、遠心力、コリオリ力、粘性摩擦等、Ｇは、重力負荷トルクを表す。本実施形態では、ネットワークは、この運動方程式の解を近似的に求めるものである。
【００３１】
図４は、推定装置１の推定の処理の流れを示すフローチャートである。この図４を用いて、上述した処理をステップごとに詳しく説明する。このフローチャートは、特に、１フレーム内における処理を示したものであり、上述したように、次のフレームでは現フレームにおいて推定された時系列データに基づいて時系列データが生成される。
【００３２】
以下の処理は、特に記載しない限り、Ｎ個のバッチ内で各々実行される。バッチには、それぞれ、例えば、０，１，・・・，ｎ，・・・，Ｎといった整数値によるＩＤが与えられる。また、物体に与えることのできるトルクの最小値をτｍｉｎとし、最大値をτｍａｘとする。例えば、モータが右回りのトルクと左回りのトルクを同じ大きさ程度に与えられる場合には、トルクを与えていない状態を０として、τｍｉｎ＝−τｍａｘとして表される。説明中における、「以下」「以上」等の表現は、適宜「より小さい」「より大きい」と言い換えることが可能であり、逆も同様である。
【００３３】
まず、推定装置１に入力部１００を介して状態データが入力される（Ｓ１００）。状態データは、例えば、多関節を有する多自由度の物体の現在の状態をカメラ等で撮影した画像と、当該画像と１フレーム前の画像から算出されたオプティカルフローのデータである。物体の運動が２次元である場合には、通常のカメラで撮像されたデータが入力される。また、各関節の接続状態を示すジョイントステートもまた入力される。
【００３４】
これには限られず、例えば、３次元空間内を自由に動くことが可能である物体の場合には、ＲＧＢＤカメラを用いて、デプスマップを取得し、当該デプスマップをも入力してもよい。また、入力画像は、ＲＧＢで示された３チャネル、ＲＧＢＤで示された４チャネル等の画像であってもよいし、ＲＧＢデータからグレースケール化した１チャネル、ＲＧＢＤデータからデプスマップの影響をも加味した１チャネル又は２チャネルの画像であってもよい。さらに、これらの画像を２値化した画像であってもよい。また、これらの画像は、適切にクロップ処理、リサイズ処理が事前に施されていてもよいし、入力部１００において、適切にこれらの処理を行うものであってもよい。以下において、入力画像は２値化されたものとして説明するが、これは本発明を限定するものではない。
【００３５】
次に、時系列データ生成部１０６は、トルクの時系列情報τｔｓ＝｛τｔｓｔ，τｔｓｔ＋１，・・・，τｔｓｔ＋Ｔ−１｝を生成する（Ｓ１０２）。初期状態においては、例えば、Ｒｉを［τｍｉｎ，τｍａｘ］の乱数値として、τｔｓ＝｛Ｒ０，・・・，ＲＴ−１｝＝Ｒａｎｄｏｍ（Ｎ）とする。別の例としては、ｃｎ＝［（Ｎ−１−ｎ）τｍｉｎ＋ｎ・τｍａｘ］／（Ｎ−１）なる所定値により、τｔｓ＝｛ｃｎ，・・・，ｃｎ｝＝Ｃｏｎｓｔａｎｔ（Ｎ）となるような、一定値からなる時系列を生成する。
【００３６】
すでに前のフレームにおいてトルクの時系列情報が得られている場合には、例えば、現在の時刻をｔ、得られている時系列情報がｔ’における情報である場合には、得られている時系列情報｛τｔ’，τｔ’＋１，・・・，τｔ’＋Ｔ−１｝をシフトして、τｔｓ＝｛τｔ’＋１，τｔ’＋２，・・・，τｔ’＋Ｔ−１，τｔ’＋Ｔ−１｝として時系列情報を生成する。さらに、より柔軟性を持たせるためにこのシフトした値に、乱数値を加えてもよい。例えば、αを定数として、上記のシフトした値に［（τｍｉｎ＋τｍａｘ）／２＋α・τｍｉｎ］のランダムノイズｒｉを付加した時系列をトルクの時系列、すなわち、τｔｓ＝｛τｔ’＋１＋ｒ０，τｔ’＋２＋ｒ１，・・・，τｔ’＋Ｔ−１＋ｒｔ−２，τｔ’＋Ｔ−１＋ｒｔ−１｝＝Ｓｈｉｆｔ（Ｎ，α）としてもよい。例えば、α＝０．２５であるがこれには限られない。
【００３７】
別の例として、上記で得られたＣｏｎｓｔａｎｔとＳｈｉｆｔを混合したものであってもよい。すなわち、Ｎｃｏｎｓｔａｎｔを所定値として、τｔｓ＝Ｃｏｎｓｔａｎｔ（Ｎｃｏｎｓｔａｎｔ）＋Ｓｈｉｆｔ（Ｎ−Ｎｃｏｎｓｔａｎｔ，α）＝Ｍｉｘｅｄ（Ｎ，Ｎｃｏｎｓｔａｎｔ，α）としてもよい。この場合、τｔｓの各成分について、［τｍｉｎ，τｍａｘ］の範囲に無い場合にはクリッピング処理を行ってもよい。
【００３８】
次に、Ｓ１００で入力された画像とオプティカルフローを第１ネットワーク１０２に入力して、現時刻ｔにおける物体の状態を示す特徴量マップを取得する（Ｓ１０４）。なお、Ｓ１０２のステップは、Ｓ１００の前であってもよいし、このＳ１０４の後であってもよい。Ｓ１０６の前に実行され、適切に第２ネットワーク１０４へと時系列データが入力できるものであれば、生成のタイミングは特に問わない。
【００３９】
次に、Ｓ１０４で出力された特徴量マップと、Ｓ１００で入力されたジョイントステートと、Ｓ１０２で生成された時系列データを第２ネットワーク１０４に入力して、時系列データと特徴量マップとを混合したデータを取得する（Ｓ１０６）。一例として、第２ネットワーク１０４には、まず、第１ネットワーク１０２が出力した特徴量マップが入力され、この特徴量マップを全結合により変換する。この全結合されたデータと、時系列データと、ジョイントステートと、の入力を受け付ける層が第２ネットワーク１０４に設けられ、この層に、これらのデータを入力することにより、出力層から混合されたデータが出力される。
【００４０】
次に、Ｓ１０６で出力された混合データを第３ネットワーク１０８に入力して、Ｔフレーム後（時刻ｔ＋Ｔ）における予測された物体の状態を示す画像を出力する（Ｓ１０８）。この一連の流れのように、第１ネットワーク１０２は、入力データを特徴量マップに変換するエンコーダ、第２ネットワーク１０４は、特徴量マップに処理を加える中間層、第３ネットワーク１０８は、中間層において処理されたデータを復号するデコーダとして機能してもよい。
【００４１】
次に、取得された予測画像と、ターゲット画像とが損失算出部１１０に入力され、予測画像の損失が算出される（Ｓ１１０）。一例として、損失Ｌｏｓｓは、望ましい物体の状態を示すターゲット画像をＳｔ、予測された物体の状態を示す予測画像をＳｐ、βを所定値として、以下のように示される。Ｓ’ｔ＝１．０−ｔａｎｈ（β×ＤＴ（１−Ｓｔ））、Ｌｏｓｓ＝ＭＳＥ（Ｓｐ−Ｓ’ｔ）。ここで、ｔａｎｈは、ハイパボリックタンジェント、ＭＳＥは、平均二乗誤差、ＤＴは、距離変換である。例えば、β＝０．５であるがこれには限られない。
【００４２】
ｔａｎｈは、シグモイド関数、ＲｅＬＵ等の他の活性化関数として用いられる関数で変換することも可能である。この場合、上記式中で具体的に示されている数値は、用いる関数に基づいて変更してもよい。
【００４３】
距離変換画像は、各画素値に対して直近の物体以外である画素までの距離を表す画像であり、例えば、１ピクセル（隣接する画素間のピッチ）の距離を単位距離として与えられる。すなわち、物体が存在していない画素の値として０が、物体が存在する画素の値として、当該画素から一番近い０の値を有する画素までの距離を示す画像である。
【００４４】
βは、小さい程ターゲット画像により類似していないと許容せず、大きいほどターゲット画像に類似していない場合も許容するように機能する。例えば、βが０であれば、ターゲット画像そのものと、推定画像との画素ごとの平均２乗誤差を取ることとなる。このように、βを設定することにより、画像をぼかし、位置ズレに対する感度を抑制し、推定の結果が鋭くなりすぎないようにする。
【００４５】
次に、逆伝播部１１２は、損失算出部１１０が算出した損失Ｌｏｓｓのτｔｓに対する勾配を算出し、第３ネットワーク１０８を逆伝播させる（Ｓ１１２）。勾配は、ｇ＝ｄＬｏｓｓ／ｄτｔｓとして求めることが可能である。
【００４６】
次に、逆伝播部１１２は、求めた勾配ｇに基づいて、時系列データを推定する（Ｓ１１４）。推定された時系列データτｔｓｏｐｔは、τｔｓｏｐｔ＝τｔｓ−γｇ／｜ｇ｜として算出することができる。γは、最適化の係数を示す所定の値である。例えば、γ＝０．１２５（τｍａｘ−τｍｉｎ）であるが、これには限られない。
【００４７】
次に、逆伝播部１１２が逆伝播により推定した時系列データτｔｓｏｐｔを再度第２ネットワーク及び第３ネットワークに入力し、推定データについての損失を算出する（Ｓ１１６）。損失の算出方法は、Ｓ１１０と同様の式を用いる。
【００４８】
次に、出力部１１４は、求められた推定された時系列データτｔｓｏｐｔについての損失が、生成された時系列データτｔｓについての損失よりも小さい場合には、τｔｓｏｐｔを推定結果として出力し、そうでは無い場合には、τｔｓを推定結果として出力する（Ｓ１１８）。
【００４９】
ここで複数のバッチを使用している場合には、Ｓ１１２以降の処理は、Ｓ１１０で求められた損失が一番小さいバッチにおいて生成された時系列データだけに適用してもよい。すなわち、各バッチにおいてＳ１１０の処理の後、損失が一番小さくなるバッチの結果を抽出し、当該バッチの生成したτｔｓに基づいてＳ１１２からＳ１１８の処理を行ってもよい。
【００５０】
別の例として、各バッチにおいて、Ｓ１１６までの処理をした後に、各バッチにおける生成した時系列データ及び推定した時系列データのうち、最も損失が小さくなる結果を抽出して、出力部１１４が出力するようにしてもよい。
【００５１】
出力部１１４が出力したトルクの情報を、物体制御装置４０へと送信することにより、物体Ｏｂｊの制御が行われる。
【００５２】
以上のように、本実施形態によれば、物体、特に多自由度、すなわち、多関節を有する物体について、ターゲット状態になるように動的な制御を行うことが可能となる。このように、時系列データを取得するための逆伝播を第１ネットワーク１０２については行わず、第３ネットワーク１０８について行うことにより、より高いフレームレートにおいても実時間で推定を行うことできる。また、本実施形態によれば、動的に動作させなければ実現できないタスクである、動的動作のモデリングすることが可能となる。動的に動作を生成することは、動的動作が静的動作に対して圧倒的にモデリングすること、かつ、機械学習によるモデリングを実機の実時間ベース制御に適用することが困難であるため、余り行われていなかった。本実施形態によれば、このような連続的、動的に動作させなければ実現できないタスクについても訓練を適用することが可能となる。
【００５３】
なお、物体がターゲット状態になるとは、理想的には物体がターゲット画像で示される状態、より詳細には物体を撮影した画像とターゲット画像とが同じ状態となることをいうが、許容できる程度に物体又は物体を撮影した画像がターゲット画像と類似した状態となることも含む。
【００５４】
次に、本実施形態に係る推定装置１を訓練するための訓練装置２について説明する。
【００５５】
図５は、訓練装置２の機能を示すブロック図である。訓練装置２は、例えば、推定装置１に備えられている第１ネットワーク１０２と、第２ネットワーク１０４と、第３ネットワーク１０８と、のパラメータを訓練する訓練装置であり、さらに、勾配算出部２００と、ネットワーク更新部２０２と、記憶部２０４と、を備える。
【００５６】
勾配算出部２００は、損失算出部１１０が算出した損失の勾配を算出する。なお、損失算出部１１０として、上述した推定装置１と同様のものが記載されているが、これには限られず、ネットワーク訓練用の損失算出部を備えていてもよい。すなわち、訓練装置２と推定装置１の損失算出部は、異なるものであってもよい。
【００５７】
ネットワーク更新部２０２は、勾配算出部２００により求められた勾配に基づいて、逆伝播を行い各ネットワークの更新を行う。例えば、第３ネットワーク１０８の出力層から順に第３ネットワーク１０８の入力層までのネットワークの更新を行い、続いて、好ましくは第２ネットワーク１０４、第１ネットワーク１０２、と逆伝播を行って、ネットワークの更新を行う。このように、推定とは異なり、リアルタイム性の要求が低い訓練の段階については、第３ネットワークにとどまらず、第２ネットワーク又は／及び第１ネットワークに逆伝播が行われ、ネットワークの更新が行われることが好ましい。
【００５８】
逆伝播により更新されたネットワークを用いて、再度順伝播を行い、損失を算出し、算出された損失に基づいて、逆伝播が行われ、ネットワーク更新部２０２がネットワークの更新を行う。この訓練には、一般的な機械学習手法が用いられる。訓練が終了した段階で、各ネットワークのパラメータは、記憶部２０４に記憶される。なお、記憶部２０４は、他のモジュールと同じハードウェア内に備えられていてもよいし、ネットワーク等を介した他のデータベース等であってもよい。
【００５９】
図６は、本実施形態に係る訓練装置２の処理の流れを示すフローチャートである。
【００６０】
まず、入力部１００を介して訓練装置２に訓練データが入力される（Ｓ２００）。訓練データは、例えば、ある時刻で撮影された物体の状態を示す画像と、当該画像が取得されたタイミングにおいて物体制御装置４０から物体に対して与えられたトルクの所定時間内の時系列情報と、関節間の接続情報を示すジョイントステートと、この制御が行われた所定の時刻（フレーム）が経過した後の物体の状態を示す画像である。物体の状態を示す画像は、動画であってもよいし、一連の静止画であってもよい。動画である場合には、入力された後に静止画に変換されてもよい。また、開始時刻におけるオプティカルフローを求めるため、開始時刻の１フレーム前の画像を入力してもよいし、あらかじめ計算されたオプティカルフローが入力されてもよい。
【００６１】
動画である場合には、訓練装置２内で適切に所定時間分のフレームを、この開始フレームから所定時間分の制御情報と併せて抽出してもよい。このように、一連の動きを示す動画と当該動画に対応する制御の時系列情報とを紐付けておけば、動画内の任意の時刻からの情報を取得することが可能である。動画と制御の時系列情報とを訓練装置２内で処理する場合には、動画処理部を備えていてもよく、この場合、入力されるデータは、データベース等のメモリから転送されるものであってもよい。この動画処理部は、訓練装置２の外がわにあってもよく、この場合、開始時刻の画像、Ｔフレーム後の画像、そして、開始時刻からＴフレーム分の時系列の制御情報が入力部１００から入力されてもよい。もちろん元となるデータは動画である必要は無く、開始時刻とそのＴフレーム後において撮影された静止画と、開始時刻からの時系列情報であってもよい。
【００６２】
すなわち、訓練データとしては、制御がＴフレーム分行われた場合に、開始時刻とＴフレーム後の時刻においてどのような物体の状態に遷移しているかを示すデータがあれば十分である。このために、上記のように、動画からデータを抽出することもできる。動画からデータを抽出することにより、例えば、所定時刻よりも十分に長い時間において撮影された動画から、任意の箇所を抽出して、多数の訓練データを取得することも可能である。
【００６３】
入力部１００に入力された開始時刻の画像と、開始時刻と１フレーム前の画像とから算出されたオプティカルフローとを第１ネットワーク１０２へと、ジョイントステートと時系列データを第２ネットワーク１０４へと、Ｔフレーム後の状態を示す画像を正解データとして損失算出部１１０へと送信する。
【００６４】
次に、各モジュールへと入力されたデータに基づいて、上述した推定装置１と同様にＳ１０４からＳ１１０の処理が行われる。ただし、Ｓ１０６においては、生成された時系列ではなく、入力部１００から入力された時系列データが入力され、Ｓ１１０においては、比較対象となるデータは、訓練データとして入力された開始時刻からＴフレーム目の画像である。このように、訓練装置２においては、入力された物体の状態に対して入力された時系列データの制御を与えた場合に、どのような画像になるかをネットワークに予測させ、当該予測された物体の状態と、正解の状態とを比較して損失を算出する。
【００６５】
次に、勾配算出部２００は、正解データと、予測データとの損失の勾配を算出し、第3ネットワークから逆順に逆伝播させる（Ｓ２０２）。
【００６６】
逆伝播の実行とともに、ネットワーク更新部２０２が各ネットワークのパラメータを更新する（Ｓ２０４）。この逆伝播及びパラメータの更新は、一般的な訓練手法を用いてもよいし、本実施形態に特化した訓練手法を用いてもよい。
【００６７】
次に、ネットワーク更新部２０２は、更新したネットワークについて訓練が終了したか否かを判断する（Ｓ２０６）。終了の判断についても、一般的な訓練手法に基づいていてもよい。終了条件は、例えば、計算された損失が所定の値より小さくなった、所定のエポック数の訓練が終了した、バリデーションの評価が所定の値より大きくなった、等である。
【００６８】
訓練が終了したと判断された場合（Ｓ２０６：ＹＥＳ）、訓練を終了し、記憶部２０４にネットワークのパラメータを出力して処理を終了する。
【００６９】
訓練が終了していないと判断された場合（Ｓ２０６：ＮＯ）、更新された各ネットワークを用いてＳ１０４からの処理を繰り返す。
【００７０】
以上のように、訓練装置２により入力された物体の状態と物体を制御する時系列データから、実際に制御された後の物体の状態を予測するネットワークを形成することにより、上述した推定装置１のように、現在の物体の状態からどのような時系列の制御を行えばよりターゲットに近い状態になるかを予測することが可能となる。
【００７１】
次に、本実施形態に係る推定装置１を用いた結果を記載する。ターゲット状態と推定されたトルクにより制御された状態との類似度を示す指標として、ＳＣＤ（Symmetric Chamfer Distance）を用いた。ＳＣＤは、Ｓ１、Ｓ２を比較する場合に、ＳＣＤ（Ｓ１，Ｓ２）＝Ｓｕｍ（Ｓ１×ＤＴ（１−Ｓ２）＋Ｓ２×ＤＴ（１−Ｓ１））として表される。
【００７２】
図７及び図８は、図３の系で行った実験結果を示す図である。各図において上段の一番左がターゲット画像である。図中の１で示される状態から、トルクを制御することにより、２の状態を介して、３の状態へと遷移する。３における物体の状態は、ターゲットの状態と近くなっている。
【００７３】
下段の図は、時系列の制御をした場合におけるＳＣＤを示すグラフである。縦軸は、Chamfer Distanceを示し、横軸は、時間を示す。矢印で示されている箇所がターゲットと近い状態になっている時間であり、この時間が長いほどよい推測ができている。図７及び図８から分かるように、本実施形態においては、ターゲットに近い状態が長く続いている。図７のように、ターゲットとして、柔軟な物体が直線的な状態においても、図８のように、湾曲している状態においても、制御ができている。
【００７４】
本実験においては、２次元空間内についての動作について述べているが、３次元空間についても実装することが可能である。これにより、例えば、ロボットが動的に洋服等をたたんだりするような制御を行うことが可能となる。
【００７５】
前述した実施形態における推定装置１及び訓練装置２において、各機能は、アナログ回路、デジタル回路又はアナログ・デジタル混合回路で構成された回路であってもよい。また、各機能の制御を行う制御回路を備えていてもよい。各回路の実装は、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）等によるものであってもよい。
【００７６】
上記の全ての記載において、推定装置１及び訓練装置２の少なくとも一部はハードウェアで構成されていてもよいし、ソフトウェアで構成され、ソフトウェアの情報処理によりＣＰＵ（Central Processing Unit）等が実施をしてもよい。ソフトウェアで構成される場合には、推定装置１、訓練装置２及びその少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記憶媒体に収納し、コンピュータに読み込ませて実行させるものであってもよい。記憶媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記憶媒体であってもよい。すなわち、ソフトウェアによる情報処理がハードウェア資源を用いて具体的に実装されるものであってもよい。さらに、ソフトウェアによる処理は、ＦＰＧＡ等の回路に実装され、ハードウェアが実行するものであってもよい。ジョブの実行は、例えば、ＧＰＵ（Graphics Processing Unit）等のアクセラレータを使用して行ってもよい。
【００７７】
例えば、コンピュータが読み取り可能な記憶媒体に記憶された専用のソフトウェアをコンピュータが読み出すことにより、コンピュータを上記の実施形態の装置とすることができる。記憶媒体の種類は特に限定されるものではない。また、通信ネットワークを介してダウンロードされた専用のソフトウェアをコンピュータがインストールすることにより、コンピュータを上記の実施形態の装置とすることができる。こうして、ソフトウェアによる情報処理が、ハードウェア資源を用いて、具体的に実装される。
【００７８】
図９は、本発明の一実施形態におけるハードウェア構成の一例を示すブロック図である。推定装置１及び訓練装置２は、プロセッサ７１と、主記憶装置７２と、補助記憶装置７３と、ネットワークインタフェース７４と、デバイスインタフェース７５と、を備え、これらがバス７６を介して接続されたコンピュータ装置７として実現できる。
【００７９】
なお、図９のコンピュータ装置７は、各構成要素を一つ備えているが、同じ構成要素を複数備えていてもよい。また、１台のコンピュータ装置７が示されているが、ソフトウェアが複数のコンピュータ装置にインストールされて、当該複数のコンピュータ装置それぞれがソフトウェアの異なる一部の処理を実行してもよい。
【００８０】
プロセッサ７１は、コンピュータの制御装置および演算装置を含む電子回路（処理回路、Processing circuit、Processing circuitry）である。プロセッサ７１は、コンピュータ装置７の内部構成の各装置などから入力されたデータやプログラムに基づいて演算処理を行い、演算結果や制御信号を各装置などに出力する。具体的には、プロセッサ７１は、コンピュータ装置７のＯＳ（Operating System）や、アプリケーションなどを実行することにより、コンピュータ装置７を構成する各構成要素を制御する。プロセッサ７１は、上記の処理を行うことができれば特に限られるものではない。推定装置１、訓練装置２及びそれらの各構成要素は、プロセッサ７１により実現される。ここで、処理回路とは、１チップ上に配置された１又は複数の電気回路を指してもよいし、２つ以上のチップあるいはデバイス上に配置された１又は複数の電気回路を指してもよい。
【００８１】
主記憶装置７２は、プロセッサ７１が実行する命令および各種データなどを記憶する記憶装置であり、主記憶装置７２に記憶された情報がプロセッサ７１により直接読み出される。補助記憶装置７３は、主記憶装置７２以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、メモリでもストレージでもよい。また、メモリには、揮発性メモリと、不揮発性メモリがあるが、いずれでもよい。推定装置１及び訓練装置２内において各種データを保存するためのメモリ、例えば、記憶部２０４は、主記憶装置７２または補助記憶装置７３により実現されてもよい。例えば、前述した各記憶部の少なくとも一部は、この主記憶装置７２又は補助記憶装置７３に実装されていてもよい。別の例として、アクセラレータが備えられている場合には、前述した各記憶部の少なくとも一部は、当該アクセラレータに備えられているメモリ内に実装されていてもよい。
【００８２】
ネットワークインタフェース７４は、無線または有線により、通信ネットワーク８に接続するためのインタフェースである。ネットワークインタフェース７４は、既存の通信規格に適合したものを用いればよい。ネットワークインタフェース７４により、通信ネットワーク８を介して通信接続された外部装置９Ａと情報のやり取りが行われてもよい。
【００８３】
外部装置９Ａは、例えば、カメラ、モーションキャプチャ、出力先デバイス、外部のセンサ、入力元デバイスなどが含まれる。また、外部装置９Ａは、推定装置１及び訓練装置２の構成要素の一部の機能を有する装置でもよい。そして、コンピュータ装置７は、推定装置１及び訓練装置２の処理結果の一部を、クラウドサービスのように通信ネットワーク８を介して受け取ってもよい。
【００８４】
デバイスインタフェース７５は、外部装置９Ｂと直接接続するＵＳＢ（Universal Serial Bus）などのインタフェースである。外部装置９Ｂは、外部記憶媒体でもよいし、ストレージ装置でもよい。各記憶部は、外部装置９Ｂにより実現されてもよい。
【００８５】
外部装置９Ｂは出力装置でもよい。出力装置は、例えば、画像を表示するための表示装置でもよいし、音声などを出力する装置などでもよい。例えば、ＬＣＤ（Liquid Crystal Display）、ＣＲＴ（Cathode Ray Tube）、ＰＤＰ（Plasma Display Panel）、スピーカなどがあるが、これらに限られるものではない。
【００８６】
なお、外部装置９Ｂは入力装置でもよい。入力装置は、キーボード、マウス、タッチパネルなどのデバイスを備え、これらのデバイスにより入力された情報をコンピュータ装置７に与える。入力装置からの信号はプロセッサ７１に出力される。
【００８７】
本発明の態様は、上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において種々の追加、変更及び部分的削除が可能である。例えば、前述した全ての実施形態において、説明に用いた数値は、一例として示したものであり、これらに限られるものではない。
【符号の説明】
【００８８】
１：推定装置、１００：入力部、１０２：第１ネットワーク、１０４：第２ネットワーク、１０６：時系列データ生成部、１０８：第３ネットワーク、１１０：損失算出部、１１２：逆伝播部、１１４：出力部、２：訓練装置、２００：勾配算出部、２０２：ネットワーク更新部、２０４：記憶部、３：情報取得装置、４０：物体制御装置、４２：トルク付加部
【図１】
2020095471.tif 000003
【図２】
2020095471.tif 000004
【図３】
2020095471.tif 000005
【図４】
2020095471.tif 000006
【図５】
2020095471.tif 000007
【図６】
2020095471.tif 000008
【図７】
2020095471.tif 000009
【図８】
2020095471.tif 000010
【図９】
2020095471.tif 000011