【文献】
Volodymyr Mnih,外2名,Empirical Bernstein Stopping,[online],2008年 7月,平成30年3月19日検索,URL,http://icml2008.cs.helsinki.fi/papers/523.pdf
(58)【調査した分野】(Int.Cl.,DB名)
請求項1記載の方法において、前記有界差統計が、前記オプションの挙動を記述する前記サンプルから得られた数値であり、前記数値が、前記サンプルの内任意のものが変化したとき、僅かに変化する、方法。
【発明を実施するための形態】
【0009】
[0008] 添付図面と関連付けて以下に示す詳細な説明は、本例の一説明であることを意図するのであり、本例を構築または利用することができる唯一の形態を表すことを意図するのではない。この説明は、本例の機能、ならびに本例を構築し動作させるためのステップのシーケンスを明らかにする。しかしながら、異なる例によって、同じまたは等価な機能およびシーケンスを遂行してもよい。
【0010】
[0009] 本明細書では、本例は、ゲームを制御するための機械学習システムにおいて実現されるものとして説明および例示するが、説明するシステムは、限定ではなく一例として提供される。当業者は認めるであろうが、本例は、種々の異なるタイプの機械学習システムにおける用途に適している。
【0011】
[0010]
図1は、機械学習システムのコンポーネントであるオプション・セレクター102の模式図であり、更にモデル・セレクター112、特徴セレクター114、およびツリー分割機能セレクター116の模式図である。これらの各々は、機械学習システムのコンポーネントであることができる。
【0012】
[0011] オプション・セレクターは、採点ロジック106およびオプションについての
情報のサンプル110を使用して、オプションの点数を評価することによって、複数のオプション100から1つ以上のオプションを選択する。オプションについての情報は、進展中のプロセスにおいて入手可能になるサンプル110から得られるので、オプションについての不確実性がある。採点ロジックは、レーシング・ロジック(racing logic)108を使用して、選択プロセスを高速化しつつ、指定された誤差許容範囲を維持する。オプション選択の結果として、リソース104を割り当てることができる。例えば、各オプションが広告であってもよく、リソース104は、この広告の印象をユーザーに提示するための計算リソースおよび画面空間であってもよい。各サンプル110は、広告の印象、およびこの広告の印象に対する、観察したユーザーの応答(例えば、クリック有り/無し応答)であってもよい。オプション・セレクターは、採点ロジック106およびサンプルを使用して、広告に対する点数を計算することができる。多くの何千以上ものサンプルが観察された後、各広告の点数が定常状態に達することができ、どの広告を提示するか選択することによって、これらのレベルは、リソース104を割り当てるために、オプション・セレクターによって使用することができる。このプロセスを高速化するために、レーシング・ロジック108を使用して、選択結果の指定誤差許容範囲を確保しつつ、選択が行われる前に評価されるべきサンプルを減らすことを可能にすることができる。
【0013】
[0012] オプション・セレクター203、採点ロジック106、およびレーシング・ロジック108の各々は、ソフトウェアおよび/またはハードウェアを使用して実現されるコンピューターである。例えば、これらのコンポーネントは、全体的にまたは部分的に、ハードウェア・ロジック・コンポーネントを使用して実現することができる。即ち、代わりにまたは加えて、本明細書において説明する機能は、少なくとも部分的に、1つ以上のハードウェア・ロジック・コンポーネントによって実行することができる。例えば、そして限定ではなく、使用することができるハードウェア・ロジック・コンポーネントの代表的なタイプは、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定プログラム集積回路(ASIC)、特定プログラム標準製品(ASSP)、チップ上システム・システム(SOC)、複合プログラマブル・ロジック・デバイス(CPLD)、グラフィクス処理ユニット(GPU)を含む。
【0014】
[0013] 一例では、オプション・セレクターはモデル・セレクター112である。この状況では、オプションは、異なる複雑度を有することができる異なるファミリーのモデル118である。この状況において、オプションは、異なる複雑度を有することができる、異なるファミリーのモデル118である。この状況におけるサンプル110は、モデルに必要とされるシステムからのサンプルであるとよい。例えば、サンプルは、温度、雨、および他の要因の経験的測定値であってもよく、モデル化されるシステムは天候システムとなる。他の例では、サンプルに訓練画像からの画像エレメントを標識してもよく、モデル化されるシステムは画像分類システムとなる。モデル・セレクターは、データー(サンプル)をモデル化するために使用される、モデル118のファミリーの内1つ以上を含む出力を生成する。リソース104は、採点ロジックおよびレーシング・ロジックによって使用される計算リソースとすることができる。リソース104は、モデル・セレクターによって選択されたモデルのファミリーを使用する下流側計算プロセスによって使用される計算リソースとすることもできる。採点ロジックおよびレーシング・ロジックは、選択プロセスを有効にし高速化するために、前述したのと同様に使用される。
【0015】
[0014] 一例では、オプション・セレクターは特徴セレクター120である。この状況では、オプションは、例えば、文書のコーパスまたは物体の画像の特徴120である。この状況におけるサンプル110は、特徴の例とすることができ、これらの特徴がどの位正しく文書または物体を分類するかという観察が伴う。モデル・セレクターは、文書または物体を分類するのが得意であるとして選択された特徴を含む出力を生成する。リソース104は、採点ロジックおよびレーシング・ロジックによって使用される計算リソースとすることができる。リソース104は、下流側計算プロセスによって使用される計算リソースとすることもできる。これらの計算リソースは、特徴セレクターによって選択された特徴を使用する。採点ロジックおよびレーシング・ロジックは、選択プロセスを有効にし高速化するために、前述したのと同様に使用される。
【0016】
[0015] 一例では、オプション・セレクターは、ランダム判断ツリーを訓練するための機械学習システムの一部である、ツリー分割機能セレクター116である。ランダム判断ツリーとは、訓練フェーズの間に蓄積されたデーターを格納するために使用される一種のデーター構造であり、ランダム判断ツリーによって以前には見られない例についての予測を行うために使用することができる。ランダム判断ツリーは、通常、一般化を達成するために、特定の用途領域に対して訓練されたランダム判断ツリーの集合体(ensemble)の一部として使用されるである(即ち、フォーレストを訓練するために使用されるものとは異なる例について正しい予測を行うことができる)。ランダム判断ツリーは、ルート・ノード、複数の分割ノード、および複数のリーフ・ノードを有する。訓練の間、ツリーの構造(ノードの数、およびこれらがどのように接続されるか)が学習され、更に分割ノードの各々において使用される分割機能も学習される。加えて、訓練の間にリーフ・ノードにデーターが蓄積される。
【0017】
[0016] 分割機能は、ランダムに生成することができ、
図1のオプション122を含むことができる。各分割ノードにおいて判断が行われるプロセスにおいて、データー(画像の画像エレメント等)を、ランダム判断フォーレストのツリーを介して、ルートからリーフにプッシュすることができる。判断は、画像エレメントの特性、および分割ノードに関連する分割機能にしたがって行うことができる。画像エレメントは、判断の結果にしたがって選択されたブランチを下って、ツリーの次のレベルに進む。
【0018】
[0017] ツリー分割機能セレクター116は、判断ツリーの特定の分割ノードにおいて使用する分割機能を選択する。選択を行うために、サンプル110が使用される。サンプル110は、訓練データー例である。例えば、訓練データー例は、特定のクラスに属することが標識された画像エレメントとすることができ、あるいは他の標識された訓練データーまたは標識されない訓練データーでもよい。採点ロジック106は、サンプル110を使用して、異なる分割機能オプション122に対する点数を計算する。レーシング・ロジック108は、選択プロセスを高速化するために使用することができる。これについては、
図3、
図4、
図7、および
図8を参照して以下で更に詳しく説明する。リソース104は、採点ロジックおよびレーシング・ロジックによって使用される計算リソースとすることができる。リソース104は、モデル・セレクターによって選択されたツリー分割機能を使用する下流側計算プロセスによって使用される計算リソースとすることができる。
【0019】
[0018]
図1を参照して説明した例では、採点ロジック106は、オプション100の各々に対して点数を評価するために使用される。例えば、点数は、平均、中央値、モード、または他の統計というような、オプションの挙動を記述する統計に基づくことができる。種々の例において、点数は、有界差統計(bounded difference statistic)である統計に基づく。有界差統計とは、挙動の複数の観察(サンプル)からのエンティティ(
図1の例におけるオプション等)の挙動を記述する数値であり、複数の観察の内1つだけが変化した場合、その数値を少しだけしか変化させない。ある例では、観察を変化させることは、その観察を省略することによって行うこともできる。有界差統計の例の非網羅的リストには、分散、エントロピー、情報利得(information gain)、ジニ指数(gini index)がある。
【0020】
[0019]
図2は、情報利得の訓練例の数に対するグラフである。情報利得は、有界差統計の一例であり、訓練例を受けるに連れて、採点ロジックによって測定することができる。
図2の例では、特徴Aおよび特徴Bという2つのオプションがある。しかし、実際には、もっと多いオプションがある場合もあり得る(2つが示されるのは明確さのためである)。特徴Aに対する情報利得点数が実線としてプロットされ、特徴Bに対する情報利得点数が点線としてプロットされている。オプション・セレクターが
図1の特徴セレクター114であり、情報利得が最も高い特徴を発見する必要があると仮定する。最初にサンプルが受けられるとき、少数のサンプルしか入手できないので、情報利得点数はノイズが多い。一旦500よりも多いサンプルが受けられたなら、情報利得点数は静定し、特徴AおよびBに対して明確に分けられ、特徴Bの方が高い情報利得点数を有する。特徴セレクター114は、特徴Aまたは特徴Bのどちらが、最適点において、最も高い情報利得点数を有するかに関して判断を行うように設計される。即ち、指定された誤差許容範囲内で精度が高い答えを与えるのに丁度十分な訓練例が受けられた後である。これは、特徴選択プロセス自体、および特徴選択結果を使用する下流側プロセスの双方にとって適切に計算リソースを割り当てることを可能にする。
【0021】
[0020] 特徴セレクター114は、レーシング・ロジック108を有することができる。レーシング・ロジック108は、情報利得点数(または、他の有界差統計の点数)に対して信頼区間としても知られるエラー・バーを計算する。信頼区間とは、指定された精度で採点の可能な値を表す数値の範囲である。
図2では、訓練サンプルの数が500未満でしかないときにおける特徴Aの情報利得点数について、信頼区間200が示されている。訓練例の数が500を超えると、特徴Aの点数に対する信頼区間206はもっと狭い範囲を有することになる。何故なら、情報利得について確信度が高くなるからである。同様に、特徴Bの点数に対する信頼区間202は、訓練例の数が約500のときに大きく、訓練例の数が増加するに連れて小さくなる信頼区間204となる。レーシング・ロジックは、信頼区間を使用して、指定された誤差許容範囲内の精度であるオプション選択を与えるのに十分な訓練例が受けられたか否か判断することができる。例えば、オプションの信頼区間が、最も高い採点オプションに対する信頼区間と重複しない場合、このオプションを拒否することができる。サンプルの数が増えるに連れて、増々多くのオプションがレースから拒絶されるので、オプションの数が徐々に減少する。これについて、
図3を参照してこれより説明する。
図3は、オプション・セレクターにおける方法の流れ図である。オプション・セレクターは、
図1のオプション・セレクター102、モデル・セレクター112、特徴セレクター114、またはツリー分割機能セレクター116の内いずれでもよい。
【0022】
[0021] オプション・セレクターは、レーシング・ロジックによって使用される誤差許容範囲を設定する(300)。この誤差許容範囲は、レーシング・ロジックが、設定された誤差許容範囲内の精度であるオプション選択を与えるのに十分な訓練例が受けられたか否か判断するときに、レーシング・ロジックによって使用される。誤差許容範囲は、ユーザー入力にしたがって設定することができ、予め構成しておくこともでき、または用途領域、利用可能な計算リソース、および他の要因にしたがって自動的に選択することもできる。
【0023】
[0022] オプション・セレクターは、可能なオプションを識別するリストまたは他の情報にアクセスし(302)、オプションの各々に対して1つ以上の訓練例を受ける(304)。例えば、オプションは、判断ツリー訓練プロセスからの、ランダムに生成される判断ツリー分割機能とすることができる。訓練例には、データー・ストア、データー・ストリーム、または他のソースからアクセスすることができる。オプション・セレクターは、採点ロジック106を使用して、受けた訓練例を使用してオプションの各々に対する点数を計算する(306)。例えば、点数は、前述したような有界差統計である。レーシング・ロジック108は、オプション毎の点数に対して信頼区間を計算する(308)ために使用される。レーシング・ロジック108は、信頼区間条件を満たすオプションを識別する。例えば、信頼区間が、最も高い点数を得たオプションの信頼区間と重複しないオプションが識別される。識別されたオプションは、ステップ302において、可能なオプションのリストから除外され(314)、1つのオプションだけが残るまで(312)または指定された数のオプションだけが残るまで、本プロセスを繰り返すことができる。
【0024】
[0023]
図4は、
図3の方法の一部の更に詳細な流れ図である。レーシング・ロジックは、オプション毎に点数の信頼区間を計算するプロセス(
図3のボックス308)の間に、
図4の方法を実行する。レーシング・ロジックは、これまでに計算されたオプション毎に点数の分散を推定する(400)。分散とは、量がどの位ばらつくかを記述する数値である。分散を推定する任意の適した方法を使用することができる。ある例では、分散のJack-Knife推定が使用される。これについては、以下で更に詳しく説明する。分散のJack-Knife推定は、サンプルの異なるものを順番に除去することによって、点数を複数回再計算することによって行われる。次いで、再計算された点数は、これらが互いにどの位ばらつくか評価することによって、分散を推定するために使用される。
【0025】
[0024] レーシング・ロジックは、オプションの内の1つに対して、そのオプションに対する点数に/から、定数に、推定した分散に誤差許容範囲で除算した2の対数を乗算した値の二乗根を乗算した結果を加算/減算して、信頼区間を計算する(402)。定数は、5/2の値または同様の値を取ることができる。
【0026】
[0025] 推定された分散は、前述のような、分散のjack-knife推定値とすることができ、任意の適した方法で計算することができる。オプションが、分類を実行するランダム判断ツリーにおける分割機能候補であり、点数が情報利得またはジニ利得(Gini gain)である例では、精度を維持しつつ計算時間を短縮するために、本文書において後に更に詳細に説明するように、分散のjack-knife推定値を計算することができる。
【0027】
[0026] ある例では、採点ロジックが、バイアスを発生させるプラグイン推定器を使用して点数を計算することが分かっている場合、レーシング・ロジックは、バイアスのために、計算された信頼間隔を調節することができる。しかしながら、バイアスに対する調節は任意のステップである。バイアス調節ステップが省略されるときも、相応しい作業結果が得られる。
【0028】
[0027] 更に形式的には、レーシング・ロジックは、以下のように、オプションの1つに対して信頼区間を計算することができる(402)。
[0028]
【0032】
[0030] これは、言葉では、サンプル数nの分散のJackknife分散推定値に補正値o(E(V
nJ))を加算し、誤差許容範囲δで2を除算した値の対数を乗算した値の平方根を5/2倍した値を、オプションの点数Zから減算した結果から、サンプル数nの分散のJackknife分散推定値に補正値o(E(V
nJ))を加算し、誤差許容範囲δで2を除算した値の対数を乗算した値の平方根を5/2倍した値を、オプションの点数Zに加算し、更にバイアス項を加算した結果までの範囲として、表現することができる。
【0033】
[0031] 実際には、分散のJack-Knife推定値の収束は極めて速く、補正項o(E(V
nJ))はレーシング・ロジックによって省略されてもよいことが分かっている。
[0032] レーシング・ロジックは、例えば、ビン・カウントのヒストグラムを使用して点数を計算する場合のように、有界差統計に基づく点数に対して、この形式の信頼区間を計算するために使用することもできる。これは、レーシング・ロジックが多くの形式の点数に対して有効な結果(working result)を与えることを可能にし、以前に可能であったよりも更に遙かに広い範囲の機械学習用途がレーシング・ロジックを使用することを可能にする。誤差許容範囲のサイズを増大または縮小することによって、計算時間に対して、結果の保証される精度レベルの折り合いを付けることができる。
【0034】
[0033] レーシング・ロジックは、例えば、エントロピー推定器、情報利得推定器、ジニ指数推定器のような、プラグイン推定器を使用して、採点ロジックによって点数が計算される場合に、前述のように、バイアス補正を信頼区間に適用するように構成することもできる。
【0035】
[0034] 点数が情報利得に関係する場合、バイアスは以下の式で示されることが分かっている。
[0035]
【0037】
[0036] これは、言葉では、情報利得を計算するために使用したヒストグラムのビンの数から1を減算して2倍した値のサンプル数に対する比率と表現することができる。
[0037] 点数がジニ指数に関係する場合、バイアスは次の式で与えられることが分かっている。
【0040】
[0039] これは、言葉では、ジニ指数を計算するために使用したヒストグラムのビンの数から1を減算して2倍した値の、サンプル数にヒストグラム・ビン数を乗算した値に対する比率と表現することができる。
【0041】
[0040] 点数が分散利得である場合、バイアス項は不要であることが分かっている。
[0041] 前述のように、分散のJack-Knife推定は、サンプルの異なるものを順番に除去することによって、点数を複数回再計算することによって行われる(除外推定と呼ぶ)。次いで、再計算された点数は、これらが互いにどのようにばらつくか評価することによって、分散を推定するために使用される。
【0042】
[0042] 点数が情報利得である場合、この点数の分散のJack-Knife推定値は、次のように、レーシング・ロジックによって計算することができる。
[0043]
【0044】
[0044] ここで、加算は、h
jb>0となった項で終了する(over terms)。分散は、加重オンライン更新を使用して計算することができる。h
jbは、ブランチbおよびビンjにおけるヒストグラム・カウントである。これは整数であり、0以上でサンプルの総数n以下の数である。
【0045】
[0045] 上の式は、言葉では、分割ノードに達するn個の訓練サンプルに対する情報利得プラグイン推定値の分散のJack-Knife推定値は、訓練サンプル数から1を減算した値を訓練サンプル数で除算し、これに分割ノードの左および右子ノードにわたる和を乗算し、更にビンjおよびブランチbにおけるヒストグラム・カウントの全てのヒストグラム・ビンにわたる和に、1つのサンプルがブランチbおよびビンjから除去されたときの情報利得のプラグイン推定値から情報利得の経験的平均を減算した差の二乗を乗算した結果を乗算した値に等しいと表現することができる。ここで、情報利得の経験的平均は、シンボルIバーで表され、次の式によって与えられる。
【0048】
[0047] これは、言葉では、情報利得の経験的平均は、ヒストグラム・ビン数の2倍で1を除算し、ブランチbおよびビンjにおける1つのサンプルを除去して、情報利得のプラグイン推定値の全てのヒストグラム・ビンにわたる和の左および右子ノードにわたる和を乗算した値に等しいと表現することができる。
【0049】
[0048] スコアがジニ利得である場合、点数の分散のJack-Knife推定値は、最初に以下のようにジニ利得の経験的平均を計算することによって、レーシング・ロジックによって計算することができる。
【0052】
[0050] これは、言葉では、ジニ利得の経験的平均は、ヒストグラム・ビンの数の2倍で1を除算し、ジニ利得のプラグイン推定値の全てのヒストグラム・ビンにわたる和の左および右子ノードにわたる和を乗算した値に等しいと表現することができる。
【0053】
[0051] 一旦経験的平均が計算されたなら、レーシング・ロジックは次の計算を行うことができる。
[0052]
【0055】
[0053] ここで、加算は、h
jb>0となった項で終了する。
[0054] 上の式は、言葉では、分割ノードに達するn個の訓練サンプルに対するジニ利得プラグイン推定値の分散のJack-Knife推定値は、訓練サンプル数から1を減算した値を訓練サンプル数で除算し、これに分割ノードの左および右子ノードにわたる和を乗算し、更にビンjおよびブランチbにおけるヒストグラム・カウントの全てのヒストグラム・ビンにわたる和に、1つのサンプルがブランチbおよびビンjから除去されたときのジニ利得のプラグイン推定値からジニ利得の経験的平均を減算した差の二乗を乗算した結果を乗算した値に等しいと表現することができる。
【0056】
[0055] これより、オプション・セレクターが、ゲームを制御するための機械学習システムにおける判断ツリー訓練のための判断ツリー分割機能セレクターとして使用される一例について説明する。判断ツリーは、機械学習タスクに依存して、回帰(regression)または分類タスクのいずれかのためにオプション・セレクターを使用して訓練することができる。
【0057】
[0056]
図5は、コンピューター・ゲームを制御するためのカメラ・ベース制御システムの一例500を示す。
図5は、この図示例では、ボクシング・ゲームをプレーするユーザー502を示す。ある例では、カメラ・ベース制御システム500は、とりわけ、体の姿勢を判定し、人間のターゲットを結び付け、認識し、分析し、追跡し、関連付け、フィードバックを共有し、ジェスチャーを解釈し、および/またはユーザー502のような人間のターゲットの諸相に適応するために使用することができる。
【0058】
[0057] カメラ・ベース制御システム500は、計算デバイス504を含む。計算デバイス504は、汎用コンピューター、ゲーミング・システムまたはコンソール、あるいは専用画像処理デバイスとすることができる。計算デバイス504は、ゲーミング・アプリケーションおよび/またはゲーミング以外のアプリケーションのようなアプリケーションを実行するために計算デバイス504を使用することができるように、ハードウェア・コンポーネントおよび/またはソフトウェア・コンポーネントを含むことができる。計算デバイス504の構造については、以下で
図11を参照しながら説明する。
【0059】
[0058] カメラ・ベース制御システム500は、更に、キャプチャー・デバイス506も含む。キャプチャー・デバイス506は、例えば、画像センサーまたは検出器とすることができ、以下で更に詳しく説明するように、ゲームまたはアプリケーション内において1つ以上の制御またはアクションを実行するために1人以上のユーザーによって行われるジェスチャーをキャプチャーし、分析し、処理し、追跡することができるように、1人以上のユーザー(ユーザー502等)を視覚的に監視するために使用することができる。
【0060】
[0059] カメラ・ベース制御システム500は、更に、計算デバイス504に接続されたディスプレイ・デバイス508も含むことができる。計算デバイスは、ゲームまたはアプリケーションの映像(および、任意に音声)をユーザー502に供給することができる、テレビジョン、モニター、高品位テレビジョン(HDTV)等とすることができる。
【0061】
[0060] 動作において、計算デバイス504によって実行されるアプリケーションに作用させるために使用することができる制御手段として、ユーザー502の関節位置、動き、およびサイズを計算デバイス504(および/またはキャプチャー・デバイス506)によって解釈することができるように、キャプチャー・デバイス506を使用してユーザー502を追跡することができる。その結果、ユーザー502は実行されているゲームまたはアプリケーションを制御するために彼または彼女の体を動かすことができる。
【0062】
[0061]
図5の図示例では、計算デバイス504において実行しているアプリケーションは、ユーザー502がプレーしているボクシング・ゲームである。この例では、計算デバイス504は、ボクシングの対戦相手の視覚表現をユーザー502に供給するために、ディスプレイ・デバイス508を制御する。また、計算デバイス504は、ユーザー502が彼または彼女の動きで制御することができるユーザー・アバターの視覚表現を供給するためにも、ディスプレイ・デバイス508を制御する。例えば、ユーザー502は、ユーザー・アバターにゲーム空間においてパンチを打たせるために、物理空間においてパンチを打つことができる。このように、この例によれば、カメラ・ベース制御システム500の計算デバイス504およびキャプチャー・デバイス506は、パンチがゲーム空間におけるユーザー・アバターのゲーム制御として解釈できるように、物理空間におけるユーザー502のパンチを認識し分析するために使用することができる。
【0063】
[0062] 更に、ある動きは、アバターを制御する以外のアクションに対応する制御として解釈することができる。例えば、ユーザーは、入る、出る、システムをオンまたはオフに切り替える、一時停止する、ゲームを保存する、レベル、プロファイル、またはメニューを選択する、高得点を見る、友人と通信する等のために、動きを使用することができる。加えて、ユーザー502の動きは、ゲーム以外のアプリケーションと相互作用するために、例えば、テキストを入力する、アイコンまたはメニュー項目を選択する、メディア再生を制御する、ウェブサイトをブラウズする、あるいはオペレーティング・システムまたはアプリケーションの任意の他の制御可能な形態(aspect)を動作させるために、任意の適した態様で使用し分析することができる。
【0064】
[0063] これより
図6を参照すると、
図5のカメラ・ベース制御システム500において使用することができるキャプチャー・デバイス506の模式図が示されている。
図6の例では、キャプチャー・デバイス506は、深度情報を有するビデオ画像をキャプチャーするように構成される。このようなキャプチャー・デバイスを深度カメラと呼ぶことができる。深度情報は、深度値、即ち、深度画像の各画像エレメントに関連する値を含む深度画像の形態とすることができる。深度値は、深度カメラとその画像エレメントにおいて突き止められた品目または物体との間の距離に関係する。
【0065】
[0064] 深度情報は、例えば、飛行時間、構造化光、ステレオ画像等を含む任意の適した技法を使用して得ることができる。ある例では、キャプチャー・デバイス506は深度情報を「Zレイヤ」、即ち、深度カメラからその見通し線に沿って延びるZ−軸に垂直であることができるレイヤに編成することができる。
【0066】
[0065]
図6に示すように、キャプチャー・デバイス506は少なくとも1つの撮像センサー600を含む。
図6に示す例では、撮像センサー600は、場面の深度画像をキャプチャーするように配置された深度カメラ602を含む。キャプチャーされた深度画像は、キャプチャーされた場面の二次元(2−D)エリアを含むことができ、この2−Dエリアにおける各画像エレメントは、深度カメラ602からキャプチャーされた場面内における物体の長さまたは距離というような、深度値を表す。
【0067】
[0066] また、キャプチャー・デバイスは、深度カメラ602によって深度情報を確認できるようなやり方で、場面を照明するように配置された発光器604も含むことができる。例えば、深度カメラ602が赤外線(IR)飛行時間カメラである場合、発光器604はIR光を場面に放出し、深度カメラ602は、場面における1つ以上のターゲットまたは物体の表面からの後方散乱光を検出するように配置される。ある例では、パルス状の赤外線光を発光器604から放出することができ、出立光パルスと対応する入来光パルスとの間の時間を深度カメラによって検出し、測定して、キャプチャー・デバイス506から場面内におけるターゲットまたは物体上のある位置までの物理距離を判定するために使用することができる。加えて、ある例では、発光器604からの出立光波の位相を、深度カメラ602における入来光波の位相と比較して、位相のずれを判定することができる。次いで、この位相のずれは、キャプチャー・デバイス506からターゲットまたは物体上のある位置までの物理距離を判定するために使用することができる。更に他の例では、飛行時間分析を使用して、経時的な光の反射ビームの強度を、例えば、光パルス・シャッター撮像(shuttered light pulse imaging)を含む種々の技法によって分析することによって、キャプチャー・デバイス506からターゲットまたは物体上のある位置までの物理距離を間接的に判定することもできる。
【0068】
[0067] 他の例では、キャプチャー・デバイス506は構造化光を使用して深度情報をキャプチャーすることができる。このような技法では、発光器604を使用して、パターン化光(例えば、格子パターンまたは縞パターンのような既知のパターンとして表示される光)を場面に投射することができる。場面における1つ以上のターゲットまたは物体の表面に衝突すると、パターンは変形される。パターンのこのような変形を深度カメラ602によってキャプチャーし、次いで分析して、キャプチャー・デバイス506から場面におけるターゲットまたは物体上のある位置までの物理距離を判定することができる。
【0069】
[0068] 他の例では、深度カメラ602は、2つ以上の物理的に離別されたカメラという形態を取ることもでき、視覚的立体視データーが得られるように、異なる角度から1つの場面を映像化し(view)、このデーターを解明すると深度情報を生成することができる。この場合、発光器604は、場面を照明するために使用することができ、または省略することもできる。
【0070】
[0069] ある例では、深度カメラ602に加えて、キャプチャー・デバイス506506は、通常のビデオ・カメラも含むことができる。これをRGBカメラ606と呼ぶ。RGBカメラ606は、可視光周波数において場面の画像のシーケンスをキャプチャーするように構成され、したがって深度画像を拡張するために使用することができる画像を供給することができる。代替例では、RGBカメラ606を深度カメラ602の代わりに使用することができる。
【0071】
[0070] 更に、
図6に示すキャプチャー・デバイス506は、少なくとも1つのプロセッサー608を含む。プロセッサー608は、撮像センサー600(即ち、
図6の例では深度カメラ602およびRGBカメラ606)および発光器604と通信可能である。プロセッサー608は、汎用マイクロプロセッサー、または特殊信号/画像プロセッサーとすることができる。プロセッサー608は、深度画像および/またはRGB画像をキャプチャーするために、撮像センサー600および発光器604を制御する命令を実行するように構成される。また、プロセッサー608は、任意に、これらの画像に対して処理を実行するように構成することもできる。これについては、以下で更に詳しく概説する。
【0072】
[0071] ある例では、撮像センサーは、シルエット画像を供給するために使用される。シルエット画像とは、撮像センサーによってキャプチャーされた深度および/またはRGB画像の前景および背景領域を識別する二次元二進画像である。シルエット画像は、キャプチャーされた深度およびRGB画像から、撮像センサーおよび/またはプロセッサー608において形成することができる。シルエット画像は、本明細書において説明する方法を使用して、二次元の関節位置を予測するために処理することもできる。この場合、シルエット画像は、固定深度に平面化された(flatten)深度画像と考えることができる。キャプチャーされた深度画像は、以下で更に詳しく説明するように、三次元の関節位置を予測するために使用することもできる。
【0073】
[0072] 更に、
図6に示すキャプチャー・デバイス506は、プロセッサー608による実行のための命令、深度カメラ602またはRGBカメラ606によってキャプチャーされた画像または画像のフレーム、あるいは任意の他の適した情報、画像等を格納するように構成されたメモリー610も含む。ある例では、メモリー610は、ランダム・アクセス・メモリー(RAM)、リード・オンリー・メモリー(ROM)、キャッシュ、フラッシュ・メモリー、ハード・ディスク、または任意の他の適した記憶コンポーネントを含むことができる。メモリー610は、プロセッサー608と通信可能な別のコンポーネントであること、またはプロセッサー608に統合することができる。
【0074】
[0073] また、キャプチャー・デバイス506は、プロセッサー608と通信可能である出力インターフェース612も含み、通信リンクを介してデーターを計算デバイス604に供給するように構成される。通信リンクは、例えば、有線接続(USB、Firewire、Ethernet(登録商標)、または同様のもの)および/またはワイヤレス接続(WiFi、Bluetooth(登録商標)、または同様のもの)とすることができる。他の例では、出力インターフェース612は、1つ以上の通信ネットワーク(インターネット等)とインターフェースし、これらのネットワークを介してデーターを計算デバイス504に供給することができる。
【0075】
[0074]
図7は、1人以上の人間または動物、あるいは人間または動物の一部を描画する入力深度画像708において、関節位置を予測する流れ図である。関節位置を指定した深度画像とすることができる複数の訓練画像700が入手可能である。これらの画像は、二次元、三次元、またはそれよりも高次元の画像、またはそのような画像のシーケンスであってもよい。本明細書において説明する例は、深度画像を使用するが、カラー画像、医療画像、または他のタイプの画像にも応用可能である。
【0076】
[0075] ランダム判断フォーレストは、訓練画像700の画像エレメントが、これらの画像において描画された1つ以上の関節の位置に投票することを可能にするように訓練される(702)。この訓練プロセスは、精度を維持しつつ訓練を高速化するために、
図1を参照して先に説明したツリー分割機能セレクターを使用することを含むことができる。この訓練プロセスの結果、ツリー分割機能セレクターを使用して訓練されたランダム判断フォーレスト704が得られる。
【0077】
[0076] 画像エレメントは、画素、画素のグループ、ボクセル、ボクセルのグループ、ブロブ(blob)、パッチ(patch)、または画像の他の成分であってもよい。ランダム判断フォーレストは、各々ルート・ノードを有する1つ以上の判断ツリーと、複数の分割ノードと、複数のリーフ・ノードとを含む。1つの画像の画像エレメントは、各分割ノードにおいて判断が行われるプロセスにおいて押し込まれ、ルートからリーフ・ノードまで、ランダム判断フォーレストのツリーを通過することができる。判断は、画像エレメントの特性、および分割ノードにおいてパラメーターによって指定される空間オフセットだけ変位された検査画像エレメントの特性にしたがって行われる。判断プロセスは、分割機能を使用して表現することができる。分割ノードにおいて、画像エレメントは、判断の結果にしたがって選択されたブランチを下り、ツリーの次のレベルに進む。ランダム判断フォーレストは、以下で更に詳しく説明するように、回帰または分類を使用することができる。訓練の間、パラメーター値(特徴とも呼ばれる)は、分割ノードにおける使用のために学習され、データーはリーフ・ノードに蓄積される。パラメーターを学習するプロセスは、分割ノードにおける使用のために分割機能を選択することを含む。
図1を参照して説明したように、そして
図3および
図4のプロセスを使用して、この選択プロセスのために、オプション・セレクターを使用することもできる。
【0078】
[0077] 関節位置投票は、訓練の間、リーフ・ノードに蓄積することができる。間接位置投票は、投票を行った画像エレメントに対して関節があると予測される画像位置(または領域)である。関節位置投票は、任意の適したやり方で指定されればよい。例えば、投票を行った画像エレメントからの予測関節位置の相対的距離および方向を表現するベクトル。ベクトルを使用するのは必須ではなく、他のフォーマットを使用してもよい。
【0079】
[0078] 訓練の間リーフ・ノードに全ての関節位置投票を格納すると、実際の用途には大量の訓練データーが通例使用されるので、非常にメモリー集約的になる可能性がある。ある実施形態では、投票が簡潔に格納できるようにするために、投票が集計される。以下で更に詳しく説明するように、種々の異なる集計プロセスを使用することができる。
【0080】
[0079] 検査時に、以前に見られていない深度画像708がシステムに入力され、関節位置を予測させる。これは、予測関節位置701を得るために、訓練されたランダム判断フォーレスト706に加えられる(apply)。入力深度画像708の各画像エレメントは、訓練されたランダム判断フォーレストの各ツリー、およびリーフから得られた関節位置投票を通って送ることができる。このように、各画像エレメントを、学習された空間オフセットだけ変位された検査画像エレメントと比較することによって、投票を行うことができる。各画像エレメントは、関節毎に複数の投票を行うことができる。これらの投票は、予測関節位置710を与えるために、種々の異なる集計方法にしたがって、集計することができる。したがって、検査時間プロセスは、入力深度画像を訓練されたランダム判断フォーレストに適用して直接予測関節位置を得る一段階プロセスである。この一段階プロセスは、予測された体部分のような、中間結果を伴わない。この一段階プロセスは、リアル・タイムにそして高い品質結果で、結果を与えるために高速かつ効果的なやり方で実行することができる。
【0081】
[0080]
図8は、画像において関節位置を識別するために判断フォーレストを訓練するプロセスのフローチャートである。また、これは、1つの画像の画像エレメントから関節位置投票を生成すると考えることもできる。判断フォーレストは、1組の訓練画像を使用して訓練される。この1組の訓練画像は、各々、少なくとも1人の人間または動物、あるいは人間または動物の体の一部を示す、複数の画像を含む。訓練画像において描画された体または体部分は、種々の異なる姿勢(着座または起立等)になる。訓練画像における関節位置が指定される。したがって、1組の訓練画像(training set)はグラウンドトルース・データーベースを形成する。
【0082】
[0081] 一例では、体姿勢の多くの異なる例に対して深度画像をキャプチャーするのではなく、1組の訓練画像は合成コンピューター生成画像を含むことができる。このような合成画像は、異なる物体と相互作用する異なる姿勢の人間または動物の体(あるいは人間または動物の体の一部)を現実的にモデル化し、任意の角度または位置から見られるように生成することができる。これらは、実際の深度画像よりも遙かに素早く生成することができ、より広い多様な訓練画像を供給することができる。
【0083】
[0082]
図8を参照すると、判断ツリーを訓練するために、前述の1組の訓練画像を最初に受ける(800)。ランダム判断フォーレストにおいて使用する判断ツリーの数を選択する(802)。ランダム判断フォーレストは、決定論的判断ツリーの集合体である。判断ツリーは、分類または回帰アルゴリズムにおいて使用することができるが、過剰適合(over-fitting)、即ち、乏しい一般化という問題が生ずる可能性がある。しかしながら、多くのランダムに訓練された判断ツリーの集合(ランダム・フォーレスト)では、改良された一般化が得られる。訓練プロセスの間、ツリーの数は固定される。
【0084】
[0083] ランダム判断フォーレストの一例を
図9に示す。
図9の例示した判断フォーレストは、3本の判断ツリー、即ち、第1ツリー900、第2ツリー902、および第3ツリー904を含む。各判断ツリーは、ルート・ノード(例えば、第1判断ツリー900のルート・ノード906)、分割ノードと呼ばれる複数の内部ノード(例えば、第1判断ツリー900の分割ノード908)、および複数のリーフ・ノード(例えば、第1判断ツリー900のリーフ・ノード910)を含む。
【0085】
[0084] 動作において、各ツリーの各ルートおよび分割ノードは、入力データーに対して二進検査を実行し、その結果に基づいて、データーを左または右の子ノードに導く。リーフ・ノードは何のアクションも実行せず、これらは蓄積された関節位置投票(および任意に他の情報)を格納する。例えば、蓄積された関節位置投票を表す確率分布を格納することができる。ある例では、リーフ・ノードは、任意に、体部分にわたる確率分布のような他の情報を格納する。この場合、フォーレストは、関節位置を予測するための回帰フォーレストとして、そして表面体部分を予測するための分類フォーレストの双方として動作することができる。
【0086】
[0085] 分割ノードの各々によって使用されるパラメーターが選択されるやり方、およびどのようにリーフ・ノード確率を計算できるかについて、これより説明する。判断フォーレストから判断ツリーを選択し(804)(例えば、第1判断ツリー800)、ルート・ノード806を選択する(806)。次に、訓練画像の各々からの画像エレメントの少なくとも部分集合を選択する(808)。例えば、前景領域における画像エレメントが選択されるように、画像をセグメント化することができる。各訓練画像から選択された各画像エレメントは、複数の既知の関節位置と関連付けられる。例えば、胴体における画像エレメントは、左臀部の既知の関節位置、および右臀部の既知の関節位置と関連付けることができる。他の例では、胴体における画像エレメントが、画像における全ての既知の関節位置と関連付けられてもよい。
【0087】
[0086] 次いで、ランダムな1組の検査パラメーター(検査と併せて、ランダムな1組の分割機能を形成する)を、ルート・ノードにおいて実行される二進検査による使用のために、候補特徴として、生成する(810)。一例では、二進検査は、パラメーターyと共に画像エレメントxに適用される機能であり、この機能の出力が閾値と比較される。この検査の結果が閾値の間の範囲内にある場合、二進検査の結果は真となる。それ以外の場合、二進検査の結果は偽となる。他の例では、これらの閾値の内1つだけを使用し、結果が閾値よりも大きいときに(または代わりに小さいときに)二進検査の結果が真となるようにしてもよい。ここで説明した例では、パラメーターは画像の特徴を定めることができる。
【0088】
[0087] パラメーターを生成するプロセスは、二次元または三次元変位の形態でランダム空間オフセット値を生成することを含むことができる。次いで、画像における対象の画像エレメントxから空間オフセットだけ変位された検査画像エレメントに対する深度値を観察することによって、分割機能の結果を計算する。空間オフセットは、任意に、対象の画像エレメントの深度分の1でスケーリングすることによって、深度不変(depth invariant)にされる。閾値は、検査画像エレメントが関節位置にあるか否か判断するために使用することができる。
【0089】
[0088] ルート・ノードまたは分割ノードにおいて実行された二進(分割)検査の結果は、どの子ノードに画像エレメントを渡すか決定する。例えば、二進検査の結果が真である場合、画像エレメントは第1子ノードに渡され、一方結果が偽である場合、画像エレメントは第2子ノードに渡される。
【0090】
[0089] 生成されたランダムな1組の検査パラメーターは、分割機能パラメーターおよび閾値に対して複数のランダム値を含む。ランダム性を判断ツリーに注入するために、各分割ノードの機能パラメーターは、全ての可能なパラメーターからランダムにサンプリングされた部分集合のみにわたって最適化される。これは、ランダム性をツリーに注入する効果的で簡単な方法であり、一般化を高める。
【0091】
[0090] ランダムに生成された分割機能の内どれを所与の分割ノードにおいて使用するか選択するために、ツリー分割機能セレクターを使用することができる(814)。これは、訓練プロセスを高速化する。何故なら、これらの検査パラメーターのあらゆる組み合わせを1組の訓練画像における各画像エレメントに適用することはもはや必要でないからである。これは、
図3および
図4を参照して先に説明したように、計算された信頼区間にしたがって、レーシング・ロジックは分割機能オプションを省略することができるからである。このように、誤差許容範囲値を使用して、指定された量に精度を維持しつつ、訓練時間を大幅に短縮することができる。
【0092】
[0091] 採点ロジックは、点数を計算する。点数は、判断基準(criteria)または目的(objective)とも呼ばれる。一例では、計算された点数は、情報利得(相対エントロピーとしても知られる)を含む。他の例では、計算された点数はジニ利得を含む。点数を最適化する(情報利得を最大化する等)分割機能を選択し(814)、今後使用するために、現在のノードに格納する。情報利得の代わりに、分散、または他の有界差統計というような、他の判断基準を使用することができる。
【0093】
[0092] 次いで、計算された点数の値が閾値未満(または閾値よりも大きい)か否か判定する(816)。計算された点数の値が閾値未満である場合、これは、ツリーをこれ以上拡張しても大した利益は得られないことを示す。これは、非対称的なツリーを生じ、それ以上のノードに利益がない場合、当然成長を停止する。このような場合、現在のノードをリーフ・ノードとして設定する(818)。同様に、ツリーの現在の深度を判定する(即ち、ルート・ノードと現在のノードとの間にどの位のレベルのノードがあるか)。これが所定の最大値よりも大きい場合、現在のノードをリーフ・ノードとして設定する(818)。各リーフ・ノードは、以下で説明するように、訓練プロセスの間にそのリーフ・ノードに蓄積した関節位置投票を有する。
【0094】
[0093] また、他の停止判断基準を、これら既に述べたものと組み合わせて、使用することも可能である。例えば、リーフに到達した画像エレメント例の数を評価するためである。例の数が少なすぎる場合(例えば、閾値と比較して)、本プロセスは、過剰適合を回避するために、停止するように構成してもよい。しかしながら、この停止判断基準を使用することは必須ではない。
【0095】
[0094] 計算された判断基準の値が閾値以上であり、ツリー深度が最大値未満である場合、現在のノードを分割ノードとして設定する(820)。現在のノードが分割ノードであるので、これは子ノードを有し、したがって、本プロセスはこれら子ノードの訓練に移る。各子ノードは、現在のノードにおいて訓練画像エレメントの部分集合を使用して訓練される。子ノードに送られる画像エレメントの部分集合は、判断基準を最適化したパラメーターを使用して決定される。これらのパラメーターは、二進検査において使用され、この二進検査は、現在のノードにおいて全ての画像エレメントに対して実行される(822)。二進検査で合格した画像エレメントは、第1子ノードに送られる第1部分集合を形成し、二進検査で失格した画像エレメントは、第2子ノードに送られる第2部分集合を形成する。
【0096】
[0095] 子ノードの各々に対して、
図8のブロック810から822において概要を説明したプロセスを、それぞれの子ノードに導かれた画像エレメントの部分集合のために繰り返し実行する(824)。言い換えると、子ノード毎に、新たなランダム検査パラメーターを生成し(810)、画像エレメントのそれぞれの部分集合に適用し(812)、判断基準を最適化するパラメーターを選択し(814)、ノードのタイプ(分割またはリーフ)を判断する(816)。リーフ・ノードである場合、現在のブランチの繰り返しは中止する。分割ノードである場合、画像エレメントの更に他の部分集合を決定するために二進検査を実行し(822)、繰り返しの他のブランチが開始する。したがって、このプロセスはツリー全域にわたって繰り返し移動し、リーフ・ノードが各ブランチに到達するまで、各ノードを訓練する。リーフ・ノードに到達すると、全てのブランチにおけるノードが訓練され終えるまで、プロセスは待機する(826)。尚、他の例では、繰り返しに代わりの技法を使用して同じ機能を達成することができる。
【0097】
[0096] 一旦各分割ノードにおいて判断基準を最適化する、二進検査に対するパラメーターを決定するためにツリーにおける全てのノードを訓練し、各ブランチを終了するためにリーフ・ノードを選択したなら、ツリーのリーフ・ノードにおいて投票を蓄積する(828)ことができる。これは、訓練段階であり、したがって、所与のリーフ・ノードに到達した特定の画像エレメントは、グラウンドトルース訓練データーから分かる相対関節位置投票を指定したことになる。種々の異なる方法を使用して、蓄積された投票の表現を格納することができる(830)。任意に、低いメモリー・フットプリントを維持するために、蓄積および格納される投票を選ぶのにサンプリングを使用してもよい。例えば、リソーバ・サンプリング(reservoir sampling)を使用することにより、固定された最大サイズの投票のサンプルを取り込むことができる。選択は、ランダムでも、任意の他のやり方でもよい。
【0098】
[0097] 一旦蓄積された投票が格納されたなら、判断フォーレストの中に未だ他のツリーがあるか否か判定を行う(832)。ある場合、判断フォーレストにおいて次のツリーを選択し、本プロセスを繰り返す。フォーレストにおける全てのツリーが訓練され、他に残っていない場合、訓練プロセスは完了し、本プロセスは終了する(834)。
【0099】
[0098] したがって、訓練プロセスの結果、合成訓練画像または経験的訓練画像を使用して、1つ以上の判断ツリーが訓練される。各ツリーは、最適化された検査パラメーターを格納する複数の分割ノードと、関連する関節位置投票または集計した関節位置投票の表現を格納するリーフ・ノードとを含む。各ノードにおいて使用される制限された部分集合からパラメーターをランダムに生成するために、フォーレストのツリーは互いに別個になる(即ち、異なる)。
【0100】
[0099] 訓練プロセスは、実際の深度画像において関節位置を識別するために、訓練された予測システムを使用する前に実行することもできる。判断フォーレストおよび最適化検査パラメーターは、後の時点で深度画像における関節位置を識別するときに使用するために、記憶デバイスに格納することができる。
【0101】
[00100]
図10は、以上で説明したように訓練された判断フォーレストを使用して、以前に見られていない深度画像において関節位置を予測するプロセスのフローチャートを示す。最初に、見られていない深度画像を受ける(1000)。関節位置が既に指定されている訓練画像から区別するために、画像を「見られていない」と呼ぶ。尚、例えば、前景領域を識別する範囲で、見られていない深度画像を前処理することができ、これによって、判断フォーレストによって処理される画像エレメントの数が減少することを注記しておく。しかしながら、前景領域を識別するための前処理は必須ではない。ある例では、見られていない深度画像は、先に説明したような、深度画像が事実上固定深度に平面化されたシルエット画像である。
【0102】
[00101] 見られていない画像から画像エレメントを選択する(1002)。また、判断フォーレストから、訓練された判断ツリーも選択する(1004)。選択された画像エレメントが、ノードにおいて訓練されたパラメーターに対して検査されるように、これを選択された判断ツリーに押し込み(1006)、次いで検査の結果に依存して該当する子に渡し、画像エレメントがリーフ・ノードに到達するまで、本プロセスを繰り返す。一旦画像エレメントがリーフ・ノードに到達したなら、このリーフ・ノードに関連する蓄積投票(訓練段階から)を、この画像エレメントに対して格納する(1008)。
【0103】
[00102] フォーレストに未だ他に判断ツリーがあると判断した場合(1010)、次ぎに新たな判断ツリーを選択し(1004)、画像エレメントをこのツリーに押し込み(1006)、蓄積された投票を格納する(1008)。フォーレストにおける全ての判断ツリーに対して実行するまで、これを繰り返す。尚、判断フォーレストにおける複数のツリーに画像エレメントを押し込むプロセスは、
図10に示すシーケンスの代わりに、並列に実行することもできることを注記しておく。
【0104】
[00103] 次いで、見られていない深度画像には他にも分析されていない画像エレメントがあるか否か判定し(1012)、ある場合、他の画像エレメントを選択し、本プロセスを繰り返す。一旦見られていない画像における全ての画像エレメントを分析したなら、次に、全ての画像エレメントに対して関節位置投票を得る。
【0105】
[00104] 判断フォーレストにおいて画像エレメントがツリーに押し込まれるに連れて、投票が蓄積する。この蓄積された投票を集計し(1014)、画像エレメント毎に総合的投票集計を形成する。任意に、投票のサンプルを集計のために取り出してもよい。例えば、N個の投票を無差別に選択してもよく、または上位N個の加重投票を取り出すことにより、集計プロセスをこれらN個の投票のみに適用してもよい。これによって、速度に対して精度の折り合いを付けることが可能になる。
【0106】
[00105] 次いで、少なくとも1組の関節位置を出力する(1016)ことができる。ここで、関節位置に信頼度を重み付けすることもできる。これは、あらゆる後続の追跡アルゴリズム(または他のプロセス)が、提案が良いか否か評価するときに役立つ。例えば、不確実性がある場合には、1組よりも多い関節位置を出力することもできる。また、1組の関節位置が、1つ以上の関節に対してヌルを含んでもよい。例えば、関節位置が撮像センサーの視野の外側にある場合、および/または関節位置に投票する画像エレメントがない場合である。
【0107】
[00106]
図11は、任意の形態の計算デバイスおよび/または電子デバイスとして実現することができ、機械学習システムの実施形態を実現できる、計算ベース・デバイスの一例504の種々のコンポーネントを示す。この例では、計算ベース・デバイス504は、例えば、人間の体の動きを使用してゲームを制御するために、深度画像から関節位置予測(または他のタスク)のためにランダム判断ツリーを訓練するように構成される。しかしながら、これは必須ではない。複数の不確実なオプションから1つのオプションを選択することを伴う他の機械学習用途も提供することができる。
【0108】
[00107] 計算ベース・デバイス504は、1つ以上のプロセッサー1100を含む。プロセッサー1100は、マイクロプロセッサー、コントローラー、あるいは、例えば、関節位置予測または他のタスクのためにランダム判断フォーレストを訓練するように機械学習システムを動作させるためにデバイスの動作を制御するコンピューター実行可能命令を処理する任意の他の適したタイプのプロセッサーでもよい。ある例では、例えば、チップ上システム・アーキテクチャが使用される場合、プロセッサー1100は、
図1、
図3、
図4、
図7、
図8、および
図10の内任意のものの方法の一部をハードウェア(ソフトウェアやファームウェアではなく)で実現する、1つ以上の固定機能ブロック(アクセレレーターとも呼ぶ)を含むこともできる。アプリケーション・ソフトウェア1116をデバイス上で実行することを可能にするために、オペレーティング・システム1114または任意の他の適したプラットフォーム・ソフトウェアを含むプラットフォーム・ソフトウェアを、計算ベース・デバイスに設けることもできる。ツリー訓練ロジック1118は、
図7および
図8のプロセスの少なくとも一部を使用して1つ以上のランダム判断ツリーを訓練するために、設けることができる。
図1のオプション・セレクター、モデル・セレクター、特徴セレクター、およびツリー分割機能セレクターの内任意のものでよいオプション・セレクター1124も設けることができる。データー・ストア1122は、誤差許容範囲値、訓練されたランダム判断ツリー、訓練例、選択されたオプション、および他のデーターを格納することができる。計算ベース・デバイスが、深度画像または他の画像から関節位置検出を実行するように構成される場合、関節位置予測ロジック1120が設けられる。関節位置予測ロジック1120は、
図10の方法の少なくとも一部を実現することができる。
【0109】
[00108] 計算ベース・デバイス504によってアクセス可能な任意のコンピューター読み取り可能媒体を使用して、コンピューター実行可能命令を設けることができる。コンピューター読み取り可能媒体は、例えば、メモリー1112のようなコンピューター記憶媒体、および通信媒体を含むことができる。メモリー1112のようなコンピューター記憶媒体は、揮発性および不揮発性の、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような情報の格納のための任意の方法または技術で実現される。コンピューター記憶媒体は、RAM、ROM、EPROM、EEPROM、フラッシュ・メモリーまたは他のメモリー技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、あるいは計算デバイスによるアクセスのために情報を格納するために使用することができる任意の他の非伝送媒体(non-transmission medium)を含むが、これらに限定されるのではない。対照的に、通信媒体は、搬送波のような変調データー信号、または他の移送メカニズムに、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターを具体化することができる。本明細書において定められるように、コンピューター記憶媒体は通信媒体を含まない。したがって、コンピューター記憶媒体は、それ自体が伝搬信号であると解釈してはならない。伝搬信号がコンピューター記憶媒体内に存在することもあるが、伝搬信号自体はコンピューター記憶媒体の例ではない。コンピューター記憶媒体(メモリー1112)は計算ベース・デバイス504内部に示されているが、ストレージは分散されてもよく、または離れて配置されてもよく、ネットワークまたは他の通信リンクを介してアクセスされてもよい(例えば、通信インターフェース1113を使用して)ことは認められよう。
【0110】
[00109] また、計算ベース・デバイス504は、入力インターフェース1102、および表示情報をディスプレイ・デバイス508に出力するように構成された出力インターフェース1110も含む。ディスプレイ・デバイス508は、計算ベース・デバイス504と離れた形態でも、一体でもよい。表示情報が、グラフィカル・ユーザー・インターフェースを設けることもできる。また、入力インターフェース1102は、ユーザー入力デバイス(例えば、マウス1108、キーボード1106、ゲーム・コントローラー1104、カメラ506、マイクロフォン、または他のセンサー)のような1つ以上のデバイスからの入力を受けて処理するように構成される。ある例では、入力インターフェース1102が、音声入力、ユーザーのジェスチャー、または他のユーザーの行動を検出することもでき、自然ユーザー・インターフェース(NUI)を設けることもできる。このユーザー入力は、ゲームまたは他のアプリケーションを制御するために使用することもできる。一実施形態では、ディスプレイ・デバイス508がタッチ感応ディスプレイ・デバイスである場合、ユーザー入力デバイスとしても作用することができる。また、出力インターフェース1110は、ディスプレイ・デバイス以外のデバイス、例えば、ローカルに接続された印刷デバイスにもデーターを出力することができる。
【0111】
[00110] 入力インターフェース1102、出力インターフェース1110、および任意にユーザー入力デバイス(ゲーム・コントローラー1104、キーボード1106、マウス1108、キャプチャー・デバイス506)は、NUI技術を含むこともできる。NUI技術は、マウス、キーボード、リモコン等のような入力デバイスによって強いられる人工的な制約から解放され、自然なやり方でユーザーが計算ベース・デバイスと対話処理することを可能にする。提供することができるNUI技術の例には、音声(voice)および/または発話(speech)認識、タッチおよび/またはスタイラス認識(タッチ感応ディスプレイ)、画面上および画面付近の双方におけるジェスチャー認識、エア・ジェスチャー、頭部および眼球追跡、音声および発話、視覚(vision)、タッチ、ジェスチャー、および機械インテリジェンスに頼るものが含まれるが、これらに限定されるのではない。使用することができるNUI技術の他の例には、意図および目標理解システム、深度カメラ(立体視カメラ・システム、赤外線カメラ・システム、rgbカメラ・システム、およびこれらの組み合わせ等)を使用する動きジェスチャー検出システム、加速度計/ジャイロスコープを使用する動きジェスチャー検出、顔認識、3Dディスプレイ、頭部、眼球、および凝視追跡、没入拡張現実、ならびに電界検知電極を使用して脳の活動を検知する仮想現実システムおよび技術(EEGおよび関連方法)が含まれる。
【0112】
[00111] 「コンピューター」または「計算ベース・デバイス」という用語は、本明細書では、命令を実行することができるように処理能力を有する任意のデバイスを指すために使用される。当業者は、このような処理能力は多くの異なるデバイスに組み込まれ、したがって、「コンピューター」および「計算ベース・デバイス」という用語は、各々、PC、サーバー、移動体電話機(スマート・フォンを含む)タブレット・コンピューター、セット・トップ・ボックス、メディア・プレーヤー、ゲーム・コンソール、パーソナル・ディジタル・アシスタント、および多くの他のデバイスを含むことを認めるであろう。
【0113】
[00112] 本明細書において説明した方法は、ソフトウェアによって、有形記憶媒体において機械読み取り可能な形態で、例えば、コンピューターにおいてプログラムが実行されるとき、そしてコンピューター・プログラムをコンピューター読み取り可能媒体において具体化することができる場合に、本明細書において説明した方法の内任意のものの全てのステップを実行するように構成されたコンピューター・プログラム・コード手段を含むコンピューター・プログラムという形態で実行することができる。有形記憶媒体の例には、ディスク、サム・ドライブ、メモリー等のようなコンピューター読み取り可能媒体を含むコンピューター記憶デバイスを含み、伝搬信号を含まない。伝搬信号は、有形記憶媒体内に存在することができるが、伝搬信号自体は、有形記憶媒体の例ではない。ソフトウェアは、以上の方法ステップが任意の適した順序で、または同時に実行できるように、並列プロセッサーまたは直列プロセッサーにおける実行に適することが可能である。
【0114】
[00113] これは、ソフトウェアが、価値のある、別々に取引可能な商品であり得ることを認める。これは、所望の機能を実行するために、「ダム」(dumb)または標準ハードウェアにおいて実行するソフトウェアまたは制御するソフトウェアを包含することを意図している。また、これは、所望の機能を実行するようにシリコン・チップを設計するために、またはユニバーサル・プログラマブル・チップを構成するために使用されるような、HDL(ハードウェア記述言語)ソフトウェアのような、ハードウェアの構成を「記述する」または定めるソフトウェアも包含することを意図している。
【0115】
[00114] 当業者は、プログラム命令を格納するために利用される記憶デバイスは、ネットワークを介して分散させることができることを認めよう。例えば、リモート・コンピューターが、以上で説明したプロセスの一例をソフトウェアとして格納することもできる。ローカル・コンピューターまたは端末コンピューターが、このリモート・コンピューターにアクセスし、プログラムを実行するために、このソフトウェアの一部または全部をダウンロードすることもできる。あるいは、ローカル・コンピューターが必要に応じてソフトウェアの一部(pieces)をダウンロードすること、またはローカル端末において一部のソフトウェア命令を実行し、リモート・コンピューター(またはコンピューター・ネットワーク)において一部を実行することもできる。また、当業者は、当業者に知られている従来の技法を利用することによって、ソフトウェア命令の全部または一部を、DSP、プログラマブル・ロジック・アレイ等のような専用回路によっても実行できることも認めよう。
【0116】
[00115] 本明細書において与えられた範囲またはデバイス値は、いずれも、求められる効果を失うことなく、広げることまたは変更することができる。これは当業者には明白であろう。
【0117】
[00116] 以上、本主題について、構造的特徴および/または方法論的アクトに特定な文言で説明したが、添付する特許請求の範囲において定められる主題は、必ずしも以上で説明した特定の特徴やアクトに限定されないことは理解されてしかるべきである。逆に、以上で説明した特定の特徴およびアクトは、特許請求の範囲を実現する形態例として開示されたまでである。
【0118】
[00117] 尚、以上で説明した利益および利点は、1つの実施形態に関係するのでもよく、または様々な実施形態に関係するのでもよいことは理解されよう。実施形態は、述べられた問題のいずれかを解決するものにも、全部を解決するものにも限定されず、更に述べられた利益および利点のいずれかを有するものにも、全部を有するものにも限定されない。更に、「1つの」品目に言及するときは、1つ以上のこの品目を指すことも理解されよう。
【0119】
[00118] 本明細書において説明した方法のステップは、任意の適した順序で実行すること、またはしかるべきときには同時に実行することもできる。加えて、個々のブロックは、本明細書において説明した主題の主旨や範囲から逸脱することなく、前述した方法のいずれからでも削除されてもよい。以上で説明した例の内任意のものの形態は、求められる効果を失うことなく、更に他の例を形成するために、説明した例の内任意のものの形態と組み合わせることもできる。
【0120】
[00119] 「含む」(comprising)という用語は、本明細書では、識別された方法ブロックまたはエレメントを含む(including)ことを意味するために使用されるが、このようなブロックまたはエレメントは、網羅的なリストを含むのではなく、1つの方法または装置が追加のブロックまたはエレメントを含む(contain)こともできる。
【0121】
[00120] 尚、以上の説明は一例として与えられたに過ぎないこと、そして種々の変更が当業者によって行われてもよいことは理解されよう。以上の明細書、例、およびデーターは、実施形態例の構造および使用の完全な説明を与える。ある程度の特定性をもって、また1つ以上の個々の実施形態を参照して、種々の実施形態について説明したが、当業者は、本明細書の主旨や範囲から逸脱することなく、開示された実施形態に対して数多くの変更を行うことができる。