【文献】
Maxime Oquab et al.,"Learning and Transferring Mid-level Image Representations Using Convolutional Neural Networks",2014 IEEE Conference on Computer Vision and Pattern Recognition,米国,IEEE,2014年 6月23日,pp.1717-1724
【文献】
Hung-Yu Chen et al.,"Deep semi-supervised learning for domain adaptation",2015 IEEE 25th International Workshop on Machine Learning for Signal Processing (MLSP),米国,IEEE,2015年 9月17日,pp.1-6
【文献】
岡谷 貴之,“画像認識のための深層学習の研究動向 −畳込みニューラルネットワークとその利用法の発展−”,人工知能,日本,(一社)人工知能学会,2016年 3月 1日,Vol.31, No.2,pp.169-179
(58)【調査した分野】(Int.Cl.,DB名)
前記ソースドメインからの入力画像についての共有特徴表現に類似した、前記ターゲットドメインからの入力画像についての共有特徴表現を生成するために、前記共有エンコーダニューラルネットワークがトレーニングされている、請求項1から5のいずれか一項に記載のシステム。
前記共有エンコーダニューラルネットワーク、前記プライベートソースエンコーダニューラルネットワーク、および前記プライベートターゲットエンコーダニューラルネットワークが、同じアーキテクチャだが異なるパラメータ値を有する畳込みニューラルネットワークである、請求項1に記載のシステム。
前記ソースドメインからの入力画像についての共有特徴表現に類似した、前記ターゲットドメインからの入力画像についての共有特徴表現を生成するために、前記共有エンコーダニューラルネットワークがトレーニングされている、請求項10から14のいずれか一項に記載の方法。
前記共有エンコーダニューラルネットワーク、前記プライベートソースエンコーダニューラルネットワーク、および前記プライベートターゲットエンコーダニューラルネットワークが、同じアーキテクチャだが異なるパラメータ値を有する畳込みニューラルネットワークである、請求項10に記載の方法。
【発明を実施するための形態】
【0008】
様々な図面における同様の参照番号および記号は、同様の要素を示す。
【0009】
本明細書は、1つまたは複数の場所における1つまたは複数のコンピュータ上のコンピュータプログラムとして実装される画像処理ニューラルネットワークシステムを記載する。
【0010】
画像処理ニューラルネットワークシステムは、ネットワーク画像を特徴づける各入力画像についてのそれぞれのネットワーク出力を生成するためにターゲットドメインからの入力画像を処理する。
【0011】
画像処理ニューラルネットワークシステムは、様々な方法のいずれかでターゲットドメインからの受信画像を特徴づけるネットワーク出力を生成するように構成することができる。
【0012】
例えば、画像処理ニューラルネットワークシステムは、ターゲットドメインからの入力画像を1つまたは複数のオブジェクトカテゴリーからのオブジェクトの画像を含むとして分類する、すなわち入力画像がオブジェクトカテゴリーに属するオブジェクトの画像を含む可能性を表す1つまたは複数のオブジェクトカテゴリーの各々についてのそれぞれのスコアを含む、入力画像についての分類出力を生成するように構成することができる。
【0013】
別の例として、画像処理ニューラルネットワークシステムは、入力画像中のオブジェクトの姿勢を推定するように構成することができる。一般的に、オブジェクトの姿勢は、入力画像中のオブジェクトの位置と方位の組合せである。例えば、システムは、ネットワーク出力としてオブジェクトの所定の数のボディの結合部の各々の画像中の推定配置を含む姿勢ベクトルを生成することができる。
【0014】
別の例として、画像処理ニューラルネットワークシステムは、入力画像をその各々がカテゴリーのセットのうちの異なるカテゴリーに属する複数の領域へと分割するように構成することができる。例えば、システムは、ネットワーク出力として、例えば入力画像の各画素について、画素が属するカテゴリーを識別するデータ、例えばベクトルまたは行列を生成することができる。
【0015】
図1は、例示的な画像処理ニューラルネットワークシステム100を示す。画像処理ニューラルネットワークシステム100は、下で記載されるシステム、構成要素、および技法を実装できる1つまたは複数の場所における1つまたは複数のコンピュータ上にコンピュータプログラムとして実装されるシステムの例である。
【0016】
画像処理ニューラルネットワークシステム100は、ターゲットドメイン画像102を入力として受信し、ネットワーク出力122を生成するためにターゲットドメイン画像102を処理する。上で記載したように、画像処理ニューラルネットワークシステム100は、受信した入力画像について様々な種類のネットワーク出力を生成するように構成することができる。
【0017】
画像処理ニューラルネットワークシステム100は、共有エンコーダニューラルネットワーク110および分類器ニューラルネットワーク120を含む。
【0018】
共有エンコーダニューラルネットワーク110は、トレーニングを通して、ターゲットドメイン画像102を受信し、ターゲットドメイン画像102についての共有特徴表現112を生成するためにターゲットドメイン画像102を処理するように構成されるニューラルネットワーク、例えば畳込みニューラルネットワークである。共有特徴表現112は、数値のベクトルであり、ターゲットドメインからの画像とソースドメインからの画像との間で共有されるターゲットドメイン画像102の特徴の表現である。
【0019】
一般的に、ソースドメインは、ターゲットドメインと異なる。特に、ソースドメインからの画像中の画素値の分布は、ターゲットドメインからの画像中の画素値の分布と異なる。
【0020】
いくつかの場合では、ソースドメインとターゲットドメインは、高レベル画像統計量よりも、主に低レベル画像統計量の分布の点で異なる。分布における低レベルの差異の例としては、ノイズ、解像度、照明、および色に起因して生じるものが挙げられる。一方、高レベルの差異は、クラスの数、オブジェクトのタイプ、および3D位置などの幾何学的な相違に関係する差異が挙げられる場合がある。
【0021】
一例では、ソースドメインは、現実世界の環境をシミュレーションする仮想環境の画像であってもよく、ターゲットドメインは、現実世界の環境の画像であってもよい。例えば、ソースドメイン画像は、ロボットもしくは他の機械のエージェント、または自動もしくは半自動車両によって相互作用されるべき現実世界の環境をシミュレーションする仮想環境の画像であってもよく、一方ターゲットドメイン画像は、機械のエージェントまたは車両によって取り込まれるような現実世界の環境の画像であってもよい。したがって、ソースドメイン画像は、特に、現実世界の環境でまれに生じる、または発生するのが困難もしくは危険なエッジケースでより拡張的となる場合がある。本明細書に記載されるように、ラベルありソースドメイン画像だけを使用してターゲットドメイン画像についての正確なネットワーク出力を生成するようにシステムをトレーニングすることによって、ある種の状況がシミュレーションしたバージョンでだけ起きる場合であってさえ現実世界の環境におけるエージェントまたは車両の性能を改善する場合がある。
【0022】
別の例では、ソースドメインとターゲットドメインが両方とも現実の世界の画像だが測光上の差異があってもよく、例えば一方のドメインが屋内画像であってもよく、他方のドメインが同様のオブジェクトの屋外画像であってもよい。
【0023】
別の例では、ソースドメインおよびターゲットドメインが、同様のオブジェクトの画像の異なる集合から選択された画像であってもよい。例えば、ソースドメインが精選(curate)された画像集合からの画像であってもよく、ターゲットドメインが例えばインターネット画像といった精選されないデータセットからの画像であってもよい。
【0024】
いくつかの場合では、ソースドメインは、ラベルあり画像が容易に利用可能なドメインであってもよく、一方ターゲットドメインについてのラベルあり画像データを取得することが、コンピュータ的に高価である、または困難もしくは実行不可能である。
【0025】
分類器ニューラルネットワーク120は、共有特徴表現112を受信し、ターゲットドメイン画像102についてのネットワーク出力122を生成するために共有特徴表現112を処理するトレーニングを通して構成されるニューラルネットワーク、例えば全結合ニューラルネットワークである。
【0026】
共有特徴表現112およびネットワーク出力122を生成するために共有エンコーダニューラルネットワーク110および分類器ニューラルネットワーク120をトレーニングすることが、
図2および
図4を参照して、下でより詳細に記載される。
【0027】
図2は、例示的なニューラルネットワークトレーニングシステム200を示す。ニューラルネットワークトレーニングシステム200は、下で記載されるシステム、構成要素、および技法を実装できる1つまたは複数の場所における1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されるシステムの例である。
【0028】
ニューラルネットワークトレーニングシステム200は、ターゲットドメインから受信した画像についてのネットワーク出力を生成するために共有エンコーダニューラルネットワーク110および分類器ニューラルネットワーク120をトレーニングする。
【0029】
特に、ニューラルネットワークトレーニングシステム200は、共有エンコーダニューラルネットワーク110をソースドメインからのラベルあり画像およびターゲットドメインからのラベルなし画像についてトレーニングし、分類器ニューラルネットワーク120をソースドメインからのラベルあり画像についてだけトレーニングする。ラベルあり画像は、既知のネットワーク出力、すなわち画像についての分類器ニューラルネットワーク120により生成されるべきネットワーク出力が、トレーニング期間にニューラルネットワークトレーニングシステム200に対して利用可能な画像であり、ラベルなし画像は、既知のネットワーク出力がトレーニング期間にニューラルネットワークトレーニングシステム200に対して利用可能でない画像である。
【0030】
共有エンコーダニューラルネットワーク110および分類器ニューラルネットワーク120をトレーニングするために、ニューラルネットワークトレーニングシステム200はまた、プライベートターゲットエンコーダニューラルネットワーク210、プライベートソースエンコーダニューラルネットワーク220、および共有デコーダニューラルネットワーク230を含む。
【0031】
プライベートターゲットエンコーダニューラルネットワーク210は、ターゲットドメインに特有であり、ターゲットドメインから画像を受信し、各受信画像について画像のプライベート特徴表現を生成するように構成される。
【0032】
プライベートソースエンコーダニューラルネットワーク220は、ソースドメインに特有であり、ソースドメインから画像を受信し、各受信画像について画像のプライベート特徴表現を生成するように構成される。
【0033】
いくつかの実装形態では、プライベートターゲットエンコーダニューラルネットワーク210、プライベートソースエンコーダニューラルネットワーク220、および共有エンコーダニューラルネットワーク110は、同じニューラルネットワークアーキテクチャを有する、例えばすべてが、同じネットワークアーキテクチャを有する畳込みニューラルネットワークである。いくつかの他の実装形態では、プライベートターゲットエンコーダニューラルネットワーク210およびプライベートソースエンコーダニューラルネットワーク220は、共有エンコーダニューラルネットワーク110のものと異なるアーキテクチャを有する畳込みニューラルネットワークである。
【0034】
共有デコーダニューラルネットワーク230は、画像の組み合わせた特徴表現を受信し、画像の再構築物を生成するために組み合わせた特徴表現を処理するように構成される。いくつかの実装形態では、共有デコーダニューラルネットワーク230は、逆畳込み(deconvolution)ニューラルネットワークである。
【0035】
画像の組み合わせた特徴表現は、画像の共有特徴表現と画像のプライベート特徴表現の組合せ、例えば連結、合計、または平均である。すなわち、画像がソースドメインからのものである場合、組み合わせた特徴表現は、プライベートソースエンコーダニューラルネットワーク220により画像について生成されるプライベート特徴表現と、共有エンコーダニューラルネットワーク110により画像について生成される共有特徴表現との組合せである。画像がターゲットドメインからのものである場合、組み合わせた特徴表現は、プライベートターゲットエンコーダニューラルネットワーク210により画像について生成されるプライベート特徴表現と、共有エンコーダニューラルネットワーク110により画像について生成される共有特徴表現との組合せである。
【0036】
トレーニング期間に、ニューラルネットワークトレーニングシステム200は、共有エンコーダニューラルネットワーク110、分類器ニューラルネットワーク120、プライベートターゲットエンコーダニューラルネットワーク210、プライベートソースエンコーダニューラルネットワーク220、および共有デコーダニューラルネットワーク230のパラメータの値を調整し、ネットワークの各々のパラメータのトレーニングした値を決定する。
【0037】
特に、ニューラルネットワークトレーニングシステム200は、共有エンコーダニューラルネットワーク110をトレーニングして、(i)ソースドメインからの入力画像についての共有特徴表現に類似した、ターゲットドメインからの入力画像についての共有特徴表現を生成し、一方(ii)プライベートターゲットエンコーダニューラルネットワーク210により生成されるターゲットドメインからの同じ入力画像についてのプライベート特徴表現と異なるターゲットドメインからのその入力画像についての共有特徴表現を生成し、(iii)プライベートソースエンコーダニューラルネットワーク220により生成されるソースドメインからの同じ入力画像についてのプライベート特徴表現と異なるソースドメインからのその入力画像についての共有特徴表現を生成する。
【0038】
加えて、ニューラルネットワークトレーニングシステム200は、共有エンコーダニューラルネットワーク110をトレーニングして、プライベートターゲットエンコーダニューラルネットワーク210により生成される同じ入力画像についてのプライベート特徴表現と組み合わされると、共有デコーダニューラルネットワーク230によってその入力画像を正確に再構築するために使用することができるターゲットドメインからのその入力画像についての共有特徴表現を生成し、プライベートソースエンコーダニューラルネットワーク220により生成される同じ入力画像についてのプライベート特徴表現と組み合わされると、共有デコーダニューラルネットワーク230によってその入力画像を正確に再構築するために使用することができるソースドメインからのその入力画像についての共有特徴表現を生成する。
【0039】
さらに、トレーニングの部分として、ニューラルネットワークトレーニングシステム200は、分類器ニューラルネットワーク120をトレーニングして、ソースドメインからのラベルあり画像についての正確なネットワーク出力を生成する。
【0040】
ネットワークの各々のパラメータのトレーニングした値を決定するために、共有エンコーダニューラルネットワーク110、分類器ニューラルネットワーク120、プライベートターゲットエンコーダニューラルネットワーク210、プライベートソースエンコーダニューラルネットワーク220、および共有デコーダニューラルネットワーク230をトレーニングすることが、
図4を参照して下でより詳細に記載される。
【0041】
いくつかの実装形態では、一度トレーニングすると、ターゲットドメイン画像をソースドメイン中の画像へと変換するために、共有エンコーダニューラルネットワーク110および共有デコーダニューラルネットワーク230を使用することができる。例えば、共有される表現を生成するために、共有エンコーダニューラルネットワーク110を使用してターゲットドメイン画像を処理することができる。共有される表現は、次いでプレースホルダ、またはプライベートソースエンコーダニューラルネットワーク220により生成される画像について生成される所望のプライベート特徴表現と組み合わされて、組み合わせた表現を生成することができる。組み合わせた表現は、次いで共有デコーダニューラルネットワーク230によって処理されて、入力ターゲットドメイン画像と同じ特徴を有するソースドメイン画像を生成することができる。
【0042】
図3は、ターゲットドメインからの画像についてのネットワーク出力を生成するための例示的なプロセス300の流れ図である。便宜上、プロセス300は、1つまたは複数の場所に配置される1つまたは複数のコンピュータのシステムによって実施されるように記載することになる。例えば、適切にプログラムされた画像処理ニューラルネットワークシステム、例えば
図1の画像処理ニューラルネットワークシステム100は、プロセス300を実施することができる。
【0043】
システムは、ターゲットドメインから画像を受信する(ステップ302)。
【0044】
システムは、共有エンコーダニューラルネットワークを使用してターゲットドメイン画像を処理する(ステップ304)。上で記載したように、共有エンコーダニューラルネットワークは、トレーニングを通して、ターゲットドメイン画像を受信し、ターゲットドメインからの画像とソースドメインからの画像との間で共有されるターゲットドメイン画像の特徴についての共有特徴表現を生成するように構成される。
【0045】
システムは、分類器ニューラルネットワークを使用して共有特徴表現を処理する(ステップ306)。上で記載したように、分類器ニューラルネットワークは、トレーニングを通して、共有特徴表現を受信し、ターゲットドメイン画像についてのネットワーク出力を生成するために共有特徴表現を処理するように構成される。
【0046】
図4は、共有エンコーダニューラルネットワークおよび分類器ニューラルネットワークに、繰り返しトレーニングを実施するための例示的なプロセス400の流れ図である。便宜上、プロセス400は、1つまたは複数の場所に配置される1つまたは複数のコンピュータのシステムによって実施されるように記載することになる。例えば、適切にプログラムされたニューラルネットワークトレーニングシステム、例えば
図1のニューラルネットワークトレーニングシステム200は、プロセス400を実施することができる。
【0047】
システムは、ラベルありトレーニングソースドメイン画像およびラベルなしトレーニングターゲットドメイン画像を受信する(ステップ402)。
【0048】
システムは、共有エンコーダニューラルネットワークのパラメータの現在の値にしたがう共有エンコーダニューラルネットワークを使用して各トレーニングソースドメイン画像および各トレーニングターゲットドメイン画像を処理し、画像の各々についてそれぞれの共有特徴表現を生成する(ステップ404)。
【0049】
システムは、プライベートターゲットエンコーダニューラルネットワークのパラメータの現在の値にしたがうプライベートターゲットエンコーダニューラルネットワークを使用して各トレーニングターゲットドメイン画像を処理し、各トレーニングターゲットドメイン画像についてそれぞれのプライベート特徴表現を生成する(ステップ406)。
【0050】
システムは、プライベートソースエンコーダニューラルネットワークのパラメータの現在の値にしたがうプライベートソースエンコーダニューラルネットワークを使用して各トレーニングソースドメイン画像を処理し、各トレーニングソースドメイン画像について、それぞれのプライベート特徴表現を生成する(ステップ408)。
【0051】
各トレーニングソースドメイン画像について、システムは、分類器ニューラルネットワークのパラメータの現在の値にしたがう分類器ニューラルネットワークを使用してトレーニングソースドメイン画像について、共有特徴表現を処理し、トレーニングソースドメイン画像についてのネットワーク出力を生成する(ステップ410)。
【0052】
システムは、例えば
図2を参照して上で記載したように、各トレーニングソースドメイン画像および各トレーニングターゲットドメイン画像についてのそれぞれの組み合わせた表現を生成する(ステップ412)。
【0053】
システムは、共有デコーダニューラルネットワークのパラメータの現在の値にしたがう共有デコーダニューラルネットワークを使用してトレーニング画像の各々について組み合わせた表現を処理し、対応するトレーニング画像の再構築物を生成する(ステップ414)。
【0054】
システムは、プライベートターゲットエンコーダニューラルネットワーク、共有エンコーダニューラルネットワーク、プライベートソースエンコーダニューラルネットワーク、共有デコーダニューラルネットワーク、および分類器ニューラルネットワークのパラメータの現在の値を調整し、ニューラルネットワークにより生成される出力からもたらされる損失を減少させる(ステップ416)。
【0055】
特に、システムは、例えば運動量を有する確率勾配といった機械学習トレーニング技法を繰り返し実施して、分類損失、再構築損失、差異損失、および類似損失に依存する損失を最小化する。例えば、損失Lは、
L = L
task + αL
recon + βL
difference + γL
similarity
を満足してもよく、ここでL
taskは分類損失、L
reconは再構築損失、L
differenceは差異損失、L
similarityは類似損失であり、α、β、およびγは損失項の相互作用を制御する重みである。
【0056】
分類損失は、分類器ニューラルネットワークを、また逆伝播によって共有エンコーダニューラルネットワークをトレーニングし、ソースドメイン画像についての正確なネットワーク出力を生成する、すなわちトレーニングソースドメイン画像についての既知のネットワーク出力と一致するネットワーク出力を生成する。例えば、分類損失は
【数1】
を満足してもよく、ここでN
sはラベルありトレーニングソースドメイン画像の合計数であり、
【数2】
は、i番目のトレーニングソースドメイン画像についての分類器ニューラルネットワークにより生成されたネットワーク出力であり、
【数3】
は、i番目のトレーニングソースドメイン画像についての既知のネットワーク出力である。
【0057】
再構築損失は、共有デコーダニューラルネットワークを、また逆伝播によってエンコーダニューラルネットワークの各々をトレーニングし、入力画像の正確な再構築物を生成する、すなわちトレーニング画像と一致するトレーニング画像の再構築物を生成する。例えば、再構築損失は、
【数4】
を満足するスケール不変性平均2乗誤差損失であってもよく、ここでN
tはトレーニングターゲットドメイン画像の合計数であり、
【数5】
は、i番目のトレーニングソースドメイン画像であり、
【数6】
は共有デコーダニューラルネットワークにより生成されるi番目のトレーニングソースドメイン画像の再構築物であり、
【数7】
はi番目のトレーニングターゲットドメイン画像であり、
【数8】
は共有デコーダニューラルネットワークにより生成されるi番目のトレーニングターゲットドメイン画像の再構築物であり、L
si_mseは画像と
【数9】
を満足する画像の再構築物との間のスケール不変性平均2乗誤差であり、ここで、
【数10】
は、2乗したL
2ノルムであり、kは入力x中の画素の数であり、l
kは長さkの画素のベクトルである。したがって、スケール不変性平均2乗誤差は、画素のペアの間、すなわち所与のトレーニング画像中の画素とトレーニング画像の再構築物中の対応する画素との間の差異にペナルティを課す。このスケール不変性平均2乗誤差損失を最小化することによって、システムは、共有デコーダニューラルネットワークをトレーニングし、入力の絶対値の色または強度についてモデル化電力を費やすことなく、モデル化されるオブジェクトの全体形状を再生する。
【0058】
差異損失は、共有エンコーダニューラルネットワークをトレーニングして、(i)プライベートターゲットエンコーダニューラルネットワークにより生成されるターゲットドメインからの同じ入力画像についてのプライベート特徴表現と異なるターゲットドメインからのその入力画像についての共有特徴表現を生成し、(ii)プライベートソースエンコーダニューラルネットワークにより生成されるソースドメインからの同じ入力画像についてのプライベート特徴表現と異なるソースドメインからのその入力画像についての共有特徴表現を生成する。例えば、差異損失は、
【数11】
を満足してもよく、ここで、
【数12】
はトレーニングソースドメイン画像の共有特徴表現である行を有する行列であり、
【数13】
はトレーニングターゲットドメイン画像の共有特徴表現である行を有する行列であり、
【数14】
はトレーニングソースドメイン画像のプライベート特徴表現である行を有する行列であり、
【数15】
はトレーニングターゲットドメイン画像のプライベート特徴表現である行を有する行列であり、
【数16】
は2乗したフロベニウスノルムである。
【0059】
類似損失は、共有エンコーダニューラルネットワークをトレーニングし、ソースドメインからの入力画像についての共有特徴表現に類似したターゲットドメインからの入力画像についての共有特徴表現を生成する。
【0060】
例えば、いくつかの場合では、類似損失は、ドメイン分類器ニューラルネットワークがエンコードされる表現のドメインを確実に予測できないような、共有される表現を生成するために共有エンコーダニューラルネットワークをトレーニングするドメイン敵対性類似損失であってもよい。例えば、ドメイン敵対性類似損失
【数17】
は、
【数18】
を満足してもよい。ここでd
iは、i番目のトレーニング画像がターゲットドメインからかまたはソースドメインからかを識別する変数の値であり、
【数19】
は、i番目のトレーニング画像についての共有特徴表現を処理することによって、ドメイン分類器ニューラルネットワークによって予測されるような変数の予測値である。システムは、ドメイン分類器ニューラルネットワークのパラメータに関してのこの損失を最大化し、共有エンコーダニューラルネットワークのパラメータに関しての損失を最小化すること、すなわちドメイン分類器ニューラルネットワークの入力層として勾配反転層を含むことおよび全体損失を最小化することができる。
【0061】
別の例として、いくつかの他の場合では、類似損失は、サンプルペアの間のカーネルベースの距離関数である最大平均差異損失であってもよい。例えば、最大平均差異損失
【数20】
は、
【数21】
を満足してもよい。ここで、k(・,・)はPSDカーネル関数であり、
【0063】
はトレーニングソースドメイン画像の共有特徴表現であり、
【0065】
はトレーニングターゲットドメイン画像の共有特徴表現である。いくつかの場合では、PSDカーネル関数は、複数の異なるRBFカーネルの線形結合であってもよい。
【0066】
システムは、ラベルありトレーニングソースドメイン画像およびラベルなしトレーニングターゲットドメイン画像の異なるバッチにプロセス400を繰り返して実施して、ニューラルネットワークのパラメータの値を繰り返し調節することによってニューラルネットワークをトレーニングし、ニューラルネットワークのパラメータのトレーニングした値を決定することができる。
【0067】
本明細書に記載される主題および機能的動作の実施形態は、本明細書に開示される構造物およびそれらの構造的な等価物を含む、デジタル電子回路、有形に具体化されたコンピュータソフトウェアもしくはファームウェア、コンピュータハードウェア、またはそれらのうちの1つもしくは複数の組合せで実装することができる。本明細書に記載される主題の実施形態は、1つまたは複数のコンピュータプログラムとして、すなわちデータ処理装置が実行するため、またはデータ処理装置の動作を制御するために有形の非一時的なプログラムキャリア上に符号化されるコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。代替または追加として、プログラム命令は、データ処理装置が実行するため、好適なレシーバ装置へ伝送するために情報を符号化するために生成される、例えば機械生成される電気、光、または電磁気信号といった人工的に生成される伝播信号上に符号化することができる。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つもしくは複数の組合せとすることができる。
【0068】
「データ処理装置」という用語は、例として、プログラム可能プロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、例えばFPGA(フィールドプログラム可能ゲートアレイ)またはASIC(特定用途向け集積回路)といった、専用論理回路を含むことができる。本装置はまた、ハードウェアに加えて、対象のコンピュータプログラムのための実行環境を作成するコード、例えばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つもしくは複数の組合せを構成するコードを含むことができる。
【0069】
(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、もしくはコードと呼ぶことまたは記載してもよい)コンピュータプログラムは、コンパイル型もしくはインタープリタ型言語、または宣言型もしくは手順型言語を含む任意の形式のプログラミング言語で書くことができ、スタンドアロン型プログラム、またはモジュール、構成要素、サブルーチン、もしくは計算環境で使用するのに好適な他のユニットを含む任意の形式で配備することができる。コンピュータプログラムは、ファイルシステム中のファイルに対応してもよいが、対応する必要はない。プログラムは、例えばマークアップ言語文書中に記憶される1つもしくは複数のスクリプトといった他のプログラムもしくはデータを保持するファイルの一部に、対象のプログラム専用の単一ファイルに、または例えば1つもしくは複数のモジュール、サブプログラム、もしくはコードの部分を記憶するファイルといった複数の協調したファイルに記憶することができる。コンピュータプログラムは、1つのコンピュータ上で、または1つの場所に配置されるもしくは複数の場所にわたって分散されて通信ネットワークにより相互接続される複数のコンピュータ上で実行されるように配備することができる。
【0070】
本明細書に記載されるプロセスおよび論理フローは、入力データ上で動作して出力を生成することにより機能を実施する、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能コンピュータによって実施することができる。プロセスおよび論理フローはまた、例えばFPGA(フィールドプログラム可能ゲートアレイ)またはASIC(特定用途向け集積回路)といった専用論理回路が実施することができ、例えばFPGA(フィールドプログラム可能ゲートアレイ)またはASIC(特定用途向け集積回路)といった専用論理回路として装置を実装することができる。
【0071】
コンピュータプログラムの実行に好適なコンピュータは、例として汎用マイクロプロセッサもしくは専用マイクロプロセッサもしくはその両方、または任意の他の種類の中央処理装置を含み、基づくことができる。一般的に、中央処理装置は、読取り専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信することになる。コンピュータの本質的な要素は、命令を実施または実行するための中央処理装置、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般的に、コンピュータは、例えば磁気、光磁気、もしくは光ディスクといったデータを記憶するための1つもしくは複数の大容量記憶デバイスを含む、または大容量記憶デバイスからデータを受信する、もしくはデータを送信する、もしくは送受信するように動作可能に結合されることにもなる。しかし、コンピュータは、そのようなデバイスを有する必要はない。さらに、コンピュータは、例えばほんのいくつかの例を挙げればモバイル電話、携帯情報端末(PDA)、モバイル音声プ層もしくはモバイルビデオプ層、ゲーム機、全地球測位システム(GPS)レシーバ、または例えばユニバーサルシリアルバス(USB)フラッシュドライブといったポータブル記憶デバイスなどの別のデバイス中に組み込むことができる。コンピュータプログラム命令およびデータを記憶するのに好適なコンピュータ可読媒体としては、例として例えばEPROM、EEPROM、およびフラッシュメモリデバイスといった半導体メモリデバイス、例えば内蔵ハードディスクまたはリムーバブルディスクといった磁気ディスク、光磁気ディスク、ならびにCD ROMおよびDVD-ROMディスクを含む、不揮発性メモリ、媒体、およびメモリデバイスのすべての形式が挙げられる。プロセッサおよびメモリは、専用論理回路によって補うこと、または専用論理回路に内蔵することができる。
【0072】
ユーザとの相互接続を実現するため、本明細書に記載される主題の実施形態は、ユーザに情報を表示するための例えばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタといった表示デバイス、ならびにユーザがコンピュータに入力を提供できるキーボードおよび例えばマウスまたはトラックボールといったポインティングデバイスを有するコンピュータ上に実装することができる。ユーザとの相互作用を実現するため、他の種類のデバイスを同様に使用することができる。例えば、ユーザへ提供されるフィードバックは、例えば視覚フィードバック、音響フィードバック、または触覚フィードバックといった任意の形式の感覚フィードバックとすることができ、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形式で受信することができる。加えて、コンピュータは、ユーザに使用されるデバイスに文書を送信すること、およびデバイスから文書を受信することによって、例えばウェブブラウザから受信した要求に応答してユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと相互作用することができる。
【0073】
本明細書に記載される主題の実施形態は、例えばデータサーバとしてバックエンド構成要素を含む、または例えばアプリケーションサーバといった中間構成要素を含む、または本明細書に記載される主題の実装形態とユーザが相互作用できる、例えばグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータといったフロントエンド構成要素、または1つもしくは複数のそのようなバックエンド構成要素、中間構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムに実装することができる。システムの構成要素は、例えば通信ネットワークといった、デジタルデータ通信の任意の形式もしくは媒体によって相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク("LAN")およびワイドエリアネットワーク("WAN")、例えばインターネットが挙げられる。
【0074】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントとサーバは、一般的に互いに離れており、典型的には通信ネットワークを通して相互作用する。クライアントとサーバの関係は、それぞれのコンピュータ上で走り、互いにクライアント−サーバの関係を有するコンピュータプログラムによって生じる。
【0075】
本明細書は多くの特定の実装上の詳細を含むが、これらは、任意の発明または特許請求されてもよいものの範囲についての限定と解釈するべきでなく、むしろ特定の発明の特定の実施形態に固有であってもよい特徴の記載として解釈するべきである。別個の実施形態の文脈で、本明細書で記載されるある種の特徴は、単一の実施形態中で組み合わせて実装することもできる。逆に、単一の実施形態の文脈で記載される様々な特徴は、複数の実施形態で別個に、または任意の好適な下位の組合せで実装することもできる。さらに、特徴が、ある種の組合せで機能すると上で記載され、そのように最初に特許請求される場合であっても、特許請求される組合せからの1つまたは複数の特徴は、いくつかの場合では、組合せから削除することができ、特許請求される組合せは、下位の組合せまたは下位の組合せの変形に向けることができる。
【0076】
同様に、動作が特定の順番で図面に描かれているが、これらは、望ましい結果を達成するために、そのような動作が示された特定の順番で、もしくは連続した順番で実施されるべきであること、またはすべての図示された動作が実施されることを要求していると理解するべきでない。特定の状況では、マルチタスクおよび並列処理が有利な場合がある。さらに、上で記載した実施形態中の様々なシステムモジュールおよび構成要素の区切りは、すべての実施形態でそのような区切りを必要としていると理解するべきでなく、記載したプログラム構成要素およびシステムは、一般的に、単一のソフトウェア製品に一緒に統合すること、または複数のソフトウェア製品へとパッケージすることができると理解するべきである。
【0077】
本主題の特定の実施形態を記載してきた。他の実施形態は、以下の請求項の範囲内である。例えば、請求項に記述した行為を、異なる順番で実施して、依然として望ましい結果を達成することができる。一例として、添付図面に描かれているプロセスは、望ましい結果を達成するため、必ずしも示された特定の順番、または連続した順番を必要としていない。ある種の実装形態では、マルチタスクおよび並列処理が有利な場合がある。