【解決手段】 入力映像に含まれた客体の3次元ポーズの推定のためのデータを生成する方法であって、客体を含む入力映像を取得し、客体の複数の関節それぞれの位置情報を推定するために予め訓練された推論モデルを利用して客体の複数の関節それぞれの位置情報を推定し、推定された位置情報を利用して客体の動きを示すアニメーションデータを生成する、3次元ポーズの推定のためのデータを生成する方法が提供される。
前記判定する段階は、前記それぞれの関節の回転情報が前記客体の正常な動きに該当するものとして予め設定された角度の範囲内にない場合、非正常回転状態として判定する、
請求項8に記載の3次元ポーズの推定のためのデータを生成する方法。
前記入力映像を撮影するために利用されたカメラの焦点距離、および前記複数の関節のうちの少なくとも1つに対して推定された位置情報に基づき、前記客体のグローバル位置を示すグローバル位置情報を計算する段階
をさらに含み、
前記グローバル位置情報に基づき、前記客体の前記入力映像内での位置移動が推定される、
請求項1に記載の3次元ポーズの推定のためのデータを生成する方法。
前記仮想のキャラクタを生成する段階は、前記アニメーションデータに基づいて前記複数の関節を複数の仮想のキャラクタのそれぞれにマッピングすることにより、前記客体の動きを模倣する複数の仮想のキャラクタを生成し、
前記生成された複数の仮想のキャラクタのそれぞれは、ユーザ端末から出力される出力映像の異なる位置に配置される、
請求項3に記載の3次元ポーズの推定のためのデータを生成する方法。
【発明を実施するための形態】
【0031】
以下、添付の図面を参照しながら、実施形態について詳しく説明する。各図面に提示された同じ参照符号は、同じ部材を示す。
【0032】
図1は、一実施形態における、2次元の入力映像に含まれた客体の3次元ポーズを推定する方法を示した図である。
【0033】
図1を参照しながら、カメラ120で撮影された客体130に対し、該当の客体130の動きを示す3次元ポーズを推定し、客体130の推定された3次元ポーズに対応する仮想のキャラクタ150(すなわち、3次元の動きを示す仮想のキャラクタ150)を生成する方法について説明する。仮想のキャラクタ150は、例えば、アバタであってよい。
【0034】
図に示したコンピュータシステム100は、客体130を撮影した入力映像を取得してよい。取得される入力映像は、例えば、単眼のRGBカメラによって撮影されたものであってよく、2次元の入力映像であってよい。2次元の入力映像は、客体130の深さ(depth)情報を含まない映像であってよい。
【0035】
客体130は、入力映像を撮影したカメラ120の被写体に対応するものであって、例えば、入力映像内で動く人物(人間)であってよい。
【0036】
客体130を撮影した入力映像は、図に示すように、コンピュータシステム100が備えるカメラ120で撮影されたものであってよい。または、客体130を撮影した入力映像は、カメラ120ではなく他のカメラで撮影された映像としてコンピュータシステム100に予め格納されたものであるか、他の装置またはサーバからコンピュータシステム100に送信されてコンピュータシステム100が取得したものであってよい。このとき、コンピュータシステム100の入力映像の取得とは、入力映像に該当する入力映像ファイルをロードすることであってよい。
【0037】
コンピュータシステム100は、取得した客体130を撮影した入力映像から客体130の動きを示す3次元ポーズを推定するための推論モデルを搭載しているコンピュータシステムであってよい。コンピュータシステム100は、このような推論モデルを利用して客体130が含む1つ以上の関節の位置情報を推定することができ、このような位置情報に基づいて客体130の3次元ポーズに対応するアニメーションデータを生成することができる。コンピュータシステム100は、生成されたアニメーションデータを仮想のキャラクタ150にマッピングすることにより、客体130の動きを模倣する3次元の仮想のキャラクタ150を生成してよい。
【0038】
一例として、コンピュータシステム100は、カメラ120によって客体130を撮影してよく、撮影によってリアルタイムで取得した入力映像から客体130の3次元ポーズを推定してよく、これに対応する3次元の仮想のキャラクタ150を生成してよい。言い換えれば、コンピュータシステム100は、カメラ120で撮影された客体130の動きを模倣する3次元の仮想のキャラクタ150をリアルタイムで生成することができる。
【0039】
コンピュータシステム100は、入力映像に含まれた客体130と生成されたキャラクタ150とを重ねて(例えば、キャラクタ150が客体130の上位のレイヤとなるか、または客体130の前方に位置するように)表示してもよいし、客体130は表示せずにキャラクタ150だけを表示してもよい。または、コンピュータシステム100は、客体130とキャラクタ150とを区分し、ディスプレイのそれぞれ異なる領域に同時に表示してもよい。
【0040】
実施形態では、コンピュータシステム100に搭載された軽量化された推論モデルを利用して客体130を撮影した2次元の入力映像からリアルタイムで客体130の1つ以上の関節の位置情報を推定することによって客体130の3次元ポーズを推定することができ、したがって、コンピュータシステム100は、客体130の動きを模倣する仮想のキャラクタ150を生成して表示することができる。
【0041】
2次元の入力映像から客体130の3次元ポーズを推定する具体的な方法と、客体130の1つ以上の関節の位置情報を推定するための推論モデルの構築方法については、
図2〜12を参照しながらさらに詳しく説明する。
【0042】
図2および
図3は、一実施形態における、2次元の入力映像に含まれた客体の3次元ポーズを推定するコンピュータシステムの構造を示した図である。
【0043】
図に示したコンピュータシステム100は、
図1を参照しながら説明したコンピュータシステム100に対応してよい。言い換えれば、コンピュータシステム100は、軽量化された推論モデルを搭載している電子装置であって、客体130を撮影した2次元の入力映像を取得することができ、搭載された推論モデルを利用して客体130の1つ以上の関節の位置情報を推定することができ、客体130の3次元ポーズを推定して客体130の動きを模倣する仮想のキャラクタ150を生成することができる。
【0044】
コンピュータシステム100は、例えば、PC(personal computer)、ノート型パソコン(laptop computer)、スマートフォン(smart phone)、タブレット(tablet)、ウェアラブルコンピュータ(wearable computer)、モノのインターネット(Internet Of Things)機器などを含んでよい。
【0045】
コンピュータシステム100は、通信部210およびプロセッサ200を含んでよい。また、コンピュータシステム100は、ディスプレイ220をさらに含んでよい。また、コンピュータシステム100は、上述したカメラ120をさらに含んでよい。
【0046】
通信部210は、コンピュータシステム100が他のサーバや他の装置と通信するための装置であってよい。言い換えれば、通信部210は、他のサーバや他の装置とデータおよび/または情報を送受信する、コンピュータシステム100のネットワークインタフェースカード、ネットワークインタフェースチップ、およびネットワーキングインタフェースポートなどのようなハードウェアモジュール、またはネットワークデバイスドライバ(driver)またはネットワーキングプログラムのようなソフトウェアモジュールであってよい。一例として、通信部210は、客体130に対する入力映像を他のサーバや他の装置から受信してよい。
【0047】
プロセッサ200は、コンピュータシステム100の構成要素を管理してよく、コンピュータシステム100が利用するプログラムまたはアプリケーションを実行してよい。例えば、プロセッサ200は、客体130に対する入力映像を取得し、推論モデルを利用して入力映像から客体130の1つ以上の関節の位置情報を推定してよく、客体130の3次元ポーズを推定して客体130の動きを模倣する仮想のキャラクタ150を生成してよく、このような動作を実行するために求められるプログラムまたはアプリケーションの実行およびデータの処理などに必要となる演算を処理してよい。プロセッサ200は、コンピュータシステム100の少なくとも1つのプロセッサ、またはプロセッサ内の少なくとも1つのコア(core)であってよい。
【0048】
コンピュータシステム100は、メモリ(図示せず)を含んでよい。メモリは、コンピュータ読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような永続的大容量記録装置(permanent mass storage device)を含んでよい。ここで、ROMと永続的大容量記録装置は、メモリとは区分される別の永久記録装置として含まれてもよい。また、メモリには、オペレーティングシステムと少なくとも1つのプログラムコードが記録されてよい。このようなソフトウェア構成要素は、メモリとは別のコンピュータ読み取り可能な記録媒体からロードされてよい。このような別のコンピュータ読み取り可能な記録媒体は、フロッピドライブ、ディスク、テープ、DVD/CD−ROMドライブ、メモリカードなどのコンピュータ読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータ読み取り可能な記録媒体ではない通信部210を通じてメモリにロードされてもよい。メモリには、入力映像から客体130の1つ以上の関節の位置情報を推定するための推論モデルを構成するデータが記録されていてよい。また、メモリには、客体130を含む入力映像が記録されていてよい。
【0049】
プロセッサ200は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリまたは通信部210によって、プロセッサ200に提供されてよい。例えば、プロセッサ200は、メモリにロードされたプログラムコードにしたがって受信される命令を実行するように構成されてよい。このようなプロセッサ200による動作により、コンピュータシステム100は、上述した客体130の3次元ポーズ推定の動作および仮想のキャラクタ150の生成の動作を実行してよい。
【0050】
プロセッサ200の構成については、
図3を参照しながら詳しく説明する。後述するプロセッサ200の構成それぞれは、プロセッサ200の一部としてソフトウェアおよび/またはハードウェアモジュールで実現されてよく、プロセッサによって実現される機能(機能ブロック)に該当してよい。
【0051】
ディスプレイ220は、客体130を含む入力映像を表示するか、3次元ポーズの推定によって生成された仮想のキャラクタ150を表示する装置であってよい。また、ディスプレイ220は、タッチスクリーン(タッチパネル)を含んでよいが、このとき、ディスプレイ220は、タッチ入力を含むユーザのインタラクションの入力を受けるための入力部(図示せず)の機能を含むように構成されてよい。
【0052】
カメラ120は、被写体を撮影し、被写体に対する映像データを生成してよい。例えば、カメラ120は、客体130を撮影し、客体130に対する2次元の映像データを生成してよい。カメラ120は、RGBカメラであってよい。
【0053】
図3を参照しながら、プロセッサ200の構成について詳しく説明する。
【0054】
図に示すように、プロセッサ200は、入力部310、前処理部320、推論部330、後処理部340、アニメーション生成部350、および出力部360を含んでよい。
【0055】
入力部310は、少なくとも1つの動く客体130を含む2次元の入力映像を取得する構成であってよい。例えば、入力部310は、カメラ120によって撮影された客体130に対する入力映像を取得するか、コンピュータシステム100に予め格納された客体130に対する入力映像を取得してよい。または、入力部310は、通信部210を通じて受信した客体130に対する入力映像を取得してもよい。
【0056】
前処理部320は、取得した客体130に対する入力映像を、推論モデルが利用するために適した形態に加工する構成であってよい。例えば、前処理部320は、推論モデルの入力に適したサイズになるように、取得した客体130に対する入力映像のサイズを(例えば、クロップによって)変更してよい。前処理部320は、取得した入力映像から、推論モデルが客体130の関節の位置情報を推定するのに必要ない部分を取り除く構成であってよい。
【0057】
推論部330は、前処理部320によって加工された入力映像を入力とし、推論モデルを利用して客体130の複数の関節それぞれの位置情報を推定するための構成であってよい。推論モデルは、モバイル端末に搭載可能なように軽量化されたモデルであって、例えば、MoVNectモデルと命名されるモデルであってよい。推論モデルは、入力映像から客体130の複数の関節それぞれの位置情報を推定するために予め訓練されたものであってよい。言い換えれば、推論部330は、客体130の複数の関節それぞれの位置情報を推定するために予め訓練された推論モデルを利用して(前処理部320によって加工された)入力映像に含まれた客体130の複数の関節それぞれの位置情報を推定してよい。推論モデルと推論モデルを構築する方法については、
図8〜
図10を参照しながら詳しく説明する。
【0058】
推論部330によって推定された位置情報を利用して、客体130の動き(すなわち、3次元ポーズ)を示すアニメーションデータが生成されてよい。
【0059】
後処理部340は、推論部330による推論結果(すなわち、推定された位置情報)を補正するための構成であってよい。後処理部340による補正を経ることで、入力映像に含まれた客体130の3次元ポーズをより正確に表現するアニメーションデータを生成することができる。
【0060】
アニメーション生成部350は、推論部330によって推定された位置情報(および後処理部340によって補正された位置情報)を利用して、客体130の動き(すなわち、3次元ポーズ)を表現するアニメーションデータを生成する構成であってよい。アニメーション生成部350は、客体130から推定される連続的な位置情報を利用して客体130の各関節(すなわち、それぞれの関節)の回転情報を含むアニメーションデータを生成してよい。
【0061】
出力部(レンダリング部)360は、生成されたアニメーションデータを仮想のキャラクタ150に適用(リターゲティング)する構成であってよい。例えば、出力部360は、客体130の各関節のアニメーションデータを仮想のキャラクタ150の対応する関節にマッピングすることにより、客体の3次元ポーズを模倣する仮想のキャラクタ150を生成してよい。
【0062】
生成された仮想のキャラクタ150は、ディスプレイ220から出力されてよい。生成された仮想のキャラクタ150は、撮影された客体130の動き(3次元ポーズ)をリアルタイムで(または、ほぼリアルタイムで)模倣することができる。
【0063】
上述したプロセッサ200の構成310〜360の機能および動作については、
図4〜12を参照しながら詳しく説明する。
【0064】
以上、
図1を参照しながら説明した技術的特徴は、
図2および
図3にもそのまま適用可能であるため、重複する説明は省略する。
【0065】
後述する詳細な説明において、コンピュータシステム100またはプロセッサ200の構成によって実行される動作や、コンピュータシステム100またはプロセッサ200が実行するアプリケーション/プログラムによって実行される動作は、説明の便宜上、コンピュータシステム100によって実行される動作として説明する。
【0066】
図4は、一実施形態における、2次元の入力映像に含まれた客体の3次元ポーズの推定のためのデータを生成する方法を示したフローチャートである。
【0067】
段階410で、コンピュータシステム100(または、入力部310)は、少なくとも1つの動く客体130を含む2次元の入力映像を取得してよい。上述したように、コンピュータシステム100は、カメラ120によって撮影された客体130に対する入力映像を取得するか、予め格納された客体130に対する入力映像を取得してよい。または、コンピュータシステム100は、通信部210を通じて受信した客体130に対する入力映像を取得してもよい。
【0068】
段階420で、コンピュータシステム100(または、推論部330)は、客体130の複数の関節それぞれの位置情報を推定するために予め訓練された推論モデルを利用して、入力映像に含まれた客体130の複数の関節それぞれの位置情報を推定してよい。上述したように、段階420を実行するに先立ち、前処理部320により、客体130に対する入力映像は、推論モデルへの入力に適した形態に加工されてよい。
【0069】
客体130の複数の関節は、人物を構成する主な関節であって、例えば、人物が含む15箇所の関節を含んでよい。例えば、関節は、頭(「Head」)、首(「Neck」)、右肩(「RightShoulder」)、右肘(「RightElbow」)、右手首(「RightWrist」)、左肩(「LeftShoulder」)、左肘(「LeftElbow」)、左手首(「LeftWrist」)、右臀部(「RightHip」)、右膝(「RightKnee」)、右足首(「RightAnkle」)、左臀部(「LeftHip」)、左膝(「LeftKnee」)、左足首(「LeftAnkle」)、骨盤(「Pelvis」)などを含んでよい。
【0070】
推論モデルは、ディープラーニングまたは人工ニューラルネットワーク(例えば、CNNおよび/またはDNN)に基づいて、映像からこのような関節の位置情報を推定するように予め訓練されたものであってよい。推論モデルと推論モデルを構築する方法については、
図8〜
図10を参照しながらさらに詳しく説明する。
【0071】
段階420で推定された各関節の位置情報は、各関節の3次元座標情報を含んでよい。言い換えれば、各関節の位置情報は、3次元の空間内で該当の各関節が位置する座標(x、y、z)を示してよい。
【0072】
段階430で、コンピュータシステム100(または、後処理部340)は、段階420で推定された位置情報に対する後処理を実行してよい。例えば、段階432および434と同じように、コンピュータシステム100は、推定された位置情報のうちで誤推定された位置情報を決定してよく、誤推定された位置情報を補正してよい。言い換えれば、コンピュータシステム100は、誤推定と決定された関節の位置情報を適切な値に補正してもよいし、誤推定と決定された関節の位置情報を後述するアニメーションデータの生成に利用しなくてもよい。段階430の後処理部340による動作は、推論部330による動作として統合されてもよい。
【0073】
段階430により、客体130の関節のより正確な位置情報が推定される。
【0074】
段階440で、コンピュータシステム100(アニメーション生成部350)は、推定された(または後処理された)位置情報を利用して客体130の動きを表現するアニメーションデータを生成してよい。
【0075】
生成されるアニメーションデータは、各関節に対して推定された(または後処理された)3次元座標情報に基づく各関節の3次元位置情報、および各関節に対して連続的に推定される(または、後処理された連続的な)3次元座標情報に基づく各関節の回転情報を含んでよい。各関節の3次元位置情報は、各関節に対して推定された3次元座標情報に対応してよい。各関節の回転情報は、各関節の回転角度を含んでよい。コンピュータシステム100は、各関節に対して連続的に推定される3次元座標情報を比較することにより、該当の関節の回転角度を計算してよい。
【0076】
アニメーションデータは、各関節の動きを示す情報であってよい。アニメーションデータが含む各関節の3次元位置情報は、各関節のRST(Rotation、Scale、Translation)情報のうちのTranslation情報に該当してよい。アニメーションデータが含む各関節の回転情報は、各関節のRST情報のうちのRotation情報に該当してよい。アニメーションデータは、各関節のScale(すなわち、拡大/縮小に関する)情報は含まなくてもよい。
【0077】
段階450で、コンピュータシステム100(アニメーション生成部350)は、生成されたアニメーションデータを後処理してよい。例えば、段階452および454と同じように、コンピュータシステム100は、各関節の回転情報に非正常回転状態を示す回転情報があるかを判定してよく、非正常回転状態を示すと判定された回転情報を適切に補正してよい。
【0078】
一例として、段階452で、コンピュータシステム100は、各関節の回転角度が、人間が取ることのできる範囲内であるかをチェックしてよく、回転角度が、人間が取ることのできない範囲であれば、該当の回転角度に対応する回転情報は非正常回転状態を示すものと判定してよい。言い換えれば、コンピュータシステム100は、各関節の回転情報が客体130の正常な動きに該当するものとして予め設定された角度の範囲内であるかを判定してよく、範囲内であると判定された場合は、該当の回転情報は正常回転状態を示すものと判定してよい。コンピュータシステム100は、各関節の回転情報が客体130の正常な動きに該当するものとして予め設定された角度の範囲内にない場合には、非正常回転状態として判定してよい。
【0079】
各関節の回転角度が、人間が取ることのできない範囲であるかを判定するための基準範囲は、一般的に人間の関節が取ることのできる範囲内であるかを基準とするものであり、予め設定されてよい。基準範囲は各関節別に予め設定されてよく、各関節のx軸、y軸、およびz軸に対してそれぞれ予め設定されてよい。一例として、頭の動きと関連する関節のx軸方向の最小〜最大の回転角度は−37度〜22度に設定されてよい(Angle=MIN(MAX(−37、Angle)、22))。コンピュータシステム100は、頭の動きと関連する関節の回転情報に含まれるx軸方向の回転角度が−37度〜22度の範囲でない場合、該当の回転情報は非正常回転状態を示す回転情報であると判定してよい。一般的に人間の関節が取ることのできる範囲は、各関節(すなわち、各関節と関連する部位(骨))別に、例えば、以下の表1のように設定されてよい。表1に示した各関節に対する値は、生成される人物のモーションキャプチャデータ(実施形態のアニメーションデータ)を含むファイル(一例として、BHVファイル)に適用される各関節の回転限界値であってよい。ただし、以下に示した各関節の値は例示的なものに過ぎず、ポーズ推定の対象となる人物によって(例えば、ポーズ推定の対象となる人物が体操選手などの場合)適切に変更可能である。
【0081】
各関節(骨)のスティフネス(stiffness)とは、特定の軸を中心として関節がどのくらい簡単に回転するかを示す値であってよい。スティフネス値が適切に設定された場合、逆運動学(inverse kinematics)を適用するときに骨と関節がリアルに動くようになる。スティフネス値が大きいほど、該当の軸における回転は最小化されてよい。臀部に該当する関節(例えば、骨盤)の場合、人間の骨階層(bone hierarchy)のルート(root)になるため、該当の関節は全身を回転させることができる。したがって、臀部に該当する関節の場合、回転における制限やスティフネス値はないとして設定されてよい。段階454で、コンピュータシステム100は、非正常回転状態を示す回転情報の回転角度を、正常回転状態を示す回転角度に補正するか、該当の非正常回転状態を示す回転情報の回転角度を仮想のキャラクタ150の生成に利用されないようにしてよい。コンピュータシステム100は、補間法(interpolation)を利用して非正常回転状態を示す回転情報の回転角度を適切に補正してよい。
【0082】
段階450のアニメーション生成部350による動作は、後処理部340による動作に統合されてもよい。すなわち、各関節の回転角度の補正は、後処理部340によって実行されてもよい。
【0083】
段階450により、非正常的な回転を示す関節を含まない客体130の動きをより正確に模倣する仮想のキャラクタ150が生成される。
【0084】
段階460で、コンピュータシステム100(出力部360)は、生成されたアニメーションデータに基づいて客体130の複数の関節を仮想のキャラクタ150にマッピングすることにより、客体130の動き(すなわち、3次元ポーズ)を模倣する仮想のキャラクタ150を生成してよい。言い換えれば、コンピュータシステム100は、客体130の動きを模倣する仮想のキャラクタ150をレンダリングしてよい。レンダリングは、シェーダ(shader)によって実行されてよい。生成された仮想のキャラクタ150は、ディスプレイ220から出力されてよい。コンピュータシステム100は、カメラ120によって撮影される客体130の動きをリアルタイムで模倣する3次元の仮想のキャラクタ150を生成してよく、リアルタイムで仮想のキャラクタ150を表示してよい。仮想のキャラクタ150は出力映像に含まれ、ユーザ端末(すなわち、コンピュータシステム100)で表示されてよい。
【0085】
コンピュータシステム100は、客体130の関節の動きを推論することにより、客体130が正面を向いているか後ろを向いているかを識別することができ、これにより、生成される仮想のキャラクタ150の方向が決定されてよい。
【0086】
一方、z軸の座標を含む各関節の3次元位置情報がアニメーションデータに含まれることにより、アニメーションデータが各関節のScale情報を含んでいなくても、客体130の動きを正確に模倣する3次元の仮想のキャラクタ150を生成することができる。
【0087】
これと関連して、
図11aでは、2次元の入力映像に含まれた客体1100の3次元ポーズを推定する例を示すことにする。
【0088】
図11aに示すように、2次元の入力映像に含まれた客体1100の3次元ポーズが推定されることにより、3次元の仮想のキャラクタ1110が生成されてよい。図に示すように、客体1100の15箇所の関節に対して推定された位置情報(または、これによるアニメーションデータ1120)がキャラクタにマッピングされてよい。生成される仮想のキャラクタ1110は、客体1100の動きをリアルタイムで模倣してよい。図に示したアニメーションデータ1120は、上述した推論モデルを利用して客体1100の関節の位置情報を推定した結果を示してよい。
【0089】
以上、
図1〜
図3を参照しながら説明した技術的特徴は、
図4および
図11aにもそのまま適用可能であるため、重複する説明は省略する。
【0090】
図5は、一例における、2次元の入力映像に含まれた客体の関節の位置情報を推定する方法を示したフローチャートである。
【0091】
図5を参照しながら、コンピュータシステム100(または、推論部330)による客体130の各関節の位置情報を推定する方法についてさらに詳しく説明する。
【0092】
段階510で、コンピュータシステム100は、客体130の複数の関節それぞれに対するヒートマップ(Heat Map)および位置マップを生成してよい。ヒートマップおよび位置マップはそれぞれ、2次元イメージであってよい。位置マップは、各関節に対してx軸方向の位置を示す位置マップ、y軸方向の位置を示す位置マップ、およびz軸方向の位置を示す位置マップを含んでよい。ヒートマップは、各関節の各ピクセル位置に対する可能性を示してよい。言い換えれば、ヒートマップは、それぞれの関節がヒートマップ内の各ピクセル位置に存在する可能性を示してよい。
【0093】
段階520で、コンピュータシステム100は、客体130の各関節に対するヒートマップおよび位置マップに基づき、各関節の3次元座標情報を各関節の位置情報として推定してよい。
【0094】
図4を参照しながら説明した段階430の、推定された位置情報に対する後処理を実行するにあたり、段階432で、コンピュータシステム100(または、後処理部340)は、各関節の3次元座標情報に対応する各関節に対するヒートマップ上の値が所定の閾値未満であるかを判定してよい。このとき、コンピュータシステム100は、3次元座標情報に対応するヒートマップ上の値が所定の閾値未満であれば、該当の3次元座標情報は誤推定されたものと判定してよい。段階434で、コンピュータシステム100は、このように誤推定と判定された3次元座標情報を補正してよい。
【0095】
一例として、コンピュータシステム100は、各関節に対して推定された3次元座標情報が誤推定であるかを、該当の関節に対するヒートマップの最大値に基づいて判定してよい。コンピュータシステム100は、ヒートマップの最大値が所定の閾値(例えば、0.5)未満の場合、推定された3次元座標情報は不安定かつ誤推定された値として判定してよい。
【0096】
コンピュータシステム100は、推定された位置情報に該当する3次元座標情報にフィルタ(例えば、1 Euro Filterおよび/またはMedian Filter)を適用することにより、該当の3次元座標情報を補正してよい。
【0097】
これにより、客体130の関節に対してより正確な3次元座標情報を推定することができる。
【0098】
以上、
図1〜
図4および
図11aを参照しながら説明した技術的特徴は、
図5にもそのまま適用可能であるため、重複する説明は省略する。
【0099】
以下では、各関節に対して推定された位置情報を後処理部340によって後処理することについて、さらに詳しく説明する。
【0100】
上述した推論モデルは、畳み込みニューラルネットワーク(CNN:Convolution Neural Network)に基づいて客体130の3次元ポーズの推定を実行してよいが、これは、グラフィックアプリケーションにおいて許容できない小さなジッタ(jitter)、すなわち、許容できないアーティファクトを発生させることがある。このようなジッタおよび許容できないアーティファクトに対応する位置情報の値は、後処理によって補正することができる。
【0101】
このような時系列的なジッタ(およびアーティファクト)を低減させるために、後処理部340は、推定された位置情報の2次元キーポイント(keypoint)に特定のフィルタ(例えば、1 Euroフィルタ)を適用してよく、このようなフィルタが適用されたキーポイント(K)を該当の位置マップの値を参照するように利用してよい。推定された3次元ポーズを示す位置情報にも、継続的な映像推定結果による時系列的なノイズを減らすためにフィルタが適用されてよい。
【0102】
一方、推定された3次元ポーズを示す位置情報は、各関節のルート相対3次元(root−relative 3D)位置情報に該当するため、キャラクタアニメーションに直接適用することはできない。したがって、各関節位置の3次元の位置情報を方位(orientation)に変換するために逆運動学(inverse kinematics)が適用されてよい。このような方位値にも1 Euroフィルタが適用されてよい。
【0103】
図6は、一例における、2次元の入力映像に含まれた客体のグローバル位置情報を計算する方法を示したフローチャートである。
【0104】
図6を参照しながら、入力映像内で客体130が移動する場合の客体130の移動を推定し、推定された客体の移動を、対応する仮想のキャラクタ150の生成に反映する方法について説明する。
【0105】
段階610で、コンピュータシステム100(出力部360)は、入力映像を撮影するために利用されたカメラ(例えば、カメラ120)の焦点距離、および客体130の複数の関節のうちの少なくとも1つに対して推定された位置情報(すなわち、関節の3次元座標情報)に基づき、客体130のグローバル位置を示すグローバル位置情報を計算してよい。客体130のグローバル位置は、入力映像内における客体130の絶対的な位置を示してよい。言い換えれば、グローバル位置は、客体130の各関節の動きに対応する客体130の動きとは区別される、客体130自体の映像内での移動を示してよい。一例として、入力映像が、客体130がダンスをする映像である場合において、その場所だけで客体130がダンスをする動きは、上述した段階420で推定される、各関節の位置情報によって推定されてよい。しかし、客体130が舞台上を移動しながらダンスをする場合、客体130の舞台上での移動は、客体130のグローバル位置を計算することによって推定されてよい。
【0106】
段階620で、コンピュータシステム100は、計算されたグローバル位置情報に基づいて客体130の入力映像内における位置移動を推定してよい。
【0107】
段階610および段階620により、客体130の3次元ポーズおよび移動をより正確に反映した仮想のキャラクタ150を生成することができる。
【0108】
上述した段階610および段階620は、出力部360ではなく、後処理部340によって実行されてもよい。
【0109】
これと関連して、
図11bでは、一例における、2次元の入力映像に含まれた客体1100の3次元ポーズを推定する例を示すことにする。
【0110】
図に示すように、入力映像において客体100がその場所だけで動くのではなくグローバルに移動する場合、コンピュータシステム100は、客体130のグローバル位置を示すグローバル位置情報を計算してよく、これにより、客体130の入力映像内におけるグローバルな位置移動を推定してよい。図に示すように、生成される仮想のキャラクタ1110は、客体1100のグローバルな位置移動までも模倣することができる。
【0111】
以下では、コンピュータシステム100が入力映像を撮影するために利用されるカメラ(例えば、カメラ120)の焦点距離、および客体130の関節に対して推定された位置情報(すなわち、関節の3次元座標情報)を利用して客体130のグローバル位置を示すグローバル位置情報を計算する方法についてさらに詳しく説明する。
【0112】
実施形態では、入力映像に対して境界ボックス(bounding box)を利用し、クロップされた入力映像から客体130の3次元ポーズが推定されることにより、推定によって得られるルート相対3次元ポーズは、客体130のグローバル位置情報を失うようになる。
【0113】
このような客体130のグローバル位置情報は、以下の数式(1)によって計算されることによって復元可能となる。以下の数式(1)において、P
G3Dは、客体130のグローバル位置情報を示してよい。
【0116】
【数2】
は、客体130のすべての関節の3次元、2次元の平均(mean)であってよく、特に、Kバーは、スクリーン座標系の値を有してよい。P
[x、y]は、P
3Dのx、y部分であってよく、単一な下部記号は、特定の要素を示してよい。fは、客体130の撮影に利用されたカメラ(例えば、カメラ120)の焦点距離であってよい。言い換えれば、客体130のグローバル位置情報は、客体130の撮影に利用されたカメラの焦点距離、および推論モデルによる推定前後の各関節の2次元および3次元の位置情報を利用して計算されてよい。
【0117】
計算されたグローバル位置情報に基づき、客体130の3次元ポーズだけではなく、グローバルな移動を模倣する仮想のキャラクタ150を生成することができる。
【0118】
以上、
図1〜
図5、
図11aおよび
図11bを参照しながら説明した技術的特徴は、
図6にもそのまま適用可能であるため、重複する説明は省略する。
【0119】
図7は、一例における、2次元の入力映像に含まれた複数の客体の3次元ポーズの推定のためのデータを生成する方法を示したフローチャートである。
【0120】
図7を参照しながら、取得した入力映像が複数の客体を含む場合における、客体の3次元ポーズの推定のためのデータを生成する方法について説明する。
【0121】
段階710のように、コンピュータシステム100(または、入力部310あるいは前処理部320)は、複数の客体を含む入力映像に対し、該当の複数の客体と関連するコンフィデンスマップを生成してよい。
【0122】
コンフィデンスマップは、入力映像に含まれた複数の客体それぞれの複数の関節それぞれと関連するベクトル情報を含んでよい。ベクトル情報は、各関節がどのような客体に含まれるものかを識別するための情報であってよい。
【0123】
コンピュータシステム100は、上述した段階420で各関節の位置情報を推定するにあたり、段階710で生成されたコンフィデンスマップを利用して各客体の複数の関節それぞれの位置情報を複数の客体のうちの他の客体と区分して推定してよい。言い換えれば、コンフィデンスマップが含むベクトル情報に基づき、位置情報の推定の対象となる関節はどの客体の関節であるかが区分(特定)されるようになり、したがって、段階420〜460で、コンピュータシステム100は、複数の客体それぞれの動きに該当する3次元ポーズを区分して推定することができる。説明した実施形態によると、複数の客体を含む入力映像に対しては、客体それぞれの3次元ポーズが同時に推定されてよい。
【0124】
または、入力映像が複数の客体を含む場合において、コンピュータシステム100は、該当の入力映像から複数の客体のうちの1つの客体を含む部分映像だけを取得してもよい。1つの客体を含む部分映像は、入力映像が1つの客体だけを含むようにクロップされた映像や、入力映像から1つの客体を示す部分が削除されるかブロー処理(または、その他の処理)された映像であってよい。
【0125】
コンピュータシステム100は、入力映像が含む複数の客体のうちの1つの客体を含む各部分映像に対し、段階420の推定する段階、および(段階430の後処理段階を含む)段階440の生成する段階を並列的に実行するか、それぞれの客体を含む部分映像別に該当の段階を順に実行してよい。
【0126】
段階420〜440が並列的に処理される場合には、複数の客体を含む入力映像に対して客体それぞれの3次元ポーズが同時に推定されてよい。または、段階420〜440が各部分映像別に順に処理される場合には、複数の客体を含む入力映像に対して客体それぞれの3次元ポーズが順に推定されてよい。
【0127】
一方、上述した段階460において、コンピュータシステム100は、生成されたアニメーションデータに基づいて客体130の複数の関節を複数の仮想のキャラクタのそれぞれにマッピングすることにより、客体130の動きを模倣する複数の仮想のキャラクタを生成してよい。すなわち、コンピュータシステム100は、1つの客体130を含む入力映像に対して該当の客体130の動きを模倣する複数のキャラクタを生成してよい。複数のキャラクタのそれぞれは、互いに異なるキャラクタであってよい。
【0128】
または、(上述したように)入力映像が複数の客体を含む場合において、コンピュータシステム100は、複数の客体のそれぞれの複数の関節を仮想のキャラクタにマッピングすることにより、複数の客体の動きを模倣する複数の仮想のキャラクタを生成してよい。
【0129】
生成された複数の仮想のキャラクタのそれぞれは、ユーザ端末(すなわち、コンピュータシステム100であるユーザ端末)から出力される出力映像の異なる位置に配置されてよい。例えば、生成された複数の仮想のキャラクタのそれぞれは、これらが出力される出力映像内において、ユーザ端末(すなわち、コンピュータシステム100)のユーザによるユーザ端末の操作によって決定された位置に配置されてよい。言い換えれば、ユーザは、各客体に対応する仮想のキャラクタが出力映像で配置される位置を選択することができ、したがって、ユーザは、出力映像をカスタマイズすることができる。これにより、入力映像内での客体の配置は、ユーザの操作により、出力映像での仮想のキャラクタの配置とは異なるようになってよい。
【0130】
これと関連して、
図12は、一例における、2次元の入力映像に含まれた複数の客体の3次元ポーズを推定する例を示した図である。
【0131】
図に示すように、入力映像に含まれた互いに異なる客体1210〜1230のそれぞれは、3次元ポーズの推定によって互いに異なるキャラクタ1240〜1260に変換されてよい。キャラクタ1240〜1260それぞれの出力映像での位置は、客体1210〜1230の入力映像での位置とは異なってよい。例えば、ユーザは、出力映像が表示されるユーザ端末(すなわち、コンピュータシステム100)を操作することによってキャラクタ1240〜1260それぞれの位置を変更してよい。
【0132】
一方、図に示すものとは異なり、キャラクタ1240〜1260のうちの少なくとも2つは、客体1210〜1230のうちのいずれか1つの客体の3次元ポーズを推定して生成されたものであってもよい。
【0133】
または、複数のキャラクタ1240〜1260を含む出力映像を生成するために、複数の入力映像が利用されてもよい。言い換えれば、図に示すものとは異なり、客体1210〜1230は、それぞれ異なる入力映像に含まれる客体であるか、複数のキャラクタ1240〜1260は、複数の入力映像から推定されたものであってよい。コンピュータシステム100は、このような客体1210〜1230を含む複数の入力映像に対して3次元ポーズの推定を実行することにより、複数のキャラクタ1240〜1260を含む1つの出力映像を生成してよい。
【0134】
以上、
図1〜6、
図11aおよび
図11bを参照しながら説明した技術的特徴は、
図7および
図12にもそのまま適用可能であるため、重複する説明は省略する。
【0135】
図8〜10を参照しながら、推論モデルと推論モデルを構築する方法についてさらに詳しく説明する。
【0136】
以下の詳細な説明において、推論モデルおよび推論モデルの構築を説明するための「学習(learning)」および「訓練(training)」という用語は混用されてよく、これらの用語は代替されてよい。
【0137】
図8は、一実施形態における、2次元の入力映像に含まれた客体の3次元ポーズを推定するための推論モデルを構築する方法を示したフローチャートである。
【0138】
上述したコンピュータシステム100が搭載している推論モデルは、客体130の複数の関節それぞれの位置情報を推定するために予め訓練されたものであってよい。推論モデルは、モバイル端末にも搭載できるように軽量化されたモデルであってよく、例えば、MoVNectモデルと命名されたモデルであってよい。
【0139】
このような推論モデルは、教師−学生学習(Teacher−Student Learning)モデルにおいて学生モデルに該当してよい。学生モデル(Student Model)は、推論モデルの予め訓練された教師モデル(Teacher Model)に比べてより軽量化されたモデルであってよい。すなわち、学生モデルは、モデル軽量化(model compression)により、教師モデルよりも軽量化されたニューラルネットワークを含んでよい。学生モデルは、教師モデルに比べて少ない数の層を含んでよい。または、学生モデルは、教師モデルよりも少ない数の隠れ層を含むか、または教師モデルよりも少ない数のフィルタまたはノードを含んでよい。このような学生モデルは、所定の訓練用の映像(すなわち、訓練用の2次元入力映像)に含まれた客体の複数の関節の位置情報を学習することにより、このような位置情報を推定するように訓練されたモデルであってよい。学生モデルは、訓練用の2次元入力映像に含まれた客体の複数の関節の位置情報を学習するにあたり、教師モデルによる訓練用の2次元入力映像に含まれた客体の複数の関節の位置情報の推定結果を利用してよい。例えば、推論モデルが入力映像に含まれた客体の複数の関節の位置情報を学習するにあたり、教師モデルによる該当の入力映像に含まれた客体の複数の関節の位置情報の推定結果が損失関数の計算に利用されてよい。これにより、構築された推論モデルは、軽量化された学生モデルの特性を維持しながら、教師モデルに準ずる推定正確度を維持することができる。
【0140】
以下では、推論モデルを構築する方法についてより詳しく説明する。以下で説明する段階810〜段階830は、推論モデルを構築するためのコンピュータシステムによって実行されてよい。該当のコンピュータシステムは、上述したコンピュータシステム100に推論モデルを提供するための装置であって、サーバその他のコンピューティング装置であってよい。以下、推論モデルを構築するためのコンピュータシステムは、モデル構築装置と命名して説明する。
【0141】
段階810で、モデル構築装置は、所定の訓練用の映像(すなわち、訓練用2次元の入力映像)に含まれた客体の複数の関節の位置情報を推定するように教師モデルを訓練させてよい。言い換えれば、モデル構築装置は、訓練用の2次元入力映像を用いて教師モデルを訓練させてよい。教師モデルは、所定の訓練用の映像から、該当の訓練用の映像に含まれた客体の複数の関節の位置情報を推定するように予め訓練されたものであってよい。実施形態の推論モデルは、このような予め訓練された教師モデルを利用して学習(訓練)されてよい。
【0142】
訓練用の2次元入力映像は、複数の訓練用の2次元入力映像のセットであってよい。教師モデルは、例えば、正解が分かっている2次元の入力映像(すなわち、グラウンドトゥルース(ground truth)入力映像)を用いて予め訓練されたものであってよい。
【0143】
段階820で、モデル構築装置は、教師モデルによる訓練用(2次元の入力)の映像に含まれた客体の複数の関節の位置情報の推定結果に基づき、教師モデルよりも軽量化されたモデルである学生モデルに、該当の訓練用の2次元入力映像に含まれた客体の複数の関節の位置情報を学習させてよい。言い換えれば、モデル構築装置は、訓練用の2次元入力映像を用いて学生モデルを訓練させてよく、学生モデルは、教師モデルでの推定結果を用いて訓練されてよい。
【0144】
すなわち、教師−学生学習に基づく知識の蒸留(knowledge−distillation)によって訓練されてよい。学習しようとする訓練用の2次元入力映像に対し、該当の訓練用の2次元入力映像を教師モデルが先に学習し、教師モデルよりも軽量化された学生モデルは、このような教師モデルでの推定結果を活用して訓練用2次元入力映像を学習してよい。これにより、教師モデルは、訓練用の2次元入力映像に対する知識を凝縮して学生モデルに伝達することができ、学生モデルは、教師モデルを利用せずに訓練用の2次元入力映像を学習した場合に比べて最適解を容易に見つけ出すことができるため、正確度を高めることができる。
【0145】
段階830で、モデル構築装置は、段階820で学習された学生モデルを、2次元の入力映像に含まれた客体の3次元ポーズを推定するための推論モデルとして構築してよい。モデル構築装置は、このような学習された学生モデルを、上述した推論モデルとしてコンピュータシステム100に搭載してよい。
【0146】
学生モデルは、2次元の入力映像が含む各客体の位置情報を推定するために利用される損失関数を利用して訓練されてよい。学生モデルは、教師モデルによって推定(予測)された結果と正解(ground truth)に基づいて決定される損失関数を用いて訓練されてよい。学生モデルの訓練において用いられる損失関数は、ヒートマップに対する損失関数である第1損失関数、および位置マップに対する損失関数である第2損失関数を含んでよい。例えば、段階820で、学生モデルに対して訓練用の2次元入力映像に含まれた客体の複数の関節の位置情報を学習させるにあたり、学生モデルは、学生モデルによって推定された複数の関節の各関節に対する第1ヒートマップと該当の各関節に対する正解に該当する第2ヒートマップとの差、および第1ヒートマップと教師モデルによって推定された各関節に対する第3ヒートマップとの差に基づいて計算される第1損失関数と、学生モデルによって推定された各関節に対する第1位置マップと該当の各関節に対する正解に該当する第2位置マップとの差、および第1位置マップと教師モデルによって推定された各関節に対する第3位置マップとの差に基づいて計算される第2損失関数を用いて訓練されてよい。
【0147】
このとき、第1ヒートマップと第2ヒートマップとの差および第1ヒートマップと第3ヒートマップとの差は、所定の混合比で第1損失関数に含まれてよい。また、第1位置マップと第2位置マップとの差、および第1位置マップと第3位置マップとの差は、所定の混合比で第2損失関数に含まれてよい。所定の混合比は、例えば、0.5であってよい。第1損失関数と関連する混合比および第2損失関数と関連する混合比は、互いに異なるように設定されてもよい。
【0148】
上述したような所定の混合比により、教師モデルによる推定結果(すなわち、学習結果)が学生モデルの訓練において利用されてよい。したがって、実施形態の学生モデルによって構築された推論モデルは、軽量化されたモデルになれると同時に、推定において高い正確度をもつことができる。
【0149】
以上、
図1〜
図7、
図11および
図12を参照しながら説明した技術的特徴は、
図8にもそのまま適用可能であるため、重複する説明は省略する。
【0150】
図9は、一例における、教師−学生モデルを利用して、2次元の入力映像に含まれた客体の3次元ポーズを推定するための推論モデルを構築する方法を示した図である。また、
図10は、一例における、2次元の入力映像に含まれた客体の3次元ポーズを推定するための推論モデルを示した図である。
【0151】
以下では、教師−学生学習を活用して軽量化された3次元ポーズの推定のための推論モデルを訓練させ、このような訓練モデルを構築する方法についてさらに詳しく説明する。
【0152】
実施形態で構築される推論モデルは、単一なRGBカメラによって撮影された映像(入力映像)から3次元ポーズの推定を実行することができる、軽量化された深層ニューラルネットワーク基盤のモデルであってよい。推論モデルは、MoVNectモデルと命名されてよい。上述したように、推論モデルの推定性能を強化するために3次元ポーズを推定するための推論モデルを訓練させるにあたり、教師−学生学習に基づく知識の蒸留(Knowledge distillation)方法が利用されてよい。
【0153】
推論モデルによって推定された、映像に含まれた客体の関節の位置情報は、後処理により、CNN出力が時系列的に安定した3D骨格情報として生成されてよく、これは、(例えば、3次元のキャラクタまたはアバタを生成するための)アプリケーションで直接適用されてよい。
【0154】
推論モデルは、リアルタイムで撮影される映像に対してリアルタイムで客体の3次元ポーズを推定してよい。推定された客体の3次元ポーズは、AR(拡張現実)またはVR(バーチャルリアリティ)環境において、運動競技力の分析、身体およびジェスチャモーションのキャプチャに活用されてよい。実施形態の推論モデルは、センサと数台のカメラが装着されたウェアラブルスーツに依存したり、客体(人体)の関節の位置情報を得るために深さカメラを要求したりしなくても、関節の位置情報を推定することができる。したがって、高価な特殊装備を必要としたり、構成段階を必要としたり、特定の光源を必要としたりしないため、室内および室外の環境において客体に対する3次元ポーズを制限なく推定することができる。
【0155】
深層ニューラルネットワークに基づいてRGB映像のポーズを推定するモデルを構築するためには、深層学習基盤のモデル性能の向上のために極めて深くて広い層が必要となり、これは高い配置費用に繋がる。これは、FLOPS(Floating Point Operations Per Second:1秒あたりの浮動小数点演算回数)を増加させるようになり、したがって、構築されたモデルをスマートフォンまたは埋め込みシステムなどのようにコンピューティング資源が制限された装置への搭載には不適となる。FLOPSを減らすために、実施形態の推論モデルは、軽量化されたモデルによって構築されてよい。すなわち、実施形態の推論モデルは、一般的により少ない数のパラメータによって設計されてよく、深層畳み込みのような効率的な作業によって設計されてよい。
【0156】
実施形態の推論モデルは、軽量化によってパラメータを減らしながら、推定正確度の低下を最小化するように学習されてよい。上述したように、推論モデルは、教師−学生モデル学習方法に基づいて構築されてよく、このように構築された推論モデルは、教師学習を利用せずに訓練されたモデルよりも、高い推定正確度を達成することができる。
【0157】
図9では、教師−学生モデル学習方法に基づき、訓練用の2次元入力映像910によって訓練された学生モデルを実施形態の推論モデルとして構築する方法について説明している。先ず、教師モデル920は、訓練用の2次元入力映像910によって訓練されてよい。教師モデル920は、多数のニューラルネットワーク層を含んでよい。次に、教師モデル920に比べて軽量化された学生モデル900が訓練用の2次元入力映像910によって訓練されてよい。学生モデル900は、教師モデル920の追加学習(extra supervision)を用いて教師モデル920の3次元ポーズの知識を伝達するための模倣(mimicry)損失関数によって訓練されてよい。訓練された軽量化された学生モデル900は、教師モデル920にこれ以上は依存せず、教師モデル920によって訓練されなかったモデルに比べて優れた推定正確度を達成することができる。推定された3次元ポーズ950は、構築された推論モデル(すなわち、学生モデル900)によるポーズ推定結果を示してよい。学生モデル900と教師モデル920の訓練のために用いられる正解は、予め分かっている値であってよい。正解GTは、訓練用の2次元入力映像910(または、他の訓練用の入力映像のセット)に対する正解であって、例えば、複数のセンサ、多数のカメラ、これらが取り付けられたウェアラブルスーツ、深さカメラなどで客体を撮影することによって取得される訓練用の2次元入力映像910(または、他の訓練用の入力映像のセット)に対する正解データであってよい。このような正解データは、正解ヒートマップおよび正解位置マップを含んでよい。学生モデル900を訓練させるための損失関数は、このような正解ヒートマップおよび正解位置マップと、教師モデル920によって推定されたヒートマップおよび位置マップと、学生モデル900によって推定されたヒートマップおよび位置マップを利用して決定されてよい。詳しい損失関数の決定方法については、以下で説明することにする。
【0158】
上述した知識の蒸留は、区分されるキャパシティを有する、異なるネットワーク間に情報を伝達するものであってよい。知識の蒸留の主なアイディアは、クラス確率、フィーチャ表現、またはレイヤ間(inter−layer)の流れにおいて教師モデルを用いて追加学習を適用することにある。これは、相対的に訓練させやすい大規模のネットワークを利用することで、訓練に困難のある小規模ネットワークの効率的な訓練のために利用されてよい。すなわち、知識の蒸留により、大型ネットワークの知識が小規模ネットワークに首尾良く移転されるようになる。また、オンライン基盤の蒸留により、オフライン基盤の方法よりも効果的な最適化が達成されるようになる。実施形態では、このような知識の蒸留を分類問題において(3次元)ポーズ推定に拡大した。すなわち、客体の関節に対応するヒートマップ(および位置マップ)の知識伝達により、効率的かつ軽量化されたポーズの推定モデルが訓練されるようになる。実施形態によって軽量化された推論モデルが構築されてよく、したがって、処理能力が低い装備であっても、入力映像に含まれる客体に対する3次元ポーズを推定することができる。
【0159】
実施形態によって構築された推論モデル900は、教師モデル920あるいは同じ水準の推定正確度を維持する比較モデルに比べてパラメータの数が1/14まで軽量化されるようになり、モデルのファイルのサイズも1/8〜1/10未満となる。また、コンピュータシステム100における実行において、3次元ポーズ推定の速度は、比較モデルに比べてCPUで約6倍、GPUで約3倍、NPUで約2.8倍の向上を達成することができる。
【0160】
図10は、一例における、2次元の入力映像に含まれた客体の3次元ポーズを推定するための推論モデルを示した図である。
図10に示されたモデルは、
図9を参照しながら説明した学生モデル900に対応してよい。
【0161】
推論モデル900は、バックボーンネットワークを含んでよい。バックボーンネットワークは、入力映像としてRGB映像が入力されるベースネットワークであってよい。バックボーンネットワークは、映像において客体の関節の位置情報を推定するように予め訓練されたモデルであってよい。一例として、バックボーンネットワークは、MobileNet(または、MobileNetV2)モデルであってよく、ブロック12までが推論モデル900のためのバックボーンネットワークとして利用されてよい。推論モデル900は、効率的なフィーチャ(feature)抽出のために、pointwiseおよびdepthwise CNN基盤の構造に基づいて実現されてよい。また、推論モデル900は、デコンポジション(decomposition)およびスキップコネクション(skip connection)のような軽量化のための構造を含んでよい。Jは関節を示してよく、BLは骨の長さ(Bone Lenth)を示してよい。中間フィーチャである△X、△Y、および△Zは、BLに該当するフィーチャのために利用されてよい。BLに該当するフィーチャは、ルート相対3次元ポーズ(root−relative 3D human pose)を推定するための補助的な手がかりとなってよい。本発明の一実施形態では、ルートとして骨盤を利用するが、この場合、BLに該当するフィーチャは、骨盤を基準とする相対座標系上の3次元ポーズとなってよい。結果的に、推論モデル900は、各関節に対するヒートマップ(H)と各座標軸に対する位置マップ(X、Y、Z)を生成(推定)してよい。
【0162】
以下では、3次元ポーズを推定するための推論モデル900についてさらに詳しく説明する。
【0163】
客体の3次元ポーズの推定においては、与えられたRGB映像(入力映像)Iから3次元ポーズP
3Dが推定される。P
3D∈R
3×Jは、客体のJ関節のルート相対3次元位置(root−relative 3D position)を示してよい。実施形態の推論モデル900は、低電力装置(例えば、スマートフォンや埋め込みシステムなど)に搭載されて実行されてよい。このような推論モデル900は、客体に対して3次元の完全体のモーションのために15箇所の関節(J=15)を推定してよい。
【0164】
実施形態の推論モデル900は、客体の各関節に対するヒートマップおよび位置マップに対して知識の蒸留によって訓練されてよい。ヒートマップおよび位置マップは2次元の空間情報を示すため、知識の蒸留を容易に適用することができる。推論モデル900は、すべての関節j∈1・・・Jに対してヒートマップと位置マップを生成してよい。図に示すように、推論モデル900は、一例として、MobileNetV2モデルの12ブロックまでをバックボーンネットワークとして利用してよく、追加で深層CNN層を含んでよい。推論モデル900は、骨の長さフィーチャを推論モデル900に追加することにより、ルート相対位置マップを推定するための明確な手がかりを取得することができる。例えば、骨の長さフィーチャは、以下の数式(2)のように表現されてよい。
【0166】
△X
j、△Y
j、△Z
jは、推論モデル900における中間フィーチャであってよい。効率的な計算のために、骨の長さフィーチャは、L2距離基盤の方程式(equation)の代りに、L1距離を用いて計算されてよい。計算されたフィーチャは、他の中間フィーチャと結合して最終出力を計算するために活用されてよい。
【0167】
推論モデル900は、訓練において客体の境界ボックス(bounding box)によってクロップされた映像を利用してよい。これは、ランタイムで映像の大きさに影響を受ける推論モデル900の性能に影響を及ぼすことがある。推論モデル900が搭載されたモバイルデバイスにおいて、リアルタイム処理を維持しながら性能の問題を解決するためには、例えば、バッファ面積0.2×垂直高さ0.4×水平幅に基づく2次元ヒートマップの初期のいくつかのフレームから発見されるキーポイント(K)に基づいて境界ボックスを取得してよく、0.75のモメンタムを有する以前のフレームを利用してこれを持続的に追跡してよい。スケールを正常化するために、境界ボックスによってクロップされた映像は、256×256にその大きさが調整され、推論モデル900に対する入力として利用されてよい。
【0168】
以下では、推論モデル900を訓練するにあたり、教師−学生学習に基づく追加地図のための損失関数について説明する。
【0169】
推論モデル900を訓練させるための損失関数は、ヒートマップ損失関数(L
HM)および位置マップ損失関数(L
LM)を含んでよい。ヒートマップ損失関数(L
HM)および位置マップ損失関数(L
LM)はそれぞれ、以下の数式(3)および(4)で表現されてよい。
【0171】
ここで、H
jとH
jGTはそれぞれ、推論モデル900(すなわち、学生モデル)によって推定されたj番目の関節のヒートマップと実測ヒートマップ(すなわち、正解)を示してよい。
【0172】
【数5】
はアダマール積(Hadamard product)を示し、L
jは推論モデル900によって推定されたj番目の関節の位置マップを示す。L
jGTは、j番目の関節の実測位置マップ(すなわち、正解)を示す。GTとTはそれぞれ、正解と教師モデル920によって推定された結果を示す。すなわち、H
jTおよびL
jTはそれぞれ、教師モデル920によって推定されたj番目の関節のヒートマップおよび位置マップを示してよい。αは、正解と教師モデル損失条件との間の混合要素(すなわち、混合比)を示してよく、例えば、0.5に設定されてよい。教師−学生学習は、各ミニバッチ(mini batch)によって全体の訓練過程にわたって実行されてよい。推論モデル900への訓練が完了した後、教師モデル920の知識によって学習された学生モデルである推論モデル900がモバイルデバイスのようなコンピュータシステム100に搭載され、客体の3次元ポーズの推定のために利用されてよい。
【0173】
例えば、
図8を参照しながら説明した段階820において、学生モデル900に、訓練用の2次元入力映像910に含まれた客体の複数の関節の位置情報を学習させるにあたり、学生モデル900は、学生モデル900によって推定された複数の関節の各関節に対する第1ヒートマップ(H
j)と該当の各関節に対する正解に該当する第2ヒートマップ(H
jGT)との差、および第1ヒートマップ(H
j)と教師モデル920によって推定された各関節に対する第3ヒートマップ(H
jT)との差に基づいて計算される第1損失関数(L
HM)と、学生モデル900によって推定された各関節に対する第1位置マップ(L
j)と該当の各関節に対する正解に該当する第2位置マップ(L
jGT)との差、および第1位置マップ(L
j)と教師モデル920によって推定された各関節に対する第3位置マップ(L
jT)との差に基づいて計算される第2損失関数(L
LM)によって訓練されてよい。このとき、第1ヒートマップ(H
j)と第2ヒートマップ(H
jGT)との差および第1ヒートマップ(H
j)と第3ヒートマップ(H
jT)との差は、所定の混合比(α:1−α)で第1損失関数(L
HM)に含まれてよい。また、第1位置マップ(L
j)と第2位置マップ(L
jGT)との差および第1位置マップ(L
j)と第3位置マップ(L
jT)との差は、同じ所定の混合比(α:1−α)で第2損失関数(L
LM)に含まれてよい。所定の混合比は、例えば、0.5であってよい。ただし、第1損失関数(L
HM)と関連する混合比および第2損失関数(L
LM)と関連する混合比は、互いに異なるように設定されてもよい。
【0174】
推論モデル900によって推定された関節の位置情報は、上述した後処理方法によって後処理されてよい。これに関する重複する説明は省略する。
【0175】
上述した装置は、ハードウェア構成要素、ソフトウェア構成要素、および/またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ(digital signal processor)、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)およびOS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを格納、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が利用されるとして説明される場合もあるが、当業者は、処理装置が複数の処理要素(processing element)および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサ(parallel processor)のような、他の処理構成(processing configuration)も可能である。
【0176】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に(collectively)処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、仮想装置(virtual equipment)、コンピュータ記録媒体または装置、または送信される信号波(signal wave)に永久的または一時的に具現化(embody)されてよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された方法で格納されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータ読み取り可能な記録媒体に格納されてもよい。
【0177】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータ読み取り可能な媒体に記録されてよい。コンピュータ読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでよい。媒体に記録されるプログラム命令は、実施形態のために特別に設計されて構成されたものであっても、コンピュータソフトウェアの当業者に公知な利用可能なものであってもよい。コンピュータ読み取り可能な記録媒体の例としては、ハードディスク、フロッピディスク、磁気テープのような磁気媒体、CD−ROM、DVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどのようなプログラム命令を記録して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを利用してコンピュータによって実行される高級言語コードを含む。上述したハードウェア装置は、実施形態の動作を実行するために1つ以上のソフトウェアモジュールとして動作するように構成されてよく、その逆も同じである。
【0178】
以上のように、実施形態を、限定された実施形態と図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能である。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
【0179】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。