(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-06-23
(45)【発行日】2025-07-01
(54)【発明の名称】推定プログラム、推定方法および情報処理装置
(51)【国際特許分類】
G06T 7/00 20170101AFI20250624BHJP
A63B 71/06 20060101ALI20250624BHJP
【FI】
G06T7/00 660Z
A63B71/06 M
(21)【出願番号】P 2023553833
(86)(22)【出願日】2021-10-13
(86)【国際出願番号】 JP2021037972
(87)【国際公開番号】W WO2023062762
(87)【国際公開日】2023-04-20
【審査請求日】2024-02-15
【前置審査】
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】鈴木 達也
(72)【発明者】
【氏名】石川 優
【審査官】佐田 宏史
(56)【参考文献】
【文献】特開2007-252617(JP,A)
【文献】特開平08-077334(JP,A)
【文献】伊藤 健太郎、外4名,“感性を伴ったダンスステップの識別”,じんもんこん2009論文集,日本,情報処理学会,2009年12月11日,Vol.16,pp.147-154
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/00,7/00-7/90
G06V 10/00-10/98
A63B 71/06
(57)【特許請求の範囲】
【請求項1】
競技者の頭部が所定の状態の画像を機械学習モデルに入力することで、前記競技者の顔に含まれる複数の関節の位置を特定し、
人物の顔に含まれる複数の関節の位置と前記人物の頭頂部とを定義した定義情報と、
前記競技者の顔に含まれる複数の関節の位置を示す認識情報とを基にして、前記定義情報の複数の関節の位置を、前記認識情報の複数の関節の位置に合わせるパラメータを推定し、
前記パラメータと、前記定義情報の頭頂部の座標とを基にして、前記競技者の頭頂部の位置を推定する
処理をコンピュータに実行させることを特徴とする推定プログラム。
【請求項2】
前記機械学習モデルに入力される画像は、背景の色と前記競技者の髪の色とが類似している状態の画像、前記競技者の髪が乱れている状態の画像、または、前記競技者の頭が隠れている状態の画像のうち、何れかの画像であることを特徴とする請求項1に記載の推定プログラム。
【請求項3】
前記頭頂部の位置を基にして、平均台または床運動に関する演技を評価する処理を更にコンピュータに実行させることを特徴とする請求項1に記載の推定プログラム。
【請求項4】
前記推定する処理によって推定された前記競技者の頭頂部の位置が異常であるか否かを判定し、前記競技者の頭頂部の位置が異常である場合に、前記競技者の頭頂部の位置を補正する処理を更にコンピュータに実行させることを特徴とする請求項1に記載の推定プログラム。
【請求項5】
前記定義情報は、複数の頭頂部の候補を有し、前記頭頂部の位置を推定する処理は、前記パラメータを、前記定義情報に適用した場合に、前記複数の頭頂部の候補のうち、鉛直方向の値が最小となる頭頂部の候補の位置を、前記競技者の頭頂部の位置として推定することを特徴とする請求項
1~4のいずれか一つに記載の推定プログラム。
【請求項6】
競技者の頭部が所定の状態の画像を機械学習モデルに入力することで、前記競技者の顔に含まれる複数の関節の位置を特定し、
人物の顔に含まれる複数の関節の位置と前記人物の頭頂部とを定義した定義情報と、
前記競技者の顔に含まれる複数の関節の位置を示す認識情報とを基にして、前記定義情報の複数の関節の位置を、前記認識情報の複数の関節の位置に合わせるパラメータを推定し、
前記パラメータと、前記定義情報の頭頂部の座標とを基にして、前記競技者の頭頂部の位置を推定する
処理をコンピュータが実行することを特徴とする推定方法。
【請求項7】
競技者の頭部が所定の状態の画像を機械学習モデルに入力することで、前記競技者の顔に含まれる複数の関節の位置を特定する生成部と、
人物の顔に含まれる複数の関節の位置と前記人物の頭頂部とを定義した定義情報と、
前記競技者の顔に含まれる複数の関節の位置を示す認識情報とを基にして、前記定義情報の複数の関節の位置を、前記認識情報の複数の関節の位置に合わせるパラメータを推定し、前記パラメータと、前記定義情報の頭頂部の座標とを基にして、前記競技者の頭頂部の位置を推定する推定部と、
有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、推定プログラム等に関する。
【背景技術】
【0002】
3次元の人の動きの検出に関しては、複数台の3Dレーザセンサから人の3D骨格座標を±1cmの精度で検出する3Dセンシング技術が確立されている。この3Dセンシング技術は、体操採点支援システムへの応用や、他のスポーツ、他分野への展開が期待されている。3Dレーザセンサを用いた方式を、レーザ方式と表記する。
【0003】
レーザ方式では、レーザを1秒間に約200万回照射し、レーザの走行時間(Time of Flight:ToF)を基に、対象となる人を含めて、各照射点の深さや情報を求める。レーザ方式は、高精度な深度データを取得できるが、レーザスキャンやToF測定の構成および処理が複雑であるため、ハードウェアが複雑および高価になるという欠点がある。
【0004】
レーザ方式の代わりに、画像方式によって、3D骨格認識を行う場合もある。画像方式では、CMOS(Complementary Metal Oxide Semiconductor)イメージャによって、各ピクセルのRGB(Red Green Blue)データを取得する方式であり、安価なRGBカメラを用いることができる。
【0005】
ここで、複数カメラによる2D特徴を用いた3D骨格認識の従来技術について説明する。従来技術では、事前に定義された人体モデルに従って、各カメラで2D特徴を取得した後、各2D特徴を統合した結果を用いて、3D骨格を認識する。たとえば、2D特徴は、2D骨格情報、heatmap情報が上げられる。
【0006】
図37は、人体モデルの一例を示す図である。
図37に示すように、人体モデルM1は、21個の関節で構成される。人体モデルM1では、各関節をノードで示し、0~20の番号を割り当てる。ノードの番号と、関節名との関係は、テーブルTe1に示す関係となる。たとえば、ノード0に対応する関節名は「SPINE_BASE」となる。ノード1~20に対する関節名の説明を省略する。
【0007】
従来技術には、機械学習を用いて3D骨格認識を行う技術がある。
図38は、機械学習を用いた手法を説明するための図である。機械学習を用いた従来技術では、各カメラが撮影した各入力画像21に対して、2D backbone処理21aをかけることで、各関節特徴を表す2D特徴(2D features)22を取得する。従来技術では、各2D特徴22をカメラパラメータに従って3Dcubeに逆投影することで、aggregated volumes23を取得する。
【0008】
従来技術では、aggregated volumes23を、V2V(ニューラルネットワーク、P3)24に入力することで、各関節の尤度を表すprocessed volumes25を取得する。processed volumes25は、各関節の3Dでの尤度を表すheatmapに対応する。従来技術では、processed volumes25に対して、soft-argmax26を実行することで、3D骨格情報27を取得する。
【先行技術文献】
【特許文献】
【0009】
【文献】特開2018-57596号公報
【文献】特開2021-26265号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、上述した従来技術では、競技者の頭頂部の位置を正確に特定することができないという問題がある。
【0011】
競技者の演技の演技が成立したか否かを評価するときに、頭頂部の位置を正確に特定することが重要であることもある。たとえば、体操演技の輪飛びの評価では、競技者の頭頂部の位置が、足の位置よりも低いことが、輪飛びの成立条件となる。
【0012】
このとき、画像の状態によっては、3D骨格認識の結果となる頭部の輪郭と、実際の頭部の輪郭とが異なってしまい、頭頂部の位置を正確に特定できなくなる。
【0013】
図39は、頭頂部の位置を精度よく特定できない画像の一例を示す図である。
図39では、「アピアランス」の発生した画像10a、「髪乱れ」の発生した画像10b、「オクルージョン」の発生した画像10cを用いて説明を行う。競技者の頭が背景に溶け込み、人間でも頭の領域を判別することが困難なことを、アピアランスと定義する。競技者の髪が乱れていることを、髪乱れと定義する。競技者の胴体や腕によって、頭頂部が隠れることをオクルージョンと定義する。
【0014】
従来技術に基づいて画像10aの3D骨格認識を行い頭頂部の位置を特定すると、アピアランスの影響により、位置1aが特定されてしまう。画像10aにおいて、頭頂部の正確な位置は1bとなる。
【0015】
従来技術に基づいて、画像10bの3D骨格認識を行い頭頂部の位置を特定すると、髪乱れの影響により、位置1cが特定されてしまう。画像10bにおいて、頭頂部の正確な位置は1dとなる。
【0016】
従来技術に基づいて、画像10cの3D骨格認識を行い頭頂部の位置を特定すると、オクルージョンの影響により、位置1eが特定されてしまう。画像10cにおいて、頭頂部の正確な位置は1fとなる。
【0017】
図39で説明したように、従来技術では、アピアランス、髪乱れ、オクルージョン等が画像に発生していると、競技者の頭頂部の位置を正確に特定することができず、競技者の演技の適切に評価できなくなる。このため、人物の頭頂部の位置を正確に推定することが求められている。
【0018】
1つの側面では、本発明は、競技者の頭頂部の位置を正確に推定することができる推定プログラム、推定方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0019】
第1の案では、コンピュータに次の処理を実行させる。コンピュータは、競技者の頭部が所定の状態の画像を機械学習モデルに入力することで、競技者の顔に含まれる複数の関節の位置を特定する。コンピュータは、複数の関節の位置のそれぞれを用いて、競技者の頭頂部の位置を推定する。
【発明の効果】
【0020】
人物の頭頂部の位置を正確に推定することができる。
【図面の簡単な説明】
【0021】
【
図1】
図1は、本実施例1に係る体操採点支援システムの一例を示す図である。
【
図2】
図2は、ソース情報の一例を説明するための図である。
【
図3】
図3は、ターゲット情報の一例を説明するための図である。
【
図4】
図4は、変換パラメータを算出する手法を補足説明するための図である。
【
図5】
図5は、競技者の頭頂部を推定する手法を補足説明するための図である。
【
図6】
図6は、本実施例1に係る情報処理装置の効果を説明するための図である。
【
図7】
図7は、本実施例1に係る学習装置の構成を示す機能ブロック図である。
【
図8】
図8は、学習データのデータ構造の一例を示す図である。
【
図9】
図9は、本実施例1に係る情報処理装置の構成を示す機能ブロック図である。
【
図10】
図10は、測定テーブルのデータ構造の一例を示す図である。
【
図11】
図11は、骨格認識結果テーブルのデータ構造の一例を示す図である。
【
図14】
図14は、RANSACを補足説明するための図である。
【
図15】
図15は、RANSACの問題を説明するための図である。
【
図16】
図16は、本実施例1に係る推定部の処理を説明するための図である。
【
図17】
図17は、骨長さ異常を検知する処理を説明するための図である。
【
図18】
図18は、逆・横曲がり異常を検知する処理を説明するための図である。
【
図19】
図19は、逆・横曲がり異常検知で用いる各ベクトルを補足説明するための図(1)である。
【
図20】
図20は、逆・横曲がり異常検知で用いる各ベクトルを補足説明するための図(2)である。
【
図21】
図21は、逆・横曲がり異常検知で用いる各ベクトルを補足説明するための図(3)である。
【
図22】
図22は、逆・横曲がり異常検知で用いる各ベクトルを補足説明するための図(4)である。
【
図23】
図23は、曲がりすぎ異常を検知する処理を説明するための図である。
【
図25】
図25は、逆・横曲がり補正を説明するための図である。
【
図26】
図26は、曲がりすぎ補正を説明するための図である。
【
図27】
図27は、本実施例1に係る学習装置の処理手順を示すフローチャートである。
【
図28】
図28は、本実施例1に係る情報処理装置の処理手順を示すフローチャートである。
【
図29】
図29は、変換パラメータ推定処理の処理手順を示すフローチャート(1)である。
【
図30】
図30は、変換パラメータ推定処理の処理手順を示すフローチャート(2)である。
【
図31】
図31は、頭頂部推定の誤差の比較結果を説明するための図である。
【
図32】
図32は、本実施例2に係るソース情報の一例を示す図である。
【
図33】
図33は、頭頂部を特定する処理を説明するための図である。
【
図34】
図34は、本実施例2に係る情報処理装置の構成を示す機能ブロック図である。
【
図35】
図35は、本実施例2に係る情報処理装置の処理手順を示すフローチャートである。
【
図36】
図36は、情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【
図38】
図38は、機械学習を用いた手法を説明するための図である。
【
図39】
図39は、頭頂部の位置を精度よく特定できない画像の一例を示す図である。
【発明を実施するための形態】
【0022】
以下に、本願の開示する推定プログラム、推定方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例1】
【0023】
図1は、本実施例1に係る体操採点支援システムの一例を示す図である。
図1に示すように、この体操採点支援システム35は、カメラ30a,30b,30c,30dと、学習装置50と、情報処理装置100とを有する。カメラ30a~30dと、情報処理装置100とは、有線または無線によってそれぞれ接続されている。学習装置50と、情報処理装置100とは、有線または無線によってそれぞれ接続されている。
【0024】
図1では、カメラ30a~30dを示すが、この体操採点支援システム35は、他のカメラを更に有していてもよい。
【0025】
本実施例1では一例として、競技者H1が、器具上で一連の演技を行うものとするがこれに限定されるものではない。たとえば、競技者H1は、器具の存在しない場所で演技を行ってもよいし、演技以外の動作を行ってもよい。
【0026】
カメラ30aは、競技者H1の画像を撮影するカメラである。カメラ30aは、CMOSイメージャ、RGBカメラ等に対応する。カメラ30aは、所定のフレームレート(frames per second:FPS)によって、画像を連続して撮影し、時系列に画像のデータを情報処理装置100に送信する。以下の説明では、連続する複数の画像のデータのうち、ある一つの画像のデータを「画像フレーム」と表記する。画像フレームには、時系列にフレーム番号が付与される。
【0027】
カメラ30b,30c,30dに関する説明は、カメラ30aに関する説明と同様である。以下の説明では、適宜、カメラ30a~30dをまとめて「カメラ30」と表記する。
【0028】
学習装置50は、事前に準備された学習データを基にして、画像フレームから、顔関節の位置を推定する機械学習モデルを機械学習する。顔関節には、左右の目、左右の耳、鼻、顎、口元等が含まれる。以下の説明では、画像フレームから、顔関節の位置を推定する機械学習モデルを「顔関節推定モデル」と表記する。学習装置60は、機械学習済みの顔関節推定モデルの情報を、情報処理装置100に出力する。
【0029】
情報処理装置100は、予め準備したソース(source)情報と、顔関節推定モデルを用いた顔関節の認識結果となるターゲット(target)情報とを基にして、競技者H1の頭頂部の位置を推定する。以下において、ソース情報と、ターゲット情報とについて説明する。
【0030】
図2は、ソース情報の一例を説明するための図である。
図2に示すように、ソース情報60aには、3Dの人体モデルM2に、複数の顔関節p1の位置、頭頂部関節tp1の位置がそれぞれ設定される。ソース情報60aは、予め情報処理装置100に設定される。
【0031】
図3は、ターゲット情報の一例を説明するための図である。ターゲット情報は、カメラから取得する画像フレームを、顔関節推定モデルに入力することで生成される。
図3に示すように、ターゲット情報60bには、複数の顔関節p2がそれぞれ特定されている。
【0032】
情報処理装置100は、ソース情報60aの顔関節の各位置を、ターゲット情報60bの顔関節の各位置に合わせるための変換パラメータを算出する。情報処理装置100は、算出した変換パラメータを、ソース情報60aの頭頂部の位置に適用することで、競技者H1の頭頂部の位置を推定する。
【0033】
図4は、変換パラメータを算出する手法を補足説明するための図である。変換パラメータには回転R、並進t、スケールcが含まれる。回転R、並進tはベクトル値である。スケールcはスカラー値である。ステップS1~S5の順に説明を行う。
【0034】
ステップS1について説明する。ソース情報60aに含まれる複数の顔関節p1の位置をx(xはベクトル値)とする。
【0035】
ステップS2について説明する。顔関節の位置xに回転Rをかけることで、顔関節p1の位置は「Rx」となる。
【0036】
ステップS3について説明する。顔関節p1の更新された位置「Rx」に、スケールcをかけることで、顔関節p1の位置は「cRx」となる。
【0037】
ステップS4について説明する。顔関節p1の更新された位置「cRx」に並進tを加算することで、顔関節p1の位置は「cRx+t」となる。
【0038】
ステップS5について説明する。ターゲット情報60bの顔関節p2の位置をyとすると、|y-(cRx+t)|を計算することで、変換パラメータを適用したソース情報60aと、ターゲット情報60bとの差を特定することができる。
【0039】
具体的には、変換パラメータを適用したソース情報60aと、ターゲット情報60bとの差e2は、式(1)によって定義される。式(1)において、xは、ソース情報60aの顔関節の位置を示す。yは、ターゲット情報60bの顔関節の位置を示す。
【0040】
【0041】
情報処理装置100は、最小二乗法等を用いて、式(1)の差e2が最小となる変換パラメータR、t、cを算出する。
【0042】
情報処理装置100は、変換パラメータを算出すると、変換パラメータを、ソース情報60aの頭頂部の位置に適用することで、競技者H1の頭頂部の位置を推定する。
【0043】
図5は、競技者の頭頂部を推定する手法を補足説明するための図である。情報処理装置100は、式(2)を基にして、ソース情報60aの顔座標の位置x(頭頂部の位置tp1を含む)から、競技者の顔関節の位置y(頭頂部の位置tp2を含む)を算出する。式(2)の変換パラメータは、上記処理によって算出された差e
2が最小となる変換パラメータである。情報処理装置100は、算出した位置yに含まれる頭頂部の位置tp2を取得する。
【0044】
【0045】
上記のように、情報処理装置100は、ソース情報60aの顔関節の位置を、ターゲット情報60bの顔関節の位置に合わせるための変換パラメータを算出する。情報処理装置100は、算出した変換パラメータをソース情報60aの頭頂部に適用することで、競技者の頭頂部の位置を算出する。顔関節と、頭頂部との関係は剛体関係にあるため、かかる関係を利用して、競技者の頭頂部の位置を推定することで、推定精度を向上させることができる。
【0046】
図6は、本実施例1に係る情報処理装置の効果を説明するための図である。
図6では、「アピアランス」の発生した画像10a、「髪乱れ」の発生した画像10b、「オクルージョン」の発生した画像10cを用いて説明を行う。
【0047】
従来技術に基づいて画像10aの3D骨格認識を行い頭頂部の位置を特定すると、アピアランスの影響により、頭頂部の位置1aが特定されてしまう。これに対して、情報処理装置100が、上記の処理を実行することで、頭頂部の位置2aが特定される。画像10aにおいて、頭頂部の正確な位置は1bとなるため、従来技術と比較して、頭頂部の推定精度が向上している。
【0048】
従来技術に基づいて画像10bの3D骨格認識を行い頭頂部の位置を特定すると、髪乱れの影響により、頭頂部の位置1cが特定されてしまう。これに対して、情報処理装置100が、上記の処理を実行することで、頭頂部の位置2bが特定される。画像10bにおいて、頭頂部の正確な位置は1dとなるため、従来技術と比較して、頭頂部の推定精度が向上している。
【0049】
従来技術に基づいて、画像10cの3D骨格認識を行い頭頂部の位置を特定すると、オクルージョンの影響により、位置1eが特定されてしまう。これに対して、情報処理装置100が、上記の処理を実行することで、頭頂部の位置2cが特定される。画像10cにおいて、頭頂部の正確な位置は1fとなるため、従来技術と比較して、頭頂部の推定精度が向上している。
【0050】
上記のように、情報処理装置100は、観測不良の影響の低い顔関節を利用することで、頭頂部推定の精度を向上させることができる。また、頭頂部を用いて競技者の演技を評価する場合も、適切に演技の成立不成立を評価することができる。頭頂部を用いて競技者の演技には、平均台の輪飛びや、床運動の一部の演技が含まれる。
【0051】
次に、
図1で説明した学習装置50の構成について説明する。
図7は、本実施例1に係る学習装置の構成を示す機能ブロック図である。
図7に示すように、学習装置50は、通信部51、入力部52、表示部53、記憶部54、制御部55を有する。
【0052】
通信部51は、情報処理装置100との間でデータ通信を実行する。たとえば、通信部51は、機械学習済みの顔関節推定モデル54bの情報を、情報処理装置100に送信する。通信部51は、機械学習で利用する学習データ54aを、外部装置から受信してもよい。
【0053】
入力部52は、学習装置50に対して各種の情報を入力する入力装置に対応する。
【0054】
表示部53は、制御部55から出力される情報を表示する。
【0055】
記憶部54は、学習データ54a、顔関節推定モデル54bを記憶する。記憶部54は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
【0056】
学習データ54aは、顔関節推定モデル54bを機械学習するための情報を保持する。たとえば、機械学習するための情報として、顔関節のアノテーションありの画像フレームを保持する。
図8は、学習データのデータ構造の一例を示す図である。
図8に示すように、学習データは、項番と、入力データと、正解データ(ラベル)とを対応付ける。入力データとして、人物の顔画像を含む画像フレームが設定される。正解データとして、画像フレームに含まれる顔関節の位置が設定される。
【0057】
顔関節推定モデル54bは、NN(Neural Network)等に対応する。顔関節推定モデル54bは、画像フレームが入力された場合に、機械学習済みのパラメータを基にして、顔関節の位置を出力する。
【0058】
制御部55は、取得部55a、学習部55b、出力部55cを有する。制御部55は、CPU(Central Processing Unit)等に対応する。
【0059】
取得部55aは、通信部51等から学習データ54aを取得する。取得部55aは、取得した学習データ54aを、記憶部54に登録する。
【0060】
学習部55bは、誤差逆伝播法に基づき、学習データ54aを用いて、顔関節推定モデル54bの機械学習を実行する。たとえば、学習部55bは、顔関節推定モデル54bに、学習データ54aの入力データを入力した結果が、入力データと対になる正解データに近づくように、顔関節推定モデル54bのパラメータを訓練する。
【0061】
出力部55cは、機械学習が完了した顔関節推定モデル54bの情報を、情報処理装置100に出力する。
【0062】
次に、
図1で説明した情報処理装置100の構成について説明する。
図9は、本実施例1に係る情報処理装置の構成を示す機能ブロック図である。
図9に示すように、情報処理装置100は、通信部110、入力部120、表示部130、記憶部140、制御部150を有する。
【0063】
通信部110は、カメラ30、情報処理装置100との間でデータ通信を実行する。たとえば、通信部110は、カメラ30から画像フレームを受信する。通信部110は、機械学習済みの顔関節推定モデル54bの情報を、情報処理装置100に送信する。
【0064】
入力部120は、情報処理装置100に対して、各種の情報を入力する入力装置に対応する。
【0065】
表示部130は、制御部150から出力される情報を表示する。
【0066】
記憶部140は、顔関節推定モデル54b、ソース情報60a、測定テーブル141、骨格認識結果テーブル142、技認識テーブル143を有する。記憶部140は、RAM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
【0067】
顔関節推定モデル54bは、機械学習実行済みとなる顔関節推定モデル54bである。顔関節推定モデル54bは、上述した学習装置50によって訓練される。
【0068】
ソース情報60aは、
図2で説明したように、複数の顔関節p1の位置、頭頂部関節tp1の位置がそれぞれ設定された情報である。
【0069】
測定テーブル141は、カメラ30により撮影される画像フレームを時系列に格納するテーブルである。
図10は、測定テーブルのデータ構造の一例を示す図である。
図10に示すように、測定テーブル141は、カメラ識別情報と、画像フレームとを対応付ける。
【0070】
カメラ識別情報は、カメラを一意に識別する情報である。たとえば、カメラ識別情報「C30a」は、カメラ30aに対応し、カメラ識別情報「C30b」は、カメラ30bに対応し、カメラ識別情報「C30c」は、カメラ30cに対応し、カメラ識別情報「C30d」は、カメラ30dに対応する。画像フレームは、該当するカメラ30に撮影された時系列の画像フレームである。各画像フレームには、時系列にフレーム番号が設定されるものとする。
【0071】
骨格認識結果テーブル142は、競技者H1の3D骨格の認識結果を格納するテーブルである。
図11は、骨格認識結果テーブルのデータ構造の一例を示す図である。
図11に示すように、この骨格認識結果テーブル142は、フレーム番号と、3D骨格情報とを対応付ける。フレーム番号は、3D骨格情報を推定する場合に用いた画像フレームに付与されたフレーム番号である。3D骨格情報は、
図37に示される各ノード0~20に定義される関節の位置と、頭頂部を含む複数の顔関節の位置とを含む。
【0072】
技認識テーブル143は、各3D骨格情報に含まれる各関節位置の時系列変化と、技の種別とを対応付けるテーブルである。また、技認識テーブル143は、技の種別の組み合わせと、スコアとを対応付ける。スコアは、D(Difficulty)スコアとE(Execution)スコアとの合計で算出される。たとえば、Dスコアは、技の難易度に基づいて算出されるスコアである。Eスコアは、技の完成度に応じて、減点法により算出されるスコアである。
【0073】
たとえば、技認識テーブル143には、平均台の輪飛びや、床運動の一部の演技のように、頭頂部の時系列変換と、技の種別とを対応付けた情報も含まれる。
【0074】
図9の説明に戻る。制御部150は、取得部151、前処理部152、ターゲット情報生成部153、推定部154、異常検知部155、補正部156、技認識部157を有する。制御部150は、CPU等に対応する。
【0075】
取得部151は、通信部110を介して、学習装置50から、機械学習実行済みとなる顔関節推定モデル54bを取得し、顔関節推定モデル54bを記憶部140に登録する。
【0076】
取得部151は、通信部110を介して、カメラ30から時系列に画像フレームを取得する。取得部151は、カメラ30から取得した画像フレームを、カメラ識別情報と対応付けて、測定テーブル141に格納する。
【0077】
前処理部152は、測定テーブル141に登録された画像フレーム(多視点の画像フレーム)から、競技者H1の3D骨格認識を実行する。前処理部152は、どのような従来技術を用いて、競技者H1の3D骨格情報を生成してもよい。以下に、前処理部152の処理の一例を説明する。
【0078】
前処理部152は、測定テーブル141から、カメラ30の画像フレームを取得し、画像フレームを基にして、競技者H1の関節にそれぞれ対応する複数の第2特徴を生成する。第2特徴は、各関節位置の尤度を示すheatmapである。1つのカメラから取得した1つの画像フレームから、各関節に対応する第2特徴が生成される。たとえば、関節数を21個、カメラの数を4個とすると、画像フレーム毎に、84個の第2特徴が生成される。
【0079】
図12は、第2特徴を説明するための図である。
図12に示す画像フレームIm30a1は、カメラ30aに撮影された画像フレームである。画像フレームIm30b1は、カメラ30bに撮影された画像フレームである。画像フレームIm30c1は、カメラ30cに撮影された画像フレームである。画像フレームIm30d1は、カメラ30dに撮影された画像フレームである。
【0080】
前処理部152は、画像フレームIm30a1を基にして、第2特徴群情報G1aを生成する。第2特徴群情報G1aには、各関節に対応する21個の第2特徴が含まれる。前処理部152は、画像フレームIm30b1を基にして、第2特徴群情報G1bを生成する。第2特徴群情報G1bには、各関節に対応する21個の第2特徴が含まれる。
【0081】
前処理部152は、画像フレームIm30c1を基にして、第2特徴群情報G1cを生成する。第2特徴群情報G1cには、各関節に対応する21個の第2特徴が含まれる。前処理部152は、画像フレームIm30d1を基にして、第2特徴群情報G1dを生成する。第2特徴群情報G1dには、各関節に対応する21個の第2特徴が含まれる。
【0082】
図13は、一つの第2特徴を示す図である。
図13に示す第2特徴Gc1-3は、第2特徴群情報G1dに含まれる第2特徴のうち、関節「HEAD」に対応する第2特徴である。第2特徴Gc1-3の各ピクセルには、尤度が設定される。
図13では、尤度の値に応じた色が設定される。尤度が最大となる箇所が、該当する関節の座標となる。たとえば、特徴Gc1-3において、尤度の値が最大となる領域Ac1-3が、関節「HEAD」の座標であることが特定できる。
【0083】
前処理部152は、第2特徴群情報G1aに含まれる第2特徴から、異常のある第2特徴を検知し、検知した異常のある第2特徴を、第2特徴群情報G1aから除去する。前処理部152は、第2特徴群情報G1bに含まれる第2特徴から、異常のある第2特徴を検知し、検知した異常のある第2特徴を、第2特徴群情報G1bから除去する。
【0084】
前処理部152は、第2特徴群情報G1cに含まれる第2特徴から、異常のある第2特徴を検知し、検知した異常のある第2特徴を、第2特徴群情報G1cから除去する。前処理部152は、第2特徴群情報G1dに含まれる第2特徴から、異常のある第2特徴を検知し、検知した異常のある第2特徴を、第2特徴群情報G1dから除去する。
【0085】
前処理部152は、異常のある第2特徴を除いた第2特徴群情報G1a,G1b,G1c,G1dを統合し、統合した結果を基にして、競技者H1の3D骨格情報を生成する。前処理部152によって生成される3D骨格情報には、
図37で説明した各関節の位置(3次元座標)が含まれる。なお、前処理部152は、
図38で説明した従来技術を用いて、競技者H1の3D骨格情報を生成してもよい。また、
図37の説明では、番号3の関節を「HEAD」としているが、頭頂部を含む複数の顔関節であってもよい。
【0086】
前処理部152は、3D骨格情報を生成する度に、3D骨格情報を推定部154に出力する。また、前処理部152は、3D骨格情報の生成に用いた画像フレームを、ターゲット情報生成部153に出力する。
【0087】
図9の説明に戻る。ターゲット情報生成部153は、顔関節推定モデル54bに、画像フレームを入力することで、ターゲット情報を生成する。かかるターゲット情報は、
図3で説明したターゲット情報60bに対応する。ターゲット情報生成部153は、ターゲット情報を、推定部154に出力する。
【0088】
ターゲット情報生成部153は、同一のフレーム番号に対して、複数の画像フレームを取得した場合、何れかの画像フレームを選択して、顔関節推定モデル54bに入力する。ターゲット情報生成部153は、画像フレームを取得する度に、上記処理を繰り返し実行する。
【0089】
推定部154は、ソース情報60aと、ターゲット情報60b(画像フレーム固有のターゲット情報)とを基にして、競技者H1の頭頂部の位置を推定する。
【0090】
ここで、推定部154の処理を説明する前に、顔関節の外れ値を除去する従来技術(RANSAC:RANdom SAmple Consensus)について説明する。RANSACでは、外れ値除去の判別にinlier数の最大値を取る関節の組み合わせを外れ値除去後の結果として用いるが、そのinlier数が同点の場合には、どちらの関節組み合わせが良いのかを選択することができない。
【0091】
図14は、RANSACを補足説明するための図である。
図14のステップS10~S13の順に説明を行う。
【0092】
ステップS10について説明する。画像フレームを、顔関節推定モデル54b等に入力することで得られるターゲット情報に、顔関節p3-1,p3-2,p3-3,p3-4が含まれているものとする。たとえば、顔関節p3-1は、右耳の顔関節である。顔関節p3-2は、鼻の顔関節である。顔関節p3-3は、首の顔関節である。顔関節p3-4は、左耳の顔関節である。
【0093】
ステップS11について説明する。RANSACでは、ランダムに顔関節をサンプリングする。ここでは、3つの顔関節をサンプリングするものとし、顔関節p3-2,p3-3,p3-4がサンプリングされている。
【0094】
ステップS12について説明する。RANSACでは、ソース情報と、ターゲット情報との剛体関係に基づく位置合わせを行い、回転、並進、スケールを計算する。RANSACでは、計算結果(回転、並進、スケール)を、ソース情報に適用して、再投影することで、顔関節p4-1,p4-2,p4-3,p4-4を特定する。
【0095】
ステップS13について説明する。RANSACでは、顔関節p4-1~p4-4を中心とするサークルcir1,cir2,cir3,cir4を設定する。サークルcir1~cir4の半径(閾値)は、予め設定される。
【0096】
RANSACでは、顔関節p3-1,p3-2,p3-3,p3-4のうち、サークルcir1,cir2,cir3,cir4に含まれる顔関節をinlierとし、サークルcir1,cir2,cir3,cir4に含まれない顔関節をoutlierとする。
図14のステップS13に示す例では、顔関節p3-2,p3-3,p3-4がinlierとなり、顔関節p3-1がoutlierとなる。
【0097】
RANSACでは、inlierの数(以下、inlier数)をカウントする。ステップS13に示す例では、inlier数は「3」となる。RANSACでは、ステップS11で説明したサンプリングの対象を変更しながら、ステップS11~S13の処理を繰り返し実行し、inlier数が最大となるサンプリング対象の顔関節の組み合わせを特定する。たとえば、ステップS11において、顔関節p3-2,p3-3,p3-4をサンプリングした際のinlier数が最大となる場合には、顔関節p3-2,p3-3,p3-4を、外れ値除去後の結果として出力する。
【0098】
しかしながら、
図14で説明したRANSACでは、
図15に示すような問題がある。
図15は、RANSACの問題を説明するための図である。RANSACでは、inlier数が同点の場合に、どちらの組み合わせがよいのかを判定することが難しい。
【0099】
図15の「ケース1」について説明する。ケース1のステップS11において、顔関節p3-1,p3-2,p3-3がサンプリングされている。ステップS12の説明は省略する。
【0100】
ケース1のステップS13について説明する。ソース情報を再投影して得られる顔関節p4-1~p4-4を中心とするサークルcir1,cir2,cir3,cir4が設定されている。ケース1のステップS13に示す例では、顔関節p3-1,p3-2,p3-3がinlierとなり、inlier数は「3」となる。
【0101】
図15の「ケース2」について説明する。ケース2のステップS11において、顔関節p3-2,p3-3,p3-4がサンプリングされている。ステップS12の説明は省略する。
【0102】
ケース2のステップS13について説明する。ソース情報を再投影して得られる顔関節p4-1~p4-4を中心とするサークルcir1,cir2,cir3,cir4が設定されている。ケース2のステップS13に示す例では、顔関節p3-2,p3-3,p3-4がinlierとなり、inlier数は「3」となる。
【0103】
ケース1と、ケース2とを比較すると、顔関節p3-2,p3-3,p3-4が、cir2,cir3,cir4の中心位置に近く、総合的には、ケース2の方が良い結果であるといえる。しかし、ケース1のinlier数とケース2のinlier数とが同じであるため、RANSACにより、自動的にケース2の結果を採用することができない。
【0104】
続いて、本実施例1に係る推定部154の処理について説明する。まず、推定部154は、ソース情報60aの顔関節の位置と、ターゲット情報60bの顔関節の位置とを比較して、上述した式(1)の差e2が最小となるような変換パラメータ(回転R、並進t、スケールc)を算出する。推定部154は、変換パラメータを算出する場合に、ターゲット情報60bに含まれる顔関節から、ランダムに3つの顔関節をサンプリングし、サンプリングした顔関節について、変換パラメータを算出するものとする。以下の説明では、サンプリングした3つの顔関節を適宜「3関節」と表記する。
【0105】
図16は、本実施例1に係る推定部の処理を説明するための図である。
図16に示す例では、ソース情報60aに、顔関節p1-1,p1-2,p1-3,p1-4が設定されているものとする。ターゲット情報60bには、顔関節p2-1,p2-2,p2-3,p2-4が設定されているものとする。また、顔関節p2-1,p2-2,p2-3,p2-4のうち、p2-1,p2-2,p2-3が、サンプリングされているものとする。
【0106】
推定部154は、変換パラメータをソース情報60aの顔関節p1-1,p1-2,p1-3,p1-4に適用することで、ターゲット情報60bに再投影を行う。そうすると、ソース情報60aの顔関節p1-1,p1-2,p1-3,p1-4は、ターゲット情報60bの位置pr1-1,pr1-2,pr1-3,pr1-4にそれぞれ再投影される。
【0107】
推定部154は、ターゲット情報60b上の顔関節p2-1,p2-2,p2-3,p2-4と、位置pr1-1,pr1-2,pr1-3,pr1-4とをそれぞれ比較して、inlier数をカウントする。たとえば、顔関節p2-1と位置pr1-1との距離、顔関節p2-2と位置pr1-2との距離、顔関節p3-1と位置pr3-1との距離が閾値未満で、顔関節p4-1と位置pr4-1との距離が閾値以上とすると、inlier数は「3」となる。
【0108】
ここで、対応する顔関節と位置との距離(たとえば、ソース情報60aの右耳の顔関節p1-1を再投影した位置pr1-1と、ターゲット情報60bの右耳の関節位置p2-1との距離)を、再投影誤差εと定義する。
【0109】
推定部154は、式(3)を基にして、外れ値評価指標Eを算出する。式(3)において、「εmax」は、複数の再投影誤差εのうちの最大値に対応する。「μ」は、複数の再投影誤差εのうち、εmaxを除いた残りの再投影誤差εの平均値を示す。
【0110】
【0111】
推定部154は、ターゲット情報60bの顔関節に対してサンプリングを行い、変換パラメータを算出し、inlier数と、外れ値評価指数Eとを算出する処理を、3関節の組み合わせを変えながら、繰り返し実行する。推定部154は、3関節の組み合わせのうち、inlier数が最大値を取る際の変換パラメータを、最終的な変換パラメータとして特定する。
【0112】
推定部154は、inlier数が最大値をとる、3関節の組み合わせが複数存在する場合には、外れ値評価指数Eが小さい方の3関節の組み合わせ特定し、特定した3関節によって得られる変換パラメータを、最終的な変換パラメータとして特定する。
【0113】
以下の説明では、推定部154が、inlier数および外れ値評価指数Eを基にして、複数の変換パラメータから特定した、最終的な変換パラメータを、単に、変換パラメータと表記する。
【0114】
推定部154は、変換パラメータを、式(2)に適用し、ソース情報60aの複数の顔座標の位置x(頭頂部の位置tp1を含む)から、競技者H1の複数の顔関節の位置y(頭頂部の位置tp2を含む)を算出する。係る推定部154の処理は、
図5を用いて説明した処理に対応する。
【0115】
上記処理によって、推定部154は、競技者H1の顔座標の位置(顔関節の位置、頭頂部の位置)を推定し、前処理部152によって推定された3D骨格情報の頭部の情報を、顔座標の位置の情報に置き換えることで、3D骨格情報を生成する。推定部154は、生成した3D骨格情報を異常検知部155に出力する。また、推定部154は、顔座標の位置の情報に置き換える前の3D骨格情報も、異常検知部155に出力する。
【0116】
推定部154は、上記処理を繰り返し実行する。以下の説明では、適宜、前処理部152によって推定された3D骨格情報の頭部の情報を、顔座標の位置の情報に置き換えることで生成された3D骨格情報を「置き換え後骨格情報」と表記する。これに対して、置き換える前の3D骨格情報を「置き換え前骨格情報」と表記する。また、置き換え後骨格情報、置き換え前骨格情報をそれぞれ区別しない場合には、単に、3D骨格情報と表記する。
【0117】
図9の説明に戻る。異常検知部155は、推定部154によって生成された3D骨格情報の頭頂部の異常を検知する。たとえば、異常検知の種別には、「骨長さ異常検知」、「逆・横曲がり異常検知」、「曲がりすぎ異常検知」が含まれる。異常検知部155の説明を行う場合に、
図37に示した関節の番号を用いて説明を行う。以下の説明では、番号nの関節を関節nと表記する。
【0118】
「骨長さ異常検知」について説明する。
図17は、骨長さ異常を検知する処理を説明するための図である。異常検知部155は、置き換え前骨格情報に含まれる各関節のうち、関節18から関節3に向かうベクトルb
headを計算する。異常検知部155は、ベクトルb
headから、そのノルム|b
head|を計算する。
【0119】
置き換え前骨格情報に関する骨長さ異常検知の結果をC1とする。たとえば、異常検知部155は、置き換え前骨格情報から計算したノルム|bhead|が、Th1
low~Th1
highの範囲に含まれる場合には、正常としてC1に0を設定する。異常検知部155は、置き換え前骨格情報から計算したノルム|bhead|が、Th1
low~Th1
highの範囲に含まれない場合には、異常としてC1に1を設定する。
【0120】
異常検知部155は、置き換え後骨格情報についても同様に、ノルム|bhead|を計算する。置き換え前骨格情報に関する骨長さ異常検知の結果をC´1とする。たとえば、異常検知部155は、置き換え後骨格情報から計算したノルム|bhead|が、Th1
low~Th1
highの範囲に含まれる場合には、正常としてC´1に0を設定する。異常検知部155は、置き換え後骨格情報から計算したノルム|bhead|が、Th1
low~Th1
highの範囲に含まれない場合には、異常としてC´1に1を設定する。
【0121】
ここで、Th1
low~Th1
highは、3σ法を用いて定義できる。複数人物の頭長さデータから計算した平均μ、標準偏差σを用いて、Th1
lowは、式(4)のように定義できる。Th1
highは、式(5)のように定義できる。
【0122】
【0123】
3σ法は、対象データが、標準偏差の3倍以上離れている場合を異常とする判別方法である。3σ法を用いることで、正常が99.74%とほぼすべての人の頭長さに当てはまるので、頭が極端に長い、短い等の異常を検知できる。
【0124】
「逆・横曲がり異常検知」について説明する。
図18は、逆・横曲がり異常を検知する処理を説明するための図である。異常検知部155は、置き換え前骨格情報に含まれる各関節のうち、関節18から関節3に向かうベクトルb
headを計算する。異常検知部155は、置き換え前骨格情報に含まれる各関節のうち、関節2から関節18に向かうベクトルb
neckを計算する。異常検知部155は、置き換え前骨格情報に含まれる各関節のうち、関節4から関節7に向かうベクトルb
shoulderを計算する。
【0125】
異常検知部155は、bneckとbheadとから、その法線ベクトルbneck×bheadを計算する。「×」は外積を示す。異常検知部155は、「bneck×bhead」と「bshoulder」とから、なす角θ(bneck×bhead、bshoulder)を計算する。
【0126】
置き換え前骨格情報に関する逆・横曲がり異常検知の結果をC2とする。たとえば、異常検知部155は、なす角θ(bneck×bhead、bshoulder)がTh2以下の場合に、正常としてC2に0を設定する。異常検知部155は、なす角θ(bneck×bhead、bshoulder)がTh2より大きい場合に、異常としてC2に1を設定する。
【0127】
異常検知部155は、置き換え後骨格情報についても同様に、なす角θ(bneck×bhead、bshoulder)を計算する。置き換え後骨格情報に関する逆・横曲がり異常検知の結果をC´2とする。たとえば、異常検知部155は、なす角θ(bneck×bhead、bshoulder)がTh2以下の場合に、正常としてC´2に0を設定する。異常検知部155は、なす角θ(bneck×bhead、bshoulder)がTh2より大きい場合に、異常としてC´2に1を設定する。
【0128】
図19~
図22は、逆・横曲がり異常検知で用いる各ベクトルを補足説明するための図である。
図19に示す各座標系について、xの座標系は、競技者H1の正面の方向に対応する。yの座標系は、競技者H1の左方向に対応する。zの座標系は、b
neckと同じ方向を示す。
図18で示したb
neck、b
head、b
shoulderの関係は、
図19に示すb
neck、b
head、b
shoulder示す関係となる。
【0129】
図20の説明に移行する。
図20では「正常」の一例を示す。
図20に示す各座標系は、
図19で説明した座標系と同様である。
図20に示す例では、なす角θ(b
neck×b
head、b
shoulder)が0(deg)となる。
【0130】
図21の説明に移行する。
図21では「逆曲がり」の一例を示す。
図21に示す各座標系は、
図19で説明した座標系と同様である。
図21に示す例では、なす角θ(b
neck×b
head、b
shoulder)が180(deg)となる。
【0131】
図22の説明に移行する。
図22では「横曲がり」の一例を示す。
図22に示す各座標系は、
図19で説明した座標系と同様である。
図22に示す例では、なす角θ(b
neck×b
head、b
shoulder)が90(deg)となる。
【0132】
ここで、閾値Th2と比較するなす角θ(bneck×bhead、bshoulder)について、正常とみなしたい後ろへの曲がりだと0(deg)、異常とみなしたい逆曲がりで180(deg)、横曲がりで90(deg)を取る。このため、逆、横曲がり双方を異常としたい場合には、Th2=90(deg)に設定される。
【0133】
「曲がりすぎ異常検知」について説明する。
図23は、曲がりすぎ異常を検知する処理を説明するための図である。置き換え前骨格情報に含まれる各関節のうち、関節18から関節3に向かうベクトルb
headを計算する。異常検知部155は、置き換え前骨格情報に含まれる各関節のうち、関節2から関節18に向かうベクトルb
neckを計算する。
【0134】
異常検知部155は、bneckとbheadとから、そのなす角θ(bneck、bhead)を計算する。
【0135】
置き換え前骨格情報に関する曲がりすぎ異常検知の結果をC3とする。たとえば、異常検知部155は、なす角θ(bneck、bhead)がTh3以下の場合に、正常としてC3に0を設定する。異常検知部155は、なす角θ(bneck、bhead)がTh3より大きい場合に、異常としてC3に1を設定する。
【0136】
たとえば、頭部の可動域は最大60(deg)であるため、Th3=60(deg)に設定される。
【0137】
異常検知部155は、置き換え後骨格情報についても同様に、なす角θ(bneck、bhead)を計算する。置き換え後骨格情報に関する曲がりすぎ異常検知の結果をC´3とする。たとえば、異常検知部155は、なす角θ(bneck、bhead)がTh3以下の場合に、正常としてC´3に0を設定する。異常検知部155は、なす角θ(bneck、bhead)がTh3より大きい場合に、異常としてC´3に1を設定する。
【0138】
上記のように、異常検知部155は、骨長さ異常検知について、式(6)の条件に基づいて、C1(C´1)に値を設定する。異常検知部155は、逆・横曲がり異常検知について、式(7)の条件に基づいて、C2(C´2)に値を設定する。異常検知部155は、曲がりすぎ異常検知について、式(8)の条件に基づいて、C3(C´3)に値を設定する。
【0139】
【0140】
異常検知部155は、「骨長さ異常検知」、「逆・横曲がり異常検知」、「曲がりすぎ異常検知」を実行した後に、判定結果D1、D2、D3を計算する。異常検知部155は、判定結果D1を、式(9)に基づいて計算する。異常検知部155は、判定結果D2を、式(10)に基づいて計算する。判定結果D3を、式(11)に基づいて計算する。
【0141】
【0142】
異常検知部155は、判定結果D1~D3のうち、何れか一つの判定結果に「1」が設定されている場合には、3D骨格情報に関して、頭頂部の異常を検知する。異常検知部155は、頭頂部の異常を検知した場合には、3D骨格情報を、補正部156に出力する。
【0143】
一方、異常検知部155は、判定結果D1~D3のうち、全ての判定結果に「0」が設定されている場合には、3D骨格情報に関して、頭頂部の異常が発生していないと判定する。異常検知部155は、頭頂部の異常を検知しない場合には、フレーム番号と、3D骨格情報(置き換え後骨格情報)とを対応付けて、骨格認識結果テーブル142に登録する。
【0144】
異常検知部155は、推定部154から3D骨格情報を取得する度に、上記処理を繰り返し実行する。
【0145】
図9の説明に戻る。補正部156は、異常検知部155によって頭頂部の異常が検知された3D骨格情報を取得した場合に、取得した3D骨格情報を補正する。ここでは、3D骨格情報として、置き換え後骨格情報を用いて説明する。
【0146】
たとえば、補正部156が実行する補正には、「骨長さ補正」、「逆・横曲がり補正」、「曲がりすぎ補正」が含まれる。
【0147】
「骨長さ補正」について説明する。
図24は、骨長さ補正を説明するための図である。
図24に示すように、補正部156は、ステップS20,ステップS21,ステップS22の順に処理を行う。
【0148】
ステップS20について説明する。補正部156は、置き換え後骨格情報に含まれる各関節のうち、関節18から関節3に向かうベクトルbheadを計算する。
【0149】
ステップS21について説明する。補正部156は、ベクトルbheadから、その単位ベクトルnhead(nhead=bhead/|bhead|)を計算する。
【0150】
ステップS22について説明する。補正部156は、関節18を基準として、単位ベクトルnheadの方向に過去の画像フレームで算出しておいた骨長さの平均μ分延ばした関節を補正後の頭頂部として出力する(置き換え後骨格情報の頭頂部の位置を更新する)。μは、正常範囲なので、骨長さが正常になる。
【0151】
「逆・横曲がり補正」について説明する。
図25は、逆・横曲がり補正を説明するための図である。
図25に示すように、補正部156は、ステップS30,ステップS31,ステップS32の順に処理を行う。
【0152】
ステップS30について説明する。補正部156は、置き換え後骨格情報に含まれる各関節のうち、関節2から関節18に向かうベクトルbneckを計算する。
【0153】
ステップS31について説明する。補正部156は、ベクトルbneckから、その単位ベクトルnneck(nneck=bneck/|bneck|)を計算する。
【0154】
ステップS32について説明する。補正部156は、関節18を基準として、単位ベクトルnneckの方向に標準骨長さμ分延ばして閾値内に収まるように補正した結果を頭頂部として出力する(置き換え後骨格情報の頭頂部の位置を更新する)。neckと同じ方向にheadが延びるので、逆・横向きの異常が補正される。
【0155】
「曲がりすぎ補正」について説明する。
図26は、曲がりすぎ補正を説明するための図である。
図26に示すように、補正部156は、ステップS40,ステップS41,ステップS42の順に処理を行う。
【0156】
ステップS40について説明する。補正部156は、置き換え後骨格情報に含まれる各関節のうち、関節18から関節3に向かうベクトルbheadを計算する。補正部156は、置き換え後骨格情報に含まれる各関節のうち、関節2から関節18に向かうベクトルbneckを計算する。補正部156は、置き換え後骨格情報に含まれる各関節のうち、関節4から関節7に向かうベクトルbshoulderを計算する。
【0157】
ステップS41について説明する。補正部156は、ベクトルbneckとベクトルbheadとから、その法線ベクトルbneck×bheadを計算する。
【0158】
ステップS42について説明する。法線ベクトルbneck×bheadは、手前から奥に向かって伸びたベクトルとする。補正部156は、法線ベクトルbneck×bheadを軸として、ベクトルbheadを、閾値Th3からの残差「Th3-なす角θ(bneck、bhead)」(deg)回転して閾値内に収まるように補正した結果を、頭頂部として出力する(置き換え後骨格情報の頭頂部の位置を更新する)。角度が閾値以内に収まるので、曲がりすぎの異常が補正される。
【0159】
補正部156は、上記補正を実行することで、「骨長さ補正」、「逆・横曲がり補正」、「曲がりすぎ補正」を実行し、3D骨格情報を補正する。補正部156は、フレーム番号と、補正した3D骨格情報とを対応付けて、骨格認識結果テーブル142に登録する。
【0160】
図9の説明に戻る。技認識部157は、フレーム番号の順に3D骨格情報を、骨格認識結果テーブル142から取得し、連続する3D骨格情報を基にして、各関節座標の時系列変化を特定する。技認識部157は、各関節位置の時系列変化と、技認識テーブル145とを比較して、技の種別を特定する。また、技認識部157は、技の種別の組み合わせと、技認識テーブル143とを比較して、競技者H1の演技のスコアを算出する。
【0161】
技認識部157が算出する競技者H1の演技のスコアには、平均台の輪飛びや、床運動の一部の演技のように、頭頂部の時系列変換を評価する演技のスコアも含まれる。
【0162】
技認識部157は、演技のスコアと、演技の開始から終了までの3D骨格情報とを基にして、画面情報を生成する。技認識部157は、生成した画面情報を、表示部130に出力して表示させる。
【0163】
次に、本実施例1に係る学習装置50の処理手順の一例について説明する。
図27は、本実施例1に係る学習装置の処理手順を示すフローチャートである。
図27に示すように、学習装置50の取得部55aは、学習データ54aを取得し、記憶部54に登録する(ステップS101)。
【0164】
学習装置50の学習部55bは、学習データ54aを基にして、顔関節推定モデル54bに対応する機械学習を実行する(ステップS102)。
【0165】
学習装置50の出力部55cは、顔関節推定モデルを情報処理装置100に送信する(ステップS103)。
【0166】
次に、本実施例1に係る情報処理装置100の処理手順の一例について説明する。
図28は、本実施例1に係る情報処理装置の処理手順を示すフローチャートである。
図28に示すように、情報処理装置100の取得部151は、学習装置50から顔関節推定モデル54bを取得し、記憶部140に登録する(ステップS201)。
【0167】
取得部151は、カメラから時系列の画像フレームを受信し、測定テーブル141に登録する(ステップS202)。
【0168】
情報処理装置100の前処理部152は、測定テーブル141の多視点の画像フレームを基にして、3D骨格情報を推生成する(ステップS203)。情報処理装置100のターゲット情報生成部153は、顔関節推定モデル54bに画像フレームを入力して、ターゲット情報を生成する(ステップS204)。
【0169】
情報処理装置100の推定部154は、変換パラメータ推定処理を実行する(ステップS205)。推定部154は、ソース情報60aに変換パラメータを適用し、頭頂部を推定する(ステップS206)。推定部154は、3D骨格情報の頭頂部の情報を、推定した頭頂部の情報に置き換える(ステップS207)。
【0170】
情報処理装置100の異常検知部155は、頭頂部の異常を検知したか否かを判定する(ステップS208)。異常検知部155は、頭頂部の異常を検知しない場合には(ステップS208,No)、置き換え後骨格情報を、骨格認識結果テーブル142に登録し(ステップS209)、ステップS212に移行する。
【0171】
一方、異常検知部155は、頭頂部の異常を検知した場合には(ステップS208,Yes)、ステップS210に移行する。情報処理装置100の補正部156は、置き換え後骨格情報を補正する(ステップS210)。補正部156は、補正した置き換え後骨格情報を、骨格認識結果テーブル142に登録し(ステップS211)、ステップS212に移行する。
【0172】
情報処理装置100の技認識部157は、骨格認識結果テーブル142から、時系列の3D骨格情報を読み出して、技認識テーブル143に基づく技認識を実行する(ステップS212)。
【0173】
次に、
図28のステップS206に示した変換パラメータ推定処理の処理手順の一例について説明する。
図29および
図30は、変換パラメータ推定処理の処理手順を示すフローチャートである。
【0174】
図29について説明する。情報処理装置100の推定部154は、最大inlier数および基準評価指標に初期値を設定する(ステップS301)。たとえば、推定部154は、最大inlier数に「0」、基準評価指標に「∞(大きな値)」を設定する。
【0175】
推定部154は、ターゲット情報と、ソース情報とを取得する(ステップS302)。推定部154は、ターゲット情報から3関節をサンプリングする(ステップS303)。推定部154は、式(1)を基にして、ターゲット情報とソース情報との差e2が最小となる変換パラメータ(R、t、c)を算出する(ステップS304)。
【0176】
推定部154は、変換パラメータをソース情報に適用し、ターゲット情報に合うように再投影する(ステップS305)。推定部154は、ソース情報の投影結果と、ターゲット情報の3関節との再投影誤差εを算出する(ステップS306)。
【0177】
推定部154は、再投影誤差εが閾値以下となる顔関節の数をinlier数に設定する(ステップS307)。推定部154は、外れ値評価指標を計算する(ステップS308)。推定部154は、
図30のステップS309に移行する。
【0178】
図30の説明に移行する。推定部154は、inlier数が、最大inlier数よりも大きい場合には(ステップS309,Yes)、ステップS312に移行する。一方、推定部154は、inlier数が、最大inlier数よりも大きくない場合には(ステップS309,No)、ステップS310に移行する。
【0179】
推定部154は、inlier数と最大inlier数とが同じ場合には(ステップS310,Yes)、ステップS311に移行する。一方、推定部154は、inlier数と最大inlier数とが同じでない場合には(ステップS310,No)、ステップS314に移行する。
【0180】
推定部154は、外れ値評価指標Eが基準評価指数よりも小さくない場合には(ステップS311,No)、ステップS314に移行する。一方、推定部154は、外れ値評価指標Eが基準評価指数より小さい場合には(ステップS311,Yes)、ステップS312に移行する。
【0181】
推定部154は、最大inlier数を今回算出したinlier数に更新し、外れ値評価指標の値によって、基準評価指標を更新する(ステップS312)。推定部154は、最大inlier数に対応する変換パラメータを更新する(ステップS313)。
【0182】
推定部154は、サンプリング回数の上限に達していない場合には(ステップS314,No)、
図29のステップS303に移行する。一方、推定部154は、サンプリング回数の上限に達した場合には(ステップS314,Yes)、最大inlier数に対応する変換パラメータを出力する(ステップS315)。
【0183】
次に、本実施例1に係る情報処理装置100の効果について説明する。情報処理装置100は、ソース情報60aの顔関節の位置を、ターゲット情報60bの顔関節の位置に合わせるための変換パラメータを算出する。情報処理装置100は、算出した変換パラメータをソース情報60aの頭頂部に適用することで、競技者の頭頂部の位置を算出する。顔関節と、頭頂部との関係は剛体関係にあるため、かかる関係を利用して、競技者の頭頂部の位置を推定することで、推定精度を向上させることができる。
【0184】
たとえば、
図6で説明したように、画像にアピアランス、髪乱れ、オクルージョン等が発生した場合でも、従来技術と比較して、頭頂部の推定精度が向上している。情報処理装置100により、頭頂部の推定精度が向上するため、頭頂部を用いて競技者の演技を評価する場合も、適切に演技の成立不成立を評価することができる。頭頂部を用いて競技者の演技には、平均台の輪飛びや、床運動の一部の演技が含まれる。
【0185】
また、本実施例1に係る情報処理装置100は、inlier数と、外れ値誤差指標Eとを基にして、変換パラメータを特定する。このため、inlier数が同点となる変換パラメータが複数存在する場合でも、外れ値誤差指標Eを用いて、最適な変換パラメータを選択することができる。
【0186】
図31は、頭頂部推定の誤差の比較結果を説明するための図である。
図31のグラフG1は、RANSACを実行しないで頭頂部の推定を行った場合の誤差を示す。グラフG2は、RANSACを実行して頭頂部の推定を行った場合の誤差を示す。グラフG3は、本実施例1に係る推定部154が頭頂部の推定を行った場合の誤差を示す。グラフG1~G2の横軸は、ターゲット情報の顔関節とGT(正しい顔関節の位置)との誤差の最大値に対応する。グラフG1~G2の縦軸は、頭頂部の推定結果と、GT(正しい頭頂部の位置)との誤差を示す。
【0187】
グラフG1では、頭頂部の推定結果と、GTとの誤差の平均誤差が「30mm」となる。グラフG2では、頭頂部の推定結果と、GTとの誤差の平均誤差が「22mm」となる。グラフG3では、頭頂部の推定結果と、GTとの誤差の平均誤差が「15mm」となる。すなわち、本実施例1に係る情報処理装置100では、RANSAC等の従来技術と比較して、高精度に頭頂部の位置を推定することができる。たとえば、グラフG2の領域ar1では、外れ値の除去に失敗していることが示される。
【0188】
本実施例1に係る情報処理装置100は、3D骨格情報の頭頂部の異常を検知した場合に、頭頂部の位置を補正する処理を実行する。これによって、3D骨格情報の推定精度をより高めることができる。
【0189】
なお、本実施例1では一例として、補正部156は、置き換え後骨格情報を補正する場合について説明したが、置き換え前骨格情報を補正し、補正後の置き換え前骨格情報を出力してもよい。また、補正部156は、実際には補正を行わないで、置き換え前骨格情報を、そのまま補正後の骨格情報として出力してもよい。
【実施例2】
【0190】
次に、本実施例2ついて説明する。本実施例2に関連するシステムは、実施例1のシステムと同様である。続いて、本実施例2に係る情報処理装置について説明する。本実施例2に係る情報処理装置は、実施例1のソース情報と異なり、複数の頭頂部の候補を有する。
【0191】
図32は、本実施例2に係るソース情報の一例を示す図である。
図32に示すように、このソース情報60cは、3Dの人体モデルM2に、複数の頭頂部関節候補tp1-1,tp1-2,tp1-3,tp1-4,tp1-5,tp1-6を有する。
図32では、図示を省略するが、ソース情報60cは、実施例1で示したソース情報60aと同様にして、複数の顔関節の位置が設定される。
【0192】
情報処理装置は、実施例1と同様にして、変換パラメータを算出する。情報処理装置は、算出した変換パラメータを、ソース情報60cに適用し、複数の頭頂部関節候補tp1-1~tp1-6のz軸方向の値をそれぞれ比較し、z軸方向の値が最小となる頭頂部関節候補を、頭頂部として特定する。
【0193】
図33は、頭頂部を特定する処理を説明するための図である。
図33に示す例では、ソース情報60cに変換パラメータを適用した結果を示す。情報処理装置は、複数の頭頂部関節候補tp1-1~tp1-6のz軸方向の値のうち、頭頂部関節候補tp1-2の値が最小となるため、頭頂部関節候補tp1-2を頭頂部として選択する。
【0194】
このように、本実施例2に係る情報処理装置は、変換パラメータを、ソース情報60cに適用し、複数の頭頂部関節候補tp1-1~tp1-6のz軸方向の値をそれぞれ比較し、z軸方向の値が最小となる頭頂部関節候補の位置を、頭頂部の位置として特定する。これによって、輪飛びなどのように、頭頂部を下に向ける演技を評価する場合の、頭頂部の位置をより適切に選択することができる。
【0195】
次に、本実施例2に係る情報処理装置の構成について説明する。
図34は、本実施例2に係る情報処理装置の構成を示す機能ブロック図である。
図34に示すように、この情報処理装置200は、通信部110、入力部120、表示部130、記憶部240、制御部250を有する。
【0196】
通信部110、入力部120、表示部130に関する説明は、
図9で説明した通信部110、入力部120、表示部130に関する説明と同様である。
【0197】
記憶部240は、顔関節推定モデル54bと、ソース情報60cと、測定テーブル141と、骨格認識結果テーブル142と、技認識テーブル143とを有する。記憶部240は、RAM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
【0198】
顔関節推定モデル54b、測定テーブル141、骨格認識結果テーブル142、技認識テーブル143に関する説明は、
図9で説明した顔関節推定モデル54b、測定テーブル141、骨格認識結果テーブル142、技認識テーブル143に関する説明と同様である。
【0199】
ソース情報60cは、
図32で説明したように、複数の顔関節の位置と、複数の複数の頭頂部関節候補の位置がそれぞれ設定された情報である。
【0200】
制御部250は、取得部151、前処理部152、ターゲット情報生成部153、推定部254、異常検知部155、補正部156、技認識部157を有する。制御部250は、CPU等に対応する。
【0201】
取得部151、前処理部152、ターゲット情報生成部153、異常検知部155、補正部156、技認識部157に関する説明は、
図9で説明した取得部151、前処理部152、ターゲット情報生成部153、異常検知部155、補正部156、技認識部157に関する説明と同様である。
【0202】
推定部254は、ソース情報60cと、ターゲット情報60b(画像フレーム固有のターゲット情報)とを基にして、競技者H1の頭頂部の位置を推定する。
【0203】
推定部254は、ソース情報60cの顔関節の位置と、ターゲット情報60bの顔関節(3関節)の位置とを比較して、上述した式(1)の差e2が最小となるような変換パラメータ(回転R、並進t、スケールc)を算出する。推定部254が変換パラメータを算出する処理は、実施例1の推定部154と同様である。
【0204】
推定部254は、
図33で説明したように、ソース情報60cに変換パラメータを適用する。推定部254は、複数の頭頂部関節候補tp1-1~tp1-6のz軸方向の値をそれぞれ比較し、z軸方向の値が最小となる頭頂部関節候補の位置を、頭頂部の位置として特定する。
【0205】
上記処理によって、推定部254は、競技者H1の顔座標の位置(顔関節の位置、頭頂部の位置)を推定し、前処理部252によって推定された3D骨格情報の頭部の情報を、顔座標の位置の情報に置き換えることで、3D骨格情報を生成する。推定部254は、生成した3D骨格情報を異常検知部255に出力する。また、推定部254は、顔座標の位置の情報に置き換える前の3D骨格情報も、異常検知部155に出力する。
【0206】
次に、本実施例2に係る情報処理装置200の処理手順の一例について説明する。
図35は、本実施例2に係る情報処理装置の処理手順を示すフローチャートである。
図35に示すように、情報処理装置200の取得部151は、学習装置50から顔関節推定モデル54bを取得し、記憶部240に登録する(ステップS401)。
【0207】
取得部151は、カメラから時系列の画像フレームを受信し、測定テーブル141に登録する(ステップS402)。
【0208】
情報処理装置200の前処理部152は、測定テーブル141の多視点の画像フレームを基にして、3D骨格情報を推生成する(ステップS403)。情報処理装置200のターゲット情報生成部153は、顔関節推定モデル54bに画像フレームを入力して、ターゲット情報を生成する(ステップS404)。
【0209】
情報処理装置200の推定部254は、変換パラメータ推定処理を実行する(ステップS405)。推定部154は、ソース情報60aに変換パラメータを適用し、複数の頭頂部関節候補から頭頂部を推定する(ステップS406)。推定部254は、3D骨格情報の頭頂部の情報を、推定した頭頂部の情報に置き換える(ステップS407)。
【0210】
情報処理装置200の異常検知部155は、頭頂部の異常を検知したか否かを判定する(ステップS408)。異常検知部155は、頭頂部の異常を検知しない場合には(ステップS408,No)、置き換え後骨格情報を、骨格認識結果テーブル142に登録し(ステップS409)、ステップS412に移行する。
【0211】
一方、異常検知部155は、頭頂部の異常を検知した場合には(ステップS408,Yes)、ステップS410に移行する。情報処理装置200の補正部156は、置き換え後骨格情報を補正する(ステップS410)。補正部156は、補正した置き換え後骨格情報を、骨格認識結果テーブル142に登録し(ステップS411)、ステップS412に移行する。
【0212】
情報処理装置200の技認識部157は、骨格認識結果テーブル142から、時系列の3D骨格情報を読み出して、技認識テーブル143に基づく技認識を実行する(ステップS412)。
【0213】
図35のステップS405に示した変換パラメータ推定処理は、実施例1の
図29、
図30に示した変換パラメータ推定処理に対応する。
【0214】
次に、本実施例2に係る情報処理装置200の効果について説明する。情報処理装置200は、変換パラメータを、ソース情報60cに適用し、複数の頭頂部関節候補のz軸方向の値をそれぞれ比較し、z軸方向の値が最小となる頭頂部関節候補を、頭頂部として特定する。これによって、輪飛びなどのように、頭頂部を下に向ける演技を評価する場合の、頭頂部の位置をより適切に選択することができる。
【0215】
次に、上記実施例に示した情報処理装置100(200)と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。
図36は、情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【0216】
図36に示すように、コンピュータ300は、各種演算処理を実行するCPU301と、ユーザからのデータの入力を受け付ける入力装置302と、ディスプレイ303とを有する。また、コンピュータ300は、カメラ30から距離画像のデータを受信する通信装置304と、各種の装置と接続するインタフェース装置305とを有する。コンピュータ300は、各種情報を一時記憶するRAM306と、ハードディスク装置307とを有する。そして、各装置301~307は、バス308に接続される。
【0217】
ハードディスク装置307は、取得プログラム307a、前処理プログラム307b、ターゲット情報生成プログラム307c、推定プログラム307d、異常検知プログラム307e、補正プログラム307f、技認識プログラム307gを有する。CPU301は、取得プログラム307a、前処理プログラム307b、ターゲット情報生成プログラム307c、推定プログラム307d、異常検知プログラム307e、補正プログラム307f、技認識プログラム307gを読み出してRAM306に展開する。
【0218】
取得プログラム307aは、取得プロセス306aとして機能する。前処理プログラム307bは、前処理プロセス306bとして機能する。ターゲット情報生成プログラム307cは、ターゲット情報生成プロセス306cとして機能する。推定プログラム307dは、推定プロセス306dとして機能する。異常検知プログラム307eは、異常検知プロセス306eとして機能する。補正プログラム307fは、補正プロセス306fとして機能する。技認識プログラム307gは、技認識プロセス306gとして機能する。
【0219】
取得プロセス306aの処理は、取得部151の処理に対応する。前処理プロセス306bの処理は、前処理部152の処理に対応する。ターゲット情報生成プロセス306cの処理は、ターゲット情報生成部153の処理に対応する。推定プロセス306dの処理は、推定部154,254の処理に対応する。異常検知プロセス306eの処理は、異常検知部155の処理に対応する。補正プロセス306fの処理は、補正部156の処理に対応する。技認識プロセス306gの処理は、技認識部157の処理に対応する。
【0220】
なお、各プログラム307a~307gについては、必ずしも最初からハードディスク装置307に記憶させておかなくてもよい。例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300が各プログラム307a~307eを読み出して実行するようにしてもよい。
【符号の説明】
【0221】
100,200 情報処理装置
110 通信部
120 入力部
130 表示部
140,240 記憶部
141 測定テーブル
142 骨格認識結果テーブル
143 技認識テーブル
150,250 制御部
151 取得部
152 前処理部
153 ターゲット情報生成部
154,254 推定部
155 異常検知部
156 補正部
157 技認識部