(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-04
(45)【発行日】2024-10-15
(54)【発明の名称】ポーズデータ生成装置、ポーズデータ生成方法、および、プログラム
(51)【国際特許分類】
G06T 7/00 20170101AFI20241007BHJP
G06T 7/277 20170101ALI20241007BHJP
【FI】
G06T7/00 660B
G06T7/277
(21)【出願番号】P 2021075863
(22)【出願日】2021-04-28
【審査請求日】2024-01-15
(73)【特許権者】
【識別番号】591128453
【氏名又は名称】株式会社メガチップス
(74)【代理人】
【識別番号】100143498
【氏名又は名称】中西 健
(74)【代理人】
【識別番号】100136319
【氏名又は名称】北原 宏修
(74)【代理人】
【識別番号】100148275
【氏名又は名称】山内 聡
(74)【代理人】
【識別番号】100142745
【氏名又は名称】伊藤 世子
(72)【発明者】
【氏名】松本 真人
【審査官】藤原 敬利
(56)【参考文献】
【文献】特開2017-097577(JP,A)
【文献】中国特許出願公開第111339903(CN,A)
【文献】中国特許出願公開第111310625(CN,A)
【文献】YU Cheng et al.,Occlusion-Aware Networks for 3D Human Pose Estimation in Video,2019 IEEE/CVF International Conference on Computer Vision( ICCV),IEEE,2019年,pp. 723-732
【文献】DARIO Pavllo et al.,3D human pose estimation in video with temporal convolutions and semi-supervised training,Conference on Computer Vision and Pattern Recognition (CVPR),2019年
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00- 7/90
G06V 10/00-20/90
G06V 40/16、40/20
(57)【特許請求の範囲】
【請求項1】
3次元空間内の被写体を撮像することで取得される画像データまたは前記画像データから特徴量を抽出したデータである特徴量抽出データから、前記被写体の所定の部位の位置を示すデータであるキーポイントデータを取得することで、前記被写体の2次元ポーズデータを取得する2Dポーズ推定部と、
前記画像データまたは前記特徴量抽出データにより形成される2次元画像上の所定の画像領域が、前記被写体の所定の部位に相当する画像領域であることの確からしさを示す値である第1信頼度を取得することで、前記被写体の部位ごとのヒートマップを取得するヒートマップ取得部と、
前記2Dポーズ推定部により取得された前記2次元ポーズデータに含まれるキーポイントデータを用いて予測処理を実行することで、予測キーポイントデータを取得し、取得した予測キーポイントデータを含むデータを予測2次元ポーズデータとして取得する予測データ取得部と、
前記被写体の部位ごとに、前記ヒートマップにより特定される前記第1信頼度と、前記予測2次元ポーズデータに含まれるキーポイントデータの信頼度である第2信頼度とを取得するとともに、前記第1信頼度と前記第2信頼度とを合成する処理を行うことで合成信頼度を取得する信頼度取得部と、
前記合成信頼度に基づいて、前記被写体の各部位の位置を決定することで、精密2次元ポーズデータを取得する精密ポーズデータ取得部と、
を備えるポーズデータ生成装置。
【請求項2】
予測データ取得部は、
前記被写体の部位ごとに、前記精密ポーズデータ取得部によって現時刻よりも前に取得された精密2次元ポーズデータを用いて、前記予測処理を行う、
請求項1に記載のポーズデータ生成装置。
【請求項3】
前記予測データ取得部は、
前記2次元ポーズデータに含まれるキーポイントデータを、第1グループおよび第2グループに分類し、
(1)前記第1グループに分類されたキーポイントデータについては、第1予測精度を有する予測処理である粗予測処理を実行することで、当該キーポイントデータの予測データであるキーポイント粗予測データを取得し、
(2)前記第2グループに分類されたキーポイントデータについては、前記第1予測精度よりも予測精度の高い第2予測精度を有する精密予測処理を実行することで、当該キーポイントデータの予測データであるキーポイント精密予測データを取得し、
前記信頼度取得部は、
(1)前記第1グループに分類されたキーポイントデータに対応する部位については、前記キーポイント粗予測データに基づいて取得した信頼度を、前記第2信頼度とし、
(2)前記第2グループに分類されたキーポイントデータに対応する部位については、前記キーポイント精密予測データに基づいて取得した信頼度を、前記第2信頼度として、
前記第1信頼度と前記第2信頼度とを合成する処理を行うことで合成信頼度を取得する、
請求項1または2に記載のポーズデータ生成装置。
【請求項4】
前記第1グループおよび前記第2グループの分類方法は、所定の条件により、決定されるものであり、前記所定の条件は、
(1)部位の動く速度、加速度、所定の時間内における速度の変化、加速度の変化、
(2)部位の動きのランダム性、
(3)部位の動きの線形性、非線形性、および、
(4)ポーズデータ生成装置とともに実行されるアプリケーションにより一定の条件が変化しない期間および/またはステージ、
の少なくとも1つに基づくものである、
請求項3に記載のポーズデータ生成装置。
【請求項5】
前記予測データ取得部は、
前記2次元ポーズデータに含まれるキーポイントデータを、可動範囲が広い部位のキーポイントのデータである広可動キーポイントデータと、可動範囲が狭い部位のキーポイントのデータである狭可動キーポイントデータとに分解し、
(1)前記狭可動キーポイントデータについては、第1予測精度を有する予測処理である粗予測処理を実行することで、前記狭可動キーポイントデータの予測データである狭可動キーポイント予測データを取得し、
(2)前記広可動キーポイントデータについては、前記第1予測精度よりも予測精度の高い第2予測精度を有する精密予測処理を実行することで、前記広可動キーポイントデータの予測データである広可動キーポイント予測データを取得し、
前記狭可動キーポイント予測データと前記広可動キーポイント予測データとを含むデータを前記予測2次元ポーズデータとして取得する、
請求項1または2に記載のポーズデータ生成装置。
【請求項6】
前記予測データ取得部は、
(1)第1精度を有する時系列フィルタを用いて前記粗予測処理を実行し、
(2)前記第1精度よりも高い第2精度を有する時系列フィルタを用いて前記精密予測処理を実行する、
請求項3から5のいずれかに記載のポーズデータ生成装置。
【請求項7】
前記第1精度を有する時系列フィルタは、状態空間モデルが線形作用素により表現されるシステムモデルを処理対象とする時系列フィルタであり、
前記第2精度を有する時系列フィルタは、状態空間モデルが非線形作用素により表現されるシステムモデルを処理対象とする時系列フィルタである、
請求項6に記載のポーズデータ生成装置。
【請求項8】
前記第1精度を有する時系列フィルタは、カルマンフィルタであり、
前記第2精度を有する時系列フィルタは、拡張カルマンフィルタ、無香料カルマンフィルタ、およびパーティクルフィルタの中のいずれか1つである、
請求項6に記載のポーズデータ生成装置。
【請求項9】
前記精密2次元ポーズデータに対して2次元―3次元変換処理を行うことで、精密2次元ポーズデータに対応する3次元のポーズデータである精密3次元ポーズデータを取得する2D-3D変換部をさらに備える、
請求項1から8のいずれかに記載のポーズデータ生成装置。
【請求項10】
3次元空間内の被写体を撮像することで取得される画像データまたは前記画像データから特徴量を抽出したデータである特徴量抽出データから、前記被写体の所定の部位の位置を示すデータであるキーポイントデータを取得することで、前記被写体の2次元ポーズデータを取得する2Dポーズ推定ステップと、
前記画像データまたは前記特徴量抽出データにより形成される2次元画像上の所定の画像領域が、前記被写体の所定の部位に相当する画像領域であることの確からしさを示す値である第1信頼度を取得することで、前記被写体の部位ごとのヒートマップを取得するヒートマップ取得ステップと、
前記2Dポーズ推定ステップにより取得された前記2次元ポーズデータに含まれるキーポイントデータを用いて予測処理を実行することで、予測キーポイントデータを取得し、取得した予測キーポイントデータを含むデータを予測2次元ポーズデータとして取得する予測データ取得ステップと、
前記被写体の部位ごとに、前記ヒートマップにより特定される前記第1信頼度と、前記予測2次元ポーズデータに含まれるキーポイントデータの信頼度である第2信頼度とを取得するとともに、前記第1信頼度と前記第2信頼度とを合成する処理を行うことで合成信頼度を取得する信頼度取得ステップと、
前記合成信頼度に基づいて、前記被写体の各部位の位置を決定することで、精密2次元ポーズデータを取得する精密ポーズデータ取得ステップと、
を備えるポーズデータ生成方法。
【請求項11】
請求項10に記載のポーズデータ生成方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、移動可能であり、かつ、その姿勢が可変である、人、生物、物体等のポーズを推定する技術に関する。
【背景技術】
【0002】
近年、現実の人や物体の動きを記録する技術であるモーションキャプチャーが注目されており、高精度なモーションキャプチャーを実現するために、人のポーズを高精度に推定する技術が求められている。
【0003】
例えば、非特許文献1には、2次元の映像から2次元のキーポイントデータ(2次元映像に映っている人の2次元のキーポイントデータ)を取得し、取得した2次元キーポイントデータから3次元のポーズデータ(人のポーズデータ)を取得(推定)する技術の開示がある。しかしながら、非特許文献1の技術では、2次元の映像上(2次元画像上)で、例えば、人の所定の部位が他の部位に隠れて見えなくなった状態(オクルージョンが発生している状態)が発生すると、上記処理により取得される3次元のポーズデータ(人のポーズデータ)が正しいものではなくなってしまうことがある。つまり、このような場合、非特許文献1の技術では、オクルージョンが発生している部位について、キーポイントを検出できない、あるいは、キーポイントを誤検出してしまうという問題がある。
【0004】
これに対処するために、例えば、非特許文献2には、シリンダー・マン・モデル(Cylinder Man Model)を用いて、隠れたキーポイント(オクルージョンが発生している部位のキーポイント)を含めた学習データを作成し、半教師あり学習を行い、取得した学習済みモデルを用いて、2次元の映像から3次元のポーズデータ(人のポーズデータ)を取得(推定)する技術の開示がある。
【先行技術文献】
【非特許文献】
【0005】
【文献】Dario Pavllo, Christoph Feichtenhofer, David Grangier, Michael Auli, "3D human pose estimation in video with temporal convolutions and semi-supervised training" Conference on Computer Vision and Pattern Recognition (CVPR), 2019, pp. 7753-7762.
【文献】Yu Cheng, Bo Yang, Bo Wang, Wending Yan, and Robby T. Tan, "Occlusion-Aware Networks for 3D Human Pose Estimation in Video" Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV), 2019, pp. 723-732.
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記従来の技術では、2次元の映像から3次元のポーズデータ(人のポーズデータ)を取得(推定)するために、非常に複雑な処理を実行する必要がある。具体的には、上記非特許文献1の技術では、2次元の映像から2次元のキーポイントデータ(2次元映像に映っている人の2次元のキーポイントデータ)を取得することを時系列に連続的に行い、時系列に連続的に取得した2次元のキーポイントデータを入力として、CNN(Convolutional Neural Network)による処理を行う必要がある。そして、このCNNによる処理において、時系列データの一定期間のデータを常に入力する必要があり、演算量が多くなり、高速処理を実行できる高精度なハードウェアを用いなければ、2次元の映像を入力してから、3次元のポーズデータ(人のポーズデータ)を取得(推定)するまでの処理時間(遅延時間)を少なくすることが困難である。
【0007】
また、上記非特許文献2の技術においても、2次元の映像から2次元のキーポイントデータ(2次元映像に映っている人の2次元のキーポイントデータ)を取得することを時系列に連続的に行い、時系列に連続的に取得した2次元のキーポイントデータを入力として、2次元ポーズデータを取得するための時系列のコンボリューション処理(例えば、CNNによる処理)を行い、さらに、3次元ポーズデータを取得するための時系列のコンボリューション処理(例えば、CNNによる処理)を行う必要がある。また、非特許文献2の技術では、2次元映像上において、人の所定の部位が他の部位に隠れた状態(オクルージョンが発生している状態)を含む場合であっても、適切なキーポイントデータを取得(推定)するために、シリンダー・マン・モデル(Cylinder Man Model)を用いて、人のポーズを規制する条件を課して、学習データを作成し、学習処理を行い、学習済みモデルを取得する必要がある。そして、非特許文献2の技術では、上記学習処理により取得した学習済みモデルを用いて、2次元の映像から3次元のポーズデータ(人のポーズデータ)を取得(推定)する。つまり、非特許文献2の技術では、上記の通り、複雑な学習処理により取得された複雑な学習済みモデルを用いて処理を行うため、2次元の映像を入力してから、3次元のポーズデータ(人のポーズデータ)を取得(推定)するための演算量が多く、また、処理時間(遅延時間)も長くなる。そのため、非特許文献2の技術を用いる場合においても、高速処理を実行できる高精度なハードウェアを用いることが必要となる。
【0008】
このように、上記従来技術(非特許文献1、2の技術)では、学習済みモデルを取得するために、複雑な学習モデルを用いて学習処理を実行する必要があり、学習済みモデルを構築のための負荷が大きい。さらに、上記従来技術(非特許文献1、2の技術)では、予測処理(3次元のポーズデータを推定する処理)において、複雑な構成の学習済みモデルを用いて処理を行うため、例えば、ハードウェアで実現する場合、当該ハードウェアの規模が大きくなり、その結果、上記従来技術(非特許文献1、2の技術)を実現するためのコストも高くなる。
【0009】
そこで、本発明は、上記課題に鑑み、低コストで実現でき、かつ、高精度なポーズデータを取得するポーズデータ生成装置、ポーズデータ生成方法、および、プログラムを実現することを目的とする。
【課題を解決するための手段】
【0010】
上記課題を解決するために、第1の発明は、2Dポーズ推定部と、ヒートマップ取得部と、予測データ取得部と、信頼度取得部と、精密ポーズデータ取得部と、を備えるポーズデータ生成装置である。
【0011】
2Dポーズ推定部は、3次元空間内の被写体を撮像することで取得される画像データまたは画像データから特徴量を抽出したデータである特徴量抽出データから、被写体の所定の部位の位置を示すデータであるキーポイントデータを取得することで、被写体の2次元ポーズデータを取得する。
【0012】
ヒートマップ取得部は、画像データまたは特徴量抽出データにより形成される2次元画像上の所定の画像領域が、被写体の所定の部位に相当する画像領域であることの確からしさを示す値である第1信頼度を取得することで、被写体の部位ごとのヒートマップを取得する。
【0013】
予測データ取得部は、2Dポーズ推定部により取得された2次元ポーズデータに含まれるキーポイントデータを用いて予測処理を実行することで、予測キーポイントデータを取得し、取得した予測キーポイントデータを含むデータを予測2次元ポーズデータとして取得する。
【0014】
信頼度取得部は、被写体の部位ごとに、ヒートマップにより特定される第1信頼度と、予測2次元ポーズデータに含まれるキーポイントデータの信頼度である第2信頼度とを取得するとともに、第1信頼度と第2信頼度とを合成する処理を行うことで合成信頼度を取得する。
【0015】
精密ポーズデータ取得部は、合成信頼度に基づいて、前記被写体の各部位の位置を決定することで、精密2次元ポーズデータを取得する。
【0016】
このポーズデータ生成装置では、被写体の部位ごとに、ヒートマップ取得部により取得されたヒートマップに基づく第1信頼度と、信頼度取得部により取得された第2信頼度とを合成(例えば、加算)することで行うことで、より精度の高い信頼度である合成信頼度を部位ごとに取得することができる。そして、このポーズデータ生成装置の精密2次元ポーズデータ取得部では、合成信頼度に基づいて、精密ポーズデータを取得するので、精度の高いポーズデータ(精密2次元ポーズデータ)を取得することができる。そして、このポーズデータ生成装置で、上記のように取得した精密2次元ポーズデータに対して、2D-3D変換を行うことで、高精度な3次元ポーズデータを取得することができる。
【0017】
したがって、このポーズデータ生成装置では、従来技術のような複雑な処理(例えば、時系列のコンボリューション処理(CNNにより処理)等)を行う必要がないので、低コストで実現でき、かつ、高精度なポーズデータを取得することができる。
【0018】
第2の発明は、第1の発明であって、予測データ取得部は、被写体の部位ごとに、精密ポーズデータ取得部によって現時刻よりも前に取得された精密2次元ポーズデータを用いて、予測処理を行う。
【0019】
これにより、このポーズデータ生成装置では、より精度の高い精密2次元ポーズデータを過去のデータとして用いて、予測処理を行うことができる。その結果、より精度の高い予測処理を行うことができる。
【0020】
第3の発明は、第1または第2の発明であって、
予測データ取得部は、
2次元ポーズデータに含まれるキーポイントデータを、第1グループおよび第2グループに分類し、
(1)第1グループに分類されたキーポイントデータについては、第1予測精度を有する予測処理である粗予測処理を実行することで、当該キーポイントデータの予測データであるキーポイント粗予測データを取得し、
(2)第2グループに分類されたキーポイントデータについては、第1予測精度よりも予測精度の高い第2予測精度を有する精密予測処理を実行することで、当該キーポイントデータの予測データであるキーポイント精密予測データを取得する。
【0021】
信頼度取得部は、
(1)第1グループに分類されたキーポイントデータに対応する部位については、キーポイント粗予測データに基づいて取得した信頼度を、第2信頼度とし、
(2)第2グループに分類されたキーポイントデータに対応する部位については、キーポイント精密予測データに基づいて取得した信頼度を、第2信頼度として、
第1信頼度と第2信頼度とを合成する処理を行うことで合成信頼度を取得する。
【0022】
このポーズデータ生成装置では、2次元ポーズデータに対して予測処理を行うときに、部位を第1グループおよび第2グループに分類し、分類したグループに応じて、予測精度の異なる予測処理を行う。つまり、このポーズデータ生成装置では、粗予測処理の対象としたい部位を第1グループに分類し、精密予測処理の対象としたい部位を第2グループとすることで、部位ごとに異なる予測処理を実行することができる。
【0023】
第4の発明は、第3の発明であって、第1グループおよび第2グループの分類方法は、所定の条件により、決定されるものであり、所定の条件は、
(1)部位の動く速度、加速度、所定の時間内における速度の変化、加速度の変化、
(2)部位の動きのランダム性、
(3)部位の動きの線形性、非線形性、および、
(4)ポーズデータ生成装置とともに実行されるアプリケーションにより一定の条件が変化しない期間および/またはステージ、
の少なくとも1つに基づくものである。
【0024】
これにより、上記条件に基づいて、部位を、第1グループおよび第2グループに分類することができ、粗予測処理の対象とする部位と、精密予測処理の対象とする部位とを適切に設定(分類)することができる。
【0025】
第5の発明は、第1または第2の発明であって、予測データ取得部は、
2次元ポーズデータに含まれるキーポイントデータを、可動範囲が広い部位のキーポイントのデータである広可動キーポイントデータと、可動範囲が狭い部位のキーポイントのデータである狭可動キーポイントデータとに分解し、
(1)狭可動キーポイントデータについては、第1予測精度を有する予測処理である粗予測処理を実行することで、狭可動キーポイントデータの予測データである狭可動キーポイント予測データを取得し、
(2)広可動キーポイントデータについては、第1予測精度よりも予測精度の高い第2予測精度を有する精密予測処理を実行することで、広可動キーポイントデータの予測データである広可動キーポイント予測データを取得し、
狭可動キーポイント予測データと広可動キーポイント予測データとを含むデータを予測2次元ポーズデータとして取得する。
【0026】
このポーズデータ生成装置では、2次元ポーズデータに対して予測処理を行うときに、部位の特徴に応じて、予測精度の異なる予測処理を行う。つまり、このポーズデータ生成装置では、可動範囲が広い部位のキーポイントデータ(広可動キーポイントデータ)には、高精度の予測処理を行い、可動範囲が狭い部位のキーポイントデータ(狭可動キーポイントデータ)には、精密予測処理ほど精度は高くないが演算量が少なくて済む予測処理(粗予測処理)を行う。
【0027】
つまり、このポーズデータ生成装置では、予測が難しい広可動キーポイントについては、精度の高い予測処理(精密予測処理)を行い、予測がそれほど難しくない狭可動キーポイントについては、演算量が少なくて済む予測処理(粗予測処理)を行うので、予測データ(予測2次元ポーズデータ)を取得するために必要なトータルの演算量を抑えつつ、高精度な予測データを取得することができる。
【0028】
なお、「予測精度」は、例えば、同一の処理対象に対して予測処理を行ったときに、予測データと実際の観測データとの差異に基づいて、決定(規定)される。
【0029】
第6の発明は、第3から第5のいずれかの発明であって、予測データ取得部は、
(1)第1精度を有する時系列フィルタを用いて粗予測処理を実行し、
(2)第1精度よりも高い第2精度を有する時系列フィルタを用いて精密予測処理を実行する。
【0030】
これにより、このポーズデータ生成装置では、予測精度の異なる時系列フィルタを用いて、粗予測処理および精密予測処理を実行することができる。
【0031】
第7の発明は、第6の発明であって、第1精度を有する時系列フィルタは、状態空間モデルが線形作用素により表現されるシステムモデル(線形システムモデル)を処理対象とする時系列フィルタであり、第2精度を有する時系列フィルタは、状態空間モデルが非線形作用素により表現されるシステムモデル(非線形システムモデル)を処理対象とする時系列フィルタである。
【0032】
これにより、このポーズデータ生成装置では、線形システムモデルを処理対象とする時系列を用いて粗予測処理を実行するとともに、非線形システムモデルを処理対象とする時系列を用いて精密予測処理を実行することができる。
【0033】
第8の発明は、第6の発明であって、第1精度を有する時系列フィルタは、カルマンフィルタであり、第2精度を有する時系列フィルタは、拡張カルマンフィルタ、無香料カルマンフィルタ(Unscented Kalman Filter)、およびパーティクルフィルタの中のいずれか1つである。
【0034】
これにより、このポーズデータ生成装置では、カルマンフィルタを用いて粗予測処理を実行するとともに、拡張カルマンフィルタ、無香料カルマンフィルタ、およびパーティクルフィルタの中のいずれか1つを用いて精密予測処理を実行することができる。
【0035】
第9の発明は、第1から第8までのいずれかの発明であって、精密2次元ポーズデータに対して2次元―3次元変換処理を行うことで、精密2次元ポーズデータに対応する3次元のポーズデータである精密3次元ポーズデータを取得する2D-3D変換部をさらに備える。
【0036】
これにより、このポーズデータ生成装置では、精密2次元ポーズデータに対応する3次元のポーズデータである精密3次元ポーズデータを取得することができる。
【0037】
第10の発明は、2Dポーズ推定ステップと、ヒートマップ取得ステップと、予測データ取得ステップと、信頼度取得ステップと、精密ポーズデータ取得ステップと、を備えるポーズデータ生成方法である。
【0038】
2Dポーズ推定ステップは、3次元空間内の被写体を撮像することで取得される画像データまたは画像データから特徴量を抽出したデータである特徴量抽出データから、被写体の所定の部位の位置を示すデータであるキーポイントデータを取得することで、被写体の2次元ポーズデータを取得する。
【0039】
ヒートマップ取得ステップは、画像データまたは特徴量抽出データにより形成される2次元画像上の所定の画像領域が、被写体の所定の部位に相当する画像領域であることの確からしさを示す値である第1信頼度を取得することで、被写体の部位ごとのヒートマップを取得する。
【0040】
予測データ取得ステップは、2Dポーズ推定ステップにより取得された2次元ポーズデータに含まれるキーポイントデータを用いて予測処理を実行することで、予測キーポイントデータを取得し、取得した予測キーポイントデータを含むデータを予測2次元ポーズデータとして取得する。
【0041】
信頼度取得ステップは、被写体の部位ごとに、ヒートマップにより特定される第1信頼度と、予測2次元ポーズデータに含まれるキーポイントデータの信頼度である第2信頼度とを取得するとともに、第1信頼度と第2信頼度とを合成する処理を行うことで合成信頼度を取得する。
【0042】
精密ポーズデータ取得ステップは、合成信頼度に基づいて、被写体の各部位の位置を決定することで、精密2次元ポーズデータを取得する。
【0043】
これにより、第1の発明と同様の効果を奏するポーズデータ生成方法を実現することができる。
【0044】
第11の発明は、第10の発明であるポーズデータ生成方法をコンピュータに実行させるためのプログラムである。
【0045】
これにより、第1の発明と同様の効果を奏するポーズデータ生成方法をコンピュータに実行させるためのプログラムを実現することができる。
【発明の効果】
【0046】
本発明によれば、低コストで実現でき、かつ、高精度なポーズデータを取得するポーズデータ生成装置、ポーズデータ生成方法、および、プログラムを実現することができる。
【図面の簡単な説明】
【0047】
【
図1】第1実施形態に係るポーズデータ生成装置100の概略構成図。
【
図2】第1実施形態に係るポーズデータ生成装置100の精密データ取得部3の概略構成図。
【
図3A】撮像装置Cam1により、被写体人物Sub1を撮影することで取得される、時系列に連続したフレーム画像(2次元画像)(動画像を構成できる時系列に連続したフレーム画像)をデータDinとして、ポーズデータ生成装置に入力するシステム(一例)(上図)と、時間ステップt1(時刻t1)におけるフレーム画像Img0
(t1)(一例)(下図)とを示す図。
【
図3B】撮像装置Cam1により、被写体人物Sub1を撮影することで取得される時系列に連続したフレーム画像(2次元画像)(動画像を構成できる時系列に連続したフレーム画像)をデータDinとして、ポーズデータ生成装置100の特徴量抽出部PP1に入力するシステム(一例)(上図)と、時系列に連続したフレーム画像から特徴量抽出部PP1により抽出された特徴量抽出画像Img1
(t1)、Img1
(t2)、Img1
(t3)、・・・(一例)(下図)とを示す図。
【
図5】特徴量抽出画像Img1
(t1)と、特徴量抽出画像Img1
(t1)から取得した、(1)ヒートマップHeatmap(kp14)(左肩のヒートマップ)、(2)ヒートマップHeatmap(kp15)(左肘のヒートマップ)、および(3)ヒートマップHeatmap(kp16)(左手のヒートマップ)とを示す図。
【
図6】信頼度取得処理を説明するための図(時間ステップt1)。
【
図7】信頼度取得処理を説明するための図(時間ステップt1)。
【
図8】信頼度取得処理を説明するための図(時間ステップt1)。
【
図9】信頼度取得処理を説明するための図(時間ステップt1)。
【
図10】信頼度取得処理を説明するための図(時間ステップt1)。
【
図11】信頼度取得処理を説明するための図(時間ステップt1)。
【
図12】精密ポーズデータ取得部33により取得した各キーポイントのデータDo_kp.kp
jをまとめたデータDo_kpの一例を示す図(時間ステップt1)。
【
図13】精密ポーズデータ取得部33により取得した各キーポイントのデータDo_kp.kp
jをまとめたデータDo_kpの一例を示す図(時間ステップt2)。
【
図14】信頼度取得処理を説明するための図(時間ステップt3)。
【
図15】信頼度取得処理を説明するための図(時間ステップt3)。
【
図16】信頼度取得処理を説明するための図(時間ステップt3)。
【
図17】精密ポーズデータ取得部33により取得した各キーポイントのデータDo_kp.kp
jをまとめたデータDo_kpの一例を示す図(時間ステップt3)。
【
図18】第1実施形態の第1変形例に係るポーズデータ生成装置100Aの概略構成図。
【
図19】第1実施形態の第1変形例に係るポーズデータ生成装置100Aの精密データ取得部3Aの概略構成図。
【
図20】第1実施形態の第2変形例に係るポーズデータ生成装置100Bの概略構成図。
【
図21】第1実施形態の第2変形例に係るポーズデータ生成装置100Bの精密データ取得部3Bの概略構成図。
【発明を実施するための形態】
【0048】
[第1実施形態]
第1実施形態について、図面を参照しながら、以下、説明する。
【0049】
<1.1:ポーズデータ生成装置の構成>
図1は、第1実施形態に係るポーズデータ生成装置100の概略構成図である。
【0050】
図2は、第1実施形態に係るポーズデータ生成装置100の精密データ取得部3の概略構成図である。
【0051】
ポーズデータ生成装置100は、
図1に示すように、特徴量抽出部PP1と、2Dポーズ推定部1と、ヒートマップ取得部2と、精密データ取得部3と、2D-3D変換部4と、ポスト処理部5とを備える。
【0052】
特徴量抽出部PP1は、例えば、動画撮影が可能な撮像装置(不図示)により、被写体人物を撮影することで取得される、時系列に連続したフレーム画像(2次元画像)(動画像を構成できる時系列に連続したフレーム画像)をデータDinとして入力する。そして、特徴量抽出部PP1は、データDinに対して、特徴量抽出処理(例えば、クラス分類を行いつつ、物体検出を行う処理)を実行することで、例えば、被写体人物(物体検出の対象)に相当する画像領域を抽出する。特徴量抽出部PP1は、特徴量抽出処理により取得した、物体検出の対象の画像領域についてのデータ(物体検出の対象が含まれる画像領域を含む画像データ、抽出した画像領域の座標、サイズについてのデータ等)、および、物体検出した対象のクラス分類に関するデータ(物体検出のクラス(例えば、人))等を含むデータを、特徴量抽出データD0として、2Dポーズ推定部1およびヒートマップ取得部2に出力する。
【0053】
2Dポーズ推定部1は、特徴量抽出部PP1から出力される特徴量抽出データD0を入力する。2Dポーズ推定部1は、特徴量抽出データD0に対して、2次元ポーズ推定処理を実行し、2次元キーポイントデータ(例えば、被写体人物の2次元キーポイントデータ)を取得する。そして、2Dポーズ推定部1は、取得した2次元キーポイントデータを含むデータを、データDi_kpとして、精密データ取得部3に出力する。
【0054】
ヒートマップ取得部2は、特徴量抽出部PP1から出力される特徴量抽出データD0を入力する。ヒートマップ取得部2は、特徴量抽出データD0に対して、ヒートマップ取得処理を実行し、ヒートマップデータを取得する。そして、ヒートマップ取得部2は、取得したヒートマップデータを含むデータを、データD_heatmapとして、精密データ取得部3に出力する。
【0055】
精密データ取得部3は、
図2に示すように、予測データ取得部31と、信頼度取得部32と、精密ポーズデータ取得部33とを備える。
【0056】
予測データ取得部31は、
図2に示すように、データ分解部311と、第1メモリM1と、第2メモリM2と、粗予測処理部312と、精密予測処理部313と、を備える。
【0057】
データ分解部311は、2Dポーズ推定部1から出力されるデータDi_kpを入力し、当該データDi_kpに対して分解処理(キーポイントデータを人の部位ごとに分解する処理)を実行し、粗予測処理の対象とするデータD1_kp_Lと、精密予測処理の対象とするデータD1_kp_Hとを取得する。そして、データ分解部311は、取得したデータD1_kp_Lを粗予測処理部312および第1メモリM1に出力し、取得したデータD1_kp_Hを精密予測処理部313および第2メモリM2に出力する。
【0058】
第1メモリM1は、データ分解部311から出力されるデータD1_kp_Lと、粗予測処理部312から出力されるデータD2_kp_Lとを入力し、データD1_kp_LとデータD2_kp_Lとを記憶保持する記憶部である。第1メモリM1に記憶保持されているデータは、粗予測処理部312からの読み出し命令により、読み出すことが可能である。
【0059】
第2メモリM2は、データ分解部311から出力されるデータD1_kp_Hと、精密予測処理部313から出力されるデータD2_kp_Hとを入力し、データD1_kp_HとデータD2_kp_Hとを記憶保持する記憶部である。第2メモリM2に記憶保持されているデータは、精密予測処理部313からの読み出し命令により、読み出すことが可能である。
【0060】
粗予測処理部312は、データ分解部311から出力されるデータD1_kp_Lを入力する。また、粗予測処理部312は、現時刻よりも前の時刻に取得され、第1メモリM1に記憶されているデータD1_kp_LをデータD1_kp_L_pastとして、第1メモリM1から読み出す。粗予測処理部312は、データD1_kp_LおよびデータD1_kp_L_pastを用いて、粗予測処理を実行することで、粗予測処理データD2_kp_Lを取得する。そして、粗予測処理部312は、取得した粗予測処理データD2_kp_Lを、信頼度取得部32の粗予測信頼度取得部321および第1メモリM1に出力する。
【0061】
精密予測処理部313は、データ分解部311から出力されるデータD1_kp_Hを入力する。また、精密予測処理部313は、現時刻よりも前の時刻に取得され、第2メモリM2に記憶されているデータD2_kp_HをデータD1_kp_H_pastとして、第2メモリM2から読み出す。精密予測処理部313は、データD1_kp_HおよびデータD1_kp_H_pastを用いて、精密予測処理を実行することで、精密予測処理データD2_kp_Hを取得する。そして、精密予測処理部313は、取得した精密予測処理データD2_kp_Hを、信頼度取得部32の精密予測信頼度取得部322および第2メモリM2に出力する。
【0062】
信頼度取得部32は、
図2に示すように、粗予測信頼度取得部321と、精密予測信頼度取得部322と、信頼度合成部323と、を備える。
【0063】
粗予測信頼度取得部321は、粗予測処理部312から出力される粗予測処理データD2_kp_Lを入力する。粗予測信頼度取得部321は、粗予測処理データD2_kp_Lに対して、粗予測信頼度取得処理を実行することで、粗予測信頼度を取得し、取得した粗予測信頼度を含むデータをデータD3_conf_Lとして、信頼度合成部323に出力する。
【0064】
精密予測信頼度取得部322は、精密予測処理部313から出力される精密予測処理データD2_kp_Hを入力する。精密予測信頼度取得部322は、精密予測処理データD2_kp_Hに対して、精密予測信頼度取得処理を実行することで、精密予測信頼度を取得し、取得した精密予測信頼度を含むデータをデータD3_conf_Hとして、信頼度合成部323に出力する。
【0065】
信頼度合成部323は、粗予測信頼度取得部321から出力されるデータD3_conf_Lと、精密予測信頼度取得部322から出力されるデータD3_conf_Hと、ヒートマップ取得部2から出力されるデータD_heatmapとを入力する。信頼度合成部323は、データD3_conf_L、データD3_conf_H、および、データD_heatmapに対して、信頼度合成処理を実行することで、合成信頼度を取得し、取得した合成信頼度を含むデータをデータD4_confとして精密ポーズデータ取得部33に出力する。
【0066】
精密ポーズデータ取得部33は、2Dポーズ推定部1から出力されるデータDi_kpと、信頼度合成部323から出力されるデータD4_confと、を入力する。精密ポーズデータ取得部33は、データDi_kp、および、データD4_conf(信頼度データD4_conf)を用いて、精密ポーズデータ取得処理(詳細については後述)を実行することで、当該処理後のデータをデータDo_kpとして取得する。そして、精密ポーズデータ取得部33は、取得したデータDo_kpを2D-3D変換部4に出力する。
【0067】
2D-3D変換部4は、精密データ取得部3から出力されるデータDo_kp(2次元のキーポイントのデータ)を入力する。2D-3D変換部4は、データDo_kp(2次元のキーポイントのデータ)に対して、2D-3D変換処理を実行し、データDo_kp(2次元のキーポイントのデータ)に対応する3次元データ(3次元のキーポイントのデータ)をデータDo_3D_kpとして取得する。そして、2D-3D変換部4は、取得したデータDo_3D_kpをポスト処理部5に出力する。
【0068】
ポスト処理部5は、2D-3D変換部4から出力されるデータDo_3D_kpを入力し、当該データDo_3D_kpに対してポスト処理を実行し、当該処理後のデータをデータDoutとして取得する。
【0069】
<1.2:ポーズデータ生成装置の動作>
以上のように構成されたポーズデータ生成装置100の動作について、以下、説明する。
【0070】
図3Aは、撮像装置Cam1により、被写体人物Sub1を撮影することで取得される、時系列に連続したフレーム画像(2次元画像)(動画像を構成できる時系列に連続したフレーム画像)をデータDinとして、ポーズデータ生成装置に入力するシステム(一例)(上図)と、時間ステップt1(時刻t1)におけるフレーム画像Img0
(t1)(一例)(下図)とを示す図である。なお、
図3Aにおいて、画像Img1
(t1)(画像領域Img1
(t1))は、特徴量抽出部PP1により、物体検出対象を「人」として、抽出した画像(画像領域)である。
【0071】
図3Bは、撮像装置Cam1により、被写体人物Sub1を撮影することで取得される時系列に連続したフレーム画像(2次元画像)(動画像を構成できる時系列に連続したフレーム画像)をデータDinとして、ポーズデータ生成装置100の特徴量抽出部PP1に入力するシステム(一例)(上図)と、時系列に連続したフレーム画像から特徴量抽出部PP1により抽出された特徴量抽出画像Img1
(t1)、Img1
(t2)、Img1
(t3)、・・・(一例)(下図)とを示す図である。なお、時間ステップtk(k:整数)における特徴量抽出画像をImg1
(tk)と表記する。
【0072】
図4は、キーポイントデータを説明するための図である。
【0073】
図5は、フレーム画像Img1
(t1)と、フレーム画像Img1
(t1)から取得した、(1)ヒートマップHeatmap(kp
14)(左肩のヒートマップ)、(2)ヒートマップHeatmap(kp
15)(左肘のヒートマップ)、および(3)ヒートマップHeatmap(kp
16)(左手のヒートマップ)とを示す図である。
【0074】
図6~
図11は、信頼度取得処理を説明するための図である(時間ステップt1)。
【0075】
図12は、精密ポーズデータ取得部33により取得した各キーポイントのデータDo_kp.kp
jをまとめたデータDo_kpの一例を示す図である(時間ステップt1)。
【0076】
図13は、精密ポーズデータ取得部33により取得した各キーポイントのデータDo_kp.kp
jをまとめたデータDo_kpの一例を示す図である(時間ステップt2)。
【0077】
図14~
図16は、信頼度取得処理を説明するための図である(時間ステップt3)。
【0078】
図17は、精密ポーズデータ取得部33により取得した各キーポイントのデータDo_kp.kp
jをまとめたデータDo_kpの一例を示す図である(時間ステップt3)。
【0079】
以下では、説明便宜のために、被写体人物Sub1が所定の動作を行い、
図3Bの下図に示す特徴量抽出画像が特徴量抽出部PP1により取得され、ポーズデータ生成装置100でポーズデータ生成処理が実行される場合(一例)について、説明する。また、説明便宜のため、被写体人物Sub1の所定の動作を、
図3Bの下図に示すように、被写体人物Sub1の左手がDir1で示す方向に動き、時間ステップt3で、被写体人物Sub1の左手が被写体人物Sub1の体の後ろに隠れる状態(左腕、左手がオクルージョン状態)となる動作(一例)として、以下説明する。
【0080】
以下では、時間ステップt1、t2、および、t3での処理に分けて、ポーズデータ生成装置100の動作を説明する。
【0081】
≪時間ステップt1の処理≫
時間ステップt1において、撮像装置Cam1により、被写体人物Sub1を含む3次元空間(撮像空間)を撮像することで、フレーム画像データImg0
(t1)を取得する。なお、時間ステップtに取得されたフレーム画像データをImg0
(t)と表記する。フレーム画像データImg0
(t1)により形成される画像(フレーム画像)は、
図3Aの下図に示す画像Img0
(t1)であるものとする。また、「時間ステップ」とは、ポーズデータ生成装置100において、入力から出力までの一連の処理を実行するための基準時間であり、例えば、1つの単位データ(例えば、1フレーム画像)が入力されてから、1つの処理結果の単位データ(例えば、入力された1フレーム画像から取得された3次元ポーズデータ)が出力される時間を基準とした時間である。
【0082】
ポーズデータ生成装置100の2Dポーズ推定部1は、撮像装置Cam1から出力されるフレーム画像データImg0(t1)をデータDinとして入力し、当該フレーム画像データImg0(t1)を用いて、2次元ポーズデータを推定(取得)する処理を実行する。具体的には、以下の処理が実行される。
【0083】
特徴量抽出部PP1は、データDin(フレーム画像データImg0(t1))に対して、特徴量抽出処理(例えば、クラス分類を行いつつ、物体検出を行う処理)を実行することで、被写体人物(物体検出の対象)に相当する画像領域(画像Img1(t1))を抽出する。具体的には、特徴量抽出部PP1は、クラス分類を行いつつ、物体検出ができる技術(例えば、SSD(Single Shot Detection)やYOLO(You Only Look Once))を用いて、フレーム画像データImg0(t1)に対して、特徴量抽出処理を実行し、被写体人物(物体検出の対象)に相当する画像領域(画像Img1(t1))を抽出する。なお、本実施形態では、特徴量抽出処理において、物体検出対象を「人」に設定しているものとする。
【0084】
そして、特徴量抽出部PP1は、特徴量抽出処理により取得した、物体検出の対象の画像領域(画像Img1(t1))についてのデータ(物体検出の対象が含まれる画像領域を含む画像データ、抽出した画像領域の座標、サイズについてのデータ等)、および、物体検出した対象のクラス分類に関するデータ(物体検出のクラス(本実施形態では、「人」))等を含むデータを、特徴量抽出データD0として、2Dポーズ推定部1およびヒートマップ取得部2に出力する。なお、時間ステップtにおいて、特徴量抽出処理により抽出した画像領域のデータ(画像データ)を特徴量抽出画像データImg1(t)(または、特徴量抽出画像Img1(t))と表記する。
【0085】
2Dポーズ推定部1は、特徴量抽出画像データImg1
(t1)により形成されるフレーム画像(特徴量抽出画像Img1
(t1))上において、被写体人物Sub1の所定の部位の上記フレーム画像上の位置(2次元画像上の位置)を特定(推定)する。なお、ここでは、「所定の部位」は、(1)人の頭部および脊椎に含まれる所定の位置(
図4のキーポイントkp
1~kp
4に対応)、(2)人の左右の腕に含まれる所定の位置(
図4のキーポイントkp
5~kp
7、kp
14~kp
16に対応)、(3)人の左右の脚部に含まれる所定の位置(
図4のキーポイントkp
8~kp
10、kp
11~kp
13に対応)であるものとする。
【0086】
2Dポーズ推定部は、特徴量抽出画像Img1(t1)に写っている被写体人物Sub1の各部位のフレーム画像上の座標位置を示すキーポイントkp1~kp16(16個の点kp1~kp16)を取得(推定)することで、2Dポーズ推定処理を実行する。
【0087】
なお、2Dポーズ推定部1で実行される2Dポーズ推定処理は、以下の(A)または(B)のように処理されるものであってもよい。
(A)撮像装置Cam1により被写体人物Sub1を撮影している3次元空間(撮像空間)の情報、および、撮像装置Cam1の撮影パラメータの情報を取得できる場合、2Dポーズ推定部1は、当該撮像空間の情報と、撮像装置Cam1の撮影パラメータの情報Info_cam_prmとに基づいて、特徴量抽出画像Img1(t1)に写っている被写体人物Sub1の所定の部位の当該画像上の位置(2次元画像上の位置)を特定(推定)することで、2Dポーズ推定処理を実行する。なお、この場合、被写体を人としており(標準的な人間の大きさが既知であり)、3次元空間内の撮像装置Cam1の設置位置、カメラ光軸の向き、焦点距離、画角が既知であるので、撮像装置Cam1により取得されたフレーム画像から、被写体人物Sub1に相当する画像領域を特徴量抽出部PP1により抽出することができ、かつ、被写体人物Sub1の特定の部位のフレーム画像(特徴量抽出画像Img1(t1))上の位置を特定することができる。
(B)2Dポーズ推定部1は、時系列に連続するフレーム画像であって、被写体人物Sub1が写っている部分を特徴量抽出部PP1により抽出したフレーム画像(特徴量抽出画像Img1(t)(t=t1、t2(=t1+1)、t3(=t1+2)、・・・))を入力すると、2次元ポーズデータ(被写体人物Sub1の所定の各部位の2次元座標データ)を出力(推定)する機械学習済みモデル(例えば、ニューラルネットワークによる学習済みモデル)を備えており、2Dポーズ推定部1は、時系列に連続するフレーム画像であって、被写体人物Sub1が写っている部分を特徴量抽出部PP1により抽出したフレーム画像(特徴量抽出画像Img1(t))を、上記機械学習済みモデルに入力し、当該機械学習済みモデルによる処理を行うことで、2次元ポーズデータ(被写体人物Sub1の所定の各部位の2次元座標データ)を取得(推定)する。これにより、2Dポーズ推定部1は、2Dポーズ推定処理を実行する。
【0088】
なお、上記(B)により、2Dポーズ推定部1において、2Dポーズ推定処理を実行する場合、例えば、下記先行技術文献Aに開示されているPoseNetモデルを用いるようにしてもよい。
(先行技術文献A):
Pose Detection in the Browser: PoseNet Model
https://github.com/tensorflow/tfjs-models/tree/master/posenet
そして、2Dポーズ推定部1は、上記処理により取得した2次元キーポイントデータ(16個の点kp1~kp16の2次元座標データ)を含むデータを、データDi_kpとして、精密データ取得部3に出力する。
【0089】
ポーズデータ生成装置100のヒートマップ取得部2は、特徴量抽出画像データImg1
(t1)により形成されるフレーム画像(特徴量抽出画像Img1
(t1))から、ヒートマップを取得する処理を実行する。具体的には、ヒートマップ取得部2は、特徴量抽出画像データImg1
(t1)により形成されるフレーム画像の各画素において、当該画素が被写体人物Sub1の所定の部位である確からしさを示す値を取得する。なお、「所定の部位」は、(1)人の頭部および脊椎に含まれる所定の位置(
図4のキーポイントkp
1~kp
4に対応)、(2)人の左右の腕に含まれる所定の位置(
図4のキーポイントkp
5~kp
7、kp
14~kp
16に対応)、(3)人の左右の脚部に含まれる所定の位置(
図4のキーポイントkp
8~kp
10、kp
11~kp
13に対応)であるものとする。
【0090】
つまり、ヒートマップ取得部2は、キーポイントkp1~kp16のそれぞれに対応する部位ごとに、特徴量抽出画像Img1(t1)の各画素において、当該画素が被写体人物Sub1の所定の部位(対応するキーポイントに相当する部位)である確からしさを示す値を画素値とするヒートマップ(ヒートマップ画像)を取得する(キーポイントkp1~kp16のそれぞれについてのヒートマップ(合計16個のヒートマップ)を取得する)。なお、ヒートマップの画素数は、特徴量抽出画像Img1(t1)の画素数よりも少ないもの(一定の割合で画素を間引いたもの)であってもよい。
【0091】
図5は、特徴量抽出画像Img1
(t1)と、特徴量抽出画像Img1
(t1)から取得した、(1)ヒートマップHeatmap(kp
14)(左肩のヒートマップ)、(2)ヒートマップHeatmap(kp
15)(左肘のヒートマップ)、および(3)ヒートマップHeatmap(kp
16)(左手のヒートマップ)とを模式的に示す図である。なお、キーポイントkp
xxについてのヒートマップをHeatmap(kp
xx)と表記する。また、
図5に示したヒートマップにおいて、(1)大きなサイズの黒丸で示した画素は、対応する部位である確からしさが高いことを意味し、(2)中サイズの黒丸で示した画素は、対応する部位である確からしさが中程度であることを意味し、(3)白い丸で示した画素は、対応する部位である確からしさが低いことを意味し、(4)無地の画素は、対応する部位である確からしさがゼロである(ない)ことを意味している。また、
図5のヒートマップにおいて、被写体人物Sub1の各部位の位置が分かるように、特徴量抽出画像Img1
(t1)に写っている被写体人物Sub1をグレーの点線で重畳して示している。
【0092】
図5のヒートマップHeatmap(kp
14)(左肩のヒートマップ)において、被写体人物Sub1の左肩部分において、大きなサイズの黒丸の画素が存在しており、左肩部分の真の位置において、左肩部分の確からしさが最大であることが分かる。つまり、ヒートマップHeatmap(kp
14)(左肩のヒートマップ)では、左肩部分を適切に検出できていることが分かる。
【0093】
図5のヒートマップHeatmap(kp
15)(左肘のヒートマップ)において、被写体人物Sub1の左肘部分において、大きなサイズの黒丸の画素が存在しており、左肘部分の真の位置において、左肘部分の確からしさが最大であることが分かる。つまり、ヒートマップHeatmap(kp
15)(左肘のヒートマップ)では、左肘部分を適切に検出できていることが分かる。
【0094】
図5のヒートマップHeatmap(kp
16)(左手のヒートマップ)において、被写体人物Sub1の左手部分において、大きなサイズの黒丸の画素が存在しており、左手部分の真の位置において、左手部分の確からしさが最大であることが分かる。つまり、ヒートマップHeatmap(kp
16)(左手のヒートマップ)では、左手部分を適切に検出できていることが分かる。
【0095】
なお、ヒートマップ取得部2は、例えば、画像認識技術を用いて、特徴量抽出画像Img1(t1)において、キーポイントkp1~kp16のそれぞれに対応する部位を認識するようにしてもよい。また、ヒートマップ取得部2は、例えば、被写体人物Sub1が写っている部分が抽出された特徴量抽出画像を入力すると、被写体人物Sub1の所定の各部位である確からしさ(確率)を出力(推定)する機械学習済みモデル(例えば、ニューラルネットワークによる学習済みモデル)を備えており、ヒートマップ取得部2は、被写体人物Sub1が写っている部分が抽出された特徴量抽出画像を、上記機械学習済みモデルに入力し、当該機械学習済みモデルによる処理を行うことで、被写体人物Sub1の所定の各部位である確からしさ(確率)を出力(推定)する。このようにして、ヒートマップ取得部2は、各部位のヒートマップを取得するようにしてもよい。
【0096】
ヒートマップ取得部2は、例えば、上記(先行技術文献A)に開示されているPoseNetモデルにより人の各部位のヒートマップを取得するようにしてよい。
【0097】
上記のようにして、ヒートマップ取得部2は、キーポイントkp1~kp16のそれぞれについてのヒートマップ(合計16個のヒートマップ)を取得する。そして、ヒートマップ取得部2は、取得したヒートマップを含むデータをデータD_heatmapとして精密データ取得部3に出力する。
【0098】
精密データ取得部3のデータ分解部311は、2Dポーズ推定部1から出力されるデータDi_kpを入力し、当該データDi_kpに対して分解処理(キーポイントデータを人の部位ごとに分解する処理)を実行する。具体的には、データ分解部311は、(1)可動範囲が広く、激しく動くことができる部位のキーポイントのデータ(このようなキーポイントを「広可動キーポイント」という)と、(2)可動範囲が狭く、激しく動くことがない部位のキーポイントのデータ(このようなキーポイントを「狭可動キーポイント」という)と、に分解する。例えば、データ分解部311は、(1)手、肘、足に相当するキーポイント(Kp7(右手),Kp16(左手),Kp6(右肘),Kp13(左肘),Kp10(右足),Kp13(左足))を広可動キーポイントとし、(2)それ以外の部位に相当するキーポイント(人の頭部および脊椎に含まれる部位のキーポイントkp1~kp4、人の左右の肩に相当するキーポイントkp5、kp14、人の左右の腰に相当するキーポイントkp8、kp11、および、人の左右の膝に相当するキーポイントkp9、kp12)を狭可動キーポイントとする。なお、本実施形態では、データ分解部311は、上記のように、広可動キーポイントおよび狭可動キーポイントを設定し、キーポイントのデータの分解処理を行うものとする。
【0099】
そして、データ分解部311は、(1)上記処理により取得した狭可動キーポイントのデータを含むデータをデータD1_kp_Lとして、粗予測処理部312および第1メモリM1に出力し、(2)上記処理により取得した広可動キーポイントのデータを含むデータをデータD1_kp_Hとして、精密予測処理部313および第2メモリM2に出力する。
【0100】
第1メモリM1は、データ分解部311から出力されるデータD1_kp_Lを入力し、当該データD1_kp_Lを記憶保持する。
【0101】
第2メモリM2は、データ分解部311から出力されるデータD1_kp_Hを入力し、当該データD1_kp_Hを記憶保持する。
【0102】
粗予測処理部312は、データ分解部311から出力されるデータD1_kp_Lを入力する。また、粗予測処理部312は、現時刻よりも前の時刻に取得され、第1メモリM1に記憶されているデータD1_kp_LをデータD1_kp_L_pastとして、第1メモリM1から読み出す。粗予測処理部312は、データD1_kp_LおよびデータD1_kp_L_pastを用いて、粗予測処理を実行する。具体的には、粗予測処理部312は、時系列フィルタを用いた処理(予測処理)を実行する。これについて、以下説明する。
【0103】
時々刻々変化する観測対象の内部状態を推定する技術として、時系列フィルタを用いた技術がある。時系列フィルタとは、時間ステップt(時刻t)における対象の内部状態を状態ベクトルxtとし、時間ステップt(時刻t)において観測された特徴を観測ベクトルztとしたとき、観測された観測ベクトルztから、直接観測できない対象の内部状態xtを推定する手法である。
【0104】
観測対象の内部状態のシステムモデルおよび対象を観測した時の観測モデル(状態空間モデル)は、以下のように表すことができる。
システムモデル(状態方程式):
xt=f(xt-1,ut,wt)
f:時間ステップt-1と時間ステップtとの状態変化を表す状態遷移関数
ut:時間ステップtの制御入力
wt:時間ステップtのシステムノイズ
観測モデル(観測方程式):
zt=h(xt,vt)
h:状態xtのときに得られる観測ベクトルを表す関数
vt:時間ステップtの観測ノイズ
運動方程式等で人の動作(または人の特定部位の移動)が表現(予測)できる場合、当該運動方程式等により予測したデータと、実際の観測データ(例えば、実際に観測されたキーポイントのデータ)とを用いて、時系列フィルタを適用することができる。
【0105】
粗予測処理部312において、(1)前時間ステップ(時間ステップt-1)で取得された狭可動キーポイントのデータ(1時間ステップ前の観測対象の内部状態を示すデータ(上記の内部状態xt-1に相当))と、(2)処理対象としている被写体人物Sub1の所定の部位の動作(被写体人物Sub1の所定の部位の移動)についての物理現象を表現する方程式(例えば、運動方程式等)から予測した予測キーポイントデータ(観測データ(上記の観測ベクトルztに相当))と、を用いて時系列フィルタによる処理を行うことで、現時間ステップ(時間ステップt)での観測対象の内部状態(被写体人物Sub1のポーズデータ)を取得(推定)する。
【0106】
本実施形態では、粗予測処理部312は、時系列フィルタとして、比較的計算量が少なくてすむカルマンフィルタを用いて、狭可動キーポイントについての予測処理(粗予測処理)を行う。つまり、粗予測処理部312は、カルマンフィルタを用いて、以下の処理を実行する。
【0107】
粗予測処理部312は、以下の処理により、現時間ステップ(時間ステップt)での観測対象の内部状態(被写体人物Sub1の狭可動キーポイントのデータ)を取得(推定)する。
(A)予測
xt|t-1=f(xt-1|t-1,ut,0)
Pt|t-1=FtPt-1|t-1FT
t+GtQtGT
t
xt|t-1:時間ステップt-1における時間ステップtの状態推定値(状態推定ベクトル)
xt-1|t-1:時間ステップt-1における更新処理後の状態推定値(状態推定ベクトル)
Ft:システムの時間遷移に関する線形モデル
Pt-1|t-1:誤差の共分散行列
FT
t:Ftの転置行列
Gt:時間遷移に関するノイズモデルの行列
Qt:時間遷移に関するノイズモデルの共分散行列
GT
t:Gtの転置行列
(B)更新
et=zt-h(xt|t-1,0)
St=HtPt|t-1HT
t+Rt
Kt=Pt|t-1HT
t+S-1
t
xt|t=xt|t-1+Ktet
Pt|t=(I-KtHt)Pt|t-1
et:時間ステップtの観測残差
St:時間ステップtの観測残差の共分散
Kt:時間ステップtの最適カルマンゲイン
xt|t:時間ステップtにおいて更新された状態の推定値(推定ベクトル)
Pt|t:時間ステップtにおいて更新された誤差の共分散
Ht:観測モデルに関する線形モデル
Rt:時間ステップtの観測ノイズの共分散
粗予測処理部312は、例えば、狭可動キーポイントであるキーポイントKp8(右腰部分)の現時刻(時間ステップt1)について、キーポイントKp8の内部状態変数(内部状態ベクトル)を、特徴量抽出画像Img1(t1)上のキーポイントKp8のx座標およびy座標として、カルマンフィルタによる処理を行う。つまり、粗予測処理部312は、
t=t1
zT
t1=PT
kp8
(t1)=[xkp8
(t1),ykp8
(t1)]
zT
t1:zt1の転置行列
PT
kp8
(t1):Pkp8
(t1)の転置行列
xkp8
(t1):特徴量抽出画像Img1(t1)上のキーポイントKp8のx座標
ykp8
(t1):特徴量抽出画像Img1(t1)上のキーポイントKp8のy座標
とし、下記の更新(カルマンフィルタによる更新)を行う。なお、xt-1|t-1(時間ステップt-1における更新処理後の状態推定値(状態推定ベクトル))は、データD1_kp_L_pastに含まれており、データD1_kp_L_pastから取り出される。
<更新>
xt|t=xt|t-1+Ktet
Pkp8_post
(t1)=Pkp8_pred
(t1)+Ktet
et=zt-h(xt|t-1,0)=zt1-h(Pkp8_pred
(t1),0)
=Pkp8
(t1)-h(Pkp8_pred
(t1),0)
Pkp8
(t1):時間ステップt1におけるキーポイントKp8の観測値(観測ベクトル)
Pkp8_pre
(t1):時間ステップt1におけるキーポイントKp8の事前推定値(事前推定ベクトル)(xt|t-1に対応)
Pkp8_post
(t1):時間ステップt1におけるキーポイントKp8の事後推定値(事後推定ベクトル)(xt|tに対応)
これにより、粗予測処理部312は、狭可動キーポイントであるキーポイントKp8(右腰部分)の現時刻(時間ステップt1)における事後推定値(事後推定ベクトル)Pkp8_post
(t1)を取得する。
【0108】
粗予測処理部312は、他の狭可動キーポイントについても、上記と同様の処理を行い、各狭可動キーポイントの現時刻(時間ステップt1)における事後推定値(事後推定ベクトル)Pkpi_post
(t1)(i:自然数、狭可動キーポイントを示す指標値(本実施形態の場合、i={1,2,3,4,5,8,9,11,12,14}))を取得する。
【0109】
そして、粗予測処理部312は、上記処理により取得した各狭可動キーポイントの現時刻(時間ステップt1)における事後推定値(事後推定ベクトル)Pkpi_post
(t1)を含むデータをデータD2_kp_Lとして粗予測信頼度取得部321および第1メモリM1に出力する。
【0110】
精密予測処理部313は、データ分解部311から出力されるデータD1_kp_Hを入力する。また、精密予測処理部313は、現時刻よりも前の時刻に取得され、第2メモリM2に記憶されているデータD1_kp_HをデータD1_kp_H_pastとして、第2メモリM2から読み出す。精密予測処理部313は、データD1_kp_HおよびデータD1_kp_H_pastを用いて、精密予測処理を実行する。具体的には、精密予測処理部313は、時系列フィルタを用いた処理(予測処理)を実行する。ここでは、精密予測処理部313において、時系列フィルタとして、拡張カルマンフィルタを用いる場合について、説明する。
【0111】
拡張カルマンフィルタも時系列フィルタであり、時間ステップt(時刻t)における対象の内部状態を状態ベクトルxtとし、時間ステップt(時刻t)において観測された特徴を観測ベクトルztとしたとき、観測された観測ベクトルztから、直接観測できない対象の内部状態xtを推定する手法である。
【0112】
観測対象の内部状態のシステムモデルおよび対象を観測した時の観測モデル(状態空間モデル)は、以下のように表すことができる。
システムモデル(状態方程式):
xt=f(xt-1,ut,wt)
f:時間ステップt-1と時間ステップtとの状態変化を表す状態遷移関数
ut:時間ステップtの制御入力
wt:時間ステップtのシステムノイズ
観測モデル(観測方程式):
zt=h(xt,vt)
h:状態xtのときに得られる観測ベクトルを表す関数
vt:時間ステップtの観測ノイズ
運動方程式等で人の動作(または人の特定部位の移動)が表現(予測)できる場合、当該運動方程式等により予測したデータと、実際の観測データ(例えば、実際に観測されたキーポイントのデータ)とを用いて、時系列フィルタを適用することができる。
【0113】
精密予測処理部313において、(1)前時間ステップ(時間ステップt-1)で取得された広可動キーポイントのデータ(1時間ステップ前の観測対象の内部状態を示すデータ(上記の内部状態xt-1に相当))と、(2)処理対象としている被写体人物Sub1の所定の部位の動作(被写体人物Sub1の所定の部位の移動)についての物理現象を表現する方程式(例えば、運動方程式等)から予測した予測キーポイントデータ(観測データ(上記の観測ベクトルztに相当))とを用いて時系列フィルタによる処理を行うことで、現時間ステップ(時間ステップt)での観測対象の内部状態(被写体人物Sub1のポーズデータ)を取得(推定)する。
【0114】
本実施形態では、精密予測処理部313は、時系列フィルタとして、高精度な予測処理(推定処理)を行うことができる拡張カルマンフィルタを用いて、広可動キーポイントについての予測処理(精密予測処理)を行う。つまり、精密予測処理部313は、拡張カルマンフィルタを用いて、以下の処理を実行する。
【0115】
精密予測処理部313は、以下の処理により、現時間ステップ(時間ステップt)での観測対象の内部状態(被写体人物Sub1の広可動キーポイントのデータ)を取得(推定)する。
(A)予測
x
t|t-1=f(x
t-1|t-1,u
t,0)
P
t|t-1=F
tP
t-1|t-1F
T
t+G
tQ
tG
T
t
x
t|t-1:時間ステップt-1における時間ステップtの状態推定値(状態推定ベクトル)
x
t-1|t-1:時間ステップt-1における更新処理後の状態推定値(状態推定ベクトル)
F
t:システムの時間遷移に関する線形モデル
P
t-1|t-1:誤差の共分散行列
F
T
t:F
tの転置行列
G
t:時間遷移に関するノイズモデルの行列
Q
t:時間遷移に関するノイズモデルの共分散行列
G
T
t:G
tの転置行列
(B)更新
e
t=z
t-h(x
t|t-1,0)
S
t=H
tP
t|t-1H
T
t+R
t
K
t=P
t|t-1H
T
t+S
-1
t
x
t|t=x
t|t-1+K
te
t
P
t|t=(I-K
tH
t)P
t|t-1
e
t:時間ステップtの観測残差
S
t:時間ステップtの観測残差の共分散
K
t:時間ステップtの最適カルマンゲイン
x
t|t:時間ステップtにおいて更新された状態の推定値(推定ベクトル)
P
t|t:時間ステップtにおいて更新された誤差の共分散
H
t:観測モデルに関する線形モデル
R
t:時間ステップtの観測ノイズの共分散
なお、F
t、および、H
tは、拡張カルマンフィルタ(非線形カルマンフィルタの一例)を用いる場合、下記の数式により示されるものとなる。
【数1】
【数2】
すなわち、前述した状態空間モデルの関数f、関数Hは非線形関数である場合、テイラー展開より、2次微分以降の項を省略して、非線形である関数fの1次微分の項までで近似することで、線形化することで、カルマンフィルタのアルゴリズムが適用可能となる。これにより、拡張カルマンフィルタでは、状態空間モデルが非線形な関数f、Hを用いる場合であっても高精度な予測処理(推定処理)を行うことができる。つまり、拡張カルマンフィルタでは、状態空間モデルが線形な関数f、H(線形作用素f、H)を用いなければならないカルマンフィルタと比べて、計算量は増加するが、非線形なシステムモデルを扱うことができるため、高精度な予測処理(推定処理)を行うことができる。
【0116】
精密予測処理部313は、例えば、広可動キーポイントであるキーポイントKp16(左手部分)の現時刻(時間ステップt1)について、キーポイントKp16の内部状態変数(内部状態ベクトル)を、特徴量抽出画像Img1(t1)上のキーポイントKp16のx座標およびy座標として、拡張カルマンフィルタによる処理を行う。つまり、精密予測処理部313は、
t=t1
zT
t1=PT
kp16
(t1)=[xkp16
(t1),ykp16
(t1)]
zT
t1:zt1の転置行列
PT
kp16
(t1):Pkp16
(t1)の転置行列
xkp16
(t1):特徴量抽出画像Img1(t1)上のキーポイントKp16のx座標
ykp16
(t1):特徴量抽出画像Img1(t1)上のキーポイントKp16のy座標
とし、下記の更新(拡張カルマンフィルタによる更新)を行う。
<更新>
xt|t=xt|t-1+Ktet
Pkp16_post
(t1)=Pkp8_pred
(t1)+Ktet
et=zt-h(xt|t-1,0)=zt1-h(Pkp16_pred
(t1),0)
=Pkp16
(t1)-h(Pkp16_pred
(t1),0)
Pkp16
(t1):時間ステップt1におけるキーポイントKp16の観測値(観測ベクトル)
Pkp16_pre
(t1):時間ステップt1におけるキーポイントKp16の事前推定値(事前推定ベクトル)(xt|t-1に対応)
Pkp16_post
(t1):時間ステップt1におけるキーポイントKp16の事後推定値(事後推定ベクトル)(xt|tに対応)
また、精密予測処理部313は、カルマンゲインKtを計算するために用いられる、(1)システムの時間遷移に関する線形モデルFtと、(2)観測モデルに関する線形モデルHtとを、上記の(数式1)、(数式2)に相当する処理を行うことで取得する。そして、精密予測処理部313は、
Kt=Pt|t-1HT
t+S-1
t
Pt|t-1=FtPt-1|t-1FT
t+GtQtGT
t
St=HtPt|t-1HT
t+Rt
に相当する処理を実行することで、カルマンゲインKtを算出(取得)する。
【0117】
上記処理により、精密予測処理部313は、広可動キーポイントであるキーポイントKp16(左手部分)の現時刻(時間ステップt1)における事後推定値(事後推定ベクトル)Pkp16_post
(t1)を取得する。
【0118】
精密予測処理部313は、他の広可動キーポイントについても、上記と同様の処理を行い、各広可動キーポイントの現時刻(時間ステップt1)における事後推定値(事後推定ベクトル)Pkpi_post
(t1)(i:自然数、広可動キーポイントを示す指標値(本実施形態の場合、i={6,7,10,13,15,16}(左右の手、肘、足に相当)))を取得する。
【0119】
そして、精密予測処理部313は、上記処理により取得した各広可動キーポイントの現時刻(時間ステップt1)における事後推定値(事後推定ベクトル)Pkpi_post
(t1)を含むデータをデータD2_kp_Hとして精密予測信頼度取得部322および第2メモリM2に出力する。
【0120】
粗予測信頼度取得部321は、粗予測処理部312から出力される粗予測処理データD2_kp_Lに対して、粗予測信頼度取得処理を実行することで、粗予測信頼度(粗予測信頼度マップ)を取得する。具体的には、粗予測信頼度取得部321は、特徴量抽出画像Img1(t1)上において、粗予測処理データD2_kp_Lにより特定される各部位の位置(各部位に対応するキーポイントの位置(粗予測処理により推定(予測)された位置))に所定の値(画素値)(例えば、「0.2」)を設定し、それ以外の位置の値(画素値)を「0」とした信頼度マップ(信頼度を画素値としたマップ)である粗予測信頼度マップを取得する。なお、粗予測信頼度マップは、データD_heatmapに含まれるヒートマップと同じ画素サイズ、画素数、画素配列のマップであるものとする。
【0121】
例えば、
図6に示すように、粗予測処理データD2_kp_Lにより特定される左肩部分(kp
14)の位置(左肩部分に対応するキーポイントの位置(粗予測処理により推定(予測)された位置))が、
図6の右上図にD2_kp_L.kp
14で示した位置であるとき、粗予測信頼度取得部321は、粗予測信頼度マップの当該位置の信頼度(画素値)を所定の値(例えば、「0.2」)に設定し、それ以外の位置の信頼度(画素値)を「0」に設定することで、左肩部分(kp
14)の粗予測信頼度マップ(粗予測信頼度マップD3_conf_L.kp
14)を取得する(
図6の右下図を参照)。なお、部位kp
xの粗予測信頼度マップをD3_conf_L.kp
xと表記する。なお、
図6では、説明便宜のため、粗予測信頼度マップの画素を4×4の矩形(16個の矩形(画素))で表示しており、他の画像領域における粗予測信頼度マップの画素の表示は省略している。
【0122】
他の部位についても、粗予測信頼度取得部321は、上記と同様の処理を行うことで、各部位の粗予測信頼度マップD3_conf_L.kpxを取得する。
【0123】
そして、粗予測信頼度取得部321は、取得した各部位の粗予測信頼度マップD3_conf_L.kpx(x:自然数、1≦x≦16)をまとめた(含む)データを、データD3_conf_Lとして、信頼度合成部323に出力する。
【0124】
精密予測信頼度取得部322は、精密予測処理部313から出力される精密予測処理データD2_kp_Hに対して、精密予測信頼度取得処理を実行することで、精密予測信頼度(精密予測信頼度マップ)を取得する。具体的には、精密予測信頼度取得部322は、特徴量抽出画像Img1(t1)上において、精密予測処理データD2_kp_Hにより特定される各部位の位置(各部位に対応するキーポイントの位置(精密予測処理により推定(予測)された位置))に所定の値(画素値)(例えば、「0.2」)を設定し、それ以外の位置の値(画素値)を「0」とした信頼度マップ(信頼度を画素値としたマップ)である精密予測信頼度マップを取得する。なお、精密予測信頼度マップは、データD_heatmapに含まれるヒートマップと同じ画素サイズ、画素数、画素配列のマップであるものとする。
【0125】
例えば、
図7に示すように、精密予測処理データD2_kp_Hにより特定される左手部分(kp
16)の位置(左手部分に対応するキーポイントの位置(精密予測処理により推定(予測)された位置))が、
図7の右上図にD2_kp_H.kp
16で示した位置であるとき、精密予測信頼度取得部322は、精密予測信頼度マップの当該位置の信頼度(画素値)を所定の値(例えば、「0.2」)に設定し、それ以外の位置の信頼度(画素値)を「0」に設定することで、左手部分(kp
16)の精密予測信頼度マップ(精密予測信頼度マップD3_conf_L.kp
16)を取得する(
図7の右下図を参照)。なお、部位kp
xの精密予測信頼度マップをD3_conf_H.kp
xと表記する。なお、
図7では、説明便宜のため、精密予測信頼度マップの画素を4×4の矩形(16個の矩形(画素))で表示しており、他の画像領域における精密予測信頼度マップの画素の表示は省略している。
【0126】
他の部位についても、粗予測信頼度取得部321は、上記と同様の処理を行うことで、各部位の精密予測信頼度マップD3_conf_H.kpxを取得する。
【0127】
そして、精密予測信頼度取得部322は、取得した各部位の精密予測信頼度マップD3_conf_H.kpx(x:自然数、1≦x≦16)をまとめた(含む)データを、データD3_conf_Hとして、信頼度合成部323に出力する。
【0128】
信頼度合成部323は、粗予測信頼度取得部321から出力されるデータD3_conf_Lと、精密予測信頼度取得部322から出力されるデータD3_conf_Hと、ヒートマップ取得部2から出力されるデータD_heatmapとを入力する。信頼度合成部323は、データD3_conf_L、データD3_conf_H、および、データD_heatmapに対して、信頼度合成処理を実行する。具体的には、信頼度合成部323は、各部位(kpx(x:自然数、1≦x≦16))ごとに、同一位置の画素について、
(1)ヒートマップD_heatmap.kpx、と
(2A)粗予測信頼度マップD3_conf_L.kpx、または、
(2B)精密予測信頼度マップD3_conf_H.kpx
との加算処理(画素値の加算処理)を実行することで、合成信頼度マップを取得する。なお、ヒートマップD_heatmapの部位kpxのヒートマップ(ヒートマップから取得される信頼度のマップ)をヒートマップD_heatmap.kpxと表記する。
【0129】
例えば、左肩部分(kp
14)の場合、
図8に示すように、同一位置の画素について、
(1)ヒートマップD_heatmap.kp
14(
図8の上段の図)と
(2A)粗予測信頼度マップD3_conf_L.kp
14(
図8の中段の図)、と
の加算処理(画素値ごと加算処理)を実行することで、左肩部分(kp
14)の合成信頼度マップD4_conf.kp
14(
図8の下段の図)を取得する。
【0130】
また、例えば、左手部分(kp
16)の場合、
図9に示すように、同一位置の画素について、
(1)ヒートマップD_heatmap.kp
16(
図9の上段の図)と
(2B)精密予測信頼度マップD3_conf_H.kp
16(
図9の中段の図)、と
の加算処理(画素値ごと加算処理)を実行することで、左手部分(kp
16)の合成信頼度マップD4_conf.kp
16(
図9の下段の図)を取得する。
【0131】
他の部位についても、信頼度合成部323は、上記と同様の処理を行うことで、各部位の合成信頼度マップD4_conf.kpxを取得する。
【0132】
そして、信頼度合成部323は、取得した各部位の合成信頼度マップD4_conf.kpx(x:自然数、1≦x≦16)をまとめた(含む)データを、データD4_confとして、精密ポーズデータ取得部33に出力する。
【0133】
精密ポーズデータ取得部33は、2Dポーズ推定部1から出力されるデータDi_kpと、信頼度合成部323から出力されるデータD4_confと、を入力する。精密ポーズデータ取得部33は、データDi_kp、および、データD4_conf(信頼度データD4_conf)を用いて、精密ポーズデータ取得処理を実行する。具体的には、精密ポーズデータ取得部33は、各部位(kpx(x:自然数、1≦x≦16))ごとに、合成信頼度マップD4_conf.kpxにより特定される画像(特徴量抽出画像Img1(t1))上の位置と、2Dポーズ推定部1により取得されたデータDi_kp.kpxにより特定される画像(特徴量抽出画像Img1(t1))上の位置(キーポイントkpxの位置)とが略一致するか否かを判定し、以下のように処理する。
(1)両者の位置が略一致する場合、精密ポーズデータ取得部33は、精密ポーズデータの部位kpxのキーポイントを2Dポーズ推定部1により取得されたデータDi_kp.kpxとすることで、部位kpxの精密ポーズデータDo_kp.kpxを取得する。すなわち、精密ポーズデータ取得部33は、
Do_kp.kpx=Di_kp.kpx
として、部位kpxの精密ポーズデータDo_kp.kpxを取得する。
(2)一方、両者の位置が略一致しない場合、精密ポーズデータ取得部33は、精密ポーズデータの部位kpxのキーポイントを、信頼度合成部323により取得された合成信頼度マップD4_conf.kpxにより特定される画像(特徴量抽出画像Img1(t1))上の位置(合成信頼度マップD4_conf.kpxで最大値を示す画素の位置)とすることで、部位kpxの精密ポーズデータDo_kp.kpxを取得する。すなわち、精密ポーズデータ取得部33は、
Do_kp.kpx=max_P(D4_conf.kpx)
max_P(Dp):信頼度マップDpにおいて、画素値(信頼度)が最大値を示す位置(画像上の位置)の情報(例えば、画像上の座標等)を取得する関数
として、部位kpxの精密ポーズデータDo_kp.kpxを取得する。なお、上記の「略一致」とは、画像上の2点間の距離が所定の値(例えば、信頼度マップの画素ピッチに相当する距離)以下であることをいう。
【0134】
例えば、左肩部分(kp
14)の場合(粗予測処理の対象部位の場合)、
図10に示すように、2Dポーズ推定部1により取得されたデータDi_kp.kp
14の画像上の位置(
図10の上図の4×4の矩形(マトリックス)の2行1列目の画素(画素値が「0.7」の画素)の位置に相当)と、合成信頼度マップD4_conf.kp
14で最大値を示す画素の位置(
図10の上図の4×4の矩形(マトリックス)の2行3列目の画素(画素値が「0.8」の画素)の位置)とは、略一致していない(信頼度マップの画素ピッチ(隣接画素間の距離)以上離れている)。したがって、精密ポーズデータ取得部33は、精密ポーズデータの部位kp
14のキーポイントを、信頼度合成部323により取得された合成信頼度マップD4_conf.kp
14により特定される画像(特徴量抽出画像Img1
(t1))上の位置(合成信頼度マップD4_conf.kp
14で最大値を示す画素の位置)とすることで、部位kp
14の精密ポーズデータDo_kp.kp
14を取得する。すなわち、精密ポーズデータ取得部33は、
Do_kp.kp
14=max_P(D4_conf.kp
14)
max_P(Dp):信頼度マップDpにおいて、画素値(信頼度)が最大値を示す位置(画像上の位置)の情報(例えば、画像上の座標等)を取得する関数
として、部位kp
14の精密ポーズデータDo_kp.kp
14(
図10の上図の4×4の矩形(マトリックス)の2行3列目の画素(画素値が「0.8」の画素)の位置に対応)を取得する(
図10の下図を参照)。
図10の下図から分かるように、2Dポーズ推定部1により取得されたデータDi_kp.kp
14が正しい位置からずれている場合であっても、精密ポーズデータ取得部33が上記処理を実行することにより、部位kp
14の正確な位置を示すデータ(キーポイント)として、精密ポーズデータDo_kp.kp
14を取得することができる。
【0135】
なお、上記では、ヒートマップD_heatmap.kp14において画素値が最大である画素の位置と、粗予測信頼度マップD3_conf_L.kp14において画素値が非0である画素の位置とが異なる位置である場合について、説明したが、ヒートマップD_heatmap.kp14において画素値が最大である画素の位置と、粗予測信頼度マップD3_conf_L.kp14において画素値が非0である画素の位置とが一致する場合、合成信頼度マップD4_conf.kp14で最大値を示す画素の位置は、ヒートマップD_heatmap.kp14において画素値が最大である画素の位置、および、粗予測信頼度マップD3_conf_L.kp14において画素値が非0である画素の位置と同じ位置となる。つまり、この場合においても、部位kp14の正確な位置を示すデータ(キーポイント)として、精密ポーズデータDo_kp.kp14を取得することができる。
【0136】
また、例えば、左手部分(kp
16)の場合(精密予測処理の対象部位の場合)、
図11に示すように、2Dポーズ推定部1により取得されたデータDi_kp.kp
16の画像上の位置(
図11の上図の4×4の矩形(マトリックス)の2行2列目の画素(画素値が「0.9」の画素)の位置に相当)と、合成信頼度マップD4_conf.kp
16で最大値を示す画素の位置(
図11の上図の4×4の矩形(マトリックス)の4行4列目の画素(画素値が「1.0」の画素)の位置)とは、略一致していない(信頼度マップの画素ピッチ(隣接画素間の距離)以上離れている)。したがって、精密ポーズデータ取得部33は、精密ポーズデータの部位kp
16のキーポイントを、信頼度合成部323により取得された合成信頼度マップD4_conf.kp
16により特定される画像(特徴量抽出画像Img1
(t1))上の位置(合成信頼度マップD4_conf.kp
16で最大値を示す画素の位置)とすることで、部位kp
16の精密ポーズデータDo_kp.kp
16を取得する。すなわち、精密ポーズデータ取得部33は、
Do_kp.kp
16=max_P(D4_conf.kp
16)
max_P(Dp):信頼度マップDpにおいて、画素値(信頼度)が最大値を示す位置(画像上の位置)の情報(例えば、画像上の座標等)を取得する関数
として、部位kp
16の精密ポーズデータDo_kp.kp
16(
図11の上図の4×4の矩形(マトリックス)の4行4列目の画素(画素値が「1.0」の画素)の位置に対応)を取得する(
図11の下図を参照)。
図11の下図から分かるように、2Dポーズ推定部1により取得されたデータDi_kp.kp
16が正しい位置からずれている場合であっても、精密ポーズデータ取得部33が上記処理を実行することにより、部位kp
16の正確な位置を示すデータ(キーポイント)として、精密ポーズデータDo_kp.kp
16を取得することができる。
【0137】
なお、上記では、ヒートマップD_heatmap.kp16において画素値が最大である画素の位置と、精密予測信頼度マップD3_conf_H.kp16において画素値が非0である画素の位置とが異なる位置である場合について、説明したが、ヒートマップD_heatmap.kp16において画素値が最大である画素の位置と、精密予測信頼度マップD3_conf_H.kp16において画素値が非0である画素の位置とが一致する場合、合成信頼度マップD4_conf.kp16で最大値を示す画素の位置は、ヒートマップD_heatmap.kp16において画素値が最大である画素の位置、および、精密予測信頼度マップD3_conf_H.kp16において画素値が非0である画素の位置と同じ位置となる。つまり、この場合においても、部位kp16の正確な位置を示すデータ(キーポイント)として、精密ポーズデータDo_kp.kp16を取得することができる。
【0138】
また、上記では、精密ポーズデータ取得部33において、2Dポーズ推定部1により取得されたデータDi_kp.kpxの画像上の位置と、合成信頼度マップD4_conf.kpxで最大値を示す画素の位置とが、略一致しているか否か(信頼度マップの画素ピッチ(隣接画素間の距離)以上離れているか否か)を判定する場合について説明したが、これに限定されることはない。例えば、精密ポーズデータ取得部33において、2Dポーズ推定部1により取得されたデータDi_kp.kpxの画像上の位置と、粗予測処理データD2_kp_Lまたは精密予測処理データD2_kp_Hにより特定される画像上の位置とが一致しているか否かを判定するようにしてもよい。この場合、精密データ取得部3において、予測データ取得部31から取得される粗予測処理データD2_kp_Lおよび精密予測処理データD2_kp_Hが精密ポーズデータ取得部33に入力される構成を用いればよい。
【0139】
そして、2Dポーズ推定部1により取得されたデータDi_kp.kpxの画像上の位置と、粗予測処理データD2_kp_Lまたは精密予測処理データD2_kp_Hにより特定される画像上の位置とが一致していない場合、精密ポーズデータ取得部33は、合成信頼度マップD4_conf.kpxで最大値を示す画素の位置を、部位kpxの精密ポーズデータDo_kp.kpxとして取得するようにすればよい。
【0140】
他の部位についても、精密ポーズデータ取得部33は、上記と同様の処理を行うことで、各部位の精密ポーズデータDo_kp.kpxを取得する。
【0141】
そして、精密ポーズデータ取得部33は、取得した各部位の精密ポーズデータDo_kp.kpx(x:自然数、1≦x≦16)をまとめた(含む)データを、データDo_kpとして、2D-3D変換部4に出力する。
【0142】
ここで、
図12を用いて、精密データ取得部3で取得されるデータについて、説明する。
【0143】
図12に、精密ポーズデータ取得部33が上記処理により取得した各キーポイントのデータDo_kp.kp
xをまとめたデータDo_kpの一例を示す。
図12では、特徴量抽出画像Img1
(t1)、2Dポーズ推定部1により取得された2Dポーズデータ(キーポイントデータDi_kp.kp
x)を模式的に示した画像Img1
(t1)(Di_kp)、および、精密ポーズデータ取得部33により取得された精密ポーズデータDo_kp.kp
xを模式的に示した画像Img1
(t1)(Do_kp)を示している。そして、(1)
図12の画像Img1
(t1)(Di_kp)では、データDi_kpによるキーポイントをグレーの丸で示しており、
図12の画像Img1
(t1)(Do_kp)では、精密ポーズデータDi_kpによるキーポイントを黒丸で示している。
【0144】
図12から分かるように、画像Img1
(t1)(Di_kp)では、部位kp
10(右足)、kp
14(左肩)、kp
16(左手)の位置が正しい位置からずれているが、画像Img1
(t1)(Do_kp)(精密ポーズデータ)では、部位kp
10(右足)、kp
14(左肩)、kp
16(左手)の位置について、合成信頼度マップにより適切に補正されており、その結果、部位kp
10(右足)、kp
14(左肩)、kp
16(左手)について、正しい位置のキーポイントとして取得されている。
【0145】
以上のように、精密データ取得部3では、ヒートマップ取得部2により取得されたヒートマップに対して、予測データ取得部31により取得された粗予測信頼度マップまたは精密予測信頼度マップによる加算処理(同一画素における画素値の加算処理)を行うことで、より精度の高い信頼度マップ(合成信頼度マップ)を部位ごとに取得することができる。そして、精密データ取得部3では、合成信頼度マップに基づいて、精密ポーズデータを取得するので、より精度の高いポーズデータを取得することができる。
【0146】
2D-3D変換部4は、精密データ取得部3から出力されるデータDo_kp(2次元のキーポイントのデータ)を入力する。2D-3D変換部4は、データDo_kp(2次元のキーポイントのデータ)に対して、2D-3D変換処理を実行し、データDo_kp(2次元のキーポイントのデータ)に対応する3次元データ(3次元のキーポイントのデータ)をデータDo_3D_kpとして取得する。例えば、2D-3D変換部4は、2次元のキーポイントデータを入力すると、3次元のキーポイントデータを出力(推定)する機械学習済みモデル(例えば、ニューラルネットワークによる学習済みモデル)を備えており、2D-3D変換部4は、データDo_kp(2次元のキーポイントのデータ)を、上記機械学習済みモデルに入力し、当該機械学習済みモデルによる処理を行う。これにより、2D-3D変換部4は、データDo_kp(2次元のキーポイントのデータ)から、3次元のキーポイントデータを取得(推定)する。
【0147】
また、撮像装置Cam1により被写体人物Sub1を撮影している3次元空間(撮像空間)の情報、および、撮像装置Cam1の撮影パラメータの情報を取得できる場合、2D-3D変換部4は、当該撮像空間の情報と、撮像装置Cam1の撮影パラメータの情報Info_cam_prmとに基づいて、データDo_kp(2次元のキーポイントのデータ)から、3次元のキーポイントデータを取得(推定)するようにしてもよい。
【0148】
そして、2D-3D変換部4は、上記により取得したデータ(2次元のキーポイントのデータ)を、データDo_3D_kpとして、ポスト処理部5に出力する。
【0149】
ポスト処理部5は、2D-3D変換部4から出力されるデータDo_3D_kpを入力し、当該データDo_3D_kpに対してポスト処理を実行する。例えば、ポスト処理部5は、データDo_3D_kpに含まれる各キーポイントの3次元データ(3次元の座標データ)に対して、座標変換を行うことで、ポスト処理を実行する。例えば、データDo_3D_kpを用いて、CG合成処理を行う場合、データDo_3D_kpに含まれる各キーポイントの3次元データ(3次元の座標データ)を、CG合成を行うための3次元空間の3次元データ(3次元の座標データ)に変換することが好ましい。このような場合、ポスト処理部5は、データDo_3D_kpに含まれる各キーポイントの3次元データ(3次元の座標データ)に対して、座標変換を行うことで、後段のアプリケーションで使用しやすいデータ(例えば、CG合成するための3次元空間の3次元座標値を有する3次元データ)を取得することができる。
【0150】
そして、ポスト処理部5は、上記により取得したデータをデータDoutとして外部に出力する。
【0151】
≪時間ステップt2の処理≫
次に、時間ステップt2(時間ステップt2は、時間ステップt1の1時間ステップ後の時間ステップである(t2=t1+1))の処理について説明する。なお、時間ステップt1と同様の処理については、詳細な説明を省略する。
【0152】
時間ステップt2において、撮像装置Cam1により、被写体人物Sub1を含む3次元空間(撮像空間)を撮像することで、フレーム画像データImg0(t2)を取得する。
【0153】
ポーズデータ生成装置100の2Dポーズ推定部1は、撮像装置Cam1から出力されるフレーム画像データImg0(t2)をデータDinとして入力し、当該フレーム画像データImg0(t2)を用いて、2次元ポーズデータを推定(取得)する処理(2Dポーズ推定処理)を実行する。具体的な処理は、時間ステップt1のときの処理と同様である。
【0154】
特徴量抽出部PP1は、データDin(フレーム画像データImg10
(t2))に対して、特徴量抽出処理(例えば、クラス分類を行いつつ、物体検出を行う処理)を実行することで、被写体人物(物体検出の対象)に相当する画像領域(画像Img1
(t2))(
図3Bを参照)を抽出する。
【0155】
そして、特徴量抽出部PP1は、特徴量抽出処理により取得した、物体検出の対象の画像領域(画像Img1(t2))についてのデータ(物体検出の対象が含まれる画像領域を含む画像データ、抽出した画像領域の座標、サイズについてのデータ等)、および、物体検出した対象のクラス分類に関するデータ(物体検出のクラス(本実施形態では、「人」))等を含むデータを、特徴量抽出データD0として、2Dポーズ推定部1およびヒートマップ取得部2に出力する。
【0156】
そして、2Dポーズ推定部1は、特徴量抽出部PP1により取得された特徴量抽出画像Img1(t2)に対して、2Dポーズ推定処理を実行し、当該処理により取得した2次元キーポイントデータ(16個の点kp1~kp16の2次元座標データ)を含むデータを、データDi_kpとして、精密データ取得部3に出力する。
【0157】
ポーズデータ生成装置100のヒートマップ取得部2は、特徴量抽出画像データImg1(t2)により形成されるフレーム画像(特徴量抽出画像Img1(t2))から、ヒートマップを取得する処理(ヒートマップ取得処理)を実行する。具体的な処理は、時間ステップt1のときの処理と同様である。
【0158】
ヒートマップ取得部2は、ヒートマップ取得処理により、キーポイントkp1~kp16のそれぞれについてのヒートマップ(合計16個のヒートマップ)を取得する。
【0159】
そして、ヒートマップ取得部2は、ヒートマップ取得処理により取得したヒートマップを含むデータをデータD_heatmapとして精密データ取得部3に出力する。
【0160】
精密データ取得部3のデータ分解部311は、2Dポーズ推定部1から出力されるデータDi_kpを入力し、当該データDi_kpに対して分解処理(キーポイントデータを人の部位ごとに分解する処理)を実行する。具体的な処理は、時間ステップt1のときの処理と同様である。
【0161】
データ分解部311は、(1)分解処理により取得した狭可動キーポイントのデータを含むデータをデータD1_kp_Lとして、粗予測処理部312および第1メモリM1に出力し、(2)分解処理により取得した広可動キーポイントのデータを含むデータをデータD1_kp_Hとして、精密予測処理部313および第2メモリM2に出力する。
【0162】
第1メモリM1は、データ分解部311から出力されるデータD1_kp_Lを入力し、当該データD1_kp_Lを記憶保持する。
【0163】
第2メモリM2は、データ分解部311から出力されるデータD1_kp_Hを入力し、当該データD1_kp_Hを記憶保持する。
【0164】
粗予測処理部312は、データ分解部311から出力されるデータD1_kp_Lを入力する。また、粗予測処理部312は、現時刻よりも前の時刻に取得され、第1メモリM1に記憶されているデータD1_kp_LをデータD1_kp_L_pastとして、第1メモリM1から読み出す。粗予測処理部312は、データD1_kp_LおよびデータD1_kp_L_pastを用いて、粗予測処理を実行する。
【0165】
粗予測処理部312は、時間ステップt1のときと同様に、時系列フィルタとして、比較的計算量が少なくてすむカルマンフィルタを用いて、狭可動キーポイントについての予測処理(粗予測処理)を行う。つまり、粗予測処理部312は、カルマンフィルタを用いて、以下の処理を実行する。
【0166】
粗予測処理部312は、以下の処理により、現時間ステップ(時間ステップt)での観測対象の内部状態(被写体人物Sub1の狭可動キーポイントのデータ)を取得(推定)する。
(A)予測
xt|t-1=f(xt-1|t-1,ut,0)
Pt|t-1=FtPt-1|t-1FT
t+GtQtGT
t
xt|t-1:時間ステップt-1における時間ステップtの状態推定値(状態推定ベクトル)
xt-1|t-1:時間ステップt-1における更新処理後の状態推定値(状態推定ベクトル)
Ft:システムの時間遷移に関する線形モデル
Pt-1|t-1:誤差の共分散行列
FT
t:Ftの転置行列
Gt:時間遷移に関するノイズモデルの行列
Qt:時間遷移に関するノイズモデルの共分散行列
GT
t:Gtの転置行列
(B)更新
et=zt-h(xt|t-1,0)
St=HtPt|t-1HT
t+Rt
Kt=Pt|t-1HT
t+S-1
t
xt|t=xt|t-1+Ktet
Pt|t=(I-KtHt)Pt|t-1
et:時間ステップtの観測残差
St:時間ステップtの観測残差の共分散
Kt:時間ステップtの最適カルマンゲイン
xt|t:時間ステップtにおいて更新された状態の推定値(推定ベクトル)
Pt|t:時間ステップtにおいて更新された誤差の共分散
Ht:観測モデルに関する線形モデル
Rt:時間ステップtの観測ノイズの共分散
粗予測処理部312は、例えば、狭可動キーポイントであるキーポイントKp8(右腰部分)の現時刻(時間ステップt2)について、キーポイントKp8の内部状態変数(内部状態ベクトル)を、特徴量抽出画像Img1(t2)上のキーポイントKp8のx座標およびy座標として、カルマンフィルタによる処理を行う。つまり、粗予測処理部312は、
t=t2
zT
t2=PT
kp8
(t2)=[xkp8
(t2),ykp8
(t2)]
zT
t2:zt2の転置行列
PT
kp8
(t2):Pkp8
(t2)の転置行列
xkp8
(t2):特徴量抽出画像Img1(t2)上のキーポイントKp8のx座標
ykp8
(t2):特徴量抽出画像Img1(t2)上のキーポイントKp8のy座標
とし、下記の更新(カルマンフィルタによる更新)を行う。なお、xt-1|t-1(時間ステップt-1における更新処理後の状態推定値(状態推定ベクトル))は、データD1_kp_L_pastに含まれており、データD1_kp_L_pastから取り出される。
<更新>
xt|t=xt|t-1+Ktet
Pkp8_post
(t2)=Pkp8_pred
(t2)+Ktet
et=zt-h(xt|t-1,0)=zt1-h(Pkp8_pred
(t2),0)
=Pkp8
(t2)-h(Pkp8_pred
(t2),0)
Pkp8
(t2):時間ステップt2におけるキーポイントKp8の観測値(観測ベクトル)
Pkp8_pre
(t2):時間ステップt2におけるキーポイントKp8の事前推定値(事前推定ベクトル)(xt|t-1に対応)
Pkp8_post
(t2):時間ステップt2におけるキーポイントKp8の事後推定値(事後推定ベクトル)(xt|tに対応)
これにより、粗予測処理部312は、狭可動キーポイントであるキーポイントKp8(右腰部分)の現時刻(時間ステップt2)における事後推定値(事後推定ベクトル)Pkp8_post
(t2)を取得する。
【0167】
粗予測処理部312は、他の狭可動キーポイントについても、上記と同様の処理を行い、各狭可動キーポイントの現時刻(時間ステップt2)における事後推定値(事後推定ベクトル)Pkpi_post
(t2)(i:自然数、狭可動キーポイントを示す指標値(本実施形態の場合、i={1,2,3,4,5,8,9,11,12,14}))を取得する。
【0168】
そして、粗予測処理部312は、上記処理により取得した各狭可動キーポイントの現時刻(時間ステップt2)における事後推定値(事後推定ベクトル)Pkpi_post
(t2)を含むデータをデータD2_kp_Lとして粗予測信頼度取得部321および第1メモリM1に出力する。
【0169】
精密予測処理部313は、データ分解部311から出力されるデータD1_kp_Hを入力する。また、精密予測処理部313は、現時刻よりも前の時刻に取得され、第2メモリM2に記憶されているデータD1_kp_HをデータD1_kp_H_pastとして、第2メモリM2から読み出す。精密予測処理部313は、データD1_kp_HおよびデータD1_kp_H_pastを用いて、精密予測処理を実行する。
具体的には、精密予測処理部313は、時間ステップt1のときと同様に、時系列フィルタとして拡張カルマンフィルタを用いた処理(予測処理)を実行する。
【0170】
精密予測処理部313において、(1)前時間ステップ(時間ステップt-1)で取得された広可動キーポイントのデータ(1時間ステップ前の観測対象の内部状態を示すデータ(上記の内部状態xt-1に相当))と、(2)処理対象としている被写体人物Sub1の所定の部位の動作(被写体人物Sub1の所定の部位の移動)についての物理現象を表現する方程式(例えば、運動方程式等)から予測した予測キーポイントデータ(観測データ(上記の観測ベクトルztに相当))とを用いて時系列フィルタによる処理を行うことで、現時間ステップ(時間ステップt)での観測対象の内部状態(被写体人物Sub1のポーズデータ)を取得(推定)する。
【0171】
精密予測処理部313は、時系列フィルタとして、高精度な予測処理(推定処理)を行うことができる拡張カルマンフィルタを用いて、広可動キーポイントについての予測処理(精密予測処理)を行う。
【0172】
精密予測処理部313は、例えば、広可動キーポイントであるキーポイントkp16(左手部分)の現時刻(時間ステップt2)について、キーポイントkp16の内部状態変数(内部状態ベクトル)を、特徴量抽出画像Img1(t2)上のキーポイントkp16のx座標およびy座標として、拡張カルマンフィルタによる処理を行う。つまり、精密予測処理部313は、
t=t2
zT
t2=PT
kp16
(t2)=[xkp16
(t2),ykp16
(t2)]
zT
t2:zt2の転置行列
PT
kp16
(t2):Pkp16
(t2)の転置行列
xkp16
(t2):特徴量抽出画像Img1(t2)上のキーポイントKp16のx座標
ykp16
(t2):特徴量抽出画像Img1(t2)上のキーポイントKp16のy座標
とし、下記の更新(拡張カルマンフィルタによる更新)を行う。
<更新>
xt|t=xt|t-1+Ktet
Pkp16_post
(t2)=Pkp8_pred
(t2)+Ktet
et=zt-h(xt|t-1,0)=zt1-h(Pkp16_pred
(t2),0)
=Pkp16
(t2)-h(Pkp16_pred
(t2),0)
Pkp16
(t2):時間ステップt2におけるキーポイントKp16の観測値(観測ベクトル)
Pkp16_pre
(t2):時間ステップt2におけるキーポイントKp16の事前推定値(事前推定ベクトル)(xt|t-1に対応)
Pkp16_post
(t2):時間ステップt2におけるキーポイントKp16の事後推定値(事後推定ベクトル)(xt|tに対応)
また、精密予測処理部313は、カルマンゲインKtを計算するために用いられる、(1)システムの時間遷移に関する線形モデルFtと、(2)観測モデルに関する線形モデルHtとを、上記の(数式1)、(数式2)に相当する処理を行うことで取得する。そして、精密予測処理部313は、
Kt=Pt|t-1HT
t+S-1
t
Pt|t-1=FtPt-1|t-1FT
t+GtQtGT
t
St=HtPt|t-1HT
t+Rt
に相当する処理を実行することで、カルマンゲインKtを算出(取得)する。
【0173】
上記処理により、精密予測処理部313は、広可動キーポイントであるキーポイントKp16(左手部分)の現時刻(時間ステップt2)における事後推定値(事後推定ベクトル)Pkp16_post
(t2)を取得する。
【0174】
精密予測処理部313は、他の広可動キーポイントについても、上記と同様の処理を行い、各広可動キーポイントの現時刻(時間ステップt2)における事後推定値(事後推定ベクトル)Pkpi_post
(t2)(i:自然数、広可動キーポイントを示す指標値(本実施形態の場合、i={6,7,10,13,15,16}(左右の手、肘、足に相当)))を取得する。
【0175】
そして、精密予測処理部313は、上記処理により取得した各広可動キーポイントの現時刻(時間ステップt2)における事後推定値(事後推定ベクトル)Pkpi_post
(t2)を含むデータをデータD2_kp_Hとして精密予測信頼度取得部322および第2メモリM2に出力する。
【0176】
粗予測信頼度取得部321は、粗予測処理部312から出力される粗予測処理データD2_kp_Lに対して、時間ステップt1の処理と同様に、粗予測信頼度取得処理を実行することで、粗予測信頼度(粗予測信頼度マップ)を取得する。
【0177】
そして、粗予測信頼度取得部321は、取得した各部位の粗予測信頼度マップD3_conf_L.kpx(x:自然数、1≦x≦16)をまとめた(含む)データを、データD3_conf_Lとして、信頼度合成部323に出力する。
【0178】
精密予測信頼度取得部322は、精密予測処理部313から出力される精密予測処理データD2_kp_Hに対して、時間ステップt1の処理と同様に、精密予測信頼度取得処理を実行することで、精密予測信頼度(精密予測信頼度マップ)を取得する。
【0179】
そして、精密予測信頼度取得部322は、取得した各部位の精密予測信頼度マップD3_conf_H.kpx(x:自然数、1≦x≦16)をまとめた(含む)データを、データD3_conf_Hとして、信頼度合成部323に出力する。
【0180】
信頼度合成部323は、粗予測信頼度取得部321から出力されるデータD3_conf_Lと、精密予測信頼度取得部322から出力されるデータD3_conf_Hと、ヒートマップ取得部2から出力されるデータD_heatmapとを入力する。信頼度合成部323は、データD3_conf_L、データD3_conf_H、および、データD_heatmapに対して、時間ステップt1の処理と同様に、信頼度合成処理を実行する。
【0181】
そして、信頼度合成部323は、取得した各部位の合成信頼度マップD4_conf.kpx(x:自然数、1≦x≦16)をまとめた(含む)データを、データD4_confとして、精密ポーズデータ取得部33に出力する。
【0182】
精密ポーズデータ取得部33は、2Dポーズ推定部1から出力されるデータDi_kpと、信頼度合成部323から出力されるデータD4_confと、を入力する。精密ポーズデータ取得部33は、データDi_kp、および、データD4_conf(信頼度データD4_conf)を用いて、時間ステップt1の処理と同様に、精密ポーズデータ取得処理を実行する。
【0183】
そして、精密ポーズデータ取得部33は、取得した各部位の精密ポーズデータDo_kp.kpx(x:自然数、1≦x≦16)をまとめた(含む)データを、データDo_kpとして、2D-3D変換部4に出力する。
【0184】
図13に、時間ステップt2において、精密ポーズデータ取得部33が上記処理により取得した各キーポイントのデータDo_kp.kp
xをまとめたデータDo_kpの一例を示す。
図13では、特徴量抽出画像Img1
(t2)、2Dポーズ推定部1により取得された2Dポーズデータ(キーポイントデータDi_kp.kp
x)を模式的に示した画像Img1
(t2)(Di_kp)、および、精密ポーズデータ取得部33により取得された精密ポーズデータDo_kp.kp
xを模式的に示した画像Img1
(t2)(Do_kp)を示している。そして、(1)
図13の画像Img1
(t2)(Di_kp)では、データDi_kpによるキーポイントをグレーの丸で示しており、
図12の画像Img1
(t2)(Do_kp)では、精密ポーズデータDi_kpによるキーポイントを黒丸で示している。
【0185】
図13から分かるように、画像Img1
(t2)(Di_kp)では、部位kp
10(右足)、kp
15(左肘)、kp
16(左手)の位置が正しい位置からずれているが、画像Img1
(t2)(Do_kp)(精密ポーズデータ)では、部位kp
10(右足)、kp
15(左肘)、kp
16(左手)の位置について、合成信頼度マップにより適切に補正されており、その結果、部位kp
10(右足)、kp
15(左肘)、kp
16(左手)について、正しい位置のキーポイントとして取得されている。
【0186】
以上のように、精密データ取得部3では、ヒートマップ取得部2により取得されたヒートマップに対して、予測データ取得部31により取得された粗予測信頼度マップまたは精密予測信頼度マップによる加算処理(同一画素における画素値の加算処理)を行うことで、より精度の高い信頼度マップ(合成信頼度マップ)を部位ごとに取得することができる。そして、精密データ取得部3では、合成信頼度マップに基づいて、精密ポーズデータを取得するので、より精度の高いポーズデータを取得することができる。
【0187】
2D-3D変換部4は、精密データ取得部3から出力されるデータDo_kp(2次元のキーポイントのデータ)を入力する。2D-3D変換部4は、データDo_kp(2次元のキーポイントのデータ)に対して、時間ステップt1のときと同様に、2D-3D変換処理を実行し、データDo_kp(2次元のキーポイントのデータ)に対応する3次元データ(3次元のキーポイントのデータ)をデータDo_3D_kpとして取得する。
【0188】
そして、2D-3D変換部4は、上記により取得したデータ(2次元のキーポイントのデータ)を、データDo_3D_kpとして、ポスト処理部5に出力する。
【0189】
ポスト処理部5は、2D-3D変換部4から出力されるデータDo_3D_kpを入力し、時間ステップt1のときと同様に、当該データDo_3D_kpに対してポスト処理を実行する。
【0190】
そして、ポスト処理部5は、ポスト処理により取得したデータをデータDoutとして外部に出力する。
【0191】
≪時間ステップt3の処理≫
次に、時間ステップt3(時間ステップt3は、時間ステップt2の1時間ステップ後の時間ステップである(t3=t2+1=t1+2))の処理について説明する。なお、時間ステップt1、t2と同様の処理については、詳細な説明を省略する。
【0192】
時間ステップt3において、撮像装置Cam1により、被写体人物Sub1を含む3次元空間(撮像空間)を撮像することで、フレーム画像データImg0(t3)を取得する。
【0193】
ポーズデータ生成装置100の2Dポーズ推定部1は、撮像装置Cam1から出力されるフレーム画像データImg0(t3)をデータDinとして入力し、当該フレーム画像データImg0(t3)を用いて、2次元ポーズデータを推定(取得)する処理(2Dポーズ推定処理)を実行する。具体的な処理は、時間ステップt1のときの処理と同様である。
【0194】
特徴量抽出部PP1は、データDin(フレーム画像データImg10
(t3))に対して、特徴量抽出処理(例えば、クラス分類を行いつつ、物体検出を行う処理)を実行することで、被写体人物(物体検出の対象)に相当する画像領域(画像Img1
(t3))(
図3Bを参照)を抽出する。
【0195】
そして、特徴量抽出部PP1は、特徴量抽出処理により取得した、物体検出の対象の画像領域(画像Img1(t3))についてのデータ(物体検出の対象が含まれる画像領域を含む画像データ、抽出した画像領域の座標、サイズについてのデータ等)、および、物体検出した対象のクラス分類に関するデータ(物体検出のクラス(本実施形態では、「人」))等を含むデータを、特徴量抽出データD0として、2Dポーズ推定部1およびヒートマップ取得部2に出力する。
【0196】
そして、2Dポーズ推定部1は、特徴量抽出部PP1により取得された特徴量抽出画像Img1(t3)に対して、2Dポーズ推定処理を実行し、当該処理により取得した2次元キーポイントデータ(16個の点kp1~kp16の2次元座標データ)を含むデータを、データDi_kpとして、精密データ取得部3に出力する。
【0197】
ポーズデータ生成装置100のヒートマップ取得部2は、特徴量抽出画像データImg1(t2)により形成されるフレーム画像(特徴量抽出画像Img1(t3))から、ヒートマップを取得する処理(ヒートマップ取得処理)を実行する。具体的な処理は、時間ステップt1のときの処理と同様である。
【0198】
ヒートマップ取得部2は、ヒートマップ取得処理により、キーポイントkp1~kp16のそれぞれについてのヒートマップ(合計16個のヒートマップ)を取得する。
【0199】
そして、ヒートマップ取得部2は、ヒートマップ取得処理により取得したヒートマップを含むデータをデータD_heatmapとして精密データ取得部3に出力する。
【0200】
精密データ取得部3のデータ分解部311は、2Dポーズ推定部1から出力されるデータDi_kpを入力し、当該データDi_kpに対して分解処理(キーポイントデータを人の部位ごとに分解する処理)を実行する。具体的な処理は、時間ステップt1のときの処理と同様である。
【0201】
データ分解部311は、(1)分解処理により取得した狭可動キーポイントのデータを含むデータをデータD1_kp_Lとして、粗予測処理部312および第1メモリM1に出力し、(2)分解処理により取得した広可動キーポイントのデータを含むデータをデータD1_kp_Hとして、精密予測処理部313および第2メモリM2に出力する。
【0202】
第1メモリM1は、データ分解部311から出力されるデータD1_kp_Lを入力し、当該データD1_kp_Lを記憶保持する。
【0203】
第2メモリM2は、データ分解部311から出力されるデータD1_kp_Hを入力し、当該データD1_kp_Hを記憶保持する。
【0204】
粗予測処理部312は、データ分解部311から出力されるデータD1_kp_Lを入力する。また、粗予測処理部312は、現時刻よりも前の時刻に取得され、第1メモリM1に記憶されているデータD1_kp_LをデータD1_kp_L_pastとして、第1メモリM1から読み出す。粗予測処理部312は、データD1_kp_LおよびデータD1_kp_L_pastを用いて、粗予測処理を実行する。
【0205】
粗予測処理部312は、時間ステップt1のときと同様に、時系列フィルタとして、比較的計算量が少なくてすむカルマンフィルタを用いて、狭可動キーポイントについての予測処理(粗予測処理)を行う。つまり、粗予測処理部312は、カルマンフィルタを用いて、以下の処理を実行する。
【0206】
粗予測処理部312は、以下の処理により、現時間ステップ(時間ステップt)での観測対象の内部状態(被写体人物Sub1の狭可動キーポイントのデータ)を取得(推定)する。
(A)予測
xt|t-1=f(xt-1|t-1,ut,0)
Pt|t-1=FtPt-1|t-1FT
t+GtQtGT
t
xt|t-1:時間ステップt-1における時間ステップtの状態推定値(状態推定ベクトル)
xt-1|t-1:時間ステップt-1における更新処理後の状態推定値(状態推定ベクトル)
Ft:システムの時間遷移に関する線形モデル
Pt-1|t-1:誤差の共分散行列
FT
t:Ftの転置行列
Gt:時間遷移に関するノイズモデルの行列
Qt:時間遷移に関するノイズモデルの共分散行列
GT
t:Gtの転置行列
(B)更新
et=zt-h(xt|t-1,0)
St=HtPt|t-1HT
t+Rt
Kt=Pt|t-1HT
t+S-1
t
xt|t=xt|t-1+Ktet
Pt|t=(I-KtHt)Pt|t-1
et:時間ステップtの観測残差
St:時間ステップtの観測残差の共分散
Kt:時間ステップtの最適カルマンゲイン
xt|t:時間ステップtにおいて更新された状態の推定値(推定ベクトル)
Pt|t:時間ステップtにおいて更新された誤差の共分散
Ht:観測モデルに関する線形モデル
Rt:時間ステップtの観測ノイズの共分散
粗予測処理部312は、例えば、狭可動キーポイントであるキーポイントKp8(右腰部分)の現時刻(時間ステップt3)について、キーポイントKp8の内部状態変数(内部状態ベクトル)を、特徴量抽出画像Img1(t3)上のキーポイントKp8のx座標およびy座標として、カルマンフィルタによる処理を行う。つまり、粗予測処理部312は、
t=t3
zT
t3=PT
kp8
(t3)=[xkp8
(t3),ykp8
(t3)]
zT
t3:zt3の転置行列
PT
kp8
(t3):Pkp8
(t3)の転置行列
xkp8
(t3):特徴量抽出画像Img1(t3)上のキーポイントKp8のx座標
ykp8
(t3):特徴量抽出画像Img1(t3)上のキーポイントKp8のy座標
とし、下記の更新(カルマンフィルタによる更新)を行う。なお、xt-1|t-1(時間ステップt-1における更新処理後の状態推定値(状態推定ベクトル))は、データD1_kp_L_pastに含まれており、データD1_kp_L_pastから取り出される。
<更新>
xt|t=xt|t-1+Ktet
Pkp8_post
(t3)=Pkp8_pred
(t3)+Ktet
et=zt-h(xt|t-1,0)=zt1-h(Pkp8_pred
(t3),0)
=Pkp8
(t3)-h(Pkp8_pred
(t3),0)
Pkp8
(t3):時間ステップt3におけるキーポイントKp8の観測値(観測ベクトル)
Pkp8_pre
(t3):時間ステップt3におけるキーポイントKp8の事前推定値(事前推定ベクトル)(xt|t-1に対応)
Pkp8_post
(t3):時間ステップt3におけるキーポイントKp8の事後推定値(事後推定ベクトル)(xt|tに対応)
これにより、粗予測処理部312は、狭可動キーポイントであるキーポイントKp8(右腰部分)の現時刻(時間ステップt3)における事後推定値(事後推定ベクトル)Pkp8_post
(t3)を取得する。
【0207】
粗予測処理部312は、他の狭可動キーポイントについても、上記と同様の処理を行い、各狭可動キーポイントの現時刻(時間ステップt3)における事後推定値(事後推定ベクトル)Pkpi_post
(t3)(i:自然数、狭可動キーポイントを示す指標値(本実施形態の場合、i={1,2,3,4,5,8,9,11,12,14}))を取得する。
【0208】
そして、粗予測処理部312は、上記処理により取得した各狭可動キーポイントの現時刻(時間ステップt3)における事後推定値(事後推定ベクトル)Pkpi_post
(t3)を含むデータをデータD2_kp_Lとして粗予測信頼度取得部321および第1メモリM1に出力する。
【0209】
精密予測処理部313は、データ分解部311から出力されるデータD1_kp_Hを入力する。また、精密予測処理部313は、現時刻よりも前の時刻に取得され、第2メモリM2に記憶されているデータD1_kp_HをデータD1_kp_H_pastとして、第2メモリM2から読み出す。精密予測処理部313は、データD1_kp_HおよびデータD1_kp_H_pastを用いて、精密予測処理を実行する。
具体的には、精密予測処理部313は、時間ステップt1のときと同様に、時系列フィルタとして拡張カルマンフィルタを用いた処理(予測処理)を実行する。
【0210】
精密予測処理部313において、(1)前時間ステップ(時間ステップt-1)で取得された広可動キーポイントのデータ(1時間ステップ前の観測対象の内部状態を示すデータ(上記の内部状態xt-1に相当))と、(2)処理対象としている被写体人物Sub1の所定の部位の動作(被写体人物Sub1の所定の部位の移動)についての物理現象を表現する方程式(例えば、運動方程式等)から予測した予測キーポイントデータ(観測データ(上記の観測ベクトルztに相当))とを用いて時系列フィルタによる処理を行うことで、現時間ステップ(時間ステップt)での観測対象の内部状態(被写体人物Sub1のポーズデータ)を取得(推定)する。
【0211】
精密予測処理部313は、時系列フィルタとして、高精度な予測処理(推定処理)を行うことができる拡張カルマンフィルタを用いて、広可動キーポイントについての予測処理(精密予測処理)を行う。
【0212】
精密予測処理部313は、例えば、広可動キーポイントであるキーポイントKp16(左手部分)の現時刻(時間ステップt3)について、キーポイントKp16の内部状態変数(内部状態ベクトル)を、特徴量抽出画像Img1(t3)上のキーポイントKp16のx座標およびy座標として、拡張カルマンフィルタによる処理を行う。つまり、精密予測処理部313は、
t=t3
zT
t3=PT
kp16
(t3)=[xkp16
(t3),ykp16
(t3)]
zT
t3:zt3の転置行列
PT
kp16
(t3):Pkp16
(t3)の転置行列
xkp16
(t3):特徴量抽出画像Img1(t3)上のキーポイントKp16のx座標
ykp16
(t3):特徴量抽出画像Img1(t3)上のキーポイントKp16のy座標
とし、下記の更新(拡張カルマンフィルタによる更新)を行う。
<更新>
xt|t=xt|t-1+Ktet
Pkp16_post
(t3)=Pkp8_pred
(t3)+Ktet
et=zt-h(xt|t-1,0)=zt1-h(Pkp16_pred
(t3),0)
=Pkp16
(t3)-h(Pkp16_pred
(t3),0)
Pkp16
(t3):時間ステップt3におけるキーポイントKp16の観測値(観測ベクトル)
Pkp16_pre
(t3):時間ステップt3におけるキーポイントKp16の事前推定値(事前推定ベクトル)(xt|t-1に対応)
Pkp16_post
(t3):時間ステップt3におけるキーポイントKp16の事後推定値(事後推定ベクトル)(xt|tに対応)
また、精密予測処理部313は、カルマンゲインKtを計算するために用いられる、(1)システムの時間遷移に関する線形モデルFtと、(2)観測モデルに関する線形モデルHtとを、上記の(数式1)、(数式2)に相当する処理を行うことで取得する。そして、精密予測処理部313は、
Kt=Pt|t-1HT
t+S-1
t
Pt|t-1=FtPt-1|t-1FT
t+GtQtGT
t
St=HtPt|t-1HT
t+Rt
に相当する処理を実行することで、カルマンゲインKtを算出(取得)する。
【0213】
上記処理により、精密予測処理部313は、広可動キーポイントであるキーポイントKp16(左手部分)の現時刻(時間ステップt3)における事後推定値(事後推定ベクトル)Pkp16_post
(t3)を取得する。
【0214】
精密予測処理部313は、他の広可動キーポイントについても、上記と同様の処理を行い、各広可動キーポイントの現時刻(時間ステップt3)における事後推定値(事後推定ベクトル)Pkpi_post
(t3)(i:自然数、広可動キーポイントを示す指標値(本実施形態の場合、i={6,7,10,13,15,16}(左右の手、肘、足に相当)))を取得する。
【0215】
そして、精密予測処理部313は、上記処理により取得した各広可動キーポイントの現時刻(時間ステップt3)における事後推定値(事後推定ベクトル)Pkpi_post
(t3)を含むデータをデータD2_kp_Hとして精密予測信頼度取得部322および第2メモリM2に出力する。
【0216】
粗予測信頼度取得部321は、粗予測処理部312から出力される粗予測処理データD2_kp_Lに対して、時間ステップt1の処理と同様に、粗予測信頼度取得処理を実行することで、粗予測信頼度(粗予測信頼度マップ)を取得する。
【0217】
そして、粗予測信頼度取得部321は、取得した各部位の粗予測信頼度マップD3_conf_L.kpx(x:自然数、1≦x≦16)をまとめた(含む)データを、データD3_conf_Lとして、信頼度合成部323に出力する。
【0218】
精密予測信頼度取得部322は、精密予測処理部313から出力される精密予測処理データD2_kp_Hに対して、時間ステップt1の処理と同様に、精密予測信頼度取得処理を実行することで、精密予測信頼度(精密予測信頼度マップ)を取得する。
【0219】
時間ステップt3において、左腕部分がオクルージョン状態であるが、精密データ取得部3では、精密予測処理(および/または、粗予測処理)により、オクルージョン状態にある部位の位置を予測(推定)することができるので、オクルージョン状態にある部位の信頼度(粗予測信頼度マップ、および/または、精密予測信頼度マップ)を取得することができる。
【0220】
例えば、
図14に示すように、精密予測処理データD2_kp_Hにより特定される左手部分(kp
16)(オクルージョン状態の部位)の位置(左手部分に対応するキーポイントの位置(精密予測処理により推定(予測)された位置))が、
図14の右上図にD2_kp_H.kp
16で示した位置であるとき、精密予測信頼度取得部322は、精密予測信頼度マップの当該位置の信頼度(画素値)を所定の値(例えば、「0.2」)に設定し、それ以外の位置の信頼度(画素値)を「0」に設定することで、左手部分(kp
16)の精密予測信頼度マップ(精密予測信頼度マップD3_conf_L.kp
16)を取得する(
図14の右下図を参照)。なお、
図14では、説明便宜のため、精密予測信頼度マップの画素を4×4の矩形(16個の矩形(画素))で表示しており、他の画像領域における精密予測信頼度マップの画素の表示は省略している。
【0221】
他の部位についても、粗予測信頼度取得部321は、上記と同様の処理を行うことで、各部位の精密予測信頼度マップD3_conf_H.kpxを取得する。
【0222】
そして、精密予測信頼度取得部322は、取得した各部位の精密予測信頼度マップD3_conf_H.kpx(x:自然数、1≦x≦16)をまとめた(含む)データを、データD3_conf_Hとして、信頼度合成部323に出力する。
【0223】
信頼度合成部323は、粗予測信頼度取得部321から出力されるデータD3_conf_Lと、精密予測信頼度取得部322から出力されるデータD3_conf_Hと、ヒートマップ取得部2から出力されるデータD_heatmapとを入力する。信頼度合成部323は、データD3_conf_L、データD3_conf_H、および、データD_heatmapに対して、時間ステップt1の処理と同様に、信頼度合成処理を実行する。
【0224】
例えば、オクルージョン状態である左手部分(kp
16)の場合、
図15に示すように、同一位置の画素について、
(1)ヒートマップD_heatmap.kp
16(
図15の上段の図)と
(2B)精密予測信頼度マップD3_conf_H.kp
16(
図15の中段の図)、と
の加算処理(画素値ごと加算処理)を実行することで、左手部分(kp
16)の合成信頼度マップD4_conf.kp
16(
図15の下段の図)を取得する。
【0225】
なお、オクルージョン状態である左手部分(kp
16)について、ヒートマップD_heatmap.kp
16の各画素の値は、
図15の上段の図に示すように、全て「0」(左手部分に相当する領域が検出されておらず、信頼度が「0」であると判定された状態)である。
【0226】
したがって、合成信頼度マップD4_conf.kp
16(
図15の下段の図)は、精密予測信頼度マップD3_conf_H.kp
16(
図15の中段の図)と一致することとなるが、精密予測信頼度マップD3_conf_H.kp
16により、オクルージョン状態の左手部分の位置が適切に予測(推定)されるので、オクルージョン状態の左手部分について、適切な合成信頼度マップD4_conf.kp
16(
図15の下段の図)を取得することができる。
【0227】
他の部位についても、信頼度合成部323は、上記と同様の処理を行うことで、各部位の合成信頼度マップD4_conf.kpxを取得する。
【0228】
そして、信頼度合成部323は、取得した各部位の合成信頼度マップD4_conf.kpx(x:自然数、1≦x≦16)をまとめた(含む)データを、データD4_confとして、精密ポーズデータ取得部33に出力する。
【0229】
精密ポーズデータ取得部33は、2Dポーズ推定部1から出力されるデータDi_kpと、信頼度合成部323から出力されるデータD4_confと、を入力する。精密ポーズデータ取得部33は、データDi_kp、および、データD4_conf(信頼度データD4_conf)を用いて、時間ステップt1の処理と同様に、精密ポーズデータ取得処理を実行する。
【0230】
例えば、オクルージョン状態の左手部分(kp
16)の場合、2Dポーズ推定部1によりオクルージョン状態の左手部分(kp
16)を検出することはできず、データDi_kp.kp
16を取得できない、あるいは、取得できたとしても、データDi_kp.kp
16で特定される左手部分の画像上の位置は、正しい位置からずれて位置となる。したがって、データDi_kp.kp
16(取得できない場合もあり)で特定される画像上の位置(特定できない場合もあり)と、合成信頼度マップD4_conf.kp
16で最大値を示す画素の位置(
図16の上図の4×4の矩形(マトリックス)の3行3列目の画素(画素値が「0.2」の画素)の位置)とは、略一致していない(信頼度マップの画素ピッチ(隣接画素間の距離)以上離れている)。したがって、精密ポーズデータ取得部33は、精密ポーズデータの部位kp
16のキーポイントを、信頼度合成部323により取得された合成信頼度マップD4_conf.kp
16により特定される画像(特徴量抽出画像Img1
(t3))上の位置(合成信頼度マップD4_conf.kp
16で最大値を示す画素の位置)とすることで、部位kp
16の精密ポーズデータDo_kp.kp
16を取得する。すなわち、精密ポーズデータ取得部33は、
Do_kp.kp
16=max_P(D4_conf.kp
16)
max_P(Dp):信頼度マップDpにおいて、画素値(信頼度)が最大値を示す位置(画像上の位置)の情報(例えば、画像上の座標等)を取得する関数
として、部位kp
16の精密ポーズデータDo_kp.kp
16(
図16の上図の4×4の矩形(マトリックス)の3行3列目の画素(画素値が「0.2」の画素)の位置に対応)を取得する(
図16の下図を参照)。
図16の下図から分かるように、2Dポーズ推定部1により取得されたデータDi_kp.kp
16が正しい位置からずれている場合(あるいは、2Dポーズ推定部1によりデータDi_kp.kp
16が取得できない場合)であっても、精密ポーズデータ取得部33が上記処理を実行することにより、部位kp
16の正確な位置を示すデータ(キーポイント)として、精密ポーズデータDo_kp.kp
16を取得することができる。
【0231】
また、上記では、精密ポーズデータ取得部33において、2Dポーズ推定部1により取得されたデータDi_kp.kpxの画像上の位置と、合成信頼度マップD4_conf.kpxで最大値を示す画素の位置とが、略一致しているか否か(信頼度マップの画素ピッチ(隣接画素間の距離)以上離れているか否か)を判定する場合について説明したが、これに限定されることはない。例えば、精密ポーズデータ取得部33において、2Dポーズ推定部1により取得されたデータDi_kp.kpxの画像上の位置と、粗予測処理データD2_kp_Lまたは精密予測処理データD2_kp_Hにより特定される画像上の位置とが一致しているか否かを判定するようにしてもよい。この場合、精密データ取得部3において、予測データ取得部31から取得される粗予測処理データD2_kp_Lおよび精密予測処理データD2_kp_Hが精密ポーズデータ取得部33に入力される構成を用いればよい。
【0232】
そして、2Dポーズ推定部1により取得されたデータDi_kp.kpxの画像上の位置と、粗予測処理データD2_kp_Lまたは精密予測処理データD2_kp_Hにより特定される画像上の位置とが一致していない場合、精密ポーズデータ取得部33は、合成信頼度マップD4_conf.kpxで最大値を示す画素の位置を、部位kpxの精密ポーズデータDo_kp.kpxとして取得するようにすればよい。
【0233】
他の部位についても、精密ポーズデータ取得部33は、上記と同様の処理を行うことで、各部位の精密ポーズデータDo_kp.kpxを取得する。
【0234】
そして、精密ポーズデータ取得部33は、取得した各部位の精密ポーズデータDo_kp.kpx(x:自然数、1≦x≦16)をまとめた(含む)データを、データDo_kpとして、2D-3D変換部4に出力する。
【0235】
図17に、時間ステップt3において、精密ポーズデータ取得部33が上記処理により取得した各キーポイントのデータDo_kp.kp
xをまとめたデータDo_kpの一例を示す。
図17では、特徴量抽出画像Img1
(t3)、2Dポーズ推定部1により取得された2Dポーズデータ(キーポイントデータDi_kp.kp
x)を模式的に示した画像Img1
(t3)(Di_kp)、および、精密ポーズデータ取得部33により取得された精密ポーズデータDo_kp.kp
xを模式的に示した画像Img1
(t3)(Do_kp)を示している。そして、(1)
図17の画像Img1
(t3)(Di_kp)では、データDi_kpによるキーポイントをグレーの丸で示しており、
図17の画像Img1
(t3)(Do_kp)では、精密ポーズデータDi_kpによるキーポイントを黒丸で示している。
【0236】
図17から分かるように、画像Img1
(t3)(Di_kp)では、部位kp
10(右足)が正しい位置からずれており、かつ、オクルージョン状態である、部位kp
15(左肘)、kp
16(左手)の位置が検出されていないが、画像Img1
(t3)(Do_kp)(精密ポーズデータ)では、部位kp
10(右足)、kp
15(左肘)、kp
16(左手)の位置について、合成信頼度マップにより適切に補正されており、その結果、部位kp
10(右足)、kp
15(左肘)、kp
16(左手)について、正しい位置のキーポイントとして取得されている。
【0237】
以上のように、精密データ取得部3では、ヒートマップ取得部2により取得されたヒートマップに対して、予測データ取得部31により取得された粗予測信頼度マップまたは精密予測信頼度マップによる加算処理(同一画素における画素値の加算処理)を行うことで、オクルージョン状態である部位がある場合であっても、精度の高い信頼度マップ(合成信頼度マップ)を部位ごとに取得することができる。そして、精密データ取得部3では、合成信頼度マップに基づいて、精密ポーズデータを取得するので、より精度の高いポーズデータを取得することができる。
【0238】
2D-3D変換部4は、精密データ取得部3から出力されるデータDo_kp(2次元のキーポイントのデータ)を入力する。2D-3D変換部4は、データDo_kp(2次元のキーポイントのデータ)に対して、時間ステップt1のときと同様に、2D-3D変換処理を実行し、データDo_kp(2次元のキーポイントのデータ)に対応する3次元データ(3次元のキーポイントのデータ)をデータDo_3D_kpとして取得する。
【0239】
そして、2D-3D変換部4は、上記により取得したデータ(2次元のキーポイントのデータ)を、データDo_3D_kpとして、ポスト処理部5に出力する。
【0240】
ポスト処理部5は、2D-3D変換部4から出力されるデータDo_3D_kpを入力し、時間ステップt1のときと同様に、当該データDo_3D_kpに対してポスト処理を実行する。
【0241】
そして、ポスト処理部5は、ポスト処理により取得したデータをデータDoutとして外部に出力する。
【0242】
≪まとめ≫
以上のように、ポーズデータ生成装置100では、ヒートマップ取得部2により取得されたヒートマップに対して、信頼度取得部32により取得された粗予測信頼度マップまたは精密予測信頼度マップによる加算処理(同一画素における画素値の加算処理)を行うことで、より精度の高い信頼度マップ(合成信頼度マップ)を部位ごとに取得することができる。そして、ポーズデータ生成装置100の精密データ取得部3では、合成信頼度マップに基づいて、精密ポーズデータを取得するので、精度の高いポーズデータを取得することができる。
【0243】
そして、ポーズデータ生成装置100では、2D-3D変換部4が、精密データ取得部3により取得された高精度な2次元のキーポイントデータ(2次元ポーズデータ)に対して、2D-3D変換を行うことで、高精度な3次元ポーズデータ(3次元のキーポイントデータ)を取得することができる。つまり、ポーズデータ生成装置100では、高精度な2次元ポーズデータを取得し、取得した2次元ポーズデータに対して、比較的演算量の少ない処理である2D-3D変換処理(時系列に連続するデータを用いることなく、1時間ステップの2次元ポーズデータ(1つの2次元ポーズデータ)を入力として、出力結果(3次元ポーズデータ)を取得する処理)を実行することで、3次元ポーズデータ(3次元のキーポイントデータ)を取得する。ポーズデータ生成装置100では、上記のように、高精度な2次元ポーズデータを用いて、2D-3D変換を行うので、2D-3D変換により取得される3次元ポーズデータも高精度なデータとなる。すなわち、ポーズデータ生成装置100では、従来技術のように、時系列に連続するデータ(時系列に連続する複数のフレーム画像(特徴量抽出画像))から、時系列のコンボリューション処理を行って3Dポーズデータを取得するといった演算量の多い複雑な処理を実行する必要がない。
【0244】
したがって、ポーズデータ生成装置100では、上記の通り、従来技術のような複雑な処理を行う必要がないので、低コストで実現でき、かつ、高精度なポーズデータを取得することができる。
【0245】
さらに、ポーズデータ生成装置100では、データDi_kpに対して予測処理を行うときに、部位の特徴に応じて、適用する時系列フィルタを変えて予測処理を行う。つまり、ポーズデータ生成装置100では、可動範囲が広く、激しく動くことができる部位のキーポイントのデータ(広可動キーポイントのデータ)には、高精度の時系列フィルタを用いた予測処理を行い、可動範囲が狭く、激しく動くことがない部位のキーポイントのデータ(狭可動キーポイントのデータ)には、精密予測処理ほど精度は高くないが演算量が少なくて済む時系列フィルタを用いた予測処理(粗予測処理)を行う。
【0246】
つまり、ポーズデータ生成装置100では、予測が難しい広可動キーポイントについては、精度の高い時系列フィルタによる予測処理を行い、予測がそれほど難しくない狭可動キーポイントについては、演算量が少なくて済む時系列フィルタによる予測処理を行うので、予測データを取得するために必要なトータルの演算量を抑えつつ、高精度な予測データを取得することができる。
【0247】
そして、ポーズデータ生成装置100では、例えば、オクルージョン状態である部位については、上記処理により取得された高精度な予測データ(2次元キーポイントの予測データ)に基づいて、キーポイントのデータを取得できるので、オクルージョン状態が発生している特徴量抽出画像が入力された場合であっても、適切な2次元ポーズデータ(2次元キーポイントデータ)を取得することができる。そして、ポーズデータ生成装置100では、このようにして取得した2次元ポーズデータ(2次元キーポイントデータ)を2D-3D変換することで、オクルージョン状態が発生している特徴量抽出画像が入力された場合であっても、精度の高い3次元ポーズデータを取得することができる。
【0248】
≪第1変形例≫
次に、第1実施形態の第1変形例について、説明する。なお、上述の実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0249】
図18は、第1実施形態の第1変形例に係るポーズデータ生成装置100Aの概略構成図である。
【0250】
図19は、第1実施形態の第1変形例に係るポーズデータ生成装置100Aの精密データ取得部3Aの概略構成図である。
【0251】
本変形例のポーズデータ生成装置100Aは、
図18に示すように、第1実施形態のポーズデータ生成装置100において、精密データ取得部3を精密データ取得部3Aに置換した構成を有している。
【0252】
そして、本変形例の精密データ取得部3Aは、
図19に示すように、第1実施形態の精密データ取得部3において、第2データ分解部34を追加した構成を有している。
【0253】
第1実施形態のポーズデータ生成装置100では、(1)粗予測処理において、粗予測処理部312により取得されたデータDo_kp_Lを、第1メモリM1に記憶し、次の時間ステップにおける過去のデータ(1時間ステップ前のデータ)として用いて、時系列フィルタによる処理を行い、かつ、(2)精密予測処理において、精密予測処理部313により取得されたデータDo_kp_Hを、第2メモリM2に記憶し、次の時間ステップにおける過去のデータ(1時間ステップ前のデータ)として用いて、時系列フィルタによる処理を行うものであった。
【0254】
それに対して、本変形例のポーズデータ生成装置100Aでは、精密データ取得部3により取得された精密ポーズデータDo_kpを、第2データ分解部34により分解したデータを、第1メモリM1および第2メモリM2に記憶し、粗予測処理および精密予測処理において、次の時間ステップにおける過去のデータ(1時間ステップ前のデータ)として用いて、時系列フィルタによる処理を実行する。
【0255】
つまり、第2データ分解部34は、データ分解部311と同様の処理を実行する機能部であり、精密ポーズデータ取得部33から出力されるデータDo_kpに対して、分解処理(キーポイントデータを人の部位ごとに分解する処理)(データ分解部311と同じように部位を分解する処理)を実行し、粗予測処理の対象とするデータDo_kp_Lと、精密予測処理の対象とするデータDo_kp_Hとを取得する。そして、第2データ分解部34は、取得したデータDo_kp_Lを第1メモリM1に出力し、取得したデータDo_kp_Hを第2メモリM2に出力する。
【0256】
そして、粗予測処理部312は、第1メモリM1に記憶されているデータ(精密ポーズデータDo_kpを分解処理により取得されたデータ)をD1_kp_L_pastとして、第1メモリM1から読み出し、当該データを用いて、時系列フィルタの処理を実行する。
【0257】
また、精密予測処理部313は、第2メモリM2に記憶されているデータ(精密ポーズデータDo_kpを分解処理により取得されたデータ)をD1_kp_H_pastとして、第2メモリM2から読み出し、当該データを用いて、時系列フィルタの処理を実行する。
【0258】
このように、本変形例のポーズデータ生成装置100Aでは、粗予測処理および精密予測処理により取得されたデータの代わりに、より精度の高い(合成信頼度マップによる処理が実行された後に取得された)精密ポーズデータDo_kpを分解したデータDo_kp_L、および、Do_kp_Hを用いて、粗予測処理および精密予測処理を実行するため、より精度の高いデータ(粗予測処理および精密予測処理により取得されるデータ)を取得することができる。そして、上記により取得されたデータ(粗予測処理および精密予測処理により取得されるデータD2_kp_L、および、D2_kp_H)を用いて、信頼度合成処理、精密ポーズデータ取得処理を行うことで、さらに高精度の精密ポーズデータDo_kpを取得することができる。
【0259】
≪第2変形例≫
次に、第1実施形態の第2変形例について、説明する。なお、上述の実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0260】
図20は、第1実施形態の第2変形例に係るポーズデータ生成装置100Bの概略構成図である。
【0261】
図21は、第1実施形態の第2変形例に係るポーズデータ生成装置100Bの精密データ取得部3Bの概略構成図である。
【0262】
本変形例のポーズデータ生成装置100Bは、
図20に示すように、第1実施形態のポーズデータ生成装置100において、精密データ取得部3を精密データ取得部3Bに置換し、さらに、分解部位設定部6を追加した構成を有している。
【0263】
そして、本変形例の精密データ取得部3Bは、
図21に示すように、第1実施形態の精密データ取得部3において、データ分解部311をデータ分解部311Aに置換した構成を有している。
【0264】
分解部位設定部6は、粗予測処理の処理対象となる部位と、精密予測処理の処理対象となる部位とを設定するための機能部である。分解部位設定部6は、例えば、所定のアプリケーションの実行を制御する制御部(不図示)(あるいは、外部入力インターフェース(不図示))からの指令により、粗予測処理の処理対象となる部位と、精密予測処理の処理対象となる部位とを設定する。そして、分解部位設定部6は、粗予測処理の処理対象となる部位と、精密予測処理の処理対象となる部位との設定情報を含むデータをデータD_setとして、精密データ取得部3のデータ分解部311Aに出力する。
【0265】
データ分解部311Aは、分解部位設定部6から出力されるデータD_setを入力し、当該データD_setに従い、粗予測処理の処理対象となる部位と、精密予測処理の処理対象となる部位とを特定し、2Dポーズ推定部1から出力されるデータDi_kpに対して分解処理(キーポイントデータを人の部位ごとに分解する処理)を実行する。つまり、データ分解部311Aは、(1)データD_setで粗予測処理の対象とする部位に指定されている部位のキーポイントのデータをデータD1_kp_Lとして粗予測処理部312に出力し、(2)データD_setで精密予測処理の対象とする部位に指定されている部位のキーポイントのデータをデータD1_kp_Hとして精密予測処理部313に出力する。
【0266】
本変形例のポーズデータ生成装置100Bでは、分解部位設定部6により、粗予測処理の処理対象となる部位と、精密予測処理の処理対象となる部位とを指定することができ、それに基づいて、データ分解部311が、キーポイントのデータを分解し、粗予測処理、および、精密予測処理を実行することができる。このため、本変形例のポーズデータ生成装置100Bでは、多様な条件に基づいて、粗予測処理の処理対象となる部位と、精密予測処理の処理対象となる部位とを決定(変更)することができる。
【0267】
本変形例のポーズデータ生成装置100Bの適用例を以下に示す。
【0268】
(A)ゲームのステージで変更する場合(速いテンポの音楽再生)
例えば、所定のアプリケーションが、音楽再生をしつつ、ユーザーにダンスを要請するゲームを実行するためのアプリケーションである場合であって、ゲームのステージごとに、音楽のテンポが変わる場合、速いテンポの音楽が再生されるステージにおいて、分解部位設定部6は、(1)可動範囲の広い、右手、左手、右肘、左肘、右足、左足、右膝、左膝を、精密予測処理の処理対象となる部位に設定し、かつ、(2)それ以外の部位については、粗予測処理の処理対象となる部位に設定する。そして、この設定の情報(部位の分解設定情報)を含むデータをデータD_setとして、精密データ取得部3のデータ分解部311Aに出力する。そして、ポーズデータ生成装置100Bでは、上記の場合、(1)可動範囲の広い、右手、左手、右肘、左肘、右足、左足、右膝、左膝については、精密予測処理を実行し、(2)それ以外の部位については、粗予測処理を実行することができる。
【0269】
(B)ゲームのステージで変更する場合(遅いテンポの音楽再生)
例えば、所定のアプリケーションが、音楽再生をしつつ、ユーザーにダンスを要請するゲームを実行するためのアプリケーションである場合であって、ゲームのステージごとに、音楽のテンポが変わる場合、遅いテンポの音楽が再生されるステージにおいて、分解部位設定部6は、すべての部位を、粗予測処理の処理対象となる部位に設定する。そして、この設定の情報(部位の分解設定情報)を含むデータをデータD_setとして、精密データ取得部3のデータ分解部311Aに出力する。そして、ポーズデータ生成装置100Bでは、上記の場合、全ての部位について、粗予測処理を実行する。この場合、遅いテンポの音楽が再生されおり、各部位が大きく(激しく)動くことが少ないため、計算量の少ない粗予測処理をすべての部位について実行しても、精度が落ちることがなく、高精度なポーズデータを取得できる。つまり、ポーズデータ生成装置100Bにおいて、上記のようにすることで、計算量を低減させつつ、高精度なポーズデータを取得できる。
【0270】
(C)ゲームのステージで変更する場合(所定の部位を動かすことが既知である場合)
例えば、所定のアプリケーションが、ユーザーに所定の部位(例えば、左手)を動かすことを要請するゲームを実行するためのアプリケーションである場合において、分解部位設定部6は、(1)ユーザーが動かす部位(アプリーケーションにより既知)(例えば、左手)を、精密予測処理の処理対象となる部位に設定し、かつ、(2)それ以外の部位については、粗予測処理の処理対象となる部位に設定する。そして、この設定の情報(部位の分解設定情報)を含むデータをデータD_setとして、精密データ取得部3のデータ分解部311Aに出力する。そして、ポーズデータ生成装置100Bでは、上記の場合、(1)ユーザーが動かす部位(アプリーケーションにより既知)(例えば、左手)については、精密予測処理を実行し、(2)それ以外の部位については、粗予測処理を実行することができる。このように、ユーザーが動かす部位が既知である場合、ポーズデータ生成装置100Bにおいて、当該部位について精密予測処理を実行し、それ以外の部位については、粗予測処理を実行することで、計算量を抑えつつ、高精度なポーズデータを取得することができる。
【0271】
なお、本変形例は、第1変形例のポーズデータ生成装置100Aに対しても適用可能である。本変形例を、第1変形例のポーズデータ生成装置100Aに対して適用する場合、分解部位設定部6から出力されるデータD_setを第2データ分解部34にも入力する構成とし、第2データ分解部34が、データD_setに基づいて、精密ポーズデータDo_kpの部位を分解し、分解したデータ(キーポイントのデータ)を、データDo_kp_L、および、Do_kp_Hとして取得するようにすればよい。
【0272】
また、上記では、ゲームのステージごとに、粗予測処理の処理対象となる部位と、精密予測処理の処理対象となる部位とを指定する場合について、説明したが、これに限定されることはなく、例えば、所定の時間(所定の期間)ごとに、あるいは、所定の条件ごとに、分解部位設定部6により、粗予測処理の処理対象となる部位と、精密予測処理の処理対象となる部位とを指定(設定)するようにしてもよい。
【0273】
[他の実施形態]
上記実施形態(変形例を含む)では、ポーズデータ生成装置が、データDin(フレーム画像データ)から、特徴量抽出部PP1により、特徴量抽出画像データを取得し、取得した特徴量抽出画像データを2Dポーズ推定部1およびヒートマップ取得部2に入力する構成を有する場合について、説明したが、これに限定されることはない。例えば、ポーズデータ生成装置において、特徴量抽出部PP1を省略し、データDin(フレーム画像データ)を2Dポーズ推定部1およびヒートマップ取得部2に入力する構成としてもよい。この場合、2Dポーズ推定部1およびヒートマップ取得部2が、特徴量抽出画像データを取得する処理を行い、2Dポーズ推定処理およびヒートマップ取得処理を実行するようにしてもよい。
【0274】
上記実施形態(変形例を含む)では、(1)粗予測処理部312が、粗予測処理として、カルマンフィルタを用いた処理を実行し、(2)精密予測処理部313が、精密予測処理として、拡張カルマンフィルタを用いた処理を実行する場合について、説明したが、これに限定されることはない。例えば、粗予測処理部312が、粗予測処理として、線形補間処理やスプライン補間処理を用いた処理を実行するようにしてもよい。
【0275】
また、精密予測処理部313が、精密予測処理として、無香料カルマンフィルタやパーティクルフィルタを用いた処理を実行するようにしてもよい。また、非線形なシステムモデルを取り扱うことができる上記以外の時系列フィルタを用いて、精密予測処理を実行するようにしてもよい。
【0276】
また、上記実施形態(変形例を含む)において、粗予測信頼度マップにおいて、粗予測処理により取得される事後確率分布における確率密度が最大である点(画素)(粗予測処理により推定(予測)されたキーポイント)のみを所定の値(例えば、「0.2」(なお、所定の値は「0.2」以外の値であってもよい。))とする場合について説明したが、これに限定されることはない。例えば、粗予測信頼度マップにおいて、粗予測処理により取得される事後確率分布における確率密度に応じて各点(各画素)(例えば、粗予測処理により推定(予測)されたキーポイントの周辺の画素)を所定の値(例えば、「0.2」を最大値として、各点(各画素)の粗予測処理により取得される事後確率分布における確率密度に対応する値(例えば、比例する値))とするようにしてもよい。
【0277】
また、上記実施形態(変形例を含む)において、精密予測信頼度マップにおいて、精密予測処理により取得される事後確率分布における確率密度が最大である点(画素)(精密予測処理により推定(予測)されたキーポイント)のみを所定の値(例えば、「0.2」)とする場合について説明したが、これに限定されることはない。例えば、精密予測信頼度マップにおいて、精密予測処理により取得される事後確率分布における確率密度に応じて各点(各画素)(例えば、精密予測処理により推定(予測)されたキーポイントの周辺の画素)を所定の値(例えば、「0.2」を最大値として、各点(各画素)の精密予測処理により取得される事後確率分布における確率密度に対応する値(例えば、比例する値))とするようにしてもよい。
【0278】
また、上記実施形態(変形例を含む)において、粗予測処理の処理対象とする部位と、精密予測処理の処理対象とする部位と、の分解の方法(分類方法)は、上記実施形態(変形例を含む)で示した方法に限定されず、他の方法(他の条件)により、粗予測処理の処理対象とする部位と、精密予測処理の処理対象とする部位と、を分解(分類)するようにしてもよい。
【0279】
例えば、下記のような条件に基づいて、粗予測処理の処理対象とする部位と、精密予測処理の処理対象とする部位と、分解(分類)するようにしてもよい。
(1)部位の動く速度、加速度、所定の時間内における速度の変化、加速度の変化。
(2)部位の動きのランダム性。
(3)部位の動きの線形性、非線形性。
(4)ポーズデータ生成装置とともに実行されるアプリケーションにより一定の条件が変化しない期間および/またはステージ。
【0280】
また、上記実施形態(変形例を含む)でのキーポイントの設定方法は一例であり、他のキーポイントの設定方法を採用してもよい。また、キーポイントの数、位置についても、上記実施形態に限定されることはなく、他のキーポイントの数、位置を採用したキーポイントの設定方法を使用してもよい。
【0281】
また、上記実施形態(変形例を含む)において、被写体が人である場合について説明したが、これに限定されることなく、被写体は、移動可能であり、かつ、その姿勢が可変である、人、生物、物体等であってもよい。
【0282】
また、上記実施形態(変形例を含む)で説明したポーズデータ生成装置の各ブロック(各機能部)は、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。また、上記実施形態で説明したポーズデータ生成システム、CGデータシステム、ポーズデータ生成装置の各ブロック(各機能部)は、複数のLSIなどの半導体装置により実現されるものであってもよい。
【0283】
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
【0284】
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【0285】
また、上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
【0286】
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【0287】
例えば、上記実施形態の各機能部を、ソフトウェアにより実現する場合、
図22に示したハードウェア構成(例えば、CPU、GPU、ROM、RAM、入力部、出力部等をバスBusにより接続したハードウェア構成)を用いて、各機能部をソフトウェア処理により実現するようにしてもよい。
【0288】
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【0289】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、大容量DVD、次世代DVD、半導体メモリを挙げることができる。
【0290】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【0291】
また、文言「部」は、「サーキトリー(circuitry)」を含む概念であってもよい。サーキトリーは、ハードウェア、ソフトウェア、あるいは、ハードウェアおよびソフトウェアの混在により、その全部または一部が、実現されるものであってもよい。
【0292】
ここに開示される要素の機能は、当該開示される要素を実行するように構成された、あるいは当該開示される機能を実行するようにプログラミングされた汎用プロセッサ、専用プロセッサ、集積回路、ASIC(「特定用途向け集積回路」)、従来の回路構成及び/またはそれらの組み合わせを含む回路構成あるいは処理回路構成が用いられて実装されてもよい。プロセッサは、それが、その中にトランジスタ及び他の回路構成を含むとき、処理回路構成あるいは回路構成として見なされる。本開示において、回路構成、ユニットあるいは手段は、挙げられた機能を実行するハードウェア、あるいは当該機能を実行するようにプログラミングされたハードウェアである。ハードウェアは、挙げられた機能を実行するようにプログラミングされた、あるいは当該機能を実行するように構成された、ここで開示されるいかなるハードウェアあるいは既知の他のものであってもよい。ハードウェアが、あるタイプの回路構成として見なされるかもしれないプロセッサであるとき、回路構成、手段あるいはユニットは、ハードウェアとソフトウェアの組み合わせ、ハードウェアを構成するために用いられるソフトウェア及び/またはプロセッサである。
【0293】
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【符号の説明】
【0294】
100、100A、100B ポーズデータ生成装置
PP1 特徴量抽出部
1 2Dポーズ推定部
2 ヒートマップ取得部
3、3A、3B 精密データ取得部
31、31A 予測データ取得部
32 信頼度取得部
33 精密ポーズデータ取得部
4 2D-3D変換部
5 ポスト処理部
6 分解部位設定部