(57)【要約】      （修正有）【課題】前後のフレームの相関する情報を活用して、姿勢の推定精度を上げる情報処理プログラムを提供する。【解決手段】複数の関節を有する物体を含む、時間的に連続する複数フレームの画像を用いて、各フレームの物体の関節位置の確率分布を算出し、異なるフレーム間の物体の同一関節の遷移情報を用いて、関節の遷移の整合性を評価することにより遷移スコアを算出し、確率分布のスコア、及び遷移スコアから、複数の関節を有する物体の姿勢を推定する、処理をコンピュータに実行させる。【選択図】図１９
2019016106.tif 000002
【特許請求の範囲】
【請求項１】
複数の関節を有する物体を含む、時間的に連続する複数フレームの画像を用いて、各フレームの前記物体の関節位置の確率分布を算出し、
異なるフレーム間の前記物体の同一関節の遷移情報を用いて、関節の遷移の整合性を評価することにより遷移スコアを算出し、
前記確率分布のスコア、及び前記遷移スコアから、前記複数の関節を有する物体の姿勢を推定する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項２】
前記遷移スコアを算出する際、関節と関節につながれたパーツとを含む関節タイプを用いて、関節タイプの遷移の整合性を評価する、
ことを特徴とする、請求項２に記載の情報処理プログラム。
【請求項３】
前記確率分布のスコア、及び前記遷移スコアを線形結合し、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、請求項１又は２に記載の情報処理プログラム。
【請求項４】
各フレームの前記物体の関節同士の相対位置関係の整合性を評価することにより相対位置スコアを算出し、
前記確率分布のスコア、及び前記遷移スコアに、前記相対位置スコアを加え、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、請求項１から３のいずれか一項に記載の情報処理プログラム。
【請求項５】
前記相対位置スコアを算出する際、関節と関節につながれたパーツとを含む関節タイプを用いて、関節タイプ間の整合性を評価する、
ことを特徴とする、請求項４に記載の情報処理プログラム。
【請求項６】
前記確率分布のスコア、前記相対位置スコア、及び前記遷移スコアを線形結合し、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、請求項４又は５に記載の情報処理プログラム。
【請求項７】
前記遷移スコアを用いて前記物体の姿勢を推定する際、姿勢を推定する画像、及びその画像に対し、前のフレーム及び後ろのフレームの少なくともいずれかの画像から選択される２フレーム以上の画像を用いることにより、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、請求項１から６のいずれか一項に記載の情報処理プログラム。
【請求項８】
前記遷移スコアを用いて前記物体の姿勢を推定する際、姿勢を推定する画像、及びその画像に対し、前のフレーム及び後ろのフレームの少なくともいずれかの画像から選択される１フレーム以上の画像を用いるとき、フレーム毎に設定した重み係数を乗じてスコアを算出することにより、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、請求項１から７のいずれか一項に記載の情報処理プログラム。
【請求項９】
複数の関節を有する物体を含む、時間的に連続する複数フレームの画像を用いて、各フレームの前記物体の関節位置の確率分布を算出する確率分布算出部と、
異なるフレーム間の前記物体の同一関節の遷移情報を用いて、関節の遷移の整合性を評価することにより遷移スコアを算出する遷移スコア算出部と、
前記確率分布のスコア、及び前記遷移スコアから、前記複数の関節を有する物体の姿勢を推定する姿勢推定部と、
を有することを特徴とする情報処理装置。
【請求項１０】
各フレームの前記物体の関節同士の相対位置関係の整合性を評価することにより相対位置スコアを算出する相対位置スコア算出部を有し、
前記確率分布のスコア、及び前記遷移スコアに、前記相対位置スコアを加え、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、請求項９に記載の情報処理装置。
【請求項１１】
複数の関節を有する物体を含む、時間的に連続する複数フレームの画像を用いて、各フレームの前記物体の関節位置の確率分布を算出し、
異なるフレーム間の前記物体の同一関節の遷移情報を用いて、関節の遷移の整合性を評価することにより遷移スコアを算出し、
前記確率分布のスコア、及び前記遷移スコアから、前記複数の関節を有する物体の姿勢を推定する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項１２】
各フレームの前記物体の関節同士の相対位置関係の整合性を評価することにより相対位置スコアを算出し、
前記確率分布のスコア、及び前記遷移スコアに、前記相対位置スコアを加え、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、請求項１１に記載の情報処理方法。
【請求項１３】
複数の関節を有する物体を含む、時間的に連続する複数フレームの画像を用いて、各フレームの前記物体の関節位置の確率分布を算出する確率分布算出部と、
異なるフレーム間の前記物体の同一関節の遷移情報を用いて、関節の遷移の整合性を評価することにより遷移スコアを算出する遷移スコア算出部と、
前記確率分布のスコア、及び前記遷移スコアから、前記複数の関節を有する物体の姿勢を推定する姿勢推定部と、を有する情報処理装置と、
前記情報処理装置の前記遷移スコア算出部で使用する、関節の遷移の整合性を評価するための前記物体の同一関節の遷移情報を制御部で学習し、学習した前記物体の同一関節の遷移情報を前記情報処理装置に出力する学習装置と、
を有することを特徴とする情報処理システム。
【請求項１４】
前記情報処理装置が、各フレームの前記物体の関節同士の相対位置関係の整合性を評価することにより相対位置スコアを算出する相対位置スコア算出部を有し、
前記姿勢推定部において、前記確率分布のスコア、及び前記遷移スコアに、前記相対位置スコアを加え、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、請求項１３に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラム、情報処理装置、情報処理方法、及び情報処理システムに関する。
【背景技術】
【０００２】
コンピュータビジョンの分野では、画像中の人物の姿勢推定は、古くから研究されている。その代表的な手法に、人体の関節とパーツをグラフィカルモデルで表現した人体モデルを用いた姿勢推定がある。
特に、近年、Ｄｅｅｐ  Ｌｅａｒｎｉｎｇを用いて、関節やパーツの推定とそれらの位置関係を学習し、姿勢推定を行う手法が提案されている（例えば、非特許文献１及び２参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｘ．Ｃｈｅｎ  ａｎｄ  Ａ．Ｙｕｉｌｌｅ：  “Ａｒｔｉｃｕｌａｔｅｄ  Ｐｏｓｅ  Ｅｓｔｉｍａｔｉｏｎ  ｂｙ  ａ  Ｇｒａｐｈｉｃａｌ  Ｍｏｄｅｌ  ｗｉｔｈ  Ｉｍａｇｅ  Ｄｅｐｅｎｄｅｎｔ  Ｐａｉｒｗｉｓｅ  Ｒｅｌａｔｉｏｎｓ”，  Ａｄｖａｎｃｅｓ  ｉｎ  Ｎｅｕｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｓｔｅｍｓ，  ｐｐ．  １７３６−１７４４  （２０１４）
【非特許文献２】Ｗ．Ｙａｎｇ，  Ｗ．Ｏｕｙａｎｇ，  Ｈ．Ｌｉ，  Ｘ．Ｗａｎｇ：  “Ｅｎｄ−ｔｏ−Ｅｎｄ  Ｌｅａｒｎｉｎｇ  ｏｆ  Ｄｅｆｏｒｍａｂｌｅ  Ｍｉｘｔｕｒｅ  ｏｆ  Ｐａｒｔｓ  ａｎｄ  Ｄｅｅｐ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  ｆｏｒ  Ｈｕｍａｎ  Ｐｏｓｅ  Ｅｓｔｉｍａｔｉｏｎ”，Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  ａｎｄ  Ｐａｔｔｅｒｎ  Ｒｅｃｏｇｎｉｔｉｏｎ  （ＣＶＰＲ），  ｐｐ．３０７３−３０８２，  （２０１６）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記非特許文献１、及び２に記載の手法は、１枚の静止画である１フレーム内の認識処理を行う手法であるため、姿勢の推定精度がフレーム内の情報に制限されていた。そのため、動画のような前後のフレームに関連性がある場合に、その相関する情報が活用できておらず、結果として、動画における各フレームの姿勢推定精度が低くなるときがある。
【０００５】
一つの側面では、前後のフレームの相関する情報を活用して、物体の姿勢の推定精度を上げる情報処理プログラム、情報処理装置、情報処理方法、及び情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの実施態様では、情報処理プログラムは、
複数の関節を有する物体を含む、時間的に連続する複数フレームの画像を用いて、各フレームの前記物体の関節位置の確率分布を算出し、
異なるフレーム間の前記物体の同一関節の遷移情報を用いて、関節の遷移の整合性を評価することにより遷移スコアを算出し、
前記確率分布のスコア、及び前記遷移スコアから、前記複数の関節を有する物体の姿勢を推定する、処理をコンピュータに実行させる。
【発明の効果】
【０００７】
一つの側面では、前後のフレームの相関する情報を活用して、物体の姿勢の推定精度を上げる情報処理プログラム、情報処理装置、情報処理方法、及び情報処理システムを提供することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、情報処理装置を含む情報処理システムの構成の一例を示す図である。
【図２】図２は、情報処理装置のハードウェア構成の一例を示すブロック図である。
【図３】図３は、人体モデルの一例を示す図である。
【図４】図４は、従来技術による関節位置の推定方法の一例を示す図である。
【図５】図５は、異なるフレームにおける関節の遷移を説明するための一例を示す図である。
【図６】図６は、関節位置確率分布を説明するための一例を示す図である。
【図７】図７は、姿勢推定の処理手順の一例を示す図である。
【図８】図８は、同一フレーム内における関節タイプの整合性評価について説明するための一例を示す図である。
【図９】図９は、関節タイプを導入した場合の関節位置確率分布を説明するための一例を示す図である。
【図１０】図１０は、関節位置相対スコア関数の一例を示す図である。
【図１１】図１１は、関節のタイプ遷移と移動量の一例を示す図である。
【図１２】図１２は、人体モデルの各関節に、その位置と関節タイプが対応付けされていることを説明するための一例を示す図である。
【図１３】図１３は、学習データセットの抽出を説明するための一例を示す図である。
【図１４】図１４は、学習データセットを抽出してデータベース化したもの（「ｔｙｐｅ遷移データベース」）を説明するための一例を示す図である。
【図１５】図１５は、遷移スコアを算出する際に使用する重み値ｗについて、ｈｅａｄを例に重み値ｗと関節タイプとの関係を説明するための一例を示す図である。
【図１６】図１６は、姿勢推定部において、関節の位置を推定するための処理を説明するための一例を示す図である。
【図１７】図１７は、人体モデルの各関節に、その位置と関節タイプが対応付けされていることを説明するための一例を示す図である。
【図１８】図１８は、情報処理方法を用いてオクルージョンを評価した結果の一例を示す図である。
【図１９】図１９は、情報処理装置により、人体の姿勢を推定する処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
本発明の情報処理プログラムは、動画のような前後のフレームに関連がある画像において、複数の関節を有する物体の同一関節における異なるフレーム間の遷移の整合性を評価することにより、関節の存在位置を高い精度で推定する。これにより、情報処理プログラムは、物体の姿勢の推定精度を上げる情報処理プログラムを提供することができる。
即ち、情報処理プログラムは、物体の関節位置を推定することにより、姿勢の推定を行う。
【００１０】
具体的には、先ず、情報処理プログラムは、複数の関節を有する物体を含む、時間的に連続する複数フレームの画像を用いて、各フレームの物体の関節位置の確率分布を算出する。
ここで、複数の関節を有する物体とは、例えば、関節と関節につながれたパーツを有する動くものであれば特に制限はなく、例えば、人体、動物などの生物や、ロボット、クレーン車などの工業製品が挙げられる。
関節は、２以上のパーツを連結する連結部分である。関節の動きによりパーツの相対運動が可能となる。関節の種類としては、関節の動きの違いにより、例えば、ある軸を中心に回転する回転関節や、一方向に位置だけが変わるようにスライドする直動関節や、人体の股関節や肩関節のように球面で接するボールジョイントなどがある。
関節としては、例えば、人体の関節、動物の関節、ロボットの関節などがある。また、関節には、クレーン車などの工業製品における連結部も含まれる。
関節につながれるパーツは、相対運動を可能とする物体の構成要素であり、例えば、骨等の身体パーツ、骨や骨格等の生物パーツなどが挙げられる。骨格は、内骨格、外骨格いずれであってもよく、関節につながれたパーツには、節足動物や昆虫などの外骨格を含んでもよい。また、骨格は、工業製品における機械パーツであってもよい。
フレームとは、動画、又は連写により取得した画像の１コマ（静止画）を意味する。
関節位置の確率分布（以下、「関節位置確率分布」ともいう）を算出するとは、関節とその関節の画像情報から、予め学習することにより求められる関節位置確率分布関数を用いて、入力された画像における関節の確からしさを評価することである。
ここで、関節位置の確率分布とは、例えば、認識対象の関節が、画像のどこに存在するかの存在位置の確からしさを数値（スコア、例えば、確率）化したものをいう。
【００１１】
次に、情報処理プログラムは、異なるフレーム間の物体の同一関節の遷移情報を用いて、関節の遷移の整合性を評価することにより遷移スコアを算出する。
遷移情報は、同一関節における遷移前のフレームの位置から遷移後のフレームの位置に遷移した移動量と、関節の遷移毎の予め学習により求められる重み値とにより表現される関数で表され、後述する関節遷移スコア関数に対応する。
関節の遷移の整合性を評価するとは、関節遷移スコア関数を用いて、入力された画像における同一関節の遷移前のフレームの位置から遷移後のフレームの位置への遷移した確からしさを評価することである。評価とは、例えば、以下で記載する遷移スコアを求めることである。
遷移スコアは、異なるフレーム間の同一関節における関節の遷移の整合性から、各フレームにおける関節の位置の確からしさを数値（スコア）化したものである。遷移スコアは、例えば、同一関節の移動量と、関節遷移スコア関数における重み値の内積により求められる。
【００１２】
情報処理プログラムは、同一関節の遷移の整合性を評価するに際し、関節と関節につながれたパーツとを含む関節タイプを利用することにより、より詳細な関節位置を推定することができる。つまり、情報処理プログラムは、同一関節に着目し、遷移前のフレームにおける当該関節の位置及び関節タイプから、遷移後のフレームにおける当該関節の位置及び関節タイプに遷移した際の移動量をもとに、同一関節の遷移の整合性を評価する。これにより、情報処理プログラムは、より詳細に関節位置を推定することができ、物体の姿勢の推定精度を上げることができる。
関節タイプ（タイプを「ｔｙｐｅ」と表記することもある）とは、ある関節とその関節につながれたパーツのつながりの見え方で、関節とパーツの位置や向きの違いにより複数のパターン（タイプ）が予め設定されている。
関節タイプは、関節毎に所定の数、設定される。
尚、関節タイプを用いて関節の遷移の整合性を評価する場合、上記関節遷移スコア関数は、「関節タイプ遷移スコア関数」と読み替えることができる。
【００１３】
次に、情報処理プログラムは、関節位置確率分布のスコア（以下、「確率分布のスコア」ともいう）、及び遷移スコアから、複数の関節を有する物体の姿勢を推定する。
情報処理プログラムは、確率分布のスコアと遷移スコアとに基づき、フレーム内の関節の位置、及びフレーム間の関節の遷移の整合性を考慮した確からしい関節の位置を推定することができる。
具体的には、情報処理プログラムは、関節位置確率分布関数、及び関節遷移スコア関数から求められる全体スコア関数を用いることにより、姿勢の推定を行う。
情報処理プログラムは、関節位置確率分布関数から求められる確率分布のスコアの解候補と、関節遷移スコア関数から求められる遷移スコアの解候補とから、全体スコア関数の最大値を探索する。つまり、情報処理プログラムは、全体スコア関数を最大化する各関節の（ｘ、ｙ）を探索することで、最も確からしい各関節の位置を推定することができる。ここで、ｘはｘ座標、ｙはｙ座標を示す。
これにより、情報処理プログラムは、精度の高い物体の姿勢の推定を行うことができる。
【００１４】
さらに、情報処理プログラムは、各フレームの前記物体の関節同士の相対位置関係の整合性を評価することにより相対位置スコアを算出する。
関節同士の相対位置関係の整合性を評価するとは、関節間の相対位置関係から、予め学習することにより求められる関節相対位置スコア関数を用いて、入力された画像における関節間の相対位置の確からしさを評価することである。評価とは、例えば、以下で記載する相対位置スコアを算出することである。
相対位置スコアは、フレーム内の関節間における相対位置の整合性から、フレームにおける関節の位置の確からしさを数値（スコア）化したものである。
【００１５】
情報処理プログラムは、相対位置関係の整合性を評価するに際し、関節タイプを利用することにより、より詳細な関節位置を推定することができる。つまり、情報処理プログラムは、同一フレーム内における、ある関節とその関節につながれたパーツとを含むある関節の関節タイプと、その関節に隣り合う関節とその隣り合う関節につながれたパーツとを含む隣り合う関節の関節タイプとを比較する。これにより、情報処理プログラムは、ある関節とその関節に隣り合う関節との位置の整合性をより詳細に評価することができ、より詳細な関節位置の推定が可能となる。
上記により得られた相対位置スコアは、上記確率分布のスコア、及び上記遷移スコアとともに、姿勢推定に用いる。
【００１６】
確率分布のスコアと相対位置スコアと遷移スコアとを合わせると、情報処理プログラムは、フレーム内の関節の位置、フレーム内の関節間の相対位置の整合性、及びフレーム間の関節の遷移の整合性を考慮した最も確からしい関節の位置を推定することができる。
具体的には、情報処理プログラムは、関節位置確率分布関数、関節相対位置スコア関数、及び関節遷移スコア関数から求められる全体スコア関数を用いることにより、姿勢の推定を行う。
情報処理プログラムは、関節位置確率分布関数から求められる確率分布のスコアの解候補と、関節相対位置スコア関数から求められる相対位置スコアの解候補と、関節遷移スコア関数から求められる遷移スコアの解候補を用いる。情報処理プログラムは、これら解候補を用い、全体スコア関数の最大値を探索する。つまり、情報処理プログラムは、全体スコア関数を最大化する各関節の（ｘ、ｙ）を探索することで、最も確からしい関節の位置を推定することができる。
これにより、情報処理プログラムは、精度の高い物体の姿勢の推定が行える。
【００１７】
情報処理プログラムの好ましい態様として、関節タイプを用いて表される関節位置確率分布関数、関節相対位置スコア関数、及び関節タイプ遷移スコア関数から求められる全体スコア関数を用いて、姿勢推定を行う態様が挙げられる。
情報処理プログラムは、全体スコア関数を最大化する（ｘ、ｙ、ｔ）を探索することで、最も確からしい関節の位置を推定することができる。ここで、ｘはｘ座標、ｙはｙ座標、ｔはｔｙｐｅ；関節タイプを示す。
【００１８】
情報処理プログラムの好ましい態様として、上述したように、確率分布のスコア、相対位置スコア、及び遷移スコアを用いて物体の姿勢推定を行う態様が挙げられる。
もし、確率分布のスコアだけで物体の姿勢推定を行うとすると、例えば、図４で示すように、人体の姿勢推定において、次のような問題がある。確率分布のスコアだけの評価では、人体のつながりの制限を無視しているため、入力画像の背景に、他の人体が映っている場合には、その部分の確率が高くなってしまい、推定結果が悪化することがある。
【００１９】
また、もし、確率分布のスコアと相対位置スコアとで物体の姿勢推定を行うとすると、この手法では、１枚の静止画である１フレーム内での関節位置の整合性しか認識しておらず、姿勢の推定精度がフレーム内の情報に制限されてしまう。そのため、動画のような前後のフレームに関連性がある場合に（例えば、図５で示すようなフレームＮ及びフレームＮ＋１の画像に対し）、その相関する情報が活用できず、結果として、動画における各フレームの姿勢推定精度が低くなる。
【００２０】
本発明の情報処理プログラムは、遷移スコアを用いて、異なるフレーム間における関節位置の整合性も評価しているため、前後のフレームの関連性も考慮した関節の位置推定を行うことができる。これにより、情報処理プログラムは、物体の姿勢の推定精度の向上を図ることができる。
情報処理プログラムによるこれらの処理は、情報処理装置を構成する制御部を有するコンピュータを用いて実行される。
【実施例】
【００２１】
（第１の実施例）
以下、本発明の一実施例を説明するが、本発明は、この実施例に何ら限定されるものではない。
以下では、物体として人体を用いて説明する。
また、好ましい態様として、確率分布のスコア、相対位置スコア、及び遷移スコアを用いて姿勢を推定し、かつ関節タイプを用いて姿勢を推定する場合を例に、以下説明する。
【００２２】
（情報処理システム）
図１は、本発明の一実施例に係る情報処理装置２００を含む情報処理システム４００の構成を示す図である。
情報処理システム４００は、例えば、前後のフレームの関連性も考慮した関節の位置推定を行うことができ、複数の関節を有する人体の姿勢を高精度に推定することができる。情報処理システム４００は、学習装置１００、情報処理装置（以下、「姿勢推定装置」ともいう）２００を有する。
【００２３】
情報処理装置２００は、複数の関節を有する物体の姿勢を高精度に推定する装置である。
情報処理装置２００は、入力部２２０、制御部２３０、記憶部２４０、出力部２５０を有する。
制御部２３０は、情報処理装置２００のプロセッサ（図２のＣＰＵ２０１、及びＧＰＵ２０２）により情報処理プログラムを実行することで実現される。
【００２４】
学習装置１００は、情報処理プログラムを実行して姿勢推定を行う際、情報処理装置２００で使用する関節タイプ遷移モデル３２０を学習により生成する装置である。また、学習装置１００は、情報処理装置２００で使用する関節位置推定モデル３００や関節タイプ相対位置モデル３１０を生成してもよい。
学習装置１００は、学習データベース（学習ＤＢ）１２０と、モデル学習部１４０を有する制御部１３０と、出力部１５０と、を有する。
【００２５】
次に、情報処理装置２００について詳しく説明する。
＜情報処理装置＞
情報処理装置２００は、同一フレーム内だけでなく、前後のフレーム間の関連性も考慮した関節の位置推定を行い、人体の姿勢を推定する。
情報処理装置２００のハードウェア構成、及び機能構成について説明する。
【００２６】
＜＜情報処理装置のハードウェア構成＞＞
図２は、情報処理装置２００のハードウェア構成の一例を示すブロック図である。
図２で示すように、情報処理装置２００は、以下の各部を有する。各部は、バス２１０を介してそれぞれ接続されている。
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１は、種々の制御や演算を行う処理装置である。ＣＰＵ２０１は、主記憶装置２０３などが記憶するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やプログラムを実行することにより、種々の機能を実現する。すなわち、ＣＰＵ２０１は、本実施例では、情報処理プログラムを実行することにより、情報処理装置の制御部２３０として機能する。本実施例では、画像処理を行うため、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０２を有する。
また、ＣＰＵ２０１は、情報処理装置２００全体の動作を制御する。尚、本実施例では、情報処理装置２００全体の動作を制御する装置をＣＰＵ２０１をしたが、これに限ることなく、例えば、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などとしてもよい。
【００２７】
情報処理プログラムや各種モデルは、必ずしも主記憶装置２０３や、補助記憶装置２０４などに記憶されていなくともよい。インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などを介して、情報処理装置２００に接続される他の情報処理装置などに情報処理プログラムや各種モデルを記憶させてもよい。情報処理装置２００が、これら他の情報処理装置から情報処理プログラムや各種モデルを取得して実行するようにしてもよい。
主記憶装置２０３は、各種プログラムを記憶し、各種プログラムを実行するために必要なデータ等を記憶する。
主記憶装置２０３は、図示しない、ＲＯＭ（Ｒｅｅｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と、を有する。
ＲＯＭは、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）等の各種プログラム等を記憶している。
ＲＡＭは、ＲＯＭに記憶された各種プログラムがＣＰＵ２０１により実行される際に展開される作業範囲として機能する。ＲＡＭとしては、特に制限はなく、目的に応じて適宜選択することができる。ＲＡＭとしては、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などが挙げられる。
補助記憶装置２０４としては、各種情報を記憶できれば特に制限はなく、目的に応じて適宜選択することができ、例えば、ソリッドステートドライブ、ハードディスクドライブなどが挙げられる。また、補助記憶装置２０４は、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）ドライブ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）ドライブ、ＢＤ（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）ドライブなどの可搬記憶装置としてもよい。
【００２８】
出力装置２０５は、ディスプレイやスピーカーなどを用いることができる。ディスプレイとしては、特に制限はなく、適宜公知のものを用いることができ、例えば、液晶ディスプレイ、有機ＥＬディスプレイが挙げられる。
ＶＲＡＭ（Ｖｉｄｅｏ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０６は、モニタ等のディスプレイに画像表示するために必要なデータを保持するためのメモリ領域である。
入力装置２０７は、情報処理装置２００に対する各種要求を受け付けることができれば、特に制限はなく、適宜公知のものを用いることができ、例えば、キーボード、マウス、タッチパネルなどが挙げられる。
入力インターフェイス（入力Ｉ／Ｆ）２０８は、接続された外部デバイスとの間でデータの送受信を行う。本実施例では、入力Ｉ／Ｆ２０８には、外部デバイスとしてカメラ２０８ａが接続されており、入力Ｉ／Ｆ２０８は、カメラ２０８ａから送信された画像データをプロセッサに送信する。
通信インターフェイス（通信Ｉ／Ｆ）２０９は、特に制限はなく、適宜公知のものを用いることができ、例えば、無線又は有線を用いた通信デバイスなどが挙げられる。
以上のようなハードウェア構成によって、情報処理装置２００の処理機能を実現することができる。
【００２９】
＜＜情報処理装置の機能構成＞＞
図１に戻り、情報処理装置２００は、制御部２３０と、記憶部２４０と、を有する。制御部２３０は、情報処理装置２００全体を制御する。
制御部２３０は、確率分布算出部２６０と、相対位置スコア算出部２７０と、遷移スコア算出部２８０と、姿勢推定部２９０と、を有する。制御部２３０は、記憶部２４０に記憶されている各種モデルを用い、複数の関節を有する物体を含む画像に対し、物体の姿勢推定を行う。
記憶部２４０は、関節位置推定モデル３００と、関節タイプ相対位置モデル３１０と、関節タイプ遷移モデル３２０と、を有する。
【００３０】
＜＜＜確率分布算出部＞＞＞
確率分布算出部２６０は、関節位置推定モデル３００を用いて、画像における関節部分を認識し、その認識対象の関節が、画像のどこに存在するかの存在位置の確からしさを示す、スコア、本実施例では確率分布を算出する。なお、本実施例では、確率分布を算出するが、これに限ることなく、確からしさを示す数値を算出すればよい。
算出された確率分布は、姿勢推定部２９０の処理へと供される。
関節位置推定モデル３００は、上述した関節位置確率分布関数（φ（））で表現される。関節位置推定モデル３００は、後述する学習装置１００で学習することにより取得することができる。なお、関節位置推定モデル３００の取得はこれに限られず、例えば、事前に他の学習装置で準備されたものを用いても構わない。
【００３１】
図７を用いて、確率分布算出部２６０における関節位置確率分布を算出する処理手順を説明する。尚、図１９の人体の姿勢を推定する一例を示すフローチャートの図も参照して、以下説明する。
確率分布算出部２６０は、関節認識部３３を有する。関節認識部３３は、関節位置推定モデル３００を用い（ステップＳ１２０）、カメラ３１から入力された画像３２において、各関節部分を認識する。そして、確率分布算出部２６０は、その認識された関節が、画像のどこに存在するかの存在位置の確からしさを関節位置確率分布（φ）３４で表す（ステップＳ１４０、１５０）。
【００３２】
ここで、関節位置推定モデルで用いる人体モデルと関節位置確率分布との関係について説明する。
図３に人体のモデルを示す。図３では、例えば、人体の関節を「点」とし、隣り合う関節で接続されたパーツ（肢体や胴など）を「辺」とする。図３の例では、頭部を１番として、各関節に番号を振る。以下、この人体のグラフィカルモデルを用いて説明する。
図７において、確率分布算出部２６０は、カメラ３１で撮影した人体が映った画像３２に対し、関節位置推定モデル３００を用いて評価することにより、画像のどこに各関節が存在するかの確からしさを示すスコアを算出する。
この関節位置推定モデルには、ディープニューラルネットワーク（Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ：ＤＮＮ）やテンプレートマッチングなどを用いることができる。
本実施例では、ＤＮＮの１つの手法である、畳み込みニューラルネットワーク（Ｃｏｎｖｅｎｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ：ＣＮＮ）を用いる。
即ち、本実施例では、確率分布算出部２６０は、人体が映った画像と、ＣＮＮを用いた関節位置推定モデル３００との整合性を評価することで、画像のどこにＨｅａｄやＮｅｃｋといった関節が存在するかの確からしさを示すスコアを算出する。
関節位置推定モデル３００は、ＣＮＮを用いて、予め関節部位毎に学習を行うことで得られる。関節位置推定モデル３００は、記憶部２４０に記憶される。
確率分布算出部２６０は、入力された画像に対して、ＨｅａｄをＣＮＮにより学習した関節位置推定モデル３００を用いて、Ｈｅａｄの関節位置確率分布を求める。Ｈｅａｄと同様に他の関節についても、確率分布算出部２６０は、ＣＮＮにより学習した関節位置推定モデル３００を用いて、その他の関節の関節位置確率分布を求める。
例えば、Ｈｅａｄの関節位置確率分布において、確率が最大となる点が、その画像においてＨｅａｄの位置である確率が高い場所ということになる。確率分布算出部２６０は、それぞれの関節について、関節位置確率分布関数の最大値を探索することにより、関節の位置を推定する。
図６に関節位置確率分布の出力の様子を示す。関節位置確率分布は、それぞれの関節ごとに出力される。関節位置確率分布は、例えば、ヒートマップとして表すことができる。具体的には、例えば、確率が高い場所ほど色が赤く、確率が低い場所は青くなるよう表現することができる。
【００３３】
なお、上記では、確率分布算出部２６０が関節タイプを用いずに関節位置確率分布を算出する処理手順について説明した。但し、下記相対位置スコア算出部２７０、及び下記遷移スコア算出部２８０において、関節タイプを用いる場合には、確率分布算出部２６０においても関節タイプを用いることができる。関節タイプを用いる場合には、下記相対位置スコア算出部２７０で説明する図９で示される関節タイプ位置確率分布を用いる。
【００３４】
＜＜＜相対位置スコア算出部＞＞＞
相対位置スコア算出部２７０は、関節タイプ相対位置モデル３１０を用いて、フレーム内の物体の関節同士の相対位置関係の整合性を評価する。そして、相対位置スコア算出部２７０は、関節の存在位置の確からしさを、相対位置スコアとして算出する。
算出された相対位置スコアは、姿勢推定部２９０の処理へと供される。
関節タイプ相対位置モデル３１０は、上述した関節相対位置スコア関数（ψ（））で表現される。関節タイプ相対位置モデル３１０は、後述する学習装置で学習することにより得ることができる。なお、関節タイプ相対位置モデル３１０の取得手段はこれに限られず、例えば、事前に他の学習装置で準備されたものを用いても構わない。
【００３５】
図７に戻り、相対位置スコア３６を算出する処理手順について説明する。関節間の相対位置関係の整合性を、関節タイプを用いて評価する場合を例に説明する。尚、図１９の人体の姿勢を推定する一例を示すフローチャートの図も参照して、以下説明する。
相対位置スコア算出部２７０では、関節タイプ相対位置モデル３１０を用い（ステップＳ２１０）、入力された画像３２の同一フレーム内における、ある関節の関節タイプとその関節に隣り合う関節の関節タイプとの位置の整合性を評価する（ステップＳ２３０）。これにより、相対位置スコア算出部２７０は、関節タイプ間の相対位置から関節の存在位置の確からしさを評価し、その確からしさの度合いを相対位置スコア（ψ）３６として算出する（ステップＳ２４０）。
【００３６】
ここで、関節タイプ相対位置モデルで用いる関節タイプについて説明する。
関節タイプとは、上述したように、ある関節とその関節につながれたパーツのつながりの見え方を、予めパターンとして設定したものである。
人体の各関節について、複数の関節タイプを設定する。
図８の上部に、例えば、手首のタイプを示す。図８では、８方向を向いた８つの手首タイプを設定する。
図８の下部に肘のタイプと手首のタイプの比較を示す。例えば、下部左側の図では、肘のタイプと手首のタイプが一致していることが分かる。反対に下部右側の図では、肘のタイプと手首のタイプが一致していない。このように、関節毎に予め設定された関節タイプを用い、相対位置スコア算出部２７０は、隣り合う関節間の関節タイプの整合性を評価する。相対位置スコア算出部２７０は、関節タイプを用いて評価することで、人体としてあり得ない関節タイプの組合せを排除することができる。これにより、相対位置スコア算出部２７０は、確からしい関節位置を求めることができる。
図９に関節タイプを導入した場合の関節位置確率分布を示す。関節タイプ数がＴとすると、確率分布の数がＴ倍に増えることになる。
【００３７】
図１０に関節相対位置スコア関数を示す。関節相対位置スコア関数は、関節の相対位置が、その関節タイプに適合していれば値が大きくなる関数として表される。つまり、関節相対位置スコア関数は、関節タイプを用いて関節間の相対位置の整合性を評価し、整合性が取れていた場合には、図１０で示すように相対位置スコアが高くなるように出力される関数となっている。図１０の関節相対位置スコア関数は、関節間位置の差分Δとその自乗、及び２つの関節タイプを入力し、相対位置スコアを求める。
関節位置確率分布関数と関節相対位置スコア関数との線形結合により得られるスコア関数は、例えば、下記（１）式で表される。
【数１】
2019016106.tif 000003
上記（１）式は、関節位置確率分布から任意の関節タイプと座標を選択したときに、関節の存在位置の確からしさを評価する式である。最初の項は、関節位置の確率分布を評価しており、２番目の項は、関節の相対位置を評価している。この評価式を最大化するｘ、ｙ、ｔを求めることで、最も確からしい関節位置を求めることができる。ここで、ｘはｘ座標、ｙはｙ座標、ｔはｔｙｐｅ；関節タイプを示す。
【００３８】
＜＜＜遷移スコア算出部＞＞＞
遷移スコア算出部２８０は、関節タイプ遷移モデル３２０を用いて、異なるフレーム間における物体の同一関節の遷移の整合性を評価する。そして、同一関節の遷移の確からしさを、遷移スコアとして算出する。
算出された遷移スコアは、姿勢推定部２９０の処理へと供される。
尚、関節タイプ遷移モデル３２０は、上述した関節タイプ遷移スコア関数（ξ（））で表現される。関節タイプ遷移モデル３２０は、後述する学習装置１００で学習することにより得ることができる。学習装置１００についての説明は、後述する。
【００３９】
図７に戻り、遷移スコア３８を算出する処理手順について説明する。異なるフレーム間の関節の遷移の整合性を、関節タイプを用いて評価する場合を例に説明する。尚、図１９の人体の姿勢を推定する一例を示すフローチャートの図も参照して、以下説明する。
遷移スコア算出部２８０では、異なるフレーム間の物体の同一関節の遷移情報を用いて、関節の遷移の整合性を評価する。より具体的には、関節の遷移情報である関節タイプ遷移モデル３２０を用い（ステップＳ３１０）、入力された画像３２の異なるフレーム間における、同一関節について遷移前の位置及び関節タイプから遷移後の位置及び関節タイプへの遷移の整合性を評価する（ステップＳ３３０）。これにより、遷移スコア算出部２８０は、同一関節について遷移前後におけるその関節の存在位置の確からしさを評価し、その確からしさの度合いを遷移スコア（ξ）３８として算出する（ステップＳ３４０）。
【００４０】
遷移情報としての関節タイプ遷移モデル３２０は、予め収集した学習データを使って求められる。
関節タイプ遷移モデル３２０は、同一関節における遷移前のフレームの位置から遷移後のフレームの位置に遷移した移動量と、関節の遷移毎の予め学習により求められる重み値とにより表現される関節タイプ遷移スコア関数で表される。
遷移スコア算出部２８０は、関節タイプ遷移モデル３２０を用いて、入力された画像における関節タイプの遷移の整合性を評価することにより、遷移前後の関節の位置の確からしさの度合いを遷移スコアとして求める。
遷移スコアは、例えば、同一関節の移動量と、関節タイプ遷移スコア関数における重み値の内積により求められる。
【００４１】
以下に、関節タイプ遷移モデル３２０を作成する方法について説明する。
学習装置１００は、学習画像から、例えば、姿勢推定の対象とするフレームの前後のフレームにおける、各関節の位置及び関節タイプについての遷移情報及び移動量の情報を抽出する。
図１１に関節タイプの遷移と移動量の例を示す。図１１において、上部の左図がフレームＮ、上部の右図がフレームＮ＋１を示す。図１１の下部の図が、フレーム間での移動量を示す。ここでは、説明を簡単にするためＫｎｅｅとａｎｋｌｅのみ動きがあった場合を示す。
【００４２】
下記表１に関節タイプの遷移と移動量の算出の例を示す。
【表１】
2019016106.tif 000004
例えば、ｌ−ｋｎｅｅ（左膝）に着目した場合、時刻Ｎの関節の位置と関節タイプ（「タイプ」ともいう）が（ｘＮ、ｙＮ）  ｔｙｐｅ０であるとする。時刻Ｎ＋１の関節の位置とタイプが（ｘＮ＋１、ｙＮ＋１）  ｔｙｐｅ１であるとする。これらの情報からｌ−ｋｎｅｅの移動量とｔｙｐｅ遷移（あるタイプからあるタイプへの遷移情報）は、次のようになる。移動量：（ΔｘＮ、ΔｘＮ２、ΔｙＮ、ΔｙＮ２）、ｔｙｐｅ遷移:ｔｙｐｅ０→ｔｙｐｅ１。ここで、ΔｘＮ＝（ｘＮ＋１−ｘＮ）、ΔｙＮ＝（ｙＮ＋１−ｙＮ）である。このようにして、関節位置の移動量とｔｙｐｅ遷移を定義する。
【００４３】
次に、学習データセットの生成について説明する。ここで、学習対象の動画のフレームには、人体の各関節の位置とタイプ、および関節番号が対応付けされているものとする。
図１２に対応付けの例を示す。図１２中、ｘ、ｙは画像中の位置を示す。
図１３に学習データセットの抽出の例を示す。例えば、すべての画像フレーム間で、各関節それぞれのｔｙｐｅ遷移と移動量を抽出することで学習データセットを取得する。図１４に学習データセットを抽出してデータベース化したもの（以下、「ｔｙｐｅ遷移ＤＢ」ともいう）を示す。移動量を各関節と各タイプ間の遷移ごとにまとめた学習データセットを作成する。図１４に、例えば、タイプが８種類とした場合のｔｙｐｅ遷移ＤＢの一部を示す。これにより、学習に用いる各関節の移動量とｔｙｐｅ遷移を格納したｔｙｐｅ遷移ＤＢを定義する。
【００４４】
次に、これまで定義した関節位置の移動量とｔｙｐｅ遷移、およびそれらを抽出したｔｙｐｅ遷移ＤＢを用いて関節推定を行う関節タイプ遷移スコア関数を定義する。
関節タイプ遷移スコア関数は、例えば、下記（２）式で表される。
【数２】
2019016106.tif 000005
関節タイプ遷移スコア関数は、前後するフレームにおいて、着目した関節の移動量とｔｙｐｅ遷移を評価するものである。ある入力された画像に対して、関節の移動量とｔｙｐｅ遷移が学習した結果と相関が高い場合に値が大きくなる関数として表される。
【００４５】
ξの式を下記（３）式に示す。
【数３】
2019016106.tif 000006
ξは、同一関節における移動量と、関節タイプ遷移スコア関数における重み値ｗのベクトルとの内積により表される。重み値ｗ（ｗ１、ｗ２、ｗ３、ｗ４）は、ｔｙｐｅ遷移ＤＢを用いて学習することで決める。
ｗを決める手法は、既存の学習手法を用いることが可能であり、例えば、最小二乗法、ＧＡ（Ｇｅｎｅｔｉｃ  Ａｌｇｏｒｉｔｈｍ）、Ｓｉｍｕｌａｔｅｄ  Ａｎｎｅａｌｉｎｇといった手法が挙げられる。ｗを決める手法は問わない。
【００４６】
図１５にｈｅａｄにおける重みｗと関節タイプとの関係を示す。図１５の上部が遷移後のｈｅａｄ  ｔｙｐｅを示し、下部が遷移前のｈｅａｄ  ｔｙｐｅを示す。すべての遷移(図１５中矢印)に対して、それぞれ異なる重みｗ１、ｗ２、ｗ３、ｗ４を学習して決める。このｗをＨｅａｄ同士だけでなく、Ｎｅｃｋ同士、Ｓｈｏｕｌｄｅｒ  Ｒｉｇｈｔ同士などすべての関節同士で学習して決める。
学習データから抽出した移動量とｔｙｐｅ遷移から学習し、関節タイプ遷移スコア関数の重み値ｗを決める。関節タイプ遷移スコア関数はこのようにして求める。
遷移スコア算出部２８０は、関節タイプ遷移スコア関数を利用することにより、異なるフレーム間における同一関節間の遷移位置の整合性を評価する。遷移スコア算出部２８０において、整合性が取れていた場合には、高い遷移スコアが出力される。
【００４７】
＜＜＜姿勢推定部＞＞＞
姿勢推定部２９０は、上記により得られた確率分布のスコア、相対位置スコア、及び遷移スコアをもとに、最も確からしい関節の位置を推定する。
より具体的には、姿勢推定部２９０は、関節位置確率分布関数、関節相対位置スコア関数、及び関節タイプ遷移スコア関数を線形結合することで求められる全体スコア関数を用いることにより、姿勢の推定を行う。
【００４８】
図７に戻り、姿勢推定部２９０における処理手順について説明する。なお、図１９の人体の姿勢を推定する一例を示すフローチャートの図も参照して、以下説明する。
姿勢推定部２９０は、関節位置確率分布関数から求められる確率分布のスコアの解候補と、関節相対位置スコア関数から求められる相対位置スコアの解候補と、関節タイプ遷移スコア関数から求められる遷移スコアの解候補を用いる。姿勢推定部２９０は、これら解候補を用い、全体スコア関数の最大値を探索する（ステップＳ４１０）。
つまり、姿勢推定部２９０は、全体スコア関数を最大化する（ｘ、ｙ、ｔ）を探索する。
姿勢推定部２９０は、全体スコア関数の最大値を探索することで、フレーム内の関節の位置、フレーム内の関節間の相対位置の整合性、及びフレーム間の関節の遷移の整合性を考慮した最も確からしい関節の位置を推定する。これにより、姿勢推定部２９０は、姿勢推定の結果を出力する（ステップＳ４２０）。
姿勢推定部２９０は、精度の高い人体の姿勢推定を行うことができる。
【００４９】
上記（３）式で定義した関節タイプ遷移スコア関数を含む全体スコア関数を、下記（４）式に示す。全体スコア関数Ｆは、関節位置確率分布関数、関節相対位置スコア関数、及び関節タイプ遷移スコア関数を線形結合した関数である。
【数４】
2019016106.tif 000007
姿勢推定部２９０は、全体スコア関数のスコアが最も高くなるような、関節の位置を探索することで、最も確からしい関節位置を推定することができる。
【００５０】
図１６は、全体スコア関数Ｆの最大値を探索する処理の流れを示す。
図１６に示すように、関節位置確率分布（φ）のスコアの解候補、相対位置スコア（ψ）の解候補、遷移スコア（ξ）の解候補を用い、全体スコア関数Ｆに対して、Ｆを最大化する（ｘ、ｙ、ｔ）を探索する。
Ｆを最大化する（ｘ、ｙ、ｔ）の探索は、最も単純には全探索を用いればよい。全探索では探索に掛かる時間が長い場合、例えば、モンテカルロ、ｍａｘ−ｓｕｍ、ＥＭ（Ｅｘｐｅｃｔａｔｉｏｎ−Ｍａｘｉｍｉｚａｔｉｏｎ）、ＧＡなどのアルゴリズムを用いることができるが、評価式を最大化し（ｘ、ｙ、ｔ）を求める手法はどんなものを用いてもかまわない。
【００５１】
本実施例では、相対位置スコア算出部２７０、及び遷移スコア算出部２８０において、関節タイプを用いて整合性を評価するため、確率分布算出部２６０では、関節タイプの関節位置推定モデル３００を用いる。
姿勢推定部２９０において、Ｆを最大化する（ｘ、ｙ、ｔ）を探索し、関節の位置と関節タイプの推定結果から、最も確からしい関節の位置３９を推定する。これにより、姿勢推定部２９０は、人体の姿勢の推定結果を出力することができる（ステップＳ４２０）。
【００５２】
次に、学習装置１００について説明する。
＜学習装置＞
学習装置１００は、学習により関節タイプ遷移モデル３２０を生成する。また、学習装置１００は、関節タイプ遷移モデル３２０の他、関節位置推定モデル３００や関節タイプ相対位置モデル３１０を生成してもよい。
学習装置１００のハードウェア構成としては、上述した情報処理装置２００と同様に、ＣＰＵ、主記憶装置、補助記憶装置、入力装置、出力装置、通信Ｉ／Ｆの各部を有する。これらの各部は、バスを介してそれぞれ接続されている。
ＣＰＵ、主記憶装置、補助記憶装置、入力装置、出力装置、通信Ｉ／Ｆの各部についての説明は、上述した情報処理装置２００と同様であるため、説明を省略する。
尚、学習装置１００は、ネットワーク上のコンピュータ群であるクラウドの一部であってもよい。
【００５３】
＜＜学習装置の機能構成＞＞
図１に戻り、学習装置１００の機能構成について説明する。
学習装置１００は、制御部１３０と、出力部１５０とを有する。
制御部１３０は、学習装置１００全体を制御する。
制御部１３０は、モデル学習部１４０を有する。
モデル学習部１４０は、学習データベース（学習ＤＢともいう）１２０に記憶されている学習データを用いて、学習により関節タイプ遷移モデル３２０を生成する。
学習ＤＢには、上述したｔｙｐｅ遷移ＤＢの情報も含まれる。
関節タイプ遷移モデル３２０の生成処理については、上述したとおりである。
モデル学習部１４０による学習の結果、得られた関節タイプ遷移モデル３２０は、出力部１５０により、情報処理装置２００へ出力される。
【００５４】
図１９は、情報処理装置により、人体の姿勢を推定する処理の流れの一例を示すフローチャートである。以下、図１、図７、及び図１６を参照して説明する。
【００５５】
ステップＳ１１０では、情報処理装置２００の入力部２２０は、人体が写っている動画（複数フレームからなる画像）を取得し、処理をＳ１２０に移行する。
【００５６】
ステップＳ１２０では、情報処理装置２００の確率分布算出部２６０は、記憶部２４０に記憶されている関節位置推定モデル３００を読み込んで取得し、処理をＳ１３０に移行する。
【００５７】
ステップＳ１３０では、確率分布算出部２６０は、ステップＳ１２０で読み込んだ関節位置推定モデル３００を判別するためのモデルインデックスｋを０に初期化し、処理をＳ１４０に移行する。
【００５８】
ステップＳ１４０では、確率分布算出部２６０の関節認識部３３は、関節位置推定モデル３００を用いて、入力された画像のフレーム内における関節位置を評価し、処理をＳ１５０に移行する。
【００５９】
ステップＳ１５０では、確率分布算出部２６０の関節認識部３３は、ステップＳ１４０での関節位置の評価をもとに、関節が画像のどこに存在するかの存在位置の確からしさを表した関節位置確率分布φ３４を算出し、処理をＳ１６０に移行する。
【００６０】
ステップＳ１６０では、確率分布算出部２６０は、関節位置確率分布φ３４を算出する処理を全ての関節に対し行なったか否かを判定し、全ての処理が終わっている場合には、処理をＳ２１０に移行する。確率分布算出部２６０は、全ての処理が終わっていない場合には、ｋ＋１とし、処理をＳ１４０に戻し、未処理の関節について関節位置確率分布φ３４を算出する処理を継続する。
【００６１】
ステップＳ２１０では、情報処理装置２００の相対位置スコア算出部２７０は、記憶部２４０に記憶されている関節タイプ相対位置モデル３１０を読み込んで取得し、処理をＳ２２０に移行する。
【００６２】
ステップＳ２２０では、相対位置スコア算出部２７０は、ステップＳ２１０で読み込んだ関節タイプ相対位置モデル３１０を判別するためのモデルインデックスｍを０に初期化し、処理をＳ２３０に移行する。
【００６３】
ステップＳ２３０では、相対位置スコア算出部２７０の相対位置整合性評価部３５は、関節タイプ相対位置モデル３１０を用いて、入力された画像のフレーム内における隣り合う関節の関節タイプの相対位置関係の整合性を評価し、処理をＳ２４０に移行する。
【００６４】
ステップＳ２４０では、相対位置スコア算出部２７０の相対位置整合性評価部３５は、ステップＳ２３０での評価をもとに、関節タイプ間の相対位置から関節の存在位置の確からしさを表した相対位置スコアψ３６を算出し、処理をＳ２５０に移行する。
【００６５】
ステップＳ２５０では、相対位置スコア算出部２７０は、相対位置スコアψ３６を算出する処理を全ての関節に対し行なったか否かを判定し、全ての処理が終わっている場合には、処理をＳ３１０に移行する。相対位置スコア算出部２７０は、全ての処理が終わっていない場合には、ｍ＋１とし、処理をＳ２３０に戻し、未処理の関節について関節タイプを用いた評価を行ない、相対位置スコアψ３６を算出する処理を継続する。
【００６６】
ステップＳ３１０では、情報処理装置２００の遷移スコア算出部２８０は、記憶部２４０に記憶されている関節タイプ遷移モデル３２０を読み込んで取得し、処理をＳ３２０に移行する。
【００６７】
ステップＳ３２０では、遷移スコア算出部２８０は、ステップＳ３１０で読み込んだ関節タイプ遷移モデル３２０を判別するためのモデルインデックスｎを０に初期化し、処理をＳ３３０に移行する。
【００６８】
ステップＳ３３０では、遷移スコア算出部２８０の遷移整合性評価部３７は、関節タイプ遷移モデル３２０を用いて、入力された画像の異なるフレーム間の同一関節における関節タイプの遷移の整合性を評価し、処理をＳ３４０に移行する。
【００６９】
ステップＳ３４０では、遷移スコア算出部２８０の遷移整合性評価部３７は、ステップＳ３３０での評価をもとに、同一関節について遷移前後におけるその関節の存在位置の確からしさを表した遷移スコアξ３８を算出し、処理をＳ３５０に移行する。
【００７０】
ステップＳ３５０では、遷移スコア算出部２８０は、遷移スコアξを算出する処理を全ての関節に対し行なったか否かを判定し、全ての処理が終わっている場合には、処理をＳ４１０に移行する。遷移スコア算出部２８０は、全ての処理が終わっていない場合には、ｎ＋１とし、処理をＳ３３０に戻し、未処理の関節について関節タイプを用いた評価を行ない遷移スコアξを算出する処理を継続する。
【００７１】
ステップＳ４１０では、情報処理装置２００の姿勢推定部２９０は、関節位置確率分布関数と関節相対位置スコア関数と関節タイプ遷移スコア関数とを線形結合することにより得られた全体スコア関数を用いて、関節の位置を推定する。姿勢推定部２９０では、関節位置確率分布関数から求められる確率分布のスコアの解候補と、関節相対位置スコア関数から求められる相対位置スコアの解候補と、関節タイプ遷移スコア関数から求められる遷移スコアの解候補を用いる。
ステップＳ４１０では、姿勢推定部２９０は、これら解候補を用い、全体スコア関数の最大値を探索し、処理をＳ４２０に移行する。ステップＳ４１０では、姿勢推定部２９０は、全体スコア関数Ｆを最大化する（ｘ、ｙ、ｔ）を探索する。
【００７２】
ステップＳ４２０では、姿勢推定部２９０は、Ｓ４１０での最大値探索による関節の位置と関節タイプの推定結果から、最も確からしい関節の位置を推定する。これにより、姿勢推定部２９０は、人体の姿勢の推定結果を出力し、本処理を終了する。
【００７３】
（第２の実施例）
第１の実施例においては、関節の位置の特定において、ｘ座標とｙ座標を用いたが、さらに深度のｚ座標を用いて関節の位置を特定してもよい。ここで、ｚは、深度画像を用いた場合の深度値を示す。
第２の実施例は、第１の実施例において、関節の位置を（ｘ、ｙ、ｚ）で特定した以外は、第１の実施例と同様である。このため、既に説明した第１の実施例と同じ構成については、その説明を省略する。
以下、第１の実施例と異なる点を中心に説明する。
【００７４】
下記表２に関節タイプの遷移と移動量の算出の例を示す。
【表２】
2019016106.tif 000008
例えば、ｌ−ｋｎｅｅ（左膝）に着目した場合、時刻Ｎの関節の位置とタイプが（ｘＮ、ｙＮ、ｚＮ）  ｔｙｐｅ０であるとする。時刻Ｎ＋１の関節の位置とタイプが（ｘＮ＋１、ｙＮ＋１、ｚＮ＋１）  ｔｙｐｅ１であるとする。これらの情報からｌ−ｋｎｅｅの移動量とｔｙｐｅ遷移は、次のようになる。移動量：（ΔｘＮ、ΔｘＮ２、ΔｙＮ、ΔｙＮ２、ΔｚＮ、ΔｚＮ２）、ｔｙｐｅ遷移:ｔｙｐｅ０→ｔｙｐｅ１。ここで、ΔｘＮ＝（ｘＮ＋１−ｘＮ）、ΔｙＮ＝（ｙＮ＋１−ｙＮ）、ΔｚＮ＝（ｚＮ＋１−ｚＮ）である。このようにして、関節位置の移動量とｔｙｐｅ遷移を定義する。
学習対象の動画のフレームには、人体の各関節の位置とタイプ、および関節番号が対応付けされている。図１７に対応付けの例を示す。図１７中、ｘ、ｙ、ｚは画像中の位置を示す。ｚの単位はｍｍであり、例えば、３，０００はカメラからｚ軸方向に３メートル上に位置する平面上にその関節があることを示している。ｚの単位は一例であり、使用する深度カメラによって異なる。
【００７５】
位置の特定に深度ｚの条件も加えた場合のξの式を下記（５）式に示す。
【数５】
2019016106.tif 000009
ξは、同一関節における移動量と、関節タイプ遷移スコア関数における重み値ｗのベクトルとの内積により表される。重み値ｗ（ｗ１、ｗ２、ｗ３、ｗ４、ｗ５、ｗ６）は、ｔｙｐｅ遷移ＤＢを学習することで決める。
深度ｚの条件も考慮した場合の全体のスコア関数は、下記（６）式のようになる。
【数６】
2019016106.tif 000010
上記（６）式で示される関節位置確率分布関数（φ（））、関節相対位置スコア関数（ψ（））、関節タイプ遷移スコア関数（ξ（））の３つの項を持つ全体スコア関数Ｆに対して、Ｆを最大化する（ｘ、ｙ、ｚ、ｔ）を探索する。ここで、ｘ、ｙ、ｚは関節の位置を、ｔは関節タイプを示す。
情報処理装置２００は、全体スコア関数のスコアが最も高くなるような、関節の位置を探索することで、最も確からしい関節位置を推定することができる。
これにより、情報処理装置２００は、深度ｚも考慮した人体の姿勢の推定結果を得ることができる。
上記深度ｚの条件を加えた以外、他の要件については、第１の実施例で記載したとおりである。
【００７６】
（第３の実施例）
第１の実施例では、確率分布のスコア、相対位置スコア、及び遷移スコアを用い、姿勢推定する実施態様について記載した。但し、関節の遷移情報を利用して人体の姿勢を推定するという観点からは、確率分布のスコア、及び遷移スコアを用い、姿勢推定してもよい。
第３の実施例は、第１の実施例において、確率分布のスコア、及び遷移スコアから人体の姿勢を推定した以外は、第１の実施例と同様である。
以下、第１の実施例と異なる点を中心に説明する。
【００７７】
関節位置確率分布関数（φ（））、及び関節タイプ遷移スコア関数（ξ（））を線形結合することにより得られるスコア関数は、下記（７）式のようになる。
【数７】
2019016106.tif 000011
上記（７）式で示されるスコア関数に対して、スコア関数のスコアが最も高くなるような、関節の位置を探索する。
これにより、情報処理装置２００は、フレーム内の関節タイプの位置、及びフレーム間の関節タイプの遷移の整合性を考慮した最も確からしい関節の位置を推定することができる。
これにより、情報処理装置２００は、人体の姿勢の推定結果を得ることができる。
確率分布のスコア、及び遷移スコアを用いて関節の位置を求めること以外、他の要件については、第１の実施例で記載したとおりである。
【００７８】
（第４の実施例）
第１の実施例では、関節タイプを用いて姿勢推定する実施態様について記載した。但し、相対位置スコアを算出する際、関節タイプを用いなくても、ある関節と隣り合う関節との相対位置関係の整合性を評価してもよい。また、遷移スコアを算出する際、関節タイプを用いなくても、異なるフレーム間における同一関節の遷移の整合性を評価してもよい。
第４の実施例は、第１の実施例において、関節タイプを用いずに、人体の姿勢を推定した以外は、第１の実施例と同様である。
以下、第１の実施例と異なる点を中心に説明する。
【００７９】
第４の実施例では、第１の実施例で用いた関節位置推定モデル３００、関節タイプ相対位置モデル３１０、関節タイプ遷移モデル３２０の各モデルを以下のモデルに変える。第４の実施例では、関節タイプを用いずに学習により得られた関節位置推定モデル３００ａ、関節相対位置モデル３１０ａ、関節遷移モデル３２０ａを用いる。
これらモデルを用いることにより、得られた関節位置確率分布関数（φ（））、関節相対位置スコア関数（ψ（））、関節遷移スコア関数（ξ（））の３つの項を持つ全体のスコア関数は、下記（８）式のようになる。
【数８】
2019016106.tif 000012
上記（８）式で示される全体のスコア関数に対して、スコア関数のスコアが最も高くなるような、関節の位置を探索する。つまり、上記（８）式のスコア関数Ｆを最大化する（ｘ、ｙ、ｔａ、ｎ）を探索する。ここで、ｘ、ｙは関節の位置を、ｔａは関節を、ｎはフレームを示す。尚、上記（８）式の関数においてｔａ（関節）は、上記（４）式の関数において、関節タイプの数を１つにした場合に相当する。
これにより、情報処理装置２００は、フレーム内の関節の位置、及びフレーム間の関節の遷移の整合性を考慮した最も確からしい関節の位置を推定することができる。これにより、情報処理装置２００は、人体の姿勢の推定結果を得る。
関節タイプを用いずに関節位置を推定した以外、他の要件については、第１の実施例で記載したとおりである。
【００８０】
（第５の実施例）
第１の実施例に対し、遷移スコアを算出する際、姿勢を推定する画像、及びその画像に対し、前のフレーム及び後ろのフレームの少なくともいずれかの画像から選択される２フレーム以上の画像を用いることにより、姿勢を推定してもよい。
第５の実施例は、前のフレーム又は後ろのフレームを用いるだけでなく、前後Ｎ（Ｎ＝２、３、４、‥）フレームの画像を用いて、遷移スコアを算出し、人体の姿勢を推定した以外は、第１の実施例と同様である。
以下、第１の実施例と異なる点を中心に説明する。
【００８１】
関節位置確率分布関数（φ（））、関節相対位置スコア関数（ψ（））、関節タイプ遷移スコア関数（ξ（））を線形結合することにより得られる全体のスコア関数は、例えば、下記式（９）のようになる。
【数９】
2019016106.tif 000013
上記（９）式で示される全体のスコア関数に対して、スコア関数のスコアが最も高くなるような、関節の位置を探索する。つまり、（９）式のスコア関数Ｆを最大化する（ｘ、ｙ、ｔ、ｎ）を探索する。
第１の実施例では、ξは対象とするフレームと、そのフレームの前のフレームとをもとに遷移スコアを計算していた。
但し、上記（９）式で示すように、対象とするフレームに対し、後のフレーム、或いは、２フレーム前のフレーム、又は２フレーム後のフレームを用いて、遷移スコアを算出してもよい。
遷移スコアを算出する際に使用するフレーム数を変えること以外、他の要件については、第１の実施例で記載したとおりである。
【００８２】
（第６の実施例）
第１の実施例に対し、遷移スコアを算出する際、姿勢を推定する画像、及びその画像に対し、前のフレーム及び後ろのフレームの少なくともいずれかの画像から選択される１フレーム以上の画像を用いるとき、以下の態様としてもよい。各フレームにおける関節タイプ遷移スコア関数を線形結合し全体スコア関数を得る際、フレーム毎に設定した重み係数を乗じてもよい。これにより、全体スコア関数への前後フレームの関節タイプ遷移スコア関数の影響を調整することができる。
第６の実施例は、前後フレームにおける関節タイプ遷移スコア関数に重み係数を乗じ、全体スコア関数を求め、その全体スコア関数を用いて遷移スコアを算出した以外は、第１の実施例と同様である。
以下、第１の実施例と異なる点を中心に説明する。
【００８３】
関節位置確率分布関数（φ（））、関節相対位置スコア関数（ψ（））、関節タイプ遷移スコア関数（ξ（））を線形結合することにより得られる全体のスコア関数は、例えば、下記（１０）式のようになる。
【数１０】
2019016106.tif 000014
関節タイプ遷移スコア関数には、上記（１０）式で示すように、ハイパーパラメータ（α、β、γ、δ）を掛けてもよい。例えば、前後フレームとのスコアを重視する場合はα＝１、β＝１、γ＝０．５、δ＝０．５などとしてもよい。また、２つ前のフレームや２つ後のフレームとのスコアも重視する場合は、α＝０．５、β＝０．５、γ＝０．５、δ＝０．５などとしてもよい。
遷移スコアを算出する際に、使用する前後フレームの関節タイプ遷移スコア関数に係数を乗じること以外、他の要件については、第１の実施例で記載したとおりである。
【００８４】
（第７の実施例）
第１の実施例の情報処理装置を用いると、図１８に示すようなオクルージョンに対しても、隠れた関節の位置を高精度に推定することができ、人体の姿勢を推定することができる。
オクルージョンとは、手前にある物体が背後にある物体を隠して見えないようにする状態が発生することをいう。
図１８で示すように、ｒ−ｈａｎｄのｔｙｐｅ遷移を学習した関節タイプ遷移スコア関数を用いると、オクルージョンがある場合にも隠れた関節の位置を高精度に推定することができる。
【００８５】
以上説明したように、情報処理装置は、前後のフレームの関連性も考慮した関節の位置推定を行うことにより、複数の関節を有する物体の姿勢を高精度に推定することができる。
情報処理装置は、人体の姿勢を高精度に推定することができるため、例えば、体操やダンスなどの競技採点時における採点補助の手段として利用することができる。
【００８６】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
複数の関節を有する物体を含む、時間的に連続する複数フレームの画像を用いて、各フレームの前記物体の関節位置の確率分布を算出し、
異なるフレーム間の前記物体の同一関節の遷移情報を用いて、関節の遷移の整合性を評価することにより遷移スコアを算出し、
前記確率分布のスコア、及び前記遷移スコアから、前記複数の関節を有する物体の姿勢を推定する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
（付記２）
前記遷移スコアを算出する際、関節と関節につながれたパーツとを含む関節タイプを用いて、関節タイプの遷移の整合性を評価する、
ことを特徴とする、付記２に記載の情報処理プログラム。
（付記３）
前記確率分布のスコア、及び前記遷移スコアを線形結合し、前記複数の関節を有する物体の姿勢を推定する
ことを特徴とする、付記１又は２に記載の情報処理プログラム。
（付記４）
各フレームの前記物体の関節同士の相対位置関係の整合性を評価することにより相対位置スコアを算出し、
前記確率分布のスコア、及び前記遷移スコアに、前記相対位置スコアを加え、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、付記１から３のいずれか一項に記載の情報処理プログラム。
（付記５）
前記相対位置スコアを算出する際、関節と関節につながれたパーツとを含む関節タイプを用いて、関節タイプ間の整合性を評価する、
ことを特徴とする、付記４に記載の情報処理プログラム。
（付記６）
前記確率分布のスコア、前記相対位置スコア、及び前記遷移スコアを線形結合し、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、付記４又は５に記載の情報処理プログラム。
（付記７）
前記遷移スコアを用いて前記物体の姿勢を推定する際、姿勢を推定する画像、及びその画像に対し、前のフレーム及び後ろのフレームの少なくともいずれかの画像から選択される２フレーム以上の画像を用いることにより、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、付記１から６のいずれか一項に記載の情報処理プログラム。
（付記８）
前記遷移スコアを用いて前記物体の姿勢を推定する際、姿勢を推定する画像、及びその画像に対し、前のフレーム及び後ろのフレームの少なくともいずれかの画像から選択される１フレーム以上の画像を用いるとき、フレーム毎に設定した重み係数を乗じてスコアを算出することにより、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、付記１から７のいずれか一項に記載の情報処理プログラム。
（付記９）
複数の関節を有する物体を含む、時間的に連続する複数フレームの画像を用いて、各フレームの前記物体の関節位置の確率分布を算出する確率分布算出部と、
異なるフレーム間の前記物体の同一関節の遷移情報を用いて、関節の遷移の整合性を評価することにより遷移スコアを算出する遷移スコア算出部と、
前記確率分布のスコア、及び前記遷移スコアから、前記複数の関節を有する物体の姿勢を推定する姿勢推定部と、
を有することを特徴とする情報処理装置。
（付記１０）
各フレームの前記物体の関節同士の相対位置関係の整合性を評価することにより相対位置スコアを算出する相対位置スコア算出部を有し、
前記確率分布のスコア、及び前記遷移スコアに、前記相対位置スコアを加え、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、付記９に記載の情報処理装置。
（付記１１）
複数の関節を有する物体を含む、時間的に連続する複数フレームの画像を用いて、各フレームの前記物体の関節位置の確率分布を算出し、
異なるフレーム間の前記物体の同一関節の遷移情報を用いて、関節の遷移の整合性を評価することにより遷移スコアを算出し、
前記確率分布のスコア、及び前記遷移スコアから、前記複数の関節を有する物体の姿勢を推定する、
処理をコンピュータが実行することを特徴とする情報処理方法。
（付記１２）
各フレームの前記物体の関節同士の相対位置関係の整合性を評価することにより相対位置スコアを算出し、
前記確率分布のスコア、及び前記遷移スコアに、前記相対位置スコアを加え、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、付記１１に記載の情報処理方法。
（付記１３）
複数の関節を有する物体を含む、時間的に連続する複数フレームの画像を用いて、各フレームの前記物体の関節位置の確率分布を算出する確率分布算出部と、
異なるフレーム間の前記物体の同一関節の遷移情報を用いて、関節の遷移の整合性を評価することにより遷移スコアを算出する遷移スコア算出部と、
前記確率分布のスコア、及び前記遷移スコアから、前記複数の関節を有する物体の姿勢を推定する姿勢推定部と、を有する情報処理装置と、
前記情報処理装置の前記遷移スコア算出部で使用する、関節の遷移の整合性を評価するための前記物体の同一関節の遷移情報を制御部で学習し、学習した前記物体の同一関節の遷移情報を前記情報処理装置に出力する学習装置と、
を有することを特徴とする情報処理システム。
（付記１４）
前記情報処理装置が、各フレームの前記物体の関節同士の相対位置関係の整合性を評価することにより相対位置スコアを算出する相対位置スコア算出部を有し、
前記姿勢推定部において、前記確率分布のスコア、及び前記遷移スコアに、前記相対位置スコアを加え、前記複数の関節を有する物体の姿勢を推定する、
ことを特徴とする、付記１３に記載の情報処理システム。
【符号の説明】
【００８７】
１００    学習装置
１３０    学習装置の制御部
１５０    学習装置の出力部
２００    情報処理装置（姿勢推定装置）
２２０    情報処理装置の入力部
２３０    情報処理装置の制御部
２４０    情報処理装置の記憶部
２５０    情報処理装置の出力部
４００    情報処理システム
【図１】
2019016106.tif 000015
【図２】
2019016106.tif 000016
【図３】
2019016106.tif 000017
【図４】
2019016106.tif 000018
【図５】
2019016106.tif 000019
【図６】
2019016106.tif 000020
【図７】
2019016106.tif 000021
【図８】
2019016106.tif 000022
【図９】
2019016106.tif 000023
【図１０】
2019016106.tif 000024
【図１１】
2019016106.tif 000025
【図１２】
2019016106.tif 000026
【図１３】
2019016106.tif 000027
【図１４】
2019016106.tif 000028
【図１５】
2019016106.tif 000029
【図１６】
2019016106.tif 000030
【図１７】
2019016106.tif 000031
【図１８】
2019016106.tif 000032
【図１９】
2019016106.tif 000033