特許第6594329号(P6594329)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ フェイスブック,インク.の特許一覧

<>
  • 特許6594329-顔表現のためのシステムおよび方法 図000009
  • 特許6594329-顔表現のためのシステムおよび方法 図000010
  • 特許6594329-顔表現のためのシステムおよび方法 図000011
  • 特許6594329-顔表現のためのシステムおよび方法 図000012
  • 特許6594329-顔表現のためのシステムおよび方法 図000013
  • 特許6594329-顔表現のためのシステムおよび方法 図000014
  • 特許6594329-顔表現のためのシステムおよび方法 図000015
  • 特許6594329-顔表現のためのシステムおよび方法 図000016
  • 特許6594329-顔表現のためのシステムおよび方法 図000017
  • 特許6594329-顔表現のためのシステムおよび方法 図000018
  • 特許6594329-顔表現のためのシステムおよび方法 図000019
  • 特許6594329-顔表現のためのシステムおよび方法 図000020
  • 特許6594329-顔表現のためのシステムおよび方法 図000021
  • 特許6594329-顔表現のためのシステムおよび方法 図000022
  • 特許6594329-顔表現のためのシステムおよび方法 図000023
  • 特許6594329-顔表現のためのシステムおよび方法 図000024
  • 特許6594329-顔表現のためのシステムおよび方法 図000025
  • 特許6594329-顔表現のためのシステムおよび方法 図000026
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6594329
(24)【登録日】2019年10月4日
(45)【発行日】2019年10月23日
(54)【発明の名称】顔表現のためのシステムおよび方法
(51)【国際特許分類】
   G06T 1/00 20060101AFI20191010BHJP
   G06T 7/00 20170101ALI20191010BHJP
   G06N 3/08 20060101ALI20191010BHJP
【FI】
   G06T1/00 340A
   G06T7/00 350C
   G06T7/00 510F
   G06N3/08
【請求項の数】19
【全頁数】34
(21)【出願番号】特願2016-552440(P2016-552440)
(86)(22)【出願日】2014年11月3日
(65)【公表番号】特表2017-501514(P2017-501514A)
(43)【公表日】2017年1月12日
(86)【国際出願番号】US2014063722
(87)【国際公開番号】WO2015066628
(87)【国際公開日】20150507
【審査請求日】2017年10月30日
(31)【優先権主張番号】61/899,877
(32)【優先日】2013年11月4日
(33)【優先権主張国】US
(31)【優先権主張番号】14/530,585
(32)【優先日】2014年10月31日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】508178054
【氏名又は名称】フェイスブック,インク.
(74)【代理人】
【識別番号】110002974
【氏名又は名称】特許業務法人World IP
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(72)【発明者】
【氏名】タイグマン、ヤニフ
(72)【発明者】
【氏名】ヤン、ミン
(72)【発明者】
【氏名】ランザト、マークアウレリオ
【審査官】 笠田 和宏
(56)【参考文献】
【文献】 特開2005−316888(JP,A)
【文献】 特開2006−139367(JP,A)
【文献】 特開2009−301170(JP,A)
【文献】 米国特許出願公開第2006/0176301(US,A1)
【文献】 米国特許第06556196(US,B1)
【文献】 米国特許出願公開第2003/0123713(US,A1)
【文献】 Unsang Park, Yiying Tong and Anil K. Jain,Age-Invariant Face Recognition,IEEE Transactions on Pattern Analysis and Machine Intelligence,米国,IEEE,2010年,Volume: 32 , Issue: 5,p.947 - 954,[検索日 2018.11.21],URL,https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5383364
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 15/18
G06N 3/00 − 3/12
7/08 − 99/00
G06T 1/00 − 1/40
3/00 − 9/40
(57)【特許請求の範囲】
【請求項1】
コンピューティング・システムが、点構成を予測するためにトレーニングした第1のサポート・ベクトル・リグレッサに少なくとも部分的に基づいて、2次元画像の顔部分を決定する工程と、
前記コンピューティング・システムが、前記2次元画像の顔部分を変換することによって生成された2次元顔画像の基準点のセットを決定する工程であって、少なくともいくつかの基準点は顔の特徴に対応し、前記第1のサポート・ベクトル・リグレッサとは異なる第2のサポート・ベクトル・リグレッサに少なくとも部分的に基づいて、前記基準点のセットが局所化される、工程と、
前記コンピューティング・システムが、前記2次元顔画像において検出された前記基準点のセットと、人間の顔の3次元形状において配置された対応するアンカー・ポイントのセットと、に少なくとも部分的に基づいて、前記2次元顔画像から3次元アライメントされた顔画像を生成する工程と
記コンピューティング・システムが、ディープ・ニューラル・ネットワーク(DNN)への前記3次元アライメントされた顔画像の提供に基づいて、前記2次元顔画像に対応する顔IDを分類する工程であって、前記DNNは、前記3次元アライメントされた顔画像の特徴のセットに基づいて、前記2次元顔画像を分類するためにトレーニングされる、工程と
を備える、コンピュータ実装方法。
【請求項2】
3次元アライメントされた顔画像を生成する前記工程は
記2次元顔画像の基準点のセットを検出する工程と
記基準点のセットを使用して、前記2次元顔画像を3次元形状へ加工する工程と
を備える、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記加工する工程は、
ンカー・ポイントのセットを前記3次元形状上へ配置する工程であって、各アンカー・ポイントは、前記2次元顔画像の前記基準点のセットのうちの1つの基準点に対応する、配置する工程と
記2次元顔画像の前記基準点のセットのうちの各基準点の位置を前記3次元形状へ逆投影する工程と
記2次元顔画像の前記基準点のセットのうちの各基準点の前記位置を前記3次元形状の正面像へ投影する工程と
記基準点のセットと前記アンカー・ポイントのセットとに基づいて、前記2次元顔画像を前記3次元アライメントされた顔画像へ変換する工程と
を備える、請求項2に記載のコンピュータ実装方法。
【請求項4】
前記2次元顔画像の前記基準点のセットは、三角形のセットを定義し、前記3次元アライメントされた顔画像へ変換する工程は、前記三角形のセットのうちの各三角形のアフィン変換を実行する工程を備える、請求項3に記載のコンピュータ実装方法。
【請求項5】
像の顔部分を、前記画像の基準点の第2のセットを検出することによって識別する工程と、
前記基準点の第2のセットに基づいて前記画像の前記顔部分を変換することによって、前記2次元顔画像を生成する工程と
をさらに備える
請求項に記載のコンピュータ実装方法。
【請求項6】
前記2次元顔画像を生成する工程は、アンカー位置のセットを決定する工程と、前記アンカー位置のセットに基づいて前記画像の前記顔部分を加工する工程とを備える、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記DNNは層のセットを備え、前記層は、畳み込みプーリング層と、局所的結合層のセットと、全結合層のセットとを備える、請求項に記載のコンピュータ実装方法。
【請求項8】
前記畳み込みプーリング層は、第1の畳み込み層と、最大プーリング層と、第2の畳み込み層とを備え、前記畳み込みプーリング層は、3次元アライメントされた前記顔画像の特徴のセットを抽出するように構成される、請求項に記載のコンピュータ実装方法。
【請求項9】
前記局所的結合層のセットのうちの各局所的結合層は、3次元アライメントされた前記顔画像の特徴のセットを抽出するように構成される、請求項7に記載のコンピュータ実装方法。
【請求項10】
前記全結合層のセットのうちの各全結合層は、3次元アライメントされた前記顔画像の特徴のセット内の相関を決定するように構成され、請求項7に記載のコンピュータ実装方法。
【請求項11】
前記全結合層のセットのうちの1つの全結合層の出力は、特徴ベクトルである、請求項7に記載のコンピュータ実装方法。
【請求項12】
前記特徴のセットのうちの各特徴は、所定の範囲へ正規化される、請求項7に記載のコンピュータ実装方法。
【請求項13】
前記DNNは、3次元アライメントされた前記顔画像の各画素についてのフィルタのセットを定義するように構成される、請求項に記載のコンピュータ実装方法。
【請求項14】
データセットを用いて前記フィルタのセットを定義するように前記DNNをトレーニングする工程をさらに備える、請求項13に記載のコンピュータ実装方法。
【請求項15】
画像ストアにおいて前記2次元顔画像の前記IDを問い合わせることによって、前記2次元顔画像の個人を識別する工程をさらに備え、前記画像ストアは、顔画像のセットを備え、前記顔画像のセットのうちの各顔画像は、個人に対応する、請求項に記載のコンピュータ実装方法。
【請求項16】
2の2次元顔画像の第2のIDを分類する工程と
記IDおよび前記第2のIDが個人に対応するか否かを決定するために、前記IDを前記第2のIDに対して比較する工程と
をさらに備える、請求項に記載のコンピュータ実装方法。
【請求項17】
前記IDは、特徴の第1のセットを備え、前記第2のIDは、特徴の第2のセットを備え、IDを比較する前記工程は
徴の前記第1のセットと特徴の前記第2のセットとの間の特徴差のセットを決定する工程と
結合層を使用することによって、特徴差の前記セットを所定の値に対してマッピングする工程と
を備える、請求項16に記載のコンピュータ実装方法。
【請求項18】
少なくとも1つのプロセッサと、
命令を記憶するメモリとを備えるシステムであって、前記命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記システムに
点構成を予測するためにトレーニングした第1のサポート・ベクトル・リグレッサに少なくとも部分的に基づいて、2次元画像の顔部分を決定する工程と、
前記2次元画像の顔部分を変換することによって生成された2次元顔画像の基準点のセットを決定する工程であって、少なくともいくつかの基準点は顔の特徴に対応し、前記第1のサポート・ベクトル・リグレッサとは異なる第2のサポート・ベクトル・リグレッサに少なくとも部分的に基づいて、前記基準点のセットが局所化される、工程と、
前記2次元顔画像において検出された前記基準点のセットと、人間の顔の3次元形状において配置された対応するアンカー・ポイントのセットと、に少なくとも部分的に基づいて、前記2次元顔画像から3次元アライメントされた顔画像を生成する工程と
ィープ・ニューラル・ネットワーク(DNN)への前記3次元アライメントされた顔画像の提供に基づいて、前記2次元顔画像に対応する顔IDを分類する工程であって、前記DNNは、前記3次元アライメントされた顔画像の特徴のセットに基づいて、前記2次元顔画像を分類するためにトレーニングされる、工程と、を行わせる、システム。
【請求項19】
命令を含む非一時的なコンピュータ読取可能な記憶媒体であって、前記命令は、コンピューティング・システムの少なくとも1つのプロセッサによって実行されるとき、前記コンピューティング・システムに
点構成を予測するためにトレーニングした第1のサポート・ベクトル・リグレッサに少なくとも部分的に基づいて、2次元画像の顔部分を決定する工程と、
前記2次元画像の顔部分を変換することによって生成された2次元顔画像の基準点のセットを決定する工程であって、少なくともいくつかの基準点は顔の特徴に対応し、前記第1のサポート・ベクトル・リグレッサとは異なる第2のサポート・ベクトル・リグレッサに少なくとも部分的に基づいて、前記基準点のセットが局所化される、工程と、
前記2次元顔画像において検出された前記基準点のセットと、人間の顔の3次元形状において配置された対応するアンカー・ポイントのセットと、に少なくとも部分的に基づいて、前記2次元顔画像から3次元アライメントされた顔画像を生成する工程と、
ィープ・ニューラル・ネットワーク(DNN)への前記3次元アライメントされた顔画像の提供に基づいて、前記2次元顔画像に対応する顔IDを分類する工程であって、前記DNNは、前記3次元アライメントされた顔画像の特徴のセットに基づいて、前記2次元顔画像を分類するためにトレーニングされる、工程と、を行わせる、記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、顔認識の分野に関する。より詳細には、本技術は、深層学習(ディープ・ラーニング)を使用して顔画像を表現するための技法を提供する。
【背景技術】
【0002】
顔認識システムは、画像またはビデオから人物を自動的に識別し、または確認するコンピュータ・アプリケーションである。非制約画像における顔認識は、アルゴリズム的知覚革命の最前線である。顔認識技術の社会的および文化的な意義および利点は、広範囲に及ぶ。しかし、マシンと人間の視覚系との間の、この領域における現在の性能ギャップは、こうした利点の実現を妨げている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
一貫して制御された(制約された)環境内で撮影された静止画像において正面顔を認識する場合の顔認識誤り率は、過去20年間にわたって3桁減少してきた。適用例は、国境警備およびスマート生体認証を含む。しかしながら、こうしたシステムは、照明、表情、咬合、および老化などの様々な要因の影響を受けやすいことがある。こうしたシステムの性能は、非制約状況において人々を認識しようと試行する際に、大幅に低下し得る。
【課題を解決するための手段】
【0004】
本開示の様々な実施形態は、ディープ・ニューラル・ネットワークを採用することによって、顔画像をアライメントし、顔画像を分類し、顔画像を確認するように構成されたシステム、方法、および非一時的なコンピュータ読取可能な媒体を含み得る。いくつかの実施形態において、3次元アライメントされた顔画像(3D−aligned face image)は、2次元顔画像から生成され得る。2次元顔画像のIDは、ディープ・ニューラル・ネットワーク(DNN)への3次元アライメントされた顔画像の提供に基づいて分類され得る。2次元顔画像のIDは、特徴ベクトルを含み得る。
【0005】
1つの実施形態において、2次元顔画像の基準点のセットが検出され得る。2次元顔画像は、3次元アライメントされた顔画像を生成するために、2次元顔画像を3次元形状へ加工すべく使用され得る。
【0006】
1つの実施形態において、アンカー・ポイントのセットは、3次元形状上へ配置され得る。各アンカー・ポイントは、2次元顔画像の基準点のセットのうちの1つの基準点に対応し得る。2次元顔画像の基準点のセットのうちの各基準点の位置は、3次元形状へ逆投影され得る。2次元顔画像の基準点のセットのうちの各基準点の位置は、3次元形状の正面像へ投影され得る。2次元顔画像は、基準点のセットとアンカー・ポイントのセットとに基づいて、3次元アライメントされた顔画像へ変換され得る。
【0007】
1つの実施形態において、2次元顔画像の基準点のセットは、三角形のセットを定義する。アフィン変換は、2次元顔画像を3次元アライメントされた顔画像へ変換するために、三角形のセットのうちの各三角形に対して実行される。
【0008】
1つの実施形態において、画像の顔部分は、その画像の基準点の第2のセットを検出することによって識別され得る。2次元顔画像は、基準点の第2のセットに基づいて、画像の顔部分を変換することによって生成され得る。
【0009】
1つの実施形態において、アンカー位置のセットが決定され得る。画像の顔部分は、2次元顔画像を生成するために、アンカー位置のセットに基づいて加工され得る。
1つの実施形態において、DNN層のセットを備え、層のセットは、畳み込みプーリング層と、局所的結合層のセットと、全結合層のセットとを備える。
【0010】
1つの実施形態において、畳み込みプーリング層は、第1の畳み込み層と、最大プーリング層と、第2の畳み込み層とを備える。畳み込みプーリング層は、3次元アライメントされた顔画像の特徴のセットを抽出するように構成される。
【0011】
1つの実施形態において、局所的結合層のセットのうちの各局所的結合層は、3次元アライメントされた顔画像の特徴のセットを抽出するように構成される。
1つの実施形態において、全結合層のセットのうちの各全結合層は、3次元アライメントされた顔画像の特徴のセット内の相関を決定するように構成される。
【0012】
1つの実施形態において、全結合層のセットのうちの1つの全結合層の出力は、特徴ベクトルである。
1つの実施形態において、DNNは、特徴ベクトルに基づいて2次元顔画像を分類するように構成される。特徴ベクトルは、3次元アライメントされた顔画像の特徴のセットを備える。特徴のセットのうちの各特徴は、所定の範囲へ正規化される。
【0013】
1つの実施形態において、DNNは、3次元アライメントされた顔画像の各画素についてのフィルタのセットを定義するように構成される。
1つの実施形態において、DNNは、データセットを用いて前記フィルタのセットを定義するようにトレーニングされる。
【0014】
1つの実施形態において、2次元顔画像の個人は、画像ストアにおいて2次元顔画像のIDを問い合わせることによって識別され得る。画像ストアは、顔画像のセットを備え、顔画像のセットのうちの各顔画像は、個人に対応する。
【0015】
1つの実施形態において、第2の2次元顔画像の第2のIDが分類される。IDは、IDおよび第2のIDが個人に対応するか否かを決定するために、第2のIDと比較され得る。
【0016】
1つの実施形態において、IDと第2のIDとの間の重み付けされたχ距離は、IDを第2のIDに対して
比較するために決定され得る。
【0017】
1つの実施形態において、IDは、特徴の第1のセットを備え、第2のIDは、特徴の第2のセットを備える。特徴の第1のセットと特徴の第2のセットとの間の特徴差のセットが決定され得る。特徴差のセットは、IDを第2のIDに対して比較するために、全結合層を使用することによって所定の値に対してマッピングされ得る。
【0018】
本発明に係るさらなる実施形態において、1つまたは複数のコンピュータ読取可能な非一時的な記憶媒体は、実行されると、本発明に係る方法または上記実施形態のうちのいずれかを実行するように動作可能であるソフトウェアを具現化する。
【0019】
本発明に係るさらなる実施形態において、システムは、1つまたは複数のプロセッサと、プロセッサに結合され、プロセッサによって実行可能な命令を備える少なくとも1つのメモリとを備え、プロセッサは、命令を実行する際に、本発明に係る方法または上記実施形態のうちのいずれかを実行するように動作可能である。
【0020】
本発明に係るさらなる実施形態において、好適には、コンピュータ読取可能な非一時的な記憶媒体を備える、コンピュータ・プログラム製品は、データ処理システム上で実行されると、本発明に係る方法または上記実施形態のうちのいずれかを実行するように動作可能である。
【0021】
本発明の多くの他の特徴および実施形態は、下記の詳細な説明から、および添付の図面から、明らかとなるであろう。
本発明に係る実施形態は、具体的には、方法、記憶媒体、システムおよびコンピュータ・プログラム製品へ向けられる添付の特許請求の範囲において開示され、1つの請求項のカテゴリ、例えば、方法において記載される任意の特徴は、別の請求項のカテゴリ、例えば、システムにおいても特許請求され得る。添付の特許請求の範囲における従属関係または参照は、形式的な理由のために選ばれているにすぎない。しかしながら、添付の特許請求の範囲において選ばれた従属関係に関わらず、請求項の任意の組み合わせおよびその特徴が開示され、特許請求され得るように、(特に、多数従属形式で)任意の先行請求項への意図的な参照に由来する任意の主題も、特許請求され得る。特許請求され得る主題は、添付の特許請求の範囲において述べられる特徴の組み合わせだけでなく、特許請求の範囲における特徴の任意の他の組み合わせも備え、特許請求の範囲において記載される各特徴は、特許請求の範囲における任意の他の特徴と、または他の特徴の組み合わせと、組み合わせられ得る。さらに、本明細書において説明または図示される実施形態および特徴のうちの任意のものは、別個の請求項において特許請求されてもよく、および/または、本明細書において説明もしくは図示される任意の実施形態もしくは特徴との任意の組み合わせにおいて特許請求されてもよく、または添付の特許請求の範囲の特徴のうちの任意のものとの組み合わせにおいて特許請求されてもよい。
【図面の簡単な説明】
【0022】
図1】本開示の一実施形態に係る、ディープ・ニューラル・ネットワークを採用することによって、顔画像をアライメントし、顔画像を分類し、および/または顔画像を確認するように構成された例示的な顔表現モジュールを含む例示的なシステムを例示する図。
図2】本開示の一実施形態に係る、例示的な顔アライメント・モジュールを例示する図。
図3A】本開示の一実施形態に係る、基準点を有する検出された顔部分を備える例示的な2次元画像を例示する図。
図3B】本開示の一実施形態に係る、図3Aに示される例示的な2次元画像に基づいて生成された例示的な2次元顔画像を例示する図。
図3C】本開示の一実施形態に係る、検出された基準点および基準点によって定義される対応する三角形を有する例示的な2次元顔画像例示する図。
図3D】本開示の一実施形態に係る、図3Bに示される2次元顔画像の結像面へ変換された例示的な3次元形状を例示する図。
図3E】本開示の一実施形態に係る、適合された3次元−2次元カメラに関する三角形視認性を例示する図。
図3F】本開示の一実施形態に係る、図3Cに例示される基準点に対応する3次元形状上へ配置されたアンカー・ポイントを例示する図。
図3G】本開示の一実施形態に係る、例示的な3次元アライメントされた顔画像を例示する図。
図3H】本開示の一実施形態に係る、図3Gに例示される3次元顔画像に基づいて生成された顔の例示的な図。
図4】本開示の一実施形態に係る、例示的な顔分類モジュールを例示する図。
図5】本開示の一実施形態に係る、例示的なDNNの例示的なアーキテクチャを例示する図。
図6】本開示の一実施形態に係る、2次元顔画像についての顔表現を生成する例示的な方法を例示する図。
図7】本開示の一実施形態に係る、2次元顔画像についての顔表現を生成する例示的な方法を例示する図。
図8A】LFWデータセットに対する、他の方法と比較した、いくつかの実施形態の受信者動作特性(「ROC(Receiver Operating Characteristic)」)曲線を例示する図。
図8B】YTFデータセットに対する、他の方法と比較した、いくつかの実施形態の受信者動作特性(「ROC」)曲線を例示する図。
図9】本開示の一実施形態に係る、様々なシナリオにおいて利用され得る例示的なシステムのネットワーク図。
図10】本開示の一実施形態に係る、様々なシナリオにおいて利用され得るコンピュータ・システムの例を例示する図。
【発明を実施するための形態】
【0023】
図面は、開示される技術の様々な技術を例示の目的のために図示するものにすぎず、図面は、同様の要素を識別するために同様の参照符号を使用する。当業者は、本明細書において説明される開示される技術の原理から逸脱することなく、図面に例示される構造および方法の代替的実施形態が採用され得ることを、下記の議論から容易に認識するであろう。
【0024】
近年、多数の写真が、検索エンジンによってクロールされ、ソーシャル・ネットワークへアップロードされてきた。これらの写真は、物体、顔、およびシーンなどの多様な非制約材料を含み得る。この膨大な量のデータを活用可能であることは、コンピュータ・ビジョン・コミュニティにとって、その未解決の問題に対処する際に重要である。しかしながら、サポート・ベクトル・マシン、主成分分析および線形判別分析などの、コンピュータ・ビジョンにおいて使用される従来のマシン学習ツールのうちの多くの汎化能力は、トレーニング・セットの量が著しく増加するにつれて、かなり急速に飽和する傾向にある。
【0025】
現代の顔認識は、検出、アライメント、表現、および分類などのいくつかの段階を備え得る。検出段階中に、1つの画像から1つまたは複数の顔が検出されることがあり、検出された顔は、アライメント段階においてアライメントされる。その後、画像中の各顔は、表現段階中に表現される。画像中の各顔は、分類段階において分類され得る。従来の顔確認方法は、ユーザによって定義および選択される、手動で選択された特徴を使用する。手動で選択された特徴は、最も早期のLabeled Faces in the Wild(「LFW」)寄稿においてさえ、性能を改善するために組み合わせられ得る。こうしたシステムは、数万個の画像記述子を採用し得る。
【0026】
顔アライメントは、両目、鼻、口、および顎などの意味論的な顔ランドマークの位置を突き止める。結果として、顔アライメントは、顔認識システムの重要な部分となり得る。アライメントされた顔のデータセットを含む顔データベース(例えば、LFW−a)は、正規化された入力を提供することによって、顔認識システムの性能を改善し得る。LFW結果ページに関する寄稿のうちのいくつかは、2次元アライメントされたバージョンのデータセット(例えば、LFW−a)を使用し、結果を改善している。他の寄稿は、よりカスタマイズされた解決策を採用し得る。例えば、妥当な「ID保存」アライメントを推論するための類似した姿勢および表情の個人のデータセットが使用される。それでもなお、非制約シナリオにおいて顔をアライメントすることは、困難となり得る。顔の非平面性に起因して、顔面形態学を阻む、人物のIDから切り離すことが難しい多くの要因(例えば、姿勢および柔らかい表情)が考慮される必要がある。
【0027】
図1は、本開示の実施形態に係る、ディープ・ニューラル・ネットワークを採用することによって、顔画像をアライメントし、顔画像を分類し、および/または顔画像を確認するように構成された例示的な顔表現モジュール102を含む例示的なシステム100を例示する。図1に示されるように、例示的な顔表現モジュール102は、顔アライメント・モジュール104と、顔分類モジュール106と、顔確認モジュール108とを備え得る。
【0028】
例示的なシステム100は、少なくとも1つの画像ストア110を含み得る。図1の例において、少なくとも1つの画像ストア110は、画像、またはビデオなどの他のデジタル媒体を記憶するように構成され得る。画像は、識別された顔画像または識別されていない顔画像を含み得る。識別された顔画像は、人物に対してリンクされるのに対して、識別されていない顔画像は、何れの人物に対してもリンクされない。例えば、識別された顔画像は、人物のID(例えば、氏名、ユーザ名等)に対してタグ付けされ得る。画像は、2次元または3次元であってよい。様々な実施形態において、原画像は、基礎となる表現として使用され得る。画像ストア110は、データセットを記憶し得、データセットは、顔表現を学習および分類するためにディープ・ニューラル・ネットワーク(「DNN」)をトレーニングすべく使用され得る。様々な実施形態は、他のデータセットに対しても十分に汎用化する顔表現を取得するために、顔の非常に大きなラベル付きデータセットを活用するディープ・ニューラル・ネットワーク・アーキテクチャおよび学習方法を提供し得る。DNNは、例えば、重み共有なしにいくつかの局所的結合層を使用する1億2千万個を超えるパラメータに関与し得る。例えば、データセットは、4000個を超えるIDに所属する4百万個の顔画像を備え得る。ここで、各IDは、1人の人物の平均千個を超えるサンプルを有する。
【0029】
いくつかの実施形態において、顔アライメント・モジュール104は、基準点に基づいた、顔の分析的な3次元モデリングを含むように構成され得る。顔アライメント・モジュール104は、分析的な3次元モデルに基づいて、検出された顔クロップ(facial
crop)を加工し、それによって、3次元アライメントされた顔画像を作成するようにさらに構成され得る。各顔領域の位置は、3次元アライメントされた顔画像において画素レベルで固定されているため、顔貌は、原画像における画素のRGB値から学習および検出され得る。
【0030】
いくつかの実施形態において、顔分類モジュール106は、画像のIDを分類するように構成され得る。顔分類モジュール106は、画像の画素のRGB値に直接基づいて、画像のID(例えば、顔表現)を分類するように構成され得る。画像のIDは、非常に短く、疎ですらあり得る。さらなる実施形態において、画像のIDは、画素のRGB値、画像の勾配ドメイン、奥行きマップ、もしくは奥行き情報、または、これらの任意の組み合わせに基づいて作成され得る。
【0031】
いくつかの実施形態において、顔確認モジュール108は、2つの画像が同じIDを有するかを確認するように構成される。換言すれば、2つの画像が同じクラスに所属するかが確認される。顔確認モジュール108は、顔分類モジュール106によって分類されたID(例えば、画像の顔表現)に基づいて、2つの画像間の類似性を決定するように構成され得る。画像は、特徴ベクトルによって表現され得る。いくつかの実施形態において、2つの画像の類似性は、2つの画像についての2つの正規化された特徴ベクトル間の内積を計算することによって決定され得る。いくつかの実施形態において、2つの画像の類似性は、χ類似性またはサイアミーズ・ネットワーク(Siamese network)などの監視されたメトリックによって決定され得る。
【0032】
2つの画像間の重み付けされたχ類似性は、χ(f,f)=Σ(f(i)−f(i))/(f(i)+f(i))として表現され得る。ここで、fおよびfは、それぞれ画像の特徴ベクトル表現である。重みパラメータは、要素(f(i)−f(i))/(f(i)+f(i))のベクトルに対して適用される、線形SVMを使用して学習され得る。
【0033】
サイアミーズ・ネットワークは、2つの画像について高度に非線形なメトリックを提供する。2つの画像について識別される特徴間の絶対差は、2つの入力画像が同じ人物に所属するかを直接予測するために決定および使用され得る。2つの画像についての特徴間の誘導距離は、d(f,f)=Σ|f(i)−f(i)|として表現され得る。ここで、aは、サイアミーズ・ネットワークのトレーニング可能なパラメータである。サイアミーズ・ネットワークのパラメータ(aおよびより下位の層における関節パラメータ)は、ロジスティック関数1/(1+exp(−d))を通じて0と1との間の距離を正規化することによって、ならびに、交差エントロピー損失およびバック・プロパゲーションを使用することによって、トレーニングされ得る。様々な実施形態において、顔確認タスクに対するオーバーフィッティングを防止するために、トレーニングは、サイアミーズ・ネットワークの2つの最上位の層についてのみ可能とされる。
【0034】
図2は、本開示の実施形態に係る、図1(例えば、顔アライメント・モジュール104)に示されるような例示的な顔アライメント・モジュール202を例示する。例示的な顔アライメント・モジュール202は、顔画像をアライメントし得る。アライメントされるべき画像は、少なくとも1つのデータ・ストア208(例えば、図1における画像ストア110)から取得され得る。アライメントされた顔画像は、データ・ストア208内に記憶され得る。図2は、図3A図3Hに関連して議論される。
【0035】
図3A図3Hは、本開示の実施形態に係る、アライメント・プロセスの異なる時間における例示的な画像データを例示する。図3Aは、基準点を有する検出された顔部分310を備える例示的な2次元画像301を例示する。図3Bは、図3Aに例示される例示的な2次元画像301に基づいて生成された例示的な2次元顔画像302を例示する。図3Cは、検出された基準点および基準点によって定義される対応する三角形を有する例示的な2次元顔画像303を例示する。図3Dは、図3Bに例示された2次元顔画像302の結像面へ変換された例示的な3次元形状304を例示する。図3Eは、適合された3次元−2次元カメラに関する三角形視認性を例示する。図3Fは、図3Cに例示される基準点に対応する3次元形状306上に配置されたアンカー・ポイントを例示する。図3Gは、例示的な3次元アライメントされた顔画像307を例示する。図3Hは、図3Gに例示された3次元顔画像307に基づいて生成された顔308の例示的な図を例示する。
【0036】
顔アライメント・モジュール202は、基準点検出モジュール204と、画像変換モジュール206とを備え得る。顔アライメント・モジュールは、2次元画像210を3次元アライメントされた顔画像212へアライメントするように構成され得る。3次元アライメントされた顔画像212は、顔面形態学を阻む、人物のIDから切り離すことが難しい多くの要因が考慮され得るように、非制約シナリオにおいてアライメントされ得る。例えば、顔の非平面性および柔らかい表情に起因する姿勢が考慮される。
【0037】
基準点検出モジュール204は、2次元顔画像における基準点を局所化する。2次元顔画像は、非制約画像であり得る。様々な実施形態において、基準点は、サポート・ベクトル・リグレッサ(SVR:Support Vector Regressor)によって抽出され得る。SVRは、2次元顔画像の画像記述子から点構成を予測するためにトレーニングされ得る。様々な実施形態において、画像記述子は、ローカル・バイナリ・パターン(「LBP(Local Binary Patterns)」)・ヒストグラムに
基づく。さらなる実施形態において、他の特徴は、画像記述子において考慮され得る。いくつかの実施形態において、基準点検出モジュール204がその出力を改良し得るように、複数の反復が適用され得る。つまり、基準点検出モジュール204は、基準点の最初のセットを検出するように構成され得る。基準点の最初のセットは、複数回の反復を通じて、基準点の最終的なセットへ改良され得る。2次元顔画像は、誘導された類似性行列Tを使用して、2次元変換画像へと変換され得る。基準点検出モジュール204は、2次元顔画像の基準点の局所化を改良するために使用され得る新たな特徴空間上で2次元変換画像を分析し得る。
【0038】
基準点検出モジュール204は、2次元顔画像の基準点のセットを検出するように構成され得る。図3Cを参照すると、基準点のセットを有する例示的な2次元顔画像303が例示されている。基準点のセットx2dは、図3Aに例示される2次元画像301の2次元アライメントされたクロップ画像である、図3Bに例示される2次元顔画像302から検出される。基準点のセットx2dは、トレーニングされたSVRを使用することによって検出され得る。例示される例において、選択された数(例えば、67個)の基準点が、2次元顔画像303上で局所化される。基準点のセットx2dは、対応する三角形のセット(例えば、ドロネー三角形分割法)を定義し得る。対応する三角形のセットは、2次元顔画像303に例示される画像の輪郭に追加され得る。そのため、クロッピングおよび鋭角が回避され得る。
【0039】
図2を再度参照すると、画像変換モジュール206は、基準点検出モジュール204によって検出された基準点のセットを使用することによって、2次元顔画像を3次元形状へ加工することにより3次元アライメントされた顔画像212を生成するように構成され得る。図3Gを参照すると、図3Bに例示される2次元顔画像302に基づいて作成された、例示的な3次元アライメントされた顔画像307が例示されている。2次元顔画像302は、図3Gに例示される3次元アライメントされた顔画像307を生成するために、図3Cに例示される基準点のセットを使用して加工され得る。2次元顔画像を3次元形状または3次元モデルへ加工する場合、2次元顔画像からの各基準点の位置は、復元された射影行列Pを通じて3次元形状または3次元モデルへ逆投影され、その後、3次元形状または3次元モデルの正面像へ投影される。様々な実施形態において、2次元顔画像上で検出された基準点のセットから得られた三角形(例えば、ドロネー三角形分割法)によって方向付けられる、区分的アフィン変換が使用される。
【0040】
図3Dを参照すると、2次元顔画像302の結像面へ変換された例示的な3次元形状または3次元モデル304が例示されている。一般的な3次元形状または3次元モデルは、外部平面回転を含む顔画像302をアライメントするための基準として使用され得る。様々な実施形態において、一般的な3次元形状モデルは、USFヒューマンIDデータベースからの3Dスキャンの平均値である。3Dスキャンの平均値は、アライメントされた頂点v=(x,y,z=1として処理および表現され得る。
【0041】
アンカー・ポイントのセットX3dは、3次元形状上へ配置され得る。各アンカー・ポイントは、2次元顔画像上で検出された基準点に対応する。2次元顔画像上で検出された基準点と3次元アライメントされた顔画像上のアンカー・ポイントとの間の完全な一致が達成され得る。例えば、図3Fは、3次元形状または3次元モデルによって誘導され得るアンカー・ポイントを例示する。図3Fに例示されるアンカー・ポイントの各々は、図3Cに例示される基準点に対応する。基準点およびアンカー・ポイントは、図3Bに例示される2次元顔画像の、図3Gに例示される3次元アライメントされた顔画像への区分的アフィン加工を方向付けるために使用され得る。
【0042】
3次元アフィン・カメラPは、図3Bに例示される2次元顔画像302の正面顔平面を
図3Dに例示される3次元形状304の結像面へ逆投影するために、登録および使用され得る。そのため、参照3次元形状304は、2次元顔画像302の結像面へ変換される。換言すれば、2次元顔画像302は、参照3次元形状304に基づいて、3次元アライメントされた顔画像へ変換される。アフィン3次元−2次元カメラPは、
【0043】
【数1】
について、既知の共分散を用いて最小二乗法を使用して解かれ得る。ここで、X3dは、参照基準点位置
【0044】
【数2】
によって与えられる(2x8)の行列スタックであり、
【0045】
【数3】
は、4つのゼロの行ベクトルを表す。サイズ2x4のアフィン・カメラPは、8個の未知の
【0046】
【数4】
のベクトルによって表現され得る。いくつかの実施形態において、基準点誤差の推定共分散によって与えられる、(67*2)x(67*2)の共分散行列Σが使用される。これは、顔の輪郭上の検出された点は、それらの推定位置がカメラ角度に対する奥行きによって影響を受け得ることから、より雑音が多くなり得るためである。
【0047】
図3Eは、適合されたアフィン3次元−2次元カメラに関する三角形視認性を例示する。3次元形状または3次元モデル上の三角形の視認性は、アフィン3次元−2次元カメラからの三角形を定義する対応するアンカー・ポイントの距離に依存し得る。基準点についてのカメラからの距離に依存して、三角形334は、三角形332よりも視認性が低くなり、三角形332は、三角形330よりも視認性が低くなる。
【0048】
図2を再度参照すると、様々な実施形態において、顔アライメント・モジュール202は、2次元画像210から2次元顔画像を生成するように構成され得る。図3Aを参照すると、顔部分310は、2次元画像301から検出され得る。2次元画像301の顔部分310は、基準点312、314、316、318、320、および322のセットを検出することによって識別され得る。基準点312、314は、目の中心を中心とし、基準
点316は、鼻の先端上を中心とし、基準点318、322、および320は、それぞれ口の両端および中央を中心とし得る。顔部分において検出された基準点は、アンカー位置のセットを決定するために使用され得る。識別された顔部分は、2次元顔画像を生成するために、アンカー位置のセットに基づいて加工され得る。例えば、例示されるように、基準点312、314、316、318、320、および322は、顔部分310を3つのアンカー位置へおよそ拡大縮小し、回転し、転換するために使用され得る。図3Bに例示されるような新たな加工された画像を生成するために、3つのアンカー位置は、T2d:=(s,R,t)について解くことによって決定され得る。ここで、点j=1..nについて、xanchor:=s[R|t]*xsourceである。図3Bは、2次元顔画像302を例示する。2次元顔画像302は、2次元画像301に基づくアグリゲートされた変換によって生成される、アライメントされた顔クロップであり得る。実質的な変化が存在しなくなるまで、複数回の反復が実行されてアンカー位置を決定され、それによって、検出された顔部分310に基づいて2次元顔画像302が生成される。最終的な2次元類似性変換T2d:=T2d*...*T2dが構成され得る。
【0049】
図4は、本開示の実施形態に係る、図1(例えば、顔分類モジュール106)に示されるような、例示的な顔分類モジュール402を例示する。例示的な顔分類モジュール402は、画像412のIDを分類し得る。分類されるべき画像は、少なくとも1つのデータ・ストア410(例えば、図1における画像ストア110)から取得され得る。分類された画像は、データ・ストア410内に記憶され得る。図4は、図5に関連して議論される。
【0050】
顔分類モジュール402は、フィルタ生成モジュール404と、特徴ベクトル生成モジュール406と、表現カテゴリ化モジュール408とを備え得る。顔分類モジュール402は、画像のID(例えば、顔表現)をDNNから得るように構成され得る。フィルタ生成モジュール404は、データセットを用いてDNNをトレーニングすることによって、フィルタのセットを生成するように構成され得る。様々な実施形態において、データセットは、大量の写真を含み得る。写真のうちの一部が識別され(例えば、IDを用いてラベル付けされ、またはタグ付けされ)得る。各フィルタは、画像の特徴(例えば、顔の特徴)を抽出するように構成され得る。特徴ベクトル生成モジュール406は、画像の特徴ベクトルを生成するように構成され得る。特徴ベクトルは、画像の様々な特徴を含み、画像を表現するために使用され得る。画像の特徴ベクトルは、フィルタ生成モジュール404によって提供されるフィルタのセットに基づいて生成され得る。表現カテゴリ化モジュール408は、画像の特徴ベクトルに基づいて、画像をカテゴリ化し得る。
【0051】
様々な実施形態において、DNNは層のセットを備え、層のセットは、畳み込みプーリング層と、局所的結合層と、全結合層とを含む。畳み込みプーリング層は、画像の特徴のセットを抽出するように構成され得る。局所的結合層は、画像の特徴の別のセットを抽出するように構成され得る。全結合層は、画像の特徴間の相関を決定するように構成され得る。いくつかの実施形態において、DNNの全体的なアーキテクチャは、局所的結合層のセットが後に続く、畳み込みプーリング層を含み、局所的結合層のセットの後には、全結合層が続く。DNNは、少なくとも選択された数(例えば、1億2千万個)のパラメータ(例えば、接続重み)を備え得る。様々な実施形態において、DNNは、図3Gに例示される3次元アライメントされた顔画像307などの、3次元アライメントされた顔画像を入力として受信するように構成される。
【0052】
様々な実施形態において、DNNは、ReLU活性化関数max(0,x)を使用する。このソフトしきい値非線形性(soft−thresholding non−linearity)は、DNNの最後の全結合層を除いて、畳み込み層、局所的結合層、また
は全結合層の後に適用され得る。そのため、高度に非線形で、かつ、疎な特徴が生み出され得る。したがって、顔分類モジュール402によって生み出される特徴は、非常に疎となり得る。いくつかの実施形態において、平均して、最上位の層における特徴成分の75%は、ちょうどゼロである。さらなる実施形態において、トレーニング中に無作為の特徴成分を0に設定する正則化方法(例えば、ドロップアウト)が適用され得る。いくつかの実施形態において、正則化方法は、最初の全結合層のみに対して適用され得る。ReLU活性化の使用は、顔分類モジュール402が画像強度の調整に対して不変とならないことを可能にする。DNNにおけるバイアスがなければ、完全な同変性(equivariance)、または、ほぼ完全な同変性が達成され得る。
【0053】
いくつかの実施形態において、顔分類モジュール402は、特徴がゼロと1との間になるように正規化するように構成され得る。顔分類モジュール402は、L正規化を実行するようにさらに構成され得る。そのため、後続の学習が改善され得る。特徴ベクトルの各成分は、その最大値によって、トレーニング・セット全体にわたって除算され得る。いくつかの実施形態において、小さい数による除算を回避するために、正規化係数は、所定の値(例えば、0.05)を上限に定められる。最大数が所定の値(例えば、0.05)よりも小さい場合、特徴は正規化されない。そのような正規化は、顔分類モジュール402が照明変化に対してロバストであることを確保し得る。
【0054】
様々な実施形態において、入力された3次元アライメントされた顔画像は、DNNの畳み込みプーリング層へ提供され得る。畳み込みプーリング層は、第1の畳み込み層(C1)と、最大プーリング層(M2)と、第2の畳み込み層(C3)とを備え得る。各畳み込み層は、フィルタのセットを備えるように構成され得る。フィルタの各々は、特徴マップを生成するように構成される。最大プーリング層は、小さい登録誤差に対して、DNNをよりロバストにし得る。しかしながら、いくつかのレベルのプーリングは、ネットワークに対して、詳細な顔構造およびマイクロ・テクスチャの正確な位置に関する情報を失わせ得る。そのため、様々な実施形態において、最大プーリングは、第1の畳み込み層のみに対して適用され得る。つまり、第1の畳み込み層の後にのみ、最大プーリング層が続く。畳み込みプーリング層は、画像の低レベルの特徴(例えば、単純なエッジおよびテクスチャ)を抽出するように構成される。畳み込みプーリング層は、入力画像を適応的に前処理し、その入力画像を単純な局所的特徴のセットへ拡張する。
【0055】
図5は、本開示の実施形態に係る、例示的なDNNの例示的なアーキテクチャ500を例示する。3次元アライメントされた顔画像524(RGPコピー524a〜524cを含む)は、入力としてDNN500へ提供される。例示される例において、DNN500は、画素のRGB値に基づいて、3次元アライメントされた顔画像514のIDを分類し得る。画像524の局所的な顔の特徴は、畳み込みプーリング層502および局所的結合層のセット510によって抽出され得る。画像524の局所的な顔の特徴間の相関は、全結合層のセット518によって決定され得る。例示される例において、全結合層F7 520の出力は、画像524の特徴ベクトルとして使用され得る。
【0056】
例示されるように、例示的な畳み込みプーリング層502は、畳み込み層C1 504と、最大プーリング層M2 506と、畳み込み層C3 508とを備える。畳み込み層は、フィルタのセット(例えば、32個のフィルタ)を有するように構成され得る。1つの実施形態において、選択された数のフィルタの各フィルタは、11x11x3の大きさであり得る。畳み込み層C1によって生成された特徴マップのセットは、最大プーリング層M2へ提供され得る。各チャネルについて、最大プーリング層M2は、3x3の空間近傍に対して、ストライド2で最大値を取るように構成され得る。第2の畳み込み層C3は、最大プーリング層M2の出力に対して適用され得る。畳み込み層C3は、フィルタのセット(例えば、16個のフィルタ)を有するように構成され得る。一実施形態において、
選択された数のフィルタの各フィルタは、9x9x16の大きさであり得る。
【0057】
畳み込みプーリング層によって生成された画像の特徴(例えば、局所的な顔の特徴)は、局所的結合層のセットへ提供され得る。局所的結合層のセットは、重み共有をせず、局所的結合層の各出力は、入力の非常に大きなパッチによって影響を受け得る。そのため、局所的結合層の使用は、特徴抽出の計算負荷に対しては影響を及ぼさないかもしれないが、トレーニングを受けるパラメータの数に対しては影響を及ぼし得る。各局所的結合層は、入力画像から特徴のセットを抽出するように構成され得る。画像の同じ位置について、異なる特徴が、局所的結合層および畳み込み層によって抽出され得る。つまり、特徴マップ内のあらゆる位置におけるフィルタのセットは、DNNの局所的結合層によって学習され、このフィルタのセットは、畳み込み層によって学習されるフィルタのセットとは異なる。局所的結合層は、畳み込みの空間的定常性の仮定を置かない。なぜならば、アライメントされた画像の異なる領域は、異なる局所的統計値を有し得るためである。例えば、両目と両眉毛との間のエリアは、大きく異なる外観を提示し、鼻と口との間のエリアと比較して、かなり高い識別能を有する。
【0058】
図5をまた参照すると、例示されるように、局所的結合層の例示的なセット510は、第1の局所的結合層L4 512と、第2の局所的結合層L5 514と、第3の局所的結合層L6 516とを備える。例示される例示的なDNN500に対する、入力画像の特徴マップ内のあらゆる位置において、局所的結合層L4 512、L5 514、またはL6 516は、畳み込み層C1 504またはC3 508によって適用されるセットからのフィルタの異なるセットを適用し得る。局所的結合層L4 512、L5 514、またはL6 516の各出力ユニットは、入力の非常に大きなパッチによって影響を及ぼされ得る。例えば、例示されるように、局所的結合層L6 516の出力は、入力画像524の74x74x3のパッチによって影響を与えられ得る。入力画像524はアライメントされているため、そのようなパッチ間には、ほとんどいかなる統計共有も存在しない。
【0059】
畳み込みプーリング層と局所的結合層のセットとによって生成された画像の局所的な顔の特徴は、全結合層のセットへ提供され得る。全結合層のセットは、畳み込みプーリング層と局所的結合層のセットとによって生成された画像の局所的な顔の特徴間の相関を決定するように構成され得る。つまり、全結合層のセットは、顔画像の離れた部分において抽出された局所的な顔の特徴(例えば、両目の位置および形状、口の位置および形状)間の相関を決定するように構成される。全結合層の各出力は、全結合層の全ての入力に対して接続され得る。
【0060】
図4を参照すると、いくつかの実施形態において、特徴ベクトル生成モジュール406は、全結合層の出力を画像410の特徴ベクトルとして使用するように構成され得る。表現カテゴリ化モジュール408は、特徴ベクトルに基づいて、画像をクラスへカテゴリ化するように構成され得る。いくつかの実施形態において、DNNの出力(例えば、最後の全結合層の出力)は、K方向ソフトマックス(K−way softmax)へ提供され得る。ここで、Kは、クラスの数である。K方向ソフトマックスは、クラス・ラベルにわたる分散を生み出すように構成され得る。i番目のクラスに対して割り当てられる確率は、ソフトマックス関数p=exp(o)/Σexp(o)の出力であり、ここで、oは、所与の出力についてのネットワークのi番目の出力を表す。表現カテゴリ化モジュール408は、2次元顔画像が所属する個人を識別するように構成され得る。画像ストア410は、2次元顔画像のID(例えば、顔表現、特徴ベクトル)を用いて問い合わせをされ得る。
【0061】
様々な実施形態において、DNNをトレーニングする場合、正確なクラス(例えば、顔
ID)の確率が最大化される。各トレーニング・サンプルについての交差エントロピー損失は、正確なクラスの確率を最大化するために、最小化され得る。所与の入力についての交差エントロピー損失は、L=−logpであり、ここで、kは、所与の入力についての真のラベルのインデックスである。パラメータに対するLの勾配を計算することによって、および、確率的勾配降下法(SGD:stochastic gradient descent)を使用してパラメータを更新することによって、損失は、パラメータにわたって最小化され得る。いくつかの実施形態において、勾配は、誤差の標準的な逆伝搬によって決定され得る。
【0062】
DNN500のアーキテクチャは、入力画像がアライメントされているという事実を活用することによってカスタマイズされ得る。例示的なDNN500は、様々な顔の特徴を検出するために、および/または、(上記でより詳細に説明されるように)画像の特徴ベクトルを生成するために、様々な顔の特徴に対応する異なるフィルタを学習するように構成され得る。図5に例示されるように、例示的なDNN500は、畳み込みプーリング層502と、局所的結合層のセット510と、全結合層のセット518とを備える、9層のDNNである。畳み込みプーリング層502は、畳み込み層C1 504と、最大プーリング層M2 506と、畳み込み層C3 508とを備え得る。局所的結合層のセット510は、局所的結合層L4〜L6 512、514、および516を備え得、全結合層のセット518は、全結合層F7〜F8 520および522を備え得る。全結合層F7 520またはF8 522の各出力ユニットは、全ての入力に対して接続され得る。
【0063】
図6は、本開示の実施形態に係る、2次元顔画像についての顔表現を生成する例示的な方法を例示する。特に明記されない限り、様々な実施形態の範囲内で、同様の順序もしくは代替的な順序で実行され、または、並行して実行される、追加的な工程、より少ない工程、または代替的な工程が存在し得ることが認識されるべきである。ブロック602において、3次元アライメントされた顔画像は、2次元顔画像に基づいて生成される。3次元アライメントされた顔画像は、3次元モデルに基づく2次元顔画像のアフィン変換を適用することによって作成され得る。3次元モデルは、明確な3次元顔モデリングであり得る。ブロック604において、2次元顔画像のIDは、3次元アライメントされた顔画像をDNNへ提供することによって分類され得る。2次元顔画像の顔表現(例えば、特徴ベクトル)は、2次元顔画像に対応する3次元アライメントされた顔画像を使用することによって生成され得る。いくつかの実施形態において、DNNは、9個の層を備え得る。DNNは、例えば、重み共有なしに複数の局所的結合層を使用する1億2千万個を超えるパラメータに関与し得る。より詳細な議論および例は、図1図5を参照しつつ、上記に提供されている。
【0064】
図7は、本開示の実施形態に係る、2次元顔画像についての顔表現を生成する例示的な方法を例示する。特に明記されない限り、様々な実施形態の範囲内で、同様の順序もしくは代替的な順序で実行され、または、並行して実行される、追加的な工程、より少ない工程、または代替的な工程が存在し得ることが認識されるべきである。ブロック702において、2次元画像内の顔部分は、その2次元画像上の基準点のセットを検出することによって識別される。基準点は、画像記述子から点構成を予測するようにトレーニングされたSVRによって検出され得る。ブロック704において、2次元顔画像は、ブロック702において検出された基準点に基づいて、2次元画像の顔部分を変換することによって生成され得る。2次元顔画像は、2次元画像のアライメントされたクロップであり得、アグリゲートされた変換によって生成され得る。2次元類似性変換が最終的に構成される場合、実質的な変化が存在しなくなるまで、基準点は、2次元画像の顔部分を拡大縮小し、回転させ、転換し、新たな加工された画像上で反復するために使用され得る。
【0065】
ブロック706において、基準点の異なるセットが、2次元顔画像において検出され得
る。基準点は、ブロック702において使用されたSVRとは異なるSVRを使用することによって局所化され得る。ブロック708において、2次元顔画像は、ブロック706において検出された基準点を使用することによって3次元形状へ加工されて、3次元アライメントされた顔画像が生成され得る。3次元形状は、一般的な3次元モデルであり得る。3次元アフィン・カメラが登録されてもよく、3次元アフィン・カメラは、2次元顔画像の正面顔平面を3次元形状の結像面へ逆投影するために登録および使用され、それによって、3次元アライメントされた顔画像を生成する。ブロック710において、2次元顔画像のIDは、3次元アライメントされた顔画像をディープ・ニューラル・ネットワーク(「DNN」)へ提供することによって分類され得る。より詳細な議論および例は、図1図5を参照しつつ、上記に提供されている。
【0066】
様々な実施形態において、DNNは、ソーシャル・フェイス・クラシフィケーション(「SFC(Social Face Classification)」)・データセットと称される大量の写真から顔表現を学習するように構成される。表現は、LFWデータベースおよびYouTube(登録商標)フェイス(「YTF(YoutTube Faces)」)に対して適用され得る。LFWデータベースは、非制約環境における顔確認のための事実上のベンチマーク・データセットとして使用され得る。YTFデータセットは、LFWと同様にモデリングされ得るが、ビデオ・クリップに注目する。SFC内の顔IDは、人間によってラベル付けされており、典型的には、約3%の誤りを含む。ソーシャル・フェイス・フォトは、スマートフォンではなく、専門的な写真家によって通常は撮影される、LFWおよびYTF内の有名人のウェブ画像よりも、画像品質、照明、および表情において、より大きいバリエーションを有する。
【0067】
ここで使用されるようなSFCデータセットは、4,030名の人々からの440万個のラベル付けされた顔を含む。各個人は、800個から1200個の顔の画像を有し得る。各IDの顔画像の最新の5%は、省略され得る。ここで使用されるようなLFWデータセットは、5,749名の有名人の13,323個のウェブ写真から成り、これらは、10分割された6,000個の顔ペアに分けられる。性能は、「同じ」ラベルおよび「同じではない」ラベルのみがトレーニングにおいて利用可能である、制限されたプロトコル、または、トレーニング対象のIDもトレーニングにおいてアクセス可能である、制限されていないプロトコルを使用して、平均認識確度によって測定される。また、「監視無し」プロトコルは、このデータセットに対するトレーニングなしで、LFW上での性能を測定し得る。
【0068】
ここで使用されるようなYTFデータセットは、LFW内の有名人のサブセットであり得る、1,595個のテーマの3,425個のYouTube(登録商標)ビデオを収集する。これらのビデオは、5,000個のビデオ・ペアに分けられ、10分割され、ビデオ・レベル顔確認を評価するために使用され得る。
【0069】
DNNは、(0.9に設定された)モメンタムを用いる確率的勾配降下法(SGD)により、フィード・フォワード・ネットに対して標準的な誤差逆伝搬を実装することによって、SFC上でトレーニングされ得る。ミニ・バッチ・サイズは、128であり、全ての学習層について、等しい学習率0.01が確保される。学習率は、最終的な率0.00001まで手動で減少され得る。いったん確認誤りが減少しなくなると、毎回、学習率は、1桁ずつ低減され得る。各層における重みは、o=0.01とし、バイアスを0.5に設定した、平均ゼロのガウス分布から初期化され得る。ネットワークは、データ全体にわたるおおよそ15回のスイープ(エポック)の間、トレーニングされ得る。
【0070】
表1は、トレーニング・データセット・サイズおよびネットワーク深さに関する、SFC上での実施形態の分類誤りを例示する。トレーニングおよびテスト・データセット・サ
イズは、SFCにおける個人のサブセットを使用して変更された。150万個、330万個、および440万個の顔を備えるSFCについて、それぞれ1500人、3000人、および4000人の個人のサイズのサブセットが使用された。複数のDNN(例えば、DeepFace−150万、DeepFace−330万、およびDeepFace−440万)がトレーニングされた。例示されるように、大規模な顔データセットおよびディープ・アーキテクチャは、誤り率を低減する。分類誤りは、1500人の人物についての7.0%から3000人の人物を分類する場合の7.2%へと緩やかに上昇するにすぎない。これは、ネットワークの容量が3百万個のトレーニング画像の規模に対して十分に対応することができることを示す。誤り率は、440万個の画像を有する4000人の人物についての8.7%に上昇しており、ネットワークが、より多くの個人に対して無理なく拡大縮小することを示す。
【0071】
【表1】
ネットワークの深さは、図5に例示されるアーキテクチャから、1つまたは複数の層を除去することによって変更される。例えば、畳み込み層(例えば、C3)がDNN DeepFace−sub1から除去され、局所的結合層のセット(例えば、L4およびL5)がDNN DeepFace−sub2から除去され、畳み込み層(例えば、C3)ならびに複数の局所的結合層(例えば、L4およびL5)がDNN DeepFace−sub3から除去される。DNNは、440万個の顔を用いてトレーニングされる。分類誤りは、数回のエポック後に減少しなくなり、ディープ・ネットワークDeepFace−440万のレベルよりも高いレベルにとどまる。
【0072】
図8Aおよび表2は、LFWデータセットに対する、他の方法と比較した、いくつかの実施形態の受信者動作特性(「ROC」)曲線および確認確度を例示する。曲線802、804、806、808、810、812、および814は、それぞれ、人間による確認、アンサンブル確認(例えば、DeepFace−ensemble)を用いた実施形態、SFCデータセット上の3次元アライメントされた顔におけるraw RGB画素から学習されたDNNを備える実施形態(例えば、Deepface−single)、TL結合ベイジアン(TL joint Bayesian)、高次元LBP、トム対ピート(Tom−vs−Pete)、および複結合ベイジアン(combined joint
Bayesian)に対応する。DeepFace−ensembleは、3次元アライメントされたRGB入力、中間調画像および画像勾配の大きさと向き、ならびに2次元アライメントされたRGB画像を含む、異なるタイプの入力をDNNに対して供給することによってトレーニングされた複数のネットワークの距離を組み合わせる。距離は、指数の単純和CDF−kernels:KCombined:=Ksingle+Kgradient+Kalign2dと共に(C=1である)非線形SVMを使用して組み合わされる。ここで、K(x,y):=−||x−y||である。
【0073】
【表2】
監視無しプロトコルは、正規化された特徴のペアの内積を直接比較するために観察される。制限付きプロトコルは、SVMトレーニングのために分割ごとに5,400ペアのラベルを使用する。制限無しプロトコルは、トレーニング・セット内のIDに関する知識を運営者に対して提供するため、トレーニング・セットに対して追加されるべき、さらに多くのトレーニング・ペアの生成を可能にする。図8Aおよび表2に例示されるように、本明細書において説明される実施形態は、他の方法を前進させ、顔確認において人間性能に密接に近づく。
【0074】
図8Bおよび表3は、YTFデータセットに対する、他の方法と比較した、いくつかの実施形態の受信者動作特性(「ROC」)曲線および確認確度を例示する。曲線852、854、856、858、860、862は、それぞれ、SFCデータセットに対する3次元アライメントされた顔におけるraw RGB画素から学習されたDNNを備える実施形態(例えば、DeepFace−single)、VSOF+OSS、STFRD+PMML、APEM+FUSION、MBGS(平均)LBP、およびMBGS(平均)FPLBPに対応する。
【0075】
【表3】
YouTube(登録商標)ビデオ・フレームの画像品質は、主に被写体ブレまたは視聴距離に起因して、ウェブ写真の画像品質よりも一般的に低い。トレーニング・ビデオのあらゆるペアについて、各ビデオから1つを取り出すことによってフレームの五十(50)個のペアが作成され、これらは、ビデオ・トレーニング・ペアに従って、同じものとして、または同じではないものとしてラベル付けされる。重み付けされたχモデルが学習される。テスト・ペアが与えられると、フレームの百(100)個の無作為のペアが、各ビデオから1つをサンプリングすることによってサンプリングされ、学習された重み付けされた類似性の平均値を使用する。
【0076】
例示されるように、本明細書において説明される実施形態は、91.4%の確度を提供し、過去の最良の方法の誤りを50%を超えて低減する。確度は、YTFデータセット内のビデオ・ペアについての100個の誤ったラベルを訂正した後に92.5%まで改善され得る。
【0077】
ソーシャル・ネットワーキング・システム − 例示的な実装
図9は、本開示の実施形態に係る、エンハンスト・ビデオ符号化のための様々な実施形態において利用され得る例示的なシステム900のネットワーク図を例示する。システム900は、1つまたは複数のユーザ・デバイス910と、1つまたは複数の外部システム920と、ソーシャル・ネットワーキング・システム930と、ネットワーク950とを含む。一実施形態において、上述される実施形態に関連して議論されるソーシャル・ネットワーキング・サービス、プロバイダ、および/またはシステムは、ソーシャル・ネットワーキング・システム930として実装され得る。例示の目的のために、図9によって示される、システム900の実施形態は、単一の外部システム920と、単一のユーザ・デバイス910とを含む。ただし、他の実施形態において、システム900は、より多くのユーザ・デバイス910、および/または、より多くの外部システム920を含んでもよい。特定の実施形態において、ソーシャル・ネットワーキング・システム930は、ソーシャル・ネットワーク・プロバイダによって運営されるのに対して、外部システム920は、異なるエンティティによって運営され得るという点で、ソーシャル・ネットワーキング・システム930とは別個のものである。しかしながら、様々な実施形態において、ソーシャル・ネットワーキング・システム930および外部システム920は、共に動作して、ソーシャル・ネットワーキング・システム930のユーザ(またはメンバー)に対してソーシャル・ネットワーキング・サービスを提供する。この意味において、ソーシャル・ネットワーキング・システム930は、外部システム920などの他のシステムがインターネット上のユーザに対してソーシャル・ネットワーキング・サービスおよび機能性を提供するために使用し得るプラットフォームまたはバックボーンを提供する。
【0078】
ユーザ・デバイス910は、ユーザから入力を受け取り、ネットワーク950を通じてデータを送受信することができる1つまたは複数のコンピューティング・デバイスを備える。一実施形態において、ユーザ・デバイス910は、例えば、マイクロソフト・ウィンドウズ(登録商標)と互換性のあるオペレーティング・システム(OS)、Apple OS X、および/またはLinux(登録商標)ディストリビューションを実行する従来のコンピュータ・システムである。別の実施形態において、ユーザ・デバイス910は、スマートフォン、タブレット、携帯情報端末(PDA:personal digital assistant)、携帯電話等などのコンピュータ機能性を有するデバイスであってもよい。ユーザ・デバイス910は、ネットワーク950を通じて通信するように構成される。ユーザ・デバイス910は、アプリケーション、例えば、ユーザ・デバイス910のユーザがソーシャル・ネットワーキング・システム930と相互作用することを可能にするブラウザ・アプリケーションを実行することができる。別の実施形態において、ユーザ・デバイス910は、iOSおよびANDROID(登録商標)などの、ユーザ・デバイス910のネイティブ・オペレーティング・システムによって提供されるアプリケーション・プログラミング・インターフェース(API)を通じてソーシャル・ネットワーキング・システム930を相互作用する。ユーザ・デバイス910は、ネットワーク950を通じて外部システム920およびソーシャル・ネットワーキング・システム930と通信するように構成される。ネットワーク950は、有線通信システムおよび/または無線通信システムを使用する、ローカル・エリア・ネットワークおよび/または広域ネットワークの任意の組み合わせを備え得る。
【0079】
1つの実施形態において、ネットワーク950は、標準的な通信技術およびプロトコルを使用する。したがって、ネットワーク950は、イーサネット(登録商標)、702.
11、マイクロ波アクセスのための世界的相互運用性(WiMAX:worldwide
interoperability for microwave access)、3G、4G、CDMA、GSM(登録商標)、LTE、デジタル加入者線(DSL:digital subscriber line)等などの技術を使用するリンクを含み得る。同様に、ネットワーク950上で使用されるネットワーキング・プロトコルは、マルチプロトコル・ラベル・スイッチング(MPLS:multiprotocol label switching)、送信制御プロトコル/インターネット・プロトコル(TCP/IP)、ユーザ・データグラム・プロトコル(UDP)、ハイパーテキスト転送プロトコル(HTTP)、簡易メール転送プロトコル(SMTP:simple mail transfer protocol)、ファイル転送プロトコル(FTP)などを含み得る。ネットワーク950上で交換されるデータは、ハイパーテキスト・マークアップ言語(HTML)および拡張マークアップ言語(XML)を含む技術および/またはフォーマットを使用して表現され得る。また、全部または一部のリンクは、セキュア・ソケット・レイヤ(SSL)、トランスポート・レイヤ・セキュリティ(TLS)、およびインターネット・プロトコル・セキュリティ(IPsec)などの従来の暗号化技術を使用して暗号化され得る。
【0080】
1つの実施形態において、ユーザ・デバイス910は、外部システム920から、およびソーシャル・ネットワーキング・システム930から受信されるマークアップ言語文書914を、ブラウザ・アプリケーション912を使用して処理することによって、外部システム920からのコンテンツおよび/またはソーシャル・ネットワーキング・システム930からのコンテンツを表示し得る。マークアップ言語文書914は、コンテンツと、そのコンテンツのフォーマッティングまたは表示方法を記述する1つまたは複数の命令とを識別する。マークアップ言語文書914内に含まれる命令を実行することによって、ブラウザ・アプリケーション912は、マークアップ言語文書914によって記述されたフォーマットまたは表示方法を使用して、識別されたコンテンツを表示する。例えば、マークアップ言語文書914は、外部システム920およびソーシャル・ネットワーキング・システム930から得られたテキストおよび/または画像データを含む複数のフレームを有するウェブ・ページを生成および表示するための命令を含む。様々な実施形態において、マークアップ言語文書914は、拡張マークアップ言語(XML)データ、拡張ハイパーテキスト・マークアップ言語(XHTML)データ、または、他のマークアップ言語データを含むデータ・ファイルを備える。また、マークアップ言語文書914は、外部システム920とユーザ・デバイス910との間のデータ交換を容易にするためのジャバスクリプト・オブジェクト・ノーテーション(JSON:JavaScript(登録商標)Object Notation)データ、パディング付きのJSON(JSONP:JSON with padding)データ、およびジャバスクリプト・データを含み得る。ユーザ・デバイス910上のブラウザ・アプリケーション912は、ジャバスクリプト・コンパイラを使用して、マークアップ言語文書914を復号し得る。
【0081】
マークアップ言語文書914は、FLASH(商標)アプリケーションまたはUnity(商標)アプリケーション、SilverLight(商標)アプリケーション・フレームワーク等などの、アプリケーションまたはアプリケーション・フレームワークも含み、または、これらに対してもリンクし得る。
【0082】
1つの実施形態において、ユーザ・デバイス910は、ユーザ・デバイス910のユーザがソーシャル・ネットワーキング・システム930へログインしたかを示すデータを含む、1つまたは複数のクッキー916も含む。クッキー916は、ソーシャル・ネットワーキング・システム930からユーザ・デバイス910へ通信されるデータの変更を可能にし得る。
【0083】
外部システム920は、1つまたは複数のウェブ・ページ922a、922bを含む、1つまたは複数のウェブ・サーバを含む。1つまたは複数のウェブ・ページ922a、922bは、ネットワーク950を使用して、ユーザ・デバイス910へ通信される。外部システム920は、ソーシャル・ネットワーキング・システム930とは別個である。例えば、外部システム920は、第1のドメインに対して関連付けられるが、ソーシャル・ネットワーキング・システム930は、別個のソーシャル・ネットワーキング・ドメインに対して関連付けられる。外部システム920に含まれるウェブ・ページ922a、922bは、コンテンツを識別し、識別されたコンテンツのフォーマッティングおよび表示方法を特定する命令を含むマークアップ言語文書914を備える。
【0084】
ソーシャル・ネットワーキング・システム930は、複数のユーザを含み、ソーシャル・ネットワークのユーザに対して、ソーシャル・ネットワークの他のユーザと通信および相互作用するための能力を提供する、ソーシャル・ネットワークのための1つまたは複数のコンピューティング・デバイスを含む。いくつかの例において、ソーシャル・ネットワークは、グラフ、すなわち、エッジとノードとを含むデータ構造によって表現され得る。データベース、オブジェクト、クラス、メタ要素、ファイル、または任意の他のデータ構造を含むが、これらに限定されない、他のデータ構造も、ソーシャル・ネットワークを表現するために使用され得る。ソーシャル・ネットワーキング・システム930は、運営者によって運営され、管理され、または制御され得る。ソーシャル・ネットワーキング・システム930の運営者は、ソーシャル・ネットワーキング・システム930内でコンテンツを管理し、政策を規制し、使用法メトリック(usage metrics)を収集するための人間、自動化されたアプリケーション、または一連のアプリケーションであってもよい。任意のタイプの運営者が使用され得る。
【0085】
ユーザは、ソーシャル・ネットワーキング・システム930に加入し、次いで、そのユーザがつなげられることを望む、ソーシャル・ネットワーキング・システム930の任意の数の他のユーザへのつながりを追加し得る。本明細書において、「友達」という用語は、ユーザがソーシャル・ネットワーキング・システム930を通じてつながり、関連、または関係を形成した、ソーシャル・ネットワーキング・システム930の任意の他のユーザを指す。例えば、一実施形態において、ソーシャル・ネットワーキング・システム930内のユーザが、ソーシャル・グラフ内のノードとして表現される場合、「友達」という用語は、2つのユーザ・ノード間に形成され、かつ、2つのユーザ・ノードを直接接続するエッジを指し得る。
【0086】
つながりは、ユーザによって明示的に追加されても、または、ユーザの共通の特性(例えば、同じ教育機関の卒業生であるユーザ)に基づいて、ソーシャル・ネットワーキング・システム930によって自動的に作成されてもよい。例えば、第1のユーザは、友達になりたい特定の他のユーザを具体的に選択する。ソーシャル・ネットワーキング・システム930におけるつながりは、通常は双方向であるが、双方向である必要はなく、そのため、「ユーザ」および「友達」という用語は、枠組みに依存する。ソーシャル・ネットワーキング・システム930のユーザ間のつながりは、通常は、双務的(「二方向」)または「相互的」であるが、つながりは、片務的、または「一方向」であってもよい。例えば、ボブおよびジョーの両者が、ソーシャル・ネットワーキング・システム930のユーザであり、互いにつながっている場合、ボブおよびジョーは、互いのつながりである。他方で、ボブは、ジョーによってソーシャル・ネットワーキング・システム930へ通信されたデータを見るためにジョーとつながることを欲するが、ジョーは、相互的なつながりを形成することを欲しない場合、片務的なつながりが確立され得る。ユーザ間のつながりは、直接的なつながりであり得る。ただし、ソーシャル・ネットワーキング・システム930のいくつかの実施形態は、つながりが、1つまたは複数のつながりのレベルまたは分離度を通じた間接的なものとなることを可能にする。
【0087】
ユーザ間のつながりを確立および維持し、ユーザ間の相互作用を可能にすることに加えて、ソーシャル・ネットワーキング・システム930は、ソーシャル・ネットワーキング・システム930によってサポートされる様々なタイプのアイテムに対してアクションを行うための能力をユーザに対して提供する。こうしたアイテムは、ソーシャル・ネットワーキング・システム930のユーザが所属し得るグループまたはネットワーク(すなわち、人々、エンティティ、および概念のソーシャル・ネットワーク)、ユーザが興味を持ち得るイベントまたはカレンダー入力、ユーザがソーシャル・ネットワーキング・システム930を通じて使用し得るコンピュータベースのアプリケーション、ソーシャル・ネットワーキング・システム930によって提供されるサービスを通じてまたはソーシャル・ネットワーキング・システム930を通じてユーザがアイテムを購入または販売することを可能にする取引、ならびにユーザがソーシャル・ネットワーキング・システム930内外で実行し得る広告との相互作用を含み得る。これらは、ユーザがソーシャル・ネットワーキング・システム930上で作用を与え得るアイテムのわずかな例にすぎず、多くの他の例が可能である。ユーザは、ソーシャル・ネットワーキング・システム930において、または、ソーシャル・ネットワーキング・システム930とは別個の外部システム920もしくはネットワーク950を通じてソーシャル・ネットワーキング・システム930に対して結合される外部システム920において表現されることが可能なありとあらゆるものと相互作用し得る。
【0088】
ソーシャル・ネットワーキング・システム930は、多様なエンティティとリンクすることも可能である。例えば、ソーシャル・ネットワーキング・システム930は、ユーザが互いに相互作用すること、および、API、ウェブ・サービス、または他の通信チャネルを通じて外部システム920または他のエンティティと相互作用することを可能にする。ソーシャル・ネットワーキング・システム930は、複数のエッジによって相互接続された複数のノードを備える「ソーシャル・グラフ」を生成および維持する。ソーシャル・グラフ内の各ノードは、別のノードに対して作用を与え得るエンティティおよび/または別のノードによって作用を与えられ得るエンティティを表現し得る。ソーシャル・グラフは、様々なタイプのノードを含み得る。ノードタイプの例は、ユーザ、非人間エンティティ、コンテンツ・アイテム、ウェブ・ページ、グループ、アクティビティ、メッセージ、概念、およびソーシャル・ネットワーキング・システム930内のオブジェクトによって表現され得る任意の他のものを含む。ソーシャル・グラフ内の2つのノード間のエッジは、ノード関係から、またはノードのうちの一方によって他方に対して実行されたアクションから生じ得る、2つのノード間の特定の種類のつながり、または関連を表現し得る。いくつかの場合において、ノード間のエッジは、重み付けされ得る。エッジの重みは、ノード間のつながりまたは関連の強度などの、そのエッジに対して関連付けられた属性を表現し得る。異なるタイプのエッジが、異なる重みと共に提供され得る。例えば、あるユーザが別のユーザに対して「いいね」を表明する際に作成されるエッジには、ある重みが与えられ得る一方で、ユーザが別のユーザと友達になる際に作成されるエッジには、異なる重みが与えられ得る。
【0089】
例として、第1のユーザが、第2のユーザを友達として識別する場合、第1のユーザを表現するノードと第2のユーザを表現する第2のノードとを接続する、ソーシャル・グラフ内のエッジが生成される。様々なノードが互いに関連し、または相互作用するにつれて、ソーシャル・ネットワーキング・システム930は、様々なノードを接続するエッジを変更して、関係および相互作用を反映する。
【0090】
ソーシャル・ネットワーキング・システム930は、ユーザによるソーシャル・ネットワーキング・システム930との相互作用を高める、ユーザにより生成されたコンテンツも含む。ユーザにより生成されたコンテンツは、ユーザがソーシャル・ネットワーキング
・システム930に対して追加し、アップロードし、送信し、または「投稿し」得るあらゆるものを含み得る。例えば、ユーザは、ユーザ・デバイス910からソーシャル・ネットワーキング・システム930への投稿を通信する。投稿は、ステータス・アップデートもしくは他の文字情報などのデータ、位置情報、写真などの画像、ビデオ、リンク、音楽、または、他の同様のデータおよび/もしくはメディアを含み得る。コンテンツも、第三者によってソーシャル・ネットワーキング・システム930に対して追加され得る。コンテンツ「アイテム」は、ソーシャル・ネットワーキング・システム930においてオブジェクトとして表現される。このようにして、ソーシャル・ネットワーキング・システム930のユーザは、様々な通信チャネルを通じて様々なタイプのテキストおよびコンテンツ・アイテムを投稿することによって、互いに通信することを促される。そのような通信は、ユーザ同士の相互作用を増加させ、ユーザがソーシャル・ネットワーキング・システム930と相互作用する頻度を増加させる。
【0091】
ソーシャル・ネットワーキング・システム930は、ウェブ・サーバ932と、API要求サーバ934と、ユーザ・プロファイル・ストア936と、つながりストア938と、動作ロガー940と、アクティビティ・ログ942と、認証サーバ944とを含む。本発明の一実施形態において、ソーシャル・ネットワーキング・システム930は、様々なアプリケーションのための追加的な構成要素、より少ない構成要素、または異なる構成要素を含み得る。ネットワーク・インターフェース、セキュリティ機構、負荷分散装置、フェイルオーバ・サーバ、管理およびネットワーク操作コンソールなどの他の構成要素は、本システムの詳細を曖昧にしないように、図示されていない。
【0092】
ユーザ・プロファイル・ストア936は、ユーザによって申告され、またはソーシャル・ネットワーキング・システム930によって推測された職歴、学歴、趣味または嗜好、住所などの経歴的情報、人口学的情報、および他のタイプの記述的情報を含む、ユーザ・アカウントに関する情報を維持する。この情報は、各ユーザが一意に識別されるように、ユーザ・プロファイル・ストア936内に記憶される。ソーシャル・ネットワーキング・システム930は、異なるユーザ間の1つまたは複数のつながりを記述するデータも、つながりストア938内に記憶する。つながり情報は、同様または共通の職歴、グループ・メンバーシップ、趣味、または学歴を有するユーザを示し得る。また、ソーシャル・ネットワーキング・システム930は、ユーザの他のユーザとの関係をユーザが特定することを可能にする、異なるユーザ間におけるユーザによって定義されたつながりを含む。例えば、ユーザによって定義されたつながりは、友達、同僚、パートナー等などの、ユーザの実生活の関係と並行する、他のユーザとの関係をユーザが生成することを可能にする。ユーザは、予め定義されたタイプのつながりから選択しても、またはユーザ自身のつながりタイプを必要に応じて定義してもよい。非人間エンティティ、バケット、クラスタ・センタ、画像、興味、ページ、外部システム、概念等などの、ソーシャル・ネットワーキング・システム930内の他のノードとのつながりも、つながりストア938内に記憶される。
【0093】
ソーシャル・ネットワーキング・システム930は、ユーザが相互作用し得るオブジェクトに関するデータを維持する。このデータを維持するために、ユーザ・プロファイル・ストア936およびつながりストア938は、ソーシャル・ネットワーキング・システム930によって維持されるオブジェクトの対応するタイプのインスタンスを記憶する。各オブジェクト・タイプは、オブジェクトのタイプに適した情報を記憶するのに適した情報フィールドを有する。例えば、ユーザ・プロファイル・ストア936は、ユーザのアカウントおよびユーザのアカウントに関連した情報を記述するのに適したフィールドを有するデータ構造を含む。特定のタイプの新たなオブジェクトが作成される場合、ソーシャル・ネットワーキング・システム930は、対応するタイプの新たなデータ構造を初期化し、その新たなデータ構造に対して一意のオブジェクト識別子を割り当て、必要に応じて、そ
のオブジェクトに対してデータを追加することを開始する。これは、例えば、ユーザがソーシャル・ネットワーキング・システム930のユーザになった場合に発生し、ソーシャル・ネットワーキング・システム930は、ユーザ・プロファイル・ストア936内にユーザ・プロファイルの新たなインスタンスを生成し、ユーザ・アカウントに対して一意の識別子を割り当て、ユーザによって提供される情報をユーザ・アカウントのフィールドへ投入し始める。
【0094】
つながりストア938は、他のユーザに対するユーザのつながり、外部システム920に対するつながり、または他のエンティティに対するつながりを記述するのに適したデータ構造を含む。つながりストア938は、つながりタイプもユーザのつながりと関連付け得る。つながりタイプは、ユーザのプライバシー設定と共に使用されて、ユーザに関する情報に対するアクセスを規制し得る。本発明の一実施形態において、ユーザ・プロファイル・ストア936およびつながりストア938は、連合データベースとして実装され得る。
【0095】
つながりストア938、ユーザ・プロファイル・ストア936、およびアクティビティ・ログ942内に記憶されるデータは、ノードを使用して、ノードを接続する様々なオブジェクトおよびエッジを識別して、異なるオブジェクト間の関係を識別するソーシャル・グラフをソーシャル・ネットワーキング・システム930が生成することを可能にする。例えば、第1のユーザが、ソーシャル・ネットワーキング・システム930内で第2のユーザとのつながりを確立する場合、ユーザ・プロファイル・ストア936からの第1のユーザおよび第2のユーザのユーザ・アカウントは、ソーシャル・グラフ内のノードとして動作し得る。つながりストア938によって記憶される、第1のユーザと第2のユーザとの間のつながりは、第1のユーザおよび第2のユーザに対して関連付けられるノード間のエッジである。この例を続けると、第2のユーザは、次いで、第1のユーザに対して、ソーシャル・ネットワーキング・システム930内でメッセージを送信し得る。メッセージを送信するアクションは、第1のユーザおよび第2のユーザを表現する、ソーシャル・グラフ内の2つのノード間の別のエッジであり、メッセージを送信するアクションは、記憶され得る。また、メッセージ自体が、第1のユーザを表現するノードおよび第2のユーザを表現するノードに対して接続される別のノードとして、ソーシャル・グラフにおいて識別され、ソーシャル・グラフに含まれ得る。
【0096】
別の例において、第1のユーザは、ソーシャル・ネットワーキング・システム930によって維持される画像において(または、代替的に、ソーシャル・ネットワーキング・システム930の外部の別のシステムによって維持される画像において)第2のユーザをタグ付けし得る。画像は、それ自体がソーシャル・ネットワーキング・システム930内のノードとして表現され得る。このタグ付けアクションは、ユーザの各々と画像との間にエッジを作成するだけでなく、第1のユーザと第2のユーザとの間のエッジも作成し得る。画像もソーシャル・グラフ内のノードである。また別の例において、ユーザが、イベントへ参加することを確かめる場合、そのユーザおよびそのイベントは、ユーザ・プロファイル・ストア936から取得されるノードであり、そのイベントへの参加は、アクティビティ・ログ942から得られ得るノード間のエッジである。ソーシャル・グラフを生成および維持することによって、ソーシャル・ネットワーキング・システム930は、多くの異なるタイプのオブジェクトを記述するデータ、ならびに、それらのオブジェクト間の相互作用およびつながりを含み、社会的に関連する情報の豊富なソースを提供する。
【0097】
ウェブ・サーバ932は、ソーシャル・ネットワーキング・システム930を、ネットワーク950を通じて、1つもしくは複数のユーザ・デバイス910および/または1つもしくは複数の外部システム920に対してリンクする。ウェブ・サーバ932は、ウェブ・ページ、およびJava(登録商標)、JavaScript、Flash、XML
などの他のウェブ関連コンテンツを供給する。ウェブ・サーバ932は、メール・サーバを含み、または、ソーシャル・ネットワーキング・システム930と1つもしくは複数のユーザ・デバイス910との間のメッセージを受信およびルーティングするための他のメッセージング機能性を含み得る。メッセージは、インスタント・メッセージ、キュー・メッセージ(例えば、電子メール)、テキストおよびSMSメッセージ、または任意の他の適切なメッセージング・フォーマットであり得る。
【0098】
API要求サーバ934は、1つまたは複数の外部システム920およびユーザ・デバイス910が、1つまたは複数のAPI関数を呼び出すことによって、ソーシャル・ネットワーキング・システム930からのアクセス情報を呼び出すことを可能にする。API要求サーバ934は、外部システム920が、APIを呼び出すことによって、ソーシャル・ネットワーキング・システム930に対して情報を送信することも可能にし得る。外部システム920は、1つの実施形態において、ネットワーク950を通じてソーシャル・ネットワーキング・システム930へAPI要求を送信し、API要求サーバ934は、そのAPI要求を受信する。API要求サーバ934は、API要求に対して関連付けられたAPIを呼び出すことによって要求を処理して、適当な応答を生成する。API要求サーバ934は、その適当な応答を、ネットワーク950を通じて外部システム920へ通信する。例えば、API要求に応答して、API要求サーバ934は、外部システム920に対してログインしたユーザのつながりなどの、ユーザに対して関連付けられたデータを収集し、収集されたデータを外部システム920へ通信する。別の実施形態において、ユーザ・デバイス910は、外部システム920と同じ手法で、APIを通じてソーシャル・ネットワーキング・システム930と通信する。
【0099】
アクション・ロガー940は、ソーシャル・ネットワーキング・システム930内での、および/またはソーシャル・ネットワーキング・システム930外でのユーザ・アクションに関する通信をウェブ・サーバ932から受信することが可能である。アクション・ロガー940は、ユーザ・アクションに関する情報をアクティビティ・ログ942へ投入し、ソーシャル・ネットワーキング・システム930の内部で、およびソーシャル・ネットワーキング・システム930の外部で、そのユーザによって行われた様々なアクションをソーシャル・ネットワーキング・システム930が発見することを可能にする。特定のユーザが、ソーシャル・ネットワーキング・システム930上の別のノードに関して行う任意のアクションは、アクティビティ・ログ942内または同様のデータベースもしくは他のデータ・レポジトリ内で維持される情報を通じて、各ユーザのアカウントに対して関連付けられ得る。識別および記憶される、ソーシャル・ネットワーキング・システム930内でユーザによって行われるアクションの例は、例えば、別のユーザに対するつながりを追加すること、別のユーザへメッセージを送信すること、別のユーザからのメッセージを読むこと、別のユーザに対して関連付けられるコンテンツを視聴すること、別のユーザによって投稿されたイベントに参加すること、画像を投稿すること、画像を投稿しようと試行すること、または、別のユーザもしくは別のオブジェクトと相互作用する他のアクションを含み得る。ユーザが、ソーシャル・ネットワーキング・システム930内でアクションを行う場合、そのアクションは、アクティビティ・ログ942内に記録される。一実施形態において、ソーシャル・ネットワーキング・システム930は、アクティビティ・ログ942をエントリのデータベースとして維持する。アクションが、ソーシャル・ネットワーキング・システム930内で行われる場合、そのアクションについてのエントリが、アクティビティ・ログ942に対して追加される。アクティビティ・ログ942は、アクション・ログと称され得る。
【0100】
また、ユーザ・アクションは、ソーシャル・ネットワーキング・システム930とは別個の外部システム920などの、ソーシャル・ネットワーキング・システム930の外部のエンティティ内で発生する概念およびアクションに対して関連付けられ得る。例えば、
アクション・ロガー940は、ユーザによる外部システム920との相互作用を記述するデータを、ウェブ・サーバ932から受信し得る。この例において、外部システム920は、ソーシャル・グラフにおける構造化されたアクションおよびオブジェクトに従って、ユーザによる相互作用を報告する。
【0101】
ユーザが外部システム920と相互作用するアクションの他の例は、ユーザが外部システム920もしくは別のエンティティにおいて興味を表現すること、外部システム920もしくは外部システム920内のウェブ・ページ922aと議論するソーシャル・ネットワーキング・システム930に対してユーザがコメントを投稿すること、ユーザがソーシャル・ネットワーキング・システム930に対してユニフォーム・リソース・ロケータ(URL)もしくは外部システム920に対して関連付けられる他の識別子を投稿すること、ユーザが外部システム920に対して関連付けられるイベントへ参加すること、または、外部システム920に関連する、ユーザによる任意の他のアクションを含む。したがって、アクティビティ・ログ942は、ソーシャル・ネットワーキング・システム930のユーザと、ソーシャル・ネットワーキング・システム930とは別個の外部システム920との間の相互作用を記述するアクションを含み得る。
【0102】
認証サーバ944は、ソーシャル・ネットワーキング・システム930のユーザの1つまたは複数のプライバシー設定を強化する。ユーザのプライバシー設定は、ユーザに対して関連付けられる特定の情報がどのように共有され得るかを決定する。プライバシー設定は、ユーザに対して関連付けられる特定の情報の仕様、および情報が共有され得る1つまたは複数のエンティティの仕様を備える。情報が共有され得るエンティティの例は、他のユーザ、アプリケーション、外部システム920、または、その情報に潜在的にアクセスし得る任意のエンティティを含み得る。ユーザによって共有され得る情報は、プロフィール写真などのユーザ・アカウント情報、ユーザに対して関連付けられる電話番号、ユーザのつながり、つながりを追加すること、ユーザ・プロフィール情報を変更することなどのユーザによって行われるアクション等を備える。
【0103】
プライバシー設定仕様は、異なるレベルの粒度で提供され得る。例えば、プライバシー設定は、他のユーザと共有されるべき具体的な情報を識別し得る。プライバシー設定は、職場電話番号、または、プロフィール写真、自宅電話番号、およびステータスを含む個人情報などの関連情報の具体的なセットを識別する。代替的に、プライバシー設定は、ユーザに対して関連付けられる全ての情報に対して適用されてもよい。特定の情報にアクセスすることができるエンティティのセットの仕様も、様々なレベルの粒度で特定され得る。情報が共有され得るエンティティの様々なセットは、例えば、ユーザの全ての友達、友達の全ての友達、全てのアプリケーション、または全ての外部システム920を含み得る。1つの実施形態は、エンティティのセットの仕様がエンティティの一覧表を備えることを可能にする。例えば、ユーザは、一定の情報に対してアクセスすることを許可される外部システム920のリストを提供し得る。別の実施形態は、情報に対してアクセスすることを許可されない例外と共にエンティティのセットを仕様が備えることを可能にする。例えば、ユーザは、全ての外部システム920がユーザの職場情報に対してアクセスすることを許可し得るが、職場情報に対してアクセスすることを許可されない外部システム920のリストを特定し得る。一定の実施形態は、一定の情報に対してアクセスすることを許可されない例外のリストを「ブロック・リスト」と呼ぶ。ユーザによって特定されるブロック・リストに所属する外部システム920は、プライバシー設定において特定される情報に対してアクセスすることをブロックされる。情報の仕様の粒度と、情報が共有されるエンティティの仕様の粒度との様々な組み合わせが可能である。例えば、全ての個人情報は、友達と共有され得るのに対して、全ての職場情報は、友達の友達と共有され得る。
【0104】
認証サーバ944は、ユーザに対して関連付けられる一定の情報がユーザの友達、外部
システム920、ならびに/または他のアプリケーションおよびエンティティによってアクセスされ得るかを決定するためのロジックを含む。外部システム920は、ユーザの職場電話番号などの、ユーザのより個人的かつ機密的な情報に対してアクセスするために、認証サーバ944からの認証を必要とし得る。ユーザのプライバシー設定に基づいて、認証サーバ944は、別のユーザ、外部システム920、アプリケーション、または別のエンティティが、ユーザによって行われるアクションに関する情報を含む、ユーザに対して関連付けられる情報に対してアクセスすることを許可されているかを決定する。
【0105】
ソーシャル・ネットワーキング・システム930は、顔表現モジュール946を含み得る。いくつかの実施形態において、顔表現変換モジュール946は、図1の顔表現モジュール102として実装され得る。顔表現変換モジュール946は、本開示の実施形態に従って、ディープ・ニューラル・ネットワークを採用することによって、顔画像をアライメントし、顔画像を分類し、および/または顔画像を確認するように構成され得る。
【0106】
ハードウェア実装
前述のプロセスおよび特徴は、多種多様なマシンおよびコンピュータ・システム・アーキテクチャによって、ならびに、多種多様なネットワークおよびコンピューティング環境において実装され得る。図10は、本発明の一実施形態に係る、本明細書において説明される実施形態のうちの1つまたは複数を実装するために使用され得るコンピュータ・システム1000の例を例示する。コンピュータ・システム1000は、コンピュータ・システム1000に対して、本明細書において議論されるプロセスおよび特徴を実行させるための命令のセットを含む。コンピュータ・システム1000は、他のマシンへ接続され(例えば、ネットワーク化され)得る。ネットワーク化された配置において、コンピュータ・システム1000は、クライアント/サーバ・ネットワーク環境内のサーバ・マシンもしくはクライアント・マシンの資格において動作し、または、ピア・ツー・ピア(もしくは分散)・ネットワーク環境内のピア・マシンとして動作し得る。本発明の一実施形態において、コンピュータ・システム1000は、ソーシャル・ネットワーキング・システム1030、ユーザ・デバイス910、および外部システム1020、または、これらの構成要素であり得る。本発明の一実施形態において、コンピュータ・システム1000は、ソーシャル・ネットワーキング・システム1030の全部または一部を構成する多くのサーバのうちの1つのサーバであり得る。
【0107】
コンピュータ・システム1000は、プロセッサ1002と、キャッシュ1004と、コンピュータ読取可能な媒体上に記憶され、本明細書において説明されるプロセスおよび特徴へ向けられた、1つまたは複数の実行可能なモジュールおよびドライバとを含む。また、コンピュータ・システム1000は、高性能入出力(I/O)バス1006と、標準I/Oバス1008とを含む。ホスト・ブリッジ1010は、プロセッサ1002を高性能I/Oバス1006に対して結合する一方で、I/Oバス・ブリッジ1012は、2つのバス1006および1008を互いに結合する。システム・メモリ1014および1つまたは複数のネットワーク・インターフェース1016は、高性能I/Oバス1006へ結合される。コンピュータ・システム1000は、ビデオ・メモリと、ビデオ・メモリに対して結合される表示デバイスとをさらに含んでもよい(図示せず)。マス・ストレージ1018およびI/Oポート1020は、標準I/Oバス1008へ結合される。コンピュータ・システム1000は、標準I/Oバス1008に対して結合される、キーボードおよびポインティング・デバイス、表示デバイス、または他の入出力デバイス(図示せず)を随意的に含んでもよい。全体的に、これらの要素は、カリフォルニア州サンタ・クララのインテル・コーポレーション社(Intel Corporation)によって製造されるx86互換性のあるプロセッサ、カリフォルニア州サニーヴェイルのアドバンスト・マイクロ・デバイス社(AMD:Advanced Micro Devices,Inc)によって製造されるx86互換性のあるプロセッサ、および任意の他の適切なプ
ロセッサを含むが、これらに限定されない、広範なカテゴリのコンピュータ・ハードウェア・システムを表現することが意図される。
【0108】
オペレーティング・システムは、ソフトウェア・アプリケーション(図示せず)へのデータの入力およびソフトウェア・アプリケーションからのデータの出力を含む、コンピュータ・システム1000の動作を管理および制御する。オペレーティング・システムは、システム上で実行されているソフトウェア・アプリケーションと、システムのハードウェア構成要素との間のインターフェースを提供する。任意の適切なオペレーティング・システム、例えば、LINUXオペレーティング・システム、カリフォルニア州クパチーノのアップル・コンピュータ社(Apple Computer,Inc.)から市販されているアップル・マッキントッシュ・オペレーティング・システム、UNIX(登録商標)オペレーティング・システム、マイクロソフト(登録商標)ウィンドウズ(登録商標)オペレーティング・システム、BSDオペレーティング・システム等などが使用され得る。他の実装も可能である。
【0109】
コンピュータ・システム1000の要素は、下記においてより詳細に説明される。具体的には、ネットワーク・インターフェース1016は、コンピュータ・システム1000と、幅広いネットワークのうちの任意のもの、例えば、イーサネット(例えば、IEEE802.3)・ネットワーク、バックプレーン等などとの間の通信を提供する。マス・ストレージ1018は、上記に識別されたそれぞれのコンピューティング・システムによって実装される上述されたプロセスおよび特徴を実行するためのデータおよびプログラミング命令のための永続的なストレージを提供するのに対して、システム・メモリ1014(例えば、DRAM)は、プロセッサ1002によって実行される場合のデータおよびプログラミング命令のための一時的なストレージを提供する。I/Oポート1020は、コンピュータ・システム1000へ結合され得る付加的な周辺デバイス間の通信を提供する、1つまたは複数のシリアル通信ポートおよび/またはパラレル通信ポートであり得る。
【0110】
コンピュータ・システム1000は、多様なシステム・アーキテクチャを含むことができ、コンピュータ・システム1000の様々な構成要素は、再配置されてもよい。例えば、キャッシュ1004は、プロセッサ1002と共にチップ上に実装されてもよい。代替的に、キャッシュ1004およびプロセッサ1002は、「プロセッサ・モジュール」としてまとめられて、プロセッサ1002が「プロセッサ・コア」と称されてもよい。さらに、本発明の一定の実施形態は、上記構成要素の全部を必要としなくても、または、含まなくてもよい。例えば、標準I/Oバス1008へ結合される周辺デバイスは、高性能I/Oバス1006へ結合されてもよい。また、いくつかの実施形態において、単一のバスのみが存在して、コンピュータ・システム1000の構成要素が、その単一のバスへ結合されてもよい。さらに、コンピュータ・システム1000は、付加的なプロセッサ、記憶デバイス、またはメモリなどの付加的な構成要素を含んでもよい。
【0111】
一般に、本明細書において説明されるプロセスおよび特徴は、オペレーティング・システムの一部もしくは特定のアプリケーション、構成要素、プログラム、オブジェクト、モジュール、または「プログラム」と称される一連の命令として実装され得る。例えば、1つまたは複数のプログラムは、本明細書において説明される具体的なプロセスを実行するために使用され得る。プログラムは、典型的には、1つまたは複数のプロセッサによって読み出され、実行される場合に、コンピュータ・システム1000に対して、本明細書において説明されるプロセスおよび特徴を実行するための動作を実行させる、1つまたは複数の命令を、コンピュータ・システム1000内の様々なメモリおよび記憶デバイスにおいて備える。本明細書において説明されるプロセスおよび特徴は、ソフトウェア、ファームウェア、ハードウェア(例えば、特定用途向け集積回路)、または、これらの任意の組み合わせにおいて実装され得る。
【0112】
1つの実装において、本明細書において説明されるプロセスおよび特徴は、分散コンピューティング環境において個々にまたはまとめて、コンピュータ・システム1000によって実行される一連の実行可能なモジュールとして実装される。前述のモジュールは、ハードウェア、コンピュータ読取可能な媒体(もしくはマシン読取可能な媒体)上に記憶される実行可能なモジュール、または、両者の組み合わせによって実現され得る。例えば、モジュールは、プロセッサ1002などの、ハードウェア・システム内のプロセッサによって実行されるべき複数の命令または一連の命令を備え得る。まず、一連の命令は、マス・ストレージ1018などの記憶デバイス上に記憶され得る。ただし、一連の命令は、任意の適切なコンピュータ読取可能な記憶媒体上に記憶されてもよい。さらに、一連の命令は、局所的に記憶される必要はなく、ネットワーク上のサーバなどの遠隔記憶デバイスからネットワーク・インターフェース1016を通じて受信されてもよい。命令は、マス・ストレージ1018などの記憶デバイスからシステム・メモリ1014内へコピーされ、次いで、プロセッサ1002によってアクセスされ、実行される。様々な実施形態において、1つまたは複数のモジュールは、並列処理環境内の複数のサーバなどの、1つまたは複数の位置における、1つまたは複数のプロセッサによって実行され得る。
【0113】
コンピュータ読取可能な媒体の例は、揮発性メモリ・デバイスおよび不揮発性メモリ・デバイスなどの記録可能なタイプの媒体、ソリッド・ステート・メモリ、フロッピー(登録商標)ディスクおよび他の取り外し可能なディスク、ハード・ディスク・ドライブ、磁気媒体、光ディスク(例えば、コンパクト・ディスク読取専用メモリ(CD ROMS)、デジタル多用途ディスク(DVD))、他の同様の非一時的で(もしくは一時的で)、有形の(もしくは無形の)記憶媒体、または、本明細書において説明されるプロセスおよび特徴のうちの任意の1つもしくは複数を実行すべく、コンピュータ・システム1000による実行のために一連の命令を記憶し、符号化し、もしくは担持するのに適切な任意のタイプの媒体を含むが、これらに限定されない。
【0114】
説明の目的のために、多くの具体的な詳細が、本説明の完全な理解を提供するために述べられている。しかしながら、こうした具体的な詳細なしに本開示の実施形態が実施され得ることは、当業者には明らかであろう。いくつかの例において、モジュール、構造、プロセス、特徴、およびデバイスは、本説明を曖昧にすることを回避するために、ブロック図の形式で示される。他の例において、機能ブロック図およびフロー図は、データおよび論理フローを表現するために示される。ブロック図およびフロー図の構成要素(例えば、モジュール、ブロック、構造、デバイス、特徴等)は、本明細書において明示的に説明および図示されたような手法以外の手法で、様々に組み合わされ、分離され、除去され、順序を並べ替えられ、置換されてもよい。
【0115】
この明細書における、「1つの実施形態」、「一実施形態」、「他の実施形態」、「一連の実施形態」、「いくつかの実施形態」、「様々な実施形態」等への言及は、実施形態に関連して説明される特定の特徴、設計、構造、または特性が本開示の少なくとも1つの実施形態に含まれることを意味する。本明細書内の様々な部分における「1つの実施形態において」または「一実施形態において」という句の出現は、必ずしも全て同じ実施形態に言及するものとは限らず、別個の実施形態または代替的な実施形態は、他の実施形態と相互排他的ではない。さらに、「実施形態」等への明示的な言及が存在しても存在しなくても、様々な特徴が説明され、様々な特徴は、いくつかの実施形態において様々に組み合わされ、含まれ得るが、他の実施形態においては様々に省略され得る。同様に、いくつかの実施形態にとっては選好事項または要件であり得るが、他の実施形態にとっては選好事項または要件ではない、様々な特徴が説明される。
【0116】
本明細書において使用される文言は、主に、読みやすさと教育的目的のために選択され
ており、発明の主題の輪郭を描くため、または境界線を描くために選択されたものではない。そのため、本発明の範囲は、この詳細な説明によって限定されるのではなく、むしろ、本明細書に基づく出願について発行される任意の請求項によって限定されることが意図される。したがって、本発明の実施形態の開示は、本発明の範囲の例示とはなるが、限定とはならないことが意図され、本発明の範囲は、下記の特許請求の範囲において述べられる。
図1
図2
図3A
図3B
図3C
図3D
図3E
図3F
図3G
図3H
図4
図5
図6
図7
図8A
図8B
図9
図10