(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-07
(45)【発行日】2022-01-12
(54)【発明の名称】個人化されたエモーティコンおよびリップシンクビデオを顔認識に基づいて生成するためのシステムおよび方法
(51)【国際特許分類】
G06T 7/00 20170101AFI20220104BHJP
G06T 1/00 20060101ALI20220104BHJP
G06T 13/40 20110101ALI20220104BHJP
【FI】
G06T7/00 660A
G06T1/00 340A
G06T13/40
(21)【出願番号】P 2020532677
(86)(22)【出願日】2018-01-02
(86)【国際出願番号】 US2018012112
(87)【国際公開番号】W WO2019133029
(87)【国際公開日】2019-07-04
【審査請求日】2020-11-06
(32)【優先日】2017-12-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508178054
【氏名又は名称】メタ プラットフォームズ, インク.
(74)【代理人】
【識別番号】110002974
【氏名又は名称】特許業務法人World IP
(72)【発明者】
【氏名】ドゥ ラ トッレ, フェルナンド
(72)【発明者】
【氏名】ファン, ドン
(72)【発明者】
【氏名】ビセンテ カラスコ, フランシスコ
【審査官】岡本 俊威
(56)【参考文献】
【文献】特開2014-211719(JP,A)
【文献】米国特許出願公開第2014/0153832(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/00
G06T 7/00
G06T 13/40
(57)【特許請求の範囲】
【請求項1】
コンピューティングシステムによって、ニュートラル表情または位置をもつ第1のユーザの顔を示す前記第1のユーザの第1の画像を取得することと、
前記コンピューティングシステムによって、ニュートラル表情または位置をもつ第2のユーザの顔を示す前記第2のユーザの第1の画像を識別することであって、前記第2のユーザの前記顔が、しきい値の満足に基づいて前記第1のユーザの前記顔と同様である、第2のユーザの第1の画像を識別することと、
前記ニュートラル表情または位置とは異なる表情または位置をもつ前記第2のユーザの前記顔を示す前記第2のユーザの第2の画像に基づいて、前記コンピューティングシステムによって、前記ニュートラル表情または位置とは異なる表情をもつ前記第1のユーザの前記顔を示す前記第1のユーザの第2の画像を生成することと
を含む、コンピュータ実装方法。
【請求項2】
前記第2のユーザの前記第1の画像を識別することが、前記第1のユーザの前記第1の画像中の前記第1のユーザの顔ポイントと、前記第2のユーザの前記第1の画像中の前記第2のユーザの顔ポイントとを比較することを含み、前記第1のユーザの前記顔ポイントと前記第2のユーザの前記顔ポイントとの間の一致の程度が前記しきい値を満足する、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記第1のユーザの前記第2の画像を生成することが、前記第1のユーザの前記第1の画像中の前記第1のユーザの前記顔ポイントを、前記第2のユーザの前記第2の画像中の前記第2のユーザの前記顔ポイントにマッピングすることを含む、請求項2に記載のコンピュータ実装方法。
【請求項4】
前記第1のユーザの前記第2の画像に基づいて前記第1のユーザのための個人化されたエモーティコンを生成することをさらに含む、請求項3に記載のコンピュータ実装方法。
【請求項5】
前記第2のユーザの前記第1の画像が、歌を歌っている前記第2のユーザのビデオ中に含まれ、前記方法が、前記第1のユーザの前記第2の画像に基づいて前記第1のユーザのリップシンクビデオを生成することをさらに含む、請求項3に記載のコンピュータ実装方法。
【請求項6】
前記第2のユーザの前記第1の画像を識別することが、前記第1のユーザの前記第1の画像中の少なくとも1つの領域のテクスチャと、前記第2のユーザの前記第1の画像中の対応する領域のテクスチャとを比較することを含み、前記第1のユーザの前記第1の画像中の前記少なくとも1つの領域の前記テクスチャと、前記第2のユーザの前記第1の画像中の前記少なくとも1つの領域の前記テクスチャとの間の一致の程度がしきい値を満足する、請求項3に記載のコンピュータ実装方法。
【請求項7】
前記第2のユーザの前記第1の画像中の前記少なくとも1つの領域の一部分が、前記第1のユーザの前記第2の画像を生成するためにコピーされる、請求項6に記載のコンピュータ実装方法。
【請求項8】
前記第1のユーザの前記第1の画像中の前記少なくとも1つの領域の前記テクスチャと、前記第2のユーザの前記第1の画像中の前記対応する領域の前記テクスチャとを比較することが、前記第1のユーザの前記第1の画像中の前記少なくとも1つの領域のテクスチャ特徴と、前記第2のユーザの前記第1の画像中の前記少なくとも1つの領域のテクスチャ特徴とを決定することを含む、請求項6に記載のコンピュータ実装方法。
【請求項9】
画像が値の行列として表され、前記画像のテクスチャ特徴が、前記値の平均または前記値のメジアンのうちの1つまたは複数を含む、請求項8に記載のコンピュータ実装方法。
【請求項10】
前記ニュートラル表情とは異なる前記表情が、幸せの表情、悲しみの表情、怒りの表情、驚きの表情、泣きの表情、微笑みの表情、笑いの表情、または不機嫌の表情のうちの1つまたは複数を含む、請求項1に記載のコンピュータ実装方法。
【請求項11】
少なくとも1つのハードウェアプロセッサと、
命令を記憶したメモリとを備えるシステムであって、前記命令は、前記少なくとも1つのプロセッサによって実行されたとき、前記システムに、
ニュートラル表情または位置をもつ第1のユーザの顔を示す前記第1のユーザの第1の画像を取得することと、
ニュートラル表情または位置をもつ第2のユーザの顔を示す前記第2のユーザの第1の画像を識別することであって、前記第2のユーザの前記顔が、しきい値の満足に基づいて前記第1のユーザの前記顔と同様である、第2のユーザの第1の画像を識別することと、
前記ニュートラル表情または位置とは異なる表情または位置をもつ前記第2のユーザの前記顔を示す前記第2のユーザの第2の画像に基づいて、前記ニュートラル表情または位置とは異なる表情をもつ前記第1のユーザの前記顔を示す前記第1のユーザの第2の画像を生成することと
を実施させる、システム。
【請求項12】
前記第2のユーザの前記第1の画像を識別することが、前記第1のユーザの前記第1の画像中の前記第1のユーザの顔ポイントと、前記第2のユーザの前記第1の画像中の前記第2のユーザの顔ポイントとを比較することを含み、前記第1のユーザの前記顔ポイントと前記第2のユーザの前記顔ポイントとの間の一致の程度が前記しきい値を満足する、請求項11に記載のシステム。
【請求項13】
前記第1のユーザの前記第2の画像を生成することが、前記第1のユーザの前記第1の画像中の前記第1のユーザの前記顔ポイントを、前記第2のユーザの前記第2の画像中の前記第2のユーザの前記顔ポイントにマッピングすることを含む、請求項12に記載のシステム。
【請求項14】
前記第1のユーザの前記第2の画像に基づいて前記第1のユーザのための個人化されたエモーティコンを生成することをさらに含む、請求項13に記載のシステム。
【請求項15】
前記第2のユーザの前記第1の画像が、歌を歌っている前記第2のユーザのビデオ中に含まれ、前記命令が、前記システムに、前記第1のユーザの前記第2の画像に基づいて前記第1のユーザのリップシンクビデオを生成することをさらに実施させる、請求項13に記載のシステム。
【請求項16】
コンピューティングシステムの少なくとも1つのハードウェアプロセッサによって実行されたとき、前記コンピューティングシステムに、
ニュートラル表情または位置をもつ第1のユーザの顔を示す前記第1のユーザの第1の画像を取得することと、
ニュートラル表情または位置をもつ第2のユーザの顔を示す前記第2のユーザの第1の画像を識別することであって、前記第2のユーザの前記顔が、しきい値の満足に基づいて前記第1のユーザの前記顔と同様である、第2のユーザの第1の画像を識別することと、
前記ニュートラル表情または位置とは異なる表情または位置をもつ前記第2のユーザの前記顔を示す前記第2のユーザの第2の画像に基づいて、前記ニュートラル表情または位置とは異なる表情をもつ前記第1のユーザの前記顔を示す前記第1のユーザの第2の画像を生成することと
を含む方法を実施させる命令を含む、非一時的コンピュータ可読媒体。
【請求項17】
前記第2のユーザの前記第1の画像を識別することが、前記第1のユーザの前記第1の画像中の前記第1のユーザの顔ポイントと、前記第2のユーザの前記第1の画像中の前記第2のユーザの顔ポイントとを比較することを含み、前記第1のユーザの前記顔ポイントと前記第2のユーザの前記顔ポイントとの間の一致の程度が前記しきい値を満足する、請求項16に記載の非一時的コンピュータ可読媒体。
【請求項18】
前記第1のユーザの前記第2の画像を生成することが、前記第1のユーザの前記第1の画像中の前記第1のユーザの前記顔ポイントを、前記第2のユーザの前記第2の画像中の前記第2のユーザの前記顔ポイントにマッピングすることを含む、請求項17に記載の非一時的コンピュータ可読媒体。
【請求項19】
前記方法が、前記第1のユーザの前記第2の画像に基づいて前記第1のユーザのための個人化されたエモーティコンを生成することをさらに含む、請求項18に記載の非一時的コンピュータ可読媒体。
【請求項20】
前記第2のユーザの前記第1の画像が、歌を歌っている前記第2のユーザのビデオ中に含まれ、前記方法が、前記第1のユーザの前記第2の画像に基づいて前記第1のユーザのリップシンクビデオを生成することをさらに含む、請求項18に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、ソーシャルネットワークの分野に関する。より詳細には、本技術は、顔認識に基づいて様々なメディア効果を生成するための技法に関する。
【背景技術】
【0002】
今日、人々は、しばしば、多種多様な目的でコンピューティングデバイス(またはシステム)を利用する。ユーザは、自身のコンピューティングデバイスを使用して、たとえば、互いと対話し、コンテンツを作成し、コンテンツを共有し、コンテンツを閲覧することができる。いくつかの場合には、ユーザは、自身のコンピューティングデバイスを利用して、ソーシャルネットワーキングシステム(またはサービス)にアクセスすることができる。ユーザは、ソーシャルネットワーキングシステムを介して、ステータス更新、画像、ビデオ、記事、およびリンクなど、様々なコンテンツアイテムを提供し、ポスティングし、共有し、それらのコンテンツアイテムにアクセスすることができる。いくつかの実施形態では、顔認識が、コンテンツアイテムに関して実施され得る。
【発明の概要】
【0003】
本開示の様々な実施形態は、ニュートラル表情または位置をもつ第1のユーザの顔を示す第1のユーザの第1の画像を取得するように構成された、システム、方法、および非一時的コンピュータ可読媒体を含むことができる。ニュートラル表情または位置をもつ第2のユーザの顔を示す第2のユーザの第1の画像が識別され得、第2のユーザの顔は、しきい値の満足に基づいて第1のユーザの顔と同様である。ニュートラル表情または位置とは異なる表情または位置をもつ第2のユーザの顔を示す第2のユーザの第2の画像に基づいて、ニュートラル表情または位置とは異なる表情をもつ第1のユーザの顔を示す第1のユーザの第2の画像が生成され得る。
【0004】
いくつかの実施形態では、第2のユーザの第1の画像を識別することは、第1のユーザの第1の画像中の第1のユーザの顔ポイントと、第2のユーザの第1の画像中の第2のユーザの顔ポイントとを比較することを含み、第1のユーザの顔ポイントと第2のユーザの顔ポイントとの間の一致の程度がしきい値を満足する。
【0005】
いくつかの実施形態では、第1のユーザの第2の画像を生成することは、第1のユーザの第1の画像中の第1のユーザの顔ポイントを、第2のユーザの第2の画像中の第2のユーザの顔ポイントにマッピングすることを含む。
【0006】
一実施形態では、第1のユーザのための個人化されたエモーティコンが、第1のユーザの第2の画像に基づいて生成される。
【0007】
いくつかの実施形態では、第2のユーザの第1の画像は、歌を歌っている第2のユーザのビデオ中に含まれ、第1のユーザのリップシンクビデオが、第1のユーザの第2の画像に基づいて生成される。
【0008】
いくつかの実施形態では、第2のユーザの第1の画像を識別することは、第1のユーザの第1の画像中の少なくとも1つの領域のテクスチャと、第2のユーザの第1の画像中の対応する領域のテクスチャとを比較することを含み、第1のユーザの第1の画像中の少なくとも1つの領域のテクスチャと、第2のユーザの第1の画像中の少なくとも1つの領域のテクスチャとの間の一致の程度がしきい値を満足する。
【0009】
一実施形態では、第2のユーザの第1の画像中の少なくとも1つの領域の一部分が、第1のユーザの第2の画像を生成するためにコピーされる。
【0010】
いくつかの実施形態では、第1のユーザの第1の画像中の少なくとも1つの領域のテクスチャと、第2のユーザの第1の画像中の対応する領域のテクスチャとを比較することは、第1のユーザの第1の画像中の少なくとも1つの領域のテクスチャ特徴と、第2のユーザの第1の画像中の少なくとも1つの領域のテクスチャ特徴とを決定することを含む。
【0011】
いくつかの実施形態では、画像は値の行列として表され、画像のテクスチャ特徴は、値の平均または値のメジアンのうちの1つまたは複数を含む。
【0012】
一実施形態では、ニュートラル表情とは異なる表情は、幸せの表情、悲しみの表情、怒りの表情、驚きの表情、泣きの表情、微笑みの表情、笑いの表情、または不機嫌の表情のうちの1つまたは複数を含む。
【0013】
本開示の様々な実施形態は、特定の表情をもつユーザの顔を示すユーザの第1の画像を取得するように構成された、システム、方法、および非一時的コンピュータ可読媒体を含むことができる。特定の表情のキーポイントが決定され得る。特定の表情のキーポイントは増幅され得る。特定の表情の増幅されたバージョンをもつユーザの顔を示すユーザの第2の画像が、増幅されたキーポイントに基づいて生成され得る。
【0014】
いくつかの実施形態では、特定の表情は、幸せの表情、悲しみの表情、怒りの表情、驚きの表情、泣きの表情、微笑みの表情、笑いの表情、または不機嫌の表情のうちの1つまたは複数を含む。
【0015】
いくつかの実施形態では、ユーザの顔は、複数の顔ポイントによって表され、特定の表情のキーポイントは、顔ポイントのサブセットである。
【0016】
一実施形態では、複数の顔ポイントは、顔検出に基づいて識別される。
【0017】
いくつかの実施形態では、特定の表情のキーポイントを増幅することは、特定の表情のキーポイントのうちの1つまたは複数を動かすことを含む。
【0018】
いくつかの実施形態では、特定の表情のキーポイントのうちの1つまたは複数は、それぞれの選択された距離だけ動く。
【0019】
一実施形態では、それぞれの選択された距離は、異なる距離である。
【0020】
いくつかの実施形態では、キーポイントのうちの1つまたは複数は動かない。
【0021】
いくつかの実施形態では、特定の表情の増幅されたバージョンは、特定の表情の増大された規模を示す。
【0022】
一実施形態では、特定の表情は、特定の表情を特徴づける特定の位置にあるキーポイントに関連付けられる。
【0023】
開示される技術の多くの他の特徴、適用例、実施形態、および/または変形形態が、添付の図面から、および以下の発明を実施するための形態から明らかになることを諒解されたい。本明細書で説明される構造、システム、非一時的コンピュータ可読媒体、および方法の追加および/または代替の実装形態が、開示される技術の原理から逸脱することなく採用され得る。
【図面の簡単な説明】
【0024】
【
図1】本開示の一実施形態による、顔認識に基づいて様々なメディア効果を提供するように構成された例示的な顔効果生成モジュールを含む、例示的なシステムを示す図である。
【
図2】本開示の一実施形態による、顔認識に基づいて様々なメディア効果を生成するように構成された例示的なメディア効果生成モジュールを示す図である。
【
図3A】本開示の一実施形態による、顔認識に基づいて、個人化されたエモーティコンを提供するための例示的なシナリオを示す図である。
【
図3B】本開示の一実施形態による、顔認識に基づいてリップシンクビデオを提供するための例示的なシナリオを示す図である。
【
図3C】本開示の一実施形態による、顔認識に基づいて、増幅された表情を提供するための例示的なシナリオを示す図である。
【
図4】本開示の一実施形態による、顔認識に基づいて様々なメディア効果を提供するための例示的な第1の方法を示す図である。
【
図5】本開示の一実施形態による、顔認識に基づいて様々なメディア効果を提供するための例示的な第2の方法を示す図である。
【
図6】本開示の一実施形態による、様々なシナリオにおいて利用され得る例示的なシステムのネットワーク図である。
【
図7】本開示の一実施形態による、様々なシナリオにおいて利用され得るコンピュータシステムの一例を示す図である。
【発明を実施するための形態】
【0025】
図は、単に説明の目的で、開示される技術の様々な実施形態を示し、図は、同様の要素を識別するために同様の参照番号を使用する。当業者は、以下の説明から、本明細書で説明される開示される技術の原理から逸脱することなく、図に示されている構造および方法の代替実施形態が採用され得ることを容易に認識されよう。
【0026】
顔認識技法に基づくメディア効果生成
人々は、多種多様な目的でコンピューティングデバイス(またはシステム)を使用する。コンピューティングデバイスは、様々な種類の機能性を提供することができる。ユーザは、自身のコンピューティングデバイスを利用して、情報を生成し、情報にアクセスし、情報を共有することができる。いくつかの場合には、ユーザは、コンピューティングデバイスを利用して、従来のソーシャルネットワーキングシステム(たとえば、ソーシャルネットワーキングサービス、ソーシャルネットワークなど)と対話するか、またはそれらのシステムに関与することができる。ソーシャルネットワーキングシステムは、ユーザがそれを通してコンテンツアイテムを公開し得るリソースを提供し得る。一例では、コンテンツアイテムは、ユーザのプロファイルページ上に提示され得る。別の例として、コンテンツアイテムは、ユーザがアクセスすべきフィードを通して提示され得る。
【0027】
コンピュータ技術の領域において特に台頭しつつある従来の手法の下で、顔認識が、ソーシャルネットワーキングシステムに関連付けられたコンテンツアイテムに関して実施され得る。一例として、写真におけるユーザのつながりは、顔認識に基づいて識別され得、ユーザは、1つまたは複数の識別されたつながりをタグ付けし得る。しかしながら、従来の手法は、ユーザの顔認識に基づいて、個人化されたメディア効果を提供しないことがあるか、または限られた個人化されたメディア効果を提供するにすぎないことがある。たとえば、従来の手法は、たとえば特定のユーザの顔の特徴に基づいて、そのユーザのために生成される、個人化されたメディア効果を提供しないことがある。
【0028】
コンピュータ技術に由来する改善された手法が、コンピュータ技術の領域において特に台頭しつつある従来の手法に関連する上記および他の欠点を克服することができる。コンピュータ技術に基づいて、開示される技術は、顔認識に基づいてユーザのための様々なメディア効果を提供することができる。一例として、開示される技術は、ユーザのための個人化されたエモーティコンを提供することができる。特定のユーザについて、ニュートラル表情をもつユーザの顔を示す画像が、ニュートラル表情をもつ別のユーザの顔を示す画像に一致され得る。異なる表情をもつ他のユーザの顔を示す画像があり得る。異なる表情の例は、幸せ、悲しみ、怒りなどを含むことができる。ニュートラル表情をもつユーザの顔を示す画像は、異なる表情を示すユーザの個人化されたエモーティコンを作成するために、異なる表情をもつ他のユーザの顔を示す画像にマッピングされ得る。別の例として、開示される技術は、ユーザのためのリップシンクビデオを提供することができる。特定のユーザについて、ニュートラル位置にあるユーザの顔を示す画像が、歌を歌っている他のユーザのビデオ中に含まれるニュートラル位置にある別のユーザの顔を示す画像に一致され得る。ニュートラル位置にあるユーザの顔を示す画像は、歌を歌っているユーザの個人化されたリップシンクビデオを作成するために、歌を歌っている他のユーザの顔を示すビデオにマッピングされ得る。さらなる例として、開示される技術は、ユーザのための増幅された表情を提供することができる。特定のユーザについて、特定の表情をもつユーザを示す画像が取得され得る。表情の例は、幸せ、悲しみ、怒りなどを含むことができる。表情のキーポイントが、表情の規模または程度を増大させるために抽出および増幅され得る。このようにして、開示される技術は、ユーザのための個人化されたメディア効果を提供することができ、そのメディア効果は、ソーシャルネットワーキングシステムに関連付けられたコンテンツアイテムを生成するエクスペリエンスをより興味深いものにすることができる。開示される技術に関係する追加の詳細が以下で提供される。
【0029】
図1は、本開示の一実施形態による、顔認識に基づいて様々なメディア効果を提供するように構成された例示的な顔効果生成モジュール102を含む、例示的なシステム100を示す。顔効果生成モジュール102は、顔検出モジュール104と、顔類似度識別モジュール106と、顔ポイントマッピングモジュール108と、メディア効果生成モジュール110とを含むことができる。いくつかの事例では、例示的なシステム100は、少なくとも1つのデータストア120を含むことができる。この図および本明細書のすべての図に示されている構成要素(たとえば、モジュール、要素、ステップ、ブロックなど)は例にすぎず、他の実装形態は、追加の構成要素、より少ない構成要素、統合された構成要素、または異なる構成要素を含み得る。いくつかの構成要素は、関連する詳細を不明瞭にしないように示されないことがある。様々な実施形態では、顔効果生成モジュール102に関して説明される機能性のうちの1つまたは複数は、任意の好適な組合せで実装され得る。開示される技術は、説明の目的で、ソーシャルネットワーキングシステムに関連付けられた顔認識ベースのメディア効果に関して説明されるが、開示される技術は、任意の他のタイプのシステムおよび/またはコンテンツに適用され得る。
【0030】
顔検出モジュール104は、画像中の顔を検出することができる。たとえば、顔検出モジュール104は、画像中の顔の顔ポイントを検出することができる。顔ポイントは「顔ランドマーク」と呼ばれることもある。顔ポイントは、照明条件、向きなど、様々な条件の下で、異なる人々について一貫したやり方で自動的に検出され得る、人間の顔上の解剖学的ポイントに対応する画像データに関する。たとえば、顔ポイントは、唇、眼、鼻、眉、頤、額、耳、または他の顔の特徴のうちのいくつかの顕著なポイントのロケーションを指示し得る。顔ポイントの具体的なロケーションは、特定の人に応じて変化することができ、たとえば、いくつかの例を挙げると、顔ポイントが示されている画像または画像に示された対象の次元に基づく選択された座標系を使用して表され得る。いくつかの実施形態では、画像中の、顔検出モジュール104によって検出された顔は、様々な表情を呈し得る。表情または顔の表情の例は、幸せ、悲しみ、怒り、驚き、泣き、微笑み、笑い、不機嫌などを含むことができる。いくつかの事例では、画像中の顔は、いかなる表情をも呈しないことがあり、静止状態にあり得る。表情のそのような欠如は「ニュートラル表情」と呼ばれることがある。いくつかの実施形態では、動きまたは発話に関与している、顔検出モジュール104によって検出された顔は、動きまたは発話に関連付けられた様々な位置にある顔ポイントに関連付けられ得る。たとえば、画像中の顔は、特定の音節または単語を話し得る。いくつかの事例では、画像中の顔および対応する顔ポイントは、いかなる動きまたは発話もない位置にあり、あるいは静止状態にあり得る。そのような位置は「ニュートラル位置」と呼ばれることがある。したがって、ニュートラル表情とニュートラル位置とは、静止状態にある顔の同じ状態を指示することができる。本明細書のすべての例は説明の目的で提供され、多くの変形形態および他の可能性があり得る。
【0031】
顔類似度識別モジュール106は、入力画像中の顔と同様である1つまたは複数の顔を識別することができる。たとえば、顔類似度識別モジュール106は、特定の人の顔を示す入力画像を受信し、他の人々の顔の画像にわたって検索して、入力画像中の顔と同様である1つまたは複数の顔を識別することができる。入力画像中の顔および他の画像中の顔は、上記で説明されたように、顔検出モジュール104によって検出され得る。たとえば、入力画像中の顔の顔ポイントおよび他の画像中の顔の顔ポイントは、顔検出モジュール104によって決定され得る。いくつかの実施形態では、顔類似度識別モジュール106は、入力画像中の顔と同じまたは同様の表情を示す顔の画像にわたって検索することができる。たとえば、入力画像中の顔の表情がニュートラル表情である場合、ニュートラル表情を示す顔の画像が識別され得る。いくつかの実施形態では、顔類似度識別モジュール106は、入力画像中の顔と同じまたは同様の顔ポイントの位置を示す顔の画像にわたって検索することができる。たとえば、入力画像中の顔がニュートラル位置にある場合、ニュートラル位置を示す顔の画像が検索され得る。本明細書で説明されるように、入力画像中の顔は「入力顔」と呼ばれることがある。
【0032】
顔類似度識別モジュール106は、入力顔と同様の顔を識別するために、入力顔の顔ポイントと他の画像中の顔の顔ポイントとを比較することができる。本明細書で使用されるそのような同様の顔は、入力顔「の同様の顔」、入力顔「と同様の顔」、または入力顔「についての同様の顔」と呼ばれることがある。2つの顔、またはそれらの対応する顔ポイントは、それぞれの顔ポイントのロケーションが、指定された程度または範囲と同じまたは同様である場合、同様であるかまたは一致すると見なされ得る。いくつかの場合には、所定の量以内で入力顔の顔ポイントと同様である顔ポイントを有する顔が、入力顔と同様である顔として選択され得る。たとえば、選択された同様の顔の顔ポイントと入力顔の顔ポイントとの間の一致の程度または範囲が、しきい値を満足することがある。いくつかの実施形態では、顔類似度識別モジュール106は、入力顔の顔ポイントと別の顔の顔ポイントとの間の一致の程度または範囲を示す類似度メトリックを決定することができる。一例として、類似度メトリックは、入力顔の顔ポイントと別の顔の顔ポイントとの間の距離に基づいて決定され得る。顔は、類似度メトリックがしきい値を満足する場合、入力顔の同様の顔として選択され得る。入力顔の同様の顔は、以下で説明されるように様々なメディア効果を生成するために使用され得る。たとえば、入力顔のための個人化されたエモーティコンを作成するために使用され得る、ニュートラル表情以外の様々な表情を示す同様の顔の画像があり得る。または、入力顔のための個人化されたリップシンクビデオを作成するために使用され得る、歌を歌っている同様の顔のビデオがあり得る。
【0033】
いくつかの実施形態では、顔類似度識別モジュール106は、入力画像中の顔についての同様の顔を識別する際に、顔ポイント以外の追加のファクタを考慮に入れることができる。追加のファクタの一例は、入力顔のテクスチャを含むことができる。2つの画像または2つの画像の領域のテクスチャは、2つの画像または領域のテクスチャが同様であるかどうかを決定するために比較され得る。いくつかの実施形態では、画像または画像の領域は、値の行列として表され得る。いくつかの場合には、値の行列は、ピクセルデータなど、画像データに基づき得る。一例として、各値は0~255の範囲から選択され得る。いくつかの実施形態では、テクスチャに関係する特徴(「テクスチャ特徴」)が、2つの画像または2つの画像の領域のテクスチャを比較するために算出または抽出され得る。テクスチャ特徴の例は、画像または画像の領域中の値の平均と、画像または画像の領域中の値のメジアンと、他のメトリックとを含むことができる。顔類似度識別モジュール106は、入力顔と同様である顔を識別するために、2つの画像のテクスチャ特徴を比較することができる。2つの画像または2つの画像の領域のテクスチャは、2つの画像または2つの画像の領域のテクスチャ特徴の値の比較がしきい値を満足する場合、同様であるかまたは一致すると見なされ得る。一例として、2つの画像または2つの画像の領域のテクスチャ特徴の値の比較は、テクスチャ特徴の値間の差を含むことができる。いくつかの実施形態では、顔類似度識別モジュール106は、入力顔に関係する画像または画像の領域のテクスチャと、別の顔に関係する画像または画像の領域のテクスチャとの間の一致の程度または範囲を示す類似度メトリックを決定することができる。一例として、類似度メトリックは、入力顔のテクスチャ特徴の値と別の顔のテクスチャ特徴の値とに基づいて決定され得る。入力顔の画像または画像の領域のテクスチャと、別の顔の画像または画像の領域のテクスチャとは、類似度メトリックがしきい値を満足する場合、一致すると見なされ得る。顔類似度識別モジュール106は、入力顔と同様の顔ポイントおよび同様のテクスチャを有する顔を、入力顔の同様の顔として選択することができる。テクスチャの考慮は、年齢、性別、民族性、および顔外観に影響を及ぼすことができる他のファクタに関して、入力顔と最適に一致した同様の顔の選択をもたらすことができる。
【0034】
上記で説明されたように、顔類似度識別モジュール106は、顔ポイント、および/またはテクスチャなどの追加のファクタに基づいて、入力顔についての同様の顔を識別することができる。いくつかの実施形態では、顔類似度識別モジュール106は、入力顔の同様の顔が入力顔と同様の顔ポイントおよび同様のテクスチャを有するように、入力顔の同様の顔を選択することができる。顔類似度識別モジュール106は、入力顔の他の画像を生成するために必要とされる入力顔の部分を埋めるために、同様の顔の画像を使用することができる。たとえば、顔類似度識別モジュール106は、ニュートラル表情以外の様々な表情を示す顔の画像を生成するために、ニュートラル表情を示す顔の入力画像を使用することができる。同様に、顔類似度識別モジュール106は、動きまたは発話に関連付けられた様々な位置にある顔ポイントを示す顔の画像を生成するために、ニュートラル位置を示す顔の入力画像を使用することができる。しかしながら、ニュートラル表情を示す顔の入力画像は、ニュートラル表情以外の表情を呈する顔の画像を生成するために必要とされる顔のいくつかの部分を示さないことがある。または、ニュートラル位置を呈する顔の入力画像は、ニュートラル位置とは異なる位置にある顔ポイントを示さないことがある。一例として、ニュートラル表情を示す顔の入力画像は、歯を示さないことがあり、歯は、微笑みの表情を示す顔の画像を生成するために必要とされ得る。この例では、顔類似度識別モジュール106は、入力顔の同様の顔が、入力顔と同様の口領域の周りのテクスチャを有するように、入力顔の同様の顔を選択することができる。顔類似度識別モジュール106は、微笑みの表情を示す入力顔の画像を生成するために、微笑みの表情を示す同様の顔の画像中の同様の顔の歯を使用することができる。顔の関連部分のテクスチャが考慮されるので、同様の顔からの部分は、入力顔の生成された画像中でより自然に見え得る。本明細書のすべての例は説明の目的で提供され、多くの変形形態および他の可能性があり得る。
【0035】
顔ポイントマッピングモジュール108は、入力顔を入力顔の同様の顔にマッピングすることができる。たとえば、入力顔の同様の顔は、上記で説明されたように、顔類似度識別モジュール106によって決定され得る。一例として、顔ポイントマッピングモジュール108は、異なる表情を呈する入力顔の画像を生成するために、入力顔の顔ポイントを、異なる表情を呈する同様の顔の顔ポイントにマッピングすることができる。たとえば、入力顔の顔ポイントを、異なる表情を呈する同様の顔の顔ポイントにマッピングする変換が、決定され、入力顔および入力顔の対応する顔ポイントに適用され得る。別の例として、顔ポイントマッピングモジュール108は、異なる位置を呈する入力顔の画像を生成するために、入力顔の顔ポイントを、異なる位置を呈する同様の顔の顔ポイントにマッピングすることができる。たとえば、入力顔の顔ポイントを、異なる位置を呈する同様の顔の顔ポイントにマッピングする変換が、決定され、入力顔および入力顔の対応する顔ポイントに適用され得る。いくつかの実施形態では、顔ポイントマッピングモジュール108は、ニュートラル表情またはニュートラル位置を呈する入力顔の顔ポイントを、ニュートラル表情またはニュートラル位置を呈する同様の顔の顔ポイントにマッピングする変換を決定し、ニュートラル表情またはニュートラル位置を呈する同様の顔の顔ポイントを、別の表情または別の位置を呈する同様の顔の顔ポイントにマッピングする変換をも決定することができる。次いで、顔ポイントマッピングモジュール108は、入力顔が、同様の顔によって示される他の表情または他の位置を呈するように変換されるように、決定された変換を、入力顔および入力顔の対応する顔ポイントに適用することができる。本明細書のすべての例は説明の目的で提供され、多くの変形形態および他の可能性があり得る。
【0036】
メディア効果生成モジュール110は、顔認識に基づいて様々なメディア効果を生成することができる。たとえば、メディア効果生成モジュール110は、個人化されたエモーティコン、個人化されたリップシンクビデオ、および増幅された表情を作成することができる。メディア効果生成モジュール110の機能性は、本明細書でより詳細に説明される。
【0037】
いくつかの実施形態では、顔効果生成モジュール102は、部分的にまたは全体的に、ソフトウェア、ハードウェア、またはそれらの任意の組合せとして実装され得る。概して、本明細書で説明されるモジュールは、ソフトウェア、ハードウェア、またはそれらの任意の組合せに関連付けられ得る。いくつかの実装形態では、モジュールの1つまたは複数の機能、タスク、および/または動作は、ソフトウェアルーチン、ソフトウェアプロセス、ハードウェア、および/またはそれらの任意の組合せによって行われるか、または実施され得る。いくつかの場合には、顔効果生成モジュール102は、部分的にまたは全体的に、サーバシステムまたはクライアントコンピューティングデバイス上など、1つまたは複数のコンピューティングデバイスまたはシステム上で実行するソフトウェアとして実装され得る。いくつかの事例では、顔効果生成モジュール102は、部分的にまたは全体的に、
図6のソーシャルネットワーキングシステム630など、ソーシャルネットワーキングシステム(またはサービス)の内部に実装されるか、あるいはソーシャルネットワーキングシステム(またはサービス)と連携して動作するように構成されるか、またはソーシャルネットワーキングシステム(またはサービス)と統合されるように構成され得る。同様に、いくつかの事例では、顔効果生成モジュール102は、部分的にまたは全体的に、
図6のユーザデバイス610など、クライアントコンピューティングデバイスの内部に実装されるか、あるいはクライアントコンピューティングデバイスと連携して動作するように構成されるか、またはクライアントコンピューティングデバイスと統合されるように構成され得る。たとえば、顔効果生成モジュール102は、ユーザコンピューティングデバイスまたはクライアントコンピューティングシステム上で実行する専用アプリケーション(たとえば、アプリ)、プログラム、またはアプレットとして実装されるか、あるいはそれらの内部に実装され得る。顔効果生成モジュール102の機能性を実施するための命令を組み込むまたは実装するアプリケーションが、開発者によって作成され得る。アプリケーションは、リポジトリに提供されるか、またはリポジトリ中で維持され得る。いくつかの場合には、アプリケーションは、ネットワーク(たとえば、インターネット)を介してリポジトリにアップロードされるか、またはさもなければ送信され得る。たとえば、アプリケーションの開発者に関連付けられた、またはアプリケーションの開発者の制御下のコンピューティングシステム(たとえば、サーバ)が、アプリケーションをリポジトリに提供するかまたは送信することができる。リポジトリは、たとえば、ユーザによるアクセスまたはダウンロードのためにアプリケーションが維持され得る「アプリ」ストアを含むことができる。アプリケーションをダウンロードするためのユーザによるコマンドに応答して、アプリケーションは、ネットワークを介してリポジトリからユーザに関連付けられたコンピューティングデバイスに提供されるか、またはさもなければ送信され得る。たとえば、リポジトリの管理者に関連付けられた、またはリポジトリの管理者の制御下のコンピューティングシステム(たとえば、サーバ)は、ユーザがアプリケーションをインストールおよび実行することができるように、アプリケーションがユーザのコンピューティングデバイスに送信されることを引き起こすかまたは可能にすることができる。アプリケーションの開発者とリポジトリの管理者とは、いくつかの場合には異なるエンティティであり得るが、他の場合には同じエンティティであり得る。多くの変形形態が可能であることを理解されたい。
【0038】
データストア120は、顔効果生成モジュール102のサポートおよび動作に関係するデータなど、様々なタイプのデータを記憶および維持するように構成され得る。データストア120によって維持されるデータは、たとえば、顔認識、メディア効果、個人化されたエモーティコン、個人化されたリップシンクビデオ、増幅された表情、機械学習モデルなどに関係する情報を含むことができる。データストア120は、ソーシャルネットワーキングシステムに関連付けられた他の情報をも維持することができる。ソーシャルネットワーキングシステムに関連付けられた情報は、ユーザ、ソーシャルつながり、ソーシャル対話、ロケーション、ジオフェンスエリア、地図、場所、イベント、グループ、投稿、通信、コンテンツ、アカウント設定、プライバシー設定、およびソーシャルグラフに関するデータを含むことができる。ソーシャルグラフは、ソーシャルネットワーキングシステムのすべてのエンティティと、それらのエンティティの対話とを反映することができる。例示的なシステム100に示されているように、顔効果生成モジュール102は、データストア120と通信および/または動作するように構成され得る。いくつかの実施形態では、データストア120は、クライアントコンピューティングデバイス内のデータストアであり得る。いくつかの実施形態では、データストア120は、クライアントコンピューティングデバイスと通信しているサーバシステムのデータストアであり得る。
【0039】
図2は、本開示の一実施形態による、顔認識に基づいて様々なメディア効果を生成するように構成された例示的なメディア効果生成モジュール202を示す。いくつかの実施形態では、
図1のメディア効果生成モジュール110は、例示的なメディア効果生成モジュール202で実装され得る。
図2の例に示されているように、例示的なメディア効果生成モジュール202は、個人化されたエモーティコンモジュール204と、リップシンクビデオモジュール206と、表情増幅モジュール208とを含むことができる。
【0040】
個人化されたエモーティコンモジュール204は、特定のユーザのための個人化されたエモーティコンを生成することができる。個人化されたエモーティコンモジュール204は、ニュートラル表情をもつユーザの顔を示す入力画像を取得することができる。いくつかの実施形態では、ユーザは入力画像を提供することができる。他の実施形態では、ユーザについての入力画像を識別するために、ユーザのコンピューティングデバイス上の画像に対して、顔認識が実施され得る。一例として、ユーザについての入力画像は、ユーザがニュートラル表情を有し、ユーザが前向きであり、照明条件が十分であるように選択され得る。入力画像および/または他の画像中のユーザの顔は、上記で説明されたように、顔検出モジュール104によって検出され得る。
【0041】
個人化されたエモーティコンモジュール204は、入力画像に基づいて、特定のユーザについての同様の顔を識別することができる。たとえば、ユーザについての同様の顔は、上記で説明されたように、顔類似度識別モジュール106によって識別され得る。ユーザについての同様の顔を識別するために、他の人々の顔の画像が検索され得る。たとえば、様々な人々の顔の画像が、データベースまたは記憶デバイスに記憶され得る。他の人々の顔は、上記で説明されたように、顔検出モジュール104によって検出され得る。ユーザについての同様の顔は、ニュートラル表情を示すユーザの入力画像と、同じくニュートラル表情を示す他の人々の顔の画像とを比較することによって識別され得る。他の人々の顔の画像は、ニュートラル表情以外の様々な表情を呈する他の人々の顔の画像をも含むことができる。表情の例は、幸せ、悲しみ、怒り、驚き、泣き、微笑み、笑い、不機嫌などを含むことができる。
【0042】
個人化されたエモーティコンモジュール204は、異なる表情を示す同様の顔の画像に基づいて、特定のユーザのための個人化されたエモーティコンを生成することができる。ユーザについて決定される同様の顔は、幸せ、悲しみ、怒りなど、様々な表情をもつ同様の顔を示す関連する画像を有することができる。ユーザの顔ポイントは、ニュートラル表情以外の表情を示すユーザのための個人化されたエモーティコンを生成するために、その表情を呈する同様の顔の顔ポイントにマッピングされ得る。ユーザの顔ポイントは、上記で説明されたように、顔ポイントマッピングモジュール108によって、同様の顔の顔ポイントにマッピングされ得る。一例として、微笑みの表情を示す同様の人の画像があり得る。ユーザの顔ポイントは、たとえば、微笑みの表情を示すユーザのための個人化されたエモーティコンを生成するために、直接、微笑みの表情を呈する同様の人の顔ポイントにマッピングされ得る。別の例として、不機嫌の表情を示す同様の人の画像があり得る。ユーザの顔ポイントは、たとえば、不機嫌の表情を示すユーザのための個人化されたエモーティコンを生成するために、直接、不機嫌の表情を示す同様の人の顔ポイントにマッピングされ得る。いくつかの実施形態では、個人化されたエモーティコンモジュール204は、一連の変換を決定することによって、特有の表情を示す特定のユーザのための個人化されたエモーティコンを生成することができる。たとえば、ニュートラル表情を呈するユーザの顔ポイントを、ニュートラル表情を呈する同様の顔の顔ポイントにマッピングするための変換が決定され得る。また、ニュートラル表情を呈する同様の顔の顔ポイントを、特有の表情を呈する同様の顔の顔ポイントにマッピングするための変換が決定され得る。変換は、特有の表情を示すユーザのための個人化されたエモーティコンを生成するために、ニュートラル表情を示すユーザの画像に適用され得る。このようにして、ユーザのための個人化されたエモーティコンは、同様の顔の画像に示されている任意の表情について生成され得る。いくつかの実施形態では、個人化されたエモーティコンモジュール204は、機械学習技法に基づいて、特定のユーザのための個人化されたエモーティコンを生成することができる。
【0043】
個人化されたエモーティコンが、ニュートラル表情を示す特定のユーザの画像に基づいて生成されるとき、個人化されたエモーティコン中のユーザの顔の1つまたは複数の部分は、同様の顔の1つまたは複数の画像で埋められるか、またはそれらの画像からコピーされる必要があり得る。一例として、個人化されたエモーティコンが微笑みの表情を呈する場合、ニュートラル表情を示すユーザの画像はユーザの歯を示さない。したがって、同様の顔の歯が、微笑みの表情を示すユーザのための個人化されたエモーティコンを生成するために使用され得る。上記で説明されたように、特定のユーザについての同様の顔は、顔または同様の顔の一部分のテクスチャが、ユーザの顔または顔の一部分に一致するように決定され得る。同様の顔とユーザの顔とが、一致するテクスチャを有するので、同様の顔で埋められたユーザの顔の一部分は自然に見えるか、または滑らかに見え得る。
【0044】
特定のユーザの顔ポイントを同様の顔の顔ポイントにマッピングすることによって、そのユーザのための個人化されたエモーティコンを生成することは、有利に、迅速に表情を生成することを容易にし、ならびにデータの限られたセットから表情を一般化することができる。たとえば、個人化されたエモーティコンは、様々な表情を示す数個の同様の顔の画像の限られたセットから、多くのユーザのために生成され得る。一方、いくつかの機械学習技法に基づいて特定のユーザのための個人化されたエモーティコンを生成することは、異なる表情を示す多数の人々の画像を含むトレーニングデータの大きいセットを必要とすることがある。しかしながら、泣きまたは悲しみなど、いくつかの表情を示す人々の画像を取得することは、人々がこれらの表情をもつ画像をキャプチャする可能性が低いので、困難であり得る。
【0045】
いくつかの実施形態では、個人化されたエモーティコンモジュール204は、様々な表情を示す特定のユーザの画像に基づいて、そのユーザのための個人化されたエモーティコンを生成することができる。たとえば、ユーザは、幸せ、悲しみ、怒りなど、異なる表情を示すユーザの画像をアップロードすることができる。これらの実施形態では、ユーザのための個人化されたエモーティコンは、ニュートラル表情をもつユーザの顔の画像を、様々な表情を示す同様の顔の画像にマッピングするのではなく、ユーザによってアップロードされた画像から直接生成される。
【0046】
リップシンクビデオモジュール206は、特定のユーザのための個人化されたリップシンクビデオを生成することができる。たとえば、歌のリップシンクビデオが、歌を歌っている他の人々の1つまたは複数のビデオに基づいて、ユーザのために生成され得る。リップシンクビデオが生成される、歌を歌っている別の人のビデオは、「ドライバビデオ(driver video)」と呼ばれることがある。たとえば、異なる歌を歌っている様々な人々のビデオが、データベースまたは記憶デバイスに記憶され得る。個人化されたエモーティコンモジュール204と同様に、リップシンクビデオモジュール206は、ニュートラル位置にあるユーザの顔を示す入力画像を取得することができる。たとえば、入力画像中のユーザの顔ポイントは、いかなる動きまたは発話をも呈しないことがあり、静止位置にあり得る。いくつかの実施形態では、ユーザは入力画像を提供することができる。他の実施形態では、ユーザについての入力画像を識別するために、ユーザのコンピューティングデバイス上の画像に対して、顔認識が実施され得る。入力画像および/または他の画像中のユーザの顔は、上記で説明されたように、顔検出モジュール104によって検出され得る。
【0047】
個人化されたエモーティコンモジュール204と同様に、リップシンクビデオモジュール206は、入力画像に基づいて、特定のユーザについての同様の顔を識別することができる。発話または歌唱など、口頭の表現に関与する様々な人々のビデオが維持され得る。たとえば、話しているまたは歌っている人のビデオは、様々な位置にあるその人の顔ポイントを示す画像またはフレームを含むことができる。たとえば、歌を歌っている人のビデオは、ニュートラル位置にあるその人の顔ポイントを示す画像またはフレームを含むことができる。ニュートラル位置にある人を示す画像またはフレームは、ユーザについての同様の顔を識別するために、ニュートラル位置を示すユーザの入力画像と比較され得る参照画像として、ビデオから選択され得る。たとえば、ユーザについての同様の顔は、上記で説明されたように、顔類似度識別モジュール106によって識別され得る。ユーザについての同様の顔は、ニュートラル位置を示すユーザの入力画像と、同じくニュートラル位置を示す他の人々の顔の参照画像とを比較することによって識別され得る。
【0048】
リップシンクビデオモジュール206は、口頭の表現に関与する特定のユーザについての同様の顔のビデオに基づいて、そのユーザのための、歌などの口頭の表現の個人化されたリップシンクビデオを生成することができる。同様の顔のビデオの1つまたは複数の画像またはフレームについて、ユーザの顔ポイントは、ユーザのための個人化されたリップシンクビデオの対応する画像またはフレームを生成するために、同様の顔の顔ポイントにマッピングされ得る。ユーザの顔ポイントは、上記で説明されたように、顔ポイントマッピングモジュール108によって、同様の顔の顔ポイントにマッピングされ得る。いくつかの実施形態では、リップシンクビデオモジュール206は、ユーザのためのリップシンクビデオのフレームを生成するために、一連の変換を適用することができる。たとえば、ニュートラル位置を呈するユーザの顔ポイントを、ニュートラル位置を呈する同様の顔の顔ポイントにマッピングするための変換が決定され得る。次いで、同様の顔のビデオのフレームについて、ニュートラル位置を呈する同様の顔の顔ポイントを、フレーム中の特有の位置を呈する同様の顔の顔ポイントにマッピングするための変換が決定され得る。同様の顔のビデオのフレームについて、変換は、リップシンクビデオの対応するフレームを生成するために、ニュートラル位置を示すユーザの入力画像に適用され得る。いくつかの実施形態では、リップシンクビデオモジュール206は、機械学習技法に基づいて、特定のユーザのための個人化されたリップシンクビデオを生成することができる。
【0049】
いくつかの実施形態では、リップシンクビデオモジュール206は、最初に、同様の顔の変換されたまたはワーピングされたビデオ(warped video)を生成することができる。たとえば、ニュートラル位置を示すユーザの顔ポイントを、ニュートラル位置を示す同様の顔の顔ポイントにマッピングする変換が、ワーピングされたビデオを生成するために、同様の顔のビデオの1つまたは複数のフレームに適用され得る。このようにして、同様の顔の顔ポイントは、ユーザの顔ポイントにより良く対応するために、ワーピングされたビデオ中で再配置され得る。これらの実施形態では、リップシンクビデオモジュール206は、次いで、ワーピングされたビデオのフレームについて、ニュートラル位置にある同様の顔の顔ポイントを、フレーム中の別の位置にある同様の顔の顔ポイントにマッピングする変換を決定することができる。ワーピングされたビデオのフレームについての変換は、ユーザのためのリップシンクビデオのフレームを生成するために、ユーザの入力画像に適用され得る。
【0050】
個人化されたエモーティコンに関して上記で説明されたように、特定のユーザの同様の顔は、その同様の顔が、ユーザの顔と同様の顔ポイントおよび同様のテクスチャを有するように決定され得る。入力画像から欠落しているユーザの顔の部分は、同様の顔の対応する部分で埋められるか、またはそれらの部分からコピーされ得る。同様の顔とユーザの顔とが、一致するテクスチャを有するので、同様の顔で埋められたユーザの顔の部分は自然に見えるか、または滑らかに見え得る。
【0051】
表情増幅モジュール208は、特定のユーザのための増幅されたまたは誇張された表情を生成することができる。表情増幅モジュール208は、特定の表情をもつユーザの顔を示す入力画像を取得することができる。いくつかの実施形態では、入力画像はビデオからのものであり得る。表情の例は、幸せ、悲しみ、怒り、驚き、泣き、微笑み、笑い、不機嫌などを含むことができる。入力画像中のユーザの顔は、上記で説明されたように、顔検出モジュール104によって検出され得る。特定の表情は、表情を特徴づける特定の位置にあるキーポイントに関連付けられ得る。たとえば、表情のキーポイントは、表情のための顔ポイントのサブセットであり得る。特定の表情のキーポイントは、入力画像中のユーザの顔について識別され得る。表情増幅モジュール208は、表情の増幅されたバージョンを示すユーザの画像を生成するために、表情のキーポイントを選択的に変更または増幅することができる。たとえば、表情増幅モジュール208は、表情のキーポイントのうちの1つまたは複数を、所定の量または距離だけ、および/あるいは所定の方向に動かすことができる。キーポイントのうちの1つまたは複数は、異なる量または距離だけ、および/あるいは異なる方向に動くことができる。いくつかの場合には、いくつかのキーポイントは、増幅された表情の生成において動かされない。このようにして、表情の規模または程度が増大されたように見え得る。一例として、表情が微笑みの表情である場合、表情の増幅されたバージョンを示すユーザの画像は、増大された微笑をもつユーザを示すことができる。別の例として、表情が不機嫌の表情である場合、表情の増幅されたバージョンを示すユーザの画像は、増大された不機嫌さをもつユーザを示すことができる。多くの変形形態が可能である。いくつかの実施形態では、表情増幅モジュール208は、特定のユーザのためのトーンダウンされた表情を生成することができる。表情増幅モジュール208は、表情のトーンダウンされたまたは低減されたバージョンを示すユーザの画像を生成するために、表情のキーポイントを選択的に変更またはトーンダウンすることができる。表情の規模または程度は、表情の低減されたバージョンでは減少されたように見え得る。一例として、表情が微笑みの表情である場合、表情の低減されたバージョンを示すユーザの画像は、減少された微笑をもつユーザを示すことができる。別の例として、表情が不機嫌の表情である場合、表情の低減されたバージョンを示すユーザの画像は、減少された不機嫌さをもつユーザを示すことができる。いくつかの実施形態では、表情の増幅されたバージョンまたは低減されたバージョンを示すユーザの画像は、ビデオ中に含まれ得る。いくつかの実施形態では、表情の増幅されたバージョンまたは低減されたバージョンを示すユーザの画像は、機械学習技法に基づいて生成され得る。
【0052】
図3Aは、本開示の一実施形態による、顔認識に基づいて、個人化されたエモーティコンを提供するための例示的なシナリオ300を示す。たとえば、個人化されたエモーティコンは、本明細書で説明されるように、顔認識効果モジュール102によって生成され得る。例示的なシナリオ300では、ニュートラル表情を示す特定のユーザの入力画像310aが取得される。特定のユーザについての同様の顔を識別するために、ニュートラル表情を示す他の人々の顔の画像が検索される。例示的なシナリオ300では、ユーザについての同様の顔の画像315aが検索を通して識別される。画像310aと同様に、画像315aは、ニュートラル表情を呈する同様の顔を示す。様々な他の表情を示す同様の顔の様々な画像があり得る。たとえば、同様の顔の画像315bが微笑みの表情を示す。入力画像310a中の特定のユーザの顔ポイントは、微笑みの表情を示す特定のユーザの画像310bを生成するために、直接、画像315b中の同様の顔の顔ポイントにマッピングされ得る。いくつかの実施形態では、入力画像310a中の特定のユーザの顔ポイントを、画像315a中の同様の顔の顔ポイントにマッピングする変換が決定され得、画像315a中の同様の顔の顔ポイントを、画像315b中の同様の顔の顔ポイントにマッピングする変換が決定され得る。これらの実施形態では、決定された変換は、画像310bを生成するために、入力画像310aに適用され得る。他の表情を示す特定のユーザの画像が、同様にして生成され得る。本明細書のすべての例は説明の目的で提供され、多くの変形形態および他の可能性があり得る。
【0053】
図3Bは、本開示の一実施形態による、顔認識に基づいてリップシンクビデオを提供するための例示的なシナリオ320を示す。たとえば、リップシンクビデオは、本明細書で説明されるように、顔認識効果モジュール102によって生成され得る。例示的なシナリオ320では、ニュートラル位置を示す特定のユーザの入力画像330aが取得される。たとえば、特定の歌を歌っている、様々な人々のビデオがあり得る。ニュートラル位置を示すそのような人々の画像が、ビデオから取得され、特定のユーザについての同様の顔を識別するために検索され得る。例示的なシナリオ320では、ユーザについての同様の顔の画像335aが識別される。特定の歌を歌っている同様の顔のビデオは、複数の画像またはフレーム335a~335cを含むことができる。各フレーム335a~335cは、異なる位置にある顔ポイントをもつ同様の顔を示すことができる。入力画像330a中の特定のユーザの顔ポイントは、特定のユーザのためのリップシンクビデオのためのフレーム330bを生成するために、直接、フレーム335b中の同様の顔の顔ポイントにマッピングされ得る。入力画像330a中の特定のユーザの顔ポイントはまた、特定のユーザのためのリップシンクビデオのためのフレーム330cを生成するために、直接、フレーム335c中の同様の顔の顔ポイントにマッピングされ得る。いくつかの実施形態では、入力画像330a中の特定のユーザの顔ポイントを、フレーム335a中の同様の顔の顔ポイントにマッピングする変換が決定され得、フレーム335a中の同様の顔の顔ポイントを、フレーム335b中の同様の顔の顔ポイントにマッピングする変換が決定され得る。これらの実施形態では、決定された変換は、フレーム330bを生成するために、入力画像330aに適用され得る。フレーム330cを生成するために、同様にして、変換が決定され、入力画像330aに適用され得る。本明細書のすべての例は説明の目的で提供され、多くの変形形態および他の可能性があり得る。
【0054】
図3Cは、本開示の一実施形態による、顔認識に基づいて、増幅された表情を提供するための例示的なシナリオ340を示す。たとえば、増幅された表情は、本明細書で説明されるように、顔認識効果モジュール102によって生成され得る。例示的なシナリオ340では、特有の表情を示す特定のユーザの入力画像350が取得される。表情の増幅されたバージョンをもつ特定のユーザを示す画像355を生成するために、特有の表情のキーポイントが識別および増幅される。例示的なシナリオ340では、特有の表情は微笑みの表情であり、微笑みの表情は画像355中で増幅される。本明細書のすべての例は説明の目的で提供され、多くの変形形態および他の可能性があり得る。
【0055】
図4は、本開示の一実施形態による、顔認識に基づいて様々なメディア効果を提供するための例示的な第1の方法400を示す。別段に明記されていない限り、本明細書で説明される様々な特徴および実施形態に基づいて、同様の順序または代替の順序で、あるいは並行して実施される、追加のステップ、より少ないステップ、または代替のステップがあり得ることを理解されたい。
【0056】
ブロック402において、例示的な方法400は、ニュートラル表情または位置をもつ第1のユーザの顔を示す第1のユーザの第1の画像を取得することができる。ブロック404において、例示的な方法400は、ニュートラル表情または位置をもつ第2のユーザの顔を示す第2のユーザの第1の画像を識別することができ、第2のユーザの顔は、しきい値の満足に基づいて第1のユーザの顔と同様である。ブロック406において、例示的な方法400は、ニュートラル表情または位置とは異なる表情または位置をもつ第2のユーザの顔を示す第2のユーザの第2の画像に基づいて、ニュートラル表情または位置とは異なる表情をもつ第1のユーザの顔を示す第1のユーザの第2の画像を生成することができる。本開示の様々な特徴および実施形態を取り入れた他の好適な技法が可能である。
【0057】
図5は、本開示の一実施形態による、顔認識に基づいて様々なメディア効果を提供するための例示的な第2の方法500を示す。別段に明記されていない限り、本明細書で説明される様々な特徴および実施形態に基づいて、同様の順序または代替の順序で、あるいは並行して実施される、追加のステップ、より少ないステップ、または代替のステップがあり得ることを理解されたい。
【0058】
ブロック502において、例示的な方法500は、特定の表情をもつユーザの顔を示すユーザの第1の画像を取得することができる。ブロック504において、例示的な方法500は、特定の表情のキーポイントを決定することができる。ブロック506において、例示的な方法500は、特定の表情のキーポイントを増幅することができる。ブロック508において、例示的な方法500は、増幅されたキーポイントに基づいて、特定の表情の増幅されたバージョンをもつユーザの顔を示すユーザの第2の画像を生成することができる。本開示の様々な特徴および実施形態を取り入れた他の好適な技法が可能である。
【0059】
本開示の様々な実施形態に関連する多くの他の使用、適用例、特徴、可能性、および/または変形形態があり得ることが企図される。たとえば、ユーザは、いくつかの場合には、開示される技術を利用することをオプトイン(opt-in)するか否かを選定することができる。開示される技術は、たとえば、様々なプライバシー設定、選好、および構成が維持されることを確実にすることもでき、プライベート情報が漏らされるのを防ぐことができる。別の例では、本開示の様々な実施形態は、時間とともに学習し、改善し、および/または改良され得る。
【0060】
ソーシャルネットワーキングシステム - 例示的な実装形態
図6は、本開示の一実施形態による、様々なシナリオにおいて利用され得る例示的なシステム600のネットワーク図を示す。システム600は、1つまたは複数のユーザデバイス610と、1つまたは複数の外部システム620と、ソーシャルネットワーキングシステム(またはサービス)630と、ネットワーク650とを含む。一実施形態では、上記で説明された実施形態に関して説明されるソーシャルネットワーキングサービス、プロバイダ、および/またはシステムは、ソーシャルネットワーキングシステム630として実装され得る。説明の目的で、
図6によって示されているシステム600の実施形態は、単一の外部システム620と単一のユーザデバイス610とを含む。しかしながら、他の実施形態では、システム600は、より多くのユーザデバイス610および/またはより多くの外部システム620を含み得る。いくつかの実施形態では、ソーシャルネットワーキングシステム630は、ソーシャルネットワークプロバイダによって動作されるが、外部システム620は、外部システム620が、異なるエンティティによって動作され得るという点で、ソーシャルネットワーキングシステム630とは別個である。しかしながら、様々な実施形態では、ソーシャルネットワーキングシステム630と外部システム620とは連携して動作して、ソーシャルネットワーキングシステム630のユーザ(またはメンバー)にソーシャルネットワーキングサービスを提供する。この意味で、ソーシャルネットワーキングシステム630は、外部システム620などの他のシステムが、インターネットにわたってユーザにソーシャルネットワーキングサービスおよび機能性を提供するために使用し得る、プラットフォームまたはバックボーンを提供する。
【0061】
ユーザデバイス610は、ユーザから入力を受信し、ネットワーク650を介してデータを送信および受信することができる、1つまたは複数のコンピューティングデバイスを備える。一実施形態では、ユーザデバイス610は、たとえば、Microsoft Windows互換オペレーティングシステム(OS)、Apple OS X、および/またはLinuxディストリビューションを実行する従来のコンピュータシステムである。別の実施形態では、ユーザデバイス610は、スマートフォン、タブレット、携帯情報端末(PDA)、携帯電話など、コンピュータ機能性を有するデバイスであり得る。ユーザデバイス610は、ネットワーク650を介して通信するように構成される。ユーザデバイス610は、アプリケーション、たとえば、ユーザデバイス610のユーザがソーシャルネットワーキングシステム630と対話することを可能にするブラウザアプリケーションを実行することができる。別の実施形態では、ユーザデバイス610は、iOSおよびANDROIDなど、ユーザデバイス610のネイティブオペレーティングシステムによって提供されるアプリケーションプログラミングインターフェース(API)を通して、ソーシャルネットワーキングシステム630と対話する。ユーザデバイス610は、ネットワーク650を介して外部システム620およびソーシャルネットワーキングシステム630と通信するように構成され、ネットワーク650は、ワイヤードおよび/またはワイヤレス通信システムを使用する、ローカルエリアおよび/またはワイドエリアネットワークの任意の組合せを備え得る。
【0062】
一実施形態では、ネットワーク650は、標準通信技術およびプロトコルを使用する。したがって、ネットワーク650は、イーサネット、802.11、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(WiMAX)、3G、4G、CDMA、GSM、LTE、デジタル加入者回線(DSL)などの技術を使用するリンクを含むことができる。同様に、ネットワーク650上で使用されるネットワーキングプロトコルは、マルチプロトコルラベルスイッチング(MPLS)、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル(UDP)、ハイパーテキストトランスポートプロトコル(HTTP)、簡易メール転送プロトコル(SMTP)、ファイル転送プロトコル(FTP)などを含むことができる。ネットワーク650上で交換されるデータは、ハイパーテキストマークアップ言語(HTML)と拡張可能マークアップ言語(XML)とを含む、技術および/またはフォーマットを使用して表され得る。さらに、全部または一部のリンクは、セキュアソケットレイヤ(SSL)、トランスポートレイヤセキュリティ(TLS)、およびインターネットプロトコルセキュリティ(IPsec)など、従来の暗号化技術を使用して暗号化され得る。
【0063】
一実施形態では、ユーザデバイス610は、ブラウザアプリケーション612を使用して、外部システム620およびソーシャルネットワーキングシステム630から受信されたマークアップ言語ドキュメント614を処理することによって、外部システム620からのコンテンツおよび/またはソーシャルネットワーキングシステム630からのコンテンツを表示し得る。マークアップ言語ドキュメント614は、コンテンツと、そのコンテンツのフォーマッティングまたはプレゼンテーションを記述する1つまたは複数の命令とを識別する。マークアップ言語ドキュメント614中に含まれる命令を実行することによって、ブラウザアプリケーション612は、マークアップ言語ドキュメント614によって記述されるフォーマットまたはプレゼンテーションを使用して、識別されたコンテンツを表示する。たとえば、マークアップ言語ドキュメント614は、外部システム620およびソーシャルネットワーキングシステム630から取り出されたテキストおよび/または画像データを含む複数のフレームを有するウェブページを生成および表示するための命令を含む。様々な実施形態では、マークアップ言語ドキュメント614は、拡張可能マークアップ言語(XML)データ、拡張可能ハイパーテキストマークアップ言語(XHTML)データ、または他のマークアップ言語データを含む、データファイルを備える。さらに、マークアップ言語ドキュメント614は、外部システム620とユーザデバイス610との間のデータ交換を容易にするために、JavaScriptオブジェクト表記法(JSON)データと、パディング付きのJSON(JSONP)と、JavaScriptデータとを含み得る。ユーザデバイス610上のブラウザアプリケーション612は、マークアップ言語ドキュメント614を復号するためにJavaScriptコンパイラを使用し得る。
【0064】
マークアップ言語ドキュメント614はまた、FLASH(商標)アプリケーションまたはUnity(商標)アプリケーション、SilverLight(商標)アプリケーションフレームワークなど、アプリケーションまたはアプリケーションフレームワークを含むか、あるいはそれらのアプリケーションまたはアプリケーションフレームワークにリンクし得る。
【0065】
一実施形態では、ユーザデバイス610は、ユーザデバイス610のユーザがソーシャルネットワーキングシステム630にログインしたかどうかを指示するデータを含む、1つまたは複数のクッキー616をも含み、クッキー616は、ソーシャルネットワーキングシステム630からユーザデバイス610に通信されるデータの変更を可能にし得る。
【0066】
外部システム620は、ネットワーク650を使用してユーザデバイス610に通信される1つまたは複数のウェブページ622a、622bを含む、1つまたは複数のウェブサーバを含む。外部システム620は、ソーシャルネットワーキングシステム630とは別個である。たとえば、外部システム620は、第1のドメインに関連付けられるが、ソーシャルネットワーキングシステム630は、別個のソーシャルネットワーキングドメインに関連付けられる。外部システム620中に含まれるウェブページ622a、622bは、コンテンツを識別し、識別されたコンテンツのフォーマッティングまたはプレゼンテーションを指定する命令を含む、マークアップ言語ドキュメント614を備える。
【0067】
ソーシャルネットワーキングシステム630は、ソーシャルネットワークのための1つまたは複数のコンピューティングデバイスを含み、ソーシャルネットワークは、複数のユーザを含み、ソーシャルネットワークのユーザにソーシャルネットワークの他のユーザと通信および対話する能力を提供する。いくつかの事例では、ソーシャルネットワークは、グラフ、すなわち、エッジとノードとを含むデータ構造によって表され得る。限定はしないが、データベース、オブジェクト、クラス、メタ要素、ファイル、または任意の他のデータ構造を含む、他のデータ構造も、ソーシャルネットワークを表すために使用され得る。ソーシャルネットワーキングシステム630は、オペレータによって、運用、管理、または制御され得る。ソーシャルネットワーキングシステム630のオペレータは、人間、自動化されたアプリケーション、または、コンテンツを管理し、ポリシーを規制し、ソーシャルネットワーキングシステム630内の使用メトリックを収集するための一連のアプリケーションであり得る。任意のタイプのオペレータが使用され得る。
【0068】
ユーザは、ソーシャルネットワーキングシステム630に加入し、次いで、自身がつなげられることを望む、ソーシャルネットワーキングシステム630の任意の数の他のユーザへのつながりを追加し得る。本明細書で使用される「友達」という用語は、ユーザが、ソーシャルネットワーキングシステム630を介して、つながり、関連付け、または関係を形成した、ソーシャルネットワーキングシステム630の任意の他のユーザを指す。たとえば、一実施形態では、ソーシャルネットワーキングシステム630内のユーザがソーシャルグラフ中のノードとして表される場合、「友達」という用語は、2つのユーザノード間に形成され、2つのユーザノードを直接接続する、エッジを指すことがある。
【0069】
つながりは、ユーザによって明示的に追加され得るか、または、ユーザの共通特性(たとえば、同じ教育機関の卒業生であるユーザ)に基づいて、ソーシャルネットワーキングシステム630によって自動的に作成され得る。たとえば、第1のユーザが、特定の他のユーザを友達であるとして明確に選択する。ソーシャルネットワーキングシステム630内のつながりは、通常、両方向であるが、両方向である必要はなく、したがって、「ユーザ」および「友達」という用語は枠組みに依存する。ソーシャルネットワーキングシステム630のユーザ間のつながりは、通常、双方向(「二方向」)または「相互」であるが、つながりはまた、単方向または「一方向」であり得る。たとえば、ボブおよびジョーが、両者ともソーシャルネットワーキングシステム630のユーザであり、互いにつながっている場合、ボブおよびジョーは互いのつながりである。一方、ボブが、ジョーによってソーシャルネットワーキングシステム630に通信されたデータを閲覧するためにジョーにつながることを望むが、ジョーは、相互つながりを形成することを望まない場合、単方向つながりが確立され得る。ユーザ間のつながりは直接つながりであり得るが、ソーシャルネットワーキングシステム630のいくつかの実施形態は、つながりが、つながりの1つまたは複数のレベルまたは分離の程度を介して間接的であることを可能にする。
【0070】
ユーザ間のつながりを確立および維持し、ユーザ間の対話を可能にすることに加えて、ソーシャルネットワーキングシステム630は、ソーシャルネットワーキングシステム630によってサポートされる様々なタイプのアイテムに対してアクションをとる能力をユーザに提供する。これらのアイテムは、ソーシャルネットワーキングシステム630のユーザが属し得るグループまたはネットワーク(すなわち、人々、エンティティ、およびコンセプトのソーシャルネットワーク)、ユーザが関心があり得るイベントまたはカレンダーエントリ、ユーザがソーシャルネットワーキングシステム630を介して使用し得るコンピュータベースのアプリケーション、ソーシャルネットワーキングシステム630によってまたはソーシャルネットワーキングシステム630を通して提供されるサービスを介して、ユーザがアイテムを購入または販売することを可能にするトランザクション、およびユーザがソーシャルネットワーキングシステム630内外で実施し得る広告との対話を含み得る。これらは、ユーザがソーシャルネットワーキングシステム630上で作用し得るアイテムのわずか数例であり、多くの他の例が可能である。ユーザは、ソーシャルネットワーキングシステム630において、あるいは、ソーシャルネットワーキングシステム630とは別個の、またはネットワーク650を介してソーシャルネットワーキングシステム630に結合された外部システム620において、表されることが可能であるものと対話し得る。
【0071】
ソーシャルネットワーキングシステム630は、様々なエンティティをリンクすることも可能である。たとえば、ソーシャルネットワーキングシステム630は、ユーザが互いと対話すること、ならびに、API、ウェブサービス、または他の通信チャネルを通して外部システム620または他のエンティティと対話することを可能にする。ソーシャルネットワーキングシステム630は、複数のエッジによって相互接続された複数のノードを備える「ソーシャルグラフ」を生成および維持する。ソーシャルグラフ中の各ノードは、別のノードに作用することができるエンティティ、および/または別のノードによって作用され得るエンティティを表し得る。ソーシャルグラフは様々なタイプのノードを含み得る。ノードのタイプの例は、ユーザ、非人間エンティティ、コンテンツアイテム、ウェブページ、グループ、アクティビティ、メッセージ、コンセプト、およびソーシャルネットワーキングシステム630内のオブジェクトによって表され得る任意の他のものを含む。ソーシャルグラフ中の2つのノード間のエッジは、ノード関係から生じ得る、またはノードのうちの一方によって他方のノードに対して実施されたアクションから生じ得る、2つのノード間の特定の種類のつながりまたは関連付けを表し得る。いくつかの場合には、ノード間のエッジは重み付けされ得る。エッジの重みは、ノード間のつながりまたは関連付けの強さなど、エッジに関連付けられた属性を表すことができる。異なるタイプのエッジが、異なる重みを与えられ得る。たとえば、あるユーザが別のユーザに「いいね!」するときに作成されるエッジは、ある重みを与えられ得るが、ユーザが別のユーザを友達にするときに作成されるエッジは、異なる重みを与えられ得る。
【0072】
一例として、第1のユーザが第2のユーザを友達として識別するとき、第1のユーザを表すノードと第2のユーザを表す第2のノードとを接続する、ソーシャルグラフ中のエッジが生成される。様々なノードが互いと関係するかまたは対話するとき、ソーシャルネットワーキングシステム630は、関係および対話を反映するために、様々なノードを接続するエッジを変更する。
【0073】
ソーシャルネットワーキングシステム630は、ソーシャルネットワーキングシステム630とのユーザの対話を向上させる、ユーザ生成されたコンテンツをも含む。ユーザ生成されたコンテンツは、ユーザがソーシャルネットワーキングシステム630に追加、アップロード、送出、または「投稿」することができるものを含み得る。たとえば、ユーザは、ユーザデバイス610からソーシャルネットワーキングシステム630に投稿を通信する。投稿は、ステータス更新または他のテキストデータなどのデータ、ロケーション情報、写真などの画像、ビデオ、リンク、音楽、あるいは他の同様のデータおよび/またはメディアを含み得る。また、コンテンツは、サードパーティによってソーシャルネットワーキングシステム630に追加され得る。コンテンツ「アイテム」は、ソーシャルネットワーキングシステム630内でオブジェクトとして表される。このようにして、ソーシャルネットワーキングシステム630のユーザは、様々な通信チャネルを通して様々なタイプのメディアのテキストおよびコンテンツアイテムを投稿することによって、互いと通信することを促される。そのような通信は、互いとのユーザの対話を増加させ、ユーザがソーシャルネットワーキングシステム630と対話する頻度を増加させる。
【0074】
ソーシャルネットワーキングシステム630は、ウェブサーバ632と、API要求サーバ634と、ユーザプロファイルストア636と、つながりストア638と、アクションロガー640と、アクティビティログ642と、認証サーバ644とを含む。本発明の一実施形態では、ソーシャルネットワーキングシステム630は、様々なアプリケーションについて、追加の構成要素、より少ない構成要素、または異なる構成要素を含み得る。ネットワークインターフェース、セキュリティ機構、ロードバランサ、フェイルオーバサーバ、管理およびネットワーク動作コンソールなどの他の構成要素は、システムの詳細を不明瞭にしないように示されていない。
【0075】
ユーザプロファイルストア636は、ユーザによって申告された、またはソーシャルネットワーキングシステム630によって推測された、職歴、学歴、趣味または選好、ロケーションなど、経歴情報、人口統計学的情報、および他のタイプの記述情報を含む、ユーザアカウントに関する情報を維持する。この情報は、各ユーザが一意に識別されるように、ユーザプロファイルストア636に記憶される。ソーシャルネットワーキングシステム630はまた、異なるユーザ間の1つまたは複数のつながりを記述するデータをつながりストア638に記憶する。つながり情報は、同様または共通の職歴、グループメンバーシップ、趣味、または学歴を有するユーザを指示し得る。さらに、ソーシャルネットワーキングシステム630は、ユーザが他のユーザとの自身の関係を指定することを可能にする、異なるユーザ間のユーザ定義されたつながりを含む。たとえば、ユーザ定義されたつながりは、友達、同僚、パートナーなど、ユーザの現実の関係に匹敵する他のユーザとの関係を、ユーザが生成することを可能にする。ユーザは、あらかじめ定義されたタイプのつながりから選択するか、またはユーザ自身のつながりタイプを必要に応じて定義し得る。非人間エンティティ、バケット、クラスタセンター、画像、関心事、ページ、外部システム、コンセプトなど、ソーシャルネットワーキングシステム630内の他のノードとのつながりも、つながりストア638に記憶される。
【0076】
ソーシャルネットワーキングシステム630は、ユーザが対話し得るオブジェクトに関するデータを維持する。このデータを維持するために、ユーザプロファイルストア636およびつながりストア638は、ソーシャルネットワーキングシステム630によって維持される対応するタイプのオブジェクトのインスタンスを記憶する。各オブジェクトタイプは、オブジェクトのタイプに適した情報を記憶するのに好適である情報フィールドを有する。たとえば、ユーザプロファイルストア636は、ユーザのアカウントとユーザのアカウントに関係する情報とを記述するのに好適なフィールドをもつデータ構造を含んでいる。特定のタイプの新しいオブジェクトが作成されるとき、ソーシャルネットワーキングシステム630は、対応するタイプの新しいデータ構造を初期化し、この新しいデータ構造に一意のオブジェクト識別子を割り当て、必要に応じて、そのオブジェクトにデータを追加し始める。これは、たとえば、ユーザがソーシャルネットワーキングシステム630のユーザになるときに発生し得、ソーシャルネットワーキングシステム630は、ユーザプロファイルストア636にユーザプロファイルの新しいインスタンスを生成し、ユーザアカウントに一意の識別子を割り当て、ユーザによって提供される情報でユーザアカウントのフィールドをポピュレートし始める。
【0077】
つながりストア638は、他のユーザへのユーザのつながり、外部システム620へのつながり、または他のエンティティへのつながりを記述するのに好適なデータ構造を含む。つながりストア638はまた、つながりタイプをユーザのつながりに関連付け得、つながりタイプは、ユーザに関する情報へのアクセスを規制するためにユーザのプライバシー設定とともに使用され得る。本発明の一実施形態では、ユーザプロファイルストア636およびつながりストア638は、連合データベースとして実装され得る。
【0078】
つながりストア638と、ユーザプロファイルストア636と、アクティビティログ642とに記憶されたデータは、様々なオブジェクトを識別するためのノードと、異なるオブジェクト間の関係を識別するためにノードを接続するエッジとを使用するソーシャルグラフを、ソーシャルネットワーキングシステム630が生成することを可能にする。たとえば、第1のユーザがソーシャルネットワーキングシステム630内で第2のユーザとのつながりを確立する場合、ユーザプロファイルストア636からの第1のユーザおよび第2のユーザのユーザアカウントが、ソーシャルグラフ中のノードとして働き得る。つながりストア638によって記憶された第1のユーザと第2のユーザとの間のつながりは、第1のユーザに関連付けられたノードと第2のユーザに関連付けられたノードとの間のエッジである。この例を続けると、第2のユーザは、次いで、ソーシャルネットワーキングシステム630内で第1のユーザにメッセージを送出し得る。メッセージを送出するアクションは、第1のユーザおよび第2のユーザを表す、ソーシャルグラフ中の2つのノード間の別のエッジであり、メッセージを送出するアクションは記憶され得る。さらに、メッセージ自体が、第1のユーザおよび第2のユーザを表すノードに接続される別のノードとして、ソーシャルグラフ中で識別され、ソーシャルグラフ中に含まれ得る。
【0079】
別の例では、第1のユーザは、ソーシャルネットワーキングシステム630によって維持される画像中で(または、代替的に、ソーシャルネットワーキングシステム630の外部の別のシステムによって維持される画像中で)第2のユーザをタグ付けし得る。画像は、それ自体がソーシャルネットワーキングシステム630内のノードとして表され得る。このタグ付けアクションは、第1のユーザと第2のユーザとの間のエッジを作成し、ならびに、ユーザの各々と、同じくソーシャルグラフ中のノードである画像との間のエッジを作成し得る。また別の例では、ユーザがイベントに参加することを確認した場合、ユーザおよびイベントは、ユーザプロファイルストア636から取得されるノードであり、イベントへの参加は、アクティビティログ642から取り出され得るノード間のエッジである。ソーシャルグラフを生成および維持することによって、ソーシャルネットワーキングシステム630は、多くの異なるタイプのオブジェクトを記述するデータと、それらのオブジェクトの間の対話およびつながりとを含み、社交上関連する情報の豊富なソースを提供する。
【0080】
ウェブサーバ632は、ネットワーク650を介して、ソーシャルネットワーキングシステム630を1つまたは複数のユーザデバイス610および/または1つまたは複数の外部システム620にリンクする。ウェブサーバ632は、ウェブページ、ならびに、Java、JavaScript、Flash、XMLなどの他のウェブ関係コンテンツを供給する。ウェブサーバ632は、メールサーバ、または、ソーシャルネットワーキングシステム630と1つまたは複数のユーザデバイス610との間のメッセージを受信およびルーティングするための他のメッセージング機能性を含み得る。メッセージは、インスタントメッセージ、キューメッセージ(たとえば、電子メール)、テキストおよびSMSメッセージ、または任意の他の好適なメッセージングフォーマットであり得る。
【0081】
API要求サーバ634は、1つまたは複数の外部システム620およびユーザデバイス610が、1つまたは複数のAPI関数を呼び出すことによって、ソーシャルネットワーキングシステム630からアクセス情報を呼び出すことを可能にする。API要求サーバ634は、外部システム620が、APIを呼び出すことによって、ソーシャルネットワーキングシステム630に情報を送出することをも可能にし得る。外部システム620は、一実施形態では、ネットワーク650を介してソーシャルネットワーキングシステム630にAPI要求を送出し、API要求サーバ634は、API要求を受信する。API要求サーバ634は、API要求に関連付けられたAPIを呼び出すことによって要求を処理して適切な応答を生成し、API要求サーバ634は、この応答を、ネットワーク650を介して外部システム620に通信する。たとえば、API要求に応答して、API要求サーバ634は、外部システム620にログインしたユーザのつながりなど、ユーザに関連付けられたデータを収集し、収集されたデータを外部システム620に通信する。別の実施形態では、ユーザデバイス610は、外部システム620と同じ様式で、APIを介してソーシャルネットワーキングシステム630と通信する。
【0082】
アクションロガー640は、ソーシャルネットワーキングシステム630内での、および/またはソーシャルネットワーキングシステム630外でのユーザアクションに関する通信を、ウェブサーバ632から受信することが可能である。アクションロガー640は、ユーザアクションに関する情報でアクティビティログ642をポピュレートし、ソーシャルネットワーキングシステム630の内部およびソーシャルネットワーキングシステム630の外部でソーシャルネットワーキングシステム630のユーザによってとられた様々なアクションを、ソーシャルネットワーキングシステム630が発見することを可能にする。特定のユーザがソーシャルネットワーキングシステム630上の別のノードに関してとる任意のアクションが、アクティビティログ642あるいは同様のデータベースまたは他のデータリポジトリに維持される情報を通して、各ユーザのアカウントに関連付けられ得る。識別および記憶される、ソーシャルネットワーキングシステム630内でユーザによってとられるアクションの例は、たとえば、別のユーザへのつながりを追加すること、別のユーザにメッセージを送出すること、別のユーザからのメッセージを読むこと、別のユーザに関連付けられたコンテンツを閲覧すること、別のユーザによって投稿されたイベントに参加すること、画像を投稿すること、画像の投稿を試みること、あるいは、別のユーザまたは別のオブジェクトと対話する他のアクションを含み得る。ユーザがソーシャルネットワーキングシステム630内でアクションをとると、そのアクションは、アクティビティログ642に記録される。一実施形態では、ソーシャルネットワーキングシステム630は、アクティビティログ642をエントリのデータベースとして維持する。ソーシャルネットワーキングシステム630内でアクションがとられると、そのアクションについてのエントリが、アクティビティログ642に追加される。アクティビティログ642は、アクションログと呼ばれることもある。
【0083】
さらに、ユーザアクションは、ソーシャルネットワーキングシステム630とは別個である外部システム620など、ソーシャルネットワーキングシステム630の外部のエンティティ内で発生するコンセプトおよびアクションに関連付けられ得る。たとえば、アクションロガー640は、外部システム620とのユーザの対話を記述するデータをウェブサーバ632から受信し得る。この例では、外部システム620は、ソーシャルグラフ中の構造化されたアクションおよびオブジェクトに従って、ユーザの対話を報告する。
【0084】
ユーザが外部システム620と対話するアクションの他の例は、外部システム620または別のエンティティに対する関心をユーザが表すこと、外部システム620または外部システム620内のウェブページ622aについて説明するコメントをユーザがソーシャルネットワーキングシステム630に投稿すること、ユニフォームリソースロケータ(URL)または外部システム620に関連付けられた他の識別子をユーザがソーシャルネットワーキングシステム630に投稿すること、外部システム620に関連付けられたイベントにユーザが参加すること、あるいは、外部システム620に関係するユーザによる任意の他のアクションを含む。したがって、アクティビティログ642は、ソーシャルネットワーキングシステム630のユーザと、ソーシャルネットワーキングシステム630とは別個である外部システム620との間の対話を記述するアクションを含み得る。
【0085】
認証サーバ644は、ソーシャルネットワーキングシステム630のユーザの1つまたは複数のプライバシー設定を施行する。ユーザのプライバシー設定は、ユーザに関連付けられた特定の情報がどのように共有され得るかを決定する。プライバシー設定は、ユーザに関連付けられた特定の情報の仕様と、情報が共有され得る1つまたは複数のエンティティの仕様とを含む。情報が共有され得るエンティティの例は、他のユーザ、アプリケーション、外部システム620、または、潜在的にその情報にアクセスすることができる任意のエンティティを含み得る。ユーザによって共有され得る情報は、プロファイル写真、ユーザに関連付けられた電話番号、ユーザのつながり、つながりを追加すること、ユーザプロファイル情報を変更することなどのユーザによってとられるアクションなど、ユーザアカウント情報を含む。
【0086】
プライバシー設定の仕様は、異なるレベルの粒度において提供され得る。たとえば、プライバシー設定は、他のユーザと共有されるべき具体的な情報を識別し得、プライバシー設定は、職場電話番号、または、プロファイル写真と、自宅電話番号と、ステータスとを含む個人情報など、関係する情報の具体的なセットを識別する。代替的に、プライバシー設定は、ユーザに関連付けられたすべての情報に適用され得る。特定の情報にアクセスすることができるエンティティのセットの仕様も、様々なレベルの粒度において指定され得る。情報が共有され得るエンティティの様々なセットは、たとえば、ユーザのすべての友達、友達のすべての友達、すべてのアプリケーション、またはすべての外部システム620を含み得る。一実施形態は、エンティティのセットの仕様がエンティティの一覧表を含むことを可能にする。たとえば、ユーザは、ある情報にアクセスすることを可能にされる外部システム620のリストを提供し得る。別の実施形態は、仕様が、情報にアクセスすることを可能にされない例外とともにエンティティのセットを含むことを可能にする。たとえば、ユーザは、すべての外部システム620がユーザの職場情報にアクセスすることを可能にし得るが、職場情報にアクセスすることを可能にされない外部システム620のリストを指定し得る。いくつかの実施形態は、ある情報にアクセスすることを可能にされない例外のリストを「ブロックリスト」と呼ぶ。ユーザによって指定されるブロックリストに属する外部システム620は、プライバシー設定において指定された情報にアクセスすることをブロックされる。情報の仕様の粒度と、情報が共有されるエンティティの仕様の粒度との様々な組合せが可能である。たとえば、すべての個人情報は、友達と共有され得るが、すべての職場情報は、友達の友達と共有され得る。
【0087】
認証サーバ644は、ユーザに関連付けられたある情報が、ユーザの友達、外部システム620、ならびに/または他のアプリケーションおよびエンティティによってアクセスされ得るかどうかを決定するためのロジックを含んでいる。外部システム620は、ユーザの職場電話番号など、ユーザのよりプライベートなおよび機密性の高い情報にアクセスするために、認証サーバ644からの認証を必要とし得る。ユーザのプライバシー設定に基づいて、認証サーバ644は、別のユーザ、外部システム620、アプリケーション、または別のエンティティが、ユーザによってとられたアクションに関する情報を含む、ユーザに関連付けられた情報にアクセスすることを可能にされるかどうかを決定する。
【0088】
いくつかの実施形態では、ソーシャルネットワーキングシステム630は、顔効果生成モジュール646を含むことができる。顔効果生成モジュール646は、本明細書でより詳細に説明されるように、顔効果生成モジュール102で実装され得る。いくつかの実施形態では、顔効果生成モジュール646の1つまたは複数の機能性は、ユーザデバイス610中で実装され得る。
【0089】
ハードウェア実装形態
上記のプロセスおよび特徴は、多種多様なマシンおよびコンピュータシステムアーキテクチャによって、ならびに、多種多様なネットワークおよびコンピューティング環境において実装され得る。
図7は、本発明の一実施形態による、本明細書で説明される実施形態のうちの1つまたは複数を実装するために使用され得るコンピュータシステム700の一例を示す。コンピュータシステム700は、コンピュータシステム700に、本明細書で説明されるプロセスおよび特徴を実施させるための命令のセットを含む。コンピュータシステム700は、他のマシンに接続され(たとえば、ネットワーク化され)得る。ネットワーク化された展開では、コンピュータシステム700は、クライアントサーバネットワーク環境内のサーバマシンまたはクライアントマシンの資格で動作するか、あるいは、ピアツーピア(または分散)ネットワーク環境内のピアマシンとして動作し得る。本発明の一実施形態では、コンピュータシステム700は、ソーシャルネットワーキングシステム630、ユーザデバイス610、および外部システム620、またはそれらの構成要素であり得る。本発明の一実施形態では、コンピュータシステム700は、ソーシャルネットワーキングシステム630の全部または一部を構成する多数のサーバのうちの1つのサーバであり得る。
【0090】
コンピュータシステム700は、プロセッサ702と、キャッシュ704と、コンピュータ可読媒体に記憶され、本明細書で説明されるプロセスおよび特徴を対象とする、1つまたは複数の実行可能モジュールおよびドライバとを含む。さらに、コンピュータシステム700は、高性能入出力(I/O)バス706と、標準I/Oバス708とを含む。ホストブリッジ710は、プロセッサ702を高性能I/Oバス706に結合するが、I/Oバスブリッジ712は、2つのバス706および708を互いに結合する。システムメモリ714および1つまたは複数のネットワークインターフェース716が、高性能I/Oバス706に結合される。コンピュータシステム700は、ビデオメモリと、ビデオメモリに結合された表示デバイスとをさらに含み得る(図示せず)。大容量ストレージ718およびI/Oポート720が、標準I/Oバス708に結合される。コンピュータシステム700は、標準I/Oバス708に結合された、キーボードおよびポインティングデバイス、表示デバイス、または他の入出力デバイス(図示せず)を随意に含み得る。全体的に、これらの要素は、限定はしないが、カリフォルニア州サンタクララのIntel Corporationによって製造されるx86互換プロセッサ、カリフォルニア州サニーベルのAdvanced Micro Devices(AMD),Inc.によって製造されるx86互換プロセッサ、ならびに任意の他の好適なプロセッサに基づくコンピュータシステムを含む、広いカテゴリのコンピュータハードウェアシステムを表すものである。
【0091】
オペレーティングシステムが、ソフトウェアアプリケーション(図示せず)との間のデータの入力および出力を含む、コンピュータシステム700の動作を管理および制御する。オペレーティングシステムは、システム上で実行されているソフトウェアアプリケーションと、システムのハードウェア構成要素との間のインターフェースを提供する。LINUXオペレーティングシステム、カリフォルニア州クパチーノのApple Computer,Inc.から入手可能なApple Macintoshオペレーティングシステム、UNIXオペレーティングシステム、Microsoft(登録商標)Windows(登録商標)オペレーティングシステム、BSDオペレーティングシステムなど、任意の好適なオペレーティングシステムが使用され得る。他の実装形態が可能である。
【0092】
コンピュータシステム700の要素が以下でより詳細に説明される。特に、ネットワークインターフェース716は、コンピュータシステム700と、イーサネット(たとえば、IEEE802.3)ネットワーク、バックプレーンなど、広範囲のネットワークのうちのいずれかとの間の通信を提供する。大容量ストレージ718は、上記で識別されたそれぞれのコンピューティングシステムによって実装される上記で説明されたプロセスおよび特徴を実施するためのデータおよびプログラミング命令のための永続的なストレージを提供するが、システムメモリ714(たとえば、DRAM)は、プロセッサ702によって実行されたとき、データおよびプログラミング命令のための一時的なストレージを提供する。I/Oポート720は、コンピュータシステム700に結合され得る追加の周辺デバイス間の通信を提供する、1つまたは複数のシリアルおよび/またはパラレル通信ポートであり得る。
【0093】
コンピュータシステム700は、様々なシステムアーキテクチャを含み得、コンピュータシステム700の様々な構成要素は再構成され得る。たとえば、キャッシュ704は、プロセッサ702とともにオンチップであり得る。代替的に、キャッシュ704およびプロセッサ702は「プロセッサモジュール」としてまとめられ得、プロセッサ702が「プロセッサコア」と呼ばれる。さらに、本発明のいくつかの実施形態は、上記の構成要素のすべてを必要とするとは限らず、また、含むとは限らないことがある。たとえば、標準I/Oバス708に結合された周辺デバイスは、高性能I/Oバス706に結合され得る。さらに、いくつかの実施形態では、単一のバスのみが存在し得、コンピュータシステム700の構成要素が、その単一のバスに結合される。その上、コンピュータシステム700は、追加のプロセッサ、記憶デバイス、またはメモリなど、追加の構成要素を含み得る。
【0094】
概して、本明細書で説明されるプロセスおよび特徴は、オペレーティングシステムまたは特定のアプリケーションの一部、構成要素、プログラム、オブジェクト、モジュール、あるいは「プログラム」と呼ばれる一連の命令として実装され得る。たとえば、1つまたは複数のプログラムが、本明細書で説明される特定のプロセスを実行するために使用され得る。プログラムは、典型的には、コンピュータシステム700内の様々なメモリおよび記憶デバイス中の1つまたは複数の命令を備え、それらの命令は、1つまたは複数のプロセッサによって読み取られ、実行されたとき、コンピュータシステム700に、本明細書で説明されるプロセスおよび特徴を実行するための動作を実施させる。本明細書で説明されるプロセスおよび特徴は、ソフトウェア、ファームウェア、ハードウェア(たとえば、特定用途向け集積回路)、またはそれらの任意の組合せとして実装され得る。
【0095】
一実装形態では、本明細書で説明されるプロセスおよび特徴は、分散コンピューティング環境において個々にまたはまとめて、コンピュータシステム700によって実行される一連の実行可能モジュールとして実装される。上記のモジュールは、ハードウェア、コンピュータ可読媒体(または機械可読媒体)に記憶された実行可能モジュール、または両方の組合せによって実現され得る。たとえば、モジュールは、プロセッサ702など、ハードウェアシステム内のプロセッサによって実行されるべき複数の命令または一連の命令を備え得る。最初に、一連の命令は、大容量ストレージ718などの記憶デバイスに記憶され得る。ただし、一連の命令は、任意の好適なコンピュータ可読記憶媒体に記憶され得る。さらに、一連の命令は、ローカルに記憶される必要はなく、ネットワーク上のサーバなどのリモート記憶デバイスからネットワークインターフェース716を介して受信され得る。命令は、大容量ストレージ718などの記憶デバイスからシステムメモリ714中にコピーされ、次いで、プロセッサ702によってアクセスされ、実行される。様々な実装形態では、1つまたは複数のモジュールは、並列処理環境中の複数のサーバなど、1つまたは複数のロケーションにある1つまたは複数のプロセッサによって実行され得る。
【0096】
コンピュータ可読媒体の例は、限定はしないが、揮発性メモリデバイスおよび不揮発性メモリデバイスなどの記録可能タイプ媒体、ソリッドステートメモリ、フロッピーディスクおよび他のリムーバブルディスク、ハードディスクドライブ、磁気媒体、光ディスク(たとえば、コンパクトディスク読取り専用メモリ(CD ROM)、デジタル多用途ディスク(DVD))、他の同様の非一時的(または一時的)有形(または非有形)記憶媒体、あるいは、本明細書で説明されるプロセスおよび特徴のうちの任意の1つまたは複数を実施するためにコンピュータシステム700が実行するための一連の命令を記憶、符号化、または搬送するのに好適な任意のタイプの媒体を含む。
【0097】
説明の目的で、多数の具体的な詳細が、説明の完全な理解を提供するために記載される。しかしながら、これらの具体的な詳細なしに本開示の実施形態が実施され得ることは、当業者には明らかであろう。いくつかの事例では、モジュール、構造、プロセス、特徴、およびデバイスは、説明を不明瞭にすることを回避するために、ブロック図の形式で示される。他の事例では、データおよび論理フローを表すために、機能ブロック図およびフロー図が示される。ブロック図およびフロー図の構成要素(たとえば、モジュール、ブロック、構造、デバイス、特徴など)は、本明細書において明確に説明および図示された様式以外の様式で、様々に組み合わされ、分離され、除去され、並べ替えられ、置換され得る。
【0098】
本明細書における、「一実施形態(one embodiment)」、「一実施形態(an embodiment)」、「他の実施形態」、「一連の実施形態」、「いくつかの実施形態」、「様々な実施形態」などへの言及は、実施形態に関して説明される特定の特徴、設計、構造、または特性が本開示の少なくとも一実施形態に含まれることを意味する。本明細書内の様々な箇所における、たとえば「一実施形態では(in one embodiment)」、または「一実施形態では(in an embodiment)」という句の出現は、必ずしもすべてが同じ実施形態に言及するものとは限らず、また、別個の実施形態または代替実施形態は、他の実施形態と相互排他的ではない。その上、「実施形態」などへの明示的な言及があるか否かにかかわらず、様々な特徴が説明され、様々な特徴は、いくつかの実施形態では様々に組み合わされ、含まれ得るが、他の実施形態では様々に省略されることもある。同様に、いくつかの実施形態にとっては選好または要件であり得るが、他の実施形態にとっては選好または要件ではない、様々な特徴が説明される。
【0099】
本明細書において使用される言い回しは、主に、読みやすさおよび教授の目的で選択されており、本発明の主題を示すかまたは定めるために選択されていないことがある。したがって、本発明の範囲は、この発明を実施するための形態によってではなく、本明細書に基づく出願に関して生じる請求項によって限定されることが意図される。したがって、本発明の実施形態の開示は、以下の特許請求の範囲に記載される本発明の範囲を例示するものであり、限定するものではない。