(57)【特許請求の範囲】
【請求項１】
１つまたは複数のコンピュータによって実施されるドメイン変換ニューラル・ネットワークを備えるシステムであって、前記ドメイン変換ニューラル・ネットワークは、
ソース・ドメインから入力画像を受け取り、
前記ソース・ドメインから前記ソース・ドメインとは異なるターゲット・ドメインへの前記入力画像の変換である変換画像を生成するために、前記ソース・ドメインからの前記入力画像を含むネットワーク入力を処理し、
前記ドメイン変換ニューラル・ネットワークは、ターゲット・ドメイン画像と当該ドメイン変換ニューラル・ネットワークにより生成された変換画像とを区別するように構成された鑑別器ニューラル・ネットワークと同時にトレーニングされ、
前記トレーニングは、第１の最適化ステップと第２の最適化ステップとの間で交番することによって２ステップ最適化プロセスを繰り返して実行することを含み、
前記第１の最適化ステップ中に、前記ドメイン変換ニューラル・ネットワークのパラメータの値を固定された状態に保ちながら前記鑑別器ニューラル・ネットワークのパラメータの現在値およびタスク・ニューラル・ネットワークのパラメータの現在値を更新し、
前記タスク・ニューラル・ネットワークは、前記入力画像を受け取り、前記入力画像を特徴づけるタスク出力を生成するために前記入力画像を処理するように構成され、
前記第２の最適化ステップ中に、前記鑑別器ニューラル・ネットワークのパラメータの値およびタスク・ニューラル・ネットワークのパラメータの値を固定された状態に保ちながら前記ドメイン変換ニューラル・ネットワークのパラメータの現在値を更新する、
システム。
【請求項２】
前記ネットワーク入力は、さらに雑音ベクトルを含み、
前記雑音ベクトルは、所定の個数の雑音値を含むベクトルである、請求項１に記載のシステム。
【請求項３】
各雑音値は、それぞれの一様分布からサンプリングされる、請求項２に記載のシステム。
【請求項４】
前記入力画像は、それぞれが特定の解像度を有する複数のチャネルを含み、
前記ドメイン変換ニューラル・ネットワークは、
前記雑音ベクトルを処理して前記特定の解像度を有する追加チャネルを生成し、
前記入力画像と前記追加チャネルを結合して結合入力を生成する
ように構成された結合サブニューラル・ネットワークと、
前記変換された画像を生成するために前記結合された入力を処理する
ように構成された畳み込みサブニューラル・ネットワークと
をさらに含む、請求項２に記載のシステム。
【請求項５】
前記変換された画像を生成するために前記結合された入力を処理することは、前記結合された入力または前記ネットワーク入力に複数の解像度を保存する畳み込みを適用することを含む、請求項４に記載のシステム。
【請求項６】
前記畳み込みサブニューラル・ネットワークは、それぞれがそれぞれの複数の解像度を保存する畳み込み層を含む複数の残差ブロックを含む、請求項５に記載のシステム。
【請求項７】
ソース・ドメインから入力画像を受け取り、前記ソース・ドメインから前記ソース・ドメインとは異なるターゲット・ドメインへの前記入力画像の変換である前記入力画像の変換である変換画像を生成するために、前記ソース・ドメインからの前記入力画像を含むネットワーク入力を処理するドメイン変換ニューラル・ネットワークをトレーニングする方法であって、前記方法は、
ラベル付けされたトレーニング・ソース・ドメイン画像を受け取ることと、
ラベル付けされていないトレーニング・ターゲット・ドメイン画像を受け取ることと、
ターゲット・ドメイン画像と前記ドメイン変換ニューラル・ネットワークによって生成された変換画像との間で区別するために鑑別器ニューラル・ネットワークをトレーニングしている間に、変換画像を生成するために、前記ラベル付けされたトレーニング・ソース・ドメイン画像および前記ラベル付けされていないトレーニング・ターゲット・ドメイン画像に対して、前記ドメイン変換ニューラル・ネットワークをトレーニングすることを含み、
前記トレーニングは、第１の最適化ステップと第２の最適化ステップとの間で交番することによって２ステップ最適化プロセスを繰り返して実行することを含み、
前記第１の最適化ステップ中に、前記ドメイン変換ニューラル・ネットワークのパラメータの値を固定された状態に保ちながら前記鑑別器ニューラル・ネットワークのパラメータの現在値およびタスク・ニューラル・ネットワークのパラメータの現在値を更新し、
前記タスク・ニューラル・ネットワークは、前記入力画像を受け取り、前記入力画像を特徴づけるタスク出力を生成するために前記入力画像を処理するように構成され、
前記第２の最適化ステップ中に、前記鑑別器ニューラル・ネットワークのパラメータの値および前記タスク・ニューラル・ネットワークのパラメータの値を固定された状態に保ちながら前記ドメイン変換ニューラル・ネットワークのパラメータの現在値を更新する、
方法。
【請求項８】
前記ドメイン変換ニューラル・ネットワークのパラメータの値を固定された状態に保ちながら前記鑑別器ニューラル・ネットワークのパラメータの現在値および前記タスク・ニューラル・ネットワークのパラメータの現在値を更新することは、
前記鑑別器ニューラル・ネットワークの前記パラメータに関する損失関数のドメイン損失項を最大にするためにニューラル・ネットワーク・トレーニング技法を実行することによって前記鑑別器ニューラル・ネットワークの前記パラメータの前記現在値の更新を判定し、前記ドメイン損失項は、（ｉ）前記ターゲット・ドメインからではないものとしてターゲット・ドメイン画像を不正に識別することおよび前記ターゲット・ドメインからであるものとして変換画像を識別することに関して前記鑑別器ニューラル・ネットワークにペナルティを与えると同時に、（ｉｉ）前記鑑別器ニューラル・ネットワークによって前記ターゲット・ドメインからではないものとして識別される変換画像を生成することに関して前記ドメイン変換ニューラル・ネットワークにペナルティを与え、
前記タスク・ニューラル・ネットワークの前記パラメータに関する前記損失関数のタスク固有損失項を最小にするために前記ニューラル・ネットワーク・トレーニング技法を実行することによって前記タスク・ニューラル・ネットワークの前記パラメータの前記現在値の更新を判定することを含み、
前記タスク固有損失項は、（ｉ）対応するソース・ドメイン画像に関する既知のタスク出力とは異なって変換画像の特性を表すことに関して前記タスク・ニューラル・ネットワークにペナルティを与えると同時に、（ｉｉ）前記対応するソース・ドメイン画像に関する前記既知のタスク出力から前記タスク・ニューラル・ネットワークによって異なって特性を表される変換画像を生成することに関して前記ドメイン変換ニューラル・ネットワークにペナルティを与える、
請求項７に記載の方法。
【請求項９】
前記鑑別器ニューラル・ネットワークの前記パラメータの値および前記タスク・ニューラル・ネットワークの前記パラメータの値を固定された状態に保ちながら前記ドメイン変換ニューラル・ネットワークの前記パラメータの現在値を更新することは、
前記ドメイン変換ニューラル・ネットワークの前記パラメータに関する前記損失関数を最小にするために前記ニューラル・ネットワーク・トレーニング技法を実行することによって前記ドメイン変換ニューラル・ネットワークの前記パラメータの前記現在値の更新を定めること
を含む、請求項８に記載の方法。
【請求項１０】
１つまたは複数のコンピュータによって実施されるときに、前記１つまたは複数のコンピュータに、請求項１〜６のいずれか１項に記載の前記ドメイン変換ニューラル・ネットワークを実施させる命令を記憶する、１つまたは複数のコンピュータ記憶媒体。
【請求項１１】
１つまたは複数のコンピュータによって実施されるドメイン変換ニューラル・ネットワークの動作方法であって、
ソース・ドメインから入力画像を受け取るステップと、
前記ソース・ドメインから前記ソース・ドメインとは異なるターゲット・ドメインへの前記入力画像の変換である変換画像を生成するために、前記ソース・ドメインからの前記入力画像を含むネットワーク入力を処理するステップと
を備え、
前記ドメイン変換ニューラル・ネットワークは、ターゲット・ドメイン画像と当該ドメイン変換ニューラル・ネットワークにより生成された変換画像とを区別するように構成された鑑別器ニューラル・ネットワークと同時にトレーニングされ、
前記トレーニングは、第１の最適化ステップと第２の最適化ステップとの間で交番することによって２ステップ最適化プロセスを繰り返して実行することを含み、
前記第１の最適化ステップ中に、前記ドメイン変換ニューラル・ネットワークのパラメータの値を固定された状態に保ちながら前記鑑別器ニューラル・ネットワークのパラメータの現在値およびタスク・ニューラル・ネットワークのパラメータの現在値を更新し、
前記タスク・ニューラル・ネットワークは、前記入力画像を受け取り、前記入力画像を特徴づけるタスク出力を生成するために前記入力画像を処理するように構成され、
前記第２の最適化ステップ中に、前記鑑別器ニューラル・ネットワークのパラメータの値およびタスク・ニューラル・ネットワークのパラメータの値を固定された状態に保ちながら前記ドメイン変換ニューラル・ネットワークのパラメータの現在値を更新する、
方法。
【請求項１２】
前記ネットワーク入力は、さらに雑音ベクトルを含み、
前記雑音ベクトルは、所定の個数の雑音値を含むベクトルである、請求項１１に記載の方法。
【請求項１３】
各雑音値は、それぞれの一様分布からサンプリングされる、請求項１２に記載の方法。
【請求項１４】
前記入力画像は、それぞれが特定の解像度を有する複数のチャネルを含み、
前記ドメイン変換ニューラル・ネットワークは、
前記雑音ベクトルを処理して前記特定の解像度を有する追加チャネルを生成し、
前記入力画像と前記追加チャネルを結合して結合入力を生成する
ように構成された結合サブニューラル・ネットワークと、
前記変換された画像を生成するために前記結合された入力を処理する
ように構成された畳み込みサブニューラル・ネットワークと
をさらに含む、請求項１２に記載の方法。
【請求項１５】
前記変換された画像を生成するために前記結合された入力を処理することは、前記結合された入力または前記ネットワーク入力に複数の解像度を保存する畳み込みを適用することを含む、請求項１４に記載の方法。
【請求項１６】
前記畳み込みサブニューラル・ネットワークは、それぞれがそれぞれの複数の解像度を保存する畳み込み層を含む複数の残差ブロックを含む、請求項１５に記載の方法。
【請求項１７】
１つまたは複数のコンピュータによって実施されるときに、前記１つまたは複数のコンピュータに、請求項７〜９のいずれか１項に記載の方法の動作を実行させる命令を記憶する、１つまたは複数のコンピュータ記憶媒体。
【請求項１８】
１つまたは複数のコンピュータと、前記１つまたは複数のコンピュータによって実施されるときに、前記１つまたは複数のコンピュータに、請求項７〜９のいずれか１項に記載の方法の動作を実行させる命令を記憶する１つまたは複数のストレージ・デバイスとを含む、システム。
【発明の詳細な説明】
【背景技術】
【０００１】
本明細書は、出力を生成するためのニューラル・ネットワークの層を介する画像データの処理に関する。
【０００２】
ニューラル・ネットワークは、受け取られた入力に関する出力を予測するのに非線形ユニットの１つまたは複数の層を使用する機械学習モデルである。一部のニューラル・ネットワークは、出力層に加えて、１つまたは複数の隠れ層を含む。各隠れ層の出力は、ネットワーク内の次の層すなわち次の隠れ層または出力層への入力として使用される。ネットワークの各層は、パラメータのそれぞれのセットの現在値に従って、受け取られた入力から出力を生成する。
【発明の概要】
【０００３】
一般に、本明細書は、１つまたは複数のコンピュータによって実施され、ソース・ドメインからの画像および雑音ベクトルを受け取り、ソース・ドメインからの画像および雑音ベクトルを処理して、その画像をターゲット・ドメインからの画像に変換する、ドメイン変換ニューラル・ネットワークを説明する。
【０００４】
１つまたは複数のコンピュータのシステムが特定の動作またはアクションを実行するように構成されることは、そのシステムが、動作中にそのシステムに動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールされていることを意味する。１つまたは複数のコンピュータ・プログラムが特定の動作またはアクションを実行するように構成されることは、１つまたは複数のプログラムが、データ処理装置によって実行された時にその装置に動作またはアクションを実行させる命令を含むことを意味する。
【０００５】
本明細書では、１つまたは複数のコンピュータによって実施されるドメイン変換ニューラル・ネットワークであって、ドメイン変換ニューラル・ネットワークは、ソース・ドメインから入力画像を受け取り、雑音ベクトルを受け取り、ソース・ドメインからソース・ドメインとは異なるターゲット・ドメインへの入力画像の変換である変換された画像を生成するために、ソース・ドメインからの入力画像および雑音ベクトルを含むネットワーク入力を処理するように構成される、ドメイン変換ニューラル・ネットワークを含むシステムが説明される。
【０００６】
雑音ベクトルは、所定の個数の雑音値を含むベクトルとすることができる。各雑音値は、それぞれの一様分布からサンプリングされ得る。入力画像は、それぞれが特定の解像度を有する複数のチャネルを含むことができ、ドメイン変換ニューラル・ネットワークは、特定の解像度を有する追加チャネルを生成するために雑音ベクトルを処理し、結合された入力を生成するために入力画像および追加チャネルを連結するように構成された結合するサブニューラル・ネットワーク（ｃｏｍｂｉｎｉｎｇ  ｓｕｂ−ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ）を含むことができる。ドメイン変換ニューラル・ネットワークは、変換された画像を生成するために結合された入力を処理するように構成された畳み込みサブニューラル・ネットワークをさらに含むことができる。変換された画像を生成するために結合された入力を処理することは、結合された入力またはネットワーク入力に複数の解像度を保存する畳み込みを適用することを含むことができる。畳み込みサブニューラル・ネットワークは、それぞれがそれぞれの複数の解像度を保存する畳み込み層を含む複数の残差ブロックを含むことができる。ターゲット・ドメインは、実世界環境の画像とすることができ、ソース・ドメインは、実世界環境のシミュレーションの画像である。
【０００７】
本明細書では、１つまたは複数のコンピュータによって実施されるドメイン変換ニューラル・ネットワークであって、ドメイン変換ニューラル・ネットワークは、ソース・ドメインから入力画像を受け取り、ソース・ドメインは、実世界環境のシミュレーションの画像であり、ソース・ドメインからターゲット・ドメインへの入力画像の変換である変換された画像を生成するために、ソース・ドメインからの入力画像を含むネットワーク入力を処理し、ターゲット・ドメインは、実世界環境の画像であるように構成される、ドメイン変換ニューラル・ネットワークを含むシステムも開示される。
【０００８】
ドメイン変換ニューラル・ネットワークは、雑音ベクトルを受け取るようにさらに構成され得、ネットワーク入力は、雑音ベクトルをさらに含むことができる。雑音ベクトルは、所定の個数の雑音値を含むことができる  ベクトルである。各雑音値は、それぞれの一様分布からサンプリングされ得る。入力画像は、それぞれが特定の解像度を有する複数のチャネルを含むことができ、ドメイン変換ニューラル・ネットワークは、特定の解像度を有する追加チャネルを生成するために雑音ベクトルを処理し、結合された入力を生成するために入力画像および追加チャネルを連結するように構成された結合するサブニューラル・ネットワークを含むことができる。ドメイン変換ニューラル・ネットワークは、変換された画像を生成するためにネットワーク入力または結合された入力のいずれかを処理するように構成された畳み込みサブニューラル・ネットワークを含むことができる。変換された画像を生成するためにネットワーク入力または結合された入力を処理することは、結合された入力またはネットワーク入力に複数の解像度を保存する畳み込みを適用することを含むことができる。畳み込みサブニューラル・ネットワークは、それぞれがそれぞれの複数の解像度を保存する畳み込み層を含む複数の残差ブロックを含むことができる。
【０００９】
本明細書では、ドメイン変換ニューラル・ネットワークをトレーニングする方法であって、方法は、ラベル付けされたトレーニング・ソース・ドメイン画像を受け取ることと、ラベル付けされていないトレーニング・ターゲット・ドメイン画像を受け取ることと、ターゲット・ドメイン画像とドメイン変換ニューラル・ネットワークによって生成された変換された画像との間で区別するために鑑別器ニューラル・ネットワークをトレーニングしている間に、変換された画像を生成するために、ラベル付けされたトレーニング・ソース・ドメイン画像およびラベル付けされていないトレーニング・ターゲット・ドメイン画像に対して、ドメイン変換ニューラル・ネットワークをトレーニングすることとを含む、方法も開示される。
【００１０】
トレーニングすることは、第１の最適化ステップの実行と第２の最適化ステップの実行との間で交番することによって２ステップ最適化プロセスを繰り返して実行することであって、第１の最適化ステップ中に、ドメイン変換ニューラル・ネットワークのパラメータの値を固定された状態に保ちながら鑑別器ニューラル・ネットワークのパラメータの現在値およびタスク・ニューラル・ネットワークのパラメータの現在値を更新することであって、タスク・ニューラル・ネットワークは、入力画像を受け取り、入力画像の特性を表すタスク出力を生成するために入力画像を処理するように構成される、更新することと、第２の最適化ステップ中に、鑑別器ニューラル・ネットワークのパラメータの値およびタスク・ニューラル・ネットワークのパラメータの値を固定された状態に保ちながらドメイン変換ニューラル・ネットワークのパラメータの現在値を更新することとを含む、繰り返して実行することを含むことができる。ドメイン変換ニューラル・ネットワークのパラメータの値を固定された状態に保ちながら鑑別器ニューラル・ネットワークのパラメータの現在値およびタスク・ニューラル・ネットワークのパラメータの現在値を更新することは、鑑別器ニューラル・ネットワークのパラメータに関する損失関数のドメイン損失項を最大にするためにニューラル・ネットワーク・トレーニング技法を実行することによって鑑別器ニューラル・ネットワークのパラメータの現在値の更新を判定することであって、ドメイン損失項は、（ｉ）ターゲット・ドメインからではないものとしてターゲット・ドメイン画像を不正に識別することおよびターゲット・ドメインからであるものとして変換された画像を識別することに関して鑑別器ニューラル・ネットワークにペナルティを与えると同時に、（ｉｉ）鑑別器ニューラル・ネットワークによってターゲット・ドメインからではないものとして識別される変換された画像を生成することに関してドメイン変換ニューラル・ネットワークにペナルティを与える、判定することと、タスク・ニューラル・ネットワークのパラメータに関する損失関数のタスク固有損失項を最小にするためにニューラル・ネットワーク・トレーニング技法を実行することによってタスク・ニューラル・ネットワークのパラメータの現在値の更新を判定することであって、タスク固有損失項は、（ｉ）対応するソース・ドメイン画像に関する既知のタスク出力とは異なって変換された画像の特性を表すことに関してタスク・ニューラル・ネットワークにペナルティを与えると同時に、（ｉｉ）対応するソース・ドメイン画像に関する既知のタスク出力からタスク・ニューラル・ネットワークによって異なって特性を表される変換された画像を生成することに関してドメイン変換ニューラル・ネットワークにペナルティを与える、判定することとを含むことができる。鑑別器ニューラル・ネットワークのパラメータの値およびタスク・ニューラル・ネットワークのパラメータの値を固定された状態に保ちながらドメイン変換ニューラル・ネットワークのパラメータの現在値を更新することは、ドメイン変換ニューラル・ネットワークのパラメータに関する損失関数を最小にするためにニューラル・ネットワーク・トレーニング技法を実行することによってドメイン変換ニューラル・ネットワークのパラメータの現在値の更新を判定することを含むことができる。
【００１１】
本明細書で説明される主題の特定の実施形態は、以下の利点のうちの１つまたは複数を実現するために実施され得る。本明細書で説明されるニューラル・ネットワーク・システムは、ターゲット・ドメインから引き出されたかのように見えるようにソース・ドメイン画像を効果的に適合させることができる。具体的には、多数のラベル付けされた例がソース・ドメインから使用可能であると同時に、相対的にはるかに少数のラベル付けされた例がターゲット・ドメインから使用可能である場合には、ニューラル・ネットワーク・システムは、ソース・ドメインからターゲット・ドメインへの画素空間内の変換を学習するために多数のラベル付けされた例を効果的に活用し、ラベル付けされたターゲット・ドメイン画像のデータ・セットが効果的に生成されることを可能にすることができる。ニューラル・ネットワーク・システムは、ドメイン変換ニューラル・ネットワークを再トレーニングする必要なしに、異なるタスクのために再利用され得る。すなわち、ドメイン変換ニューラル・ネットワークが、画素レベルである画像を別の画像に写像するので、ドメイン変換ニューラル・ネットワークによって生成される画像は、必ずしも任意の１つの分類タスクに使用されるラベル空間に固有ではない。たとえば、第１のクラシファイヤ・ニューラル・ネットワークを使用してトレーニングされたドメイン変換ニューラル・ネットワークは、同一の適合シナリオ内で異なるラベル空間を使用する別のクラシファイヤのトレーニング用の画像を生成することができる。ドメイン変換ニューラル・ネットワークのトレーニング中にタスク固有損失を組み込むことによって、トレーニング・プロセスは、安定化され、よりよく動作するドメイン変換ニューラル・ネットワーク、そのドメイン変換ニューラル・ネットワークによって生成される変換された画像に対してトレーニングされたよりよく動作するタスク・クラシファイヤ、またはその両方をもたらす。タスク固有損失を使用してトレーニングされたドメイン変換ニューラル・ネットワークは、それでも、テスト時間中に異なるラベル空間を使用するクラシファイヤによって処理される画像を生成するのに効果的に使用され得る。
【００１２】
本明細書の主題の１つまたは複数の実施形態の詳細が、添付図面および下の説明で示される。この主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明白になる。
【図面の簡単な説明】
【００１３】
【図１】例の画像処理ニューラル・ネットワーク・システムを示す図である。
【図２】ドメイン変換ニューラル・ネットワークの例のアーキテクチャを示す図である。
【図３】ソース・ドメイン画像からターゲット・ドメイン画像を生成する例のプロセスを示す流れ図である。
【図４】ドメイン変換ニューラル・ネットワークをトレーニングする例のプロセスを示す流れ図である。
【図５】ドメイン変換ニューラル・ネットワークのトレーニング中に最適化ステップを実行する例のプロセスを示す流れ図である。
【発明を実施するための形態】
【００１４】
様々な図内の同様の符号および指定は、同様の要素を示す。
【００１５】
図１は、例の画像処理ニューラル・ネットワーク・システム１００を示す。画像処理ニューラル・ネットワーク・システム１００は、下で説明されるシステム、構成要素、および技法がその中で実施され得る、１つまたは複数の位置にある１つまたは複数のコンピュータ上のコンピュータ・プログラムとして実施されるシステムの例である。
【００１６】
画像処理ニューラル・ネットワーク・システム１００は、入力としてソース・ドメイン画像１０２を受け取り、ソース・ドメイン画像１０２を処理して、ソース・ドメイン画像１０２をターゲット・ドメイン画像１２２に変換する。
【００１７】
ターゲット・ドメイン画像１２２は、ソース・ドメイン画像１０２内に示されたシーンがターゲット・ドメインでどのように表現されるのかを表す画像である。言い換えると、ターゲット・ドメイン画像１２２は、ターゲット・ドメインへのソース・ドメイン画像１０２の変換である、すなわち、ターゲット・ドメイン画像１２２は、ソース・ドメイン画像１０２の元の内容を維持しながらターゲット・ドメインからサンプリングされたかのように見える。
【００１８】
一般に、ソース・ドメインは、ターゲット・ドメインとは異なる。具体的には、ソース・ドメインからの画像内の画素値の分布は、ターゲット・ドメインからの画像内の画素値の分布とは異なる。
【００１９】
いくつかのケースで、ソース・ドメインおよびターゲット・ドメインは、主に、高水準画像統計ではなく低水準画像統計の分布に関して異なる。分布における低水準の差の例は、雑音、解像度、照明、および色に起因して生じる差を含む。その一方で、高水準の差は、クラスの個数、物体のタイプ、および３Ｄ位置などの幾何学的変動に関する差を含む可能性がある。
【００２０】
一例では、ソース・ドメインは、実世界環境をシミュレートする仮想環境の画像とすることができ、ターゲット・ドメインは、実世界の画像とすることができる。たとえば、ソース・ドメイン画像は、ロボットもしくは他の機械エージェントによってまたは自律車両もしくは半自律車両によって相互作用される実世界環境をシミュレートする仮想環境の画像とすることができ、ターゲット・ドメイン画像は、機械エージェントまたは車両によって取り込まれた実世界環境の画像とすることができる。したがって、ソース・ドメイン画像は、具体的にはめったに発生しないか実世界環境内で生成するのが困難もしくは危険であるエッジ・ケースに関して、より包括的である可能性がある。エージェントもしくは車両の制御ポリシを開発すると同時に、またはエージェントもしくは車両によって実行されるアクションを選択するのに使用されるニューラル・ネットワークをトレーニングすると同時に、ソース・ドメイン画像をターゲット・ドメイン画像に変換することによって、ある種の状況が環境のシミュレートされたバージョンでのみ遭遇される場合であっても、実世界環境内のエージェントまたは車両の性能が改善され得る。
【００２１】
別の例では、ソース・ドメインとターゲット・ドメインとの両方が、実世界画像であるが、測光の差を有する場合があり、たとえば、一方のドメインが屋内画像であり、他方のドメインが同様の物体の屋外画像である場合がある。
【００２２】
別の例では、ソース・ドメインおよびターゲット・ドメインが、同様の物体の画像の異なるコレクションから選択された画像である場合がある。たとえば、ソース・ドメインが、キュレートされた画像コレクションからの画像であり、ターゲット・ドメインが、キュレートされていないデータ・セットからの画像、たとえばインターネット画像である場合がある。
【００２３】
いくつかの場合に、ソース・ドメインが、ラベル付けされた画像が簡単に入手可能なドメインであるが、ターゲット・ドメインのラベル付けされた画像データの入手が、計算的に高価であるか、他の形で困難または実行不可能である場合がある。
【００２４】
画像処理ニューラル・ネットワーク・システム１００は、トレーニングを介して、ソース・ドメイン画像１０２およびオプションで雑音ベクトル１０４を受け取り、ターゲット・ドメイン画像１２２を生成するために、ソース・ドメイン画像１０２を、および雑音ベクトルを受け取るように構成される時には雑音ベクトル１０４を処理するように構成された、ドメイン変換ニューラル・ネットワーク１１０を含む。
【００２５】
一般に、雑音ベクトルを使用する実施態様では、雑音ベクトル１０４は、所定の個数の雑音値を含むベクトルであり、ある入力画像の雑音ベクトル内の雑音値は、別の入力画像の雑音ベクトル内の雑音値とは異なる可能性が高い。具体的には、画像処理ニューラル・ネットワーク・システム１００は、たとえばそれぞれの一様分布から各値をサンプリングすることによって、雑音値のそれぞれを生成する。
【００２６】
ドメイン変換ニューラル・ネットワーク１１０は、下で図２および図３を参照してより詳細に説明される。
【００２７】
画像処理システム１００は、ドメイン変換ニューラル・ネットワーク１１０のパラメータのトレーニングされた値を判定するためにドメイン変換ニューラル・ネットワーク１１０をトレーニングするトレーニング・サブシステム１５０をも含む。具体的には、トレーニング・サブシステム１５０は、鑑別器（ｄｉｓｃｒｉｍｉｎａｔｏｒ）ニューラル・ネットワーク１６０およびタスク・ニューラル・ネットワーク１７０を使用してドメイン変換ニューラル・ネットワーク１１０をトレーニングする。
【００２８】
鑑別器ニューラル・ネットワーク１６０は、入力画像すなわち、ソース・ドメインからの画像、ターゲット・ドメインからの画像、またはドメイン変換ニューラル・ネットワーク１１０によって生成された画像を受け取り、ターゲット画像がターゲット・ドメインからサンプリングされた尤度を表すターゲット・ドメイン・スコアを生成するために入力画像を処理するように構成されたニューラル・ネットワークである。
【００２９】
タスク・ニューラル・ネットワーク１７０は、画像すなわち、ソース・ドメインからの画像ターゲット・ドメインからの画像、またはドメイン変換ニューラル・ネットワーク１１０によって生成された画像を受け取り、画像のタスク出力を生成するために受け取られた画像に対して画像処理タスクを実行するために入力画像を処理する、ニューラル・ネットワークである。
【００３０】
たとえば、タスク・ニューラル・ネットワーク１７０は、１つまたは複数の物体カテゴリからの物体の画像を含むものとしてターゲット・ドメインからの入力画像を分類するように、すなわち、入力画像が物体カテゴリに属する物体の画像を含む尤度を表す１つまたは複数の物体カテゴリのそれぞれのスコアを含む入力画像の分類出力を生成するように、構成され得る。
【００３１】
別の例として、タスク・ニューラル・ネットワーク１７０は、入力画像内の物体の姿勢を推定するように構成され得る。一般に、物体の姿勢は、入力画像内の物体の位置および方位の組合せである。たとえば、システムは、物体の所定の個数の本体関節（ｂｏｄｙ  ｊｏｉｎｔ）のそれぞれの画像内での推定された位置を含む姿勢ベクトルを生成することができる。
【００３２】
別の例として、タスク・ニューラル・ネットワーク１７０は、それぞれがカテゴリのセットのうちの異なるカテゴリに属する複数の領域に入力画像を分割するように構成され得る。たとえば、システムは、タスク出力として、入力画像の画素ごとにその画素が属するカテゴリを識別するデータ、たとえばベクトルまたは行列を生成することができる。
【００３３】
鑑別器ニューラル・ネットワーク１６０およびタスク・ニューラル・ネットワーク１７０を使用するドメイン変換ニューラル・ネットワーク１１０のトレーニングは、下で図４および図５を参照して説明される。
【００３４】
図２は、ドメイン変換ニューラル・ネットワーク１１０の例のアーキテクチャを示す。具体的には、図２の例では、ドメイン変換ニューラル・ネットワーク１１０は、ソース・ドメイン画像および雑音ベクトルを受け取るように構成され、結合するサブニューラル・ネットワーク２００および畳み込みサブニューラル・ネットワーク２５０を含む。
【００３５】
結合するサブニューラル・ネットワーク２００は、ソース・ドメイン画像１０２および雑音ベクトル１０４を受け取り、結合された入力２１０を生成するためにソース・ドメイン画像１０２および雑音ベクトル１０４を処理するように構成される。畳み込みサブニューラル・ネットワーク２５０は、ターゲット・ドメイン画像１２２を生成するために結合された入力２１０を処理するように構成される。
【００３６】
具体的には、ソース・ドメイン画像１０２は、それぞれが特定の解像度を有する複数のチャネルを有する。たとえば、ソース・ドメイン画像１０２は、赤カラー・チャネル、緑カラー・チャネル、および青カラー・チャネルを有するＲＧＢ画像とすることができ、各チャネルは、同一の解像度を有する。
【００３７】
結合するサブニューラル・ネットワーク２００は、たとえば雑音ベクトルの次元数を変換する１つまたは複数の全結合層を介して雑音ベクトル１０４を処理することによって、特定の解像度を有する追加チャネルを生成するために雑音ベクトル１０４を処理するように構成される。
【００３８】
次に、結合するサブニューラル・ネットワーク２００は、結合された入力２１０を生成するために、すなわち、ｄｅｐｔｈ  ｃｏｎｃａｔｅｎａｔｉｏｎ層を介してソース・ドメイン画像１０２および追加チャネルを処理することによって、ソース・ドメイン画像１０２および追加チャネルを連結するように構成される。
【００３９】
一般に、畳み込みサブニューラル・ネットワーク２５０は、解像度を保存する畳み込みを結合された入力２１０に適用することによって、すなわち、複数の解像度を保存する畳み込み層を含むニューラル・ネットワーク層を介して結合された入力２１０を処理することによって、ターゲット・ドメイン画像１２２を生成するために結合された入力２１０を処理するように構成される。解像度を保存する畳み込み層は、それぞれが同一の特定の解像度を有する１つまたは複数のチャネルを有する入力を受け取り、やはりその特定の解像度を有する出力を生成する、ニューラル・ネットワーク層である。すなわち、解像度を保存する畳み込み層は、入力とは異なるチャネル数を有する出力を生成する場合があるが、各出力チャネルは、入力チャネルと同一の解像度を有する。
【００４０】
具体的には、畳み込みサブニューラル・ネットワーク２５０は、それぞれが複数の解像度を保存する畳み込み層と１つまたは複数の他の種類のニューラル・ネットワーク層、たとえばバッチ正規化層とを含む複数の残差ブロック２５２Ａ〜２５２Ｎを含む。
【００４１】
いくつかの例では、各残差ブロック２５２Ａ〜２５２Ｎは、第１の解像度を保存する畳み込み層と、それに続くバッチ正規化層と、それに続く、バッチ正規化層の出力に正規化線形関数（ｒｅｃｔｉｆｉｅｄ  ｌｉｎｅａｒ  ｕｎｉｔ）アクティブ化を適用するアクティブ化層と、それに続くもう１つの解像度を保存する畳み込み層と、それに続くもう１つのバッチ正規化層と、最後に、それに続く、残差ブロックの出力を生成するために最後のバッチ正規化層の出力を残差ブロックへの入力と結合する、たとえば和または平均をとる結合する層と、というアーキテクチャを有する。
【００４２】
いくつかのケースで、畳み込みサブニューラル・ネットワーク２５０は、畳み込みサブニューラル・ネットワーク２５０内の最初の残差ブロックの前の１つまたは複数の最初の解像度を保存する畳み込み層、畳み込みサブニューラル・ネットワーク２５０内の最後の残差ブロックの後の１つまたは複数の最後の解像度を保存する畳み込み層、またはその両方をも含む。たとえば、最後の解像度を保存する畳み込み層は、それぞれ、３つのチャネルおよびストライド１を有し、逆正接、シグモイド、または入力を適当な出力範囲に写像する別のアクティブ化関数など、要素単位のアクティブ化関数を適用する層とすることができ、最後の解像度を保存する畳み込み層は、ターゲット・ドメイン画像１２２を生成する。
【００４３】
雑音ベクトルが使用されない実施態様では、入力ソース・ドメイン画像は、畳み込みサブニューラル・ネットワーク２５０に直接に渡され得る、すなわち、ニューラル・ネットワーク１１０は、結合するサブニューラル・ネットワーク２００を含まない。
【００４４】
図３は、ソース・ドメイン画像からターゲット・ドメイン画像を生成する例のプロセス３００の流れ図である。便宜のために、プロセス３００は、１つまたは複数の位置に配置された１つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、適当にプログラムされた画像処理ニューラル・ネットワーク・システム、たとえば図１の画像処理ニューラル・ネットワーク・システム１００が、プロセス３００を実行することができる。
【００４５】
システムは、ソース・ドメインからの画像を受け取る（ステップ３０２）。
【００４６】
オプションで、システムは、雑音ベクトルを生成する（ステップ３０４）。上で説明したように、システムは、１つまたは複数の一様分布から値をサンプリングすることによって雑音ベクトルの要素を生成することができる。
【００４７】
システムは、ドメイン変換ニューラル・ネットワークを使用して、ソース領域画像および使用される時に雑音ベクトルを処理する（ステップ３０４）。上で説明したように、ドメイン変換ニューラル・ネットワークは、トレーニングを介して、ソース・ドメイン画像および使用される時に雑音ベクトルを受け取り、ターゲット・ドメイン画像を生成するためすなわち、ソース・ドメイン画像をターゲット・ドメインからの画像に変換するために、ソース・ドメイン画像を処理するように構成されている。
【００４８】
生成された後に、システムは、様々な目的のいずれにもターゲット・ドメイン画像を使用することができる。
【００４９】
たとえば、ソース・ドメイン画像がラベル付けされている場合に、ソース・ドメイン画像のラベルを用いてターゲット・ドメイン画像にラベルを付け、ターゲット・ドメイン画像を分類するためのクラシファイヤ・ニューラル・ネットワークまたは異なる画像処理タスクを実行するための異なる種類の画像処理ニューラル・ネットワークをトレーニングするためのトレーニング・データとしての使用のためにラベル付けされたターゲット・ドメイン画像を記憶することができる。
【００５０】
別の例として、システムは、ロボットまたは別のエージェントの制御ポリシを学習するための強化学習技法の一部としてターゲット・ドメイン画像を使用することができる。すなわち、システムは、シミュレートされた環境とのエージェントのシミュレートされたバージョンの相互作用の結果として生成された画像を、実世界環境の画像に変換するのにドメイン変換ニューラル・ネットワークを使用し、制御ポリシの学習においてシミュレートされた環境の画像の代わりに実世界環境の画像を使用することができる。
【００５１】
図４は、ドメイン変換ニューラル・ネットワークをトレーニングする例のプロセス４００の流れ図である。便宜のために、プロセス４００は、１つまたは複数の位置に配置された１つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、適当にプログラムされた画像処理ニューラル・ネットワーク・システム、たとえば図１の画像処理ニューラル・ネットワーク・システム１００が、プロセス４００を実行することができる。
【００５２】
システムは、ラベル付けされたトレーニング・ソース・ドメイン画像を受け取る（ステップ４０２）。ラベル付けされた画像は、それに関して既知のタスク出力すなわち、画像に関してタスク・ニューラル・ネットワークによって生成されるべきタスク出力が、トレーニング中にシステムから使用可能である画像である。
【００５３】
システムは、ラベル付けされていないトレーニング・ターゲット・ドメイン画像を受け取る（ステップ４０４）。ラベル付けされていない画像は、それに関して既知のタスク出力がトレーニング中にシステムから使用可能ではない画像である。
【００５４】
システムは、ラベル付けされたトレーニング・ソース・ドメイン画像およびラベル付けされていないターゲット・ドメイン画像に対してドメイン変換ニューラル・ネットワーク、鑑別器ニューラル・ネットワーク、およびタスク・ニューラル・ネットワークをトレーニングする（ステップ４０６）。
【００５５】
トレーニング中に、システムは、タスク・ニューラル・ネットワークによって正しく特性を表されるすなわち、それらの対応するソース・ドメイン画像と同一のタスク出力を割り当てられる変換された画像であって、変換された画像がターゲット・ドメインからのものである可能性が高いことを示すターゲット・ドメイン・スコアを鑑別器ニューラル・ネットワークによって割り当てられる変換された画像を生成するために、ドメイン変換ニューラル・ネットワークをトレーニングする。しかし、システムは、変換された画像を実際のターゲット・ドメイン画像から区別すること、すなわち、実際のターゲット・ドメイン画像に関して高いターゲット・ドメイン・スコアを生成すると同時に、変換された画像に関してより低いターゲット・ドメイン・スコアを生成することを試みるために鑑別器ニューラル・ネットワークをもトレーニングする。
【００５６】
具体的には、システムは、トレーニング画像を使用する２ステップ最適化プロセスを繰り返して実行することによって、ニューラル・ネットワークをトレーニングする。最適化プロセスの一方のステップ中に、システムは、ドメイン変換ニューラル・ネットワーク・パラメータを固定された状態に保ちながら、鑑別器ニューラル・ネットワークおよびタスク・ニューラル・ネットワークのパラメータを更新する。最適化プロセスの他方のステップ中に、システムは、鑑別器ニューラル・ネットワークおよびタスク・ニューラル・ネットワークのパラメータを固定された状態に保ちながら、ドメイン変換ニューラル・ネットワーク・パラメータを更新する。トレーニング中に、システムは、たとえば、ラベル付けされたトレーニング画像およびラベル付けされていないトレーニング画像の各ｋ個のバッチの後に（ｋは、１以上の定数値である）、最適化プロセスのこの２つのステップの間で交番する。
【００５７】
２ステップ最適化プロセスは、下で図５を参照してより詳細に説明される。
【００５８】
図５は、ドメイン変換ニューラル・ネットワークのトレーニング中に最適化ステップを実行する例のプロセス５００の流れ図である。便宜のために、プロセス５００は、１つまたは複数の位置に配置された１つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、適当にプログラムされた画像処理ニューラル・ネットワーク・システム、たとえば図１の画像処理ニューラル・ネットワーク・システム１００が、プロセス５００を実行することができる。
【００５９】
システムは、トレーニング画像から、ラベル付けされたソース・ドメイン画像およびラベル付けされていないトレーニング・ターゲット・ドメイン画像をサンプリングする（ステップ５０２）。
【００６０】
システムは、ターゲット・ドメイン画像のターゲット・ドメイン・スコアを生成するために、鑑別器ニューラル・ネットワークのパラメータの現在値に従って、鑑別器ニューラル・ネットワークを使用してターゲット・ドメイン画像を処理する（５０４）。
【００６１】
システムは、ソース・ドメイン画像のタスク出力を生成するために、タスク・ニューラル・ネットワークのパラメータの現在値に従って、タスク・ニューラル・ネットワークを使用してソース・ドメイン画像を処理する（５０６）。
【００６２】
オプションで、システムは、雑音ベクトルを生成し、変換された画像を生成するためにドメイン変換ニューラル・ネットワークのパラメータの現在値に従ってドメイン変換ニューラル・ネットワークを使用してソース・ドメイン画像および使用される場合に生成された雑音ベクトルを処理する（５０８）。
【００６３】
システムは、変換された画像のターゲット・ドメイン・スコアを生成するために鑑別器ニューラル・ネットワークのパラメータの現在値に従って鑑別器ニューラル・ネットワークを使用して変換された画像を処理する（５１０）。
【００６４】
システムは、変換された画像のタスク出力を生成するためにタスク・ニューラル・ネットワークのパラメータの現在値に従ってタスク・ニューラル・ネットワークを使用して変換された画像を処理する（５１２）。
【００６５】
現在の最適化ステップが、タスク・ニューラル・ネットワークおよび鑑別器ニューラル・ネットワークのパラメータを更新することである場合に、システムは、ドメイン変換ニューラル・ネットワークのパラメータの現在値を固定された状態に保ちながら、タスク・ニューラル・ネットワークおよび鑑別器ニューラル・ネットワークのパラメータの更新を判定するためにニューラル・ネットワーク・トレーニング技法の反復を実行する（５１４）。
【００６６】
具体的には、システムは、鑑別器ニューラル・ネットワークのパラメータに関する損失関数のドメイン損失項を最大にし、タスク・ニューラル・ネットワークのパラメータに関する損失関数のタスク固有損失項を最小にするために、ニューラル・ネットワーク・トレーニング技法の反復を実行する。
【００６７】
いくつかの実施態様では、損失関数は、
αＬｄ（Ｄ，Ｇ）＋βＬｔ（Ｇ，Ｔ）
を満足し、ここで、αおよびβは、損失の相互作用を制御する固定された重みであり、Ｌｄ（Ｄ，Ｇ）は、鑑別器ニューラル・ネットワークがターゲット・ドメイン画像および変換された画像のドメインをどれほど正確に識別できるのかを測定するドメイン損失であり、Ｌｔ（Ｇ，Ｔ）は、タスク・ニューラル・ネットワークが実行するように構成される分類タスクに対するタスク・ニューラル・ネットワークの性能を測定するタスク固有損失である。
【００６８】
具体的には、ドメイン損失は、（ｉ）ターゲット・ドメインからであることの低い尤度を有するものとしてターゲット・ドメイン画像を不正に識別することおよびターゲット・ドメインからであることの高い尤度を有するものとして変換された画像を識別することに関して鑑別器ニューラル・ネットワークにペナルティを与えると同時に、（ｉｉ）鑑別器ニューラル・ネットワークによってターゲット・ドメインからであることの低い尤度を有するものとして識別される変換された画像を生成することに関してドメイン変換ニューラル・ネットワークにペナルティを与える。いくつかの実施態様では、ドメイン損失Ｌｄ（Ｄ，Ｇ）は、
【数１】
0006957624.tif 000002
を満足し、ここで、Ｅｙは、変数ｙに関する期待値であり、Ｄ（ｘｔ；θＤ）は、鑑別器ニューラル・ネットワーク・パラメータの現在値θＤに従ってターゲット・ドメイン画像ｘｔに関して生成されるターゲット・ドメイン・スコアであり、Ｇ（ｘｓ，ｚ；θＧ）は、鑑別器ニューラル・ネットワーク・パラメータの現在値θＧに従ってソース・ドメイン画像ｘｓおよび雑音ベクトルｚから生成される変換された画像であり、Ｄ（Ｇ（ｘｓ，ｚ；θＧ）；θＤ）は、変換された画像に関して生成されるターゲット・ドメイン・スコアである。
【００６９】
タスク固有損失は、（ｉ）対応するソース・ドメイン画像に割り当てられたラベルとは異なって変換された画像の特性を表すことに関してタスク・ニューラル・ネットワークにペナルティを与えると同時に、（ｉｉ）対応するソース・ドメイン画像に関する既知のタスク出力からタスク・ニューラル・ネットワークによって異なって特性を表される変換された画像を生成することに関してドメイン変換ニューラル・ネットワークにペナルティを与える。いくつかの実施態様では、タスク固有損失は、ソース・ドメイン画像の特性を不正に表すことに関してタスク・ニューラル・ネットワークに直接にペナルティを与えることもする。これらの実施態様の一部では、タスク固有損失Ｌｔ（Ｇ，Ｔ）は、
【数２】
0006957624.tif 000003
を満足し、ここで、
【数３】
0006957624.tif 000004
は、ソース・ドメイン画像ｘｓに関するタスク出力の転置であり、Ｔ（ｘｓ；θＴ）は、タスク・ニューラル・ネットワーク・パラメータの現在値θＴに従ってソース・ドメイン画像ｘｓに関して生成されるタスク出力であり、Ｔ（Ｇ（ｘｓ，ｚ；θＧ）；θＴ）は、ソース・ドメイン画像ｘｓから生成される変換された画像に関して生成されるタスク出力である。
【００７０】
いくつかの実施態様では、トレーニング・プロセス中に、システムは、損失関数に１つまたは複数の追加の項を追加することによって、変換された画像がそれらに対応するソース・ドメイン画像とどのように異なるべきかに関するある種の制約を課すことができる。
【００７１】
たとえば、いくつかのケースで、対応するソース・ドメイン画像からの前景画素における大きい差を有する変換された画像の生成に関してドメイン変換ニューラル・ネットワークにペナルティを与える、対応する固定された重みを有する追加の類似性損失項が、損失関数に追加され得る。
【００７２】
別の例として、対応するソース・ドメイン画像からの異なる高水準画像特徴表現を有する変換された画像の生成に関してドメイン変換ニューラル・ネットワークにペナルティを与える、対応する固定された重みを有する追加の知覚損失項が、損失関数に追加され得る。
【００７３】
ドメイン変換ニューラル・ネットワークのトレーニングを規則化する、対応する固定された重みを有する追加の規則化損失項、たとえばＬ２規則化損失項が、損失関数に追加され得る。
【００７４】
ドメイン変換ニューラル・ネットワークのパラメータの現在値を固定された状態に保ちながら、タスク・ニューラル・ネットワークおよび鑑別器ニューラル・ネットワークのパラメータの更新を判定するためにニューラル・ネットワーク・トレーニングの反復を実行するために、システムは、ドメイン損失を最大にするために従来の最急上昇法（ｇｒａｄｉｅｎｔ  ａｓｃｅｎｔ）ベースの技法の反復を実行することによって、鑑別器ニューラル・ネットワークのパラメータに対する更新を判定し、タスク固有損失項を最小にするために従来の最急降化法（ｇｒａｄｉｅｎｔ  ｄｅｓｃｅｎｔ）ベースの技法の反復を実行することによって、タスク・ニューラル・ネットワークのパラメータに対する更新を判定する。
【００７５】
現在の最適化ステップが、ドメイン変換ニューラル・ネットワークのパラメータを更新することである場合には、システムは、タスク・ニューラル・ネットワークおよび鑑別器ニューラル・ネットワークのパラメータの現在値を固定された状態に保ちながらドメイン変換ニューラル・ネットワークのパラメータの更新を判定するためにニューラル・ネットワーク・トレーニング技法の反復を実行する（５１６）。具体的には、システムは、ドメイン変換ニューラル・ネットワークのパラメータに関する損失関数すなわち、ドメイン損失、タスク固有損失、および含まれる場合にすべての追加項の組合せを最小にするために従来の最急降化法ベースの技法の反復を実行する。
【００７６】
プロセス５００が、トレーニング例のバッチ全体に関して実行された後に、システムは、対応するニューラル・ネットワークの現在値を更新するために、判定された更新を対応するニューラル・ネットワークの現在値に適用する。
【００７７】
本明細書で説明される、本主題の実施形態および機能的動作は、本明細書で開示される構造およびその構造的同等物を含む、デジタル電子回路網内、有形に実施されたコンピュータ・ソフトウェアまたはファームウェア内、コンピュータ・ハードウェア内、またはそれらのうちの１つもしくは複数の組合せ内で実施され得る。本明細書で説明される主題の実施形態は、１つまたは複数のコンピュータ・プログラムすなわち、データ処理装置による実行のためまたはその動作を制御するために、有形の非一時的プログラム担体上で符号化されるコンピュータ・プログラム命令の１つまたは複数のモジュールとして実施され得る。その代わりにまたはそれに加えて、プログラム命令は、人工的に生成される伝搬される信号、たとえば、データ処理装置による実行のための適切な受信器装置への伝送のために情報を符号化するために生成される、機械生成される電気信号、光信号、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、機械可読ストレージ・デバイス、機械可読ストレージ基板、ランダム・アクセス・メモリ・デバイス、シリアル・アクセス・メモリ・デバイス、またはこれらのうちの１つもしくは複数の組合せとすることができる。
【００７８】
用語「データ処理装置」は、たとえばプログラマブル・プロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するすべての種類の装置、デバイス、および機械を包含する。装置は、特殊目的論理回路網、たとえば、ＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）またはＡＳＩＣ（特定用途向け集積回路）を含むことができる。装置は、ハードウェアに加えて、問題のコンピュータ・プログラムの実行環境を作成するコード、たとえば、プロセッサ・ファームウェア、プロトコル・スタック、データベース管理システム、オペレーティング・システム、またはこれらのうちの１つもしくは複数の組合せを構成するコードを含むこともできる。
【００７９】
コンピュータ・プログラム（プログラム、ソフトウェア、ソフトウェア・アプリケーション、モジュール、ソフトウェア・モジュール、スクリプト、またはコードと呼ばれまたは説明される場合もある）は、コンパイルされる言語もしくは解釈される言語、または宣言型言語もしくは手続き型言語を含む任意の形態のプログラミング言語で記述され得、独立型プログラムとしてまたは、モジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境内での使用に適する任意の他のユニットとしてを含む、任意の形態で展開され得る。コンピュータ・プログラムは、ファイル・システム内のファイルに対応する場合があるが、そうである必要はない。プログラムは、他のプログラムまたはデータ、たとえばマークアップ言語文書内に記憶された１つまたは複数のスクリプトを保持するファイルの部分内、問題のプログラムに専用の単一のファイル内、または複数の調整されたファイル内、たとえば１つまたは複数のモジュール、サブ・プログラム、もしくはコードの部分を記憶するファイル内に記憶され得る。コンピュータ・プログラムは、１つのコンピュータまたは、１つの場所に配置されるか複数の場所にまたがって分散され、通信ネットワークによって相互接続された複数のコンピュータ上での実行のために展開され得る。
【００８０】
本明細書で説明されるプロセスおよび論理フローは、入力データに作用し、出力を生成することによって機能を実行するために１つまたは複数のコンピュータ・プログラムを実行する１つまたは複数のプログラマブル・コンピュータによって実行され得る。プロセスおよび論理フローは、特殊目的論理回路網、たとえばＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）またはＡＳＩＣ（特定用途向け集積回路）によっても実行され得、装置は、それらとしても実施され得る。
【００８１】
コンピュータ・プログラムの実行に適切なコンピュータは、含む  たとえば、汎用マイクロプロセッサもしくは特殊目的マイクロプロセッサまたはその両方、あるいは任意の他の種類の中央処理装置に基づくものとすることができる。一般に、中央処理装置は、読取専用メモリもしくはランダム・アクセス・メモリまたはその両方から命令およびデータを受け取る。コンピュータの本質的要素は、命令を実行する中央処理装置と、命令およびデータを記憶する１つまたは複数のメモリ・デバイスとである。一般に、コンピュータは、データを記憶する１つまたは複数のマス・ストレージ・デバイス、たとえば磁気、光磁気ディスク、または光ディスクをも含み、あるいは、これらからデータを受け取り、もしくはこれらにデータを転送し、またはその両方を行うように動作可能に結合される。しかし、コンピュータが、そのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえば、少数の例を挙げると、携帯電話機、携帯情報端末（ＰＤＡ）、モバイル・オーディオ・プレイヤ、モバイル・ビデオ・プレイヤ、ゲーム機、全地球測位システム（ＧＰＳ）受信器、またはポータブル・ストレージ・デバイス、たとえばｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ（ＵＳＢ）フラッシュ・ドライブに組み込まれ得る。コンピュータ・プログラム命令およびデータを記憶するのに適切なコンピュータ可読媒体は、たとえば半導体メモリ・デバイス、たとえばＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュ・メモリ・デバイス、磁気ディスク、たとえば内蔵ハード・ディスクまたはリムーバブル・ディスク、光磁気ディスク、ならびにＣＤ  ＲＯＭディスクおよびＤＶＤ−ＲＯＭディスクを含む、すべての形態の不揮発性のメモリ、媒体、およびメモリ・デバイスを含む。プロセッサおよびメモリは、特殊目的論理回路網によって増補され、またはこれに組み込まれ得る。
【００８２】
ユーザとの相互作用を提供するために、本明細書で説明される主題の実施形態は、ユーザに情報を表示するディスプレイ・デバイス、たとえばＣＲＴ（陰極線管）モニタまたはＬＣＤ（液晶ディスプレイ）モニタと、それによってユーザがコンピュータに入力を供給できるキーボードおよびポインティング・デバイス、たとえばマウスまたはトラックボールとを有するコンピュータ上で実施され得る。他の種類のデバイスも、ユーザとの相互作用を提供するのに使用され得、たとえば、ユーザに供給されるフィードバックは、任意の形態の感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックとすることができ、ユーザからの入力は、音響入力、会話入力、または触覚入力を含む任意の形態で受け取られ得る。さらに、コンピュータは、ユーザによって使用されるデバイスに文書を送り、これから文書を受信することによって、たとえば、ウェブ・ブラウザから受信された要求に応答してユーザのクライアント・デバイス上のウェブ・ブラウザにウェブ・ページを送ることによって、ユーザと相互作用することができる。
【００８３】
本明細書で説明される主題の実施形態は、たとえばデータ・サーバとしてのバック・エンド・コンポーネントを含むか、ミドルウェア・コンポーネント、たとえばアプリケーション・サーバを含むか、フロント・エンド・コンポーネント、たとえばそれを介してユーザが本明細書で説明される主題の実施態様と相互作用することのできるグラフィカル・ユーザ・インターフェースまたはウェブ・ブラウザを有するクライアント・コンピュータを含むか、１つまたは複数のそのようなバック・エンド・コンポーネント、ミドルウェア・コンポーネント、またはフロント・エンド・コンポーネントの任意の組合せを含む、コンピューティング・システム内で実施され得る。システムのコンポーネントは、デジタル・データ通信の任意の形態または媒体、たとえば通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカル・エリア・ネットワーク（「ＬＡＮ」）および広域ネットワーク（「ＷＡＮ」）、たとえばインターネットを含む。
【００８４】
コンピューティング・システムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般に、お互いからリモートであり、通常は通信ネットワークを介して相互作用する。クライアントおよびサーバの関係は、それぞれのコンピュータ上で走行し、お互いとのクライアント−サーバ関係を有するコンピュータ・プログラムのおかげで生じる。
【００８５】
本明細書は、多数の特定の実施態様詳細を含むが、これらは、いずれの発明または請求され得るものの範囲の限定と解釈されてはならず、むしろ、特定の発明の特定の実施形態に固有である可能性がある特徴の説明と解釈されなければならない。本明細書で別々の実施形態の文脈で説明されるある種の特徴が、単一の実施形態内で組み合わせて実施されることも可能である。逆に、単一の実施形態の文脈で説明される様々な特徴が、複数の実施形態で別々にまたは任意の適切な副組合せで実施されることも可能である。さらに、特徴が、上ではある種の組合せで働くものとして説明され、当初にそのように請求される場合があるが、請求される組合せからの１つまたは複数の特徴が、いくつかのケースで、組合せから削り取られることが可能であり、請求される組合せは、副組合せまたは副組合せの変形形態を対象とすることができる。
【００８６】
同様に、動作が、図面で特定の順序で示されるが、これが、所望の結果を達成するために、そのような動作が図示の特定の順序または順次順序で実行されることまたはすべての図示の動作が実行されることを要求するものと理解してはならない。ある種の状況では、マルチタスキングおよび並列処理が有利である場合がある。さらに、上で説明された実施形態での様々なシステム・モジュールおよび構成要素の分離を、すべての実施形態でそのような分離を要求するものと理解してはならず、説明されたプログラム構成要素およびシステムが、一般に、単一のソフトウェア製品内で一緒に統合されまたは複数のソフトウェア製品にパッケージ化され得ることを理解されたい。
【００８７】
本主題の特定の実施形態を説明した。他の実施形態は、以下の特許請求の範囲の範囲内にある。たとえば、特許請求の範囲に列挙されたアクションは、異なる順序で実行され、それでも所望の結果を達成することができる。一例として、添付図面に示されたプロセスは、所望の結果を達成するために、必ずしも図示の特定の順序または順次順序を要求しない。ある種の実施態様では、マルチタスキングおよび並列処理が有利である場合がある。
【図１】
0006957624.tif 000005
【図２】
0006957624.tif 000006
【図３】
0006957624.tif 000007
【図４】
0006957624.tif 000008
【図５】
0006957624.tif 000009