(57)【特許請求の範囲】
【請求項１】
コンピューティング・システムが、第１の解像度のビデオ・フレームのセットを得る工程と、
前記コンピューティング・システムが、畳み込みニューラル・ネットワークを使用して前記ビデオ・フレームのセットを処理して、１以上の信号を出力する工程であって、前記畳み込みニューラル・ネットワークは、（ｉ）二次元畳み込み層のセットと、（ｉｉ）三次元畳み込み層のセットと、を含み、前記処理によって、前記ビデオ・フレームのセットを第２の解像度に低下させる、工程と、
前記コンピューティング・システムが、前記畳み込みニューラル・ネットワークの三次元逆畳み込み層のセットを使用して前記１以上の信号を処理する工程と、
前記コンピューティング・システムが、前記畳み込みニューラル・ネットワークから、前記ビデオ・フレームのセットに対応する１以上の出力を得る工程と、を備える、コンピュータに実装される方法。
【請求項２】
前記ビデオ・フレームのセットに対応する前記１以上の出力を得る工程は、
前記コンピューティング・システムが、前記ビデオ・フレームのセット内の１以上のボクセルに対する１以上のそれぞれの特徴記述子を得る工程をさらに備え、各特徴記述子は、認識されたシーン、オブジェクト、またはアクションを参照し、各ボクセルは、特定の時間におけるピクセルである、請求項１に記載のコンピュータに実装される方法。
【請求項３】
前記ビデオ・フレームのセットに対応する前記１以上の出力を得る工程は、
前記コンピューティング・システムが、前記ビデオ・フレームのセット内の１以上のボクセルに対するそれぞれのオプティカル・フローを得る工程をさらに備え、ボクセルに対する前記オプティカル・フローは、少なくとも、前記ボクセルの予想された方向と大きさとを記述し、各ボクセルは、特定の時間におけるピクセルである、請求項１に記載のコンピュータに実装される方法。
【請求項４】
前記ビデオ・フレームのセットに対応する前記１以上の出力を得る工程は、
前記コンピューティング・システムが、前記ビデオ・フレームのセット内の１以上のボクセルに対するそれぞれの奥行きの測定値を得る工程をさらに備え、ここで各ボクセルは、特定の時間におけるピクセルである、請求項１に記載のコンピュータに実装される方法。
【請求項５】
前記畳み込みニューラル・ネットワークの前記三次元逆畳み込み層のセットを使用して前記１以上の信号を処理する工程は、
前記コンピューティング・システムが、前記三次元畳み込み層のセットによって生成された信号の少なくとも一部を、前記三次元逆畳み込み層のセットに入力する工程であって、前記三次元逆畳み込み層は、少なくとも１つの三次元逆畳み込み動作を前記信号の一部に適用するように訓練されている、工程をさらに備える、請求項１に記載のコンピュータに実装される方法。
【請求項６】
前記少なくとも１つの三次元逆畳み込み動作は、１以上の三次元フィルタに少なくとも基づいて、前記信号の一部の逆畳み込みを行い、前記三次元逆畳み込み動作は、ビデオ・コンテンツの表現の信号サイズを増大させる、請求項５に記載のコンピュータに実装される方法。
【請求項７】
畳み込みニューラル・ネットワークを使用して前記ビデオ・フレームのセットを処理して、１以上の信号を出力する工程であって、前記畳み込みニューラル・ネットワークは、（ｉ）二次元畳み込み層のセットと、（ｉｉ）三次元畳み込み層のセットと、を含む、工程は、
前記コンピューティング・システムが、前記ビデオ・フレームのセットの表現を前記二次元畳み込み層のセットに入力して、第１の信号のセットを出力する工程であって、前記二次元畳み込み層は、少なくとも１つの二次元畳み込み動作をビデオ・コンテンツの前記表現に適用するように訓練されている、工程と、
前記コンピューティング・システムが、前記第１の信号のセットの少なくとも一部を前記三次元畳み込み層のセットに入力して、第２の信号のセットを出力する工程であって、前記三次元畳み込み層は、少なくとも１つの三次元畳み込み動作を前記第１の信号のセットに適用するように訓練されている、工程と、をさらに備える、請求項１に記載のコンピュータに実装される方法。
【請求項８】
前記少なくとも１つの二次元畳み込み動作は、１以上の二次元フィルタに少なくとも基づいて、前記ビデオ・コンテンツの前記表現を畳み込み、前記二次元畳み込み動作は、前記ビデオ・コンテンツの前記表現の信号サイズを縮小させる、請求項７に記載のコンピュータに実装される方法。
【請求項９】
前記少なくとも１つの三次元畳み込み動作は、１以上の三次元フィルタに少なくとも基づいて、前記第１の信号のセットを畳み込み、前記三次元畳み込み動作は、前記ビデオ・コンテンツの前記表現の信号サイズを縮小させる、請求項７に記載のコンピュータに実装される方法。
【請求項１０】
前記ビデオ・フレームのセットは、３つ以上のビデオ・フレームを含む、請求項１に記載のコンピュータに実装される方法。
【請求項１１】
システムであって、
少なくとも１つのプロセッサと、
命令を記憶するメモリと、を備え、前記命令は、前記少なくとも１つのプロセッサによって実行されるとき、前記システムに、
第１の解像度のビデオ・フレームのセットを得る工程と、
畳み込みニューラル・ネットワークを使用して前記ビデオ・フレームのセットを処理して、１以上の信号を出力する工程であって、前記畳み込みニューラル・ネットワークは、（ｉ）二次元畳み込み層のセットと、（ｉｉ）三次元畳み込み層のセットと、を含み、前記処理によって、前記ビデオ・フレームのセットを第２の解像度に低下させる、工程と、
前記畳み込みニューラル・ネットワークの三次元逆畳み込み層のセットを使用して前記１以上の信号を処理する工程と、
前記畳み込みニューラル・ネットワークから、前記ビデオ・フレームのセットに対応する１以上の出力を得る工程と、を行わせる、システム。
【請求項１２】
前記ビデオ・フレームのセットに対応する前記１以上の出力を得る工程は、前記システムに、
前記ビデオ・フレームのセット内の１以上のボクセルに対する１以上のそれぞれの特徴記述子を得る工程をさらに行わせ、各特徴記述子は、認識されたシーン、オブジェクト、またはアクションを参照し、各ボクセルは、特定の時間におけるピクセルである、請求項１１に記載のシステム。
【請求項１３】
前記ビデオ・フレームのセットに対応する前記１以上の出力を得る工程は、前記システムに、
前記ビデオ・フレームのセット内の１以上のボクセルに対するそれぞれのオプティカル・フローを得る工程をさらに行わせ、ボクセルに対する前記オプティカル・フローは、少なくとも、前記ボクセルの予想された方向と大きさとを記述し、ボクセルは、特定の時間におけるピクセルである、請求項１１に記載のシステム。
【請求項１４】
前記ビデオ・フレームのセットに対応する前記１以上の出力を得る工程は、前記システムに、
前記ビデオ・フレームのセット内の１以上のボクセルに対するそれぞれのオプティカル・フローを得る工程をさらに行わせ、ボクセルに対する前記オプティカル・フローは、少なくとも、前記ボクセルの予想された方向と大きさとを記述し、各ボクセルは、特定の時間におけるピクセルである、請求項１１に記載のシステム。
【請求項１５】
前記畳み込みニューラル・ネットワークの前記三次元逆畳み込み層のセットを使用して前記１以上の信号を処理する工程は、前記システムに、
コンピューティング・システムが、前記三次元畳み込み層のセットによって生成された信号の少なくとも一部を、前記三次元逆畳み込み層のセットに入力する工程であって、前記三次元逆畳み込み層は、少なくとも１つの三次元逆畳み込み動作を前記信号の一部に適用するように訓練されている、工程をさらに行わせる、請求項１１に記載のシステム。
【請求項１６】
命令を含み、前記命令は、コンピューティング・システムの少なくとも１つのプロセッサによって実行されるとき、前記コンピューティング・システムに、
第１の解像度のビデオ・フレームのセットを得る工程と、
畳み込みニューラル・ネットワークを使用して前記ビデオ・フレームのセットを処理して、１以上の信号を出力する工程であって、前記畳み込みニューラル・ネットワークは、（ｉ）二次元畳み込み層のセットと、（ｉｉ）三次元畳み込み層のセットと、を含み、前記処理によって、前記ビデオ・フレームのセットを第２の解像度に低下させる、工程と、
前記畳み込みニューラル・ネットワークの三次元逆畳み込み層のセットを使用して前記１以上の信号を処理する工程と、
前記畳み込みニューラル・ネットワークから、前記ビデオ・フレームのセットに対応する１以上の出力を得る工程と、を行わせる、非一時的なコンピュータ可読記憶媒体。
【請求項１７】
前記ビデオ・フレームのセットに対応する前記１以上の出力を得る工程は、前記コンピューティング・システムに、
前記ビデオ・フレームのセット内の１以上のボクセルに対する１以上のそれぞれの特徴記述子を得る工程をさらに行わせ、各特徴記述子は、認識されたシーン、オブジェクト、またはアクションを参照し、各ボクセルは、特定の時間におけるピクセルである、請求項１６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１８】
前記ビデオ・フレームのセットに対応する前記１以上の出力を得る工程は、前記コンピューティング・システムに、
前記ビデオ・フレームのセット内の１以上のボクセルに対するそれぞれのオプティカル・フローを得る工程をさらに行わせ、ボクセルに対する前記オプティカル・フローは、少なくとも、前記ボクセルの予想された方向と大きさとを記述し、各ボクセルは、特定の時間におけるピクセルである、請求項１６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１９】
前記ビデオ・フレームのセットに対応する前記１以上の出力を得る工程は、前記コンピューティング・システムに、
前記ビデオ・フレームのセット内の１以上のボクセルに対するそれぞれのオプティカル・フローを得る工程をさらに行わせ、ボクセルに対する前記オプティカル・フローは、少なくとも、前記ボクセルの予想された方向と大きさとを記述し、各ボクセルは、特定の時間におけるピクセルである、請求項１６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２０】
前記畳み込みニューラル・ネットワークの前記三次元逆畳み込み層のセットを使用して前記１以上の信号を処理する工程は、前記コンピューティング・システムに、
前記コンピューティング・システムが、前記三次元畳み込み層のセットによって生成された信号の少なくとも一部を、前記三次元逆畳み込み層のセットに入力する工程であって、前記三次元逆畳み込み層は、少なくとも１つの三次元逆畳み込み動作を前記信号の一部に適用するように訓練されている、工程をさらに行わせる、請求項１６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２１】
コンピューティング・システムが、第１の解像度のビデオ・フレームのセットを得る工程と、
前記コンピューティング・システムが、畳み込みニューラル・ネットワークを使用して前記ビデオ・フレームのセットを処理して、１以上の信号を出力する工程であって、前記畳み込みニューラル・ネットワークは、（ｉ）二次元畳み込み層のセットと、（ｉｉ）三次元畳み込み層のセットと、を含み、前記処理によって、前記ビデオ・フレームのセットを第２の解像度に低下させる、工程と、
前記コンピューティング・システムが、前記畳み込みニューラル・ネットワークの三次元逆畳み込み層のセットを使用して前記１以上の信号を処理する工程と、
前記コンピューティング・システムが、前記畳み込みニューラル・ネットワークから、前記ビデオ・フレームのセットに対応する１以上の出力を得る工程と、を備える、コンピュータに実装される方法。
【請求項２２】
前記ビデオ・フレームのセットに対応する前記１以上の出力を得る工程は、
前記コンピューティング・システムが、前記ビデオ・フレームのセット内の１以上のボクセルに対する１以上のそれぞれの特徴記述子を得る工程であって、各特徴記述子は、認識されたシーン、オブジェクト、またはアクションを参照する、工程と、
前記コンピューティング・システムが、前記ビデオ・フレームのセット内の１以上のボクセルに対するそれぞれのオプティカル・フローを得る工程であって、ボクセルに対する前記オプティカル・フローは、少なくとも、前記ボクセルの予想された方向と大きさとを記述する、工程と、
前記コンピューティング・システムが、前記ビデオ・フレームのセット内の１以上のボクセルに対するそれぞれの奥行きの測定値を得る工程と、のうちの少なくとも１つをさらに備え、ここで各ボクセルは、特定の時間におけるピクセルである、請求項２１に記載のコンピュータに実装される方法。
【請求項２３】
前記畳み込みニューラル・ネットワークの前記三次元逆畳み込み層のセットを使用して前記１以上の信号を処理する工程は、
前記コンピューティング・システムが、前記三次元畳み込み層のセットによって生成された信号の少なくとも一部を、前記三次元逆畳み込み層のセットに入力する工程であって、前記三次元逆畳み込み層は、少なくとも１つの三次元逆畳み込み動作を前記信号の一部に適用するように訓練されている、工程をさらに備える、請求項２１または２２に記載のコンピュータに実装される方法。
【請求項２４】
前記少なくとも１つの三次元逆畳み込み動作は、１以上の三次元フィルタに少なくとも基づいて、前記信号の一部の逆畳み込みを行い、前記三次元逆畳み込み動作は、ビデオ・コンテンツの表現の信号サイズを増大させる、請求項２３に記載のコンピュータに実装される方法。
【請求項２５】
畳み込みニューラル・ネットワークを使用して前記ビデオ・フレームのセットを処理して、１以上の信号を出力する工程であって、前記畳み込みニューラル・ネットワークは、（ｉ）二次元畳み込み層のセットと、（ｉｉ）三次元畳み込み層のセットと、を含む、工程は、
前記コンピューティング・システムが、前記ビデオ・フレームのセットの表現を前記二次元畳み込み層のセットに入力して、第１の信号のセットを出力する工程であって、前記二次元畳み込み層は、少なくとも１つの二次元畳み込み動作をビデオ・コンテンツの前記表現に適用するように訓練されている、工程と、
前記コンピューティング・システムが、前記第１の信号のセットの少なくとも一部を前記三次元畳み込み層のセットに入力して、第２の信号のセットを出力する工程であって、前記三次元畳み込み層は、少なくとも１つの三次元畳み込み動作を前記第１の信号のセットに適用するように訓練されている、工程と、をさらに備える、請求項２１〜２４のいずれか一項に記載のコンピュータに実装される方法。
【請求項２６】
前記少なくとも１つの二次元畳み込み動作は、１以上の二次元フィルタに少なくとも基づいて、前記ビデオ・コンテンツの前記表現を畳み込み、前記二次元畳み込み動作は、前記ビデオ・コンテンツの前記表現の信号サイズを縮小させる、請求項２５に記載のコンピュータに実装される方法。
【請求項２７】
前記少なくとも１つの三次元畳み込み動作は、１以上の三次元フィルタに少なくとも基づいて、前記第１の信号のセットを畳み込み、前記三次元畳み込み動作は、前記ビデオ・コンテンツの前記表現の信号サイズを縮小させる、請求項２５または２６に記載のコンピュータに実装される方法。
【請求項２８】
前記ビデオ・フレームのセットは、３つ以上のビデオ・フレームを含む、請求項２１〜２７のいずれか一項に記載のコンピュータに実装される方法。
【請求項２９】
システムであって、
少なくとも１つのプロセッサと、
命令を記憶するメモリと、を備え、前記命令は、前記少なくとも１つのプロセッサによって実行されるとき、前記システムに、
第１の解像度のビデオ・フレームのセットを得る工程と、
畳み込みニューラル・ネットワークを使用して前記ビデオ・フレームのセットを処理して、１以上の信号を出力する工程であって、前記畳み込みニューラル・ネットワークは、（ｉ）二次元畳み込み層のセットと、（ｉｉ）三次元畳み込み層のセットと、を含み、前記処理によって、前記ビデオ・フレームのセットを第２の解像度に低下させる、工程と、
前記畳み込みニューラル・ネットワークの三次元逆畳み込み層のセットを使用して前記１以上の信号を処理する工程と、
前記畳み込みニューラル・ネットワークから、前記ビデオ・フレームのセットに対応する１以上の出力を得る工程と、を行わせる、システム。
【請求項３０】
前記ビデオ・フレームのセットに対応する前記１以上の出力を得る工程は、前記システムに、
前記ビデオ・フレームのセット内の１以上のボクセルに対する１以上のそれぞれの特徴記述子を得る工程であって、各特徴記述子は、認識されたシーン、オブジェクト、またはアクションを参照する、工程と、
前記ビデオ・フレームのセット内の１以上のボクセルに対するそれぞれのオプティカル・フローを得る工程であって、ボクセルに対する前記オプティカル・フローは、少なくとも、前記ボクセルの予想された方向と大きさとを記述する、工程と、
前記ビデオ・フレームのセット内の１以上のボクセルに対するそれぞれのオプティカル・フローを得る工程と、のうちの少なくとも１つをさらに行わせ、ボクセルに対する前記オプティカル・フローは、少なくとも、前記ボクセルの予想された方向と大きさとを記述し、各ボクセルは、特定の時間におけるピクセルである、請求項２９に記載のシステム。
【請求項３１】
前記畳み込みニューラル・ネットワークの前記三次元逆畳み込み層のセットを使用して前記１以上の信号を処理する工程は、前記システムに、
コンピューティング・システムが、前記三次元畳み込み層のセットによって生成された信号の少なくとも一部を、前記三次元逆畳み込み層のセットに入力する工程であって、前記三次元逆畳み込み層は、少なくとも１つの三次元逆畳み込み動作を前記信号の一部に適用するように訓練されている、工程をさらに行わせる、請求項２９または３０に記載のシステム。
【請求項３２】
命令を含み、前記命令は、コンピューティング・システムの少なくとも１つのプロセッサによって実行されるとき、前記コンピューティング・システムに、
第１の解像度のビデオ・フレームのセットを得る工程と、
畳み込みニューラル・ネットワークを使用して前記ビデオ・フレームのセットを処理して、１以上の信号を出力する工程であって、前記畳み込みニューラル・ネットワークは、（ｉ）二次元畳み込み層のセットと、（ｉｉ）三次元畳み込み層のセットと、を含み、前記処理によって、前記ビデオ・フレームのセットを第２の解像度に低下させる、工程と、
前記畳み込みニューラル・ネットワークの三次元逆畳み込み層のセットを使用して前記１以上の信号を処理する工程と、
前記畳み込みニューラル・ネットワークから、前記ビデオ・フレームのセットに対応する１以上の出力を得る工程と、を行わせる、非一時的なコンピュータ可読記憶媒体。
【請求項３３】
前記ビデオ・フレームのセットに対応する前記１以上の出力を得る工程は、前記コンピューティング・システムに、
前記ビデオ・フレームのセット内の１以上のボクセルに対する１以上のそれぞれの特徴記述子を得る工程であって、各特徴記述子は、認識されたシーン、オブジェクト、またはアクションを参照する、工程と、
前記ビデオ・フレームのセット内の１以上のボクセルに対するそれぞれのオプティカル・フローを得る工程であって、ボクセルに対する前記オプティカル・フローは、少なくとも、前記ボクセルの予想された方向と大きさとを記述する、工程と、
前記ビデオ・フレームのセット内の１以上のボクセルに対するそれぞれのオプティカル・フローを得る工程のうちの少なくとも１つをさらに行わせ、ボクセルに対する前記オプティカル・フローは、少なくとも、前記ボクセルの予想された方向と大きさとを記述し、各ボクセルは、特定の時間におけるピクセルである、請求項３２に記載の非一時的なコンピュータ可読記憶媒体。
【請求項３４】
前記畳み込みニューラル・ネットワークの前記三次元逆畳み込み層のセットを使用して前記１以上の信号を処理する工程は、前記コンピューティング・システムに、
前記コンピューティング・システムが、前記三次元畳み込み層のセットによって生成された信号の少なくとも一部を、前記三次元逆畳み込み層のセットに入力する工程であって、前記三次元逆畳み込み層は、少なくとも１つの三次元逆畳み込み動作を前記信号の一部に適用するように訓練されている、工程をさらに行わせる、請求項３２または３３に記載の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メディア処理の分野に関する。より具体的には、本技術は、畳み込みニューラル・ネットワークを使用してビデオ・コンテンツを処理するための技術に関する。
【背景技術】
【０００２】
今日、人々は、多種多様な目的のためにコンピューティング・デバイスまたはシステムをしばしば利用する。例えば、ユーザは、自身のコンピューティング・デバイス（またはシステム）を使用して、互いに対話し、コンテンツを作成し、情報を共有し、かつ、情報にアクセスできる。場合によっては、コンピューティング・デバイスのユーザは、コンピューティング・デバイスのカメラまたは他のイメージ・センサを利用して、ビデオ・コンテンツなどのメディア・コンテンツを撮像または記録できる。
【図面の簡単な説明】
【０００３】
【図１】本開示の一実施形態による、１つまたは複数の畳み込みニューラル・ネットワークを使用してビデオ・コンテンツを解析するように構成された例示的なコンテンツ解析モジュールを含む例示的なシステムの図。
【図２】本開示の一実施形態による、ビデオ・コンテンツを解析するように構成された例示的なニューラル・ネットワーク・モジュールの図。
【図３】本開示の一実施形態による、畳み込みニューラル・ネットワークの例示的な図。
【図４】本開示の一実施形態による、畳み込みニューラル・ネットワークの別の例示的な図。
【図５】本開示の一実施形態による、畳み込みニューラル・ネットワークを使用してビデオ・フレームのセットを処理するための例示的な方法を示す図。
【図６】本開示の一実施形態による、畳み込みニューラル・ネットワークを使用してビデオ・フレームのセットを処理するための別の例示的な方法を示す図。
【図７】本開示の一実施形態による、多様なシナリオで利用することができる例示的なソーシャル・ネットワーキング・システムを含む例示的なシステムのネットワーク図。
【図８】本開示の一実施形態による、多様なシナリオで利用することができるコンピュータ・システムまたはコンピューティング・デバイスの例を示す図。
【発明を実施するための形態】
【０００４】
本開示の様々な実施形態は、第１の解像度のビデオ・フレームのセットを得るように構成されたシステム、方法、および非一時的なコンピュータ可読媒体を含み得る。畳み込みニューラル・ネットワークを使用してビデオ・フレームのセットを処理して、１以上の信号を出力する。畳み込みニューラル・ネットワークは、（ｉ）二次元畳み込み層のセットと、（ｉｉ）三次元畳み込み層のセットと、を含み、該処理によって、ビデオ・フレームのセットを第２の解像度に低下させる。畳み込みニューラル・ネットワークの三次元逆畳み込み層のセットを使用して１以上の信号を処理する。畳み込みニューラル・ネットワークから、ビデオ・フレームのセットに対応する１以上の出力を得る。
【０００５】
一実施形態では、システム、方法、および非一時的なコンピュータ可読媒体は、ビデオ・フレームのセット内の１以上のボクセルに対する１以上のそれぞれの特徴記述子を得るように構成され、各特徴記述子は、認識されたシーン、オブジェクト、またはアクションを参照する。
【０００６】
一実施形態では、システム、方法、および非一時的なコンピュータ可読媒体は、ビデオ・フレームのセット内の１以上のボクセルに対するそれぞれのオプティカル・フローを得るように構成され、ボクセルに対するオプティカル・フローは、少なくとも、ボクセルの予想された方向と大きさとを記述する。
【０００７】
一実施形態では、システム、方法、および非一時的なコンピュータ可読媒体は、ビデオ・フレームのセット内の１以上のボクセルに対するそれぞれの奥行きの測定値を得るように構成される。
【０００８】
一実施形態では、システム、方法、および非一時的なコンピュータ可読媒体は、三次元畳み込み層のセットにより生成された信号の少なくとも一部を、三次元逆畳み込み層のセットに入力するように構成され、三次元逆畳み込み層は、少なくとも１つの三次元逆畳み込み動作を信号の一部に適用するように訓練されている。
【０００９】
一実施形態では、少なくとも１つの三次元逆畳み込み動作は、１以上の三次元フィルタに少なくとも基づいて、信号の一部の逆畳み込みを行い、三次元逆畳み込み動作は、ビデオ・コンテンツの表現の信号サイズを増大させる。
【００１０】
一実施形態では、システム、方法、および非一時的なコンピュータ可読媒体は、ビデオ・フレームのセットの表現を二次元畳み込み層のセットに入力して、第１の信号のセットを出力するように構成され、二次元畳み込み層は、少なくとも１つの二次元畳み込み動作をビデオ・コンテンツの表現に適用するように訓練されている。また、システム、方法、および非一時的なコンピュータ可読媒体は、第１の信号のセットの少なくとも一部を三次元畳み込み層のセットに入力して、第２の信号のセットを出力するように構成され、三次元畳み込み層は、少なくとも１つの三次元畳み込み動作を第１の信号のセットに適用するように訓練されている。
【００１１】
一実施形態では、少なくとも１つの二次元畳み込み動作は、１以上の二次元フィルタに少なくとも基づいて、ビデオ・コンテンツの表現を畳み込み、二次元畳み込み動作は、ビデオ・コンテンツの表現の信号サイズを縮小させる。
【００１２】
一実施形態では、少なくとも１つの三次元畳み込み動作は、１以上の三次元フィルタに少なくとも基づいて、第１の信号のセットを畳み込み、三次元畳み込み動作は、ビデオ・コンテンツの表現の信号サイズを縮小させる。
【００１３】
一実施形態では、ビデオ・フレームのセットは、３つ以上のビデオ・フレームを含む。
開示された技術の多くの他の特徴、用途、実施形態、および／または変形例は、添付の図面および以下の詳細な説明から明らかとなることを理解されたい。開示技術の原理から逸脱することなく、本明細書に記載の構造、システム、非一時的なコンピュータ可読媒体、および方法の追加の実装および／または代替の実装を採用できる。
【００１４】
本発明に係る実施形態は、具体的には、方法、記憶媒体、システムおよびコンピュータ・プログラム製品へ向けられる添付の特許請求の範囲において開示され、１つの請求項のカテゴリ、例えば、方法において記載される任意の特徴は、別の請求項のカテゴリ、例えば、システムにおいても特許請求され得る。添付の特許請求の範囲における従属関係または参照は、形式的な理由のために選ばれているにすぎない。しかしながら、添付の特許請求の範囲において選ばれた従属関係に関わらず、請求項の任意の組み合わせおよびその特徴が開示され、特許請求され得るように、（特に、多数従属形式で）任意の先行請求項への意図的な参照に由来する任意の主題も、特許請求され得る。特許請求され得る主題は、添付の特許請求の範囲において述べられる特徴の組み合わせだけでなく、特許請求の範囲における特徴の任意の他の組み合わせも備え、特許請求の範囲において記載される各特徴は、特許請求の範囲における任意の他の特徴と、または他の特徴の組み合わせと、組み合わせられ得る。さらに、本明細書において説明または図示される実施形態および特徴のうちの任意のものは、別個の請求項において特許請求されてもよく、および／または、本明細書において説明もしくは図示される任意の実施形態もしくは特徴との任意の組み合わせにおいて特許請求されてもよく、または添付の特許請求の範囲の特徴のうちの任意のものとの組み合わせにおいて特許請求されてもよい。
【００１５】
図面は、開示される技術の様々な技術を例示の目的のために図示するものにすぎず、図面は、同様の要素を識別するために同様の参照符号を使用する。当業者は、本明細書において説明される開示される技術の原理から逸脱することなく、図面に例示される構造および方法の代替的実施形態が採用され得ることを、下記の議論から容易に認識するであろう。
【００１６】
畳み込みニューラル・ネットワークを使用したコンテンツ処理
人々は、多種多様な目的のためにコンピューティング・デバイスまたはコンピューティング・システムを使用する。コンピューティング・デバイスは、様々な種類の機能を提供することができる。ユーザは、コンピューティング・デバイスを活用して、情報を生み出し、情報にアクセスし、かつ、情報を共有することができる。いくつかの場合において、コンピューティング・デバイスは、ビデオなどのメディア・コンテンツを撮像または記録できるカメラを備えるか、またはこれらに対応することができる。ビデオは、一般的には、様々なシーン、アイテム、主題、または他のオブジェクトを撮像または表現できるフレームのセットを備えることができる。連続的にまたは別の方法で撮影されたフレームのセットはまた、様々な動き、アクション、または経時的な外観の他の変化を撮像できる。
【００１７】
セマンティック・セグメンテーション（例えば、シーン、オブジェクト、動き等を認識することなどの特徴認識）、オプティカル・フロー、および奥行き認識などの様々な目的のためにビデオ・コンテンツを処理することに対する従来のアプローチは、非効率であり、および／または信頼できないものである場合がある。１つの例では、従来の畳み込みニューラル・ネットワークは、ビデオ・フレームのセット内の特徴を確実に認識することができない場合がある。さらに、ビデオ・コンテンツのサイズまたは解像度は、畳み込みニューラル・ネットワーク内の様々な層のそれぞれにより処理されると、典型的には、低下し、その結果、かかる信頼性が損なわれる原因となる。いくつかの例を挙げると、従来のアプローチはまた、畳み込みニューラル・ネットワークが、特徴認識、オプティカル・フロー、奥行き認識などの特定のタスクを正確に実行することができるように、畳み込みニューラル・ネットワークの様々な構成が必要な場合があるという意味で限定的である場合がある。したがって、かかる従来のアプローチは、ビデオ・コンテンツの準最適処理を提供することができるが、これらの問題およびコンピュータ技術において発生する他の問題に対処するには効率的ではない場合がある。
【００１８】
コンピュータ技術に根付く改良型のアプローチにより、コンピュータ技術の領域において具体的に発生する従来のアプローチに関連する上記および他の欠点が克服される。様々な実施形態では、二次元畳み込み層のセットと、三次元畳み込み層のセットと、三次元逆畳み込み層のセットと、を有する、畳み込みニューラル・ネットワークを訓練および利用して、例えば、特徴認識、オプティカル・フロー、および／または奥行き認識を含む様々なタイプのタスクを実行することができる。いくつかの実施形態では、畳み込みニューラル・ネットワークを訓練して、ビデオ・フレームのセット内の任意のボクセルに関して、特徴記述子の対応するセット、オプティカル・フロー（例えば、ボクセルの予想された方向と大きさ）、および／または奥行き認識を予想することができる。かかる実施形態では、ビデオ・フレームのセットは、二次元畳み込み層により処理されて、第１の信号のセットを出力することができる。第１の信号のこのセットは、三次元畳み込み層により処理されて、第２の信号のセットを出力することができる。第２の信号のセットは、二次元および三次元畳み込み層により処理されることに起因して低減する場合があるビデオ・コンテンツのサイズまたは解像度をアップスケールするために訓練される、三次元逆畳み込み層により処理されることができる。アップスケールされた信号は、畳み込みニューラル・ネットワークのソフトマックス層に入力されて、１つまたは複数の出力を生成することができる。出力は、畳み込みニューラル・ネットワークの訓練およびソフトマックス層が利用する損失関数に応じて変動し得る。例えば、出力は、ビデオ・フレームのセット内のボクセル、ビデオ・フレームのセット内のボクセルに対するそれぞれのオプティカル・フロー、またはビデオ・フレームのセット内のボクセルに対して認識されたそれぞれの奥行きに対応する認識されたシーン、オブジェクト、または動きを示す１つもしくは複数の特徴記述子であってもよい。
【００１９】
図１は、本開示の一実施形態による、１つまたは複数の畳み込みニューラル・ネットワーク（ＣＮＮ）を使用してビデオ・コンテンツを解析するように構成された例示的なコンテンツ解析モジュール１０２を備える、例示的なシステム１００を示す。図１の例に示すように、例示的なコンテンツ解析モジュール１０２は、コンテンツ・モジュール１０４と、畳み込みニューラル・ネットワーク・モジュール１０６と、を含み得る。場合によっては、例示的なシステム１００は、少なくとも１つのデータ・ストア１０８を備え得る。本図および本明細書における全ての図に示される構成要素（例えば、モジュール、要素など）は、単なる例示にすぎず、他の実装は、追加の、より少ない、統合された、または異なる構成要素を含むことができる。関連する詳細を不明瞭にしないように、一部の構成要素を図示しない場合がある。
【００２０】
いくつかの実施形態では、ソフトウェア、ハードウェア、またはこれらの任意の組み合わせとして、コンテンツ解析モジュール１０２を、部分的にまたは全体的に実装することができる。概して、本明細書で考察されるようなモジュールは、ソフトウェア、ハードウェア、またはこれらの任意の組み合わせと関連付けることができる。いくつかの実装において、モジュールの１つまたは複数の機能、タスク、および／または動作を、ソフトウェア・ルーチン、ソフトウェア・プロセス、ハードウェア、および／またはこれらの任意の組み合わせによって実行または行うことができる。いくつかの場合において、コンテンツ解析モジュール１０２は、ユーザ・コンピューティング・デバイスまたはクライアント・コンピューティング・デバイス上などの１つまたは複数のコンピューティング・デバイスまたはシステム上で実行するソフトウェアとして、部分的にまたは全体的に実装することができる。１つの例では、コンテンツ解析モジュール１０２またはこの少なくとも一部は、図７のユーザ・デバイス７１０などのユーザ・コンピューティング・デバイスまたはクライアント・コンピューティング・システム上で稼動するアプリケーション（例えば、ａｐｐ）、プログラム、またはアプレットなどとして実装するか、またはこれらの中に実装することができる。別の例では、コンテンツ解析モジュール１０２またはその少なくとも一部は、ネットワーク・サーバまたはクラウド・サーバなどの１つまたは複数のサーバを含む１つまたは複数のコンピューティング・デバイスまたはコンピューティング・システムを使用して実装することができる。場合によっては、コンテンツ解析モジュール１０２は、図７のソーシャル・ネットワーキング・システム７３０などのソーシャル・ネットワーキング・システム（またはソーシャル・ネットワーキング・サービス）内で部分的にまたは全体的に実装されるか、これと連結して部分的にまたは全体的に動作するように構成することができる。
【００２１】
コンテンツ解析モジュール１０２は、例示的なシステム１００に示すように、少なくとも１つのデータ・ストア１０８と通信および／または動作するように構成され得る。少なくとも１つのデータ・ストア１０８は、多様なタイプのデータを記憶および維持するように構成され得る。いくつかの実装において、少なくとも１つのデータ・ストア１０８は、ソーシャル・ネットワーキング・システム（例えば、図７のソーシャル・ネットワーキング・システム７３０）に関連付けられている情報を記憶することができる。ソーシャル・ネットワーキング・システムに関連付けられている情報としては、ユーザ、ソーシャルつながり、ソーシャル対話、位置、ジオフェンス・エリア、地図、場所、イベント、ページ、グループ、投稿、通信、コンテンツ、フィード、アカウント設定、プライバシー設定、ソーシャル・グラフについてのデータ、および多様な他のタイプのデータが挙げられる。いくつかの実装において、少なくとも１つのデータ・ストア１０８は、ユーザ識別子、ユーザ情報、プロフィール情報、ユーザ指定の設定、ユーザによって生成または投稿されたコンテンツ、および多様な他のタイプのユーザ・データなどの、ユーザに関連付けられている情報を記憶することができる。いくつかの実施形態では、少なくとも１つのデータ・ストア１０８は、コンテンツ解析モジュール１０４により得ることができるビデオ・コンテンツを含むメディア・コンテンツを記憶することができる。場合によっては、少なくとも１つのデータ・ストア１０８はまた、１つまたは複数の畳み込みニューラル・ネットワークを訓練するためのトレーニング・データを記憶することができる。１つの例では、トレーニング・データは、例えば、ビデオ・コンテンツに関する任意のラベル、タグ、属性、プロパティ、および／または説明とともにビデオ・コンテンツを含んでもよい。かかるトレーニング・データを使用して、例えば、フレームのセットに対して、セマンティック・セグメンテーションを行う（例えば、特徴記述子を予想する）ための畳み込みニューラル・ネットワークを訓練することができる。別の例では、トレーニング・データは、フレームのセットに対応するピクセルまたはボクセルのそれぞれの方向および大きさなどのフレームのセットのオプティカル・フローを予想するための畳み込みニューラル・ネットワークを訓練するために使用できる１つまたは複数のグラウンド・トゥルース・オプティカル・フロー・データ・セットを含むことができる。別の例では、トレーニング・データは、フレームのセットに対する奥行きを予想するための畳み込みニューラル・ネットワークを訓練するために使用できる１つまたは複数のグラウンド・トゥルース・奥行き認識データ・セットを含むことができる。多くの変形例が可能であることを理解されたい。
【００２２】
コンテンツ・モジュール１０４は、解析すべきビデオ・コンテンツを取得および／または受信するように構成することができる。ビデオ・コンテンツは、例えば、画像もしくはビデオ・フレームのセット、またはビデオ・ファイルであってもよい。様々な実施形態では、ビデオ・コンテンツは、ソーシャル・ネットワーキング・システムのユーザおよび／またはコンテンツ・プロバイダにより提供され（例えば、アップロードされ）得る。いくつかの実施形態では、かかるビデオ・コンテンツは、データ・ストア１０８に記憶されてもよく、コンテンツ・モジュール１０４は、データ・ストア１０８からビデオ・コンテンツを得るように構成されてもよい。
【００２３】
畳み込みニューラル・ネットワーク・モジュール１０６は、コンテンツ・モジュール１０４により提供されたビデオ・コンテンツなどのビデオ・コンテンツを解析するように構成され得る。様々な実施形態では、畳み込みニューラル・ネットワーク・モジュール１０６は、各々が様々なタスクを行うように構成された１つまたは複数の畳み込みニューラル・ネットワークを使用してビデオ・コンテンツを評価できる。かかるタスクは、ビデオ・コンテンツに対応する、各ボクセル（つまり、時間のピクセル）、または少なくともボクセルの一部に対して、いくつか例を挙げれば、それぞれのセマンティック・セグメンテーション（例えば、ビデオ特徴記述子）、オプティカル・フロー（例えば、動きの方向および／もしくは方向の大きさ）、ならびに／または奥行き認識を予想する工程を伴い得る。例えば、ビデオ・フレームのセットは、森に駐輪された自転車の上をジャンプする猫を撮像してもよい。ここで、畳み込みニューラル・ネットワーク・モジュール１０６は、畳み込みニューラル・ネットワークを訓練および利用して、ビデオ・フレームのセット内のボクセルを、意味論的にセグメント分割してもよい。ボクセルを意味論的にセグメント分割する場合、畳み込みニューラル・ネットワーク・モジュール１０６は、かかる概念がビデオ・フレームのセットに存在するそれぞれの確率とともに、ビデオ・フレームのセットにおいて特定された概念に対応する特徴記述子のセットを決定してもよい。この例では、畳み込みニューラル・ネットワーク・モジュール１０６は、いくつかの例を挙げると、ビデオ・フレームのセット内の第１のボクセルが森のシーンの一部を表すのは、８４％の確率であり、ビデオ・フレームのセット内の第２のボクセルが猫のオブジェクトの一部を表すのは、９６％の確率であり、ビデオ・フレームのセット内の第３のボクセルが自転車のオブジェクトの一部を表すのは、８８％の確率であると決定してもよい。上記のように、いくつかの実施形態では、畳み込みニューラル・ネットワーク・モジュール１０６は、ビデオ・フレームのセット内のボクセル毎に、かかる予測を決定することができる。畳み込みニューラル・ネットワーク・モジュール１０６に関するさらに詳しい説明は、図２を参照して以下で行う。
【００２４】
図２は、本開示の一実施形態による、ビデオ・コンテンツを解析するように構成された例示的な畳み込みニューラル・ネットワーク・モジュール２０２を示す。いくつかの実施形態では、図１の畳み込みニューラル・ネットワーク・モジュール１０６は、例示的な畳み込みニューラル・ネットワーク・モジュール２０２として実装されてもよい。図２に示すように、例示的な畳み込みニューラル・ネットワーク・モジュール２０２は、トレーニング・モジュール２０４と、二次元畳み込みモジュール２０６と、三次元畳み込みモジュール２０８と、三次元逆畳み込みモジュール２１０と、を含み得る。
【００２５】
様々な実施形態では、畳み込みニューラル・ネットワーク・モジュール２０２は、各々が特定のタスクを行うように訓練された１つまたは複数の畳み込みニューラル・ネットワークを使用してビデオ・コンテンツを評価できる。かかるタスクは、ビデオ・コンテンツに対応する、各ボクセル、または少なくともボクセルの一部に対する、例えば、それぞれのセマンティック・セグメンテーション、オプティカル・フロー、および／または奥行き認識を予想する工程を伴い得る。いくつかの実施形態では、畳み込みニューラル・ネットワークは、１つまたは複数の二次元畳み込み層と、１つまたは複数の三次元畳み込み層と、１つまたは複数の三次元逆畳み込み層と、１つまたは複数のプーリング層と、を含んでもよい。
【００２６】
トレーニング・モジュール２０４を使用して、二次元畳み込みモジュール２０６により利用できる１つまたは複数の二次元畳み込み層と、三次元畳み込みモジュール２０８により利用できる１つまたは複数の三次元畳み込み層と、三次元逆畳み込みモジュール２１０により利用できる１つまたは複数の三次元逆畳み込み層と、を訓練することにより、畳み込みニューラル・ネットワークを訓練することができる。例えば、トレーニング・モジュール２０４を使用して、特定のタイプの出力または予想を提供するように畳み込みニューラル・ネットワークを訓練することができる。様々な実施形態では、出力は、ビデオ・コンテンツ内の１つまたは複数のボクセルに対応する予測であってもよい。ボクセルのために提供される予測は、畳み込みニューラル・ネットワークの訓練に応じて異なってもよい。トレーニング・モジュール２０４は、畳み込みニューラル・ネットワークを訓練して、例えば、データ・ストア（例えば、図１のデータ・ストア１０８）から得ることができるグラウンド・トゥルース・トレーニング・データを使用して、特定のタスク（例えば、セマンティック・セグメンテーション、オプティカル・フロー、および／またはボクセルに対する奥行き認識）を実行することができる。いくつかの実施形態では、畳み込みニューラル・ネットワークを訓練して、セマンティック・セグメンテーションを予想する場合、トレーニング・モジュール２０４は、少なくともシーン、オブジェクト、および／またはアクションを特定するために（例えば、ソーシャル・タグ、記述式タグ、ハッシュタグなどを使用して）標識されたビデオ・コンテンツを含むトレーニング・データを利用することができる。いくつかの実施形態では、畳み込みニューラル・ネットワークを訓練して、オプティカル・フローを予測する場合、トレーニング・モジュール２０４は、様々なビデオ・コンテンツに対するグラウンド・トゥルース・オプティカル・フローの出力（例えば、ボクセル毎の方向および大きさ）を含むトレーニング・データを利用できる。いくつかの実施形態では、畳み込みニューラル・ネットワークを訓練して、奥行き認識を予想する場合、トレーニング・モジュール２０４は、様々なビデオ・コンテンツに対するグラウンド・トゥルース奥行きの出力を含むトレーニング・データを利用できる。
【００２７】
様々な層（例えば、二次元畳み込み層、三次元畳み込み層、および／または二次元逆畳み込み層）の訓練を実行するために、トレーニング・モジュール２０４は、畳み込みニューラル・ネットワークによって、トレーニング・データ・セットのうちの任意のものを処理できる。畳み込みニューラル・ネットワークは、トレーニング・データに対する対応する出力のセットを生成することができる。これらの出力を、トレーニング・データに含まれるグラウンド・トゥルースの出力に対して比較して、畳み込みニューラル・ネットワークによって生成された出力の任意の不確かさを測定できる。様々な実施形態では、かかる不確かさは、畳み込みニューラル・ネットワークによって、バックプロパゲーションを実行することにより低下させることができる。バックプロパゲーションの間、トレーニング・モジュール２０４は、不確かさを最小限にするために、畳み込みニューラル・ネットワーク内の様々な層に関連付けられている１つまたは複数のフィルタの１つまたは複数の重み値を調整できる。多数の訓練の繰り返しを経て、バックプロパゲーションを実行することにより、最良の、または別の形で好適な重み値を、畳み込みニューラル・ネットワークのフィルタに対して決定することができる。場合によっては、フィルタに対する各重み値は、フィルタのピクセル値（例えば、ＲＧＢ値、１６進コードなど）に対応できる。
【００２８】
上記のように、畳み込みニューラル・ネットワーク・モジュール２０２は、特定のタスクを実行するように訓練されてきた畳み込みニューラル・ネットワークを使用してビデオ・コンテンツを処理できる。例えば、ビデオ・コンテンツは、推定処理において畳み込みニューラル・ネットワークにより、フォワード・プロパゲートされて、１つまたは複数の出力を発生させることができる。いくつかの実施形態では、畳み込みニューラル・ネットワークを訓練して、ビデオ・コンテンツ内のボクセル毎の特徴記述子を出力する。特徴記述子は、事前に定義された概念（例えば、シーン、オブジェクト、アクションなど）のリストにおける概念毎のそれぞれの信頼性の確率を提供することができる。概念に対する信頼性の確率は、概念がビデオ・コンテンツにおいて認識されるかどうかに関する蓋然性を示すことができる。いくつかの実施形態では、畳み込みニューラル・ネットワークを訓練して、ビデオ・コンテンツにおけるボクセル毎のオプティカル・フロー（例えば、方向および大きさ）を出力する。いくつかの実施形態では、畳み込みニューラル・ネットワークを訓練して、ビデオ・コンテンツにおけるボクセル毎の奥行きを出力する。ビデオ・コンテンツを処理する場合、１つまたは複数の二次元畳み込み層を使用して、少なくとも１つの二次元畳み込み動作をビデオ・コンテンツに適用するように、二次元畳み込みモジュール２０６を構成することができる。二次元畳み込み動作は、少なくとも１つの二次元フィルタを利用して、ビデオ・コンテンツの表現を畳み込むことができ、その結果、ビデオ・コンテンツの表現の信号サイズが縮小され得る。各二次元畳み込み層は、それぞれの二次元畳み込み動作をその受信された入力信号に適用することができ、フォワード・プロパゲーションの間に以降の層に入力され得る対応する出力信号を発生させることができる。いくつかの実施形態では、二次元畳み込み層から出力された信号は、１つまたは複数の三次元畳み込み層に入力される。
【００２９】
１つまたは複数の三次元畳み込み層を使用して、少なくとも１つの三次元畳み込み動作をビデオ・コンテンツに適用するように、三次元畳み込みモジュール２０８を構成することができる。三次元畳み込み動作は、少なくとも１つの三次元フィルタを利用して、ビデオ・コンテンツの表現を畳み込むことができ、その結果、ビデオ・コンテンツの表現の信号サイズが縮小され得る。各三次元畳み込み層は、それぞれの三次元畳み込み動作をその受信された入力信号に適用することができ、フォワード・プロパゲーションの間に以降の層に入力され得る対応する出力信号を発生させることができる。いくつかの実施形態では、三次元畳み込み層から出力された信号は、１つまたは複数の三次元逆畳み込み層に入力される。
【００３０】
１つまたは複数の三次元逆畳み込み層を使用して、少なくとも１つの三次元逆畳み込み動作をビデオ・コンテンツに適用するように、三次元逆畳み込みモジュール２１０を構成することができる。三次元逆畳み込み動作は、少なくとも１つの三次元フィルタを利用して、ビデオ・コンテンツの表現の逆畳み込みを行うことができる。訓練によって、このフィルタは、ビデオ・コンテンツをアップサンプリングするために必要である適切な重みを学習できる。各三次元逆畳み込み層は、それぞれの三次元逆畳み込み動作をその受信された入力信号に適用することができ、フォワード・プロパゲーションの間に以降の層に入力され得る対応する出力信号を発生させることができる。上記のように、各畳み込み動作により、受信された入力信号に関係して、発生された出力信号のサイズを縮小させることができる。よって、三次元畳み込みモジュール２０８から受信された出力は、二次元畳み込みモジュール２０６によって元々受信された入力信号に関係して低下され得る。様々な実施形態では、三次元逆畳み込みモジュール２１０は、畳み込みニューラル・ネットワーク・モジュール２０２に対して元々提供された入力信号と一致するように、三次元畳み込みモジュール２０８により受信された入力信号をアップサンプリングできる。換言すれば、三次元逆畳み込みモジュール２１０により利用された三次元逆畳み込み層を訓練して、畳み込みニューラル・ネットワーク・モジュール２０２に元々入力されたビデオ・コンテンツのグラフィカル解像度に一致するように、三次元畳み込みモジュール２０８により受信された入力信号のグラフィカル解像度（例えば、ピクセルの幅および高さ）を高めることができる。このアップサンプリングは、ビデオ・コンテンツのローカルな構造を評価し、その後、元々提出されたビデオ・コンテンツの解像度に対応するように解像度を高めるために、三次元逆畳み込み層を訓練することにより実行することができる。
【００３１】
図３は、本開示の一実施形態による、畳み込みニューラル・ネットワークの例示的な図３００を示す。例示的な図３００は、特定のタスクを実行するように訓練されてきた畳み込みニューラル・ネットワーク３０２の構造を示す。上記のように、畳み込みニューラル・ネットワーク３０２を訓練して、ビデオ・コンテンツ内のいくつかのまたは全てのボクセルの特徴記述子、オプティカル・フロー、または奥行きを予想することができる。図３に示すように、例示的な畳み込みニューラル・ネットワーク３０２は、二次元畳み込み層３１０のセットと、三次元畳み込み層３２０のセットと、三次元逆畳み込み層３３０のセットと、を含んでもよい。二次元畳み込み層３１０と、三次元畳み込み層３２０と、三次元逆畳み込み層３３０と、に含まれるそれぞれの層の数は、実装に応じて異なってもよい。いくつかの実施形態では、二次元畳み込み層３１０のセットは、少なくとも５つの二次元畳み込み層を含むことができ、三次元畳み込み層３２０のセットは、少なくとも３つの三次元畳み込み層を含むことができ、三次元逆畳み込み層３３０のセットは、少なくとも３つの三次元逆畳み込み層を含むことができる。いくつかの実施形態では、畳み込みニューラル・ネットワーク３０２は、全結合層３４０のセットを含むことができる。さらに、いくつかの実施形態では、畳み込みニューラル・ネットワーク３０２は、ソフトマックス層３５０を含むことができる。少なくとも各層の一部は、少なくとも別の層の一部と結合することができ、情報は、層を介して送信することができる。
【００３２】
場合によっては、畳み込みニューラル・ネットワークを介するフォワード・プロパゲーションの間、ビデオ・コンテンツ３６０を記述するデータは、二次元畳み込み層３１０のセット内の第１の二次元畳み込み層に入力されて、出力３８０を生成することができる。二次元畳み込み層３１０は、１つまたは複数の二次元畳み込み動作をビデオ・コンテンツ３６０の表現に適用することができる。各二次元畳み込み動作は、ビデオ・コンテンツ３６０の表現を畳み込むために少なくとも１つの二次元フィルタを利用できる。二次元畳み込み層３１０は、二次元畳み込み動作を実行する際、出力信号を生成することができる。これらの出力信号は、フォワード・プロパゲーションの間、畳み込みニューラル・ネットワーク３０２内の次の層に入力することができる。この例では、出力信号は、三次元畳み込み層３２０に入力される。三次元畳み込み層３２０は、１つまたは複数の三次元畳み込み動作を二次元畳み込み層３１０から受信された入力信号に適用することができる。各三次元畳み込み動作は、入力信号の表現を畳み込むために少なくとも１つの三次元フィルタを利用できる。三次元畳み込み層３２０は、三次元畳み込み動作を実行する際、出力信号を生成することができる。これらの出力信号は、フォワード・プロパゲーションの間、畳み込みニューラル・ネットワーク３０２内の次の層に入力することができる。この例では、出力信号は、三次元逆畳み込み層３３０に入力される。三次元逆畳み込み層３３０は、１つまたは複数の三次元逆畳み込み動作を、三次元畳み込み層３２０から受信した入力信号に適用することができる。各三次元逆畳み込み動作は、入力信号の表現の逆畳み込みを行うために少なくとも１つの三次元フィルタを利用できる。三次元逆畳み込み層３３０は、三次元逆畳み込み動作を実行する際、出力信号を生成することができる。これらの出力信号は、フォワード・プロパゲーションの間、畳み込みニューラル・ネットワーク３０２内の次の層に入力することができる。いくつかの実施形態では、三次元逆畳み込み層から出力された信号のうちいくつかまたは全ては、全結合層３４０のセットに入力される。畳み込みニューラル・ネットワーク３０２からの１つまたは複数の出力３８０は、全結合層３４０から出力された信号に基づいて発生させることができる。いくつかの実施形態では、出力３８０は、ソフトマックス層３５０により正規化または調整されることができる。
【００３３】
上記のように、この出力３８０は、ビデオ・コンテンツのいくつかのまたは全てのボクセルの特徴記述子、オプティカル・フロー、または奥行きを記述することができる。いくつかの実施形態では、畳み込みニューラル・ネットワーク３０２に入力されたビデオ・コンテンツ３６０は、所定の長さのフレーム（例えば、ビデオ・コンテンツの一部に対応する１６個のフレーム）のセットである。かかる実施形態では、畳み込みニューラル・ネットワーク３０２により生成された出力３８０は、入力されたフレームのセットと長さは同じである。よって、例えば、畳み込みニューラル・ネットワーク３０２に入力されたフレームのセットの長さが１６個のフレームの場合、出力３８０は、１６個のフレームの長さを有する情報（例えば、セマンティック・セグメンテーション、オプティカル・フロー、または奥行き）を提供することができる。いくつかの実施形態では、畳み込みニューラル・ネットワーク３０２は、追加の平滑化を必要とせず、多数のフレームに亘って滑らかな軌跡を自動的に提供する。例えば、ソフトマックス層３５０により利用された損失関数は、実行するように畳み込みニューラル・ネットワーク３０２が訓練されたタスク（例えば、セマンティック・セグメンテーション、オプティカル・フロー、奥行き認識）に応じて異なってもよい。いくつかの実施形態では、出力３８０の解像度は、入力３６０の解像度と同じである。
【００３４】
図４は、本開示の一実施形態による、畳み込みニューラル・ネットワーク４００の別の例示的な図を示す。この例では、畳み込みニューラル・ネットワーク４００は、第１のコンポーネント４０２と、第２のコンポーネント４０４と、を含む。第１のコンポーネント４０２は、図３を参照して説明したように、二次元畳み込み層のセットと、三次元畳み込み層のセットと、を含むことができる。第２のコンポーネント４０４は、図３を参照して説明したように、三次元逆畳み込み層のセットを含むことができる。畳み込みニューラル・ネットワーク４００の第１のコンポーネント４０２は、特定のサイズ（つまり、解像度）を有するフレームのセットを、入力として受信することができる。この例では、フレームのセットは、１００ピクセルの高さおよび１００ピクセルの幅（つまり、１００×１００ピクセル）を有する。上記のように、フレームのサイズは、畳み込み動作が畳み込みニューラル・ネットワーク４００の様々な層により実行される場合、縮小する場合がある。サイズの縮小は、典型的には、プーリング層にて生じ、縮小量は、プーリング・パラメータに応じて変動し得る。この例では、第１の層４０６および対応するプーリング層を介するフレームのフォワード・プロパゲーション後、フレームのサイズは１００×１００ピクセルから５０×５０ピクセルに縮小され得る。同様に、第２の層４０８および対応するプーリング層を介するフレームのフォワード・プロパゲーション後、フレームのサイズは５０×５０ピクセルから２５×２５ピクセルに縮小され得る。次に、第３の層４１０および対応するプーリング層を介するフレームのフォワード・プロパゲーション後、フレームのサイズは２５×２５ピクセルから１２×１２ピクセルに縮小され得る。最後に、第４の層４１２および対応するプーリング層を介するフレームのフォワード・プロパゲーション後、フレームのサイズは１２×１２ピクセルから６×６ピクセルに縮小され得る。
【００３５】
次に、第２のコンポーネント４０４を利用して、第１のコンポーネント４０２からの様々な出力に対して逆畳み込み動作を実行することができ、その結果、（例えば、それぞれの出力のサイズを倍にすることにより）様々な出力をアップサンプリングさせることができる。図４の例では、畳み込みニューラル・ネットワーク４００の第１のコンポーネント４０２の第５の層４１４からの出力は、１つまたは複数の逆畳み込み動作を実行して第５の層４１４からの出力をアップサンプリングする、第１の逆畳み込み層４１６に入力される。この例では、第１の逆畳み込み層４１６は、サイズが６×６ピクセルである、第５の層４１４からの出力を、サイズがそれぞれ１２×１２ピクセルである６４チャンネルにアップサンプリングする。いくつかの実施形態では、第４の層４１２からの出力は、１つまたは複数の畳み込み動作を行う別の層４１８に入力されて、サイズがそれぞれ１２×１２ピクセルである６４チャンネルを生成することができる。次に、サイズがそれぞれ１２×１２ピクセルである６４チャンネルである層４１８からの出力は、サイズがそれぞれ１２×１２ピクセルである６４チャンネルにアップサンプリングされている、第１の逆畳み込み層４１６からの出力と連結され得る（４２０）。この例では、連結後、サイズがそれぞれ１２×１２ピクセルである１２８チャンネルが存在することになる。サイズがそれぞれ１２×１２ピクセルである１２８チャンネルの連結された出力を、１つまたは複数の逆畳み込み動作を実行する第２の逆畳み込み層４２２に入力して、連結された出力４２０を、サイズが１２×１２ピクセルである１２８チャンネルからサイズが２５×２５ピクセルである６４チャンネルへアップサンプリングできる。
【００３６】
いくつかの実施形態では、第３の層４１０からの出力を、１つまたは複数の畳み込み動作を実行する別の層４２４に入力して、サイズがそれぞれ２５×２５ピクセルである６４チャンネルを生成することができる。次に、サイズがそれぞれ２５×２５ピクセルである６４チャンネルである、層４２４からの出力は、サイズがそれぞれ２５×２５ピクセルである６４チャンネルにアップサンプリングされている、第２の逆畳み込み層４２２からの出力と連結され得る（４２６）。この例では、連結後、サイズがそれぞれ２５×２５ピクセルである１２８チャンネルが存在することになる。サイズがそれぞれ２５×２５ピクセルである１２８チャンネルの連結された出力を、１つまたは複数の逆畳み込み動作を実行する第３の逆畳み込み層４２８に入力して、連結された出力４２６を、サイズが２５×２５ピクセルである１２８チャンネルからサイズが５０×５０ピクセルである６４チャンネルへアップサンプリングできる。
【００３７】
いくつかの実施形態では、第２の層４０８からの出力を、１つまたは複数の畳み込み動作を実行する別の層４３０に入力して、サイズがそれぞれ５０×５０ピクセルである６４チャンネルを生成することができる。次に、サイズがそれぞれ５０×５０ピクセルである６４チャンネルである、層４３０からの出力は、サイズがそれぞれ５０×５０ピクセルである６４チャンネルにアップサンプリングされている、第３の逆畳み込み層４２８からの出力と連結され得る（４３２）。この例では、連結後、サイズがそれぞれ５０×５０ピクセルである１２８チャンネルが存在することになる。サイズがそれぞれ５０×５０ピクセルである１２８チャンネルの連結された出力を、１つまたは複数の逆畳み込み動作を実行する第４の逆畳み込み層４３４に入力して、連結された出力４３２を、サイズが５０×５０ピクセルである１２８チャンネルからサイズが１００×１００ピクセルである６４チャンネルへアップサンプリングできる。サイズが１００×１００ピクセルであるアップサンプリングされた出力をソフトマックス層４３６に入力して、正規化できる。上記のように、ソフトマックス層４３６により利用される損失関数は、実行するように畳み込みニューラル・ネットワーク４００が訓練されるタスクに応じて異なってもよい。実装に応じて、かかるタスクは、ビデオ・コンテンツ４０５に対応する、各ボクセル、またはボクセルの少なくとも一部に対して、いくつか例を挙げれば、それぞれのセマンティック・セグメンテーション（例えば、ビデオ特徴記述子）、オプティカル・フロー（例えば、動きの方向および／もしくは方向の大きさ）、または奥行き認識を予想する工程を伴ってもよい。フィルタ、プーリング動作、および／または畳み込み動作の数は、実装に応じて異なってもよく、指定されてもよい。同様に、フレーム・サイズ、フィルタ・サイズ、プーリング・サイズ、およびストライド値は、実装に応じて異なってもよく、指定されてもよい。さらに、記述子の数は、実装に応じて異なってもよく、指定されてもよい。
【００３８】
図５は、本開示の一実施形態による、畳み込みニューラル・ネットワークを使用してビデオ・フレームのセットを処理するための例示的な方法５００を示す。別段の記載がない限り、様々な実施形態の範囲内で、類似のもしくは代替の順序で、または並行して実行される、追加の、より少ない、または代替の工程が存在し得ることを理解されたい。ブロック５０２では、例示的な方法５００は、第１の解像度のビデオ・フレームのセットを得ることができる。ブロック５０４では、例示的な方法５００は、畳み込みニューラル・ネットワークを使用してビデオ・フレームのセットを処理して、１つまたは複数の信号を出力することができ、畳み込みニューラル・ネットワークは、（ｉ）二次元畳み込み層のセットと、（ｉｉ）三次元畳み込み層のセットと、を含む。処理により、ビデオ・フレームのセットを第２の解像度に低下させることができる。ブロック５０６では、方法５００は、畳み込みニューラル・ネットワークの三次元逆畳み込み層のセットを使用して１つまたは複数の信号を処理できる。ブロック５０８では、方法５００は、畳み込みニューラル・ネットワークから、ビデオ・フレームのセットに対応する１つまたは複数の出力を得ることができる。
【００３９】
図６は、本開示の一実施形態による、畳み込みニューラル・ネットワークを使用してビデオ・フレームのセットを処理するための別の例示的な方法６００を示す。ここでも、別段の記載がない限り、様々な実施形態の範囲内で、類似のもしくは代替の順序で、または並行して実行される、追加の、より少ない、または代替の工程が存在し得ることを理解されたい。ブロック６０２では、例示的な方法６００は、ビデオ・フレームのセットの表現を二次元畳み込み層のセットに入力して、第１の信号のセットを出力することができる。二次元畳み込み層を訓練して、少なくとも１つの二次元畳み込み動作をビデオ・コンテンツの表現に適用することができる。ブロック６０４では、方法６００は、第１の信号のセットの少なくとも一部を三次元畳み込み層のセットに入力して、第２の信号のセットを出力することができる。三次元畳み込み層を訓練して、少なくとも１つの三次元畳み込み動作を第１の信号のセットに適用することができる。ブロック６０６では、方法６００は、三次元畳み込み層のセットにより生成された信号の少なくとも一部の信号を、三次元逆畳み込み層のセットに入力することができ、三次元逆畳み込み層を訓練して、少なくとも１つの三次元逆畳み込み動作を信号の一部に適用する。ブロック６０８では、方法６００は、三次元畳み込み層のセットにより生成された信号の少なくとも一部を畳み込みニューラル・ネットワークのソフトマックス層に入力して、１つまたは複数の出力を生成することができる。
【００４０】
本開示の様々な実施形態に関連する多くの他の使用、用途、および／または変形例が存在し得ることが想到される。例えば、いくつかの場合において、ユーザは、開示された技術を利用するか否かを選択することができる。開示された技術はまた、様々なプライバシー設定および嗜好が維持され、個人情報の漏洩を防止できることを保証することができる。別の例では、本開示の様々な実施形態は、経時的に学習、改善、および／または改良され得る。
【００４１】
ソーシャル・ネットワーキング・システム  −  例示的な実装
図７は、本開示の実施形態に係る、エンハンスト・ビデオ符号化のための様々な実施形態において利用され得る例示的なシステム７００のネットワーク図を例示する。システム７００は、１つまたは複数のユーザ・デバイス７１０と、１つまたは複数の外部システム７２０と、ソーシャル・ネットワーキング・システム７３０と、ネットワーク７５０とを含む。一実施形態において、上述される実施形態に関連して議論されるソーシャル・ネットワーキング・サービス、プロバイダ、および／またはシステムは、ソーシャル・ネットワーキング・システム７３０として実装され得る。例示の目的のために、図７によって示される、システム７００の実施形態は、単一の外部システム７２０と、単一のユーザ・デバイス７１０とを含む。ただし、他の実施形態において、システム７００は、より多くのユーザ・デバイス７１０、および／または、より多くの外部システム７２０を含んでもよい。特定の実施形態において、ソーシャル・ネットワーキング・システム７３０は、ソーシャル・ネットワーク・プロバイダによって運営されるのに対して、外部システム７２０は、異なるエンティティによって運営され得るという点で、ソーシャル・ネットワーキング・システム７３０とは別個のものである。しかしながら、様々な実施形態において、ソーシャル・ネットワーキング・システム７３０および外部システム７２０は、共に動作して、ソーシャル・ネットワーキング・システム７３０のユーザ（またはメンバー）に対してソーシャル・ネットワーキング・サービスを提供する。この意味において、ソーシャル・ネットワーキング・システム７３０は、外部システム７２０などの他のシステムがインターネット上のユーザに対してソーシャル・ネットワーキング・サービスおよび機能を提供するために使用し得るプラットフォームまたはバックボーンを提供する。
【００４２】
ユーザ・デバイス７１０は、ユーザから入力を受け取り、ネットワーク７５０を通じてデータを送受信することができる１つまたは複数のコンピューティング・デバイスを備える。一実施形態において、ユーザ・デバイス７１０は、例えば、マイクロソフト・ウィンドウズ（登録商標）と互換性のあるオペレーティング・システム（ＯＳ）、Ａｐｐｌｅ  ＯＳ  Ｘ、および／またはＬｉｎｕｘ（登録商標）ディストリビューションを実行する従来のコンピュータ・システムである。別の実施形態において、ユーザ・デバイス７１０は、スマートフォン、タブレット、携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、携帯電話等などのコンピュータ機能を有するデバイスであってもよい。ユーザ・デバイス７１０は、ネットワーク７５０を通じて通信するように構成される。ユーザ・デバイス７１０は、アプリケーション、例えば、ユーザ・デバイス７１０のユーザがソーシャル・ネットワーキング・システム７３０と相互作用することを可能にするブラウザ・アプリケーションを実行することができる。別の実施形態において、ユーザ・デバイス７１０は、ｉＯＳおよびＡＮＤＲＯＩＤ（登録商標）などの、ユーザ・デバイス７１０のネイティブ・オペレーティング・システムによって提供されるアプリケーション・プログラミング・インターフェース（ＡＰＩ）を通じてソーシャル・ネットワーキング・システム７３０を相互作用する。ユーザ・デバイス７１０は、ネットワーク７５０を通じて外部システム７２０およびソーシャル・ネットワーキング・システム７３０と通信するように構成される。ネットワーク７５０は、有線通信システムおよび／または無線通信システムを使用する、ローカル・エリア・ネットワークおよび／または広域ネットワークの任意の組み合わせを備え得る。
【００４３】
１つの実施形態において、ネットワーク７５０は、標準的な通信技術およびプロトコルを使用する。したがって、ネットワーク７５０は、イーサネット（登録商標）、７０２．１１、マイクロ波アクセスのための世界的相互運用性（ＷｉＭＡＸ：ｗｏｒｌｄｗｉｄｅ
ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  ｆｏｒ  ｍｉｃｒｏｗａｖｅ  ａｃｃｅｓｓ）、３Ｇ、４Ｇ、ＣＤＭＡ、ＧＳＭ（登録商標）、ＬＴＥ、デジタル加入者線（ＤＳＬ：ｄｉｇｉｔａｌ  ｓｕｂｓｃｒｉｂｅｒ  ｌｉｎｅ）等などの技術を使用するリンクを含み得る。同様に、ネットワーク７５０上で使用されるネットワーキング・プロトコルは、マルチプロトコル・ラベル・スイッチング（ＭＰＬＳ：ｍｕｌｔｉｐｒｏｔｏｃｏｌ  ｌａｂｅｌ  ｓｗｉｔｃｈｉｎｇ）、送信制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）、ユーザ・データグラム・プロトコル（ＵＤＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、簡易メール転送プロトコル（ＳＭＴＰ：ｓｉｍｐｌｅ  ｍａｉｌ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ）、ファイル転送プロトコル（ＦＴＰ）などを含み得る。ネットワーク７５０上で交換されるデータは、ハイパーテキスト・マークアップ言語（ＨＴＭＬ）および拡張マークアップ言語（ＸＭＬ）を含む技術および／またはフォーマットを使用して表現され得る。また、全部または一部のリンクは、セキュア・ソケット・レイヤ（ＳＳＬ）、トランスポート・レイヤ・セキュリティ（ＴＬＳ）、およびインターネット・プロトコル・セキュリティ（ＩＰｓｅｃ）などの従来の暗号化技術を使用して暗号化され得る。
【００４４】
１つの実施形態において、ユーザ・デバイス７１０は、外部システム７２０から、およびソーシャル・ネットワーキング・システム７３０から受信されるマークアップ言語文書７１４を、ブラウザ・アプリケーション７１２を使用して処理することによって、外部システム７２０からのコンテンツおよび／またはソーシャル・ネットワーキング・システム７３０からのコンテンツを表示し得る。マークアップ言語文書７１４は、コンテンツと、そのコンテンツのフォーマッティングまたは表示方法を記述する１つまたは複数の命令とを識別する。マークアップ言語文書７１４内に含まれる命令を実行することによって、ブラウザ・アプリケーション７１２は、マークアップ言語文書７１４によって記述されたフォーマットまたは表示方法を使用して、識別されたコンテンツを表示する。例えば、マークアップ言語文書７１４は、外部システム７２０およびソーシャル・ネットワーキング・システム７３０から得られたテキストおよび／または画像データを含む複数のフレームを有するウェブ・ページを生成および表示するための命令を含む。様々な実施形態において、マークアップ言語文書７１４は、拡張マークアップ言語（ＸＭＬ）データ、拡張ハイパーテキスト・マークアップ言語（ＸＨＴＭＬ）データ、または、他のマークアップ言語データを含むデータ・ファイルを備える。また、マークアップ言語文書７１４は、外部システム７２０とユーザ・デバイス７１０との間のデータ交換を容易にするためのジャバスクリプト・オブジェクト・ノーテーション（ＪＳＯＮ：ＪａｖａＳｃｒｉｐｔ（登録商標）Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）データ、パディング付きのＪＳＯＮ（ＪＳＯＮＰ：ＪＳＯＮ  ｗｉｔｈ  ｐａｄｄｉｎｇ）データ、およびジャバスクリプト・データを含み得る。ユーザ・デバイス７１０上のブラウザ・アプリケーション７１２は、ジャバスクリプト・コンパイラを使用して、マークアップ言語文書７１４を復号し得る。
【００４５】
マークアップ言語文書７１４は、ＦＬＡＳＨ（商標）アプリケーションまたはＵｎｉｔｙ（商標）アプリケーション、ＳｉｌｖｅｒＬｉｇｈｔ（商標）アプリケーション・フレームワーク等などの、アプリケーションまたはアプリケーション・フレームワークも含み、または、これらに対してもリンクし得る。
【００４６】
１つの実施形態において、ユーザ・デバイス７１０は、ユーザ・デバイス７１０のユーザがソーシャル・ネットワーキング・システム７３０へログインしたかを示すデータを含む、１つまたは複数のクッキー７１６も含む。クッキー７１６は、ソーシャル・ネットワーキング・システム７３０からユーザ・デバイス７１０へ通信されるデータの変更を可能にし得る。
【００４７】
外部システム７２０は、１つまたは複数のウェブ・ページ７２２ａ、７２２ｂを含む、１つまたは複数のウェブ・サーバを含む。１つまたは複数のウェブ・ページ７２２ａ、７２２ｂは、ネットワーク７５０を使用して、ユーザ・デバイス７１０へ通信される。外部システム７２０は、ソーシャル・ネットワーキング・システム７３０とは別個である。例えば、外部システム７２０は、第１のドメインに対して関連付けられるが、ソーシャル・ネットワーキング・システム７３０は、別個のソーシャル・ネットワーキング・ドメインに対して関連付けられる。外部システム７２０に含まれるウェブ・ページ７２２ａ、７２２ｂは、コンテンツを識別し、識別されたコンテンツのフォーマッティングおよび表示方法を特定する命令を含むマークアップ言語文書７１４を備える。
【００４８】
ソーシャル・ネットワーキング・システム７３０は、複数のユーザを含み、ソーシャル・ネットワークのユーザに対して、ソーシャル・ネットワークの他のユーザと通信および相互作用するための能力を提供する、ソーシャル・ネットワークのための１つまたは複数のコンピューティング・デバイスを含む。いくつかの例において、ソーシャル・ネットワークは、グラフ、すなわち、エッジとノードとを含むデータ構造によって表現され得る。データベース、オブジェクト、クラス、メタ要素、ファイル、または任意の他のデータ構造を含むが、これらに限定されない、他のデータ構造も、ソーシャル・ネットワークを表現するために使用され得る。ソーシャル・ネットワーキング・システム７３０は、運営者によって運営され、管理され、または制御され得る。ソーシャル・ネットワーキング・システム７３０の運営者は、ソーシャル・ネットワーキング・システム７３０内でコンテンツを管理し、政策を規制し、使用法メトリック（ｕｓａｇｅ  ｍｅｔｒｉｃｓ）を収集するための人間、自動化されたアプリケーション、または一連のアプリケーションであってもよい。任意のタイプの運営者が使用され得る。
【００４９】
ユーザは、ソーシャル・ネットワーキング・システム７３０に加入し、次いで、そのユーザがつなげられることを望む、ソーシャル・ネットワーキング・システム７３０の任意の数の他のユーザへのつながりを追加し得る。本明細書において、「友達」という用語は、ユーザがソーシャル・ネットワーキング・システム７３０を通じてつながり、関連、または関係を形成した、ソーシャル・ネットワーキング・システム７３０の任意の他のユーザを指す。例えば、一実施形態において、ソーシャル・ネットワーキング・システム７３０内のユーザが、ソーシャル・グラフ内のノードとして表現される場合、「友達」という用語は、２つのユーザ・ノード間に形成され、かつ、２つのユーザ・ノードを直接接続するエッジを指し得る。
【００５０】
つながりは、ユーザによって明示的に追加されても、または、ユーザの共通の特性（例えば、同じ教育機関の卒業生であるユーザ）に基づいて、ソーシャル・ネットワーキング・システム７３０によって自動的に作成されてもよい。例えば、第１のユーザは、友達になりたい特定の他のユーザを具体的に選択する。ソーシャル・ネットワーキング・システム７３０におけるつながりは、通常は双方向であるが、双方向である必要はなく、そのため、「ユーザ」および「友達」という用語は、枠組みに依存する。ソーシャル・ネットワーキング・システム７３０のユーザ間のつながりは、通常は、双務的（「二方向」）または「相互的」であるが、つながりは、片務的、または「一方向」であってもよい。例えば、ボブおよびジョーの両者が、ソーシャル・ネットワーキング・システム７３０のユーザであり、互いにつながっている場合、ボブおよびジョーは、互いのつながりである。他方で、ボブは、ジョーによってソーシャル・ネットワーキング・システム７３０へ通信されたデータを見るためにジョーとつながることを欲するが、ジョーは、相互的なつながりを形成することを欲しない場合、片務的なつながりが確立され得る。ユーザ間のつながりは、直接的なつながりであり得る。ただし、ソーシャル・ネットワーキング・システム７３０のいくつかの実施形態は、つながりが、１つまたは複数のつながりのレベルまたは分離度を通じた間接的なものとなることを可能にする。
【００５１】
ユーザ間のつながりを確立および維持し、ユーザ間の相互作用を可能にすることに加えて、ソーシャル・ネットワーキング・システム７３０は、ソーシャル・ネットワーキング・システム７３０によってサポートされる様々なタイプのアイテムに対してアクションを行うための能力をユーザに対して提供する。こうしたアイテムは、ソーシャル・ネットワーキング・システム７３０のユーザが所属し得るグループまたはネットワーク（すなわち、人々、エンティティ、および概念のソーシャル・ネットワーク）、ユーザが興味を持ち得るイベントまたはカレンダー入力、ユーザがソーシャル・ネットワーキング・システム７３０を通じて使用し得るコンピュータベースのアプリケーション、ソーシャル・ネットワーキング・システム７３０によって提供されるサービスを通じてまたはソーシャル・ネットワーキング・システム７３０を通じてユーザがアイテムを購入または販売することを可能にする取引、ならびにユーザがソーシャル・ネットワーキング・システム７３０内外で実行し得る広告との相互作用を含み得る。これらは、ユーザがソーシャル・ネットワーキング・システム７３０上で作用を与え得るアイテムのわずかな例にすぎず、多くの他の例が可能である。ユーザは、ソーシャル・ネットワーキング・システム７３０において、または、ソーシャル・ネットワーキング・システム７３０とは別個の外部システム７２０もしくはネットワーク７５０を通じてソーシャル・ネットワーキング・システム７３０に対して結合される外部システム７２０において表現されることが可能なありとあらゆるものと相互作用し得る。
【００５２】
ソーシャル・ネットワーキング・システム７３０は、多様なエンティティとリンクすることも可能である。例えば、ソーシャル・ネットワーキング・システム７３０は、ユーザが互いに相互作用すること、および、ＡＰＩ、ウェブ・サービス、または他の通信チャネルを通じて外部システム７２０または他のエンティティと相互作用することを可能にする。ソーシャル・ネットワーキング・システム７３０は、複数のエッジによって相互接続された複数のノードを備える「ソーシャル・グラフ」を生成および維持する。ソーシャル・グラフ内の各ノードは、別のノードに対して作用を与え得るエンティティおよび／または別のノードによって作用を与えられ得るエンティティを表現し得る。ソーシャル・グラフは、様々なタイプのノードを含み得る。ノードタイプの例は、ユーザ、非人間エンティティ、コンテンツ・アイテム、ウェブ・ページ、グループ、アクティビティ、メッセージ、概念、およびソーシャル・ネットワーキング・システム７３０内のオブジェクトによって表現され得る任意の他のものを含む。ソーシャル・グラフ内の２つのノード間のエッジは、ノード関係から、またはノードのうちの一方によって他方に対して実行されたアクションから生じ得る、２つのノード間の特定の種類のつながり、または関連を表現し得る。いくつかの場合において、ノード間のエッジは、重み付けされ得る。エッジの重みは、ノード間のつながりまたは関連の強度などの、そのエッジに対して関連付けられた属性を表現し得る。異なるタイプのエッジが、異なる重みと共に提供され得る。例えば、あるユーザが別のユーザに対して「いいね」を表明する際に作成されるエッジには、ある重みが与えられ得る一方で、ユーザが別のユーザと友達になる際に作成されるエッジには、異なる重みが与えられ得る。
【００５３】
例として、第１のユーザが、第２のユーザを友達として識別する場合、第１のユーザを表現するノードと第２のユーザを表現する第２のノードとを接続する、ソーシャル・グラフ内のエッジが生成される。様々なノードが互いに関連し、または相互作用するにつれて、ソーシャル・ネットワーキング・システム７３０は、様々なノードを接続するエッジを変更して、関係および相互作用を反映する。
【００５４】
ソーシャル・ネットワーキング・システム７３０は、ユーザによるソーシャル・ネットワーキング・システム７３０との相互作用を高める、ユーザにより生成されたコンテンツも含む。ユーザにより生成されたコンテンツは、ユーザがソーシャル・ネットワーキング・システム７３０に対して追加し、アップロードし、送信し、または「投稿し」得るあらゆるものを含み得る。例えば、ユーザは、ユーザ・デバイス７１０からソーシャル・ネットワーキング・システム７３０への投稿を通信する。投稿は、ステータス・アップデートもしくは他の文字情報などのデータ、位置情報、写真などの画像、ビデオ、リンク、音楽、または、他の同様のデータおよび／もしくはメディアを含み得る。コンテンツも、第三者によってソーシャル・ネットワーキング・システム７３０に対して追加され得る。コンテンツ「アイテム」は、ソーシャル・ネットワーキング・システム７３０においてオブジェクトとして表現される。このようにして、ソーシャル・ネットワーキング・システム７３０のユーザは、様々な通信チャネルを通じて様々なタイプのテキストおよびコンテンツ・アイテムを投稿することによって、互いに通信することを促される。そのような通信は、ユーザ同士の相互作用を増加させ、ユーザがソーシャル・ネットワーキング・システム７３０と相互作用する頻度を増加させる。
【００５５】
ソーシャル・ネットワーキング・システム７３０は、ウェブ・サーバ７３２と、ＡＰＩ要求サーバ７３４と、ユーザ・プロファイル・ストア７３６と、つながりストア７３８と、動作ロガー７４０と、アクティビティ・ログ７４２と、認証サーバ７４４とを含む。本発明の一実施形態において、ソーシャル・ネットワーキング・システム７３０は、様々なアプリケーションのための追加的な構成要素、より少ない構成要素、または異なる構成要素を含み得る。ネットワーク・インターフェース、セキュリティ機構、負荷分散装置、フェイルオーバ・サーバ、管理およびネットワーク操作コンソールなどの他の構成要素は、本システムの詳細を曖昧にしないように、図示されていない。
【００５６】
ユーザ・プロファイル・ストア７３６は、ユーザによって申告され、またはソーシャル・ネットワーキング・システム７３０によって推測された職歴、学歴、趣味または嗜好、住所などの経歴的情報、人口学的情報、および他のタイプの記述的情報を含む、ユーザ・アカウントに関する情報を維持する。この情報は、各ユーザが一意に識別されるように、ユーザ・プロファイル・ストア７３６内に記憶される。ソーシャル・ネットワーキング・システム７３０は、異なるユーザ間の１つまたは複数のつながりを記述するデータも、つながりストア７３８内に記憶する。つながり情報は、同様または共通の職歴、グループ・メンバーシップ、趣味、または学歴を有するユーザを示し得る。また、ソーシャル・ネットワーキング・システム７３０は、ユーザの他のユーザとの関係をユーザが特定することを可能にする、異なるユーザ間におけるユーザによって定義されたつながりを含む。例えば、ユーザによって定義されたつながりは、友達、同僚、パートナー等などの、ユーザの実生活の関係と並行する、他のユーザとの関係をユーザが生成することを可能にする。ユーザは、予め定義されたタイプのつながりから選択しても、またはユーザ自身のつながりタイプを必要に応じて定義してもよい。非人間エンティティ、バケット、クラスタ・センタ、画像、興味、ページ、外部システム、概念等などの、ソーシャル・ネットワーキング・システム７３０内の他のノードとのつながりも、つながりストア７３８内に記憶される。
【００５７】
ソーシャル・ネットワーキング・システム７３０は、ユーザが相互作用し得るオブジェクトに関するデータを維持する。このデータを維持するために、ユーザ・プロファイル・ストア７３６およびつながりストア７３８は、ソーシャル・ネットワーキング・システム７３０によって維持されるオブジェクトの対応するタイプのインスタンスを記憶する。各オブジェクト・タイプは、オブジェクトのタイプに適した情報を記憶するのに適した情報フィールドを有する。例えば、ユーザ・プロファイル・ストア７３６は、ユーザのアカウントおよびユーザのアカウントに関連した情報を記述するのに適したフィールドを有するデータ構造を含む。特定のタイプの新たなオブジェクトが作成される場合、ソーシャル・ネットワーキング・システム７３０は、対応するタイプの新たなデータ構造を初期化し、その新たなデータ構造に対して一意のオブジェクト識別子を割り当て、必要に応じて、そのオブジェクトに対してデータを追加することを開始する。これは、例えば、ユーザがソーシャル・ネットワーキング・システム７３０のユーザになった場合に発生し、ソーシャル・ネットワーキング・システム７３０は、ユーザ・プロファイル・ストア７３６内にユーザ・プロファイルの新たなインスタンスを生成し、ユーザ・アカウントに対して一意の識別子を割り当て、ユーザによって提供される情報をユーザ・アカウントのフィールドへ投入し始める。
【００５８】
つながりストア７３８は、他のユーザに対するユーザのつながり、外部システム７２０に対するつながり、または他のエンティティに対するつながりを記述するのに適したデータ構造を含む。つながりストア７３８は、つながりタイプもユーザのつながりと関連付け得る。つながりタイプは、ユーザのプライバシー設定と共に使用されて、ユーザに関する情報に対するアクセスを規制し得る。本発明の一実施形態において、ユーザ・プロファイル・ストア７３６およびつながりストア７３８は、連合データベースとして実装され得る。
【００５９】
つながりストア７３８、ユーザ・プロファイル・ストア７３６、およびアクティビティ・ログ７４２内に記憶されるデータは、ノードを使用して、ノードを接続する様々なオブジェクトおよびエッジを識別して、異なるオブジェクト間の関係を識別するソーシャル・グラフをソーシャル・ネットワーキング・システム７３０が生成することを可能にする。例えば、第１のユーザが、ソーシャル・ネットワーキング・システム７３０内で第２のユーザとのつながりを確立する場合、ユーザ・プロファイル・ストア７３６からの第１のユーザおよび第２のユーザのユーザ・アカウントは、ソーシャル・グラフ内のノードとして動作し得る。つながりストア７３８によって記憶される、第１のユーザと第２のユーザとの間のつながりは、第１のユーザおよび第２のユーザに対して関連付けられるノード間のエッジである。この例を続けると、第２のユーザは、次いで、第１のユーザに対して、ソーシャル・ネットワーキング・システム７３０内でメッセージを送信し得る。メッセージを送信するアクションは、第１のユーザおよび第２のユーザを表現する、ソーシャル・グラフ内の２つのノード間の別のエッジであり、メッセージを送信するアクションは、記憶され得る。また、メッセージ自体が、第１のユーザを表現するノードおよび第２のユーザを表現するノードに対して接続される別のノードとして、ソーシャル・グラフにおいて識別され、ソーシャル・グラフに含まれ得る。
【００６０】
別の例において、第１のユーザは、ソーシャル・ネットワーキング・システム７３０によって維持される画像において（または、代替的に、ソーシャル・ネットワーキング・システム７３０の外部の別のシステムによって維持される画像において）第２のユーザをタグ付けし得る。画像は、それ自体がソーシャル・ネットワーキング・システム７３０内のノードとして表現され得る。このタグ付けアクションは、ユーザの各々と画像との間にエッジを作成するだけでなく、第１のユーザと第２のユーザとの間のエッジも作成し得る。画像もソーシャル・グラフ内のノードである。また別の例において、ユーザが、イベントへ参加することを確かめる場合、そのユーザおよびそのイベントは、ユーザ・プロファイル・ストア７３６から取得されるノードであり、そのイベントへの参加は、アクティビティ・ログ７４２から得られ得るノード間のエッジである。ソーシャル・グラフを生成および維持することによって、ソーシャル・ネットワーキング・システム７３０は、多くの異なるタイプのオブジェクトを記述するデータ、ならびに、それらのオブジェクト間の相互作用およびつながりを含み、社会的に関連する情報の豊富なソースを提供する。
【００６１】
ウェブ・サーバ７３２は、ソーシャル・ネットワーキング・システム７３０を、ネットワーク７５０を通じて、１つもしくは複数のユーザ・デバイス７１０および／または１つもしくは複数の外部システム７２０に対してリンクする。ウェブ・サーバ７３２は、ウェブ・ページ、およびＪａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ、Ｆｌａｓｈ、ＸＭＬなどの他のウェブ関連コンテンツを供給する。ウェブ・サーバ７３２は、メール・サーバを含み、または、ソーシャル・ネットワーキング・システム７３０と１つもしくは複数のユーザ・デバイス７１０との間のメッセージを受信およびルーティングするための他のメッセージング機能を含み得る。メッセージは、インスタント・メッセージ、キュー・メッセージ（例えば、電子メール）、テキストおよびＳＭＳメッセージ、または任意の他の適切なメッセージング・フォーマットであり得る。
【００６２】
ＡＰＩ要求サーバ７３４は、１つまたは複数の外部システム７２０およびユーザ・デバイス７１０が、１つまたは複数のＡＰＩ関数を呼び出すことによって、ソーシャル・ネットワーキング・システム７３０からのアクセス情報を呼び出すことを可能にする。ＡＰＩ要求サーバ７３４は、外部システム７２０が、ＡＰＩを呼び出すことによって、ソーシャル・ネットワーキング・システム７３０に対して情報を送信することも可能にし得る。外部システム７２０は、１つの実施形態において、ネットワーク７５０を通じてソーシャル・ネットワーキング・システム７３０へＡＰＩ要求を送信し、ＡＰＩ要求サーバ７３４は、そのＡＰＩ要求を受信する。ＡＰＩ要求サーバ７３４は、ＡＰＩ要求に対して関連付けられたＡＰＩを呼び出すことによって要求を処理して、適当な応答を生成する。ＡＰＩ要求サーバ７３４は、その適当な応答を、ネットワーク７５０を通じて外部システム７２０へ通信する。例えば、ＡＰＩ要求に応答して、ＡＰＩ要求サーバ７３４は、外部システム７２０に対してログインしたユーザのつながりなどの、ユーザに対して関連付けられたデータを収集し、収集されたデータを外部システム７２０へ通信する。別の実施形態において、ユーザ・デバイス７１０は、外部システム７２０と同じ手法で、ＡＰＩを通じてソーシャル・ネットワーキング・システム７３０と通信する。
【００６３】
アクション・ロガー７４０は、ソーシャル・ネットワーキング・システム７３０内での、および／またはソーシャル・ネットワーキング・システム７３０外でのユーザ・アクションに関する通信をウェブ・サーバ７３２から受信することが可能である。アクション・ロガー７４０は、ユーザ・アクションに関する情報をアクティビティ・ログ７４２へ投入し、ソーシャル・ネットワーキング・システム７３０の内部で、およびソーシャル・ネットワーキング・システム７３０の外部で、そのユーザによって行われた様々なアクションをソーシャル・ネットワーキング・システム７３０が発見することを可能にする。特定のユーザが、ソーシャル・ネットワーキング・システム７３０上の別のノードに関して行う任意のアクションは、アクティビティ・ログ７４２内または同様のデータベースもしくは他のデータ・レポジトリ内で維持される情報を通じて、各ユーザのアカウントに対して関連付けられ得る。識別および記憶される、ソーシャル・ネットワーキング・システム７３０内でユーザによって行われるアクションの例は、例えば、別のユーザに対するつながりを追加すること、別のユーザへメッセージを送信すること、別のユーザからのメッセージを読むこと、別のユーザに対して関連付けられるコンテンツを視聴すること、別のユーザによって投稿されたイベントに参加すること、画像を投稿すること、画像を投稿しようと試行すること、または、別のユーザもしくは別のオブジェクトと相互作用する他のアクションを含み得る。ユーザが、ソーシャル・ネットワーキング・システム７３０内でアクションを行う場合、そのアクションは、アクティビティ・ログ７４２内に記録される。一実施形態において、ソーシャル・ネットワーキング・システム７３０は、アクティビティ・ログ７４２をエントリのデータベースとして維持する。アクションが、ソーシャル・ネットワーキング・システム７３０内で行われる場合、そのアクションについてのエントリが、アクティビティ・ログ７４２に対して追加される。アクティビティ・ログ７４２は、アクション・ログと称され得る。
【００６４】
また、ユーザ・アクションは、ソーシャル・ネットワーキング・システム７３０とは別個の外部システム７２０などの、ソーシャル・ネットワーキング・システム７３０の外部のエンティティ内で発生する概念およびアクションに対して関連付けられ得る。例えば、アクション・ロガー７４０は、ユーザによる外部システム７２０との相互作用を記述するデータを、ウェブ・サーバ７３２から受信し得る。この例において、外部システム７２０は、ソーシャル・グラフにおける構造化されたアクションおよびオブジェクトに従って、ユーザによる相互作用を報告する。
【００６５】
ユーザが外部システム７２０と相互作用するアクションの他の例は、ユーザが外部システム７２０もしくは別のエンティティにおいて興味を表現すること、外部システム７２０もしくは外部システム７２０内のウェブ・ページ７２２ａと議論するソーシャル・ネットワーキング・システム７３０に対してユーザがコメントを投稿すること、ユーザがソーシャル・ネットワーキング・システム７３０に対してユニフォーム・リソース・ロケータ（ＵＲＬ）もしくは外部システム７２０に対して関連付けられる他の識別子を投稿すること、ユーザが外部システム７２０に対して関連付けられるイベントへ参加すること、または、外部システム７２０に関連する、ユーザによる任意の他のアクションを含む。したがって、アクティビティ・ログ７４２は、ソーシャル・ネットワーキング・システム７３０のユーザと、ソーシャル・ネットワーキング・システム７３０とは別個の外部システム７２０との間の相互作用を記述するアクションを含み得る。
【００６６】
認証サーバ７４４は、ソーシャル・ネットワーキング・システム７３０のユーザの１つまたは複数のプライバシー設定を強化する。ユーザのプライバシー設定は、ユーザに対して関連付けられる特定の情報がどのように共有され得るかを決定する。プライバシー設定は、ユーザに対して関連付けられる特定の情報の仕様、および情報が共有され得る１つまたは複数のエンティティの仕様を備える。情報が共有され得るエンティティの例は、他のユーザ、アプリケーション、外部システム７２０、または、その情報に潜在的にアクセスし得る任意のエンティティを含み得る。ユーザによって共有され得る情報は、プロフィール写真などのユーザ・アカウント情報、ユーザに対して関連付けられる電話番号、ユーザのつながり、つながりを追加すること、ユーザ・プロフィール情報を変更することなどのユーザによって行われるアクション等を備える。
【００６７】
プライバシー設定仕様は、異なるレベルの粒度で提供され得る。例えば、プライバシー設定は、他のユーザと共有されるべき具体的な情報を識別し得る。プライバシー設定は、職場電話番号、または、プロフィール写真、自宅電話番号、およびステータスを含む個人情報などの関連情報の具体的なセットを識別する。代替的に、プライバシー設定は、ユーザに対して関連付けられる全ての情報に対して適用されてもよい。特定の情報にアクセスすることができるエンティティのセットの仕様も、様々なレベルの粒度で特定され得る。情報が共有され得るエンティティの様々なセットは、例えば、ユーザの全ての友達、友達の全ての友達、全てのアプリケーション、または全ての外部システム７２０を含み得る。１つの実施形態は、エンティティのセットの仕様がエンティティの一覧表を備えることを可能にする。例えば、ユーザは、一定の情報に対してアクセスすることを許可される外部システム７２０のリストを提供し得る。別の実施形態は、情報に対してアクセスすることを許可されない例外と共にエンティティのセットを仕様が備えることを可能にする。例えば、ユーザは、全ての外部システム７２０がユーザの職場情報に対してアクセスすることを許可し得るが、職場情報に対してアクセスすることを許可されない外部システム７２０のリストを特定し得る。一定の実施形態は、一定の情報に対してアクセスすることを許可されない例外のリストを「ブロック・リスト」と呼ぶ。ユーザによって特定されるブロック・リストに所属する外部システム７２０は、プライバシー設定において特定される情報に対してアクセスすることをブロックされる。情報の仕様の粒度と、情報が共有されるエンティティの仕様の粒度との様々な組み合わせが可能である。例えば、全ての個人情報は、友達と共有され得るのに対して、全ての職場情報は、友達の友達と共有され得る。
【００６８】
認証サーバ７４４は、ユーザに対して関連付けられる一定の情報がユーザの友達、外部システム７２０、ならびに／または他のアプリケーションおよびエンティティによってアクセスされ得るかを決定するためのロジックを含む。外部システム７２０は、ユーザの職場電話番号などの、ユーザのより個人的かつ機密的な情報に対してアクセスするために、認証サーバ７４４からの認証を必要とし得る。ユーザのプライバシー設定に基づいて、認証サーバ７４４は、別のユーザ、外部システム７２０、アプリケーション、または別のエンティティが、ユーザによって行われるアクションに関する情報を含む、ユーザに対して関連付けられる情報に対してアクセスすることを許可されているかを決定する。
【００６９】
いくつかの実施形態では、ソーシャル・ネットワーキング・システム７３０は、コンテンツ解析モジュール７４６を備えることができる。コンテンツ解析モジュール７４６は、例えば、図１のコンテンツ解析モジュール１０２として実装されてもよい。前述したように、多くの変形例および他の可能性が存在し得ることを理解されたい。コンテンツ解析モジュール７４６の他の特徴は、コンテンツ解析モジュール１０２を参照して本明細書で検討される。
【００７０】
ハードウェア実装
前述のプロセスおよび特徴は、多種多様なマシンおよびコンピュータ・システム・アーキテクチャによって、ならびに、多種多様なネットワークおよびコンピューティング環境において実装され得る。図８は、本発明の一実施形態に係る、本明細書において説明される実施形態のうちの１つまたは複数を実装するために使用され得るコンピュータ・システム８００の例を例示する。コンピュータ・システム８００は、コンピュータ・システム８００に対して、本明細書において議論されるプロセスおよび特徴を実行させるための命令のセットを含む。コンピュータ・システム８００は、他のマシンへ接続され（例えば、ネットワーク化され）得る。ネットワーク化された配置において、コンピュータ・システム８００は、クライアント／サーバ・ネットワーク環境内のサーバ・マシンもしくはクライアント・マシンの資格において動作し、または、ピア・ツー・ピア（もしくは分散）・ネットワーク環境内のピア・マシンとして動作し得る。本発明の一実施形態において、コンピュータ・システム８００は、ソーシャル・ネットワーキング・システム８３０、ユーザ・デバイス７１０、および外部システム８２０、または、これらの構成要素であり得る。本発明の一実施形態において、コンピュータ・システム８００は、ソーシャル・ネットワーキング・システム８３０の全部または一部を構成する多くのサーバのうちの１つのサーバであり得る。
【００７１】
コンピュータ・システム８００は、プロセッサ８０２と、キャッシュ８０４と、コンピュータ読取可能な媒体上に記憶され、本明細書において説明されるプロセスおよび特徴へ向けられた、１つまたは複数の実行可能なモジュールおよびドライバとを含む。また、コンピュータ・システム８００は、高性能入出力（Ｉ／Ｏ）バス８０６と、標準Ｉ／Ｏバス８０８とを含む。ホスト・ブリッジ８１０は、プロセッサ８０２を高性能Ｉ／Ｏバス８０６に対して結合する一方で、Ｉ／Ｏバス・ブリッジ８１２は、２つのバス８０６および８０８を互いに結合する。システム・メモリ８１４および１つまたは複数のネットワーク・インターフェース８１６は、高性能Ｉ／Ｏバス８０６へ結合される。コンピュータ・システム８００は、ビデオ・メモリと、ビデオ・メモリに対して結合される表示デバイスとをさらに含んでもよい（図示せず）。マス・ストレージ８１８およびＩ／Ｏポート８２０は、標準Ｉ／Ｏバス８０８へ結合される。コンピュータ・システム８００は、標準Ｉ／Ｏバス８０８に対して結合される、キーボードおよびポインティング・デバイス、表示デバイス、または他の入出力デバイス（図示せず）を随意的に含んでもよい。全体的に、これらの要素は、カリフォルニア州サンタ・クララのインテル・コーポレーション社（Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ）によって製造されるｘ８６互換性のあるプロセッサ、カリフォルニア州サニーヴェイルのアドバンスト・マイクロ・デバイス社（ＡＭＤ：Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，Ｉｎｃ）によって製造されるｘ８６互換性のあるプロセッサ、および任意の他の適切なプロセッサを含むが、これらに限定されない、広範なカテゴリのコンピュータ・ハードウェア・システムを表現することが意図される。
【００７２】
オペレーティング・システムは、ソフトウェア・アプリケーション（図示せず）へのデータの入力およびソフトウェア・アプリケーションからのデータの出力を含む、コンピュータ・システム８００の動作を管理および制御する。オペレーティング・システムは、システム上で実行されているソフトウェア・アプリケーションと、システムのハードウェア構成要素との間のインターフェースを提供する。任意の適切なオペレーティング・システム、例えば、ＬＩＮＵＸオペレーティング・システム、カリフォルニア州クパチーノのアップル・コンピュータ社（Ａｐｐｌｅ  Ｃｏｍｐｕｔｅｒ，Ｉｎｃ．）から市販されているアップル・マッキントッシュ・オペレーティング・システム、ＵＮＩＸ（登録商標）オペレーティング・システム、マイクロソフト（登録商標）ウィンドウズ（登録商標）オペレーティング・システム、ＢＳＤオペレーティング・システム等などが使用され得る。他の実装も可能である。
【００７３】
コンピュータ・システム８００の要素は、下記においてより詳細に説明される。具体的には、ネットワーク・インターフェース８１６は、コンピュータ・システム８００と、幅広いネットワークのうちの任意のもの、例えば、イーサネット（例えば、ＩＥＥＥ８０２．３）・ネットワーク、バックプレーン等などとの間の通信を提供する。マス・ストレージ８１８は、上記に識別されたそれぞれのコンピューティング・システムによって実装される上述されたプロセスおよび特徴を実行するためのデータおよびプログラミング命令のための永続的なストレージを提供するのに対して、システム・メモリ８１４（例えば、ＤＲＡＭ）は、プロセッサ８０２によって実行される場合のデータおよびプログラミング命令のための一時的なストレージを提供する。Ｉ／Ｏポート８２０は、コンピュータ・システム８００へ結合され得る付加的な周辺デバイス間の通信を提供する、１つまたは複数のシリアル通信ポートおよび／またはパラレル通信ポートであり得る。
【００７４】
コンピュータ・システム８００は、多様なシステム・アーキテクチャを含むことができ、コンピュータ・システム８００の様々な構成要素は、再配置されてもよい。例えば、キャッシュ８０４は、プロセッサ８０２と共にチップ上に実装されてもよい。代替的に、キャッシュ８０４およびプロセッサ８０２は、「プロセッサ・モジュール」としてまとめられて、プロセッサ８０２が「プロセッサ・コア」と称されてもよい。さらに、本発明の一定の実施形態は、上記構成要素の全部を必要としなくても、または、含まなくてもよい。例えば、標準Ｉ／Ｏバス８０８へ結合される周辺デバイスは、高性能Ｉ／Ｏバス８０６へ結合されてもよい。また、いくつかの実施形態において、単一のバスのみが存在して、コンピュータ・システム８００の構成要素が、その単一のバスへ結合されてもよい。さらに、コンピュータ・システム８００は、付加的なプロセッサ、記憶デバイス、またはメモリなどの付加的な構成要素を含んでもよい。
【００７５】
一般に、本明細書において説明されるプロセスおよび特徴は、オペレーティング・システムの一部もしくは特定のアプリケーション、構成要素、プログラム、オブジェクト、モジュール、または「プログラム」と称される一連の命令として実装され得る。例えば、１つまたは複数のプログラムは、本明細書において説明される具体的なプロセスを実行するために使用され得る。プログラムは、典型的には、１つまたは複数のプロセッサによって読み出され、実行される場合に、コンピュータ・システム８００に対して、本明細書において説明されるプロセスおよび特徴を実行するための動作を実行させる、１つまたは複数の命令を、コンピュータ・システム８００内の様々なメモリおよび記憶デバイスにおいて備える。本明細書において説明されるプロセスおよび特徴は、ソフトウェア、ファームウェア、ハードウェア（例えば、特定用途向け集積回路）、または、これらの任意の組み合わせにおいて実装され得る。
【００７６】
１つの実装において、本明細書において説明されるプロセスおよび特徴は、分散コンピューティング環境において個々にまたはまとめて、コンピュータ・システム８００によって実行される一連の実行可能なモジュールとして実装される。前述のモジュールは、ハードウェア、コンピュータ読取可能な媒体（もしくはマシン読取可能な媒体）上に記憶される実行可能なモジュール、または、両者の組み合わせによって実現され得る。例えば、モジュールは、プロセッサ８０２などの、ハードウェア・システム内のプロセッサによって実行されるべき複数の命令または一連の命令を備え得る。まず、一連の命令は、マス・ストレージ８１８などの記憶デバイス上に記憶され得る。ただし、一連の命令は、任意の適切なコンピュータ読取可能な記憶媒体上に記憶されてもよい。さらに、一連の命令は、局所的に記憶される必要はなく、ネットワーク上のサーバなどの遠隔記憶デバイスからネットワーク・インターフェース８１６を通じて受信されてもよい。命令は、マス・ストレージ８１８などの記憶デバイスからシステム・メモリ８１４内へコピーされ、次いで、プロセッサ８０２によってアクセスされ、実行される。様々な実施形態において、１つまたは複数のモジュールは、並列処理環境内の複数のサーバなどの、１つまたは複数の位置における、１つまたは複数のプロセッサによって実行され得る。
【００７７】
コンピュータ読取可能な媒体の例は、揮発性メモリ・デバイスおよび不揮発性メモリ・デバイスなどの記録可能なタイプの媒体、ソリッド・ステート・メモリ、フロッピー（登録商標）ディスクおよび他の取り外し可能なディスク、ハード・ディスク・ドライブ、磁気媒体、光ディスク（例えば、コンパクト・ディスク読取専用メモリ（ＣＤ  ＲＯＭＳ）、デジタル多用途ディスク（ＤＶＤ））、他の同様の非一時的で（もしくは一時的で）、有形の（もしくは無形の）記憶媒体、または、本明細書において説明されるプロセスおよび特徴のうちの任意の１つもしくは複数を実行すべく、コンピュータ・システム８００による実行のために一連の命令を記憶し、符号化し、もしくは担持するのに適切な任意のタイプの媒体を含むが、これらに限定されない。
【００７８】
説明の目的のために、多くの具体的な詳細が、本説明の完全な理解を提供するために述べられている。しかしながら、こうした具体的な詳細なしに本開示の実施形態が実施され得ることは、当業者には明らかであろう。いくつかの例において、モジュール、構造、プロセス、特徴、およびデバイスは、本説明を曖昧にすることを回避するために、ブロック図の形式で示される。他の例において、機能ブロック図およびフロー図は、データおよび論理フローを表現するために示される。ブロック図およびフロー図の構成要素（例えば、モジュール、ブロック、構造、デバイス、特徴等）は、本明細書において明示的に説明および図示されたような手法以外の手法で、様々に組み合わされ、分離され、除去され、順序を並べ替えられ、置換されてもよい。
【００７９】
この明細書における、「１つの実施形態」、「一実施形態」、「他の実施形態」、「一連の実施形態」、「いくつかの実施形態」、「様々な実施形態」等への言及は、実施形態に関連して説明される特定の特徴、設計、構造、または特性が本開示の少なくとも１つの実施形態に含まれることを意味する。本明細書内の様々な部分における「１つの実施形態において」または「一実施形態において」という句の出現は、必ずしも全て同じ実施形態に言及するものとは限らず、別個の実施形態または代替的な実施形態は、他の実施形態と相互排他的ではない。さらに、「実施形態」等への明示的な言及が存在しても存在しなくても、様々な特徴が説明され、様々な特徴は、いくつかの実施形態において様々に組み合わされ、含まれ得るが、他の実施形態においては様々に省略され得る。同様に、いくつかの実施形態にとっては選好事項または要件であり得るが、他の実施形態にとっては選好事項または要件ではない、様々な特徴が説明される。
【００８０】
本明細書において使用される文言は、主に、読みやすさと教育的目的のために選択されており、発明の主題の輪郭を描くため、または境界線を描くために選択されたものではない。そのため、本発明の範囲は、この詳細な説明によって限定されるのではなく、むしろ、本明細書に基づく出願について発行される任意の請求項によって限定されることが意図される。したがって、本発明の実施形態の開示は、本発明の範囲の例示とはなるが、限定とはならないことが意図され、本発明の範囲は、下記の特許請求の範囲において述べられる。
【図１】
0006722292.tif 000002
【図２】
0006722292.tif 000003
【図３】
0006722292.tif 000004
【図４】
0006722292.tif 000005
【図５】
0006722292.tif 000006
【図６】
0006722292.tif 000007
【図７】
0006722292.tif 000008
【図８】
0006722292.tif 000009