(57)【要約】      （修正有）【課題】複数の動きを予測し、それらを比較することができる方法を提供する。【解決手段】動き予測装置は、過去の速度ベクトルを取得する。動き予測装置は、過去の速度ベクトルに基づいて、速度の予測ベクトルを決定する。動き予測装置は、速度の複数の候補ベクトルを取得する。動き予測装置は、予測ベクトルに基づいて、候補ベクトルのうち１つを選択する。動き予測装置は、選択された候補ベクトルを出力する。【選択図】図３
2020052940.tif 000002
【特許請求の範囲】
【請求項１】
動きを予測する方法であって、
コンピュータが、過去の速度ベクトルを取得するステップと、
コンピュータが、前記過去の速度ベクトルに基づいて、速度の予測ベクトルを決定するステップと、
コンピュータが、速度の候補ベクトルを複数取得するステップと、
コンピュータが、前記予測ベクトルに基づいて前記候補ベクトルのうち１つを選択する、選択ステップと、
コンピュータが、前記選択された候補ベクトルを出力するステップと
を備える、方法。
【請求項２】
前記選択ステップは、さらに前記予測ベクトルと各前記候補ベクトルとの誤差に基づいて実行される、請求項１に記載の方法。
【請求項３】
前記方法は、
コンピュータが、各前記候補ベクトルについて、その候補ベクトルと、以前に選択されたすべての候補ベクトルとによって規定される経路を決定するステップと、
コンピュータが、各前記候補ベクトルについて、前記経路が存在する領域の数をカウントするステップと
をさらに備え、
前記選択ステップは、さらに前記経路が通過する領域の数に基づいて実行される、請求項１または２に記載の方法。
【請求項４】
前記選択ステップは、さらに各前記候補ベクトルが以前に選択された回数に基づいて実行される、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記速度ベクトル、前記予測ベクトルおよび前記候補ベクトルは、いずれも、向きを表す値と、大きさを表す値との組によって表され、少なくとも一部の向き範囲において、前記向きを表す値は一意ではない、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
請求項１〜５のいずれか一項に記載の方法を用いるステップと、
前記選択された候補ベクトルを過去の速度ベクトルに追加するステップと、
を備え、前記方法を用いるステップおよび前記追加するステップを繰り返し実行することにより、動きを累積的に予測する方法。
【請求項７】
請求項１〜６のいずれか一項に記載の方法を実行するコンピュータ。
【請求項８】
コンピュータに請求項１〜６のいずれか一項に記載の方法を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動きを予測する方法等に関する。
【背景技術】
【０００２】
カメラによって撮影された動画等に基づき、動きを予測する技術が知られている。特許文献１および２には、このような技術の例が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−５８６１５号公報
【特許文献２】特開２０１４−４８８８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、予測される動きが１つに特定されてしまうという問題があった。このため、未来に発生する可能性の高い動きを複数特定し、それらを適切な基準で比較することができない。
【０００５】
この発明は、このような問題点を解決するためになされたものであり、複数の動きを予測し、それらを比較することができる方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述の問題点を解決するため、この発明に係る方法は、
動きを予測する方法であって、
コンピュータが、過去の速度ベクトルを取得するステップと、
コンピュータが、前記過去の速度ベクトルに基づいて、速度の予測ベクトルを決定するステップと、
コンピュータが、速度の候補ベクトルを複数取得するステップと、
コンピュータが、前記予測ベクトルに基づいて前記候補ベクトルのうち１つを選択する、選択ステップと、
コンピュータが、前記選択された候補ベクトルを出力するステップと
を備える。
特定の態様によれば、前記選択ステップは、さらに前記予測ベクトルと各前記候補ベクトルとの誤差に基づいて実行される。
特定の態様によれば、前記方法は、
コンピュータが、各前記候補ベクトルについて、その候補ベクトルと、以前に選択されたすべての候補ベクトルとによって規定される経路を決定するステップと、
コンピュータが、各前記候補ベクトルについて、前記経路が存在する領域の数をカウントするステップと
をさらに備え、
前記選択ステップは、さらに前記経路が通過する領域の数に基づいて実行される。
特定の態様によれば、前記選択ステップは、さらに各前記候補ベクトルが以前に選択された回数に基づいて実行される。
特定の態様によれば、前記速度ベクトル、前記予測ベクトルおよび前記候補ベクトルは、いずれも、向きを表す値と、大きさを表す値との組によって表され、少なくとも一部の向き範囲において、前記向きを表す値は一意ではない。
また、この発明に係る方法は、
上述の方法を用いるステップと、
前記選択された候補ベクトルを過去の速度ベクトルに追加するステップと、
を備え、前記方法を用いるステップおよび前記追加するステップを繰り返し実行することにより、動きを累積的に予測する。
また、この発明に係るコンピュータは、上述の方法を実行する。
また、この発明に係るプログラムは、コンピュータに上述の方法を実行させる。
【発明の効果】
【０００７】
この発明に係る方法等によれば、動きを予測した予測ベクトルと、複数の候補ベクトルとをそれぞれ決定し、予測ベクトルに基づいて候補ベクトルのうち１つを選択するので、複数の動きを予測し、それらを比較することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態１に係る動き予測装置の構成の例を示す図である。
【図２】速度ベクトルの例を示す図である。
【図３】図１の動き予測装置の処理の流れを説明するフローチャートである。
【図４】速度ベクトルの時系列データの例を示す図である。
【図５】選択ステップにおける候補ベクトル選択方法を説明する図である。
【図６】第２の候補ベクトル選択方法を説明する図である。
【図７】図１のベクトル抽出装置の各機能を専用のハードウェアである処理回路で実現する場合を示した構成図である。
【図８】図１のベクトル抽出装置の各機能をプロセッサおよびメモリを備えた処理回路により実現する場合を示した構成図である。
【発明を実施するための形態】
【０００９】
以下、この発明の実施の形態を添付図面に基づいて説明する。
実施の形態１．
図１に、本発明の実施の形態１に係る動き予測装置１０の構成の例を示す。動き予測装置１０は、過去の（たとえば現時点までの）速度ベクトルに基づいて、未来の（たとえば次の瞬間の）速度ベクトルを表す値を出力する装置である。動き予測装置１０は公知のコンピュータとしての構成を有し、演算を行う演算手段１１と、情報を格納する記憶手段１２とを備える。演算手段１１はたとえばＣＰＵ（中央処理装置）を含み、記憶手段１２はたとえば半導体メモリおよびＨＤＤ（ハードディスクドライブ）を含む。
【００１０】
記憶手段１２は、候補ベクトルデータ１３を記憶する。候補ベクトルデータ１３は、速度ベクトルの候補となる値を複数含む。速度ベクトルの表現形式は任意であるが、たとえば、向きを表す値θと、大きさを表す値Ｌとの組（θ，Ｌ）によって表される。
【００１１】
また、記憶手段１２は、図示しないプログラムを記憶する。このプログラムは、コンピュータに、本明細書に記載される方法を実行させる。すなわち、コンピュータがこのプログラムを実行することにより、当該コンピュータは動き予測装置１０として機能する。
【００１２】
図２に、候補ベクトルデータ１３に含まれるベクトルの例を示す。大きさを表す値Ｌは、たとえば動画に基づいて動きを予測する場合には、画素のサイズを単位として表すことができる。また、向きを表す値θは、この例ではラジアンを単位として表されており、θ＝（５／４）πである。θは一意である必要はない（たとえばθの値を０≦θ＜２π等に限定する必要はない）。図２の例では、θ＝−（３／４）πと表すこともできる。
【００１３】
より具体的にいうと、θは、すべての向きにおいて一意であるように定義されてもよいし（たとえば０≦θ＜２π）、いかなる向きにおいても一意ではないように定義されてもよいし（たとえば−２π≦θ＜２π）、一部の向き範囲のみにおいて一意ではないように定義されてもよい（たとえば−π≦θ＜２π）。
【００１４】
θが一意とならない向き範囲が存在する場合には、候補ベクトルデータ１３は、ある速度ベクトルについて、可能なθの値すべてに対応するものを含むように構成されてもよい。たとえば図２の例では、｛（５／４）π，Ｌ｝および｛−（３／４）π，Ｌ｝という２つの速度ベクトルを含んでもよい。
【００１５】
候補ベクトルデータ１３をこのように構成すると、動きの予測に機械学習を用いる場合に好適である。速度ベクトルの向きが時間とともに変化する場合等において、速度ベクトルの向きが不連続となりにくいからである。
【００１６】
候補ベクトルデータ１３は、未来における速度の候補値としてのベクトル（候補ベクトル）を含む。すなわち、候補ベクトルとは、動き予測装置１０が過去の速度ベクトルに基づいて未来の速度ベクトルを決定する場合に、その未来の速度ベクトルの候補となる速度ベクトルを意味する。動き予測装置１０は、この候補ベクトルのいずれかを選択して出力するということができる。速度ベクトルが表す動きの対象物は任意に選択可能であるが、例として、文字等を書いたり消したりできるボード（たとえばホワイトボード）に書かれたで文字等を消す動作をする場合の手、歩行者や障害物を避けながら走行する自動車、等が挙げられる。以下、ホワイトボードに書かれた文字等を消す動作のことを、「ホワイトボードを消す」と記している箇所もある。
【００１７】
以下、図３〜６を用いて、動き予測装置１０の動作を説明する。
図３は、実施の形態１において動き予測装置１０が実行する処理の流れを説明するフローチャートである。図３の処理において、まず動き予測装置１０は、動きを予測する対象物の速度ベクトルおよび位置を初期化する（ステップＳ１）。たとえば、ホワイトボードを消す際の手の動きを予測する場合には、速度ベクトルの大きさＬを０とし、位置をホワイトボードの一点（たとえば左上隅）としてもよい。
【００１８】
次に、動き予測装置１０は、過去の速度ベクトルを取得する（ステップＳ２）。過去の速度ベクトルとは、動き予測装置１０がある時点での動きを予測する際に根拠とする、その時点までの速度ベクトルを意味する。過去の速度ベクトルは、単一の速度ベクトル（１時点のもの）であってもよいが、複数の速度ベクトルの順序付けられた列（たとえば５時点にわたって変化する速度ベクトル）とすると予測精度が高まり好適である。
【００１９】
ここで、過去の速度ベクトルの取得方法は任意に設計可能であるが、たとえば、それまでに動き予測装置１０が動きの予測を行っている場合には、予測結果として出力された速度ベクトルを用いてもよい（ステップＳ８等に関連して後述する）。ホワイトボードの文字等を消す作業者をリアルタイムでカメラで撮影している場合は、その動画から抽出した手の速度ベクトルを使用してもよい。また、過去の速度ベクトルの数が十分でない場合（最初の瞬間の動きを予測する場合等）の処理については、当業者が公知技術に基づいて適宜設計可能である。
【００２０】
次に動き予測装置１０は、過去の速度ベクトルに基づいて、速度ベクトルの予測値として、速度の予測ベクトルを決定する（ステップＳ３）。予測ベクトルも、向きを表す値θと、大きさを表す値Ｌとの組（θ，Ｌ）によって表される。予測ベクトルを決定する方法は任意に設計可能である。たとえばニューラルネットワークを用いて生成された学習済みモデルを用いてもよい。なお、このステップＳ３で参照する過去の速度ベクトルは、後述するように、候補ベクトルデータ１３に含まれるものには限定されない。
【００２１】
予測ベクトルを決定する手法の具体例として、ニューラルネットワークを用いたディープラーニング技術による例を以下に説明する。ニューラルネットワークは、入力層と、出力層と、３層の中間層（隠れ層）とを備え、各層間は全結合とする。入力層のニューロンを１０個とし、これによって、過去の速度ベクトル５個についてθおよびＬを入力できるようにする。中間層のニューロンは各層について３００個とする。出力層のニューロンを２個とし、これによって、予測ベクトルのθおよびＬを出力できるようにする。θおよびＬは、それぞれ正規化（たとえば０以上１以下の範囲に）してもよい。
【００２２】
ニューラルネットワークの学習に用いるデータは、速度ベクトルの時系列データである。たとえば、連続する５時点（ｔ＝ｔ０，ｔ１，ｔ２，ｔ３，ｔ４）の速度ベクトル（θ，Ｌ）を入力とし、その次の時点（ｔ＝ｔ５）の速度ベクトル（θ，Ｌ）を予測するよう学習させる。
【００２３】
この時系列データは、たとえば予測する動きと同種の動きの実例を記録したものであってもよい。たとえば、ホワイトボードを消す手の動きを予測するための学習には、実際にホワイトボードを消す動作を行って手の速度ベクトルを記録した時系列データを用いることができる。
【００２４】
以上はニューラルネットワークを用いる例であるが、ステップＳ３ではこれ以外の方法により予測ベクトルを決定してもよい。ニューラルネットワーク以外のモデルを用いて学習を行ってもよく、機械学習以外の方法を用いて予測ベクトルを決定してもよい。
【００２５】
また、動き予測装置１０が扱うデータは、速度ベクトル以外のデータを含んでもよい。たとえば、動きを予測する対象物（たとえば手）の位置や、動きを予測する対象物を含む構成要素全体（たとえば人体）の位置等を含んでもよい。この場合には、対象物の位置や構成要素全体の位置を予測ベクトルおよび候補ベクトルに含めてもよいし、予測ベクトルおよび候補ベクトルとは別に対象物の位置や構成要素全体の位置を決定してもよい。
【００２６】
図４は、このような時系列データの例を示す。図４（ａ）は、ホワイトボードを横方向に消す場合の動作に対応する。図４（ｂ）は、ホワイトボードを縦方向に消す場合の動作に対応する。図４（ｃ）は、ホワイトボードを渦巻状に消す場合の動作に対応する。単一の時系列のデータを用いてもよいし、複数の時系列を構成するデータを用いてもよい。学習に用いた時系列データに含まれる速度ベクトルの一部または全部を、候補ベクトルデータ１３として利用してもよい。
【００２７】
次に、動き予測装置１０は、候補ベクトルデータ１３のうちから、複数の候補ベクトルを取得する（ステップＳ４）。各候補ベクトルは、向きを表す値θと、大きさを表す値Ｌとの組（θ，Ｌ）によって表される。ここで取得される候補ベクトルを決定する方法は任意に設計可能であるが、たとえば候補ベクトルデータ１３に含まれる速度ベクトルをすべて候補ベクトルとして取得してもよい。
【００２８】
次に、動き予測装置１０は、ステップＳ３で決定した予測ベクトルに基づいて、候補ベクトルのうち１つを選択する（ステップＳ５、選択ステップ）。選択基準は任意に設計可能であるが、例を以下に説明する。
【００２９】
図５を用いて、候補ベクトルのうちから１つを選択する方法を説明する。過去の連続する５個の速度ベクトルＶ０に基づき、予測ベクトルＶが取得されている。また、候補ベクトルＶｉ（ただし１≦ｉ≦３）が取得されている。
【００３０】
＜第１の候補ベクトル選択方法＞
第１の候補ベクトル選択方法では、動き予測装置１０は、予測ベクトルＶ＝（θＶ，ＬＶ）と各候補ベクトルＶｉ＝（θＶｉ，ＬＶｉ）との誤差に基づいて候補ベクトルを選択する。たとえば誤差を最も小さくする候補を選択してもよい。より具体的な例としては、誤差Ｅｉ＝（θＶ−θＶｉ）２＋（ＬＶ−ＬＶｉ）２の値を最も小さくする候補ベクトルが選択される。ただしθＶ，ＬＶ，θＶｉ，ＬＶｉはいずれも正規化（たとえば０以上１以下の範囲に）されているものとする。または、予測ベクトルと候補ベクトルとの距離を誤差としてもよい。または、候補ベクトルを、誤差Ｅｉの値が閾値以下になるもののみに絞りこみ、依然として複数の候補ベクトルが残る場合には、さらに以下に説明する第２〜第４の候補ベクトル選択方法のいずれかを組み合わせ、ただ１つの候補ベクトルを選択してもよい。この場合において、誤差Ｅｉの値が閾値以下になるものが存在しない場合の処理は、当業者が適宜設計可能であり、たとえばその時点で図２の処理を終了してもよい。
【００３１】
なお、この例では、候補ベクトルの選択はθおよびＬのみに基づいて行っているが、他の情報を追加で利用してもよい。たとえば、動きを予測する対象物（たとえば手）の現在位置を考慮してもよい。または、手の動きを予測する場合には、体全体の現在位置（たとえば体の中心位置）を考慮してもよい。これらの現在位置の取得方法および利用方法は、当業者が適宜設計可能である。
【００３２】
＜第２の候補ベクトル選択方法＞
第２の候補ベクトル選択方法では、動き予測装置１０は、予測ベクトルと各候補ベクトルとの誤差Ｅｉで選択した候補ベクトルの中から、経路の効率を考慮して候補ベクトルを選択する。
図６を用いて、第２の候補ベクトル選択方法を説明する。動き予測装置１０は、動きを予測する対象物の移動範囲（たとえばホワイトボード全体）を分割した領域を表す情報を取得する。たとえば、各領域の位置、形状、寸法等を表す情報が、予め記憶手段１２に格納されていてもよい。図６の例では、各領域は正方形のグリッドである。
【００３３】
動き予測装置１０は、各候補ベクトルＶｉについて、過去の速度ベクトルおよび当該候補ベクトルＶｉに基づいて規定される経路を決定する。図６の例では、候補ベクトルＶ１についての経路は、初期位置から現在位置までの経路（図６の例では過去の速度ベクトルＶ０を順に接続して得られる）に、候補ベクトルＶ１をさらに接続して得られる経路であり、候補ベクトルＶ２についての経路は、初期位置から現在位置までの経路に、候補ベクトルＶ２をさらに接続して得られる経路であり、候補ベクトルＶ３についての経路は、初期位置から現在位置までの経路に、候補ベクトルＶ３をさらに接続して得られる経路である。
【００３４】
そして、動き予測装置１０は、各候補ベクトルＶｉについて、対応する経路が存在するグリッドの数をカウントする。図６の例では、１１個のグリッドＧ０については各経路が一致しており、すなわちすべての経路が存在している。また、候補ベクトルＶ１に対する経路はグリッドＧ４に存在するので、この経路が存在するグリッドの数は合計で１２個となる。同様に、候補ベクトルＶ２に対する経路はグリッドＧ２およびＧ５に存在するので、この経路が存在するグリッドの数は合計で１３個となり、候補ベクトルＶ３に対する経路はグリッドＧ５に存在するので、この経路が存在するグリッドの数は合計で１２個となる。このようにして求められたグリッドの数は、たとえばホワイトボードのうちそれまでに消した部分の面積に対応する。
【００３５】
さらに、動き予測装置１０は、各経路が通過するグリッドの数に基づいて、候補ベクトルのうち１つを選択する。たとえば、経路が存在するグリッドの数を集計し、結果が最大となる候補ベクトルを選択してもよい。
【００３６】
さらに、より細かい単位で経路を計算してもよい。たとえば、予測後の位置から、最近未進入グリッドの中心までの距離を考慮してもよい。予測後の位置とは、各候補ベクトルを含む経路の終点（図６で各候補ベクトルの先端が指す点の位置）である。「最近未進入グリッド」とは、経路が未だ進入していない（経路が存在していない）グリッドのうち、予測後の位置からそのグリッドの中心までの距離が最も短いものを意味する。「グリッドの中心」の位置は、グリッドの形状等に応じて適宜定義可能であるが、たとえばグリッドが正方形である場合にはその重心である。図６の例では、候補ベクトルＶ１に対する最近未進入グリッドはグリッドＧ１であり、候補ベクトルＶ２に対する最近未進入グリッドはグリッドＧ３であり、候補ベクトルＶ３に対する最近未進入グリッドはグリッドＧ６である。
【００３７】
具体的な考慮方法としては、たとえば、経路が存在するグリッドの数と、予測後の位置から最近未進入グリッドの中心までの距離の逆数を加算した値を効率Ｆｉとし、この効率Ｆｉが最大となる候補ベクトルを選択してもよい。このようにすると、経路がまだ進入していないグリッドの近くで終了する経路が優先して選択されるので、対象物の直後の動きで新たなグリッドを通過する可能性が高くなる。このため、全領域をカバーするための動作（たとえばホワイトボードを消す動作）については、より効率的な動きに対応する候補ベクトルが選択されることになる。このようにして第２の候補ベクトル選択方法が実行される。
【００３８】
＜第３の候補ベクトル選択方法＞
第３の候補ベクトル選択方法では、動き予測装置１０は、効率Ｆｉに加え、各候補ベクトルが以前に選択された回数に基づいて、候補ベクトルを選択する。たとえば、以前にあまり選択されていない候補は、選択されやすくなるようにする。
【００３９】
具体例として、公知のＵＣＢ１アルゴリズムを利用してもよい。（ＵＣＢ１アルゴリズム：Peter Auer、Nicol`O Cesa-Bianchi、Paul Fischer、「Finite-time Analysis of the Multiarmed BanditProblem」、インターネット＜ＵＲＬ：https://homes.di.unimi.it/~cesabian/Pubblicazioni/ml-02.pdf＞、２０１８年８月３０日検索。）たとえば、効率Ｆｉを、Ｈｉ＝√｛（２×ｌｏｇ（ｎ／ｍｉ）｝で表される選択履歴値Ｈｉを用いて補正する。ただしｍｉはそれまでにその候補ベクトルＶｉが選択された回数であり、ｎは同時に選択の対象となっているすべての候補ベクトルが選択された回数の合計であり（すなわちｎ＝Σｉｍｉ）、ｌｏｇは対数（たとえば自然対数）を表す。
【００４０】
図６における具体例として、候補ベクトルＶ１がそれまでに１０回選択されており、候補ベクトルＶ２がそれまでに４回選択されており、候補ベクトルＶ３がそれまでに２回選択されている場合を考える。ｎ＝１０＋４＋２＝１６であり、また候補ベクトルＶ１についてｍ１＝１０であるので、Ｈ１＝√｛（２×ｌｏｇ（１６／１０）｝≒０．７４となる。このＨｉに基づいて補正された効率Ｆｉ＋Ｃ×Ｈｉが最大となるような候補ベクトルが選択される。なお、ここでＣとは補正値の効果の大きさを調整するための定数である。このようにして第３の候補ベクトル選択方法が実行される。
【００４１】
＜第４の候補ベクトル選択方法＞
第４の候補ベクトル選択方法では、動き予測装置１０は、効率Ｆｉの替わりにトータルの効率Ｔｉを使用する。ここでトータルの効率Ｔｉとは、全てのグリッドがカバーされるまで実行したときに、カバーしたグリッド数をそれまでに掛かったフレーム数で割った値とする。ただし、それ以降に選択する候補ベクトルによりトータルの効率Ｔｉの値は異なるので、求まっているトータルの効率のなかで最も良いトータルの効率をその候補ベクトルのトータルの効率Ｔｉとする。また、第３の候補ベクトル選択方法と同様に、各候補ベクトルが以前に選択された回数に基づいて補正した値Ｔｉ＋Ｃ×Ｈｉで、候補ベクトルを選択する。
【００４２】
具体例として、全グリッド数が２００とし、候補ベクトルＶ１で全てのグリッドがカバーされるまで実行したときに、掛かったフレーム数が１０００の場合、トータルの効率は２００／１０００＝０．２となる。さらに、以降の処理で他の候補ベクトルを選択してもこれ以上のトータルの効率が得られていない場合は、候補ベクトルＶ１のトータルの効率Ｔ１は０．２となる。また、Ｈ１＝０．７４、Ｃ＝０．１とすると、補正した値はＴｉ＋Ｃ×Ｈｉ＝０．２＋０．１×０．７４＝０．２７４となる。Ｖ２やＶ３も同様に計算して、最も補正した値が大きい候補ベクトルを選択することで、第４の候補ベクトル選択方法が実行される。なお、第４の候補ベクトル選択方法では、何度か全てのグリッドがカバーするまで実行して、トータルの効率Ｔｉが求めてはじめて実行できるようになる。それまでは、第３の候補ベクトル選択方法を使用して候補ベクトルの選択を行う。
【００４３】
さらに、トータルの効率Ｔｉを求めるためにニューラルネットワークを用いたディープラーニング技術を用いて予測してもよい。ニューラルネットワークは、入力層と、畳み込み層３層と、全結合層と、出力層とを備え、例えば入力層のサイズはグリッドのサイズと同じ縦１０横２０個のニューロンとし、畳み込み層も同じ縦１０横２０個とし、畳み込みで使用するフィルタのサイズは縦３横３の４０個とし、全結合層は１００個とし、出力層は１個とする。入力として最初から現在までにＶ０の経路になったグリッドを１とし、経路になっていないグリッドを０とした２次元の配列と、さらに、各候補ベクトルＶｉの経路を１とし、それ以外のグリッドを０とした２次元の配列を入力として与える。出力される値は、トータルの効率を与えて学習させる。このニューラルネットを使用することで、指定された回数が数万回以上など多い場合に、初期の千回の結果を学習して、トータルの効率を予測できるようにし、予測したトータルの効率が低い候補ベクトルが選択される回数を少なくなるようにして、（ただし、選択された回数による補正により予測されたトータルの効率が低い候補ベクトルでも頻度は少ないが選択される場合はありえる）全体の処理時間を短くすることができる。
【００４４】
ステップＳ５では、このようにして候補ベクトルのうち１つが選択される。次に、動き予測装置１０は、選択された候補ベクトルを出力する（ステップＳ６）。この出力はどのように行われてもよいが、たとえば記憶手段１２の半導体メモリまたはＨＤＤ等に記憶するよう出力してもよいし、動き予測装置１０を構成するコンピュータにおいて構成されるＡＰＩ等に出力してもよいし、通信ネットワークを介して他のコンピュータに送信するよう出力してもよい。
【００４５】
次に、動き予測装置１０は、出力された候補ベクトルを最後に接続した経路（図５に例示するもの）が、グリッドをすべてカバーしたか否かを判定する（ステップＳ７）。グリッドは、たとえば上述の「第２の候補ベクトル選択方法」において説明したように定義することができる。
【００４６】
「グリッドをカバーする」とは、経路がそのグリッドに存在することを意味する。すなわち、経路がすべてのグリッドを通過していれば（ただし始点および終点のグリッドは通過したものと考える）、すべてのグリッドがカバーされたといえる。ホワイトボードを消す動作の場合には、経路がすべてのグリッドをカバーしていることは、ホワイトボードの全体を消し終わったことを意味する。
【００４７】
すべてのグリッドがカバーされていない場合、動き予測装置１０は、最後に選択された候補ベクトルを、過去の速度ベクトルに追加する（ステップＳ８）。たとえば図５の候補ベクトルＶ１が出力された場合には、それまでの過去の速度ベクトルＶ０に加え、旧候補ベクトルＶ１が新たな過去の速度ベクトルとなる。また、この際に、過去の速度ベクトルのうち最も古いものを、過去の速度ベクトルから削除してもよい。その後、動き予測装置１０は処理をステップＳ２に戻す。このように、動き予測装置１０は、動きを予測する動作と、過去の速度ベクトルを追加する動作とを繰り返し実行することにより、対象物の動きを累積的または漸進的に予測する。
【００４８】
ステップＳ７においてすべてのグリッドがカバーされていた場合には、動き予測装置１０は、指定された回数の実行が完了したか否かを判定する（ステップＳ９）。たとえば、グリッドをすべてカバーする経路が１０回生成されたか否かを判定する。指定された回数の実行が完了していない場合（すなわち、それまでに生成された経路が指定数未満である場合）には、動き予測装置１０は処理をステップＳ１に戻し、対象物の速度ベクトルおよび位置を初期化して新たな経路の生成を開始する。
【００４９】
ここで、ステップＳ５において第３または第４の候補ベクトル選択方法が用いられている場合には、動き予測装置１０は、各候補ベクトルが選択された回数をリセットせず維持してもよい。維持するようにすると、各経路がそれぞれ異なる選択履歴値に基づいて生成されることになり、それぞれ異なるパターンを形成する経路を多数取得することができる。
【００５０】
指定された回数の実行が完了した場合には、動き予測装置１０は、生成された経路のうち最適となるものを出力する（ステップＳ１０）。最適となる経路の選択基準は当業者が適宜設計可能であるが、たとえば、経路に含まれる速度ベクトルの大きさの総和が最も小さくなるものを選択してもよいし、経路を構成する速度ベクトルの数が最も少ないものを選択してもよい。
【００５１】
以上説明するように、本発明の実施の形態１に係る動き予測装置１０によれば、動きの予測ベクトルＶと、複数の候補ベクトルＶｉとをそれぞれ決定し、予測ベクトルＶに基づいて候補ベクトルＶｉのうち１つを選択するので、複数の動きを予測し、それらを比較することができる。
【００５２】
とくに、動きの予測ベクトルＶをそのまま用いるのではなく、動きの予測ベクトルＶに近いもの（たとえば誤差Ｅｉの値が一定値以内のもの）を選択することで、実際の人の動きに近い動きを再現できる。さらに、選択した複数の候補ベクトルＶｉを互いに比較し、最も効率良く作業が行えるもの（たとえば効率Ｆｉを最大とするもの）を選択することができる。
【００５３】
また、候補ベクトルとしては、物理的に可能な範囲をすべて網羅するのではなく、特定のもの（たとえば候補ベクトルデータ１３に含まれているもののみ）に限定するので、発生する可能性が高い動きを効率的に予測することができる。
【００５４】
動き予測装置１０によって出力された最適な経路は、様々な用途に応用することができる。たとえば、ホワイトボードを消す動作や機器の汚れを拭く動作を最適化するために用いることができる。別の例では、機器の点検作業を最適化するために用いることができる。また別の例では、機器の組み立て動作を最適化するために用いることができる。さらに別の例では、自動車が歩行者や障害物を避けながら自動走行する場合において、最適な走行経路を決定することができる。さらに別の例では、進行中の作業を記録し、次に発生する可能性が高い動作を予測し、危険な作業手順になっていないか、あるいは作業手順が正しいか否かを判定するために用いることができる。この場合には、危険な作業手順や不正な作業手順が予測される場合に警告を出力させてもよい。さらに別の例では、機械の動作を学習することで機械の動きを予測し、機械の動作の最適化を行うことができる。
【００５５】
上述の実施の形態１において、以下のような変形を施すことができる。
実施の形態１では予測ベクトルは一度に１つだけ用いられるが、複数の予測ベクトルを用いてもよい。たとえば、予測ベクトルを出力するためのモデル（ニューラルネットワークモデル等）を複数準備し、それぞれ異なる学習データによって学習させ、これによって複数の学習済みモデルを生成することができる。各学習済みモデルによって予測ベクトルを出力すれば、複数の予測ベクトルを取得することができる。このような場合の候補ベクトルの選択方法は、当業者が適宜決定可能である。
【００５６】
上述の実施の形態１において、以下のような変形を施すことができる。動きが大きい箇所が複数ある場合、例えば人が両手を動かしている場合は、それら両方の動きについて一つの場合と同様に予測と選択を行うことができる。その場合、右手用のモデルと左手用のモデルで個別に動きを予測する。
【００５７】
実施の形態１では速度ベクトルは向きおよび大きさの組によって表されるが、速度ベクトルは、複数の方向成分（たとえば直交座標系におけるＸ方向成分およびＹ方向成分）の組によって表されてもよい。
【００５８】
実施の形態１では速度ベクトルは２次元で表されるが、３次元以上の速度ベクトルを用いてもよい。
【００５９】
図３の処理は、単一のコンピュータによって実行される必要はない。複数のコンピュータが動き予測装置１０を構成してもよい。
【００６０】
なお、上述した実施の形態１に係る動き予測装置１０における各機能は、処理回路によって実現される。各機能を実現する処理回路は、専用のハードウェアであってもよく、メモリに格納されるプログラムを実行するプロセッサであってもよい。図７は、本発明の実施の形態１に係る動き予測装置１０の各機能を専用のハードウェアである処理回路１０００で実現する場合を示した構成図である。また、図８は、本発明の実施の形態１に係る動き予測装置１０の各機能をプロセッサ２００１およびメモリ２００２を備えた処理回路２０００により実現する場合を示した構成図である。
【００６１】
処理回路が専用のハードウェアである場合、処理回路１０００は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、またはこれらを組み合わせたものが該当する。動き予測装置１０の各部の機能それぞれを個別の処理回路１０００で実現してもよいし、各部の機能をまとめて処理回路１０００で実現してもよい。
【００６２】
一方、処理回路がプロセッサ２００１の場合、動き予測装置１０の各部の機能は、ソフトウェア、ファームウェア、またはソフトウェアとファームウェアとの組み合わせにより実現される。ソフトウェアおよびファームウェアは、プログラムとして記述され、メモリ２００２に格納される。プロセッサ２００１は、メモリ２００２に記憶されたプログラムを読み出して実行することにより、各部の機能を実現する。すなわち、動き予測装置１０は、処理回路２０００により実行されるときに、ステップＳ１〜Ｓ１０が結果的に実行されることになるプログラムを格納するためのメモリ２００２を備える。
【００６３】
これらのプログラムは、上述した各部の手順あるいは方法をコンピュータに実行させるものであるともいえる。ここで、メモリ２００２とは、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等の、不揮発性または揮発性の半導体メモリが該当する。また、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等も、メモリ２００２に該当する。
【００６４】
なお、上述した各部の機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
【００６５】
このように、処理回路は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせによって、上述した各部の機能を実現することができる。
【符号の説明】
【００６６】
１０  動き予測装置（コンピュータ）、Ｓ５  選択ステップ、Ｇ０〜Ｇ６  グリッド（領域）、Ｖ  予測ベクトル、Ｖ０  過去の速度ベクトル、Ｖｉ（Ｖ１〜Ｖ３）  候補ベクトル、θ  向きを表す値、Ｌ  大きさを表す値。
【図１】
2020052940.tif 000003
【図２】
2020052940.tif 000004
【図３】
2020052940.tif 000005
【図４】
2020052940.tif 000006
【図５】
2020052940.tif 000007
【図６】
2020052940.tif 000008
【図７】
2020052940.tif 000009
【図８】
2020052940.tif 000010
【手続補正書】
【提出日】令和2年1月9日(2020.1.9)
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
上述の問題点を解決するため、この発明に係る方法は、
動きを予測する方法であって、
コンピュータが、過去の速度ベクトルを取得するステップと、
コンピュータが、前記過去の速度ベクトルに基づいて、速度の予測ベクトルを決定するステップと、
コンピュータが、予め作成されている候補ベクトルデータの中から、複数の候補ベクトルを取得するステップと、
コンピュータが、前記予測ベクトルに基づいて前記候補ベクトルのうち１つを選択する、選択ステップと、
コンピュータが、前記選択された候補ベクトルを出力するステップと
を備え、
前記方法は、
コンピュータが、各前記候補ベクトルについて、その候補ベクトルと、以前に選択されたすべての候補ベクトルとによって規定される経路を決定するステップと、
コンピュータが、動きを予測する対象物の移動範囲を分割した複数の領域を表す情報を取得するステップと、
コンピュータが、各前記候補ベクトルについて、前記経路が存在する領域の数をカウントするステップと
をさらに備え、
前記選択ステップは、さらに前記経路が通過する前記領域の数に基づいて実行される。
特定の態様によれば、前記選択ステップは、さらに前記予測ベクトルと各前記候補ベクトルとの誤差に基づいて実行される。
特定の態様によれば、前記速度ベクトル、前記予測ベクトルおよび前記候補ベクトルは、いずれも、向きを表す値と、大きさを表す値との組によって表され、少なくとも一部の向き範囲において、前記向きを表す値は一意ではない。
また、この発明に係る方法は、
上述の方法を用いるステップと、
前記選択された候補ベクトルを過去の速度ベクトルに追加するステップと、
を備え、前記方法を用いるステップおよび前記追加するステップを繰り返し実行することにより、動きを累積的に予測する。
また、この発明に係る装置は、上述の方法を実行する。
また、この発明に係るプログラムは、コンピュータに上述の方法を実行させる。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
動きを予測する方法であって、
コンピュータが、過去の速度ベクトルを取得するステップと、
コンピュータが、前記過去の速度ベクトルに基づいて、速度の予測ベクトルを決定するステップと、
コンピュータが、予め作成されている候補ベクトルデータの中から、複数の候補ベクトルを取得するステップと、
コンピュータが、前記予測ベクトルに基づいて前記候補ベクトルのうち１つを選択する、選択ステップと、
コンピュータが、前記選択された候補ベクトルを出力するステップと
を備え、
前記方法は、
コンピュータが、各前記候補ベクトルについて、その候補ベクトルと、以前に選択されたすべての候補ベクトルとによって規定される経路を決定するステップと、
コンピュータが、動きを予測する対象物の移動範囲を分割した複数の領域を表す情報を取得するステップと、
コンピュータが、各前記候補ベクトルについて、前記経路が存在する領域の数をカウントするステップと
をさらに備え、
前記選択ステップは、さらに前記経路が通過する前記領域の数に基づいて実行される、方法。
【請求項２】
前記選択ステップは、さらに前記予測ベクトルと各前記候補ベクトルとの誤差に基づいて実行される、請求項１に記載の方法。
【請求項３】
前記選択ステップは、さらに各前記候補ベクトルが以前に選択された回数に基づいて実行される、請求項１または２に記載の方法。
【請求項４】
前記速度ベクトル、前記予測ベクトルおよび前記候補ベクトルは、いずれも、向きを表す値と、大きさを表す値との組によって表され、少なくとも一部の向き範囲において、前記向きを表す値は一意ではない、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
請求項１〜４のいずれか一項に記載の方法を用いるステップと、
前記選択された候補ベクトルを過去の速度ベクトルに追加するステップと、
を備え、前記方法を用いるステップおよび前記追加するステップを繰り返し実行することにより、動きを累積的に予測する方法。
【請求項６】
請求項１〜５のいずれか一項に記載の方法を実行する装置。
【請求項７】
コンピュータに請求項１〜５のいずれか一項に記載の方法を実行させるプログラム。