(57)【特許請求の範囲】
【請求項１】
コンピューティング・システムが、点構成を予測するためにトレーニングした第１のサポート・ベクトル・リグレッサに少なくとも部分的に基づいて、２次元画像の顔部分を決定する工程と、
前記コンピューティング・システムが、前記２次元画像の顔部分を変換することによって生成された２次元顔画像の基準点のセットを決定する工程であって、少なくともいくつかの基準点は顔の特徴に対応し、前記第１のサポート・ベクトル・リグレッサとは異なる第２のサポート・ベクトル・リグレッサに少なくとも部分的に基づいて、前記基準点のセットが局所化される、工程と、
前記コンピューティング・システムが、前記２次元顔画像において検出された前記基準点のセットと、人間の顔の３次元形状において配置された対応するアンカー・ポイントのセットと、に少なくとも部分的に基づいて、前記２次元顔画像から３次元アライメントされた顔画像を生成する工程と、
前記コンピューティング・システムが、ディープ・ニューラル・ネットワーク（ＤＮＮ）への前記３次元アライメントされた顔画像の提供に基づいて、前記２次元顔画像に対応する顔ＩＤを分類する工程であって、前記ＤＮＮは、前記３次元アライメントされた顔画像の特徴のセットに基づいて、前記２次元顔画像を分類するためにトレーニングされる、工程と
を備える、コンピュータ実装方法。
【請求項２】
３次元アライメントされた顔画像を生成する前記工程は、
前記２次元顔画像の基準点のセットを検出する工程と、
前記基準点のセットを使用して、前記２次元顔画像を３次元形状へ加工する工程と
を備える、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記加工する工程は、
アンカー・ポイントのセットを前記３次元形状上へ配置する工程であって、各アンカー・ポイントは、前記２次元顔画像の前記基準点のセットのうちの１つの基準点に対応する、配置する工程と、
前記２次元顔画像の前記基準点のセットのうちの各基準点の位置を前記３次元形状へ逆投影する工程と、
前記２次元顔画像の前記基準点のセットのうちの各基準点の前記位置を前記３次元形状の正面像へ投影する工程と、
前記基準点のセットと前記アンカー・ポイントのセットとに基づいて、前記２次元顔画像を前記３次元アライメントされた顔画像へ変換する工程と
を備える、請求項２に記載のコンピュータ実装方法。
【請求項４】
前記２次元顔画像の前記基準点のセットは、三角形のセットを定義し、前記３次元アライメントされた顔画像へ変換する工程は、前記三角形のセットのうちの各三角形のアフィン変換を実行する工程を備える、請求項３に記載のコンピュータ実装方法。
【請求項５】
画像の顔部分を、前記画像の基準点の第２のセットを検出することによって識別する工程と、
前記基準点の第２のセットに基づいて前記画像の前記顔部分を変換することによって、前記２次元顔画像を生成する工程と
をさらに備える、
請求項１に記載のコンピュータ実装方法。
【請求項６】
前記２次元顔画像を生成する工程は、アンカー位置のセットを決定する工程と、前記アンカー位置のセットに基づいて前記画像の前記顔部分を加工する工程とを備える、請求項５に記載のコンピュータ実装方法。
【請求項７】
前記ＤＮＮは層のセットを備え、前記層は、畳み込みプーリング層と、局所的結合層のセットと、全結合層のセットとを備える、請求項１に記載のコンピュータ実装方法。
【請求項８】
前記畳み込みプーリング層は、第１の畳み込み層と、最大プーリング層と、第２の畳み込み層とを備え、前記畳み込みプーリング層は、３次元アライメントされた前記顔画像の特徴のセットを抽出するように構成される、請求項７に記載のコンピュータ実装方法。
【請求項９】
前記局所的結合層のセットのうちの各局所的結合層は、３次元アライメントされた前記顔画像の特徴のセットを抽出するように構成される、請求項７に記載のコンピュータ実装方法。
【請求項１０】
前記全結合層のセットのうちの各全結合層は、３次元アライメントされた前記顔画像の特徴のセット内の相関を決定するように構成され、請求項７に記載のコンピュータ実装方法。
【請求項１１】
前記全結合層のセットのうちの１つの全結合層の出力は、特徴ベクトルである、請求項７に記載のコンピュータ実装方法。
【請求項１２】
前記特徴のセットのうちの各特徴は、所定の範囲へ正規化される、請求項７に記載のコンピュータ実装方法。
【請求項１３】
前記ＤＮＮは、３次元アライメントされた前記顔画像の各画素についてのフィルタのセットを定義するように構成される、請求項１に記載のコンピュータ実装方法。
【請求項１４】
データセットを用いて前記フィルタのセットを定義するように前記ＤＮＮをトレーニングする工程をさらに備える、請求項１３に記載のコンピュータ実装方法。
【請求項１５】
画像ストアにおいて前記２次元顔画像の前記ＩＤを問い合わせることによって、前記２次元顔画像の個人を識別する工程をさらに備え、前記画像ストアは、顔画像のセットを備え、前記顔画像のセットのうちの各顔画像は、個人に対応する、請求項１に記載のコンピュータ実装方法。
【請求項１６】
第２の２次元顔画像の第２のＩＤを分類する工程と、
前記ＩＤおよび前記第２のＩＤが個人に対応するか否かを決定するために、前記ＩＤを前記第２のＩＤに対して比較する工程と
をさらに備える、請求項１に記載のコンピュータ実装方法。
【請求項１７】
前記ＩＤは、特徴の第１のセットを備え、前記第２のＩＤは、特徴の第２のセットを備え、ＩＤを比較する前記工程は、
特徴の前記第１のセットと特徴の前記第２のセットとの間の特徴差のセットを決定する工程と、
全結合層を使用することによって、特徴差の前記セットを所定の値に対してマッピングする工程と
を備える、請求項１６に記載のコンピュータ実装方法。
【請求項１８】
少なくとも１つのプロセッサと、
命令を記憶するメモリとを備えるシステムであって、前記命令は、前記少なくとも１つのプロセッサによって実行されるとき、前記システムに、
点構成を予測するためにトレーニングした第１のサポート・ベクトル・リグレッサに少なくとも部分的に基づいて、２次元画像の顔部分を決定する工程と、
前記２次元画像の顔部分を変換することによって生成された２次元顔画像の基準点のセットを決定する工程であって、少なくともいくつかの基準点は顔の特徴に対応し、前記第１のサポート・ベクトル・リグレッサとは異なる第２のサポート・ベクトル・リグレッサに少なくとも部分的に基づいて、前記基準点のセットが局所化される、工程と、
前記２次元顔画像において検出された前記基準点のセットと、人間の顔の３次元形状において配置された対応するアンカー・ポイントのセットと、に少なくとも部分的に基づいて、前記２次元顔画像から３次元アライメントされた顔画像を生成する工程と、
ディープ・ニューラル・ネットワーク（ＤＮＮ）への前記３次元アライメントされた顔画像の提供に基づいて、前記２次元顔画像に対応する顔ＩＤを分類する工程であって、前記ＤＮＮは、前記３次元アライメントされた顔画像の特徴のセットに基づいて、前記２次元顔画像を分類するためにトレーニングされる、工程と、を行わせる、システム。
【請求項１９】
命令を含む非一時的なコンピュータ読取可能な記憶媒体であって、前記命令は、コンピューティング・システムの少なくとも１つのプロセッサによって実行されるとき、前記コンピューティング・システムに、
点構成を予測するためにトレーニングした第１のサポート・ベクトル・リグレッサに少なくとも部分的に基づいて、２次元画像の顔部分を決定する工程と、
前記２次元画像の顔部分を変換することによって生成された２次元顔画像の基準点のセットを決定する工程であって、少なくともいくつかの基準点は顔の特徴に対応し、前記第１のサポート・ベクトル・リグレッサとは異なる第２のサポート・ベクトル・リグレッサに少なくとも部分的に基づいて、前記基準点のセットが局所化される、工程と、
前記２次元顔画像において検出された前記基準点のセットと、人間の顔の３次元形状において配置された対応するアンカー・ポイントのセットと、に少なくとも部分的に基づいて、前記２次元顔画像から３次元アライメントされた顔画像を生成する工程と、
ディープ・ニューラル・ネットワーク（ＤＮＮ）への前記３次元アライメントされた顔画像の提供に基づいて、前記２次元顔画像に対応する顔ＩＤを分類する工程であって、前記ＤＮＮは、前記３次元アライメントされた顔画像の特徴のセットに基づいて、前記２次元顔画像を分類するためにトレーニングされる、工程と、を行わせる、記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、顔認識の分野に関する。より詳細には、本技術は、深層学習（ディープ・ラーニング）を使用して顔画像を表現するための技法を提供する。
【背景技術】
【０００２】
顔認識システムは、画像またはビデオから人物を自動的に識別し、または確認するコンピュータ・アプリケーションである。非制約画像における顔認識は、アルゴリズム的知覚革命の最前線である。顔認識技術の社会的および文化的な意義および利点は、広範囲に及ぶ。しかし、マシンと人間の視覚系との間の、この領域における現在の性能ギャップは、こうした利点の実現を妨げている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一貫して制御された（制約された）環境内で撮影された静止画像において正面顔を認識する場合の顔認識誤り率は、過去２０年間にわたって３桁減少してきた。適用例は、国境警備およびスマート生体認証を含む。しかしながら、こうしたシステムは、照明、表情、咬合、および老化などの様々な要因の影響を受けやすいことがある。こうしたシステムの性能は、非制約状況において人々を認識しようと試行する際に、大幅に低下し得る。
【課題を解決するための手段】
【０００４】
本開示の様々な実施形態は、ディープ・ニューラル・ネットワークを採用することによって、顔画像をアライメントし、顔画像を分類し、顔画像を確認するように構成されたシステム、方法、および非一時的なコンピュータ読取可能な媒体を含み得る。いくつかの実施形態において、３次元アライメントされた顔画像（３Ｄ−ａｌｉｇｎｅｄ  ｆａｃｅ  ｉｍａｇｅ）は、２次元顔画像から生成され得る。２次元顔画像のＩＤは、ディープ・ニューラル・ネットワーク（ＤＮＮ）への３次元アライメントされた顔画像の提供に基づいて分類され得る。２次元顔画像のＩＤは、特徴ベクトルを含み得る。
【０００５】
１つの実施形態において、２次元顔画像の基準点のセットが検出され得る。２次元顔画像は、３次元アライメントされた顔画像を生成するために、２次元顔画像を３次元形状へ加工すべく使用され得る。
【０００６】
１つの実施形態において、アンカー・ポイントのセットは、３次元形状上へ配置され得る。各アンカー・ポイントは、２次元顔画像の基準点のセットのうちの１つの基準点に対応し得る。２次元顔画像の基準点のセットのうちの各基準点の位置は、３次元形状へ逆投影され得る。２次元顔画像の基準点のセットのうちの各基準点の位置は、３次元形状の正面像へ投影され得る。２次元顔画像は、基準点のセットとアンカー・ポイントのセットとに基づいて、３次元アライメントされた顔画像へ変換され得る。
【０００７】
１つの実施形態において、２次元顔画像の基準点のセットは、三角形のセットを定義する。アフィン変換は、２次元顔画像を３次元アライメントされた顔画像へ変換するために、三角形のセットのうちの各三角形に対して実行される。
【０００８】
１つの実施形態において、画像の顔部分は、その画像の基準点の第２のセットを検出することによって識別され得る。２次元顔画像は、基準点の第２のセットに基づいて、画像の顔部分を変換することによって生成され得る。
【０００９】
１つの実施形態において、アンカー位置のセットが決定され得る。画像の顔部分は、２次元顔画像を生成するために、アンカー位置のセットに基づいて加工され得る。
１つの実施形態において、ＤＮＮ層のセットを備え、層のセットは、畳み込みプーリング層と、局所的結合層のセットと、全結合層のセットとを備える。
【００１０】
１つの実施形態において、畳み込みプーリング層は、第１の畳み込み層と、最大プーリング層と、第２の畳み込み層とを備える。畳み込みプーリング層は、３次元アライメントされた顔画像の特徴のセットを抽出するように構成される。
【００１１】
１つの実施形態において、局所的結合層のセットのうちの各局所的結合層は、３次元アライメントされた顔画像の特徴のセットを抽出するように構成される。
１つの実施形態において、全結合層のセットのうちの各全結合層は、３次元アライメントされた顔画像の特徴のセット内の相関を決定するように構成される。
【００１２】
１つの実施形態において、全結合層のセットのうちの１つの全結合層の出力は、特徴ベクトルである。
１つの実施形態において、ＤＮＮは、特徴ベクトルに基づいて２次元顔画像を分類するように構成される。特徴ベクトルは、３次元アライメントされた顔画像の特徴のセットを備える。特徴のセットのうちの各特徴は、所定の範囲へ正規化される。
【００１３】
１つの実施形態において、ＤＮＮは、３次元アライメントされた顔画像の各画素についてのフィルタのセットを定義するように構成される。
１つの実施形態において、ＤＮＮは、データセットを用いて前記フィルタのセットを定義するようにトレーニングされる。
【００１４】
１つの実施形態において、２次元顔画像の個人は、画像ストアにおいて２次元顔画像のＩＤを問い合わせることによって識別され得る。画像ストアは、顔画像のセットを備え、顔画像のセットのうちの各顔画像は、個人に対応する。
【００１５】
１つの実施形態において、第２の２次元顔画像の第２のＩＤが分類される。ＩＤは、ＩＤおよび第２のＩＤが個人に対応するか否かを決定するために、第２のＩＤと比較され得る。
【００１６】
１つの実施形態において、ＩＤと第２のＩＤとの間の重み付けされたχ２距離は、ＩＤを第２のＩＤに対して
比較するために決定され得る。
【００１７】
１つの実施形態において、ＩＤは、特徴の第１のセットを備え、第２のＩＤは、特徴の第２のセットを備える。特徴の第１のセットと特徴の第２のセットとの間の特徴差のセットが決定され得る。特徴差のセットは、ＩＤを第２のＩＤに対して比較するために、全結合層を使用することによって所定の値に対してマッピングされ得る。
【００１８】
本発明に係るさらなる実施形態において、１つまたは複数のコンピュータ読取可能な非一時的な記憶媒体は、実行されると、本発明に係る方法または上記実施形態のうちのいずれかを実行するように動作可能であるソフトウェアを具現化する。
【００１９】
本発明に係るさらなる実施形態において、システムは、１つまたは複数のプロセッサと、プロセッサに結合され、プロセッサによって実行可能な命令を備える少なくとも１つのメモリとを備え、プロセッサは、命令を実行する際に、本発明に係る方法または上記実施形態のうちのいずれかを実行するように動作可能である。
【００２０】
本発明に係るさらなる実施形態において、好適には、コンピュータ読取可能な非一時的な記憶媒体を備える、コンピュータ・プログラム製品は、データ処理システム上で実行されると、本発明に係る方法または上記実施形態のうちのいずれかを実行するように動作可能である。
【００２１】
本発明の多くの他の特徴および実施形態は、下記の詳細な説明から、および添付の図面から、明らかとなるであろう。
本発明に係る実施形態は、具体的には、方法、記憶媒体、システムおよびコンピュータ・プログラム製品へ向けられる添付の特許請求の範囲において開示され、１つの請求項のカテゴリ、例えば、方法において記載される任意の特徴は、別の請求項のカテゴリ、例えば、システムにおいても特許請求され得る。添付の特許請求の範囲における従属関係または参照は、形式的な理由のために選ばれているにすぎない。しかしながら、添付の特許請求の範囲において選ばれた従属関係に関わらず、請求項の任意の組み合わせおよびその特徴が開示され、特許請求され得るように、（特に、多数従属形式で）任意の先行請求項への意図的な参照に由来する任意の主題も、特許請求され得る。特許請求され得る主題は、添付の特許請求の範囲において述べられる特徴の組み合わせだけでなく、特許請求の範囲における特徴の任意の他の組み合わせも備え、特許請求の範囲において記載される各特徴は、特許請求の範囲における任意の他の特徴と、または他の特徴の組み合わせと、組み合わせられ得る。さらに、本明細書において説明または図示される実施形態および特徴のうちの任意のものは、別個の請求項において特許請求されてもよく、および／または、本明細書において説明もしくは図示される任意の実施形態もしくは特徴との任意の組み合わせにおいて特許請求されてもよく、または添付の特許請求の範囲の特徴のうちの任意のものとの組み合わせにおいて特許請求されてもよい。
【図面の簡単な説明】
【００２２】
【図１】本開示の一実施形態に係る、ディープ・ニューラル・ネットワークを採用することによって、顔画像をアライメントし、顔画像を分類し、および／または顔画像を確認するように構成された例示的な顔表現モジュールを含む例示的なシステムを例示する図。
【図２】本開示の一実施形態に係る、例示的な顔アライメント・モジュールを例示する図。
【図３Ａ】本開示の一実施形態に係る、基準点を有する検出された顔部分を備える例示的な２次元画像を例示する図。
【図３Ｂ】本開示の一実施形態に係る、図３Ａに示される例示的な２次元画像に基づいて生成された例示的な２次元顔画像を例示する図。
【図３Ｃ】本開示の一実施形態に係る、検出された基準点および基準点によって定義される対応する三角形を有する例示的な２次元顔画像例示する図。
【図３Ｄ】本開示の一実施形態に係る、図３Ｂに示される２次元顔画像の結像面へ変換された例示的な３次元形状を例示する図。
【図３Ｅ】本開示の一実施形態に係る、適合された３次元−２次元カメラに関する三角形視認性を例示する図。
【図３Ｆ】本開示の一実施形態に係る、図３Ｃに例示される基準点に対応する３次元形状上へ配置されたアンカー・ポイントを例示する図。
【図３Ｇ】本開示の一実施形態に係る、例示的な３次元アライメントされた顔画像を例示する図。
【図３Ｈ】本開示の一実施形態に係る、図３Ｇに例示される３次元顔画像に基づいて生成された顔の例示的な図。
【図４】本開示の一実施形態に係る、例示的な顔分類モジュールを例示する図。
【図５】本開示の一実施形態に係る、例示的なＤＮＮの例示的なアーキテクチャを例示する図。
【図６】本開示の一実施形態に係る、２次元顔画像についての顔表現を生成する例示的な方法を例示する図。
【図７】本開示の一実施形態に係る、２次元顔画像についての顔表現を生成する例示的な方法を例示する図。
【図８Ａ】ＬＦＷデータセットに対する、他の方法と比較した、いくつかの実施形態の受信者動作特性（「ＲＯＣ（Ｒｅｃｅｉｖｅｒ  Ｏｐｅｒａｔｉｎｇ  Ｃｈａｒａｃｔｅｒｉｓｔｉｃ）」）曲線を例示する図。
【図８Ｂ】ＹＴＦデータセットに対する、他の方法と比較した、いくつかの実施形態の受信者動作特性（「ＲＯＣ」）曲線を例示する図。
【図９】本開示の一実施形態に係る、様々なシナリオにおいて利用され得る例示的なシステムのネットワーク図。
【図１０】本開示の一実施形態に係る、様々なシナリオにおいて利用され得るコンピュータ・システムの例を例示する図。
【発明を実施するための形態】
【００２３】
図面は、開示される技術の様々な技術を例示の目的のために図示するものにすぎず、図面は、同様の要素を識別するために同様の参照符号を使用する。当業者は、本明細書において説明される開示される技術の原理から逸脱することなく、図面に例示される構造および方法の代替的実施形態が採用され得ることを、下記の議論から容易に認識するであろう。
【００２４】
近年、多数の写真が、検索エンジンによってクロールされ、ソーシャル・ネットワークへアップロードされてきた。これらの写真は、物体、顔、およびシーンなどの多様な非制約材料を含み得る。この膨大な量のデータを活用可能であることは、コンピュータ・ビジョン・コミュニティにとって、その未解決の問題に対処する際に重要である。しかしながら、サポート・ベクトル・マシン、主成分分析および線形判別分析などの、コンピュータ・ビジョンにおいて使用される従来のマシン学習ツールのうちの多くの汎化能力は、トレーニング・セットの量が著しく増加するにつれて、かなり急速に飽和する傾向にある。
【００２５】
現代の顔認識は、検出、アライメント、表現、および分類などのいくつかの段階を備え得る。検出段階中に、１つの画像から１つまたは複数の顔が検出されることがあり、検出された顔は、アライメント段階においてアライメントされる。その後、画像中の各顔は、表現段階中に表現される。画像中の各顔は、分類段階において分類され得る。従来の顔確認方法は、ユーザによって定義および選択される、手動で選択された特徴を使用する。手動で選択された特徴は、最も早期のＬａｂｅｌｅｄ  Ｆａｃｅｓ  ｉｎ  ｔｈｅ  Ｗｉｌｄ（「ＬＦＷ」）寄稿においてさえ、性能を改善するために組み合わせられ得る。こうしたシステムは、数万個の画像記述子を採用し得る。
【００２６】
顔アライメントは、両目、鼻、口、および顎などの意味論的な顔ランドマークの位置を突き止める。結果として、顔アライメントは、顔認識システムの重要な部分となり得る。アライメントされた顔のデータセットを含む顔データベース（例えば、ＬＦＷ−ａ）は、正規化された入力を提供することによって、顔認識システムの性能を改善し得る。ＬＦＷ結果ページに関する寄稿のうちのいくつかは、２次元アライメントされたバージョンのデータセット（例えば、ＬＦＷ−ａ）を使用し、結果を改善している。他の寄稿は、よりカスタマイズされた解決策を採用し得る。例えば、妥当な「ＩＤ保存」アライメントを推論するための類似した姿勢および表情の個人のデータセットが使用される。それでもなお、非制約シナリオにおいて顔をアライメントすることは、困難となり得る。顔の非平面性に起因して、顔面形態学を阻む、人物のＩＤから切り離すことが難しい多くの要因（例えば、姿勢および柔らかい表情）が考慮される必要がある。
【００２７】
図１は、本開示の実施形態に係る、ディープ・ニューラル・ネットワークを採用することによって、顔画像をアライメントし、顔画像を分類し、および／または顔画像を確認するように構成された例示的な顔表現モジュール１０２を含む例示的なシステム１００を例示する。図１に示されるように、例示的な顔表現モジュール１０２は、顔アライメント・モジュール１０４と、顔分類モジュール１０６と、顔確認モジュール１０８とを備え得る。
【００２８】
例示的なシステム１００は、少なくとも１つの画像ストア１１０を含み得る。図１の例において、少なくとも１つの画像ストア１１０は、画像、またはビデオなどの他のデジタル媒体を記憶するように構成され得る。画像は、識別された顔画像または識別されていない顔画像を含み得る。識別された顔画像は、人物に対してリンクされるのに対して、識別されていない顔画像は、何れの人物に対してもリンクされない。例えば、識別された顔画像は、人物のＩＤ（例えば、氏名、ユーザ名等）に対してタグ付けされ得る。画像は、２次元または３次元であってよい。様々な実施形態において、原画像は、基礎となる表現として使用され得る。画像ストア１１０は、データセットを記憶し得、データセットは、顔表現を学習および分類するためにディープ・ニューラル・ネットワーク（「ＤＮＮ」）をトレーニングすべく使用され得る。様々な実施形態は、他のデータセットに対しても十分に汎用化する顔表現を取得するために、顔の非常に大きなラベル付きデータセットを活用するディープ・ニューラル・ネットワーク・アーキテクチャおよび学習方法を提供し得る。ＤＮＮは、例えば、重み共有なしにいくつかの局所的結合層を使用する１億２千万個を超えるパラメータに関与し得る。例えば、データセットは、４０００個を超えるＩＤに所属する４百万個の顔画像を備え得る。ここで、各ＩＤは、１人の人物の平均千個を超えるサンプルを有する。
【００２９】
いくつかの実施形態において、顔アライメント・モジュール１０４は、基準点に基づいた、顔の分析的な３次元モデリングを含むように構成され得る。顔アライメント・モジュール１０４は、分析的な３次元モデルに基づいて、検出された顔クロップ（ｆａｃｉａｌ
ｃｒｏｐ）を加工し、それによって、３次元アライメントされた顔画像を作成するようにさらに構成され得る。各顔領域の位置は、３次元アライメントされた顔画像において画素レベルで固定されているため、顔貌は、原画像における画素のＲＧＢ値から学習および検出され得る。
【００３０】
いくつかの実施形態において、顔分類モジュール１０６は、画像のＩＤを分類するように構成され得る。顔分類モジュール１０６は、画像の画素のＲＧＢ値に直接基づいて、画像のＩＤ（例えば、顔表現）を分類するように構成され得る。画像のＩＤは、非常に短く、疎ですらあり得る。さらなる実施形態において、画像のＩＤは、画素のＲＧＢ値、画像の勾配ドメイン、奥行きマップ、もしくは奥行き情報、または、これらの任意の組み合わせに基づいて作成され得る。
【００３１】
いくつかの実施形態において、顔確認モジュール１０８は、２つの画像が同じＩＤを有するかを確認するように構成される。換言すれば、２つの画像が同じクラスに所属するかが確認される。顔確認モジュール１０８は、顔分類モジュール１０６によって分類されたＩＤ（例えば、画像の顔表現）に基づいて、２つの画像間の類似性を決定するように構成され得る。画像は、特徴ベクトルによって表現され得る。いくつかの実施形態において、２つの画像の類似性は、２つの画像についての２つの正規化された特徴ベクトル間の内積を計算することによって決定され得る。いくつかの実施形態において、２つの画像の類似性は、χ２類似性またはサイアミーズ・ネットワーク（Ｓｉａｍｅｓｅ  ｎｅｔｗｏｒｋ）などの監視されたメトリックによって決定され得る。
【００３２】
２つの画像間の重み付けされたχ２類似性は、χ２（ｆ１，ｆ２）＝Σｉｗｉ（ｆ１（ｉ）−ｆ２（ｉ））２／（ｆ１（ｉ）＋ｆ２（ｉ））として表現され得る。ここで、ｆ１およびｆ２は、それぞれ画像の特徴ベクトル表現である。重みパラメータは、要素（ｆ１（ｉ）−ｆ２（ｉ））２／（ｆ１（ｉ）＋ｆ２（ｉ））のベクトルに対して適用される、線形ＳＶＭを使用して学習され得る。
【００３３】
サイアミーズ・ネットワークは、２つの画像について高度に非線形なメトリックを提供する。２つの画像について識別される特徴間の絶対差は、２つの入力画像が同じ人物に所属するかを直接予測するために決定および使用され得る。２つの画像についての特徴間の誘導距離は、ｄ（ｆ１，ｆ２）＝Σｉａｉ｜ｆ１（ｉ）−ｆ２（ｉ）｜として表現され得る。ここで、ａｉは、サイアミーズ・ネットワークのトレーニング可能なパラメータである。サイアミーズ・ネットワークのパラメータ（ａｉおよびより下位の層における関節パラメータ）は、ロジスティック関数１／（１＋ｅｘｐ（−ｄ））を通じて０と１との間の距離を正規化することによって、ならびに、交差エントロピー損失およびバック・プロパゲーションを使用することによって、トレーニングされ得る。様々な実施形態において、顔確認タスクに対するオーバーフィッティングを防止するために、トレーニングは、サイアミーズ・ネットワークの２つの最上位の層についてのみ可能とされる。
【００３４】
図２は、本開示の実施形態に係る、図１（例えば、顔アライメント・モジュール１０４）に示されるような例示的な顔アライメント・モジュール２０２を例示する。例示的な顔アライメント・モジュール２０２は、顔画像をアライメントし得る。アライメントされるべき画像は、少なくとも１つのデータ・ストア２０８（例えば、図１における画像ストア１１０）から取得され得る。アライメントされた顔画像は、データ・ストア２０８内に記憶され得る。図２は、図３Ａ〜図３Ｈに関連して議論される。
【００３５】
図３Ａ〜図３Ｈは、本開示の実施形態に係る、アライメント・プロセスの異なる時間における例示的な画像データを例示する。図３Ａは、基準点を有する検出された顔部分３１０を備える例示的な２次元画像３０１を例示する。図３Ｂは、図３Ａに例示される例示的な２次元画像３０１に基づいて生成された例示的な２次元顔画像３０２を例示する。図３Ｃは、検出された基準点および基準点によって定義される対応する三角形を有する例示的な２次元顔画像３０３を例示する。図３Ｄは、図３Ｂに例示された２次元顔画像３０２の結像面へ変換された例示的な３次元形状３０４を例示する。図３Ｅは、適合された３次元−２次元カメラに関する三角形視認性を例示する。図３Ｆは、図３Ｃに例示される基準点に対応する３次元形状３０６上に配置されたアンカー・ポイントを例示する。図３Ｇは、例示的な３次元アライメントされた顔画像３０７を例示する。図３Ｈは、図３Ｇに例示された３次元顔画像３０７に基づいて生成された顔３０８の例示的な図を例示する。
【００３６】
顔アライメント・モジュール２０２は、基準点検出モジュール２０４と、画像変換モジュール２０６とを備え得る。顔アライメント・モジュールは、２次元画像２１０を３次元アライメントされた顔画像２１２へアライメントするように構成され得る。３次元アライメントされた顔画像２１２は、顔面形態学を阻む、人物のＩＤから切り離すことが難しい多くの要因が考慮され得るように、非制約シナリオにおいてアライメントされ得る。例えば、顔の非平面性および柔らかい表情に起因する姿勢が考慮される。
【００３７】
基準点検出モジュール２０４は、２次元顔画像における基準点を局所化する。２次元顔画像は、非制約画像であり得る。様々な実施形態において、基準点は、サポート・ベクトル・リグレッサ（ＳＶＲ：Ｓｕｐｐｏｒｔ  Ｖｅｃｔｏｒ  Ｒｅｇｒｅｓｓｏｒ）によって抽出され得る。ＳＶＲは、２次元顔画像の画像記述子から点構成を予測するためにトレーニングされ得る。様々な実施形態において、画像記述子は、ローカル・バイナリ・パターン（「ＬＢＰ（Ｌｏｃａｌ  Ｂｉｎａｒｙ  Ｐａｔｔｅｒｎｓ）」）・ヒストグラムに
基づく。さらなる実施形態において、他の特徴は、画像記述子において考慮され得る。いくつかの実施形態において、基準点検出モジュール２０４がその出力を改良し得るように、複数の反復が適用され得る。つまり、基準点検出モジュール２０４は、基準点の最初のセットを検出するように構成され得る。基準点の最初のセットは、複数回の反復を通じて、基準点の最終的なセットへ改良され得る。２次元顔画像は、誘導された類似性行列Ｔを使用して、２次元変換画像へと変換され得る。基準点検出モジュール２０４は、２次元顔画像の基準点の局所化を改良するために使用され得る新たな特徴空間上で２次元変換画像を分析し得る。
【００３８】
基準点検出モジュール２０４は、２次元顔画像の基準点のセットを検出するように構成され得る。図３Ｃを参照すると、基準点のセットを有する例示的な２次元顔画像３０３が例示されている。基準点のセットｘ２ｄは、図３Ａに例示される２次元画像３０１の２次元アライメントされたクロップ画像である、図３Ｂに例示される２次元顔画像３０２から検出される。基準点のセットｘ２ｄは、トレーニングされたＳＶＲを使用することによって検出され得る。例示される例において、選択された数（例えば、６７個）の基準点が、２次元顔画像３０３上で局所化される。基準点のセットｘ２ｄは、対応する三角形のセット（例えば、ドロネー三角形分割法）を定義し得る。対応する三角形のセットは、２次元顔画像３０３に例示される画像の輪郭に追加され得る。そのため、クロッピングおよび鋭角が回避され得る。
【００３９】
図２を再度参照すると、画像変換モジュール２０６は、基準点検出モジュール２０４によって検出された基準点のセットを使用することによって、２次元顔画像を３次元形状へ加工することにより３次元アライメントされた顔画像２１２を生成するように構成され得る。図３Ｇを参照すると、図３Ｂに例示される２次元顔画像３０２に基づいて作成された、例示的な３次元アライメントされた顔画像３０７が例示されている。２次元顔画像３０２は、図３Ｇに例示される３次元アライメントされた顔画像３０７を生成するために、図３Ｃに例示される基準点のセットを使用して加工され得る。２次元顔画像を３次元形状または３次元モデルへ加工する場合、２次元顔画像からの各基準点の位置は、復元された射影行列Ｐを通じて３次元形状または３次元モデルへ逆投影され、その後、３次元形状または３次元モデルの正面像へ投影される。様々な実施形態において、２次元顔画像上で検出された基準点のセットから得られた三角形（例えば、ドロネー三角形分割法）によって方向付けられる、区分的アフィン変換が使用される。
【００４０】
図３Ｄを参照すると、２次元顔画像３０２の結像面へ変換された例示的な３次元形状または３次元モデル３０４が例示されている。一般的な３次元形状または３次元モデルは、外部平面回転を含む顔画像３０２をアライメントするための基準として使用され得る。様々な実施形態において、一般的な３次元形状モデルは、ＵＳＦヒューマンＩＤデータベースからの３Ｄスキャンの平均値である。３Ｄスキャンの平均値は、アライメントされた頂点ｖｉ＝（ｘｉ，ｙｉ，ｚｉ）ｎｉ＝１として処理および表現され得る。
【００４１】
アンカー・ポイントのセットＸ３ｄは、３次元形状上へ配置され得る。各アンカー・ポイントは、２次元顔画像上で検出された基準点に対応する。２次元顔画像上で検出された基準点と３次元アライメントされた顔画像上のアンカー・ポイントとの間の完全な一致が達成され得る。例えば、図３Ｆは、３次元形状または３次元モデルによって誘導され得るアンカー・ポイントを例示する。図３Ｆに例示されるアンカー・ポイントの各々は、図３Ｃに例示される基準点に対応する。基準点およびアンカー・ポイントは、図３Ｂに例示される２次元顔画像の、図３Ｇに例示される３次元アライメントされた顔画像への区分的アフィン加工を方向付けるために使用され得る。
【００４２】
３次元アフィン・カメラＰは、図３Ｂに例示される２次元顔画像３０２の正面顔平面を
、図３Ｄに例示される３次元形状３０４の結像面へ逆投影するために、登録および使用され得る。そのため、参照３次元形状３０４は、２次元顔画像３０２の結像面へ変換される。換言すれば、２次元顔画像３０２は、参照３次元形状３０４に基づいて、３次元アライメントされた顔画像へ変換される。アフィン３次元−２次元カメラＰは、
【００４３】
【数１】
0006594329.tif 000002
について、既知の共分散を用いて最小二乗法を使用して解かれ得る。ここで、Ｘ３ｄは、参照基準点位置
【００４４】
【数２】
0006594329.tif 000003
によって与えられる（２ｘ８）の行列スタックであり、
【００４５】
【数３】
0006594329.tif 000004
は、４つのゼロの行ベクトルを表す。サイズ２ｘ４のアフィン・カメラＰは、８個の未知の
【００４６】
【数４】
0006594329.tif 000005
のベクトルによって表現され得る。いくつかの実施形態において、基準点誤差の推定共分散によって与えられる、（６７＊２）ｘ（６７＊２）の共分散行列Σが使用される。これは、顔の輪郭上の検出された点は、それらの推定位置がカメラ角度に対する奥行きによって影響を受け得ることから、より雑音が多くなり得るためである。
【００４７】
図３Ｅは、適合されたアフィン３次元−２次元カメラに関する三角形視認性を例示する。３次元形状または３次元モデル上の三角形の視認性は、アフィン３次元−２次元カメラからの三角形を定義する対応するアンカー・ポイントの距離に依存し得る。基準点についてのカメラからの距離に依存して、三角形３３４は、三角形３３２よりも視認性が低くなり、三角形３３２は、三角形３３０よりも視認性が低くなる。
【００４８】
図２を再度参照すると、様々な実施形態において、顔アライメント・モジュール２０２は、２次元画像２１０から２次元顔画像を生成するように構成され得る。図３Ａを参照すると、顔部分３１０は、２次元画像３０１から検出され得る。２次元画像３０１の顔部分３１０は、基準点３１２、３１４、３１６、３１８、３２０、および３２２のセットを検出することによって識別され得る。基準点３１２、３１４は、目の中心を中心とし、基準
点３１６は、鼻の先端上を中心とし、基準点３１８、３２２、および３２０は、それぞれ口の両端および中央を中心とし得る。顔部分において検出された基準点は、アンカー位置のセットを決定するために使用され得る。識別された顔部分は、２次元顔画像を生成するために、アンカー位置のセットに基づいて加工され得る。例えば、例示されるように、基準点３１２、３１４、３１６、３１８、３２０、および３２２は、顔部分３１０を３つのアンカー位置へおよそ拡大縮小し、回転し、転換するために使用され得る。図３Ｂに例示されるような新たな加工された画像を生成するために、３つのアンカー位置は、Ｔｉ２ｄ：＝（ｓｉ，Ｒｉ，ｔｉ）について解くことによって決定され得る。ここで、点ｊ＝１．．ｎについて、ｘｊａｎｃｈｏｒ：＝ｓｉ［Ｒｉ｜ｔｉ］＊ｘｊｓｏｕｒｃｅである。図３Ｂは、２次元顔画像３０２を例示する。２次元顔画像３０２は、２次元画像３０１に基づくアグリゲートされた変換によって生成される、アライメントされた顔クロップであり得る。実質的な変化が存在しなくなるまで、複数回の反復が実行されてアンカー位置を決定され、それによって、検出された顔部分３１０に基づいて２次元顔画像３０２が生成される。最終的な２次元類似性変換Ｔ２ｄ：＝ＴＪ２ｄ＊．．．＊ＴＫ２ｄが構成され得る。
【００４９】
図４は、本開示の実施形態に係る、図１（例えば、顔分類モジュール１０６）に示されるような、例示的な顔分類モジュール４０２を例示する。例示的な顔分類モジュール４０２は、画像４１２のＩＤを分類し得る。分類されるべき画像は、少なくとも１つのデータ・ストア４１０（例えば、図１における画像ストア１１０）から取得され得る。分類された画像は、データ・ストア４１０内に記憶され得る。図４は、図５に関連して議論される。
【００５０】
顔分類モジュール４０２は、フィルタ生成モジュール４０４と、特徴ベクトル生成モジュール４０６と、表現カテゴリ化モジュール４０８とを備え得る。顔分類モジュール４０２は、画像のＩＤ（例えば、顔表現）をＤＮＮから得るように構成され得る。フィルタ生成モジュール４０４は、データセットを用いてＤＮＮをトレーニングすることによって、フィルタのセットを生成するように構成され得る。様々な実施形態において、データセットは、大量の写真を含み得る。写真のうちの一部が識別され（例えば、ＩＤを用いてラベル付けされ、またはタグ付けされ）得る。各フィルタは、画像の特徴（例えば、顔の特徴）を抽出するように構成され得る。特徴ベクトル生成モジュール４０６は、画像の特徴ベクトルを生成するように構成され得る。特徴ベクトルは、画像の様々な特徴を含み、画像を表現するために使用され得る。画像の特徴ベクトルは、フィルタ生成モジュール４０４によって提供されるフィルタのセットに基づいて生成され得る。表現カテゴリ化モジュール４０８は、画像の特徴ベクトルに基づいて、画像をカテゴリ化し得る。
【００５１】
様々な実施形態において、ＤＮＮは層のセットを備え、層のセットは、畳み込みプーリング層と、局所的結合層と、全結合層とを含む。畳み込みプーリング層は、画像の特徴のセットを抽出するように構成され得る。局所的結合層は、画像の特徴の別のセットを抽出するように構成され得る。全結合層は、画像の特徴間の相関を決定するように構成され得る。いくつかの実施形態において、ＤＮＮの全体的なアーキテクチャは、局所的結合層のセットが後に続く、畳み込みプーリング層を含み、局所的結合層のセットの後には、全結合層が続く。ＤＮＮは、少なくとも選択された数（例えば、１億２千万個）のパラメータ（例えば、接続重み）を備え得る。様々な実施形態において、ＤＮＮは、図３Ｇに例示される３次元アライメントされた顔画像３０７などの、３次元アライメントされた顔画像を入力として受信するように構成される。
【００５２】
様々な実施形態において、ＤＮＮは、ＲｅＬＵ活性化関数ｍａｘ（０，ｘ）を使用する。このソフトしきい値非線形性（ｓｏｆｔ−ｔｈｒｅｓｈｏｌｄｉｎｇ  ｎｏｎ−ｌｉｎｅａｒｉｔｙ）は、ＤＮＮの最後の全結合層を除いて、畳み込み層、局所的結合層、また
は全結合層の後に適用され得る。そのため、高度に非線形で、かつ、疎な特徴が生み出され得る。したがって、顔分類モジュール４０２によって生み出される特徴は、非常に疎となり得る。いくつかの実施形態において、平均して、最上位の層における特徴成分の７５％は、ちょうどゼロである。さらなる実施形態において、トレーニング中に無作為の特徴成分を０に設定する正則化方法（例えば、ドロップアウト）が適用され得る。いくつかの実施形態において、正則化方法は、最初の全結合層のみに対して適用され得る。ＲｅＬＵ活性化の使用は、顔分類モジュール４０２が画像強度の調整に対して不変とならないことを可能にする。ＤＮＮにおけるバイアスがなければ、完全な同変性（ｅｑｕｉｖａｒｉａｎｃｅ）、または、ほぼ完全な同変性が達成され得る。
【００５３】
いくつかの実施形態において、顔分類モジュール４０２は、特徴がゼロと１との間になるように正規化するように構成され得る。顔分類モジュール４０２は、Ｌ２正規化を実行するようにさらに構成され得る。そのため、後続の学習が改善され得る。特徴ベクトルの各成分は、その最大値によって、トレーニング・セット全体にわたって除算され得る。いくつかの実施形態において、小さい数による除算を回避するために、正規化係数は、所定の値（例えば、０．０５）を上限に定められる。最大数が所定の値（例えば、０．０５）よりも小さい場合、特徴は正規化されない。そのような正規化は、顔分類モジュール４０２が照明変化に対してロバストであることを確保し得る。
【００５４】
様々な実施形態において、入力された３次元アライメントされた顔画像は、ＤＮＮの畳み込みプーリング層へ提供され得る。畳み込みプーリング層は、第１の畳み込み層（Ｃ１）と、最大プーリング層（Ｍ２）と、第２の畳み込み層（Ｃ３）とを備え得る。各畳み込み層は、フィルタのセットを備えるように構成され得る。フィルタの各々は、特徴マップを生成するように構成される。最大プーリング層は、小さい登録誤差に対して、ＤＮＮをよりロバストにし得る。しかしながら、いくつかのレベルのプーリングは、ネットワークに対して、詳細な顔構造およびマイクロ・テクスチャの正確な位置に関する情報を失わせ得る。そのため、様々な実施形態において、最大プーリングは、第１の畳み込み層のみに対して適用され得る。つまり、第１の畳み込み層の後にのみ、最大プーリング層が続く。畳み込みプーリング層は、画像の低レベルの特徴（例えば、単純なエッジおよびテクスチャ）を抽出するように構成される。畳み込みプーリング層は、入力画像を適応的に前処理し、その入力画像を単純な局所的特徴のセットへ拡張する。
【００５５】
図５は、本開示の実施形態に係る、例示的なＤＮＮの例示的なアーキテクチャ５００を例示する。３次元アライメントされた顔画像５２４（ＲＧＰコピー５２４ａ〜５２４ｃを含む）は、入力としてＤＮＮ５００へ提供される。例示される例において、ＤＮＮ５００は、画素のＲＧＢ値に基づいて、３次元アライメントされた顔画像５１４のＩＤを分類し得る。画像５２４の局所的な顔の特徴は、畳み込みプーリング層５０２および局所的結合層のセット５１０によって抽出され得る。画像５２４の局所的な顔の特徴間の相関は、全結合層のセット５１８によって決定され得る。例示される例において、全結合層Ｆ７  ５２０の出力は、画像５２４の特徴ベクトルとして使用され得る。
【００５６】
例示されるように、例示的な畳み込みプーリング層５０２は、畳み込み層Ｃ１  ５０４と、最大プーリング層Ｍ２  ５０６と、畳み込み層Ｃ３  ５０８とを備える。畳み込み層は、フィルタのセット（例えば、３２個のフィルタ）を有するように構成され得る。１つの実施形態において、選択された数のフィルタの各フィルタは、１１ｘ１１ｘ３の大きさであり得る。畳み込み層Ｃ１によって生成された特徴マップのセットは、最大プーリング層Ｍ２へ提供され得る。各チャネルについて、最大プーリング層Ｍ２は、３ｘ３の空間近傍に対して、ストライド２で最大値を取るように構成され得る。第２の畳み込み層Ｃ３は、最大プーリング層Ｍ２の出力に対して適用され得る。畳み込み層Ｃ３は、フィルタのセット（例えば、１６個のフィルタ）を有するように構成され得る。一実施形態において、
選択された数のフィルタの各フィルタは、９ｘ９ｘ１６の大きさであり得る。
【００５７】
畳み込みプーリング層によって生成された画像の特徴（例えば、局所的な顔の特徴）は、局所的結合層のセットへ提供され得る。局所的結合層のセットは、重み共有をせず、局所的結合層の各出力は、入力の非常に大きなパッチによって影響を受け得る。そのため、局所的結合層の使用は、特徴抽出の計算負荷に対しては影響を及ぼさないかもしれないが、トレーニングを受けるパラメータの数に対しては影響を及ぼし得る。各局所的結合層は、入力画像から特徴のセットを抽出するように構成され得る。画像の同じ位置について、異なる特徴が、局所的結合層および畳み込み層によって抽出され得る。つまり、特徴マップ内のあらゆる位置におけるフィルタのセットは、ＤＮＮの局所的結合層によって学習され、このフィルタのセットは、畳み込み層によって学習されるフィルタのセットとは異なる。局所的結合層は、畳み込みの空間的定常性の仮定を置かない。なぜならば、アライメントされた画像の異なる領域は、異なる局所的統計値を有し得るためである。例えば、両目と両眉毛との間のエリアは、大きく異なる外観を提示し、鼻と口との間のエリアと比較して、かなり高い識別能を有する。
【００５８】
図５をまた参照すると、例示されるように、局所的結合層の例示的なセット５１０は、第１の局所的結合層Ｌ４  ５１２と、第２の局所的結合層Ｌ５  ５１４と、第３の局所的結合層Ｌ６  ５１６とを備える。例示される例示的なＤＮＮ５００に対する、入力画像の特徴マップ内のあらゆる位置において、局所的結合層Ｌ４  ５１２、Ｌ５  ５１４、またはＬ６  ５１６は、畳み込み層Ｃ１  ５０４またはＣ３  ５０８によって適用されるセットからのフィルタの異なるセットを適用し得る。局所的結合層Ｌ４  ５１２、Ｌ５  ５１４、またはＬ６  ５１６の各出力ユニットは、入力の非常に大きなパッチによって影響を及ぼされ得る。例えば、例示されるように、局所的結合層Ｌ６  ５１６の出力は、入力画像５２４の７４ｘ７４ｘ３のパッチによって影響を与えられ得る。入力画像５２４はアライメントされているため、そのようなパッチ間には、ほとんどいかなる統計共有も存在しない。
【００５９】
畳み込みプーリング層と局所的結合層のセットとによって生成された画像の局所的な顔の特徴は、全結合層のセットへ提供され得る。全結合層のセットは、畳み込みプーリング層と局所的結合層のセットとによって生成された画像の局所的な顔の特徴間の相関を決定するように構成され得る。つまり、全結合層のセットは、顔画像の離れた部分において抽出された局所的な顔の特徴（例えば、両目の位置および形状、口の位置および形状）間の相関を決定するように構成される。全結合層の各出力は、全結合層の全ての入力に対して接続され得る。
【００６０】
図４を参照すると、いくつかの実施形態において、特徴ベクトル生成モジュール４０６は、全結合層の出力を画像４１０の特徴ベクトルとして使用するように構成され得る。表現カテゴリ化モジュール４０８は、特徴ベクトルに基づいて、画像をクラスへカテゴリ化するように構成され得る。いくつかの実施形態において、ＤＮＮの出力（例えば、最後の全結合層の出力）は、Ｋ方向ソフトマックス（Ｋ−ｗａｙ  ｓｏｆｔｍａｘ）へ提供され得る。ここで、Ｋは、クラスの数である。Ｋ方向ソフトマックスは、クラス・ラベルにわたる分散を生み出すように構成され得る。ｉ番目のクラスに対して割り当てられる確率は、ソフトマックス関数ｐｉ＝ｅｘｐ（ｏｉ）／Σｊｅｘｐ（ｏｊ）の出力であり、ここで、ｏｉは、所与の出力についてのネットワークのｉ番目の出力を表す。表現カテゴリ化モジュール４０８は、２次元顔画像が所属する個人を識別するように構成され得る。画像ストア４１０は、２次元顔画像のＩＤ（例えば、顔表現、特徴ベクトル）を用いて問い合わせをされ得る。
【００６１】
様々な実施形態において、ＤＮＮをトレーニングする場合、正確なクラス（例えば、顔
ＩＤ）の確率が最大化される。各トレーニング・サンプルについての交差エントロピー損失は、正確なクラスの確率を最大化するために、最小化され得る。所与の入力についての交差エントロピー損失は、Ｌ＝−ｌｏｇｐｋであり、ここで、ｋは、所与の入力についての真のラベルのインデックスである。パラメータに対するＬの勾配を計算することによって、および、確率的勾配降下法（ＳＧＤ：ｓｔｏｃｈａｓｔｉｃ  ｇｒａｄｉｅｎｔ  ｄｅｓｃｅｎｔ）を使用してパラメータを更新することによって、損失は、パラメータにわたって最小化され得る。いくつかの実施形態において、勾配は、誤差の標準的な逆伝搬によって決定され得る。
【００６２】
ＤＮＮ５００のアーキテクチャは、入力画像がアライメントされているという事実を活用することによってカスタマイズされ得る。例示的なＤＮＮ５００は、様々な顔の特徴を検出するために、および／または、（上記でより詳細に説明されるように）画像の特徴ベクトルを生成するために、様々な顔の特徴に対応する異なるフィルタを学習するように構成され得る。図５に例示されるように、例示的なＤＮＮ５００は、畳み込みプーリング層５０２と、局所的結合層のセット５１０と、全結合層のセット５１８とを備える、９層のＤＮＮである。畳み込みプーリング層５０２は、畳み込み層Ｃ１  ５０４と、最大プーリング層Ｍ２  ５０６と、畳み込み層Ｃ３  ５０８とを備え得る。局所的結合層のセット５１０は、局所的結合層Ｌ４〜Ｌ６  ５１２、５１４、および５１６を備え得、全結合層のセット５１８は、全結合層Ｆ７〜Ｆ８  ５２０および５２２を備え得る。全結合層Ｆ７  ５２０またはＦ８  ５２２の各出力ユニットは、全ての入力に対して接続され得る。
【００６３】
図６は、本開示の実施形態に係る、２次元顔画像についての顔表現を生成する例示的な方法を例示する。特に明記されない限り、様々な実施形態の範囲内で、同様の順序もしくは代替的な順序で実行され、または、並行して実行される、追加的な工程、より少ない工程、または代替的な工程が存在し得ることが認識されるべきである。ブロック６０２において、３次元アライメントされた顔画像は、２次元顔画像に基づいて生成される。３次元アライメントされた顔画像は、３次元モデルに基づく２次元顔画像のアフィン変換を適用することによって作成され得る。３次元モデルは、明確な３次元顔モデリングであり得る。ブロック６０４において、２次元顔画像のＩＤは、３次元アライメントされた顔画像をＤＮＮへ提供することによって分類され得る。２次元顔画像の顔表現（例えば、特徴ベクトル）は、２次元顔画像に対応する３次元アライメントされた顔画像を使用することによって生成され得る。いくつかの実施形態において、ＤＮＮは、９個の層を備え得る。ＤＮＮは、例えば、重み共有なしに複数の局所的結合層を使用する１億２千万個を超えるパラメータに関与し得る。より詳細な議論および例は、図１〜図５を参照しつつ、上記に提供されている。
【００６４】
図７は、本開示の実施形態に係る、２次元顔画像についての顔表現を生成する例示的な方法を例示する。特に明記されない限り、様々な実施形態の範囲内で、同様の順序もしくは代替的な順序で実行され、または、並行して実行される、追加的な工程、より少ない工程、または代替的な工程が存在し得ることが認識されるべきである。ブロック７０２において、２次元画像内の顔部分は、その２次元画像上の基準点のセットを検出することによって識別される。基準点は、画像記述子から点構成を予測するようにトレーニングされたＳＶＲによって検出され得る。ブロック７０４において、２次元顔画像は、ブロック７０２において検出された基準点に基づいて、２次元画像の顔部分を変換することによって生成され得る。２次元顔画像は、２次元画像のアライメントされたクロップであり得、アグリゲートされた変換によって生成され得る。２次元類似性変換が最終的に構成される場合、実質的な変化が存在しなくなるまで、基準点は、２次元画像の顔部分を拡大縮小し、回転させ、転換し、新たな加工された画像上で反復するために使用され得る。
【００６５】
ブロック７０６において、基準点の異なるセットが、２次元顔画像において検出され得
る。基準点は、ブロック７０２において使用されたＳＶＲとは異なるＳＶＲを使用することによって局所化され得る。ブロック７０８において、２次元顔画像は、ブロック７０６において検出された基準点を使用することによって３次元形状へ加工されて、３次元アライメントされた顔画像が生成され得る。３次元形状は、一般的な３次元モデルであり得る。３次元アフィン・カメラが登録されてもよく、３次元アフィン・カメラは、２次元顔画像の正面顔平面を３次元形状の結像面へ逆投影するために登録および使用され、それによって、３次元アライメントされた顔画像を生成する。ブロック７１０において、２次元顔画像のＩＤは、３次元アライメントされた顔画像をディープ・ニューラル・ネットワーク（「ＤＮＮ」）へ提供することによって分類され得る。より詳細な議論および例は、図１〜図５を参照しつつ、上記に提供されている。
【００６６】
様々な実施形態において、ＤＮＮは、ソーシャル・フェイス・クラシフィケーション（「ＳＦＣ（Ｓｏｃｉａｌ  Ｆａｃｅ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ）」）・データセットと称される大量の写真から顔表現を学習するように構成される。表現は、ＬＦＷデータベースおよびＹｏｕＴｕｂｅ（登録商標）フェイス（「ＹＴＦ（ＹｏｕｔＴｕｂｅ  Ｆａｃｅｓ）」）に対して適用され得る。ＬＦＷデータベースは、非制約環境における顔確認のための事実上のベンチマーク・データセットとして使用され得る。ＹＴＦデータセットは、ＬＦＷと同様にモデリングされ得るが、ビデオ・クリップに注目する。ＳＦＣ内の顔ＩＤは、人間によってラベル付けされており、典型的には、約３％の誤りを含む。ソーシャル・フェイス・フォトは、スマートフォンではなく、専門的な写真家によって通常は撮影される、ＬＦＷおよびＹＴＦ内の有名人のウェブ画像よりも、画像品質、照明、および表情において、より大きいバリエーションを有する。
【００６７】
ここで使用されるようなＳＦＣデータセットは、４，０３０名の人々からの４４０万個のラベル付けされた顔を含む。各個人は、８００個から１２００個の顔の画像を有し得る。各ＩＤの顔画像の最新の５％は、省略され得る。ここで使用されるようなＬＦＷデータセットは、５，７４９名の有名人の１３，３２３個のウェブ写真から成り、これらは、１０分割された６，０００個の顔ペアに分けられる。性能は、「同じ」ラベルおよび「同じではない」ラベルのみがトレーニングにおいて利用可能である、制限されたプロトコル、または、トレーニング対象のＩＤもトレーニングにおいてアクセス可能である、制限されていないプロトコルを使用して、平均認識確度によって測定される。また、「監視無し」プロトコルは、このデータセットに対するトレーニングなしで、ＬＦＷ上での性能を測定し得る。
【００６８】
ここで使用されるようなＹＴＦデータセットは、ＬＦＷ内の有名人のサブセットであり得る、１，５９５個のテーマの３，４２５個のＹｏｕＴｕｂｅ（登録商標）ビデオを収集する。これらのビデオは、５，０００個のビデオ・ペアに分けられ、１０分割され、ビデオ・レベル顔確認を評価するために使用され得る。
【００６９】
ＤＮＮは、（０．９に設定された）モメンタムを用いる確率的勾配降下法（ＳＧＤ）により、フィード・フォワード・ネットに対して標準的な誤差逆伝搬を実装することによって、ＳＦＣ上でトレーニングされ得る。ミニ・バッチ・サイズは、１２８であり、全ての学習層について、等しい学習率０．０１が確保される。学習率は、最終的な率０．００００１まで手動で減少され得る。いったん確認誤りが減少しなくなると、毎回、学習率は、１桁ずつ低減され得る。各層における重みは、ｏ＝０．０１とし、バイアスを０．５に設定した、平均ゼロのガウス分布から初期化され得る。ネットワークは、データ全体にわたるおおよそ１５回のスイープ（エポック）の間、トレーニングされ得る。
【００７０】
表１は、トレーニング・データセット・サイズおよびネットワーク深さに関する、ＳＦＣ上での実施形態の分類誤りを例示する。トレーニングおよびテスト・データセット・サ
イズは、ＳＦＣにおける個人のサブセットを使用して変更された。１５０万個、３３０万個、および４４０万個の顔を備えるＳＦＣについて、それぞれ１５００人、３０００人、および４０００人の個人のサイズのサブセットが使用された。複数のＤＮＮ（例えば、ＤｅｅｐＦａｃｅ−１５０万、ＤｅｅｐＦａｃｅ−３３０万、およびＤｅｅｐＦａｃｅ−４４０万）がトレーニングされた。例示されるように、大規模な顔データセットおよびディープ・アーキテクチャは、誤り率を低減する。分類誤りは、１５００人の人物についての７．０％から３０００人の人物を分類する場合の７．２％へと緩やかに上昇するにすぎない。これは、ネットワークの容量が３百万個のトレーニング画像の規模に対して十分に対応することができることを示す。誤り率は、４４０万個の画像を有する４０００人の人物についての８．７％に上昇しており、ネットワークが、より多くの個人に対して無理なく拡大縮小することを示す。
【００７１】
【表１】
0006594329.tif 000006
ネットワークの深さは、図５に例示されるアーキテクチャから、１つまたは複数の層を除去することによって変更される。例えば、畳み込み層（例えば、Ｃ３）がＤＮＮ  ＤｅｅｐＦａｃｅ−ｓｕｂ１から除去され、局所的結合層のセット（例えば、Ｌ４およびＬ５）がＤＮＮ  ＤｅｅｐＦａｃｅ−ｓｕｂ２から除去され、畳み込み層（例えば、Ｃ３）ならびに複数の局所的結合層（例えば、Ｌ４およびＬ５）がＤＮＮ  ＤｅｅｐＦａｃｅ−ｓｕｂ３から除去される。ＤＮＮは、４４０万個の顔を用いてトレーニングされる。分類誤りは、数回のエポック後に減少しなくなり、ディープ・ネットワークＤｅｅｐＦａｃｅ−４４０万のレベルよりも高いレベルにとどまる。
【００７２】
図８Ａおよび表２は、ＬＦＷデータセットに対する、他の方法と比較した、いくつかの実施形態の受信者動作特性（「ＲＯＣ」）曲線および確認確度を例示する。曲線８０２、８０４、８０６、８０８、８１０、８１２、および８１４は、それぞれ、人間による確認、アンサンブル確認（例えば、ＤｅｅｐＦａｃｅ−ｅｎｓｅｍｂｌｅ）を用いた実施形態、ＳＦＣデータセット上の３次元アライメントされた顔におけるｒａｗ  ＲＧＢ画素から学習されたＤＮＮを備える実施形態（例えば、Ｄｅｅｐｆａｃｅ−ｓｉｎｇｌｅ）、ＴＬ結合ベイジアン（ＴＬ  ｊｏｉｎｔ  Ｂａｙｅｓｉａｎ）、高次元ＬＢＰ、トム対ピート（Ｔｏｍ−ｖｓ−Ｐｅｔｅ）、および複結合ベイジアン（ｃｏｍｂｉｎｅｄ  ｊｏｉｎｔ
Ｂａｙｅｓｉａｎ）に対応する。ＤｅｅｐＦａｃｅ−ｅｎｓｅｍｂｌｅは、３次元アライメントされたＲＧＢ入力、中間調画像および画像勾配の大きさと向き、ならびに２次元アライメントされたＲＧＢ画像を含む、異なるタイプの入力をＤＮＮに対して供給することによってトレーニングされた複数のネットワークの距離を組み合わせる。距離は、指数の単純和ＣＤＦ−ｋｅｒｎｅｌｓ：ＫＣｏｍｂｉｎｅｄ：＝Ｋｓｉｎｇｌｅ＋Ｋｇｒａｄｉｅｎｔ＋Ｋａｌｉｇｎ２ｄと共に（Ｃ＝１である）非線形ＳＶＭを使用して組み合わされる。ここで、Ｋ（ｘ，ｙ）：＝−｜｜ｘ−ｙ｜｜２である。
【００７３】
【表２】
0006594329.tif 000007
監視無しプロトコルは、正規化された特徴のペアの内積を直接比較するために観察される。制限付きプロトコルは、ＳＶＭトレーニングのために分割ごとに５，４００ペアのラベルを使用する。制限無しプロトコルは、トレーニング・セット内のＩＤに関する知識を運営者に対して提供するため、トレーニング・セットに対して追加されるべき、さらに多くのトレーニング・ペアの生成を可能にする。図８Ａおよび表２に例示されるように、本明細書において説明される実施形態は、他の方法を前進させ、顔確認において人間性能に密接に近づく。
【００７４】
図８Ｂおよび表３は、ＹＴＦデータセットに対する、他の方法と比較した、いくつかの実施形態の受信者動作特性（「ＲＯＣ」）曲線および確認確度を例示する。曲線８５２、８５４、８５６、８５８、８６０、８６２は、それぞれ、ＳＦＣデータセットに対する３次元アライメントされた顔におけるｒａｗ  ＲＧＢ画素から学習されたＤＮＮを備える実施形態（例えば、ＤｅｅｐＦａｃｅ−ｓｉｎｇｌｅ）、ＶＳＯＦ＋ＯＳＳ、ＳＴＦＲＤ＋ＰＭＭＬ、ＡＰＥＭ＋ＦＵＳＩＯＮ、ＭＢＧＳ（平均）ＬＢＰ、およびＭＢＧＳ（平均）ＦＰＬＢＰに対応する。
【００７５】
【表３】
0006594329.tif 000008
ＹｏｕＴｕｂｅ（登録商標）ビデオ・フレームの画像品質は、主に被写体ブレまたは視聴距離に起因して、ウェブ写真の画像品質よりも一般的に低い。トレーニング・ビデオのあらゆるペアについて、各ビデオから１つを取り出すことによってフレームの五十（５０）個のペアが作成され、これらは、ビデオ・トレーニング・ペアに従って、同じものとして、または同じではないものとしてラベル付けされる。重み付けされたχ２モデルが学習される。テスト・ペアが与えられると、フレームの百（１００）個の無作為のペアが、各ビデオから１つをサンプリングすることによってサンプリングされ、学習された重み付けされた類似性の平均値を使用する。
【００７６】
例示されるように、本明細書において説明される実施形態は、９１．４％の確度を提供し、過去の最良の方法の誤りを５０％を超えて低減する。確度は、ＹＴＦデータセット内のビデオ・ペアについての１００個の誤ったラベルを訂正した後に９２．５％まで改善され得る。
【００７７】
ソーシャル・ネットワーキング・システム  −  例示的な実装
図９は、本開示の実施形態に係る、エンハンスト・ビデオ符号化のための様々な実施形態において利用され得る例示的なシステム９００のネットワーク図を例示する。システム９００は、１つまたは複数のユーザ・デバイス９１０と、１つまたは複数の外部システム９２０と、ソーシャル・ネットワーキング・システム９３０と、ネットワーク９５０とを含む。一実施形態において、上述される実施形態に関連して議論されるソーシャル・ネットワーキング・サービス、プロバイダ、および／またはシステムは、ソーシャル・ネットワーキング・システム９３０として実装され得る。例示の目的のために、図９によって示される、システム９００の実施形態は、単一の外部システム９２０と、単一のユーザ・デバイス９１０とを含む。ただし、他の実施形態において、システム９００は、より多くのユーザ・デバイス９１０、および／または、より多くの外部システム９２０を含んでもよい。特定の実施形態において、ソーシャル・ネットワーキング・システム９３０は、ソーシャル・ネットワーク・プロバイダによって運営されるのに対して、外部システム９２０は、異なるエンティティによって運営され得るという点で、ソーシャル・ネットワーキング・システム９３０とは別個のものである。しかしながら、様々な実施形態において、ソーシャル・ネットワーキング・システム９３０および外部システム９２０は、共に動作して、ソーシャル・ネットワーキング・システム９３０のユーザ（またはメンバー）に対してソーシャル・ネットワーキング・サービスを提供する。この意味において、ソーシャル・ネットワーキング・システム９３０は、外部システム９２０などの他のシステムがインターネット上のユーザに対してソーシャル・ネットワーキング・サービスおよび機能性を提供するために使用し得るプラットフォームまたはバックボーンを提供する。
【００７８】
ユーザ・デバイス９１０は、ユーザから入力を受け取り、ネットワーク９５０を通じてデータを送受信することができる１つまたは複数のコンピューティング・デバイスを備える。一実施形態において、ユーザ・デバイス９１０は、例えば、マイクロソフト・ウィンドウズ（登録商標）と互換性のあるオペレーティング・システム（ＯＳ）、Ａｐｐｌｅ  ＯＳ  Ｘ、および／またはＬｉｎｕｘ（登録商標）ディストリビューションを実行する従来のコンピュータ・システムである。別の実施形態において、ユーザ・デバイス９１０は、スマートフォン、タブレット、携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、携帯電話等などのコンピュータ機能性を有するデバイスであってもよい。ユーザ・デバイス９１０は、ネットワーク９５０を通じて通信するように構成される。ユーザ・デバイス９１０は、アプリケーション、例えば、ユーザ・デバイス９１０のユーザがソーシャル・ネットワーキング・システム９３０と相互作用することを可能にするブラウザ・アプリケーションを実行することができる。別の実施形態において、ユーザ・デバイス９１０は、ｉＯＳおよびＡＮＤＲＯＩＤ（登録商標）などの、ユーザ・デバイス９１０のネイティブ・オペレーティング・システムによって提供されるアプリケーション・プログラミング・インターフェース（ＡＰＩ）を通じてソーシャル・ネットワーキング・システム９３０を相互作用する。ユーザ・デバイス９１０は、ネットワーク９５０を通じて外部システム９２０およびソーシャル・ネットワーキング・システム９３０と通信するように構成される。ネットワーク９５０は、有線通信システムおよび／または無線通信システムを使用する、ローカル・エリア・ネットワークおよび／または広域ネットワークの任意の組み合わせを備え得る。
【００７９】
１つの実施形態において、ネットワーク９５０は、標準的な通信技術およびプロトコルを使用する。したがって、ネットワーク９５０は、イーサネット（登録商標）、７０２．
１１、マイクロ波アクセスのための世界的相互運用性（ＷｉＭＡＸ：ｗｏｒｌｄｗｉｄｅ
ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  ｆｏｒ  ｍｉｃｒｏｗａｖｅ  ａｃｃｅｓｓ）、３Ｇ、４Ｇ、ＣＤＭＡ、ＧＳＭ（登録商標）、ＬＴＥ、デジタル加入者線（ＤＳＬ：ｄｉｇｉｔａｌ  ｓｕｂｓｃｒｉｂｅｒ  ｌｉｎｅ）等などの技術を使用するリンクを含み得る。同様に、ネットワーク９５０上で使用されるネットワーキング・プロトコルは、マルチプロトコル・ラベル・スイッチング（ＭＰＬＳ：ｍｕｌｔｉｐｒｏｔｏｃｏｌ  ｌａｂｅｌ  ｓｗｉｔｃｈｉｎｇ）、送信制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）、ユーザ・データグラム・プロトコル（ＵＤＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、簡易メール転送プロトコル（ＳＭＴＰ：ｓｉｍｐｌｅ  ｍａｉｌ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ）、ファイル転送プロトコル（ＦＴＰ）などを含み得る。ネットワーク９５０上で交換されるデータは、ハイパーテキスト・マークアップ言語（ＨＴＭＬ）および拡張マークアップ言語（ＸＭＬ）を含む技術および／またはフォーマットを使用して表現され得る。また、全部または一部のリンクは、セキュア・ソケット・レイヤ（ＳＳＬ）、トランスポート・レイヤ・セキュリティ（ＴＬＳ）、およびインターネット・プロトコル・セキュリティ（ＩＰｓｅｃ）などの従来の暗号化技術を使用して暗号化され得る。
【００８０】
１つの実施形態において、ユーザ・デバイス９１０は、外部システム９２０から、およびソーシャル・ネットワーキング・システム９３０から受信されるマークアップ言語文書９１４を、ブラウザ・アプリケーション９１２を使用して処理することによって、外部システム９２０からのコンテンツおよび／またはソーシャル・ネットワーキング・システム９３０からのコンテンツを表示し得る。マークアップ言語文書９１４は、コンテンツと、そのコンテンツのフォーマッティングまたは表示方法を記述する１つまたは複数の命令とを識別する。マークアップ言語文書９１４内に含まれる命令を実行することによって、ブラウザ・アプリケーション９１２は、マークアップ言語文書９１４によって記述されたフォーマットまたは表示方法を使用して、識別されたコンテンツを表示する。例えば、マークアップ言語文書９１４は、外部システム９２０およびソーシャル・ネットワーキング・システム９３０から得られたテキストおよび／または画像データを含む複数のフレームを有するウェブ・ページを生成および表示するための命令を含む。様々な実施形態において、マークアップ言語文書９１４は、拡張マークアップ言語（ＸＭＬ）データ、拡張ハイパーテキスト・マークアップ言語（ＸＨＴＭＬ）データ、または、他のマークアップ言語データを含むデータ・ファイルを備える。また、マークアップ言語文書９１４は、外部システム９２０とユーザ・デバイス９１０との間のデータ交換を容易にするためのジャバスクリプト・オブジェクト・ノーテーション（ＪＳＯＮ：ＪａｖａＳｃｒｉｐｔ（登録商標）Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）データ、パディング付きのＪＳＯＮ（ＪＳＯＮＰ：ＪＳＯＮ  ｗｉｔｈ  ｐａｄｄｉｎｇ）データ、およびジャバスクリプト・データを含み得る。ユーザ・デバイス９１０上のブラウザ・アプリケーション９１２は、ジャバスクリプト・コンパイラを使用して、マークアップ言語文書９１４を復号し得る。
【００８１】
マークアップ言語文書９１４は、ＦＬＡＳＨ（商標）アプリケーションまたはＵｎｉｔｙ（商標）アプリケーション、ＳｉｌｖｅｒＬｉｇｈｔ（商標）アプリケーション・フレームワーク等などの、アプリケーションまたはアプリケーション・フレームワークも含み、または、これらに対してもリンクし得る。
【００８２】
１つの実施形態において、ユーザ・デバイス９１０は、ユーザ・デバイス９１０のユーザがソーシャル・ネットワーキング・システム９３０へログインしたかを示すデータを含む、１つまたは複数のクッキー９１６も含む。クッキー９１６は、ソーシャル・ネットワーキング・システム９３０からユーザ・デバイス９１０へ通信されるデータの変更を可能にし得る。
【００８３】
外部システム９２０は、１つまたは複数のウェブ・ページ９２２ａ、９２２ｂを含む、１つまたは複数のウェブ・サーバを含む。１つまたは複数のウェブ・ページ９２２ａ、９２２ｂは、ネットワーク９５０を使用して、ユーザ・デバイス９１０へ通信される。外部システム９２０は、ソーシャル・ネットワーキング・システム９３０とは別個である。例えば、外部システム９２０は、第１のドメインに対して関連付けられるが、ソーシャル・ネットワーキング・システム９３０は、別個のソーシャル・ネットワーキング・ドメインに対して関連付けられる。外部システム９２０に含まれるウェブ・ページ９２２ａ、９２２ｂは、コンテンツを識別し、識別されたコンテンツのフォーマッティングおよび表示方法を特定する命令を含むマークアップ言語文書９１４を備える。
【００８４】
ソーシャル・ネットワーキング・システム９３０は、複数のユーザを含み、ソーシャル・ネットワークのユーザに対して、ソーシャル・ネットワークの他のユーザと通信および相互作用するための能力を提供する、ソーシャル・ネットワークのための１つまたは複数のコンピューティング・デバイスを含む。いくつかの例において、ソーシャル・ネットワークは、グラフ、すなわち、エッジとノードとを含むデータ構造によって表現され得る。データベース、オブジェクト、クラス、メタ要素、ファイル、または任意の他のデータ構造を含むが、これらに限定されない、他のデータ構造も、ソーシャル・ネットワークを表現するために使用され得る。ソーシャル・ネットワーキング・システム９３０は、運営者によって運営され、管理され、または制御され得る。ソーシャル・ネットワーキング・システム９３０の運営者は、ソーシャル・ネットワーキング・システム９３０内でコンテンツを管理し、政策を規制し、使用法メトリック（ｕｓａｇｅ  ｍｅｔｒｉｃｓ）を収集するための人間、自動化されたアプリケーション、または一連のアプリケーションであってもよい。任意のタイプの運営者が使用され得る。
【００８５】
ユーザは、ソーシャル・ネットワーキング・システム９３０に加入し、次いで、そのユーザがつなげられることを望む、ソーシャル・ネットワーキング・システム９３０の任意の数の他のユーザへのつながりを追加し得る。本明細書において、「友達」という用語は、ユーザがソーシャル・ネットワーキング・システム９３０を通じてつながり、関連、または関係を形成した、ソーシャル・ネットワーキング・システム９３０の任意の他のユーザを指す。例えば、一実施形態において、ソーシャル・ネットワーキング・システム９３０内のユーザが、ソーシャル・グラフ内のノードとして表現される場合、「友達」という用語は、２つのユーザ・ノード間に形成され、かつ、２つのユーザ・ノードを直接接続するエッジを指し得る。
【００８６】
つながりは、ユーザによって明示的に追加されても、または、ユーザの共通の特性（例えば、同じ教育機関の卒業生であるユーザ）に基づいて、ソーシャル・ネットワーキング・システム９３０によって自動的に作成されてもよい。例えば、第１のユーザは、友達になりたい特定の他のユーザを具体的に選択する。ソーシャル・ネットワーキング・システム９３０におけるつながりは、通常は双方向であるが、双方向である必要はなく、そのため、「ユーザ」および「友達」という用語は、枠組みに依存する。ソーシャル・ネットワーキング・システム９３０のユーザ間のつながりは、通常は、双務的（「二方向」）または「相互的」であるが、つながりは、片務的、または「一方向」であってもよい。例えば、ボブおよびジョーの両者が、ソーシャル・ネットワーキング・システム９３０のユーザであり、互いにつながっている場合、ボブおよびジョーは、互いのつながりである。他方で、ボブは、ジョーによってソーシャル・ネットワーキング・システム９３０へ通信されたデータを見るためにジョーとつながることを欲するが、ジョーは、相互的なつながりを形成することを欲しない場合、片務的なつながりが確立され得る。ユーザ間のつながりは、直接的なつながりであり得る。ただし、ソーシャル・ネットワーキング・システム９３０のいくつかの実施形態は、つながりが、１つまたは複数のつながりのレベルまたは分離度を通じた間接的なものとなることを可能にする。
【００８７】
ユーザ間のつながりを確立および維持し、ユーザ間の相互作用を可能にすることに加えて、ソーシャル・ネットワーキング・システム９３０は、ソーシャル・ネットワーキング・システム９３０によってサポートされる様々なタイプのアイテムに対してアクションを行うための能力をユーザに対して提供する。こうしたアイテムは、ソーシャル・ネットワーキング・システム９３０のユーザが所属し得るグループまたはネットワーク（すなわち、人々、エンティティ、および概念のソーシャル・ネットワーク）、ユーザが興味を持ち得るイベントまたはカレンダー入力、ユーザがソーシャル・ネットワーキング・システム９３０を通じて使用し得るコンピュータベースのアプリケーション、ソーシャル・ネットワーキング・システム９３０によって提供されるサービスを通じてまたはソーシャル・ネットワーキング・システム９３０を通じてユーザがアイテムを購入または販売することを可能にする取引、ならびにユーザがソーシャル・ネットワーキング・システム９３０内外で実行し得る広告との相互作用を含み得る。これらは、ユーザがソーシャル・ネットワーキング・システム９３０上で作用を与え得るアイテムのわずかな例にすぎず、多くの他の例が可能である。ユーザは、ソーシャル・ネットワーキング・システム９３０において、または、ソーシャル・ネットワーキング・システム９３０とは別個の外部システム９２０もしくはネットワーク９５０を通じてソーシャル・ネットワーキング・システム９３０に対して結合される外部システム９２０において表現されることが可能なありとあらゆるものと相互作用し得る。
【００８８】
ソーシャル・ネットワーキング・システム９３０は、多様なエンティティとリンクすることも可能である。例えば、ソーシャル・ネットワーキング・システム９３０は、ユーザが互いに相互作用すること、および、ＡＰＩ、ウェブ・サービス、または他の通信チャネルを通じて外部システム９２０または他のエンティティと相互作用することを可能にする。ソーシャル・ネットワーキング・システム９３０は、複数のエッジによって相互接続された複数のノードを備える「ソーシャル・グラフ」を生成および維持する。ソーシャル・グラフ内の各ノードは、別のノードに対して作用を与え得るエンティティおよび／または別のノードによって作用を与えられ得るエンティティを表現し得る。ソーシャル・グラフは、様々なタイプのノードを含み得る。ノードタイプの例は、ユーザ、非人間エンティティ、コンテンツ・アイテム、ウェブ・ページ、グループ、アクティビティ、メッセージ、概念、およびソーシャル・ネットワーキング・システム９３０内のオブジェクトによって表現され得る任意の他のものを含む。ソーシャル・グラフ内の２つのノード間のエッジは、ノード関係から、またはノードのうちの一方によって他方に対して実行されたアクションから生じ得る、２つのノード間の特定の種類のつながり、または関連を表現し得る。いくつかの場合において、ノード間のエッジは、重み付けされ得る。エッジの重みは、ノード間のつながりまたは関連の強度などの、そのエッジに対して関連付けられた属性を表現し得る。異なるタイプのエッジが、異なる重みと共に提供され得る。例えば、あるユーザが別のユーザに対して「いいね」を表明する際に作成されるエッジには、ある重みが与えられ得る一方で、ユーザが別のユーザと友達になる際に作成されるエッジには、異なる重みが与えられ得る。
【００８９】
例として、第１のユーザが、第２のユーザを友達として識別する場合、第１のユーザを表現するノードと第２のユーザを表現する第２のノードとを接続する、ソーシャル・グラフ内のエッジが生成される。様々なノードが互いに関連し、または相互作用するにつれて、ソーシャル・ネットワーキング・システム９３０は、様々なノードを接続するエッジを変更して、関係および相互作用を反映する。
【００９０】
ソーシャル・ネットワーキング・システム９３０は、ユーザによるソーシャル・ネットワーキング・システム９３０との相互作用を高める、ユーザにより生成されたコンテンツも含む。ユーザにより生成されたコンテンツは、ユーザがソーシャル・ネットワーキング
・システム９３０に対して追加し、アップロードし、送信し、または「投稿し」得るあらゆるものを含み得る。例えば、ユーザは、ユーザ・デバイス９１０からソーシャル・ネットワーキング・システム９３０への投稿を通信する。投稿は、ステータス・アップデートもしくは他の文字情報などのデータ、位置情報、写真などの画像、ビデオ、リンク、音楽、または、他の同様のデータおよび／もしくはメディアを含み得る。コンテンツも、第三者によってソーシャル・ネットワーキング・システム９３０に対して追加され得る。コンテンツ「アイテム」は、ソーシャル・ネットワーキング・システム９３０においてオブジェクトとして表現される。このようにして、ソーシャル・ネットワーキング・システム９３０のユーザは、様々な通信チャネルを通じて様々なタイプのテキストおよびコンテンツ・アイテムを投稿することによって、互いに通信することを促される。そのような通信は、ユーザ同士の相互作用を増加させ、ユーザがソーシャル・ネットワーキング・システム９３０と相互作用する頻度を増加させる。
【００９１】
ソーシャル・ネットワーキング・システム９３０は、ウェブ・サーバ９３２と、ＡＰＩ要求サーバ９３４と、ユーザ・プロファイル・ストア９３６と、つながりストア９３８と、動作ロガー９４０と、アクティビティ・ログ９４２と、認証サーバ９４４とを含む。本発明の一実施形態において、ソーシャル・ネットワーキング・システム９３０は、様々なアプリケーションのための追加的な構成要素、より少ない構成要素、または異なる構成要素を含み得る。ネットワーク・インターフェース、セキュリティ機構、負荷分散装置、フェイルオーバ・サーバ、管理およびネットワーク操作コンソールなどの他の構成要素は、本システムの詳細を曖昧にしないように、図示されていない。
【００９２】
ユーザ・プロファイル・ストア９３６は、ユーザによって申告され、またはソーシャル・ネットワーキング・システム９３０によって推測された職歴、学歴、趣味または嗜好、住所などの経歴的情報、人口学的情報、および他のタイプの記述的情報を含む、ユーザ・アカウントに関する情報を維持する。この情報は、各ユーザが一意に識別されるように、ユーザ・プロファイル・ストア９３６内に記憶される。ソーシャル・ネットワーキング・システム９３０は、異なるユーザ間の１つまたは複数のつながりを記述するデータも、つながりストア９３８内に記憶する。つながり情報は、同様または共通の職歴、グループ・メンバーシップ、趣味、または学歴を有するユーザを示し得る。また、ソーシャル・ネットワーキング・システム９３０は、ユーザの他のユーザとの関係をユーザが特定することを可能にする、異なるユーザ間におけるユーザによって定義されたつながりを含む。例えば、ユーザによって定義されたつながりは、友達、同僚、パートナー等などの、ユーザの実生活の関係と並行する、他のユーザとの関係をユーザが生成することを可能にする。ユーザは、予め定義されたタイプのつながりから選択しても、またはユーザ自身のつながりタイプを必要に応じて定義してもよい。非人間エンティティ、バケット、クラスタ・センタ、画像、興味、ページ、外部システム、概念等などの、ソーシャル・ネットワーキング・システム９３０内の他のノードとのつながりも、つながりストア９３８内に記憶される。
【００９３】
ソーシャル・ネットワーキング・システム９３０は、ユーザが相互作用し得るオブジェクトに関するデータを維持する。このデータを維持するために、ユーザ・プロファイル・ストア９３６およびつながりストア９３８は、ソーシャル・ネットワーキング・システム９３０によって維持されるオブジェクトの対応するタイプのインスタンスを記憶する。各オブジェクト・タイプは、オブジェクトのタイプに適した情報を記憶するのに適した情報フィールドを有する。例えば、ユーザ・プロファイル・ストア９３６は、ユーザのアカウントおよびユーザのアカウントに関連した情報を記述するのに適したフィールドを有するデータ構造を含む。特定のタイプの新たなオブジェクトが作成される場合、ソーシャル・ネットワーキング・システム９３０は、対応するタイプの新たなデータ構造を初期化し、その新たなデータ構造に対して一意のオブジェクト識別子を割り当て、必要に応じて、そ
のオブジェクトに対してデータを追加することを開始する。これは、例えば、ユーザがソーシャル・ネットワーキング・システム９３０のユーザになった場合に発生し、ソーシャル・ネットワーキング・システム９３０は、ユーザ・プロファイル・ストア９３６内にユーザ・プロファイルの新たなインスタンスを生成し、ユーザ・アカウントに対して一意の識別子を割り当て、ユーザによって提供される情報をユーザ・アカウントのフィールドへ投入し始める。
【００９４】
つながりストア９３８は、他のユーザに対するユーザのつながり、外部システム９２０に対するつながり、または他のエンティティに対するつながりを記述するのに適したデータ構造を含む。つながりストア９３８は、つながりタイプもユーザのつながりと関連付け得る。つながりタイプは、ユーザのプライバシー設定と共に使用されて、ユーザに関する情報に対するアクセスを規制し得る。本発明の一実施形態において、ユーザ・プロファイル・ストア９３６およびつながりストア９３８は、連合データベースとして実装され得る。
【００９５】
つながりストア９３８、ユーザ・プロファイル・ストア９３６、およびアクティビティ・ログ９４２内に記憶されるデータは、ノードを使用して、ノードを接続する様々なオブジェクトおよびエッジを識別して、異なるオブジェクト間の関係を識別するソーシャル・グラフをソーシャル・ネットワーキング・システム９３０が生成することを可能にする。例えば、第１のユーザが、ソーシャル・ネットワーキング・システム９３０内で第２のユーザとのつながりを確立する場合、ユーザ・プロファイル・ストア９３６からの第１のユーザおよび第２のユーザのユーザ・アカウントは、ソーシャル・グラフ内のノードとして動作し得る。つながりストア９３８によって記憶される、第１のユーザと第２のユーザとの間のつながりは、第１のユーザおよび第２のユーザに対して関連付けられるノード間のエッジである。この例を続けると、第２のユーザは、次いで、第１のユーザに対して、ソーシャル・ネットワーキング・システム９３０内でメッセージを送信し得る。メッセージを送信するアクションは、第１のユーザおよび第２のユーザを表現する、ソーシャル・グラフ内の２つのノード間の別のエッジであり、メッセージを送信するアクションは、記憶され得る。また、メッセージ自体が、第１のユーザを表現するノードおよび第２のユーザを表現するノードに対して接続される別のノードとして、ソーシャル・グラフにおいて識別され、ソーシャル・グラフに含まれ得る。
【００９６】
別の例において、第１のユーザは、ソーシャル・ネットワーキング・システム９３０によって維持される画像において（または、代替的に、ソーシャル・ネットワーキング・システム９３０の外部の別のシステムによって維持される画像において）第２のユーザをタグ付けし得る。画像は、それ自体がソーシャル・ネットワーキング・システム９３０内のノードとして表現され得る。このタグ付けアクションは、ユーザの各々と画像との間にエッジを作成するだけでなく、第１のユーザと第２のユーザとの間のエッジも作成し得る。画像もソーシャル・グラフ内のノードである。また別の例において、ユーザが、イベントへ参加することを確かめる場合、そのユーザおよびそのイベントは、ユーザ・プロファイル・ストア９３６から取得されるノードであり、そのイベントへの参加は、アクティビティ・ログ９４２から得られ得るノード間のエッジである。ソーシャル・グラフを生成および維持することによって、ソーシャル・ネットワーキング・システム９３０は、多くの異なるタイプのオブジェクトを記述するデータ、ならびに、それらのオブジェクト間の相互作用およびつながりを含み、社会的に関連する情報の豊富なソースを提供する。
【００９７】
ウェブ・サーバ９３２は、ソーシャル・ネットワーキング・システム９３０を、ネットワーク９５０を通じて、１つもしくは複数のユーザ・デバイス９１０および／または１つもしくは複数の外部システム９２０に対してリンクする。ウェブ・サーバ９３２は、ウェブ・ページ、およびＪａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ、Ｆｌａｓｈ、ＸＭＬ
などの他のウェブ関連コンテンツを供給する。ウェブ・サーバ９３２は、メール・サーバを含み、または、ソーシャル・ネットワーキング・システム９３０と１つもしくは複数のユーザ・デバイス９１０との間のメッセージを受信およびルーティングするための他のメッセージング機能性を含み得る。メッセージは、インスタント・メッセージ、キュー・メッセージ（例えば、電子メール）、テキストおよびＳＭＳメッセージ、または任意の他の適切なメッセージング・フォーマットであり得る。
【００９８】
ＡＰＩ要求サーバ９３４は、１つまたは複数の外部システム９２０およびユーザ・デバイス９１０が、１つまたは複数のＡＰＩ関数を呼び出すことによって、ソーシャル・ネットワーキング・システム９３０からのアクセス情報を呼び出すことを可能にする。ＡＰＩ要求サーバ９３４は、外部システム９２０が、ＡＰＩを呼び出すことによって、ソーシャル・ネットワーキング・システム９３０に対して情報を送信することも可能にし得る。外部システム９２０は、１つの実施形態において、ネットワーク９５０を通じてソーシャル・ネットワーキング・システム９３０へＡＰＩ要求を送信し、ＡＰＩ要求サーバ９３４は、そのＡＰＩ要求を受信する。ＡＰＩ要求サーバ９３４は、ＡＰＩ要求に対して関連付けられたＡＰＩを呼び出すことによって要求を処理して、適当な応答を生成する。ＡＰＩ要求サーバ９３４は、その適当な応答を、ネットワーク９５０を通じて外部システム９２０へ通信する。例えば、ＡＰＩ要求に応答して、ＡＰＩ要求サーバ９３４は、外部システム９２０に対してログインしたユーザのつながりなどの、ユーザに対して関連付けられたデータを収集し、収集されたデータを外部システム９２０へ通信する。別の実施形態において、ユーザ・デバイス９１０は、外部システム９２０と同じ手法で、ＡＰＩを通じてソーシャル・ネットワーキング・システム９３０と通信する。
【００９９】
アクション・ロガー９４０は、ソーシャル・ネットワーキング・システム９３０内での、および／またはソーシャル・ネットワーキング・システム９３０外でのユーザ・アクションに関する通信をウェブ・サーバ９３２から受信することが可能である。アクション・ロガー９４０は、ユーザ・アクションに関する情報をアクティビティ・ログ９４２へ投入し、ソーシャル・ネットワーキング・システム９３０の内部で、およびソーシャル・ネットワーキング・システム９３０の外部で、そのユーザによって行われた様々なアクションをソーシャル・ネットワーキング・システム９３０が発見することを可能にする。特定のユーザが、ソーシャル・ネットワーキング・システム９３０上の別のノードに関して行う任意のアクションは、アクティビティ・ログ９４２内または同様のデータベースもしくは他のデータ・レポジトリ内で維持される情報を通じて、各ユーザのアカウントに対して関連付けられ得る。識別および記憶される、ソーシャル・ネットワーキング・システム９３０内でユーザによって行われるアクションの例は、例えば、別のユーザに対するつながりを追加すること、別のユーザへメッセージを送信すること、別のユーザからのメッセージを読むこと、別のユーザに対して関連付けられるコンテンツを視聴すること、別のユーザによって投稿されたイベントに参加すること、画像を投稿すること、画像を投稿しようと試行すること、または、別のユーザもしくは別のオブジェクトと相互作用する他のアクションを含み得る。ユーザが、ソーシャル・ネットワーキング・システム９３０内でアクションを行う場合、そのアクションは、アクティビティ・ログ９４２内に記録される。一実施形態において、ソーシャル・ネットワーキング・システム９３０は、アクティビティ・ログ９４２をエントリのデータベースとして維持する。アクションが、ソーシャル・ネットワーキング・システム９３０内で行われる場合、そのアクションについてのエントリが、アクティビティ・ログ９４２に対して追加される。アクティビティ・ログ９４２は、アクション・ログと称され得る。
【０１００】
また、ユーザ・アクションは、ソーシャル・ネットワーキング・システム９３０とは別個の外部システム９２０などの、ソーシャル・ネットワーキング・システム９３０の外部のエンティティ内で発生する概念およびアクションに対して関連付けられ得る。例えば、
アクション・ロガー９４０は、ユーザによる外部システム９２０との相互作用を記述するデータを、ウェブ・サーバ９３２から受信し得る。この例において、外部システム９２０は、ソーシャル・グラフにおける構造化されたアクションおよびオブジェクトに従って、ユーザによる相互作用を報告する。
【０１０１】
ユーザが外部システム９２０と相互作用するアクションの他の例は、ユーザが外部システム９２０もしくは別のエンティティにおいて興味を表現すること、外部システム９２０もしくは外部システム９２０内のウェブ・ページ９２２ａと議論するソーシャル・ネットワーキング・システム９３０に対してユーザがコメントを投稿すること、ユーザがソーシャル・ネットワーキング・システム９３０に対してユニフォーム・リソース・ロケータ（ＵＲＬ）もしくは外部システム９２０に対して関連付けられる他の識別子を投稿すること、ユーザが外部システム９２０に対して関連付けられるイベントへ参加すること、または、外部システム９２０に関連する、ユーザによる任意の他のアクションを含む。したがって、アクティビティ・ログ９４２は、ソーシャル・ネットワーキング・システム９３０のユーザと、ソーシャル・ネットワーキング・システム９３０とは別個の外部システム９２０との間の相互作用を記述するアクションを含み得る。
【０１０２】
認証サーバ９４４は、ソーシャル・ネットワーキング・システム９３０のユーザの１つまたは複数のプライバシー設定を強化する。ユーザのプライバシー設定は、ユーザに対して関連付けられる特定の情報がどのように共有され得るかを決定する。プライバシー設定は、ユーザに対して関連付けられる特定の情報の仕様、および情報が共有され得る１つまたは複数のエンティティの仕様を備える。情報が共有され得るエンティティの例は、他のユーザ、アプリケーション、外部システム９２０、または、その情報に潜在的にアクセスし得る任意のエンティティを含み得る。ユーザによって共有され得る情報は、プロフィール写真などのユーザ・アカウント情報、ユーザに対して関連付けられる電話番号、ユーザのつながり、つながりを追加すること、ユーザ・プロフィール情報を変更することなどのユーザによって行われるアクション等を備える。
【０１０３】
プライバシー設定仕様は、異なるレベルの粒度で提供され得る。例えば、プライバシー設定は、他のユーザと共有されるべき具体的な情報を識別し得る。プライバシー設定は、職場電話番号、または、プロフィール写真、自宅電話番号、およびステータスを含む個人情報などの関連情報の具体的なセットを識別する。代替的に、プライバシー設定は、ユーザに対して関連付けられる全ての情報に対して適用されてもよい。特定の情報にアクセスすることができるエンティティのセットの仕様も、様々なレベルの粒度で特定され得る。情報が共有され得るエンティティの様々なセットは、例えば、ユーザの全ての友達、友達の全ての友達、全てのアプリケーション、または全ての外部システム９２０を含み得る。１つの実施形態は、エンティティのセットの仕様がエンティティの一覧表を備えることを可能にする。例えば、ユーザは、一定の情報に対してアクセスすることを許可される外部システム９２０のリストを提供し得る。別の実施形態は、情報に対してアクセスすることを許可されない例外と共にエンティティのセットを仕様が備えることを可能にする。例えば、ユーザは、全ての外部システム９２０がユーザの職場情報に対してアクセスすることを許可し得るが、職場情報に対してアクセスすることを許可されない外部システム９２０のリストを特定し得る。一定の実施形態は、一定の情報に対してアクセスすることを許可されない例外のリストを「ブロック・リスト」と呼ぶ。ユーザによって特定されるブロック・リストに所属する外部システム９２０は、プライバシー設定において特定される情報に対してアクセスすることをブロックされる。情報の仕様の粒度と、情報が共有されるエンティティの仕様の粒度との様々な組み合わせが可能である。例えば、全ての個人情報は、友達と共有され得るのに対して、全ての職場情報は、友達の友達と共有され得る。
【０１０４】
認証サーバ９４４は、ユーザに対して関連付けられる一定の情報がユーザの友達、外部
システム９２０、ならびに／または他のアプリケーションおよびエンティティによってアクセスされ得るかを決定するためのロジックを含む。外部システム９２０は、ユーザの職場電話番号などの、ユーザのより個人的かつ機密的な情報に対してアクセスするために、認証サーバ９４４からの認証を必要とし得る。ユーザのプライバシー設定に基づいて、認証サーバ９４４は、別のユーザ、外部システム９２０、アプリケーション、または別のエンティティが、ユーザによって行われるアクションに関する情報を含む、ユーザに対して関連付けられる情報に対してアクセスすることを許可されているかを決定する。
【０１０５】
ソーシャル・ネットワーキング・システム９３０は、顔表現モジュール９４６を含み得る。いくつかの実施形態において、顔表現変換モジュール９４６は、図１の顔表現モジュール１０２として実装され得る。顔表現変換モジュール９４６は、本開示の実施形態に従って、ディープ・ニューラル・ネットワークを採用することによって、顔画像をアライメントし、顔画像を分類し、および／または顔画像を確認するように構成され得る。
【０１０６】
ハードウェア実装
前述のプロセスおよび特徴は、多種多様なマシンおよびコンピュータ・システム・アーキテクチャによって、ならびに、多種多様なネットワークおよびコンピューティング環境において実装され得る。図１０は、本発明の一実施形態に係る、本明細書において説明される実施形態のうちの１つまたは複数を実装するために使用され得るコンピュータ・システム１０００の例を例示する。コンピュータ・システム１０００は、コンピュータ・システム１０００に対して、本明細書において議論されるプロセスおよび特徴を実行させるための命令のセットを含む。コンピュータ・システム１０００は、他のマシンへ接続され（例えば、ネットワーク化され）得る。ネットワーク化された配置において、コンピュータ・システム１０００は、クライアント／サーバ・ネットワーク環境内のサーバ・マシンもしくはクライアント・マシンの資格において動作し、または、ピア・ツー・ピア（もしくは分散）・ネットワーク環境内のピア・マシンとして動作し得る。本発明の一実施形態において、コンピュータ・システム１０００は、ソーシャル・ネットワーキング・システム１０３０、ユーザ・デバイス９１０、および外部システム１０２０、または、これらの構成要素であり得る。本発明の一実施形態において、コンピュータ・システム１０００は、ソーシャル・ネットワーキング・システム１０３０の全部または一部を構成する多くのサーバのうちの１つのサーバであり得る。
【０１０７】
コンピュータ・システム１０００は、プロセッサ１００２と、キャッシュ１００４と、コンピュータ読取可能な媒体上に記憶され、本明細書において説明されるプロセスおよび特徴へ向けられた、１つまたは複数の実行可能なモジュールおよびドライバとを含む。また、コンピュータ・システム１０００は、高性能入出力（Ｉ／Ｏ）バス１００６と、標準Ｉ／Ｏバス１００８とを含む。ホスト・ブリッジ１０１０は、プロセッサ１００２を高性能Ｉ／Ｏバス１００６に対して結合する一方で、Ｉ／Ｏバス・ブリッジ１０１２は、２つのバス１００６および１００８を互いに結合する。システム・メモリ１０１４および１つまたは複数のネットワーク・インターフェース１０１６は、高性能Ｉ／Ｏバス１００６へ結合される。コンピュータ・システム１０００は、ビデオ・メモリと、ビデオ・メモリに対して結合される表示デバイスとをさらに含んでもよい（図示せず）。マス・ストレージ１０１８およびＩ／Ｏポート１０２０は、標準Ｉ／Ｏバス１００８へ結合される。コンピュータ・システム１０００は、標準Ｉ／Ｏバス１００８に対して結合される、キーボードおよびポインティング・デバイス、表示デバイス、または他の入出力デバイス（図示せず）を随意的に含んでもよい。全体的に、これらの要素は、カリフォルニア州サンタ・クララのインテル・コーポレーション社（Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ）によって製造されるｘ８６互換性のあるプロセッサ、カリフォルニア州サニーヴェイルのアドバンスト・マイクロ・デバイス社（ＡＭＤ：Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，Ｉｎｃ）によって製造されるｘ８６互換性のあるプロセッサ、および任意の他の適切なプ
ロセッサを含むが、これらに限定されない、広範なカテゴリのコンピュータ・ハードウェア・システムを表現することが意図される。
【０１０８】
オペレーティング・システムは、ソフトウェア・アプリケーション（図示せず）へのデータの入力およびソフトウェア・アプリケーションからのデータの出力を含む、コンピュータ・システム１０００の動作を管理および制御する。オペレーティング・システムは、システム上で実行されているソフトウェア・アプリケーションと、システムのハードウェア構成要素との間のインターフェースを提供する。任意の適切なオペレーティング・システム、例えば、ＬＩＮＵＸオペレーティング・システム、カリフォルニア州クパチーノのアップル・コンピュータ社（Ａｐｐｌｅ  Ｃｏｍｐｕｔｅｒ，Ｉｎｃ．）から市販されているアップル・マッキントッシュ・オペレーティング・システム、ＵＮＩＸ（登録商標）オペレーティング・システム、マイクロソフト（登録商標）ウィンドウズ（登録商標）オペレーティング・システム、ＢＳＤオペレーティング・システム等などが使用され得る。他の実装も可能である。
【０１０９】
コンピュータ・システム１０００の要素は、下記においてより詳細に説明される。具体的には、ネットワーク・インターフェース１０１６は、コンピュータ・システム１０００と、幅広いネットワークのうちの任意のもの、例えば、イーサネット（例えば、ＩＥＥＥ８０２．３）・ネットワーク、バックプレーン等などとの間の通信を提供する。マス・ストレージ１０１８は、上記に識別されたそれぞれのコンピューティング・システムによって実装される上述されたプロセスおよび特徴を実行するためのデータおよびプログラミング命令のための永続的なストレージを提供するのに対して、システム・メモリ１０１４（例えば、ＤＲＡＭ）は、プロセッサ１００２によって実行される場合のデータおよびプログラミング命令のための一時的なストレージを提供する。Ｉ／Ｏポート１０２０は、コンピュータ・システム１０００へ結合され得る付加的な周辺デバイス間の通信を提供する、１つまたは複数のシリアル通信ポートおよび／またはパラレル通信ポートであり得る。
【０１１０】
コンピュータ・システム１０００は、多様なシステム・アーキテクチャを含むことができ、コンピュータ・システム１０００の様々な構成要素は、再配置されてもよい。例えば、キャッシュ１００４は、プロセッサ１００２と共にチップ上に実装されてもよい。代替的に、キャッシュ１００４およびプロセッサ１００２は、「プロセッサ・モジュール」としてまとめられて、プロセッサ１００２が「プロセッサ・コア」と称されてもよい。さらに、本発明の一定の実施形態は、上記構成要素の全部を必要としなくても、または、含まなくてもよい。例えば、標準Ｉ／Ｏバス１００８へ結合される周辺デバイスは、高性能Ｉ／Ｏバス１００６へ結合されてもよい。また、いくつかの実施形態において、単一のバスのみが存在して、コンピュータ・システム１０００の構成要素が、その単一のバスへ結合されてもよい。さらに、コンピュータ・システム１０００は、付加的なプロセッサ、記憶デバイス、またはメモリなどの付加的な構成要素を含んでもよい。
【０１１１】
一般に、本明細書において説明されるプロセスおよび特徴は、オペレーティング・システムの一部もしくは特定のアプリケーション、構成要素、プログラム、オブジェクト、モジュール、または「プログラム」と称される一連の命令として実装され得る。例えば、１つまたは複数のプログラムは、本明細書において説明される具体的なプロセスを実行するために使用され得る。プログラムは、典型的には、１つまたは複数のプロセッサによって読み出され、実行される場合に、コンピュータ・システム１０００に対して、本明細書において説明されるプロセスおよび特徴を実行するための動作を実行させる、１つまたは複数の命令を、コンピュータ・システム１０００内の様々なメモリおよび記憶デバイスにおいて備える。本明細書において説明されるプロセスおよび特徴は、ソフトウェア、ファームウェア、ハードウェア（例えば、特定用途向け集積回路）、または、これらの任意の組み合わせにおいて実装され得る。
【０１１２】
１つの実装において、本明細書において説明されるプロセスおよび特徴は、分散コンピューティング環境において個々にまたはまとめて、コンピュータ・システム１０００によって実行される一連の実行可能なモジュールとして実装される。前述のモジュールは、ハードウェア、コンピュータ読取可能な媒体（もしくはマシン読取可能な媒体）上に記憶される実行可能なモジュール、または、両者の組み合わせによって実現され得る。例えば、モジュールは、プロセッサ１００２などの、ハードウェア・システム内のプロセッサによって実行されるべき複数の命令または一連の命令を備え得る。まず、一連の命令は、マス・ストレージ１０１８などの記憶デバイス上に記憶され得る。ただし、一連の命令は、任意の適切なコンピュータ読取可能な記憶媒体上に記憶されてもよい。さらに、一連の命令は、局所的に記憶される必要はなく、ネットワーク上のサーバなどの遠隔記憶デバイスからネットワーク・インターフェース１０１６を通じて受信されてもよい。命令は、マス・ストレージ１０１８などの記憶デバイスからシステム・メモリ１０１４内へコピーされ、次いで、プロセッサ１００２によってアクセスされ、実行される。様々な実施形態において、１つまたは複数のモジュールは、並列処理環境内の複数のサーバなどの、１つまたは複数の位置における、１つまたは複数のプロセッサによって実行され得る。
【０１１３】
コンピュータ読取可能な媒体の例は、揮発性メモリ・デバイスおよび不揮発性メモリ・デバイスなどの記録可能なタイプの媒体、ソリッド・ステート・メモリ、フロッピー（登録商標）ディスクおよび他の取り外し可能なディスク、ハード・ディスク・ドライブ、磁気媒体、光ディスク（例えば、コンパクト・ディスク読取専用メモリ（ＣＤ  ＲＯＭＳ）、デジタル多用途ディスク（ＤＶＤ））、他の同様の非一時的で（もしくは一時的で）、有形の（もしくは無形の）記憶媒体、または、本明細書において説明されるプロセスおよび特徴のうちの任意の１つもしくは複数を実行すべく、コンピュータ・システム１０００による実行のために一連の命令を記憶し、符号化し、もしくは担持するのに適切な任意のタイプの媒体を含むが、これらに限定されない。
【０１１４】
説明の目的のために、多くの具体的な詳細が、本説明の完全な理解を提供するために述べられている。しかしながら、こうした具体的な詳細なしに本開示の実施形態が実施され得ることは、当業者には明らかであろう。いくつかの例において、モジュール、構造、プロセス、特徴、およびデバイスは、本説明を曖昧にすることを回避するために、ブロック図の形式で示される。他の例において、機能ブロック図およびフロー図は、データおよび論理フローを表現するために示される。ブロック図およびフロー図の構成要素（例えば、モジュール、ブロック、構造、デバイス、特徴等）は、本明細書において明示的に説明および図示されたような手法以外の手法で、様々に組み合わされ、分離され、除去され、順序を並べ替えられ、置換されてもよい。
【０１１５】
この明細書における、「１つの実施形態」、「一実施形態」、「他の実施形態」、「一連の実施形態」、「いくつかの実施形態」、「様々な実施形態」等への言及は、実施形態に関連して説明される特定の特徴、設計、構造、または特性が本開示の少なくとも１つの実施形態に含まれることを意味する。本明細書内の様々な部分における「１つの実施形態において」または「一実施形態において」という句の出現は、必ずしも全て同じ実施形態に言及するものとは限らず、別個の実施形態または代替的な実施形態は、他の実施形態と相互排他的ではない。さらに、「実施形態」等への明示的な言及が存在しても存在しなくても、様々な特徴が説明され、様々な特徴は、いくつかの実施形態において様々に組み合わされ、含まれ得るが、他の実施形態においては様々に省略され得る。同様に、いくつかの実施形態にとっては選好事項または要件であり得るが、他の実施形態にとっては選好事項または要件ではない、様々な特徴が説明される。
【０１１６】
本明細書において使用される文言は、主に、読みやすさと教育的目的のために選択され
ており、発明の主題の輪郭を描くため、または境界線を描くために選択されたものではない。そのため、本発明の範囲は、この詳細な説明によって限定されるのではなく、むしろ、本明細書に基づく出願について発行される任意の請求項によって限定されることが意図される。したがって、本発明の実施形態の開示は、本発明の範囲の例示とはなるが、限定とはならないことが意図され、本発明の範囲は、下記の特許請求の範囲において述べられる。
【図１】
0006594329.tif 000009
【図２】
0006594329.tif 000010
【図３Ａ】
0006594329.tif 000011
【図３Ｂ】
0006594329.tif 000012
【図３Ｃ】
0006594329.tif 000013
【図３Ｄ】
0006594329.tif 000014
【図３Ｅ】
0006594329.tif 000015
【図３Ｆ】
0006594329.tif 000016
【図３Ｇ】
0006594329.tif 000017
【図３Ｈ】
0006594329.tif 000018
【図４】
0006594329.tif 000019
【図５】
0006594329.tif 000020
【図６】
0006594329.tif 000021
【図７】
0006594329.tif 000022
【図８Ａ】
0006594329.tif 000023
【図８Ｂ】
0006594329.tif 000024
【図９】
0006594329.tif 000025
【図１０】
0006594329.tif 000026