(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-15
(45)【発行日】2024-10-23
(54)【発明の名称】骨格認識装置、学習方法および学習プログラム
(51)【国際特許分類】
G06T 7/20 20170101AFI20241016BHJP
G06V 40/20 20220101ALI20241016BHJP
【FI】
G06T7/20 300Z
G06V40/20
(21)【出願番号】P 2022565004
(86)(22)【出願日】2020-11-30
(86)【国際出願番号】 JP2020044524
(87)【国際公開番号】W WO2022113349
(87)【国際公開日】2022-06-02
【審査請求日】2023-03-02
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】鈴木 達也
【審査官】岡本 俊威
(56)【参考文献】
【文献】特開2019-079487(JP,A)
【文献】特開2019-191974(JP,A)
【文献】Min-Yu Wu 他,Hand pose estimation in object-interaction based on deep learning for virtual reality applications,Journal of Visual Communication and Image Representation [online],2020年04月04日,p.1-17,https://doi.org/10.1016/j.jvcir.2020.102802,[2024年05月09日検索]
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/20- 7/277
G06V 40/20
(57)【特許請求の範囲】
【請求項1】
教師データを学習モデルに入力し順伝播による出力を計算する認識処理部と、
前記教師データの正解値である骨格情報と前記認識処理部の出力結果とに基づく骨の長さの
第1の差
と、前記骨格情報と前記認識処理部の出力結果とに基づく骨同士の角度の第
2の差
と、前記骨格情報と前記認識処理部の出力結果とに基づく関節位置の第3の差とを算出する損失関数算出部と
前記損失関数算出部に算出された前記第1の差、前記第2の差、前記第3の差のうち、前記第3の差が収束するように前記学習モデルを学習する学習部とを有し、
前記損失関数算出部は、前記第3の差の収束した値を基にして、前記第1の差に乗算する第1の重みと、前記第2の差に乗算する第2の重みを設定する
を有することを特徴とする骨格認識装置。
【請求項2】
前記損失関数算出部は、
前記第1の差に前記第1の重みを乗算した値と、前記第2の差に前記第2の重みを乗算した値と、前記第3の差の値とを統合することで、損失関数の値を算出することを特徴とする請求項
1に記載の骨格認識装置。
【請求項3】
コンピュータが実行する学習方法であって、
教師データを学習モデルに入力し順伝播による出力結果を計算し、
前記教師データの正解値である骨格情報と前記出力結果とに基づく骨の長さの
第1の差
と、前記骨格情報と前記出力結果とに基づく骨同士の角度の第
2の差
と、前記骨格情報と前記出力結果とに基づく関節位置の第3の差とを算出し、
算出した前記第1の差、前記第2の差、前記第3の差のうち、前記第3の差が収束するように前記学習モデルを学習し、
前記第3の差の収束した値を基にして、前記第1の差に乗算する第1の重みと、前記第2の差に乗算する第2の重みを設定する
処理を実行することを特徴とする学習方法。
【請求項4】
コンピュータに、
教師データを学習モデルに入力し順伝播による出力結果を計算し、
前記教師データの正解値である骨格情報と前記出力結果とに基づく骨の長さの
第1の差
と、前記骨格情報と前記出力結果とに基づく骨同士の角度の第
2の差
と、前記骨格情報と前記出力結果とに基づく関節位置の第3の差とを算出し、
算出した前記第1の差、前記第2の差、前記第3の差のうち、前記第3の差が収束するように前記学習モデルを学習し、
前記第3の差の収束した値を基にして、前記第1の差に乗算する第1の重みと、前記第2の差に乗算する第2の重みを設定する
処理を実行させることを特徴とする学習プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、骨格認識装置等に関する。
【背景技術】
【0002】
3次元の人の動きを検出する骨格認識に関しては、複数台の3Dレーザセンサから3D骨格座標を±1cmの精度で抽出する3Dセンシング技術が確立され、様々なスポーツへの適用が期待されている。3Dレーザセンサを用いた方式を「レーザ方式」と表記する。
【0003】
上記のレーザ方式では、レーザを1秒間に約200万回照射し、レーザの走行時間(Time of Flight:ToF)を基に、対象となる人を含めて、各照射点の深度データを求める。レーザ方式では、高精度な深度データを取得できるが、レーザスキャンやToF測定などの複雑な構成、処理を行うため、ハードウェアが複雑で高価になるという欠点がある。
【0004】
レーザ方式に対して、CMOS(Complementary Metal Oxide Semiconductor)イメージャによって各ピクセルのRGBデータを取得する画像方式では、安価なRGBカメラを用いて3D骨格認識を行うことが可能となる。
【0005】
たとえば、画像方式によって骨格認識を行う従来技術として、従来技術1がある。
図11は、従来技術1を説明するための図である。従来技術1では、各入力画像1に2D backbone処理1aをかけることで、各関節特徴を表す2D features2を取得する。従来技術1は、各2D features2をカメラパラメータに従って3Dcubeに投影することで、aggregated volumes3を取得する。
【0006】
従来技術1は、aggregated volumes3を、V2V(ニューラルネットワーク、P3)4に入力することで、各関節の尤度を表すprocessed volumes5を取得する。processed volumes5は、各関節の3Dでの尤度を表すheatmapに対応する。従来技術1は、processed volumes5に対して、soft-argmax6を実行することで、3D骨格情報7を取得する。
【0007】
従来技術1で用いるV2V4の学習の一例について説明する。V2V4は、主に3Dのカーネルで構成されており、カーネルの重みとバイアスとを誤差逆伝播で学習する。カーネルの重みとバイアスとをまとめて、適宜、「パラメータ」と表記する。従来技術1では、soft-argmax6から出力される3D骨格情報および正解値から関節位置誤差の平均値LpをLoss値として算出し、このLoss値が最小化するように、パラメータを学習(調整)する。
【0008】
ここで、従来技術1では、オクルージョンの発生によって一部関節の誤差が大きくなると、V2V4のパラメータを適切に調整することが難しくなる。たとえば、一部関節の誤差が大きくても、他の関節の誤差が小さいと、平均化によって、一部関節の誤差が、Loss関数の出力に大きく影響を与えない。すなわち、一部関節の誤差が改善されるように、V2V4のパラメータが調整されなくなる。
【0009】
図12は、一部関節の誤差が大きい骨格の例を示す図である。
図12において3D骨格情報10aは、正解値に対応する3D骨格情報である。3D骨格情報10bは、soft-argmax6から出力される骨格認識結果に対応する。
図12に示す例では、左足首関節の誤差が大きいが、他の関節の誤差が小さいため、平均するとLoss値に大きく影響を与えないため、左足首位置を改善するような学習効果を期待することができない。
【0010】
上記の問題に対して、従来技術2がある。従来技術2では、1段階目において、距離画像を基にして、関節位置を推定しておき、2段階目において、推定した関節位置に対して、人体モデルを基に整合性を評価し、最も良い関節位置の組み合わせとなるように、推定した関節位置を補正する。従来技術2では、上記のように2段階で処理を行うことで、関節位置の推定精度を向上させている。
【先行技術文献】
【特許文献】
【0011】
【文献】特開2015-167008公報
【文献】特開2004-13474号公報
【非特許文献】
【0012】
【文献】K. Iskakov, et al., “Learnable Triangulation of Human Pose”, ICCV 2019, oral
【文献】G. Moon, et al., “V2V-PoseNet: Voxel-to-Voxel Prediction Network for Accurate 3D Hand and Human Pose Estimation from a Single Depth Map”, CVPR 2018
【発明の概要】
【発明が解決しようとする課題】
【0013】
上述した従来技術2では、関節位置の推定精度を向上させているものの、補正した関節位置を出力するまでに、2段階の処理を実行することになり、骨格認識に処理時間を要してしまうという問題がある。
【0014】
1つの側面では、本発明は、処理時間をかけずに骨格認識結果を行うことができる骨格認識装置、学習方法および学習プログラムを提供することを目的とする。
【課題を解決するための手段】
【0015】
第1の案では、骨格認識装置は、認識処理部と、損失関数算出部とを有する。認識処理部は、教師データを学習モデルに入力し順伝播による出力を計算する。損失関数算出部は、教師データの正解値である骨格情報と認識処理部の出力結果とに基づく骨の長さの差、および、骨格情報と前記認識処理部の出力結果とに基づく骨同士の角度の差に基づいて、損失関数の値を算出する。
【発明の効果】
【0016】
処理時間をかけずに骨格認識結果を行うことができる。
【図面の簡単な説明】
【0017】
【
図1】
図1は、本実施例に係るシステムの一例を示す図である。
【
図2】
図2は、本実施例に係る骨格認識装置の構成を示す機能ブロック図である。
【
図3】
図3は、教師データのデータ構造の一例を示す図である。
【
図4】
図4は、人体モデルのデータ構造の一例を示す図である。
【
図5】
図5は、学習フェーズの処理を説明するための図である。
【
図6】
図6は、骨格認識装置の前処理フェーズの処理手順を示すフローチャートである。
【
図7】
図7は、骨格認識装置の学習フェーズの処理手順を示すフローチャートである。
【
図8】
図8は、骨格認識装置の推論フェーズの処理手順を示すフローチャートである。
【
図9】
図9は、本実施例の効果を説明するための図である。
【
図10】
図10は、実施例の骨格認識装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【
図12】
図12は、一部関節の誤差が大きい骨格の例を示す図である。
【発明を実施するための形態】
【0018】
以下に、本願の開示する骨格認識装置、学習方法および学習プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【0019】
図1は、本実施例に係るシステムの一例を示す図である。
図1に示すように、このシステムは、カメラ20a,20b,20cと、骨格認識装置100とを有する。カメラ20a~20cと、骨格認識装置100とは、無線又は有線によって相互に接続される。
【0020】
図1のシステムでは、一例として、カメラ20a~20cを示すが、他のカメラを含んでいてもよい。以下の説明では、カメラ20a~20cをまとめて、カメラ20と表記する。
【0021】
カメラ20は、人物15の画像を撮影する装置である。カメラ20は、撮影した画像のデータを、骨格認識装置100に送信する。以下の説明では、人物15の画像のデータを、画像データと表記する。後述するように、画像データは、骨格認識装置100の推論フェーズにて使用される。
【0022】
骨格認識装置100は、教師データを用いた「前処理フェーズ」、「学習フェーズ」の処理を実行することで、骨格認識を行うための学習モデルの学習を実行する。また、骨格認識装置100は、「推論フェーズ」において、カメラ20から入力される画像データと、学習済みの学習モデルとを基にして、人物15の骨格認識結果を出力する。
【0023】
次に、本実施例に係る骨格認識装置の構成の一例について説明する。
図2は、本実施例に係る骨格認識装置の構成を示す機能ブロック図である。
図2に示すように、この骨格認識装置100は、通信部110、入力部120、表示部130、記憶部140、制御部150を有する。
【0024】
通信部110は、有線又は無線で外部装置等に接続され、カメラ20、外部装置等との間で情報の送受信を行う。たとえば、通信部110は、NIC(Network Interface Card)等によって実現される。制御部150は、通信部110を介して、カメラ20から画像データを取得する。通信部110は、図示しないネットワークに接続されていてもよい。
【0025】
入力部120は、各種の情報を、骨格認識装置100に入力する入力装置である。入力部120は、キーボードやマウス、タッチパネル等に対応する。
【0026】
表示部130は、制御部150から出力される情報を表示する表示装置である。表示部130は、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ、タッチパネル等に対応する。
【0027】
記憶部140は、教師データ141、人体モデル142、学習モデル143、画像データテーブル144を有する。記憶部140は、たとえば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。
【0028】
教師データ141は、学習モデル143の学習に用いられるデータである。
図3は、教師データのデータ構造の一例を示す図である。
図3に示すように、教師データ141は、入力データと正解値との組を複数有する。入力データは、予め準備された複数の画像データから生成されるデータであり、たとえば「aggregated volumes」等に対応する。正解値は、入力データに対応する骨格認識結果の正解値であり、たとえば、各関節の3次元座標、関節を結ぶ骨の長さ、骨同士の角度等の情報が含まれる。
【0029】
人体モデル142は、予め定義される人体モデルであり、複数の関節が定義され、各関節が骨で接続される。
図4は、人体モデルのデータ構造の一例を示す図である。
図4に示すように、この人体モデル142は、関節A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18,A19,A20,A21を有する。また、人体モデル142には、各関節を接続する骨が20本定義される。
【0030】
学習モデル143は、V2V等のニューラルネットワーク(NN:Neural Network)に対応する。たとえば、学習モデル143は、3Dのカーネルで構成されており、カーネルにはパラメータ(重み、バイアス等)が設定される。後述する学習フェーズの処理によって、パラメータが調整される。
【0031】
画像データテーブル144は、「推論フェーズ」において、カメラ20から出力される画像データを登録するテーブルである。たとえば、画像データテーブル144は、カメラ20の識別情報と、カメラ20が撮影した画像データとを対応付けて保持する。
【0032】
図2の説明に戻る。制御部150は、認識処理部151と、損失関数算出部152と、学習部153と、画像データ処理部154とを有する。制御部150は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)により実現される。また、制御部150は、例えばASIC(Application specific Integrated Circuit)やFPGA(Field Programmable gate Array)等の集積回路により実行されてもよい。
【0033】
制御部150は、(1)前処理フェーズの処理、(2)学習フェーズの処理、(3)推論フェーズの処理を順に実行する。ここでは、説明の便宜上、まず、「学習フェーズの処理」を説明した後に、「前処理フェーズの処理」の説明を行い、最後に「推論フェーズの処理」について説明する。
【0034】
制御部150が実行する「学習フェーズの処理」について説明する。
図5は、学習フェーズの処理を説明するための図である。制御部150が前処理フェーズを実行する場合には、認識処理部151、損失関数算出部152、学習部153が次の処理を実行する。
【0035】
学習フェーズにおける認識処理部151の処理について説明する。認識処理部151は、教師データ141に含まれる入力データを、学習モデル143に入力し、順伝播による出力(骨格認識結果p=(p
1,p
2,・・・,p
Np))を計算する。「p
1,p
2,・・・,p
Np」は、各関節を示し、3次元座標が設定される。
図5に示す例では、骨格認識結果pにおいて、ある関節が、p
nで示される。
【0036】
より具体的には、認識処理部151は、入力データを、学習モデル143に入力することで、各関節の3Dでの尤度を示すheatmapを計算し、heatmapの重心を求めるsoft-argmaxを実行することで、骨格認識結果pを計算する。
【0037】
認識処理部151は、骨格認識結果を、損失関数算出部152に出力する。認識処理部151は、教師データ141に含まれる各入力データについて、上記処理を繰り返し実行することで、各入力データに対応する骨格認識結果を計算し、損失関数算出部152に出力する。
【0038】
学習フェーズにおける損失関数算出部152の処理について説明する。損失関数算出部152は、骨の長さの誤差をLoss値として算出する処理、骨同士の角度の誤差をLoss値として算出する処理、Loss値を統合する処理を実行する。
【0039】
損失関数算出部152が実行する「骨の長さの誤差をLoss値として算出する処理」について説明する。損失関数算出部152は、骨格認識結果pの各関節を、人体モデル142の各関節と対応付けることで、骨ベクトルb=(b
1,b
2,・・・,b
Np)を算出する。
図5に示す例では、骨ベクトルbにおいて、ある骨ベクトルが、b
nで示される。
【0040】
損失関数算出部152は、骨ベクトルbから骨の長さl=(l
1,l
2,・・・,l
Np)を算出する。
図5に示す例では、骨の長さlにおいて、ある骨の長さが、l
nで示される。
【0041】
損失関数算出部152は、骨の長さlと、教師データ141の正解値(骨の長さの正解値)との差から、骨の長さのLoss値を、式(1)に基づいて算出する。骨の長さのLoss値を「Ll」と表記する。式(1)において、Nlは、骨の数(たとえば、Nl=20)を示す。lpred
iは、骨ベクトルbから推定された骨の長さであって、i番目の骨の長さである。lgt
iは、正解値の骨の長さであって、i番目の骨の長さである。
【0042】
【0043】
損失関数算出部152が実行する「骨同士の角度の誤差をLoss値として算出する処理」について説明する。損失関数算出部152は、骨ベクトルbから骨同士の角度r=(r
1,r
2,・・・,r
Np)を算出する。
図5に示す例では、骨同士の角度lにおいて、ある骨同士の角度が、l
nで示される。
【0044】
損失関数算出部152は、骨同士の角度rと、教師データ141の正解値(骨同士の角度の正解値)との差から、骨同士の角度のLoss値を、式(2)に基づいて算出する。骨同士の角度のLoss値を「Lr」と表記する。式(2)において、Nrは、骨同士の角度の数を示す。rpred
iは、骨ベクトルbから推定された骨同士の角度であって、i番目の骨同士の角度である。rgt
iは、正解値の骨同士の角度であって、i番目の骨同士の角度である。
【0045】
【0046】
損失関数算出部152が実行する「Loss値を統合する処理」について説明する。損失関数算出部152は、骨格認識結果pと、教師データ141の正解値(各関節の3次元座標)とを基にして、関節座標Loss値を算出する。関節座標Loss値を「Lp」と表記する。式を省略するが、Lpは、各関節の3次元座標の誤差を平均化した値となる。
【0047】
損失関数算出部152は、式(3)を基にして、Loss値を統合する。統合したLoss値を「L」と表記する。損失関数算出部152は、Loss値Lを、学習部153に出力する。式(3)に含まれるwl、wrは、Ll,Lrがオーバーフィッティングしないように、「前処理フェーズ」で予め算出される重みである。
【0048】
【0049】
損失関数算出部152は、認識処理部151から、骨格認識結果pを取得する度に、上記処理を繰り返し実行する。
【0050】
ところで、損失関数算出部152は、骨の長さ、骨同士の角度を計算する場合に、Kinematic Chain Space等の技術を用いてもよい。たとえば、Kinematic Chain Spaceに関しては「B. Wandt, et al., “A kinematic chain space for monocular motion capture”, (ECCV Work-shops, 2018)」に記載されている。以下の説明では、Kinematic Chain Spaceを「KCS」と表記する。KCSでは、骨ベクトルbをまとめた行列Bを算出する。行列Bを式(4)に示す。
【0051】
【0052】
損失関数算出部152は、行列Bの転置行列BTと、Bとの積を示す特徴Ψを算出する。特徴Ψは、式(5)によって示される。特徴Ψの対角成分が骨の長さに対応し、非対角成分が、骨同士の角度に相当する。
【0053】
【0054】
損失関数算出部152は、特徴Ψと、教師データ141の正解値(GT)との差の平均値LKCSを式(6)によって算出する。式(6)において、Ψpred
ijは、式(6)のi行j列の要素を示す。、Ψgt
ijは、Ψpred
ijに対応する正解値の要素である。bは、行列Bの要素の数に対応する。
【0055】
【0056】
上記の説明では、骨の長さ、骨同士の角度を計算する場合に、Kinematic Chain Space等の技術を用いる場合について説明したが、これに限定されるものではない。損失関数算出部152は、骨の長さの計算を、ユークリッド距離を用いて計算してもよい。損失関数算出部152は、骨同士の角度の計算を、cos類似度を用いて計算してもよい。
【0057】
学習フェーズにおける学習部153の処理について説明する。学習部153は、Loss値Lが最小化するように、学習モデル143のパラメータを、誤差逆伝播によって学習(調整)する処理を繰り返し実行する。学習部153は、Loss値Lが収束した場合に、学習モデル143のパラメータの調整を終了する。
【0058】
学習フェーズでは、式(3)に示すように、人体を考慮した骨の長さの誤差に関する「Ll」、骨同士の角度の誤差に関する「Lr」を用いて、Loss値Lが算出されているため、一部関節が大きくずれた場合のLoss値Lへの寄与度が高くなる。これによって、一部関節の誤差が大きい場合に、かかる誤差を改善する学習を実行することができる。
【0059】
次に、制御部150が実行する「前処理フェーズ」について説明する。前処理フェーズでは、学習フェーズで利用されるwl、wrを算出する。学習フェーズにおいて、式(3)を用いて、Loss値を統合する場合に、Ll,Lrがオーバーフィッティングしないように、関節座標Loss値「Lp」と、骨の長さのLoss値「Ll」との相対値から、「wl」を算出する。関節座標Loss値「Lp」と、骨の長さのLoss値「Lr」との相対値から、「wr」を算出する。
【0060】
制御部150が、前処理フェーズを実行する場合には、認識処理部151、損失関数算出部152、学習部153が次の処理を実行する。
【0061】
前処理フェーズにおける認識処理部151の処理について説明する。前処理フェーズにおける認識処理部151の処理は、学習フェーズにおける認識処理部151の処理と同様である。すなわち、認識処理部151は、教師データ141に含まれる入力データを、学習モデル143に入力し、順伝播による出力(骨格認識結果p=(p1,p2,・・・,pNp))を計算する。認識処理部151は、骨格認識結果pを、損失関数算出部152に出力する。
【0062】
前処理フェーズにおける損失関数算出部152の処理について説明する。損失関数算出部152は、学習フェーズのおける損失関数算出部152の処理と同様にして、骨の長さのLoss値「Ll」、骨同士の角度のLoss値「Lr」、関節座標Loss値「Lp」をそれぞれ算出する。
【0063】
ここで、損失関数算出部152は、関節座標Loss値「Lp」のみを、学習部153に出力する。損失関数算出部152は、認識処理部151から、骨格認識結果pを取得する度に、上記処理を繰り返し実行する。
【0064】
損失関数算出部152は、学習部153から、関節座標Loss値「Lp」が収束した旨の情報を受け付けた場合に、関節座標Loss値「Lp」が収束した時点における「Ll」,「Lr」,「Lp」のオーダーをそれぞれ算出する。「Ll」のオーダーを「oLl」とする。「Lr」のオーダーを「oLr」とする。「Lp」のオーダーを「oLp」とする。
【0065】
たとえば、損失関数算出部152は、Lp=4.0×10-3となる場合、「oLp=10-3」とする。損失関数算出部152は、「oLl」、「oLp」についても同様に算出する。
【0066】
損失関数算出部152は、式(7)に基づいて、重みwlを算出する。式(8)に基づいて、重みwrを算出する。係る重みwl、wrは、学習フェーズで利用される。損失関数算出部152が、上記処理によって、重みwl、wrを決定することで、常に、Lpのオーダーを、Ll、Lrが上回ることがないので、Ll,Lrがオーバーフィッティングしないようにしつつ、Ll,Lrが学習に適切な影響を与えることができる。
【0067】
【0068】
前処理フェーズにおける学習部153の処理について説明する。学習部153は、Loss値Lpが最小化するように、学習モデル143のパラメータを、誤差逆伝播によって学習(調整)する処理を繰り返し実行する。学習部153は、Loss値Lpが収束した場合に、学習モデル143のパラメータの調整を終了する。
【0069】
学習部153は、Loss値Lpが収束した場合に、Loss値Lpが収束した旨を損失関数算出部152に出力し、学習を終了する。
【0070】
次に、制御部150が実行する「推論フェーズ」について説明する。制御部150が前処理フェーズを実行する場合には、認識処理部151、画像データ処理部154が次の処理を実行する。
【0071】
推論フェーズにおける認識処理部151の処理について説明する。認識処理部151は、画像データ処理部154から入力データを取得する。認識処理部151は、取得した入力データを、学習済みの学習モデル143に入力し、順伝播による出力(人物15の骨格認識結果)を計算する。認識処理部151は、骨格認識結果を、表示部130に出力して表示してもよいし、骨格認識結果を用いて各種の処理を実行する外部装置に、骨格認識結果を出力してもよい。
【0072】
認識処理部151は、画像データ処理部154から入力データを取得する度に、上記処理を繰り返し実行する。
【0073】
推論フェーズにおける画像データ処理部154の処理について説明する。画像データ処理部154は、カメラ20から画像データを取得し、取得した画像データを、画像データテーブル144に格納する。画像データ処理部154は、画像データに対して、2D backbone処理をかけることで、各関節特徴を表す2D featuresを特定する。画像データ処理部154は、各2D featuresをカメラパラメータに従って3Dcubeに投影することで、aggregated volumesを計算し、計算したaggregated volumesを入力データとして、認識処理部151に出力する。
【0074】
なお、上述した画像データ処理部154が、各画像データを基にして、入力データを計算する処理は一例あり、他の技術を用いて、複数の画像データを統合して、入力データを計算してもよい。画像データ処理部154は、時間毎に、カメラ20から画像データを取得し、上記処理を繰り返し実行する。
【0075】
次に、本実施例に係る骨格認識装置100の処理手順の一例について説明する。
図6は、骨格認識装置の前処理フェーズの処理手順を示すフローチャートである。
図6に示すように、骨格認識装置100の認識処理部151は、教師データ141の入力データを学習モデル143に入力する(ステップS101)。認識処理部151は、学習モデル143の順伝播による骨格認識結果を算出する(ステップS102)。
【0076】
骨格認識装置100の損失関数算出部152は、関節座標の誤差をLoss値として算出する(ステップS103)。損失関数算出部152は、骨の長さの誤差、骨同士の角度の誤差を非Loss値として算出する(ステップS104)。
【0077】
骨格認識装置100の学習部153は、Loss値を最小化するように、誤差逆伝播による学習モデル143のパラメータを調整する(ステップS105)。
【0078】
損失関数算出部152は、Loss値と非Loss値とを基にして、重みwl、wrを算出する(ステップS106)。損失関数算出部152は、重みwl、wrを出力する(ステップS107)。
【0079】
図7は、骨格認識装置の学習フェーズの処理手順を示すフローチャートである。
図7に示すように、骨格認識装置100の認識処理部151は、教師データ141の入力データを学習モデル143に入力する(ステップS201)。認識処理部151は、学習モデル143の順伝播による骨格認識結果を算出する(ステップS202)。
【0080】
骨格認識装置100の損失関数算出部152は、関節座標の誤差、骨の長さの誤差、骨同士の角度の誤差をLoss値として算出する(ステップS203)。損失関数算出部152は、重みwl、wrを使用してLoss値を統合する(ステップS204)。
【0081】
骨格認識装置100の学習部153は、Loss値を最小化するように、誤差逆伝播による学習モデル143のパラメータを調整する(ステップS205)。学習部153は、学習済みの学習モデル143を出力する(ステップS206)。
【0082】
図8は、骨格認識装置の推論フェーズの処理手順を示すフローチャートである。
図8に示すように、骨格認識装置100の画像データ処理部154は、カメラ20から画像データを取得する(ステップS301)。
【0083】
画像データ処理部154は、複数の画像データから入力データを生成する(ステップS302)。骨格認識装置100の認識処理部151は、入力データを学習済みの学習モデル143に入力する(ステップS303)。
【0084】
認識処理部151は、学習モデル143の順伝播による骨格認識結果を算出する(ステップS304)。認識処理部151は、骨格認識結果を出力する(ステップS305)。
【0085】
次に、本実施例に係る骨格認識装置100の効果について説明する。骨格認識装置100は、学習モデル143に教師データの入力データを入力して骨格認識結果を算出し、骨認識結果と、教師データの正解値との比較により、骨の長さの誤差、骨同士の角度の誤差を算出し、損失関数のLoss値を算出する。係る損失関数のLoss値が最小化するように、学習モデル143のパラメータを調整することで、一部関節が大きくずれた場合のLoss値への寄与度を高くすることができ、一部関節の誤差が大きい場合に、かかる誤差を改善する学習を行うことができる。また、かかる学習を行うことで、学習済みの学習モデル143に、入力データを入力するという一段階の処理によって、人物15の骨格認識結果を算出可能であり、2段階で処理を実行する従来技術2と比較して、処理速度を向上させることができる。
【0086】
より具体的には、骨格認識装置100は、教師データの正解値との比較により、関節座標の誤差、関節座標の誤差、関節座標の誤差をそれぞれ算出し、損失関数のLoss値を算出することによって、学習モデル143のパラメータを精度よく学習することができる。
【0087】
骨格認識装置100は、式(7)に基づいて、重みwlを算出し、式(8)に基づいて、重みwrを算出する。係る重みwl、wrは、学習フェーズで利用される。重みwl、wrを決定することで、常に、関節座標の誤差Lpのオーダーを、関節座標の誤差Ll、関節座標の誤差Lrが上回ることがないので、Ll,Lrがオーバーフィッティングしないようにしつつ、Ll,Lrが学習に適切な影響を与えることができる。
【0088】
図9は、本実施例の効果を説明するための図である。
図9において、骨格認識結果30aは、従来技術1による骨格認識結果であり、左膝の角度が異常となっている。骨格認識結果30bは、本実施例に係る骨格認識装置100の骨格認識結果であり、左膝の角度が正常化されている。
【0089】
次に、上記実施例に示した骨格認識装置100と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。
図10は、実施例の骨格認識装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【0090】
図10に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、ユーザからのデータの入力を受け付ける入力装置202と、ディスプレイ203とを有する。また、コンピュータ200は、記憶媒体からプログラム等を読み取る読み取り装置204と、有線または無線ネットワークを介して、カメラ20、他の外部装置等との間でデータの授受を行う通信装置205とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM206と、ハードディスク装置207とを有する。そして、各装置201~207は、バス208に接続される。
【0091】
ハードディスク装置207は、認識処理プログラム207a、損失関数算出プログラム207b、学習プログラム207c、学習データ処理プログラム207dを有する。また、CPU201は、各プログラム207a~207dを読み出してRAM206に展開する。
【0092】
認識処理プログラム207aは、認識処理プロセス206aとして機能する。損失関数算出プログラム207bは、損失関数算出プロセス206bとして機能する。学習プログラム207cは、学習プロセス206cとして機能する。画像データ処理プログラム207dは、画像データ処理プロセス206dとして機能する。
【0093】
認識処理プロセス206aの処理は、認識処理部151の処理に対応する。損失関数算出プロセス206bの処理は、損失関数算出部152の処理に対応する。学習プロセス206cの処理は、学習部153の処理に対応する。画像データ処理プロセス206dの処理は、画像データ処理部154の処理に対応する。
【0094】
なお、各プログラム207a~207dについては、必ずしも最初からハードディスク装置207に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD-ROM、DVD、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ200が各プログラム207a~207dを読み出して実行するようにしてもよい。
【符号の説明】
【0095】
100 骨格認識装置
110 通信部
120 入力部
130 表示部
140 記憶部
141 教師データ
142 人体モデル
143 学習モデル
144 画像データテーブル
150 制御部
151 認識処理部
152 損失関数算出部
153 学習部
154 画像データ処理部