(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-27
(45)【発行日】2022-01-19
(54)【発明の名称】ビデオ通話のための顔に基づくフレームレートのアップサンプリング
(51)【国際特許分類】
H04N 21/4402 20110101AFI20220112BHJP
H04N 7/14 20060101ALI20220112BHJP
G06T 15/10 20110101ALI20220112BHJP
G06T 7/00 20170101ALI20220112BHJP
【FI】
H04N21/4402
H04N7/14 110
G06T15/10
G06T7/00 660A
(21)【出願番号】P 2020542990
(86)(22)【出願日】2019-11-11
(86)【国際出願番号】 US2019060700
(87)【国際公開番号】W WO2021025717
(87)【国際公開日】2021-02-11
【審査請求日】2020-09-08
(32)【優先日】2019-08-07
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】カワー,ディロン
【審査官】松元 伸次
(56)【参考文献】
【文献】特開2011-227704(JP,A)
【文献】特開2011-39869(JP,A)
【文献】米国特許出願公開第2017/0132828(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F3/033-3/039
G06T1/00
7/00-7/90
11/00-19/20
H04N7/10
7/14-7/173
7/20-7/56
21/00-21/858
(57)【特許請求の範囲】
【請求項1】
方法であって、
映像に対応する映像フレームのセットを受信するステップを含み、前記映像フレームのセットは、各々が顔を含む第1の映像フレームおよび第2の映像フレームを含み、前記第2の映像フレームは、前記第1の映像フレームよりも後の映像フレームであり、前記方法はさらに、
前記第1の映像フレームに対して顔追跡を行なって第1の顔リサンプリングキーフレームを特定するステップを含み、前記第1の顔リサンプリングキーフレームは、第1の頭部変換行列および第1の顔ランドマーク頂点を含み、前記方法はさらに、
前記第2の映像フレームに対して顔追跡を行なって第2の顔リサンプリングキーフレームを特定するステップを含み、前記第2の顔リサンプリングキーフレームは、第2の頭部変換行列および第2の顔ランドマーク頂点を含み、前記方法はさらに、
補間量を導出するステップと、
前記第1の顔リサンプリングキーフレームおよび前記補間量に基づいて、第1の補間顔フレームを決定するステップと、
前記第2の顔リサンプリングキーフレームおよび前記補間量に基づいて、第2の補間顔フレームを決定するステップと、
前記補間量に基づいて、前記第1の顔リサンプリングキーフレームの第1の背景および前記第2の顔リサンプリングキーフレームの第2の背景を補間するステップと、
補間された第1の顔および補間された第2の顔をレンダリングするステップと、
前記補間された第1の背景、前記補間された第2の背景、前記補間された第1の顔、および前記補間された第2の顔に基づく最終フレームを表示するステップとを含む、方法。
【請求項2】
前記第1の背景と前記第2の背景とをブレンドすることによって、ブレンドされた背景を取得するステップと、
前記補間された第1の顔と前記補間された第2の顔とをブレンドすることによって、補間かつブレンドされた顔を取得するステップと、
前記補間かつブレンドされた顔および前記ブレンドされた背景に滑らかな顔を重ねることによって、前記最終フレームを生成するステップとをさらに含む、請求項1に記載の方法。
【請求項3】
前記第1の補間顔フレームを決定するステップは、
前記第1の頭部変換行列を用いて、平行移動ベクトル、回転クォータニオン、および拡大縮小ベクトルを抽出するステップと、
前記平行移動ベクトルを線形補間するステップと、
線形補間を用いて前記回転クォータニオンを補間することによって、補間回転クォータニオンを生成するステップと、
前記拡大縮小ベクトルを線形補間することによって、補間拡大縮小ベクトルを生成するステップと、
補間された前記平行移動ベクトル、前記補間回転クォータニオン、および前記補間拡大縮小ベクトルに基づいて、補間平行移動-回転-拡大縮小行列を作成するステップと、
前記補間平行移動-回転-拡大縮小行列を用いて、前記補間された第1の顔のための補間位置を算出するステップとを含む、請求項1
または請求項2に記載の方法。
【請求項4】
前記補間量は、
(a)前記第1の顔リサンプリングキーフレームと前記第2の顔リサンプリングキーフレームとの間の継続時間、および
(b)今回のレンダリング時間から導出される、請求項1
~請求項3のいずれか1項に記載の方法。
【請求項5】
前記第2の補間顔フレームを決定するステップは、
前記第2の顔ランドマーク頂点における各頂点のそれぞれの変位を算出するステップを含む、請求項1
~請求項4のいずれか1項に記載の方法。
【請求項6】
前記第1の背景および前記第2の背景を補間するステップは、アルファブレンドによってなされる、請求項1
~請求項5のいずれか1項に記載の方法。
【請求項7】
前記レンダリングするステップは、前記補間量に基づいて、前記
補間された第1の顔および前記補間された第2の顔のエッジのフェザリング、または、前記第1の補間顔フレームと前記第2の補間顔フレームとの間のフェーディングのうちの少なくとも1つを行なうことを含む、請求項1
~請求項6のいずれか1項に記載の方法。
【請求項8】
前記第1の映像フレームに対して顔追跡を行なうステップは、前記第1の顔リサンプリングキーフレームの第1のテクスチャ座標と、タイムスタンプとを決定するステップをさらに含み、
前記第1のテクスチャ座標は、前記第1の顔ランドマーク頂点に適用される、請求項1
~請求項7のいずれか1項に記載の方法。
【請求項9】
前記
第1の顔リサンプリングキーフレームは、前記第1の映像フレームに対してRGB(赤・緑・青)顔追跡を行なうことによって特定される、請求項1
~請求項8のいずれか1項に記載の方法。
【請求項10】
命令
を含むプログラムであって、前記命令は、1つ以上のコンピュータによって実行されると、前記1つ以上のコンピュータに動作を行なわせ、前記動作は、
映像に対応する映像フレームのセットを受信するステップを含み、前記映像フレームのセットは、各々が顔を含む第1の映像フレームおよび第2の映像フレームを含み、前記第2の映像フレームは、前記第1の映像フレームよりも後の映像フレームであり、前記動作はさらに、
前記第1の映像フレームに対して顔追跡を行なって第1の顔リサンプリングキーフレームを特定するステップを含み、前記第1の顔リサンプリングキーフレームは、第1の頭部変換行列および第1の顔ランドマーク頂点を含み、前記動作はさらに、
前記第2の映像フレームに対して顔追跡を行なって第2の顔リサンプリングキーフレームを特定するステップを含み、前記第2の顔リサンプリングキーフレームは、第2の頭部変換行列および第2の顔ランドマーク頂点を含み、前記動作はさらに、
補間量を導出するステップと、
前記第1の顔リサンプリングキーフレームおよび前記補間量に基づいて、第1の補間顔フレームを決定するステップと、
前記第2の顔リサンプリングキーフレームおよび前記補間量に基づいて、第2の補間顔フレームを決定するステップと、
前記補間量に基づいて、前記第1の顔リサンプリングキーフレームの第1の背景および前記第2の顔リサンプリングキーフレームの第2の背景を補間するステップと、
補間された第1の顔および補間された第2の顔をレンダリングするステップと、
前記補間された第1の背景、前記補間された第2の背景、前記補間された第1の顔、および前記補間された第2の顔に基づく最終フレームを表示するステップとを含む、
プログラム。
【請求項11】
前記動作はさらに、
前記第1の背景と前記第2の背景とをブレンドすることによって、ブレンドされた背景を取得するステップと、
前記補間された第1の顔と前記補間された第2の顔とをブレンドすることによって、補間
かつブレンドされた顔を取得するステップと、
前記補間かつブレンドされた顔および前記ブレンドされた背景に滑らかな顔を重ねることによって、前記最終フレームを生成するステップとを含む、請求項10に記載の
プログラム。
【請求項12】
前記第1の補間顔フレームを決定するステップは、
前記第1の頭部変換行列を用いて、平行移動ベクトル、回転クォータニオン、および拡大縮小ベクトルを抽出するステップと、
前記平行移動ベクトルを線形補間するステップと、
線形補間を用いて前記回転クォータニオンを補間することによって、補間回転クォータニオンを生成するステップと、
前記拡大縮小ベクトルを線形補間することによって、補間拡大縮小ベクトルを生成するステップと、
補間された前記平行移動ベクトル、前記補間回転クォータニオン、および前記補間拡大縮小ベクトルに基づいて、補間平行移動-回転-拡大縮小行列を作成するステップと、
前記補間平行移動-回転-拡大縮小行列を用いて、前記補間された第1の顔のための補間位置を算出するステップとを含む、請求項10
または請求項11に記載の
プログラム。
【請求項13】
前記補間量は、
(a)前記第1の顔リサンプリングキーフレームと前記第2の顔リサンプリングキーフレームとの間の継続時間、および
(b)今回のレンダリング時間から導出される、請求項10
~請求項12のいずれか1項に記載の
プログラム。
【請求項14】
前記第2の補間顔フレームを決定するステップは、
前記第2の顔ランドマーク頂点における各頂点のそれぞれの変位を算出するステップを含む、請求項10
~請求項13のいずれか1項に記載の
プログラム。
【請求項15】
前記第1の背景および前記第2の背景を補間するステップは、アルファブレンドによってなされる、請求項10
~請求項14のいずれか1項に記載の
プログラム。
【請求項16】
システムであって、
1つ以上のプロセッサと、
命令を格納するメモリとを備え、前記命令は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに動作を行なわせ、前記動作は、
映像に対応する映像フレームのセットを受信するステップを含み、前記映像フレームのセットは、各々が顔を含む第1の映像フレームおよび第2の映像フレームを含み、前記第2の映像フレームは、前記第1の映像フレームよりも後の映像フレームであり、前記動作はさらに、
前記第1の映像フレームに対して顔追跡を行なって第1の顔リサンプリングキーフレームを特定するステップを含み、前記第1の顔リサンプリングキーフレームは、第1の頭部変換行列および第1の顔ランドマーク頂点を含み、前記動作はさらに、
前記第2の映像フレームに対して顔追跡を行なって第2の顔リサンプリングキーフレームを特定するステップを含み、前記第2の顔リサンプリングキーフレームは、第2の頭部変換行列および第2の顔ランドマーク頂点を含み、前記動作はさらに、
補間量を導出するステップと、
前記第1の顔リサンプリングキーフレームおよび前記補間量に基づいて、第1の補間顔フレームを決定するステップと、
前記第2の顔リサンプリングキーフレームおよび前記補間量に基づいて、第2の補間顔フレームを決定するステップと、
前記補間量に基づいて、前記第1の顔リサンプリングキーフレームの第1の背景および
前記第2の顔リサンプリングキーフレームの第2の背景を補間するステップと、
補間された第1の顔および補間された第2の顔をレンダリングするステップと、
前記補間された第1の背景、前記補間された第2の背景、前記補間された第1の顔、および前記補間された第2の顔に基づく最終フレームを表示するステップとを含む、システム。
【請求項17】
前記動作はさらに、
前記第1の背景と前記第2の背景とをブレンドすることによって、ブレンドされた背景を取得するステップと、
前記補間された第1の顔と前記補間された第2の顔とをブレンドすることによって、補間かつブレンドされた顔を取得するステップと、
前記補間かつブレンドされた顔および前記ブレンドされた背景に滑らかな顔を重ねることによって、前記最終フレームを生成するステップとを含む、請求項16に記載のシステム。
【請求項18】
前記第1の補間顔フレームを決定するステップは、
前記第1の頭部変換行列を用いて、平行移動ベクトル、回転クォータニオン、および拡大縮小ベクトルを抽出するステップと、
前記平行移動ベクトルを線形補間するステップと、
線形補間を用いて前記回転クォータニオンを補間することによって、補間回転クォータニオンを生成するステップと、
前記拡大縮小ベクトルを線形補間することによって、補間拡大縮小ベクトルを生成するステップと、
補間された前記平行移動ベクトル、前記補間回転クォータニオン、および前記補間拡大縮小ベクトルに基づいて、補間平行移動-回転-拡大縮小行列を作成するステップと、
前記補間平行移動-回転-拡大縮小行列を用いて、前記補間された第1の顔のための補間位置を算出するステップとを含む、請求項16
または請求項17に記載のシステム。
【請求項19】
前記補間量は、
(a)前記第1の顔リサンプリングキーフレームと前記第2の顔リサンプリングキーフレームとの間の継続時間、および
(b)今回のレンダリング時間から導出される、請求項16
~請求項18のいずれか1項に記載のシステム。
【請求項20】
前記第2の補間顔フレームを決定するステップは、
前記第2の顔ランドマーク頂点における各頂点のそれぞれの変位を算出するステップを含む、請求項16
~請求項19のいずれか1項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2019年8月7日に出願された、「ビデオ通話のための顔に基づくフレームレートのアップサンプリング」と題する米国仮出願第62/884,135号に基づく優先権を主張し、その内容全体を本明細書に引用により援用する。
【背景技術】
【0002】
背景
モバイル機器上での映像ストリーミング(例えば、ビデオ通話アプリケーションで使用される映像ストリーミング)において、帯域幅または他のリソースを節約するために、低フレームレート(例えば、15フレーム毎秒(fps))が用いられる場合がある。しかしながら、低フレームレートは、見る側にとって不満足な体験をもたらすことになる。例えば、ビデオ通話において対象の人物が素早い動作をした場合、低フレームレートでは、見る側がつっかえた動作を知覚することになる可能性がある。多くのモバイル機器は、より高いフレームレート(例えば、25fps、30fps、60fps、90fpsなど)の映像をレンダリングすることが可能であるが、帯域幅、バッテリ、またはローカルの処理能力の制約により、高フレームレートとすることが現実的ではない場合がある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
従来の動作補間技術では、オプティカルフローまたはボクセルフローを用いてフレーム間の画素の動きを検出する。フレーム間フローを補間することによって、補間フレームが合成される。しかしながら、フローの決定および補間は、デスクトップコンピュータのグラフィックスプロセッシングユニット上で行なったとしても、計算処理に費用がかかる。なぜなら、フレーム間の動きを特定するためには、画素毎に解析する必要があるからである。したがって、この手法は、計算性能の制約があるモバイル機器または他のデバイス上で映像の表示に使用するには、計算処理の点で非常に厳しいものである。また、従来の動作補間は、映像の前処理が行なわれるテレビではうまく機能するが、映像がリアルタイムで表示される映像ストリーミングでは実現不可能である。
【0004】
上記で説明した背景は、本開示の文脈を一般的に提示することを目的とする。この背景の項に記載された範囲の現発明者の研究、および、出願時において先行技術として適格ではなかった本明細書の局面については、本開示に対する先行技術として明示的にも黙示的にも認めるものではない。
【課題を解決するための手段】
【0005】
概要
実施形態は、概括すると、映像に対応する映像フレームのセットを受信するステップを含む方法に関する。映像フレームのセットは、各々が顔を含む第1の映像フレームおよび第2の映像フレームを含む。第2の映像フレームは、第1の映像フレームよりも後の映像フレームである。上記方法はさらに、第1の映像フレームに対して顔追跡を行なって第1の顔リサンプリングキーフレームを特定するステップを含む。第1の顔リサンプリングキーフレームは、第1の頭部変換行列および第1の顔ランドマーク頂点を含む。上記方法はさらに、第2の映像フレームに対して顔追跡を行なって第2の顔リサンプリングキーフレームを特定するステップを含む。第2の顔リサンプリングキーフレームは、第2の頭部変換行列および第2の顔ランドマーク頂点を含む。上記方法はさらに、補間量を導出するステップを含む。上記方法はさらに、第1の顔リサンプリングキーフレームおよび補間量に基づいて、第1の補間顔フレームを決定するステップを含む。上記方法はさらに、第2の顔リサンプリングキーフレームおよび補間量に基づいて、第2の補間顔フレームを決定するステップを含む。上記方法はさらに、補間量に基づいて、第1の顔リサンプリングキーフレームの第1の背景および第2の顔リサンプリングキーフレームの第2の背景を補間するステップを含む。上記方法はさらに、補間された第1の顔および補間された第2の顔をレンダリングするステップを含む。上記方法はさらに、補間された第1の背景、補間された第2の背景、補間された第1の顔、および補間された第2の顔に基づく最終フレームを表示するステップを含む。
【0006】
ある実施形態では、上記方法はさらに、第1の背景と第2の背景とをブレンドすることによって、ブレンドされた背景を取得するステップと、補間された第1の顔と補間された第2の顔とをブレンドすることによって、補間かつブレンドされた顔を取得するステップと、補間かつブレンドされた顔およびブレンドされた背景に滑らかな顔を重ねることによって、最終フレームを生成するステップとを含む。ある実施形態では、第1の補間顔フレームを決定するステップは、第1の頭部変換行列を用いて、平行移動ベクトル、回転クォータニオン、および拡大縮小ベクトルを抽出するステップと、平行移動ベクトルを線形補間するステップと、線形補間を用いて回転クォータニオンを補間することによって、補間回転クォータニオンを生成するステップと、拡大縮小ベクトルを線形補間することによって、補間拡大縮小ベクトルを生成するステップと、補間平行移動ベクトル、補間回転クォータニオン、および補間拡大縮小ベクトルに基づいて、補間平行移動-回転-拡大縮小行列を作成するステップと、補間平行移動-回転-拡大縮小行列を用いて、補間された第1の顔のための補間位置を算出するステップとを含む。ある実施形態では、補間量は、(a)第1の顔リサンプリングキーフレームと第2の顔リサンプリングキーフレームとの間の継続時間、および(b)今回のレンダリング時間から導出される。ある実施形態では、第2の補間顔フレームを決定するステップは、第2の顔ランドマーク頂点における各頂点のそれぞれの変位を算出するステップを含む。ある実施形態では、第1の背景および第2の背景を補間するステップは、アルファブレンドによってなされる。ある実施形態では、レンダリングするステップは、補間量に基づいて、顔のエッジのフェザリング、または、第1の補間顔フレームと第2の補間顔フレームとの間のフェーディングのうちの少なくとも1つを行なうことを含む。ある実施形態では、第1の映像フレームに対して顔追跡を行なうステップは、第1の顔リサンプリングキーフレームの第1のテクスチャ座標と、タイムスタンプとを決定するステップをさらに含み、第1のテクスチャ座標は、第1の顔ランドマーク頂点に適用される。ある実施形態では、第1の背景および顔は、第1の映像フレームに対してRGB(赤・緑・青)顔追跡を行なうことによって特定される。
【0007】
命令を格納した非一時的なコンピュータ読取り可能媒体であって、上記命令は、1つ以上のコンピュータによって実行されると、上記1つ以上のコンピュータに動作を行なわせ得る。上記動作は、映像に対応する映像フレームのセットを受信するステップを含む。映像フレームのセットは、各々が顔を含む第1の映像フレームおよび第2の映像フレームを含む。第2の映像フレームは、第1の映像フレームよりも後の映像フレームである。上記動作はさらに、第1の映像フレームに対して顔追跡を行なって第1の顔リサンプリングキーフレームを特定するステップを含む。第1の顔リサンプリングキーフレームは、第1の頭部変換行列および第1の顔ランドマーク頂点を含む。上記動作はさらに、第2の映像フレームに対して顔追跡を行なって第2の顔リサンプリングキーフレームを特定するステップを含む。第2の顔リサンプリングキーフレームは、第2の頭部変換行列および第2の顔ランドマーク頂点を含む。上記動作はさらに、補間量を導出するステップと、第1の顔リサンプリングキーフレームおよび補間量に基づいて、第1の補間顔フレームを決定するステップと、第2の顔リサンプリングキーフレームおよび補間量に基づいて、第2の補間顔フレームを決定するステップと、補間量に基づいて、第1の顔リサンプリングキーフレームの第1の背景および第2の顔リサンプリングキーフレームの第2の背景を補間するステップと、補間された第1の顔および補間された第2の顔をレンダリングするステップと、補間された第1の背景、補間された第2の背景、補間された第1の顔、および補間された第2の顔に基づく最終フレームを表示するステップとを含む。
【0008】
ある実施形態では、上記動作はさらに、第1の背景と第2の背景とをブレンドすることによって、ブレンドされた背景を取得するステップと、補間された第1の顔と補間された第2の顔とをブレンドすることによって、補間かつブレンドされた顔を取得するステップと、補間かつブレンドされた顔およびブレンドされた背景に滑らかな顔を重ねることによって、最終フレームを生成するステップとを含む。ある実施形態では、第1の補間顔フレームを決定するステップは、第1の頭部変換行列を用いて、平行移動ベクトル、回転クォータニオン、および拡大縮小ベクトルを抽出するステップと、平行移動ベクトルを線形補間するステップと、線形補間を用いて回転クォータニオンを補間することによって、補間回転クォータニオンを生成するステップと、拡大縮小ベクトルを線形補間することによって、補間拡大縮小ベクトルを生成するステップと、補間平行移動ベクトル、補間回転クォータニオン、および補間拡大縮小ベクトルに基づいて、補間平行移動-回転-拡大縮小行列を作成するステップと、補間平行移動-回転-拡大縮小行列を用いて、補間された第1の顔のための補間位置を算出するステップとを含む。ある実施形態では、補間量は、(a)第1の顔リサンプリングキーフレームと第2の顔リサンプリングキーフレームとの間の継続時間、および(b)今回のレンダリング時間から導出される。ある実施形態では、第2の補間顔フレームを決定するステップは、第2の顔ランドマーク頂点における各頂点のそれぞれの変位を算出するステップを含む。ある実施形態では、第1の背景および第2の背景を補間するステップは、アルファブレンドによってなされる。
【0009】
システムは、1つ以上のプロセッサと、命令を格納するメモリとを備えてもよい。上記命令は、1つ以上のプロセッサによって実行されると、上記1つ以上のプロセッサに動作を行なわせる。上記動作は、映像に対応する映像フレームのセットを受信するステップを含む。映像フレームのセットは、各々が顔を含む第1の映像フレームおよび第2の映像フレームを含む。第2の映像フレームは、第1の映像フレームよりも後の映像フレームである。上記動作はさらに、第1の映像フレームに対して顔追跡を行なって第1の顔リサンプリングキーフレームを特定するステップを含む。第1の顔リサンプリングキーフレームは、第1の頭部変換行列および第1の顔ランドマーク頂点を含む。上記動作はさらに、第2の映像フレームに対して顔追跡を行なって第2の顔リサンプリングキーフレームを特定するステップを含む。第2の顔リサンプリングキーフレームは、第2の頭部変換行列および第2の顔ランドマーク頂点を含む。上記動作はさらに、補間量を導出するステップと、第1の顔リサンプリングキーフレームおよび補間量に基づいて、第1の補間顔フレームを決定するステップと、第2の顔リサンプリングキーフレームおよび補間量に基づいて、第2の補間顔フレームを決定するステップと、補間量に基づいて、第1の顔リサンプリングキーフレームの第1の背景および第2の顔リサンプリングキーフレームの第2の背景を補間するステップと、補間された第1の顔および補間された第2の顔をレンダリングするステップと、補間された第1の背景、補間された第2の背景、補間された第1の顔、および補間された第2の顔に基づく最終フレームを表示するステップとを含む。
【0010】
ある実施形態では、上記動作はさらに、第1の背景と第2の背景とをブレンドするステップと、補間された第1の顔と補間された第2の顔とをブレンドするステップと、補間かつブレンドされた顔およびブレンドされた背景に滑らかな顔を重ねることによって、最終フレームを生成するステップとを含む。ある実施形態では、第1の補間顔フレームを決定するステップは、第1の頭部変換行列を用いて、平行移動ベクトル、回転クォータニオン、および拡大縮小ベクトルを抽出するステップと、平行移動ベクトルを線形補間するステップと、線形補間を用いて回転クォータニオンを補間することによって、補間回転クォータニオンを生成するステップと、拡大縮小ベクトルを線形補間することによって、補間拡大縮小ベクトルを生成するステップと、補間平行移動ベクトル、補間回転クォータニオン、および補間拡大縮小ベクトルに基づいて、補間平行移動-回転-拡大縮小行列を作成するステップと、補間平行移動-回転-拡大縮小行列を用いて、補間された第1の顔のための補間位置を算出するステップとを含む。ある実施形態では、補間量は、(a)第1の顔リサンプリングキーフレームと第2の顔リサンプリングキーフレームとの間の継続時間、および(b)今回のレンダリング時間から導出される。ある実施形態では、第2の補間顔フレームを決定するステップは、第2の顔ランドマーク頂点における各頂点のそれぞれの変位を算出するステップを含む。
【0011】
添付の図面における開示内容は、限定ではなく例として示されるものである。図面では、同様の要素を指すために同じ参照符号を用いる。
【図面の簡単な説明】
【0012】
【
図1】ある実施形態に係る、補間映像フレームが生成される環境の一例を示すブロック図である。
【
図2】ある実施形態に係る、補間映像フレームを生成するコンピューティングデバイスの一例を示すブロック図である。
【
図3A】ある実施形態に係る、第1の顔リサンプリングキーフレームの一例を示す図である。
【
図3B】ある実施形態に係る、第1の顔リサンプリングキーフレームの一例を示す図である。
【
図3C】ある実施形態に係る、補間メッシュに基づいてワーピングされた第1のフレームのテクスチャを有する出力画像を示す図である。
【
図3D】ある実施形態に係る、補間メッシュに基づいてワーピングされた第2のフレームのテクスチャを有する出力画像を示す図である。
【
図4A】ある実施形態に係る、7.5フレーム毎秒(fps)で送信された映像の入力映像フレームの一例を示す図である。
【
図4B】ある実施形態に係る、240fpsの補間された第1の顔および補間された第2の顔を示す図である。
【
図5A】ある実施形態に係る、7.5fpsで送信された映像の入力映像フレームの一例を示す図である。
【
図5B】ある実施形態に係る、重ねて描かれる滑らかな顔を準備するためにフェーディングさせた240fpsの映像フレームを示す図である。
【
図6A】ある実施形態に係る、7.5fpsで送信された映像の入力映像フレームの一例を示す図である。
【
図6B】ある実施形態に係る、240fpsでレンダリングされ、かつ240fpsでレンダリングされた第1の補間顔フレームおよび第2の補間顔フレームに基づくブレンドされたフレームの一例を、背景なしで示す図である。
【
図7A】ある実施形態に係る、7.5fpsで送信された映像の入力映像フレームの一例を示す図である。
【
図7B】ある実施形態に係る、ユーザデバイスに表示される最終フレームを示す図である。
【
図8】2つのフレームシーケンスを示す図である。1つは補間なしの低フレームレートであり、もう1つは、ある実施形態に従って追加のフレームがフレームシーケンスに補間され追加されて、フレームレートが高められたものである。
【
図9A】ある実施形態に係る、補間映像フレームを生成するための方法の一例を示すフローチャートである。
【
図9B】ある実施形態に係る、補間映像フレームを生成するための方法の一例を示すフローチャートである。
【発明を実施するための形態】
【0013】
詳細な説明
ある実施形態では、モバイル機器は、映像に対応する映像フレームのセットを受信する。例えば、映像フレームのセットは、各々が顔を含む第1の映像フレームおよび第2の映像フレームを含み得る。第2の映像フレームは、第1の映像フレームよりも後の映像フレームであり得る。モバイル機器は、第1の映像フレームに対して顔追跡を行なって、第1の頭部変換行列と第1の顔ランドマーク頂点とを含む第1の顔リサンプリングキーフレームを特定し得る。また、第2の映像フレームに対して顔追跡を行なって、第2の頭部変換行列と第2の顔ランドマーク頂点とを含む第2の顔リサンプリングキーフレームを特定し得る。補間量を導出する。第1の顔リサンプリングキーフレームおよび補間量に基づいて、第1の補間顔フレームを決定する。第2の顔リサンプリングキーフレームおよび補間量に基づいて、第2の補間顔フレームを決定する。補間量に基づいて、第1の顔リサンプリングキーフレームの第1の背景および第2の顔リサンプリングキーフレームの第2の背景を補間する。補間された第1の顔および補間された第2の顔をレンダリングする。補間された第1の背景、補間された第2の背景、補間された第1の顔、および補間された第2の顔に基づく最終フレームを表示する。
【0014】
以下に記載するさまざまな実施形態は、いくつかの有利な点を有する。1つ目は、映像を表示するユーザデバイスによって処理が行なわれる点である。したがって、知覚フレームレートが高められた映像を表示するために映像アプリケーションが要する計算能力が少なくて済む。2つ目は、これらの実施形態では、映像を表示する受信デバイスが送信デバイスからエンドツーエンド暗号化によって映像を受信した場合であっても、受信映像フレームレートよりも高いフレームレートを提供することができる点である。3つ目は、映像フレームの構造は補間されるがテクスチャは補間されないので、計算処理の点で効率的に補間を行なうことができる点である。
【0015】
システムの例
図1は、補間映像フレームを生成する環境100の一例を示すブロック図である。図示されたシステム100は、映像サーバ101、ユーザデバイス115a,115n、およびネットワーク105を含む。ユーザ125a,125nは、ユーザデバイス115a,115nのそれぞれに関連付けられていてもよい。ある実施形態では、システム100は、
図1に示していない他のサーバまたはデバイスを含んでもよい。
図1およびその他の図において、後に文字が付く参照符号(例えば、「115a」)は、その特定の参照符号を有する要素への参照を示す。本文中、後に文字が付かない参照符号(例えば、「115」)は、その参照符号を有する要素の実施形態への一般的な参照を示す。
【0016】
映像サーバ101は、プロセッサ、メモリ、およびネットワーク通信機能を備えてもよい。ある実施形態では、映像サーバ101はハードウェアサーバである。映像サーバ101は、信号線102を介してネットワーク105に通信可能に接続されている。信号線102は、イーサネット(登録商標)、同軸ケーブル、光ファイバーケーブルなどの有線接続であってもよいし、Wi-Fi(登録商標)、ブルートゥース(登録商標)、または他の無線技術などの無線接続であってもよい。ある実施形態では、映像サーバ101は、ネットワーク105を介してユーザデバイス115a,115nのうちの1つ以上との間でデータを送受信する。映像サーバ101は、映像アプリケーション103aおよびデータベース199を含み得る。
【0017】
映像アプリケーション103aは、あるユーザデバイス115aから映像ストリームを受信し、その映像ストリームを別のユーザデバイス115nに送信するように動作可能なコードおよびルーチンを含み得る。例えば、映像ストリームは、エンドツーエンド方式で暗号化され得る。この場合、映像サーバ101は、映像処理を行なうことなく映像ストリームをデータとして中継することになる。ある実施形態では、映像アプリケーション103は、ハードウェアによって実現されてもよい。ハードウェアは、中央処理装置(CPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、他の任意の種類のプロセッサ、またはこれらの組み合わせなどを含み得る。ある実施形態では、映像アプリケーション103は、ハードウェアおよびソフトウェアの組み合わせによって実現されてもよい。
【0018】
データベース199には、ユーザ125やユーザ125のユーザ基本設定などに関連付けられたソーシャルネットワークデータが格納されてもよい。
【0019】
本明細書に記載のシステムおよび方法がユーザに関する個人情報(例えば、ユーザデータ、ユーザのソーシャルネットワークに関する情報、ユーザの位置、ユーザの生体情報、ユーザのアクティビティおよび/または対象層情報、映像アプリケーション103による映像の格納および解析など)を収集または使用し得る状況において、個人情報を収集させるか否か、個人情報を格納させるか否か、個人情報を使用させるか否か、画像または映像を解析させるか否か、ユーザに関する情報をどのように収集、格納、および使用させるかを制御する機会がユーザに与えられる。すなわち、本明細書に記載のシステムおよび方法は、関係するユーザから明示的な承諾を受信した場合にのみ、ユーザ個人情報を収集、格納、および/または使用できるようにしてもよい。例えば、ユーザは、プログラムまたは機能に、当該特定のユーザまたは当該プログラムもしくは機能に関係する他のユーザに関するユーザ情報を収集させるか否かを制御することができる。個人情報が収集される各ユーザに対して、当該ユーザに関係する情報収集の制御を可能にするための1つ以上のオプションが提示される。このオプションとは、情報を収集させるか否か、および情報の何れの部分を収集させるかについて、許可または承諾を付与させるものである。例えば、このような制御オプションのうちの1つ以上を、通信ネットワークを介してユーザに提供してもよい。さらに、あるデータの格納または使用前に、個人識別情報を取り除くようにそのデータを1つ以上の方法で処理してもよい。一例として、ユーザの具体的な位置が特定されないように、ユーザの地理的な位置をより広範な地域に一般化してもよい。
【0020】
ユーザデバイス115は、メモリおよびハードウェアプロセッサを含むコンピューティングデバイスであってもよい。例えば、ユーザデバイス115は、デスクトップコンピュータ、モバイル機器、タブレットコンピュータ、携帯電話、ウェアラブルデバイス、ヘッドマウントディスプレイ、モバイル電子メールデバイス、携帯ゲーム機、携帯音楽プレーヤー、電子書籍端末、または、ネットワーク105にアクセス可能な別の電子機器を含み得る。
【0021】
図示された実現例では、ユーザデバイス115aは信号線108を介してネットワーク105に接続されており、ユーザデバイス115nは信号線110を介してネットワーク105に接続されている。信号線108および110は、イーサネット(登録商標)同軸ケーブル、光ファイバーケーブルなどの有線接続であってもよいし、Wi-Fi(登録商標)、ブルートゥース(登録商標)、または他の無線技術などの無線接続であってもよい。ユーザデバイス115a,115nは、それぞれユーザ125a,125nによってアクセスされる。
図1のユーザデバイス115a,115nは、一例として用いられるものである。
図1は115aおよび115nの2つのユーザデバイスを示しているが、本開示は、1つ以上のユーザデバイス115を有するシステムアーキテクチャに適用される。
【0022】
ある実施形態では、ユーザデバイス115は、ユーザ125によって装着されるウェアラブルデバイスであってもよい。例えば、ユーザデバイス115nは、クリップ(例えば、リストバンド)の一部、宝飾品の一部、または眼鏡の一部として含まれる。別の例では、ユーザデバイス115nはスマートウォッチであってもよい。ユーザ125nは、自身が装着するユーザデバイス115nのディスプレイ上で、映像アプリケーション103cによって生成された映像を閲覧し得る。例えば、映像アプリケーション103cは、補間映像フレームをユーザデバイス115n上に表示し得る。
【0023】
ある実施形態では、ユーザデバイス115aは、ビデオ通話のための映像を生成する映像アプリケーション103bを含んでもよい。ユーザデバイス115aは、ビデオ通話の際、ネットワーク105を介して直接、または映像サーバ101を介して、映像ストリームをユーザデバイス115nに送信し得る。ユーザデバイス115nは、映像アプリケーション103cを含み得る。映像アプリケーション103cは、映像ストリーム(一方向映像)を表示するものであってもよいし、別のデバイス上で実行される映像アプリケーションに含まれるものであってもよい(双方向映像、またはビデオ通話アプリケーションの一部として)。
【0024】
ユーザデバイス115nは、映像アプリケーション103cを含む受信デバイスである。ユーザデバイス115nは、映像に対応する映像フレームのセットを受信する。映像アプリケーション103cは、フレーム中の顔および背景を特定し、補間顔フレームを構築し、フレームの背景を補間し、補間された顔をレンダリングし、フレーム中の補間された顔および補間された背景に基づく最終フレームを表示する。
【0025】
図示された実現例では、システム100のエンティティ同士は、ネットワーク105を介して通信可能に接続されている。ネットワーク105は、有線または無線の従来のタイプであってもよく、スター型構成、トークンリング型構成、または他の構成を含む多数のさまざまな構成を有し得る。さらに、ネットワーク105は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)(例えば、インターネット)、および/または、複数のデバイス同士の通信経路となり得る他の相互接続データパスを含み得る。ある実施形態では、ネットワーク105は、ピアツーピア方式のネットワークであってもよい。ネットワーク105は、さまざまな異なる通信プロトコルでデータを送信するための電気通信ネットワークに接続されてもよく、またはその電気通信ネットワークの一部を含んでもよい。ある実施形態では、ネットワーク105は、ブルートゥース(登録商標)通信ネットワーク、Wi-Fi(登録商標)、IEEE902.11によって規定された無線ローカルエリアネットワーク(WLAN)コンピュータ通信、または、ショート・メッセージ・サービス(SMS)、マルチメディア・メッセージング・サービス(MMS)、ハイパーテキスト・トランスファー・プロトコル(HTTP)、直接データ接続、電子メールなどを介してデータを送受信するためのセルラー通信ネットワークを含む。
図1はユーザデバイス115および映像サーバ101に接続された1つのネットワーク105を示しているが、実際には1つ以上のネットワーク105がこれらのエンティティに接続されていてもよい。
【0026】
コンピューティングデバイスの例
図2は、補間映像フレームを生成するコンピューティングデバイス200の一例を示すブロック図である。コンピューティングデバイス200は、ユーザデバイス115または映像サーバ101であり得る。コンピューティングデバイス200は、プロセッサ235、メモリ237、通信ユニット239、ディスプレイ241、およびストレージデバイス247を含み得る。コンピューティングデバイス200の種類に応じて、追加のコンポーネントを含んでもよいし、上記のコンポーネントのうちの一部を省いてもよい。映像アプリケーション103は、メモリ237に格納され得る。ある実施形態では、コンピューティングデバイス200は、上記で挙げていない他のコンポーネント(例えば、バッテリなど)を含んでもよい。コンピューティングデバイス200のコンポーネント同士は、バス220によって通信可能に接続されてもよい。
【0027】
プロセッサ235は、算術論理演算ユニット、マイクロプロセッサ、汎用制御装置、または、計算を実行し表示装置に命令を与える他の何らかのプロセッサアレイを含む。プロセッサ235はデータを処理するものであり、CISC(Complex Instruction Set Computer)アーキテクチャ、RISC(Reduced Instruction Set Computer)アーキテクチャ、または命令セットの組み合わせを実現するアーキテクチャなどのさまざまなコンピューティングアーキテクチャを含み得る。
図2には1つのプロセッサ235が含まれているが、複数のプロセッサ235が含まれてもよい。他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ、および物理的コンフィギュレーションがコンピューティングデバイス200の一部を成してもよい。プロセッサ235はバス220に接続されており、信号線222を介して他のコンポーネントと通信可能である。
【0028】
メモリ237は、プロセッサ235によって実行され得る命令、および/またはデータを格納する。この命令は、本明細書に記載の技術を行なうためのコードを含み得る。メモリ237は、ダイナミックランダムアクセスメモリ(DRAM)デバイス、スタティックRAM、または他の何らかのメモリデバイスであってもよい。ある実施形態では、メモリ237は、スタティックランダムアクセスメモリ(SRAM)デバイスもしくはフラッシュメモリなどの不揮発性メモリ、または同様の永久ストレージデバイスおよび媒体も含む。永久ストレージデバイスおよび媒体の例としては、ハードディスクドライブ、CD-ROMデバイス、DVD-ROMデバイス、DVD-RAMデバイス、DVD-RWデバイス、フラッシュメモリデバイス、または永久的に情報を格納するための他の何らかの大容量ストレージデバイスなどがある。メモリ237は、映像アプリケーション103を実行するように動作可能なコードおよびルーチンを含む。これについては、以下で詳述する。メモリ237はバス220に接続されており、信号線224を介して他のコンポーネントと通信可能である。
【0029】
通信ユニット239は、ユーザデバイス115および映像サーバ101のうちの少なくとも1つとの間でデータを送受信する。ある実施形態では、通信ユニット239は、1つまたは複数の無線通信方法を用いてユーザデバイス115、映像サーバ101、または他の通信チャネルとの間でデータをやり取りするための無線トランシーバを含む。無線通信方法には、IEEE802.11、IEEE802.16、ブルートゥース(登録商標)または別の適切な無線通信方法が含まれる。通信ユニット239はバス220に接続されており、信号線226を介して他のコンポーネントと通信可能である。
【0030】
ある実施形態では、通信ユニット239は、セルラー通信ネットワークを介して、例えばショート・メッセージ・サービス(SMS)、マルチメディア・メッセージング・サービス(MMS)、ハイパーテキスト・トランスファー・プロトコル(HTTP)、直接データ接続、電子メールまたは別の適切な種類の電子通信などによってデータを送受信するためのセルラー通信トランシーバを含む。ある実施形態では、通信ユニット239は、有線ポートおよび無線トランシーバを含む。通信ユニット239は、標準ネットワークプロトコルを用いてファイルおよび/またはメディアオブジェクトを分散させるために、ネットワーク105への他の従来の接続も提供する。標準ネットワークプロトコルには、ユーザデータグラムプロトコル(UDP)、TCP/IP、HTTP、HTTPS、シンプル・メール・トランスファー・プロトコル(SMTP)、SPDY、QUIC(Quick UDP Internet Connections)などがあるが、これらに限定されない。通信ユニット239はバス220に接続されており、信号線226を介して他のコンポーネントと通信可能である。
【0031】
ディスプレイ241は、映像アプリケーション103から受信したグラフィックデータを表示するように動作可能なハードウェアを含んでもよい。例えば、ディスプレイ241は、グラフィックをレンダリングして、映像の映像フレームを表示し得る。ディスプレイ241は、例えば液晶ディスプレイ(LCD)やOLEDなど、如何なる種類のディスプレイであってもよい。ある実施形態では、ディスプレイ241は投影スクリーンであってもよい。ある実施形態では、例えばデバイス241が拡張現実デバイスである場合、ディスプレイ241は立体ディスプレイであってもよい。ディスプレイ241はバス220に接続されており、信号線228を介して他のコンポーネントと通信可能である。
【0032】
ストレージデバイス247は、本明細書に記載の機能を提供するデータを格納する非一時的なコンピュータ読取り可能記憶媒体であってもよい。コンピューティングデバイス200が映像サーバ101である実施形態では、ストレージデバイス247は、
図1のデータベース199を含んでもよい。ストレージデバイス247は、DRAMデバイス、SRAMデバイス、フラッシュメモリ、または他の何らかのメモリデバイスであってもよい。ある実施形態では、ストレージデバイス247は、不揮発性メモリまたは同様の永久ストレージデバイスおよび媒体も含む。永久ストレージデバイスおよび媒体の例としては、ハードディスクドライブ、CD-ROMデバイス、DVD-ROMデバイス、DVD-RAMデバイス、DVD-RWデバイス、フラッシュメモリデバイス、または永久的に情報を格納するための他の何らかの大容量ストレージデバイスなどがある。ストレージデバイス247はバス220に接続されており、信号線230を介して他のコンポーネントと通信可能である。
【0033】
映像アプリケーション103は、デコーダ202、映像アナライザ204、顔リサンプラー206、およびユーザインターフェイスモジュール208を含み得る。
【0034】
デコーダ202は、符号化された映像フレームを復号する。ある実施形態では、デコーダ202は、プロセッサ235によって実行されると符号化された映像フレーム(例えば、コンピューティングデバイス200とのビデオ通話に参加している送信デバイスから受信した映像フレーム)を復号させる命令のセットを含む。ある実施形態では、デコーダ202はコンピューティングデバイス200のメモリ237に格納されており、プロセッサ235によってアクセスおよび実行され得る。
【0035】
ある実施形態では、デコーダ202は、符号化された映像フレームのセットを通信ユニット239を介して受信する。デコーダ202は、(例えば、映像が暗号化されている場合に)符号化された映像フレームを例えば解読および展開することによって復号する。デコーダ202が映像フレームを復号すると、従来の映像処理では、一般的には映像フレームがレンダリングされて表示される。これに対して、本明細書に記載の技術によれば、例えば受信映像のフレームレートが映像アプリケーション103のフレームレートよりも低い場合には、デコーダ202は映像フレームの表示のためのスケジューリングを飛ばす。結果として、デコーダ202は、映像フレームの表示のためのスケジューリングを行なわずに、復号された映像フレームの各々を映像アナライザ204に提供する。例えば、映像フレームのセットは、第1の映像フレームおよび第2の映像フレームを含む。第2の映像フレームは、第1の映像フレームよりも後の映像フレームである。例えば、第2の映像フレームは、第1の映像フレームに関連付けられたタイムスタンプよりも後のタイムスタンプに関連付けられたものであり、時系列のフレームシーケンスにおいて第1の映像フレームよりも後の位置を占めるものである。ある実施形態では、第2の映像フレームは、第1の映像フレームの直後に続くフレームである。例えば、これら2つのフレームは、間に他のフレームを挟むことなく連続して表示されていると認識される。
【0036】
映像アナライザ204は、顔追跡を行なう。ある実施形態では、映像アナライザ204は、プロセッサ235によって実行されると顔追跡を行なわせる命令のセットを含む。ある実施形態では、映像アナライザ204はコンピューティングデバイス200のメモリ237に格納されており、プロセッサ235によってアクセスおよび実行され得る。
【0037】
映像アナライザ204は、ユーザデバイス115の映像フレームレートとは独立したティック信号(tick signal、クロック信号)の周波数で動作する。例えば、映像アナライザ204は60Hzの周波数で動作し、60Hzで動作する映像フレーム表示用のリフレッシュ/レンダリングループに連動するクロックが別途設けられる。
【0038】
映像アナライザ204は、復号された映像フレームのセットを受信し、フレーム毎に、復号された映像フレーム中の背景および顔を特定する。例えば、映像アナライザ204は、第1の映像フレーム中の第1の背景および顔を特定し、第2の映像フレーム中の第2の背景および顔を特定する。映像アナライザ204は、顔追跡技術を適用することによって、フレーム中の顔と背景とを区別し得る。例えば、映像アナライザ204は、顔リサンプリングキーフレームと、当該顔リサンプリングキーフレームのテクスチャ座標(例えば、RGBテクスチャ)と、映像フレームのタイムスタンプとを特定するRGB(赤・緑・青)顔追跡技術を適用してもよい。
【0039】
ある実施形態では、顔リサンプリングキーフレームは、2つの値、すなわち頭部変換行列およびランドマーク頂点のセットを含む。頭部変換行列は、頭部変換を表わす4×4の行列(M)である。頭部変換行列によって、任意の初期モデル空間(初期の位置、向き、および縮尺)から顔空間に変換する(平行移動、回転、および拡大縮小を含む)。ランドマーク頂点のセット(V)は、顔空間におけるランドマーク頂点のセットを表わす。
【0040】
ある実施形態では、映像アナライザ204は、機械学習を用いて、復号された映像フレームのセットの顔追跡をリアルタイムで行なう。ある実施形態では、例えば、ユーザデータを訓練に利用することについてユーザが明示的に許可した訓練データに基づいて、訓練モデルが訓練されてもよい。訓練データは、例えば映像および対応するメタデータなど、訓練への利用が許可された如何なるデータを含んでもよい。例えば、合成されたデータ、コンピュータによって生成されたデータ、訓練に利用するためにライセンスが与えられたデータなどが含まれる。訓練データは、その中で顔リサンプリングキーフレームが特定された画像および映像を含み得る。画像および映像は、映像サーバ101のデータベース199に格納された映像から取得したものであってもよい。
【0041】
ある実施形態では、教師あり学習に基づいて(例えば、画像および映像ならびに対応するメタデータを含む訓練データに基づいて)、訓練モデルを取得してもよい。例えば、訓練モデルは、モデルフォームまたは構造を含み得る(例えば、対応する重みがかけられたニューラルネットワークの層内の複数ノードの数および組織を記述するモデルフォームまたは構造)。ある実施形態では、映像中の顔を検出し追跡するようにモデルを訓練してもよい。例えば、未訓練のモデルへの入力として、映像を与え、さらに顔位置(例えば、顔のランドマーク)を示すデータを与えてもよい。顔のランドマークを予測するように(教師あり学習を用いて)モデルを訓練してもよい。モデルを利用して映像中の顔のランドマークを検出し、予測されるランドマーク位置をグラウンドトゥルース(groundtruth)データと比較してもよい。これら2つの差を計算し、その差を訓練フィードバックとして提供してもよい。このフィードバックに基づいて、モデルの1つ以上のニューラルネットワークノードの重みまたは他のパラメータを調整してもよい。モデル予測が閾値精度を満たしたとき、訓練を終了させてもよい。
【0042】
ある実施形態では、ユーザはユーザ入力を与えることによって、訓練データの生成を助ける。映像フレーム中の顔の位置を特定するようユーザに求めてもよい。ユーザ入力の結果として、訓練データは顔の位置に関して正確に特定し、それを用いて映像フレームの顔リサンプリングキーフレームを決定することができる。この例、および顔の位置を特定する他の例において、顔検出は、個人の同定を含まない(例えば、顔認識は行なわない)。さらに、訓練データは、例えばモジュールデバイスを用いて行なわれるビデオ通話において顔を検出するという使用文脈の代表例であり得る。
【0043】
訓練データに基づいて、映像アナライザ204は、画像および映像に基づいて顔リサンプリングキーフレームを生成し得る訓練モデルを含み得る。訓練モデルは、時間的行動の局所化(temporal action localization)モデルであってもよい。さまざまな実施形態では、映像アナライザ204は、ベイズ分類器、サポートベクトルマシン、ニューラルネットワーク、または、訓練モデルを実現する他の学習技術を用いてもよい。
【0044】
ある実施形態では、訓練モデルは、1つ以上のモデルフォームまたは構造を含み得る。例えば、モデルフォームまたは構造は、任意の種類のニューラルネットワークを含み得る。ニューラルネットワークの例としては、線形ネットワーク、複数層を実現するディープニューラルネットワーク(例えば、入力層と出力層との間に「隠れ層」があり、各層は線形ネットワークである)、畳み込みニューラルネットワーク(例えば、入力データを複数の部分またはタイルに分割または区画し、1つ以上のニューラルネットワーク層を用いて各タイルを別々に処理し、各タイルの処理によって得られた結果を集計するネットワーク)、シーケンスツーシーケンスニューラルネットワーク(例えば、文中の単語や映像中のフレームなどの連続的なデータを入力とし、結果として得られるシーケンスを出力として生成するネットワーク)などがある。モデルフォームまたは構造は、さまざまなノード間の接続性および層内のノードの組織を指定し得る。例えば、第1の層(例えば、入力層)のノードは、入力データまたはアプリケーションデータとしてデータを受信し得る。このようなデータは、例えば、ノード1つにつき1つ以上の画素を含み得る(例えば、訓練モデルを画像解析に使用する場合)。後に続く中間層は、モデルフォームまたは構造において指定された接続性に従って、前の層のノードの出力を入力として受信し得る。この層は、隠れ層と呼ばれることもある。最終層(例えば、出力層)は、顔リサンプリングキーフレームおよび他のメタデータの出力を生成する。この出力は、例えば、顔リサンプリングキーフレーム、顔リサンプリングキーフレームのテクスチャ座標、および映像フレームのタイムスタンプであり得る。ある実施形態では、モデルフォームまたは構造は、各層内のノードの数および/または種類も指定する。
【0045】
異なる実施形態では、訓練モデルは、モデル構造またはフォームに従って層内に配置された複数のノードを含み得る。ある実施形態では、ノードは、メモリを有しない計算ノード(例えば、1単位の入力を処理して1単位の出力を生成するように構成される)であってもよい。ノードによって実行される計算は、例えば、複数のノード入力の各々に重みを掛け、重み付け総和を取得し、この重み付け総和をバイアス値または切片値で調整してノード出力を生成することを含んでもよい。ある実施形態では、ノードによって実行される計算は、調整された重み付け総和にステップ/活性化関数を適用することを含んでもよい。ある実施形態では、ステップ/活性化関数は非線形関数であり得る。さまざまな実施形態では、このような計算は、行列の乗算などの演算を含み得る。ある実施形態では、複数のノードによる計算は、例えばマルチコアプロセッサの複数のプロセッサコアを用いて、または一般的な処理ユニットもしくは特殊用途のニューラル回路の個別の処理ユニットを用いて、並列で実行してもよい。ある実施形態では、ノードはメモリを含んでもよい。例えば、前の1つ以上の入力を格納しておき、後の入力を処理する際にその入力を用いることが可能であってもよい。例えば、メモリを有するノードは、長・短期記憶(LSTM)ノードを含み得る。LSTMノードは、ノードが有限状態機械(FSM)のように動作できるように、「状態」を維持するメモリを用いてもよい。このようなノードを有するモデルは、連続データ(例えば、映像のフレーム)の処理に有用であり得る。
【0046】
ある実施形態では、訓練モデルは、個々のノードについて埋め込みまたは重みを有し得る。例えば、訓練モデルは、モデルフォームまたは構造によって指定されるように層にまとめられた複数のノードとして開始されてもよい。初期設定では、モデルフォームに従って接続された各対のノード(例えば、ニューラルネットワークの連続する層におけるノード)間の接続にそれぞれ重みがかけられてもよい。例えば、それぞれの重みがランダムに割り当てられてもよいし、またはデフォルト値に初期化されてもよい。訓練モデルは、例えばデータを用いて訓練され、結果が生成され得る。
【0047】
顔リサンプラー206は、補間顔フレームを生成する。ある実施形態では、リサンプラー206は、プロセッサ235によって実行されると補間顔フレームを生成させる命令のセットを含む。ある実施形態では、認識モジュール206がコンピューティングデバイス200のメモリ237に格納されており、プロセッサ235によってアクセスおよび実行され得る。
【0048】
ある実施形態では、顔リサンプラー206は、顔リサンプリングキーフレームと、テクスチャ座標と、映像フレームのタイムスタンプとを格納する限られたサイズのキューまたはバッファに関連付けられている。ある実施形態では、バッファの記憶容量は限られており、顔リサンプラー206は、新たな顔リサンプリングキーフレームが格納される度に、古い顔リサンプリングキーフレームを削除する。例えば、2つの顔リサンプリングキーフレームを用いて補間フレームを生成してもよい。例えば、映像フレーム間の対象物の動きの速度を構成するリサンプリングキーフレームを3つまたは4つとする等、他の例も可能である。
【0049】
映像フレームのレンダリングが行なわれる度に、顔リサンプラー206は、顔リサンプリングキーフレーム間の継続時間(すなわち、通常各フレームの表示が継続される時間)、およびその継続時間に対する今回のレンダリング時間から、補間量(t)を生成する。例えば、顔リサンプラー206は、今回のレンダリング時間およびフレーム継続時間(第1の顔リサンプリングキーフレームと第2の顔リサンプリングキーフレームとの間の時間として定義される)に基づいて、0~1である補間量(t)を生成する。ある実施形態では、補間量は、以下のように定義される。
【0050】
【0051】
言い換えると、補間量は、第1の映像フレームと第2の映像フレームとの間で補間される顔フレームの時間的な相対距離を0~1の数で表わすものである。
【0052】
顔リサンプラー206は、補間アルゴリズムの適用を含む補間を実行することによって、以下の(1)~(7)を行なう。
【0053】
(1)頭部変換行列を用いて顔リサンプリングキーフレームを分解して、平行移動ベクトル、回転クォータニオン、および拡大縮小ベクトルを抽出する。
【0054】
(2)平行移動ベクトルを線形補間する。
(3)球面線形補間を用いて回転クォータニオンを補間することによって、補間回転クォータニオンを生成する。
【0055】
(4)拡大縮小ベクトルを線形補間することによって、補間拡大縮小ベクトルを生成する。
【0056】
(5)補間平行移動-回転-拡大縮小行列を作成する。
(6)補間フレームのための新たな補間位置を算出する。
【0057】
(7)補間頂点を用いて、補間顔フレーム(すなわち、アップサンプリングされたフレーム)をレンダリングする。
【0058】
顔リサンプラー206は、第1の顔リサンプリングキーフレームおよび第2の顔リサンプリングキーフレームを分解し得る。例えば、顔リサンプラー206は、頭部変換行列M_firstを用いて第1の顔リサンプリングキーフレームを分解するとともに、頭部変換行列M_secondを用いて第2の顔リサンプリングキーフレームを分解することによって、以下の(1)~(3)を決定する。
【0059】
(1)第1の顔リサンプリングキーフレームについてのxyz座標による平行移動ベクトル(T_first)、および第2の顔リサンプリングキーフレームについてのxyz座標による平行移動ベクトル(T_second)。
【0060】
(2)第1の顔リサンプリングキーフレームについてのxyzw座標による回転クォータニオン(R_first)、および第2の顔リサンプリングキーフレームについてのxyzw座標による回転クォータニオン(R_second)。
【0061】
(3)第1の顔リサンプリングキーフレームについてのxyz座標による拡大縮小ベクトル(S_first)、および第2の顔リサンプリングキーフレームについてのxyz座標による拡大縮小ベクトル(S_second)。
【0062】
ある実施形態では、顔リサンプラー206は、以下の数式を用いて、第1の顔リサンプリングキーフレームの平行移動ベクトル(T_first)を線形補間するとともに、第2の顔リサンプリングキーフレームの平行移動ベクトル(T_second)を線形補間することによって、補間平行移動ベクトルを生成する。
【0063】
【0064】
ある実施形態では、顔リサンプラー206は、以下の数式を用いて、球面線形補間(SLERP)によってR_firstおよびR_secondを補間することによって、補間回転クォータニオンを生成する。
【0065】
【0066】
ある実施形態では、顔リサンプラー206は、以下の数式を用いて、拡大縮小ベクトルS_firstおよびS_secondを線形補間することによって、補間拡大縮小ベクトルを生成する。
【0067】
【0068】
ある実施形態では、顔リサンプラー206は、以下の数式を用いて、上記の補間値に基づき、補間平行移動-回転-拡大縮小行列(モデル空間から顔空間への変換を行なう)を作成する。
【0069】
【0070】
ある実施形態では、顔リサンプラー206は、以下の数式を用いて、全体の変換には含まれない顔の内側の動き(例えば、笑う、眉を上げる、等)を含む線形補間されたモデル空間の頂点を算出することによって、V_first(第1の顔ランドマーク頂点)における各頂点v_firstおよびV_second(第2の顔ランドマーク頂点)における各頂点v_secondについて、第1の補間フレームおよび第2の補間フレームのための新たな補間位置を算出する。
【0071】
【0072】
【0073】
【0074】
ある実施形態では、顔リサンプラー206は、以下の数式を用いて、第1のフレームと第2のフレームとの間で共有される新たな補間顔空間の頂点を算出する。
【0075】
【0076】
ある実施形態では、顔リサンプラー206は、補間顔空間の頂点を用いて、アップサンプリングされたフレームをレンダリングする。
【0077】
顔リサンプラー206は、顔リサンプリングキーフレームの各々に対して補間顔フレームを生成する。各補間顔フレームにおけるテクスチャ座標は、それぞれの顔リサンプリングキーフレーム中のテクスチャ座標と等しい。補間量に従ってランドマーク頂点が補間され、補間メッシュ頂点が生成される。補間メッシュ頂点は、補間頭部変換行列と、顔リサンプリングキーフレーム中のメッシュ頂点とが合成されたものである。ランドマーク頂点は、補間顔フレーム間で同一であるが、これらのランドマーク頂点には異なるテクスチャ座標が適用される。なぜなら、テクスチャ座標はそれぞれの顔リサンプリングキーフレームに対応するからである。例えば、顔リサンプラー206は、第1の顔リサンプリングキーフレームに対応して第1の補間顔フレームを生成し、第2の顔リサンプリングキーフレームに対応して第2の補間顔フレームを生成する。これにより、第1の映像フレーム中の顔と第2の映像フレーム中の顔とを効果的に拡張し、それらを同一の中間位置で合わせることができる。
【0078】
図3Aには、第1の顔リサンプリングキーフレーム300の一例を示す。これは、時間=0の場合の補間アルゴリズムへの入力である。
図3Bは、第2の顔リサンプリングキーフレーム325の一例を示す。これは、時間=1の場合の補間アルゴリズムへの入力である。これらの図に示すように、
図3Aと
図3Bでは、ランドマーク頂点(メッシュの交点)が異なる。例えば、
図3Aでは口が大きく開いているのに対して、
図3Bでは、
図3Aと比較して顔が若干回転しており、口の開き具合が小さい。これにより、対応する頂点の位置が異なっている。
【0079】
図3Cは、ブレンドを行なわずに補間メッシュに基づいてワーピングした第1の顔リサンプリングキーフレームのテクスチャを有する出力画像350を示す。
図3Dは、ブレンドを行なわずに補間メッシュに基づいてワーピングした第2の顔リサンプリングキーフレームのテクスチャを有する出力画像375を示す。
図3Cおよび
図3Dではランドマーク頂点が同一であるが、異なるテクスチャ座標が適用される。なぜなら、これら2つのフレーム間でテクスチャが異なるからである。
【0080】
図4Aには、7.5fpsで送信された映像の入力映像フレーム400の一例を示す。
図4Bは、ある実施形態に係る、240fpsの補間された第1の顔425および補間された第2の顔430を示す。
【0081】
ある実施形態では、顔リサンプラー206は、補間量に基づいて、第1の顔リサンプリングキーフレームの第1の背景および第2の顔リサンプリングキーフレームの第2の背景を補間する。顔リサンプラー206は、顔追跡アルゴリズムによって決定された第1および第2のフレーム中の顔の位置に基づいて、第1および第2の背景を決定してもよい。顔リサンプラー206は、アルファブレンドを用いて、キーフレームの背景を補間してもよい。ある実施形態では、ブレンドは、第1の背景と第2の背景との間のフェーディングを含み得る。フェーディングの結果、フレームが高フレームレートで順次表示されたときに、見る側にとって、重ねて描かれる滑らかな顔の視覚的ながたつき感が軽減される。ある実施形態では、補間を行なうことは、補間用の少なくとも2つのフレームをバッファリングすることを含み得る。このようなバッファリングにより、ある実施形態では、映像の再生は、映像ストリームに1フレーム分の遅延が起こることを含む。
【0082】
図5Aには、ある実施形態に係る、7.5fpsの入力映像フレーム500の一例を示す。
図5Bは、重ねて描かれる滑らかな顔を準備するために背景をフェーディングさせた240fpsの映像フレーム525を示す。
【0083】
顔リサンプラー206は、第1の補間された顔および第2の補間された顔をレンダリングする。ある実施形態では、顔リサンプラー206は、補間量に応じて、顔のエッジのフェザリング(見る側に対して、補間顔フレームのエッジを目立たなくすることができる)、および第1の補間顔フレームと第2の補間顔フレームとの間のフェーディングのうちの少なくとも1つを行なう。
【0084】
図6Aには、ある実施形態に係る、7.5fpsの入力映像フレーム600の一例を示す。
図6Bは、第1の補間顔フレームおよび第2の補間顔フレームに基づいてブレンドされた、ブレンドされた顔フレーム625の一例を示す。このブレンドされた顔フレームは(他のブレンドされたフレームと一緒に)240fpsでレンダリングされ、
図6Bでは説明のために背景なしで示している。
図6Bに示す例では、顔リサンプラー206がフェザリングおよびフェーディングのうちの少なくとも1つを行なうことによって、滑らかな顔を生成している。
【0085】
顔リサンプラー206は、補間された第1の背景、補間された第2の背景、補間された第1の顔、および補間された第2の顔に基づく最終フレームを表示するようディスプレイ241に命じる。例えば、顔リサンプラー206は、第1の背景と第2の背景との間のフェーディングによって生成されたブレンドされた背景付きのブレンドされた顔フレームに、滑らかな顔を重ねる。顔リサンプラー206は、ブレンドされた顔フレームのフェザリングを維持しつつ、顔追跡情報を用いて滑らかな顔とブレンドされた顔フレームとを位置合わせする。
【0086】
図7Aには、7.5fpsの入力映像フレーム700の一例を示す。
図7Bは、ユーザデバイス115によって表示される最終フレーム725を示す。最終フレーム725は、ブレンドされた背景と合成されたブレンドされた顔フレームの一例である。第1のフレームと第2のフレームとの間に1つ以上のブレンドされた顔フレームを中間フレームとして挿入した結果、映像が表示される際に知覚されるフレームレートが高まり、好ましいユーザ体験につながる。なぜなら、送信デバイスが高フレームレートでの映像ストリームの送信(これには、より広いネットワーク帯域幅が必要である)を必要とせずに、映像の質を高めることができるからである(例えば、低いフレームでは知覚され得る突発的な動きの移り変わりが知覚されなくなる)。例えば、本明細書に記載の補間フレームの生成によって、受信映像の連続フレーム間に補間フレームを挿入することにより、低フレームレート(例えば、7.5fps)の受信映像ストリームを、より高いフレームレート(例えば、30fps、60fps、240fpsなど)で再生することが可能になる。
【0087】
図8には、2つのフレームシーケンスを示す。フレームシーケンス810はオリジナルの映像から得られたものであり、フレーム811、812、813、814、815、816、817、818、および819を含む。映像が低フレームレートで送信された場合、補間なしの低フレームレートで表示されるようにフレーム811、815、および819のみが含まれる。フレーム812、813、814、816、817、および818は含まれない。この場合、映像が表示されたときに、例えば映像がフレーム間で飛んでしまうような突発的な動きをユーザが知覚する可能性があるため、問題である。例えば、フレーム811とフレーム815との間で人物の口が突然閉じられた場合や、フレーム815とフレーム819との間で目が著しく変化した場合などである。
【0088】
フレームシーケンス820は、アップサンプリングされた映像を含み、フレーム811、822、823、824、815、826、827、828、および819を含む。これらのフレームは、より高いフレームレートで表示される。フレーム811、815、および819を含む受信映像ストリームから、本明細書に記載の補間を行なうことによって追加のフレームを取得する。フレームシーケンス820における追加のフレームは822、823、824、826、827、および828である。これらのフレームは、本明細書に記載の技術に係る補間によって取得され、シーケンスに追加されるものである。補間フレームを用いた結果、映像受信に利用する帯域幅はフレームシーケンス810と同じままで、映像が飛ぶことなく、より高いフレームレートでフレームシーケンス820を表示することができる(中間フレーム822~824および826~828が利用できるため)。
【0089】
ユーザインターフェイスモジュール208は、ユーザインターフェイスを表示するためのグラフィックデータを生成する。ある実施形態では、ユーザインターフェイスモジュール208は、プロセッサ235によって実行されるとグラフィックデータを生成させる命令のセットを含む。ある実施形態では、ユーザインターフェイスモジュール208はコンピューティングデバイス200のメモリ237に格納されており、プロセッサ235によってアクセスおよび実行され得る。
【0090】
ある実施形態では、ユーザインターフェイスモジュール208は、例えば顔リサンプラー206から取得した補間フレームを受信映像の連続フレーム間に挿入することによって、より高いフレームレートで映像が知覚されるように映像を表示するためのグラフィックデータを生成する。ある実施形態では、ユーザインターフェイスモジュール208は、映像アプリケーションに関連付けられたユーザインターフェイスオプションも生成する。例えば、ユーザインターフェイスは、ビデオ通話を実施するためのオプション、他のユーザをビデオ通話に加えるためのオプション、ビデオ通話に関連付けられた設定を変更するためのオプションなどを含む。
【0091】
ある実施形態では、第1のフレームと第2のフレームとの間に生成される中間フレームの数は、映像を受信するフレームレートと、映像を再生するフレームレートとの間の差に基づく。例えば、映像を10fpsで受信し、30fpsで再生する場合、映像の連続フレームの各対に対して2つの中間フレームを生成する。この例では、オリジナルの映像が100フレーム(10秒間の映像に対応)を有する場合、200個の中間フレームが生成されて300フレームの映像が得られ、これは10秒間の映像で30fpsにて再生され得る。映像再生のフレームレートは、例えばディスプレイ241のリフレッシュレート、デバイス200の計算性能、受信映像における動きの速度など、さまざまな要素に基づいて選択され得る。
【0092】
方法の例
図9Aおよび
図9Bは、補間映像フレームを生成するための方法の一例を示すフローチャートである。方法900は、コンピューティングデバイス200に格納された映像アプリケーション103によって実行される。例えば、映像アプリケーション103は、ユーザデバイス115、映像サーバ101、またはユーザデバイス115の一部および映像サーバ101の一部に格納されている。
【0093】
ブロック902において、映像に対応する映像フレームのセットを受信する。映像フレームのセットは、各々が顔を含む第1の映像フレームおよび第2の映像フレームを含む。第2の映像フレームは、第1の映像フレームよりも後の映像フレームである。例えば、映像の再生中、第1のフレームが第2のフレームよりも前に表示されるように、第2の映像フレームに関連付けられたタイムスタンプは第1の映像フレームに関連付けられたタイムスタンプよりも大きな値を有する。
【0094】
ブロック904において、第1の映像フレームに対して顔追跡を行なって第1の顔リサンプリングキーフレームを特定する。第1の顔リサンプリングキーフレームは、第1の頭部変換行列および第1の顔ランドマーク頂点を含む。ブロック906において、第2の映像フレームに対して顔追跡を行なって第2の顔リサンプリングキーフレームを特定する。第2の顔リサンプリングキーフレームは、第2の頭部変換行列および第2の顔ランドマーク頂点を含む。
【0095】
ブロック908において、補間量を導出する。ブロック910において、第1の顔リサンプリングキーフレームおよび補間量に基づいて、第1の補間顔フレームを決定する。ブロック912において、第2の顔リサンプリングキーフレームおよび補間量に基づいて、第2の補間顔フレームを決定する。ブロック914において、補間量に基づいて、第1の顔リサンプリングキーフレームの第1の背景および第2の顔リサンプリングキーフレームの第2の背景を補間する。ある実現例では、ブロック914を省いてもよい。ブロック916において、補間された第1の顔および補間された第2の顔をレンダリングする。例えば、補間された第1の顔および補間された第2の顔を、補間かつブレンドされた顔としてレンダリングする。ブロック918において、補間された第1の背景、補間された第2の背景、補間された第1の顔、および補間された第2の顔に基づく最終フレームを表示する。例えば、補間かつブレンドされた顔をブレンドされた背景に加えることによって、最終フレームを作成する。最終フレームは、フレームシーケンスにおける対応位置に挿入される。例えば、再生中、第1のフレーム、最終フレーム、および第2のフレームが順に表示されるように、第1の映像フレームと第2の映像フレームとの間に最終フレームを挿入する。より高いフレームレートでの再生を可能にする(例えば、10フレーム毎秒の映像から30フレーム毎秒を得る)ために、第1の映像フレームと第2の映像フレームとの間に2つ以上の補間フレームを生成する場合(例えば、補間量はt未満)、各補間フレームをシーケンスにおける対応位置に挿入する。
【0096】
上記説明では、本明細書の完全な理解を提供するために、説明の目的で多くの具体的詳細を示している。しかしながら、それらの具体的詳細がなくても本開示が実践され得ることが、当業者には明らかであろう。ある場合には、説明を曖昧にするのを避けるために、構造およびデバイスをブロック図の形態で示している。例えば、上記実施形態は、主にユーザインターフェイスおよび特定のハードウェアを参照して説明され得る。しかしながら、上記実施形態は、データおよびコマンドを受信し得る如何なる種類のコンピューティングデバイス、およびサービスを提供する如何なる周辺機器にも適用され得る。
【0097】
本明細書において「ある実施形態」または「ある例」と述べる場合、当該実施形態または例に関して説明した特定の特徴、構造、または特性が本明細書の少なくとも1つの実現例に含まれることを意味する。本明細書の様々な箇所に出現する表現「ある実施形態では」は、必ずしもすべてが同じ実施形態を指すとは限らない。
【0098】
上記の詳細な説明うちのいくつかの部分は、コンピュータメモリ内のデータビットに対する操作のアルゴリズムおよびシンボル表現の観点から提示されている。これらのアルゴリズムによる記載および表現は、データ処理技術の当業者が彼らの仕事内容を他の当業者に最も効果的に伝えるために用いられる手段である。アルゴリズムは、本明細書では、および一般的には、所望の結果に導く自己矛盾のないステップのシーケンスであると考えられる。当該ステップは、物理量の物理的な操作を必要とするステップである。通常、必須ではないが、これらの量は、格納、転送、合成、比較、その他操作が行える電気データまたは磁気データの形を取る。時には、主に一般的な使用上の理由から、これらのデータを、ビット、値、要素、シンボル、文字、用語、数字などと呼ぶことが好都合である。
【0099】
しかしながら、これらの用語および同様の用語のすべては、適切な物理量に関連付けられたものであり、その量に付される便利なラベルにすぎないことに留意されたい。下記の説明から明らかなように、特に記載のない限り、本明細書全体を通して、「処理する」、「計算する」、「算出する」、「決定する」、または「表示する」などの用語を使用した説明は、コンピュータシステムのレジスタおよびメモリ内の物理(電子)量として表されるデータを、コンピュータシステムのメモリもしくはレジスタ内または他の同様の情報ストレージ、送信装置もしくは表示装置内の物理量として同様に表される他のデータに操作および変換するコンピュータシステムまたは同様の電子コンピューティングデバイスの動作およびプロセスを指すことが理解されるであろう。
【0100】
本明細書の実施形態は、上述の方法の1つ以上のステップを実行するためのプロセッサに関するものであってもよい。プロセッサは、コンピュータに格納されたコンピュータプログラムによって選択的に起動または再構成される特殊用途のプロセッサであってもよい。このようなコンピュータプログラムは、非一時的なコンピュータ読取り可能記憶媒体に格納されてもよい。非一時的なコンピュータ読取り可能記憶媒体としては、光ディスク、ROM、CD-ROM、磁気ディスク、RAM、EPROM、EEPROM、磁気カードもしくは光カード、フラッシュメモリ(不揮発性メモリを含むUSBキー等)を含む任意の種類のディスク、または、電子命令を格納するのに適した、かつ、コンピュータシステムバスに各々が接続された任意の種類の媒体などがあるが、これらに限定されない。
【0101】
本明細書は、完全にハードウェアであるいくつかの実施形態、完全にソフトウェアであるいくつかの実施形態、またはハードウェア要素およびソフトウェア要素の両方を含むいくつかの実施形態の形を取り得る。ある実施形態では、本明細書はソフトウェアで実現され、ソフトウェアとしては、ファームウェア、常駐ソフトウェア、マイクロコードなどが含まれるが、これらに限定されない。
【0102】
さらに、本明細書は、コンピュータまたは任意の命令実行システムによって使用される、またはそれらに関連するプログラムコードを提供する、コンピュータが使用可能または読取り可能な媒体からアクセスできるコンピュータプログラムプロダクトの形を取り得る。本明細書では、コンピュータが使用可能または読取り可能な媒体は、命令実行システム、装置、またはデバイスによって使用される、またはそれらに関連するプログラムを含み、格納し、通信し、伝搬し、または移植することのできる任意の装置であり得る。
【0103】
プログラムコードを格納または実行するのに適したデータ処理システムは、システムバスを介してメモリ要素に直接的または間接的に接続された少なくとも1つのプロセッサを含むであろう。メモリ要素は、プログラムコードの実際の実行中に使用されるローカルメモリ、大容量ストレージ、および、実行中に大容量ストレージからコードを取得すべき回数を減らすために少なくとも一部のプログラムコードの一時記憶装置を提供するキャッシュメモリを含み得る。
【0104】
上述のシステムが個人情報を収集または使用する状況において、プログラムまたは機能にユーザ情報(例えば、ユーザのソーシャルネットワーク、ソーシャルアクションもしくはアクティビティ、職業、ユーザの基本設定、またはユーザの現在位置に関する情報)を収集させるか否かを制御する機会、または、ユーザに密接に関わる内容をサーバから受信させるか否か、および/またはどのように受信させるかを制御する機会が、システムによってユーザに与えられる。さらに、あるデータを格納または使用する前に、そのデータを1つ以上の方法で処理して個人識別情報を取り除いてもよい。例えば、ユーザの個人識別情報が特定されないようにユーザの識別情報を処理してもよいし、位置情報が取得される場合には、ユーザの特定の位置が特定されないようにユーザの地理的位置を(例えば、市レベル、郵便番号レベル、または州レベルに)一般化してもよい。このように、当該ユーザに関する情報をどのように収集させるか、および、どのようにサーバに使用させるかをユーザが制御できるようにしてもよい。