(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-02
(45)【発行日】2024-05-14
(54)【発明の名称】パーソナライズされた自動ビデオクロッピング
(51)【国際特許分類】
G06T 7/00 20170101AFI20240507BHJP
G06T 3/00 20240101ALI20240507BHJP
H04N 7/18 20060101ALI20240507BHJP
【FI】
G06T7/00 660A
G06T7/00 350B
G06T3/00 775
H04N7/18 U
【外国語出願】
(21)【出願番号】P 2023060294
(22)【出願日】2023-04-03
(62)【分割の表示】P 2022519751の分割
【原出願日】2020-12-08
【審査請求日】2023-06-29
(32)【優先日】2019-12-13
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ピッツ,コルビン
【審査官】長谷川 素直
(56)【参考文献】
【文献】特開2015-170973(JP,A)
【文献】特開2018-081701(JP,A)
【文献】特開2013-172446(JP,A)
【文献】米国特許出願公開第2016/0173944(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00
G06T 3/00
H04N 7/18
H04N 23/00
G06F 3/048
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実現される方法であって、
入力動画の複数のクレームの各フレームにおける2つ以上のクロップ候補領域について、フレームごとのクロップスコアを決定することを備え、前記クロップスコアは、顔分析に基づくスコア、アクティブスピーカ分析に基づくスコア、または美的スコアのうちの1つ以上に基づき、前記クロップ候補領域は各々、前記入力動画の入力アスペクト比と異なる出力アスペクト比を有し、前記方法はさらに、
各クロップ候補領域について、当該クロップ候補領域のフレーム間の動きを分析することによって、それぞれの動きコストを決定することと、
前記それぞれの動きコストと、前記2つ以上のクロップ候補領域の前記フレームごとのクロップスコアとに基づいて、前記入力動画についてクロップ領域位置を表す最小コスト経路を決定することと、
前記最小コスト経路に沿って、前記クロップ領域位置に対応するクロップキーフレーミングを生成することとを備え、前記クロップキーフレーミングは、開始フレームと、終了フレームと、前記クロップ領域位置とを含み、前記方法はさらに、
前記クロップキーフレーミングに基づいて
前記入力動画から得られる修正済み動画を出力することを備える、コンピュータにより実現される方法。
【請求項2】
前記フレームごとのクロップスコアを決定することは、前記顔分析に基づくスコア、前記アクティブスピーカ分析に基づくスコア、および前記美的スコアのうちの2つ以上の組合わせを決定するヒューリスティックに基づく、請求項1に記載のコンピュータにより実現される方法。
【請求項3】
前記クロップスコアはさらに、オブジェクト検出に基づくスコア、ペットもしくは動物検出に基づくスコア、または前記フレーム上の光学文字認識(OCR)に基づくスコアのうちの1つ以上に基づく、請求項1または2に記載のコンピュータにより実現される方法。
【請求項4】
前記修正済み動画を出力することは、クロップキーフレームおよび経路を出力することを含む、請求項1~3のいずれかに記載のコンピュータにより実現される方法。
【請求項5】
前記クロップキーフレームおよび前記経路は、前記入力動画に関連付けられた動画メタデータとして格納され、動画再生中に前記入力動画をクロップするためのビューアアプリケーションによる当該動画再生のために使用可能である、請求項4に記載のコンピュータにより実現される方法。
【請求項6】
複数のクロップキーフレームおよび経路が前記動画メタデータに格納され、前記動画再生が開始すると、前記ビューアアプリケーションのアスペクト比に一致するクロップキーフレームと経路との特定のセットが前記ビューアアプリケーションに提供される、請求項5に記載のコンピュータにより実現される方法。
【請求項7】
前記動画再生を実行するデバイスの方向の変化を検出すると、前記デバイスの前記方向に一致するクロップキーフレームと経路との異なるセットが前記動画再生のために利用される、請求項5に記載のコンピュータにより実現される方法。
【請求項8】
前記フレームごとのスコアを決定することは、前記修正済み動画を視聴するユーザに基づき、前記修正済み動画は、前記ユーザに合わせてパーソナライズされる、請求項1~7のいずれかに記載のコンピュータにより実現される方法。
【請求項9】
前記フレームごとのスコアを決定することは、1つ以上の重要な顔が前記フレームに存在するか否かを示す顔信号を生成することを含み、前記1つ以上の重要な顔は、前記ユーザに関連付けられており、前記顔分析に基づくスコアは、前記顔信号に基づいてパーソナライズされる、請求項8に記載のコンピュータにより実現される方法。
【請求項10】
前記顔分析に基づくスコアは、前記1つ以上の重要な顔が各クロップ領域にある度合い、または、各クロップ候補領域内の前記1つ以上の顔の位置の1つまたは複数に基づいてパーソナライズされる、請求項9に記載のコンピュータにより実現される方法。
【請求項11】
システムであって、非一時的なコンピュータ読取可能媒体に結合された1つ以上のプロセッサを含み、前記非一時的なコンピュータ読取可能媒体は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに複数の動作を実行させるソフトウェア命令を格納し、前記複数の動作は、
入力動画の複数のクレームの各フレームにおける2つ以上のクロップ候補領域について、フレームごとのクロップスコアを決定することを含み、前記クロップスコアは、顔分析に基づくスコア、アクティブスピーカ分析に基づくスコア、または美的スコアのうちの1つ以上に基づき、前記クロップ候補領域は各々、前記入力動画の入力アスペクト比と異なる出力アスペクト比を有し、前記複数の動作はさらに、
前記クロップ候補領域のフレーム間の動きを分析することによって、各クロップ候補領域についてそれぞれの動きコストを決定することと、
前記それぞれの動きコストと、前記2つ以上のクロップ候補領域の前記フレームごとのクロップスコアとに基づいて、前記入力動画についてクロップ領域位置を表す最小コスト経路を決定することと、
前記最小コスト経路に沿って、前記クロップ領域位置に対応するクロップキーフレーミングを生成することとを含み、前記クロップキーフレーミングは、開始フレームと、終了フレームと、前記クロップ領域位置とを含み、前記複数の動作はさらに、
前記クロップキーフレーミングに基づいて
前記入力動画から得られる修正済み動画を出力することを含む、システム。
【請求項12】
前記フレームごとのクロップスコアを決定することは、前記顔分析に基づくスコア、前記アクティブスピーカ分析に基づくスコア、および前記美的スコアのうちの2つ以上の組合わせを決定するヒューリスティックに基づく、請求項11に記載のシステム。
【請求項13】
前記クロップスコアはさらに、オブジェクト検出に基づくスコア、ペットもしくは動物検出に基づくスコア、または前記フレーム上の光学文字認識(OCR)に基づくスコアのうちの1つ以上に基づく、請求項11または12に記載のシステム。
【請求項14】
前記修正済み動画を出力することは、クロップキーフレームおよび経路を出力することを含み、デバイスで動画再生が開始すると、前記デバイスの方向に一致する前記クロップキーフレームと前記経路とが前記動画再生のために利用される、請求項11~13のいずれかに記載のシステム。
【請求項15】
前記フレームごとのクロップスコアを決定することは、1つ以上の重要な顔が前記フレームに存在するか否かを示す顔信号を生成することを含み、前記1つ以上の重要な顔は、前記修正済み動画を視聴するユーザに関連付けられ、前記顔分析に基づくスコアは、前記顔信号に基づいてパーソナライズされる、請求項11~14のいずれかに記載のシステム。
【請求項16】
請求項1~10のいずれかに記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本出願は、2019年12月13日に出願された、「Personalized Automatic Video Cropping(パーソナライズされた自動ビデオクロッピング)」と題された米国仮特許出願
第62/948,179号の利益を主張し、その全体が本明細書において参照により援用される。
【背景技術】
【0002】
背景
デバイスで動画(および画像)をレビューする場合、デバイスの表示アスペクト比および/または方向が、メディアのアスペクト比に一致しないことがよくある。その結果、メディアは、表示用にレターボックス化されることが多い(たとえば、側面に大きな黒枠があり、枠の間の動画サイズまたは静止画サイズが縮小されている)。場合によっては、ビューアソフトウェアアプリケーションは、レターボックス化を避けるために、オリジナルのメディアをクロップすることがある。
【発明の概要】
【0003】
本明細書で提供される背景の説明は、本開示の文脈を一般的に提示することを目的とする。本背景の項に記載されている範囲での本願発明者の業績、および出願時に先行技術として認められない可能性のある説明の側面は、本開示に対する先行技術として明示的にも黙示的にも認められるものでない。
【課題を解決するための手段】
【0004】
概要
いくつかの実装は方法を備え得る。方法は、複数のフレームを含む入力動画を取得することと、入力動画の各フレームにおける1つ以上のクロップ候補領域について、フレームごとのクロップスコアを決定することとを備え得る。方法はさらに、訓練済み機械学習モデルを用いて、入力動画の各フレーム内の1つ以上のクロップ候補領域について、顔信号を生成することと、1つ以上のクロップ候補領域の顔信号に基づいて、各フレームごとのクロップスコアを調整することとを備え得る。いくつかの実装では、顔信号は、少なくとも1つの重要な顔がクロップ候補領域で検出されるかどうかを示してもよい。
【0005】
方法はさらに、動きコストと、1つ以上のクロップ候補領域について調整されたフレームごとのクロップスコアとに基づいて、入力動画についてクロップ領域位置を表す最小コスト経路を決定することと、最小コスト経路に沿って、クロップ領域位置に対応するクロップキーフレーミングを生成することとを備え得、クロップキーフレーミングは、開始フレームと、終了フレームと、クロップ領域位置とを含む。方法はさらに、入力動画の対応する入力アスペクト比または入力方向と異なる出力アスペクト比または出力方向のうちの1つ以上を有する修正済み動画を出力することを備え得、入力アスペクト比または入力方向は、入力動画の取込み中に使用されるパラメータである。
【0006】
いくつかの実装では、各フレームごとのクロップスコアを調整することは、顔が、フレームごとのクロップスコアに対応するクロップ候補領域に存在すると判断される場合、フレームごとのクロップスコアを第1の値だけ増加させること、または、少なくとも重要な顔が、フレームごとのクロップスコアに対応するクロップ候補領域に存在すると判断される場合、フレームごとのクロップスコアを第2の値だけ増加させることのうちの1つを含み、第2の値は第1の値より大きい。
【0007】
方法はさらに、クロップキーフレーミングの品質スコアを決定することと、品質スコアに基づいて、入力動画の自動ビデオクロッピングを行うこととを備え得る。方法はさらに、クロップキーフレーミングの信頼度スコアを決定することと、信頼度スコアに基づいて、入力動画の自動ビデオクロッピングを行うこととを備え得る。
【0008】
いくつかの実装では、フレームごとのクロップスコアを決定することは、クロップ候補領域ごとに、美的スコア、顔分析スコア、またはアクティブスピーカプレゼンスのうちの1つ以上を決定することを含む。いくつかの実装では、クロップキーフレーミングを生成することは、2つのキーフレームの間で補間することを含む。いくつかの実装では、補間することは、ベジエスプラインを適用することを含む。
【0009】
いくつかの実装では、顔信号を生成することは、1つ以上のパーソナライズされたパラメータにアクセスすることを含む。いくつかの実装では、1つ以上のパーソナライズされたパラメータは、1つ以上の重要な顔についての顔識別情報を含む。いくつかの実装では、修正済み動画を出力することは、修正済み動画をディスプレイに表示することを含む。
【0010】
方法はさらに、入力動画を取得する前に、デバイスにおいて動画再生コマンドを受信することと、動画再生コマンドを受信することに応答して、デバイスについてデバイス方向と表示アスペクト比とを検出することとを備え得る。方法はさらに、デバイスについて、デバイス方向と表示アスペクト比とに基づいて、クロップ領域を決定することを備え得る。
【0011】
いくつかの実装は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに動作を実行させるソフトウェア命令を格納した非一時的なコンピュータ読取可能媒体を備え得る。動作は、複数のフレームを含む入力動画を取得することと、入力動画の各フレームにおける1つ以上のクロップ候補領域について、フレームごとのクロップスコアを決定することと、訓練済み機械学習モデルを用いて、入力動画の各フレーム内の1つ以上のクロップ候補領域について、顔信号を生成することとを含み得る。いくつかの実装では、顔信号は、少なくとも1つの重要な顔がクロップ候補領域で検出されるかどうかを示してもよい。動作はさらに、1つ以上のクロップ候補領域の顔信号に基づいて、各フレームごとのクロップスコアを調整することと、動きコストと、1つ以上のクロップ候補領域について調整されたフレームごとのクロップスコアとに基づいて、入力動画についてクロップ領域位置を表す最小コスト経路を決定することとを備え得る。
【0012】
動作はさらに、最小コスト経路に沿って、クロップ領域位置に対応するクロップキーフレーミングを生成することを含み得、クロップキーフレーミングは、開始フレームと、終了フレームと、クロップ領域位置とを含み、動作はさらに、入力動画の対応する入力アスペクト比または入力方向と異なる出力アスペクト比または出力方向のうちの1つ以上を有する修正済み動画を出力することを含み得、入力アスペクト比または入力方向は、入力動画の取込み中に使用されるパラメータである。
【0013】
いくつかの実装では、各フレームごとのクロップスコアを調整することは、顔が、フレームごとのクロップスコアに対応するクロップ候補領域に存在すると判断される場合、フレームごとのクロップスコアを第1の値だけ増加させること、または、少なくとも重要な顔が、フレームごとのクロップスコアに対応するクロップ候補領域に存在すると判断される場合、フレームごとのクロップスコアを第2の値だけ増加させることのうちの1つを含み、第2の値は、第1の値より大きい。
【0014】
動作はさらに、クロップキーフレーミングの品質スコアを決定することと、品質スコア
に基づいて、入力動画の自動ビデオクロッピングを行うこととを含み得る。動作はさらに、クロップキーフレーミングの信頼度スコアを決定することと、信頼度スコアに基づいて、入力動画の自動ビデオクロッピングを行うこととを含み得る。
【0015】
いくつかの実装では、フレームごとのクロップスコアを決定することは、クロップ候補領域ごとに、美的スコア、顔分析スコア、またはアクティブスピーカプレゼンスのうちの1つ以上を決定することを含む。いくつかの実装では、クロップキーフレーミングを生成することは、2つのキーフレームの間で補間することを含む。いくつかの実装では、補間することは、ベジエスプラインを適用することを含む。いくつかの実装では、顔信号を生成することは、1つ以上のパーソナライズされたパラメータにアクセスすることを含む。
【0016】
いくつかの実装は、非一時的なコンピュータ読取可能媒体に結合された1つ以上のプロセッサを備え、非一時的なコンピュータ読取可能媒体は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに動作を実行させるソフトウェア命令を格納する。動作は、複数のフレームを含む入力動画を取得することと、入力動画の各フレームにおける1つ以上のクロップ候補領域について、フレームごとのクロップスコアを決定することと、訓練済み機械学習モデルを用いて、入力動画の各フレーム内の1つ以上のクロップ候補領域について、顔信号を生成することとを含み得る。いくつかの実装では、顔信号は、少なくとも1つの重要な顔がクロップ候補領域で検出されるかどうかを示してもよい。動作はさらに、1つ以上のクロップ候補領域の顔信号に基づいて、各フレームごとのクロップスコアを調整することと、動きコストと、1つ以上のクロップ候補領域について調整されたフレームごとのクロップスコアとに基づいて、入力動画についてクロップ領域位置を表す最小コスト経路を決定することとを含み得る。
【0017】
動作はさらに、最小コスト経路に沿って、クロップ領域位置に対応するクロップキーフレーミングを生成することを含み得、クロップキーフレーミングは、開始フレームと、終了フレームと、クロップ領域位置とを含み、動作はさらに、入力動画の対応する入力アスペクト比または入力方向と異なる出力アスペクト比または出力方向のうちの1つ以上を有する修正済み動画を出力することを含み得、入力アスペクト比または入力方向は、入力動画の取込み中に使用されるパラメータである。
【図面の簡単な説明】
【0018】
【
図1】本明細書で説明する1つ以上の実装に使用することが可能なネットワーク環境の例を示すブロック図である。
【
図2A】ランドスケープ動画フォーマットを示す図である。
【
図2B】ピラーボックスフォーマットを示す図である。
【
図3A】いくつかの実装に係る、水平方向の動画上のクロッピング矩形を示す図である。
【
図3B】いくつかの実装に係る、縦方向に表示されたクロップ動画を示す図である。
【
図4】いくつかの実装に係る、動画を自動的にクロップする処理を示すフロー図である。
【
図5】いくつかの実装に係る、動画を自動的にクロップする方法の例を示すフロー図である。
【
図6】本明細書で説明する1つ以上の実装に使用することが可能なデバイスの例を示すブロック図である。
【
図7】いくつかの実装に係る、自動ビデオクロッピング経路の例を示す図である。
【
図8A】いくつかの実装に係る、クロップ領域が異なる位置に移動している動画の例を示す図である。
【
図8B】いくつかの実装に係る、クロップ領域が異なる位置に移動している動画の例を示す図である。
【
図8C】いくつかの実装に係る、クロップ領域が異なる位置に移動している動画の例を示す図である。
【発明を実施するための形態】
【0019】
詳細な説明
本明細書に記載されるいくつかの実装は、動画を自動的にクロップする方法、システム、およびコンピュータ読取可能媒体に関する。説明される実装は、訓練済みの機械学習モデルを使用して、パーソナライズされたパラメータで動画を自動的にクロップすることができる。モデルのための訓練データは、ユーザの許可を得てアクセスされる、ユーザについてのパーソナライズされた情報を含んでもよい。パーソナライズされた情報は、ローカルストレージ(たとえば、デバイス)に格納された顔について顔識別情報を含み得る。
【0020】
本明細書に記載されるいくつかの実装は、パーソナライズされたビデオクロッピングを自動的に実行する方法、システム、およびコンピュータ読取可能媒体に関する。異なる動画プラットフォームおよび配信デバイスは、4:3(ランドスケープ、横長)、9:16(ポートレート、縦長)、および1:1(スクエア)を含む異なるアスペクト比を有してもよく、ここで、最初の数字は動画の幅を指し、2番目の数字は動画の高さを指す。
【0021】
記載された技術は、ユーザにとって重要な(たとえば、ユーザの画像ライブラリ内の画像/動画に基づく、ユーザにとって認識された、なじみのある、または既知の)顔などのパーソナライズされたパラメータに基づいて、ユーザを妨げることなく、動画再生時にパーソナライズされたビデオクロッピング(たとえば、ポートレートフォーマットまたはスクエアフォーマットで表示するための横方向動画の表示用のクロッピング)を自動的に実行することができる。ユーザは、ユーザによって取込まれた、または他の態様ではライブラリに追加された複数の画像および/または動画(たとえば、他のユーザによってユーザに共有された画像)を含む画像ならびに動画ライブラリ(たとえば、画像管理ソフトウェアアプリケーションによって格納および管理された画像)を有してもよい。ライブラリは、ユーザデバイス(たとえば、スマートフォン)上および/またはサーバ(たとえば、クラウドベースの画像/動画ホスティングサービス)上でローカルでもよい。たとえば、ユーザは、スマートフォン、デジタルカメラ、ウェアラブルデバイスなどの1つ以上のデバイスを使用して、さまざまな人物の画像および/または動画を取込み、そのような画像をライブラリに保存してもよい。ライブラリは、ユーザにとって既知の人物(または動物)、たとえば、家族、友人、同僚、ペットなどの画像/動画を含んでもよい。いくつかの実装では、重要な顔はまた、ユーザのライブラリにない顔を含んでもよいが、ユーザの許可を得てアクセスした、ユーザのソーシャルグラフ、ソーシャルメディアアカウント、電子メールアカウント、ユーザの電子アドレス帳といった、画像の他のソースに基づいて識別されてもよい。
【0022】
ユーザがライブラリまたは他の情報源のいずれにもアクセスする許可を拒否する場合、それらの情報源にはアクセスできず、重要顔判定は行われない。さらに、ユーザは、1つ以上の顔を、重要な顔として認識される、および/または含まれることから除外可能である。さらに、ユーザには、重要な顔を手動で示すオプション(たとえば、ユーザインターフェイス)を提供することができる。本明細書で使用する顔という用語は、人間の顔、および/または顔検出技術を使用して検出することができる他の任意の顔(たとえば、ペットまたは他の動物の顔)を指し得る。
【0023】
画像管理アプリケーションの中には、ユーザの許可を得て有効化される、画像もしくは動画中の人物および/またはペットの顔を検出する機能を含むものがある。ユーザが許可すれば、そのような画像管理アプリケーションは、ユーザのライブラリ内の画像/動画内
の顔を検出し、各顔の出現頻度を決定可能である。たとえば、配偶者、兄弟、親、親友などの人物の顔は、ユーザのライブラリ内の画像/動画において高い頻度で出現することがあるが、(たとえば、公共の場における)傍観者などの他の人物は、出現頻度が低いことがある。いくつかの実装では、高い頻度で出現する顔は、重要な顔として識別されてもよい。いくつかの実装では、たとえば、ライブラリが、ユーザが顔にタグ付けまたはラベル付けすることを可能にする場合、ユーザは、自分のライブラリで出現する顔に対して名前(または他の情報)を与えることができる。これらの実装では、ユーザが名前または他の情報を与えた顔は、重要な顔として識別されてもよい。画像ライブラリで検出された他の顔は、重要でない顔として識別されてもよい。
【0024】
さまざまな実装により、ビデオクロッピングおよび重要な顔の判定は、クライアントデバイス上でローカルに実行され、ネットワーク接続を必要としない。記載される技術によって、動画が、動画のアスペクト比と異なるアスペクト比を有するデバイスで、または動画が取込まれたもしくは格納された方向には適さないデバイスの方向(たとえば、縦長と横長)で視聴されている場合に、動画再生体験の改善が可能になる。説明される技術は、動画を再生する任意のデバイス、たとえば、モバイルデバイスに実装することができる。
【0025】
いくつかの実装では、自動ビデオクロッピングは、フレームごとのクロップスコアリング、時間的コヒーレンス、および動き平滑化の3つの段階を含み得る。フレームごとのクロップスコアリングは、画像ベースであり得るが、これはノイズが多く、さまざまな異なるスコアを含み得る。いくつかの実装では、ヒューリスティックな組合わせを使用して、クロップ候補領域について単一のフレームごとのスコアを生成することができる。第2の段階は、時間的コヒーレンスを含み得、これは、空間および時間を通じて滑らかで最適な経路に適合させる動作を含み得る。時間的コヒーレンスは、シーンの動きの表現を含み得る。第3の段階は、動きの平滑化およびヒューリスティックの取込みを含み得る。この段階では、グローバルに処理できない可能性のある動画の側面について、局所的な最適化を行うことができる。特定のヒューリスティックとルールは、特定のケースに対処するために適用可能である。
【0026】
図1は、本明細書で説明するいくつかの実装で使用され得る、ネットワーク環境100の例を示すブロック図である。いくつかの実装では、ネットワーク環境100は、1つ以上のサーバシステム、たとえば、
図1の例ではサーバシステム102を含む。サーバシステム102は、たとえば、ネットワーク130と通信可能である。サーバシステム102は、サーバデバイス104と、データベース106または他のストレージデバイスとを含み得る。いくつかの実装では、サーバデバイス104は、ビデオアプリケーション158を提供し得る。
【0027】
また、ネットワーク環境100は、1つ以上のクライアントデバイス、たとえば、クライアントデバイス120,122,124および126を含むことができ、これらは、ネットワーク130を介して互いに、ならびに/またはサーバシステム102および/もしくは第2のサーバシステム140と通信可能である。ネットワーク130は、インターネット、ローカルエリアネットワーク(LAN)、無線ネットワーク、スイッチまたはハブ接続などのうちの1つ以上を含む任意のタイプの通信ネットワークであり得る。
【0028】
図示を容易にするために、
図1では、サーバシステム102、サーバデバイス104、データベース106について1つのブロックを示し、クライアントデバイス120,122,124および126について4つのブロックを示す。サーバブロック102,104および106は、複数のシステム、サーバデバイス、およびネットワークデータベースを表してもよく、ブロックは、図示とは異なる構成で提供可能である。たとえば、サーバシステム102は、ネットワーク130を介して他のサーバシステムと通信可能な複数のサ
ーバシステムを表すことができる。いくつかの実装では、サーバシステム102は、たとえば、クラウドホスティングサーバを含み得る。いくつかの例では、データベース106および/または他のストレージデバイスは、サーバデバイス104とは別個であり、かつ、ネットワーク130を介してサーバデバイス104および他のサーバシステムと通信可能なサーバシステムブロック(複数可)において、提供することができる。
【0029】
また、任意の数のクライアントデバイスが存在してもよい。各クライアントデバイスは、通信可能な任意のタイプの電子デバイス、たとえば、デスクトップコンピュータ、ラップトップコンピュータ、ポータブルデバイスまたはモバイルデバイス、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、TVセットトップボックスまたは娯楽デバイス、ウェアラブルデバイス(たとえば、ディスプレイグラスもしくはゴーグル、腕時計、ヘッドセット、アームバンド、宝石など)、パーソナルデジタルアシスタント(PDA)などであり得る。いくつかのクライアントデバイスは、データベース106または他のストレージと同様のローカルデータベースを有してもよい。いくつかの実装では、ネットワーク環境100は、示された構成要素のすべてを有していなくてもよい、および/または、本明細書に記載された要素の代わりに、もしくはそれらに加えて、他のタイプの要素を含む他の要素を有してもよい。
【0030】
さまざまな実装において、エンドユーザU1,U2,U3およびU4は、それぞれのクライアントデバイス120,122,124および126を使用して、サーバシステム102と、および/または互いに通信し得る。いくつかの例では、ユーザU1,U2,U3およびU4は、それぞれのクライアントデバイスおよび/もしくはサーバシステム102上で動作するアプリケーションを介して、ならびに/またはサーバシステム102上で実装されるネットワークサービス、たとえばソーシャルネットワークサービスまたは他のタイプのネットワークサービスを介して、互いに対話し得る。たとえば、それぞれのクライアントデバイス120,122,124および126は、1つ以上のサーバシステム、たとえばサーバシステム102との間でデータを通信してもよい。
【0031】
いくつかの実装では、サーバシステム102は、各クライアントデバイスがサーバシステム102にアップロードされた通信コンテンツまたは共有コンテンツを受信できるように、クライアントデバイスに適切なデータを提供し得る。いくつかの例では、ユーザU1~U4は、音声もしくはビデオ会議、音声、動画、またはテキストチャット、または他の通信モードもしくはアプリケーションを介して対話することができる。
【0032】
サーバシステム102によって実装されるネットワークサービスは、ユーザがさまざまな通信を行い、リンクおよび関連付けを形成し、画像、テキスト、動画、オーディオ、および他のタイプのコンテンツなどの共有コンテンツをアップロードおよびポストし、ならびに/または他の機能を実行することを可能にするシステムを含み得る。たとえば、クライアントデバイスは、クライアントデバイスに送信またはストリーミングされ、かつサーバおよび/もしくはネットワークサービスを介して(もしくは異なるクライアントデバイスから直接)異なるクライアントデバイスから発信された、またはサーバシステムおよび/もしくはネットワークサービスから発信されたコンテンツポストなどの受信データを表示することが可能である。
【0033】
いくつかの実装では、クライアントデバイス120,122,124および/または126のいずれかが、1つ以上のアプリケーションを提供可能である。たとえば、
図1に示すように、クライアントデバイス120は、自動ビデオクロッピングアプリケーション152を提供可能である。クライアントデバイス122~126もまた、同様のアプリケーションを提供可能である。自動ビデオクロッピングアプリケーション152は、クライアントデバイス120のハードウェアおよび/またはソフトウェアを使用して実装されても
よい。異なる実装では、自動ビデオクロッピングアプリケーション152は、たとえば、クライアントデバイス120~124のいずれかで実行される、スタンドアロンクライアントアプリケーションでもよい。自動ビデオクロッピングアプリケーション152は、動画に関するさまざまな機能、たとえば、あるアスペクト比から別のアスペクト比に変更するために動画を自動的にクロップすること等を提供してもよい。
【0034】
クライアントデバイス120,122,124および/または126上のユーザインターフェイスは、画像、動画、データ、および他のコンテンツ、ならびに通信、設定、通知、および他のデータを含むユーザコンテンツおよび他のコンテンツの表示を可能にすることができる。このようなユーザインターフェイスは、クライアントデバイス上のソフトウェア、サーバデバイス上のソフトウェア、および/またはサーバデバイス104上で実行されるクライアントソフトウェアとサーバソフトウェアとの組合わせを使用して表示することができる。ユーザインターフェイスは、クライアントデバイスの表示デバイス、たとえば、タッチスクリーンまたは他の表示画面、プロジェクタ等によって表示することができる。いくつかの実装では、サーバは、単に、ユーザがネットワークを介して動画をストリーミング/ダウンロードすることを可能にし、ユーザの許可を得て、ユーザによって送信された動画のアップロード/格納を可能にし得る。
【0035】
本明細書に記載された特徴の他の実装は、任意のタイプのシステムおよび/またはサービスを使用することができる。たとえば、ソーシャルネットワーキングサービスの代わりに、またはこれに加えて、(たとえば、インターネットに接続されている)他のネットワークサービスを使用することができる。任意のタイプの電子デバイスが、本明細書に記載される特徴を利用することができる。いくつかの実装では、コンピュータネットワークから切断された、またはコンピュータネットワークに断続的に接続された1つ以上のクライアントもしくはサーバデバイス上で、本明細書に記載された1つ以上の機能を提供することができる。
【0036】
図2Aは、いくつかの実装に係るランドスケープフォーマットの動画を示す図である。
図2Bは、
図2Aに示された動画を、動画がピラーボックス化されている縦方向のデバイスで見たときの図である。
図2Aは、動画をランドスケープモード204で表示するユーザデバイス202を示す。
図2Bは、デバイスがポートレートモードであり、縦方向で表示するためにピラーボックス化された(206)動画204が表示されていることを示す。
図2Bで分かるように、縦方向で表示するために動画がピラーボックス化される場合、動画が占有するデバイスの表示画面の部分は、実質的に小さくなっている。
【0037】
図3Aは、いくつかの実装に係る、水平動画上のクロッピング矩形を示す図である。
図3Bは、いくつかの実装に係る、縦方向で表示されるクロップされた動画を示す図である。
図3Aは、クロップ領域302が破線で示されている横方向の動画の単一フレームを示す図である。クロップ領域302は、x位置304に設けられている。後述するように、自動クロッピングプロセスは、動画の時間領域にわたってクロップ領域(ランドスケープからポートレートへのクロッピング)用のx位置を生成する。より一般的には、このプロセスによって、ソースビデオに対するクロップウィンドウ(x、y、幅、高さ)が生成される。
【0038】
図4は、いくつかの実装形式に係る、ユーザに合わせてパーソナライズされた動画を自動的にクロップする方法400の例を示すフロー図である。いくつかの実装では、方法400は、たとえば、
図1に示すように、サーバシステム102上で実装することができる。いくつかの実装では、方法400の一部または全部は、
図1に示すような1つ以上のクライアントデバイス120,122,124もしくは126、1つ以上のサーバデバイス、および/またはサーバデバイス(複数可)とクライアントデバイス(複数可)との両方
で実装することができる。説明された例では、実装システムは、1つ以上のデジタルプロセッサまたは処理回路(「プロセッサ」)、および1つ以上のストレージデバイス(たとえば、データベース106または他のストレージ)を含む。いくつかの実装では、1つ以上のサーバおよび/またはクライアントの異なる構成要素は、方法400の異なるブロックまたは他の部分を実行することができる。いくつかの例では、第1のデバイスは、方法400のブロックを実行するものとして説明される。いくつかの実装は、結果またはデータを第1のデバイスに送信することができる1つ以上の他のデバイス(たとえば、他のクライアントデバイスまたはサーバデバイス)によって実行される方法400の1つ以上のブロックを有し得る。
【0039】
いくつかの実装では、方法400、または方法の一部は、システムによって自動的に開始され得る。いくつかの実装では、実装システムは第1のデバイスである。たとえば、方法(またはその一部)は、1つ以上の特定のイベントまたは条件、たとえば、クライアントデバイスでの動画の再生、クライアントデバイスからのアップロードのための動画の準備、および/または方法によって読み取られる設定において指定可能な1つ以上の他の条件の発生に基づいて実行することができる。
【0040】
方法400は、ブロック402で開始可能である。ブロック402では、方法200の実現においてユーザデータを使用するユーザの同意(たとえば、ユーザ許可)が得られているかどうかがチェックされる。たとえば、ユーザデータは、重要な顔および追加のユーザ基準、画像コレクション内のユーザ画像(たとえば、ユーザによって取込まれた画像、ユーザによってアップロードされた画像、または他の態様ではユーザに関連する画像)、ユーザのソーシャルネットワークおよび/またはコンタクトに関する情報、ユーザ特性(アイデンティティ、名前、年齢、性別、職業など)、ソーシャルおよびその他のタイプのアクションおよびアクティビティ、カレンダーおよび予定、ユーザによって作成または送信されたコンテンツ、評価および意見、ユーザの地理位置、過去のユーザデータなどを含み得る。本明細書に記載される方法の1つ以上のブロックは、いくつかの実装において、そのようなユーザデータを使用することができる。ブロック402は、自動クロッピングアプリケーションの実行についてのユーザ同意がフレームワークレベルで得られた場合にのみブロック404等が起動されるように、自動ビデオクロッピングフレームワークレベルの一部として実行され得る。ユーザ同意が、方法400においてユーザデータが使用され得る関連ユーザから得られている場合、ブロック404において、本明細書の方法のブロックは、それらのブロックについて説明されるようなユーザデータの潜在的な使用で実装され得ると判断され、方法はブロック406に進む。ユーザの同意が得られていない場合、ブロック406において、ブロックがユーザデータを使用せずに実装されることが決定され、方法はブロック406に進む。いくつかの実装では、ユーザ同意が得られていない場合、方法400の残りは実行されない、および/またはユーザデータを必要とする特定のブロックは実行されない。たとえば、ユーザが許可を与えない場合、ブロック412~414はスキップされる。また、重要な顔の認識は、ローカルに格納されたデータに基づいて行うことができ、ユーザデバイス上でローカルに実行することができる。ユーザは、特定の重要な顔を認識するもしくは認識しないように指定する、指定を削除する、または重要な顔に基づく自動クロッピングの使用をいつでも停止することができる。
【0041】
ブロック408で、入力動画が取得される。たとえば、ユーザデバイス上のメモリに格納された動画がアクセスされる。動画は、複数のフレームを含み得る。入力動画は、方向(垂直/水平)およびアスペクト比、たとえば、4:3,16:9,18:9などを有する。たとえば、アスペクト比は、動画取込み時に、たとえば、動画を取込むデバイスのカメラパラメータに基づいて選択されてもよい。ブロック408の後に、ブロック410が続く場合がある。
【0042】
ブロック410で、入力動画のフレームごとに、1つ以上のクロップ候補領域についてフレームごとのクロップスコアが決定される。クロップ候補領域は、領域にクロップされた動画が実質的に画面全体(動画がウィンドウ型ユーザインターフェイスで再生される場合はウィンドウ)を占有するように、動画が視聴されるデバイスの視聴方向に一致し、デバイスと同じアスペクト比を有してもよい。たとえば、ランドスケープ(水平寸法が垂直寸法より大きい)であり、4000×3000画素のアスペクト比を有する入力動画が、2000×2000画素の正方形のディスプレイに表示される場合、各クロップ候補領域は、3000×3000画素でもよい(3000画素の寸法と一致してもよい)。選択された3000×3000画素のクロップ領域は、正方形のディスプレイに合わせてスケールされてもよい、たとえば、2000×2000画素にスケールダウンされてもよい。より高い解像度のクロップ領域の選択とそれに続くスケーリングは、元のコンテンツの大きな割合を保存することができる。または、2000×2000画素の表示に一致するクロップ候補領域が選択されてもよい。
【0043】
クロップスコアは、1つ以上の個別スコアを含み得る。1つ以上のスコアが使用される場合、個別のスコアがどのように1つのスコアに結合されるかを決定するヒューリスティックが存在し得る。個別スコアは、美的スコア(たとえば、508から)、顔/人物分析に基づくスコア(たとえば、506)、および/またはアクティブスピーカ分析(たとえば、504)を含み得る。さらに、いくつかの実装は、オブジェクト検出、ペットもしくは動物検出、または光学文字認識(OCR)に基づく1つ以上の追加のスコアを含んでもよい。たとえば、オブジェクト検出技術を使用して識別された顕著なオブジェクトを含むクロップ領域は、顕著なオブジェクトが検出されない、または部分的なオブジェクトのみが検出される領域よりも高いスコアが割り当てられる場合がある。たとえば、動画が自然のシーンを描いている場合、木、山、または他のオブジェクトなどの顕著なオブジェクトを有するクロップ領域は、顕著なオブジェクトを有さない、たとえば、空だけを含むクロップ領域よりも高いスコアが割り当てられてもよい。
【0044】
別の例では、ペット(たとえば、ユーザの許可を得てアクセスされる、ユーザの個人的な画像/動画ライブラリにタグ付けされる犬、猫、もしくは他のペット動物)または他の動物を描写するクロップ領域は、ペットもしくは動物を除外する領域、またはペットもしくは動物を部分的にしか描写しない領域よりも高いスコアを割り当てられる場合がある。さらに別の例では、OCRを使用して認識されたテキストを含む領域は、より高いスコアが割り当てられる場合がある。たとえば、動画がテキストを含む看板を有する店先を含む場合、看板を含むクロップ領域は、看板を除外する、または部分的にしか描写しないクロップ領域よりも高いスコアを割り当てられてもよい。フレームごとのクロップスコアは、クロップ候補領域(たとえば、動画フレーム内の所与のx位置におけるクロップ矩形)についてのスコアを含み得る。ブロック410の後に、ブロック412が続く場合がある。
【0045】
412で、顔信号が生成され、パーソナライズされたスコアが決定される。いくつかの実装では、顔信号は、少なくとも1つの重要な顔がクロップ候補領域で検出されるかどうかを示してもよい。いくつかの実装では、パーソナライズされたスコアは、フレーム内の顔を検出し、フレーム内の顔の少なくとも1つが重要な顔に一致するかどうかを決定する顔検出技術を使用して決定される(たとえば、ユーザのライブラリにある人の顔の以前の動画もしくは写真などのユーザが許可したデータに基づいて決定されるような、または視聴しているユーザのソーシャルグラフ接続もしくは電子メール、電話、チャット、動画通話などにおける通信履歴といった、他のユーザが許可した信号により決定されるような)、重要な顔が存在するかどうかに基づくスコアを含み得る。パーソナライズされたスコアは、1つ以上の重要な顔が、機械学習モデルによって決定されるクロッピング候補領域にある度合いを表す機械学習モデルからの信号に基づいて決定することができる。1つ以上の重要な顔がクロップ候補領域にあると判断することに加えて、パーソナライズされたス
コアモジュールは、クロップ候補領域内の1つ以上の重要な顔の位置、たとえば、顔がクロップ候補領域の中心にあるか、クロップ候補領域の端に近いか等を判断することもできる。ブロック412の後に、ブロック414が続く場合がある。
【0046】
414で、フレームごとのクロップスコアは、顔信号に基づいて調整される。たとえば、顔がクロップ候補領域で検出された場合、その領域のスコアは、第1の係数だけ大きくされてもよい。クロップ候補領域が重要な顔を含むことが検出された場合、その領域のスコアは、第1の係数よりも大きい第2の係数だけ大きくされてもよい。
【0047】
いくつかの実装では、クロップ領域と顔を含む境界ボックスとの交点が決定されてもよい。たとえば、顔検出技術は、境界ボックスを決定するために利用され得る。クロップスコアは、交点に基づいて調整されてもよい。たとえば、いくつかの実装では、完全な交点(顔全体がクロップ領域内に存在する)は完全なスコアブーストを受け取ってもよく、部分的な顔(顔の一部がクロップ領域から欠けている)は低いスコアブーストを受け取ってもよく、たとえば、スコアブーストは、交点の面積と顔の境界ボックスの面積との比によって重み付けされてもよい。ブロック408の後に、ブロック416が続く場合がある。
【0048】
416で、動きコストが決定される。いくつかの実装では、動きコストは、1つ以上の以前の時間(たとえば、動画内の以前のタイムスタンプ)における潜在的なクロップ経路と、動画に存在する動きとを考慮した、特定の時間(たとえば、動画内の特定のタイムスタンプ)におけるクロップ候補領域の選択に関連付けられたコストでもよい。いくつかの実装では、動きコストの決定は、たとえば、オプティカルフローまたは他の技術を使用して、クロップ領域のフレーム間の動きを分析することを含み得る。結果は、少数の動きクラスタ(たとえば、互いに近接する位置のグループにおけるクロップ領域動きを含むクラスタ)にクラスタ化することができる。いくつかの実装では、疎なオプティカルフローは、テクスチャのない領域でより良い性能を発揮することができる。動きは、少数のクラスタ(たとえば、互いに比較的近接する領域の周りのクラスタ)に減らすことができる。クラスタは、時間的な一貫性を提供しなくてもよい。
【0049】
実装例では、動きコストは、以前の時間に対するクロップ領域の動きと、最もよく一致する動きクラスタの動きとの比較に基づいて計算されてもよい。たとえば、最もよく一致する運きクラスタは、クロップ領域内の空間セントロイドと、クロップ領域の運きに最も類似する動きベクトルとを有するクラスタでもよい。動きコストは、最もよく一致するクラスタとクロップ候補領域の動きとの間の速度の絶対差の関数でもよい。コスト値は、クロップ領域を移動させるために割り当てられ、動きコストを決定するために使用され得る。たとえば、
図8A~8Cは、動画802内のクロップ領域804を示し、クロップ領域802は、本明細書に記載の技術に基づいて、動画の再生中に(たとえば、808および812)、異なる場所に移動する。ブロック416の後に、ブロック418が続く場合がある。
【0050】
418で、最小コスト経路が、フレームごとのクロップスコアと、416において決定された動きコストとに基づいて決定される。いくつかの実装では、最小コスト経路は、クロップスコアに基づいてクロップ候補領域を取得することと、クロップ領域を移動させるためのコストを含み得る最小コスト経路探索動作を行うこととを含み得る(たとえば、クロップ領域を移動させるコストは、クロップ領域がフレームからフレームまで連続して、またはフレームと後続フレームとの間で移動されている距離に基づき得る)。最小コスト経路は、最小コストの経路を解くことによって見出される。
図7は、グラフとしてプロットされた最小コスト経路および他の要因を表すグラフ700の例を示し、y軸702は動画内のクロップ領域のx位置であり、x軸は時間である。いくつかの実装は、クロップ領域の経路を滑らかにし、不連続性を除去するために、入力動画内のクロップ領域位置から
外れ値が除去される外れ値除去を含み得る。これは、最小コスト経路の副産物であり得る。ブロック418に、ブロック420が続く場合がある。
【0051】
420で、クロップキーフレーミングが生成される。クロップキーフレーミングは、開始フレームおよび終了フレームと、入力動画内のクロップ領域x位置とを含み得る。たとえば、クロップ経路の生成は、30フレーム/秒(fps)のフレームレートを有する動画の場合、5fpsで実行されてもよい。この例では、キーフレームは5fpsで生成され、ベジエスプラインなどの補間技術を使用して、動画の30fpsのフルフレームレートで滑らかな補間を生成することができる。たとえば、
図8A~
図8Cに示すように、各クロップキーフレーミングが異なるx位置のクロップ領域を含む、動画の3つのキーフレーミングセクションが存在してもよい。ブロック420の後に、ブロック422が続く場合がある。
【0052】
422で、入力動画およびクロップキーフレーミングに基づいて、クロップされた動画が出力される。たとえば、クロップされた動画は、ユーザデバイスのディスプレイに表示することができる。別の例では、クロップされた動画は、動画共有サイトなどにアップロードすることができる。クロップされた動画は、入力動画のものとは異なるアスペクト比または方向を有し得る。
【0053】
いくつかの実装では、出力は、クロップされた動画の代わりに、またはそれに加えて、クロップキーフレームおよび経路を含んでもよい。たとえば、クロップキーフレームおよび経路は、動画メタデータなどの動画に関連して格納されてもよい。ビューアアプリケーションが動画の再生を開始すると、ビューアアプリケーションのアスペクト比または方向(動画が表示されるデバイスに基づく場合がある)に一致するクロップキーフレームおよび経路が決定され、ビューアアプリケーションに提供されてもよい。ビューアアプリケーションは、再生中に動画をクロップするためにクロップキーフレームおよび経路を利用してもよい。このような実装により、クロップキーフレームおよび経路を認識し、再生時に動画をクロップするために情報を利用できるビューアアプリケーションで動画が視聴されているときに、(ビューアアプリケーションに一致する)別のビデオアセットを生成する必要がなくなる。
【0054】
方法400のさまざまなブロックは、組合わされてもよい、複数のブロックに分割されてもよい、または並行して実行されてもよい。たとえば、ブロック406および408は組合わされてもよい。いくつかの実装では、ブロックは異なる順序で実行されてもよい。たとえば、ブロック404~408およびブロック412~414は、並行して実行されてもよい。
【0055】
方法400、またはその一部は、追加の入力(たとえば、追加の動画)を使用して任意の回数繰り返されることがある。方法400は、特定のユーザ許可を得て実現することができる。たとえば、自動的なパーソナライズされたビデオクロッピングを有効にするかどうかをユーザが指定することを可能にする動画再生ユーザインターフェイスが提供されてもよい。再生に際して自動的なパーソナライズされたビデオクロッピングを実行することは、(たとえば、ユーザデバイスに格納されている)パーソナライズされたパラメータを使用して顔識別を実行することを利用し得るという情報を、ユーザに提供することが可能であり、自動的なパーソナライズされたビデオクロッピングを完全に無効にするオプションが提供される。
【0056】
顔検出および重要な顔判定を含む方法400は、特定のユーザの許可を得て、動画を再生またはアップロードしているクライアントデバイス上で完全に実行されてもよい。また、顔は人間でも、またはその他(たとえば、動物もしくはペット)でもよい。さらに、デ
バイス上で自動的なパーソナライズされたビデオクロッピングを実行する技術的利点は、記載された方法が、クライアントデバイスがアクティブなインターネット接続を有することを必要としないため、デバイスがインターネットに接続されていないときでも自動ビデオクロッピングが可能になることである。さらに、本方法はローカルに実行されるため、ネットワークリソースは消費されない。さらに、ユーザデータがサーバまたは他のサードパーティデバイスに送信されることはない。したがって、記載された技術は、ユーザデータの共有を必要としない態様で、パーソナライズされたパラメータの利点を用いて、動画が取込まれたアスペクト比または方向とは異なるアスペクト比または方向での動画再生の問題に対処することができる。
【0057】
いくつかの実装では、動画の再生中に、デバイスの方向またはアスペクト比の変化を検出することができ(たとえば、ユーザが再生中にデバイスを90度回転させたとき、または折り畳み式デバイスを開いてアスペクト比を倍にしたとき)、これに応じて、クロッピングを調整することができる(たとえば、所望の出力方向および/またはアスペクト比に合うようにクロップ領域を調整できる)。
【0058】
記載された技術は、有利なことに、ユーザ、たとえば、クロップされた動画を視聴しているユーザに合わせてパーソナライズされた、クロップされた動画を生成することができる。たとえば、横方向の(高さよりも大きい幅を有する)動画であって、2人の人物が動画の両側に描かれており、たとえば、第1の人物が画像の左端近くに現れ、第2の人物が画像の右端近くに描かれている動画を考える。このような動画が縦方向で視聴されている場合、たとえば、画面が高さよりも小さい幅を有するスマートフォンまたは他のデバイスにおいて、従来のパーソナライズされていないクロッピングでは、視聴しているユーザから独立して選択された、2人の人物の一方を描写するクロップ領域となる可能性がある。対照的に、本明細書に記載のパーソナライズされたクロッピングでは、(たとえば、重要な顔を有する)特定の人物を動画の焦点として自動的に選択し、その人物を描写するクロップ領域を選択することができる。たとえば、異なるビューアは、動画に描かれた人物を重要であると認める可能性があり、したがって、異なるビューアのためのクロップ領域は異なる可能性があることが理解され得る。より一般的には、動画が複数の被写体を描写する場合、本明細書に記載の技術によれば、異なるビューアのためのクロップ領域は、関心のある被写体(たとえば、重要な顔、ペットなど)がクロップされた動画に保存されるようにパーソナライズされてもよい。
【0059】
図5は、いくつかの実装に係る、動画を自動的にクロップするモジュール500の例を示す図である。動画は502で取得される。フレームごとの初期スコアリングは、アクティブスピーカ分析モジュール504、人物/顔分析モジュール506、または美的スコアリングモジュール508を使用して行うことができる。パーソナライズされたスコア組合わせモジュール512は、パーソナライズパラメータに基づき、パーソナライズ値を含むスコアを生成する。組合わされたパーソナライズされたスコアは、動画に写っている可能性がある重要な顔のアイデンティティを含む個人的基準510および/または他の基準に基づくスコアと組合わされた504~508からの個別のスコアを含み得る。パーソナライズされたスコアは、画像内のユーザにとって重要な顔を認識するように訓練された機械学習モデルからの値を含むことができ、モデルは、クロップ候補領域内の重要な顔の表示を提供することができる。重要な顔の表示は、クロップ領域内で識別された各重要な顔の位置を含み得る。重要な顔は、ユーザがデバイスを使用して過去に動画または写真を撮った顔、次のうち少なくとも1つの顔が含まれ得る。少なくとも閾値回数発生する顔、ユーザのライブラリの少なくとも閾値割合で(たとえば、ライブラリ内の画像および動画の少なくとも5%で)現れる顔、少なくとも閾値頻度で(たとえば、画像/動画がライブラリ内にある年の大半について、少なくとも年に1回)現れる顔などのうちの少なくとも1つである顔。
【0060】
パーソナライズされたスコア組合せ512と並行して、動作分析514ならびに/または動きおよび加速度コスト計算516を実行することができる。運きコスト計算器516およびパーソナライズされたスコア組合せ512の出力は、最小コスト経路探索518によって使用することができる。最小コスト経路探索518の出力は、局所的最適化およびヒューリスティック520でさらに処理され、その後、クロップキーフレーミング522に使用することができる。また、最小コスト経路探索518の出力は、品質または信頼度スコア524を計算するために使用可能である。
【0061】
品質スコアまたは信頼度スコアは、動画を自動的にクロップするか、動画をクロップしないかを決定するために使用可能である。たとえば、一部の動画は、縦長にうまくクロップすることができない。動画をうまくクロップするとができないと示す品質または信頼度基準を有することは、ビデオクロッピングを試みないとシステムに示し、代わりに動画をレターボックス付きフォーマットで表示することにフォールバックすることができる。他の例では、動画に2つ以上の重要な顔があり、その顔は、クロッピングによって1つ以上の重要な顔が動画から切り取られるように配置されてもよい。これは、自動ビデオクロッピング動作を行わない他の場合である。
【0062】
いくつかの実装は、クロップ領域をどこに配置するかを決定するための追加の入力信号を含み得る。追加の入力信号は、動画の顕著性(たとえば、美観だけではない)、顔の品質、関心のあるオブジェクト(たとえば、人間、動物など)、またはパーソナライズされた信号(たとえば、重要な顔)のうちの1つ以上を含み得る。いくつかの実装では、システムは、人物を追うカメラの検出、誰がカメラを見ているか、カメラでの持続時間などのうちの1つ以上を使用して、動画で誰が重要であるかをプログラム的に決定するよう試みることができる。
【0063】
いくつかの実装は、カメラ加速度を平滑化するためのルーチンを含み得る。いくつかの実装では、ベジエスプラインを使用するためのキーフレーム補間を含み得る。いくつかの実装では、システムは、カメラ速度の変化を制御可能である。
【0064】
図6は、本明細書に記載される1つ以上の特徴を実装するために使用され得るデバイス600の例を示すブロック図である。一例では、デバイス600は、クライアントデバイス、たとえば、
図1に示されるクライアントデバイスのいずれかを実装するために使用され得る。または、デバイス600は、サーバデバイス、たとえばサーバ104を実装可能である。いくつかの実装では、デバイス600は、クライアントデバイス、サーバデバイス、またはクライアントデバイスとサーバデバイスとの両方を実装するために使用され得る。デバイス600は、上述したように、任意の適切なコンピュータシステム、サーバ、または他の電子もしくはハードウェアデバイスであり得る。
【0065】
本明細書に記載される1つ以上の方法は、任意のタイプのコンピューティングデバイス上で実行される別のプログラムの一部として、またはモバイルコンピューティングデバイス(たとえば、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス(腕時計、アームバンド、宝石、ヘッドウェア、仮想現実ゴーグルもしくは眼鏡、拡張現実ゴーグルもしくは眼鏡、ヘッドマウントディスプレイなど)、ラップトップコンピュータなど)上で実行されるモバイルアプリケーション(「アプリ」)もしくはモバイルアプリの一部として、任意のタイプのコンピューティングデバイス上で実行可能なスタンドアロンプログラムで実行可能である。
【0066】
いくつかの実装では、デバイス600は、プロセッサ602、メモリ604、および入出力(I/O)インターフェイス606を含む。プロセッサ602は、プログラムコード
を実行し、デバイス600の基本動作を制御する1つ以上のプロセッサおよび/または処理回路であり得る。「プロセッサ」は、データ、信号、または他の情報を処理する任意の適切なハードウェアシステム、機構またはコンポーネントを含む。プロセッサは、1つ以上のコア(たとえば、シングルコア、デュアルコア、またはマルチコア構成)を有する汎用中央処理装置(CPU)、複数の処理ユニット(たとえば、マルチプロセッサ構成)、グラフィックス処理ユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、複合プログラマブル論理デバイス(CPLD)、機能を実現するための専用回路、ニューラルネットワークモデルに基づく処理を実現するための専用プロセッサ、ニューラル回路、行列計算(たとえば行列乗算)用に最適化されたプロセッサを有するシステム、または他のシステムを含み得る。いくつかの実装では、プロセッサ602は、ニューラルネットワーク処理を実現する1つ以上のコプロセッサを含んでもよい。いくつかの実装では、プロセッサ602は、確率的出力を生成するためにデータを処理するプロセッサでもよく、たとえば、プロセッサ602によって生成される出力は不正確でもよい、または予想出力から範囲内で正確でもよい。処理は、特定の地理的位置に限定される必要はない、または、時間的な制限を有する必要はない。たとえば、プロセッサは、「リアルタイム」、「オフライン」、「バッチモード」などでその機能を実行してもよい。処理の一部は、異なる時間に異なる場所で異なる(または同じ)処理システムによって実行されてもよい。コンピュータは、メモリと通信している任意のプロセッサでもよい。
【0067】
メモリ604は、典型的には、プロセッサ602によるアクセスのためにデバイス600に設けられ、プロセッサによる実行のための命令を格納するのに適したランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、電気消去可能読取専用メモリ(EEPROM)、フラッシュメモリなどの任意の好適なプロセッサ読取可能ストレージ媒体でもよく、プロセッサ602とは別に、および/またはそれと統合されて配置され得る。メモリ604は、オペレーティングシステム608、機械学習アプリケーション630、他のアプリケーション612、およびアプリケーションデータ614を含む、プロセッサ602によってサーバデバイス600上で動作するソフトウェアを格納することができる。他のアプリケーション612は、ビデオクロッピングアプリケーション、データ表示エンジン、ウェブホスティングエンジン、画像表示エンジン、通知エンジン、ソーシャルネットワーキングエンジンなどのアプリケーションを含み得る。いくつかの実装では、機械学習アプリケーション630および/または他のアプリケーション612は、プロセッサ602が本明細書に記載の機能、たとえば
図4および
図5の方法の一部または全部を実行することを可能にする命令を含み得る。
【0068】
他のアプリケーション612は、たとえば、ビデオアプリケーション、メディア表示アプリケーション、通信アプリケーション、ウェブホスティングエンジンもしくはアプリケーション、マッピングアプリケーション、メディア共有アプリケーションなどを含み得る。本明細書に開示される1つ以上の方法は、いくつかの環境およびプラットフォームで動作可能であり、たとえば、任意のタイプのコンピューティングデバイス上で実行可能なスタンドアロンコンピュータプログラムとして、モバイルコンピューティングデバイス上で実行されるモバイルアプリケーション(「アプリ」)などとして動作することが可能である。
【0069】
さまざまな実装において、機械学習アプリケーションは、ベイズ分類器、サポートベクターマシン、ニューラルネットワーク、または他の学習技法を利用してもよい。いくつかの実装では、機械学習アプリケーション630は、訓練済みモデル634と、推論エンジン636と、データ632とを含んでもよい。いくつかの実装では、データ632は、訓練データ、たとえば、訓練済みモデル634を生成するために使用されるデータを含んでもよい。たとえば、訓練データは、ユーザがユーザデバイス上で撮った写真または動画、
ユーザデバイス上の写真または動画に描かれた人の顔識別情報など、ユーザの許可を得てアクセスされる任意のタイプのデータを含んでもよい。訓練済みモデル634が顔信号を生成するモデルである場合、訓練データは、写真、動画、および関連するメタデータを含んでもよい。
【0070】
訓練データは、任意のソース、たとえば、訓練用に特にマークされたデータリポジトリ、機械学習のための訓練データとして使用するための許可が与えられたデータ等から取得されてもよい。1人以上のユーザが、機械学習モデル、たとえば、訓練済みモデル634を訓練するために、それぞれのユーザデータの使用を許可する実装では、訓練データは、そのようなユーザデータを含んでもよい。
【0071】
いくつかの実装では、訓練データは、訓練されているコンテキストにおけるユーザ入力またはアクティビティに基づかないデータ、たとえば、動画から生成されるデータなど、訓練を目的として生成された合成データを含んでもよい。いくつかの実装では、機械学習アプリケーション630は、データ632を除外する。たとえば、これらの実装では、訓練済みモデル634は、たとえば、異なるデバイスで生成され、機械学習アプリケーション630の一部として提供されてもよい。さまざまな実装では、訓練済みモデル634は、モデル構造または形式、および関連する重みを含むデータファイルとして提供されてもよい。推論エンジン636は、訓練済みモデル634のデータファイルを読み取り、訓練済みモデル634で指定されたモデル構造または形式に基づいて、ノード接続性、層、および重みを有するニューラルネットワークを実装してもよい。
【0072】
いくつかの実装では、訓練済みモデル634は、1つ以上のモデル形式または構造を含んでもよい。たとえば、モデル形式または構造は、任意のタイプのニューラルネットワーク、たとえば、線形ネットワーク、複数の層(たとえば、入力層と出力層との間の「隠れ層」、各層は線形ネットワークである)を実装する深層ニューラルネットワーク、畳み込みニューラルネットワーク(たとえば、入力データを複数の部分またはタイルに分割または区分し、1つ以上のニューラルネットワーク層を使用して各タイルを別々に処理し、各タイルの処理から結果を集約するネットワーク)、シーケンスからシーケンスへのニューラルネットワーク(たとえば、文中の単語、動画中のフレームなどの連続データを入力として取り、結果シーケンスを出力として生成するネットワーク)などが含まれ得る。モデル形式または構造は、さまざまなノード間の接続性、およびノードの層への編成を指定することができる。
【0073】
たとえば、第1の層(たとえば、入力層)のノードは、入力データ632またはアプリケーションデータ614としてデータを受信してもよい。たとえば、訓練済みモデル634が顔信号を生成する場合、入力データは、ユーザデバイスによって取込まれた写真または動画を含んでもよい。後続の中間層は、モデル形式または構造で指定された接続性に従って、前の層のノードの出力を入力として受け取ることができる。これらの層は、隠れ層または潜在層と呼ばれることもある。
【0074】
最終層(たとえば、出力層)は、機械学習アプリケーションの出力を生成する。たとえば、出力は、重要な顔が動画フレーム(またはフレーム)に存在するかどうかの表示でもよい。いくつかの実装では、モデル形式または構造は、各層のノードの数および/またはタイプも指定する。
【0075】
異なる実装では、訓練済みモデル634は、モデル構造または形式ごとに層に配置された、複数のノードを含み得る。いくつかの実装では、ノードは、たとえば、1単位の入力を処理して1単位の出力を生成するように構成された、メモリを有さない計算ノードでもよい。ノードによって実行される計算は、たとえば、複数のノード入力の各々に重みを乗
算すること、加重和を取得すること、およびバイアスまたはインターセプト値で加重和を調整してノード出力を生成することを含んでもよい。いくつかの実装では、ノードによって実行される計算は、調整された加重和にステップ/活性化関数を適用することも含み得る。いくつかの実装では、ステップ/活性化関数は、非線形関数でもよい。さまざまな実装では、そのような計算は、行列乗算などの演算を含んでもよい。いくつかの実装では、複数のノードによる計算は、たとえば、マルチコアプロセッサの複数のプロセッサコアを用いて、GPUの個別の処理ユニットを用いて、または特殊用途のニューラル回路を用いて、並行して実行されてもよい。いくつかの実装では、ノードは、メモリを含んでもよく、たとえば、後続の入力を処理する際に1つ以上の以前の入力を格納し、使用してもよい。たとえば、メモリを有するノードは、長短記憶(long short-term memory:LSTM)ノードを含んでもよい。LSTMノードは、メモリを使用して、ノードが有限状態マシン(finite state machine:FSM)のように動作することを可能にする「状態」を維持することができる。このようなノードを有するモデルは、文または段落の単語、動画のフレーム、スピーチまたはその他の音声など、連続したデータを処理するのに有用な場合がある。
【0076】
いくつかの実装では、訓練済みモデル634は、個別のノードのための重みを含んでもよい。たとえば、モデルは、モデル形式または構造によって指定されるように層に編成された複数のノードとして初期化されてもよい。初期化時に、それぞれの重みが、モデル形式に従って接続されるノードの各組、たとえば、ニューラルネットワークの連続する層のノード間の接続に適用されてもよい。たとえば、それぞれの重みは、ランダムに割り当てられてもよい、またはデフォルト値に初期化されてもよい。モデルはその後、たとえば、データ632を使用して、結果を生成するように訓練されてもよい。
【0077】
たとえば、訓練は、教師あり学習技法を適用することを含み得る。教師あり学習では、学習データは、複数の入力(写真または動画)と、入力ごとに対応する予想出力(たとえば、1つ以上の重要な顔の存在など)とを含み得る。モデルの出力と予想出力との比較に基づいて、重みの値は、たとえば、同様の入力が提供されるとモデルが予想出力を生成する確率を増加させる態様で、自動的に調整される。
【0078】
いくつかの実装では、訓練は、教師なし学習技法を適用することを含んでもよい。教師なし学習では、入力データのみが提供され、モデルは、データを区別するように、たとえば、入力データを複数のグループにクラスター化するように訓練されてもよく、各グループは、何らかの態様で類似している入力データ、たとえば、写真または動画フレームに存在する類似の重要な顔を有する入力データを含む。たとえば、モデルは、重要な顔を含む動画フレームまたはクロッピング矩形を、重要でない顔を含むフレームまたは顔を含まないフレームと区別するように訓練されてもよい。
【0079】
いくつかの実装では、教師なし学習は、たとえば、機械学習アプリケーション630によって使用され得る知識表現を生成するために使用されてもよい。たとえば、教師なし学習は、
図4および
図5を参照して上述したように利用されるパーソナライズされたパラメータ信号を生成するために使用されてもよい。さまざまな実装において、訓練済みモデルは、モデル構造に対応する重みのセットを含む。データ632が省略される実装では、機械学習アプリケーション630は、たとえば、機械学習アプリケーション630の開発者、サードパーティなどによる、事前の訓練に基づく訓練済みモデル634を含んでもよい。いくつかの実装では、訓練済みモデル634は、固定された、たとえば、重みを提供するサーバからダウンロードされた重みのセットを含んでもよい。
【0080】
また、機械学習アプリケーション630は、推論エンジン636を含む。推論エンジン636は、訓練済みモデル634をアプリケーションデータ614などのデータに適用し
て、推論を提供するように構成されている。いくつかの実装では、推論エンジン636は、プロセッサ602によって実行されるソフトウェアコードを含んでもよい。いくつかの実装では、推論エンジン636は、プロセッサ602が訓練済みモデルを適用することを可能にする(たとえば、プログラマブルプロセッサのための、フィールドプログラマブルゲートアレイ(FPGA)のための、など)回路構成を指定してもよい。いくつかの実装では、推論エンジン636は、ソフトウェア命令、ハードウェア命令、または組合わせを含み得る。いくつかの実装では、推論エンジン636は、推論エンジン636を呼び出すために、たとえば、訓練済みモデル634をアプリケーションデータ614に適用して推論を生成するために、オペレーティングシステム608および/または他のアプリケーション612によって使用できるアプリケーションプログラミングインターフェイス(API)を提供してもよい。たとえば、重要な顔モデルの推論は、たとえば、1つ以上の重要な顔を有する以前に取込まれた写真または動画との比較に基づく、動画フレームまたはクロッピング矩形の分類でもよい。
【0081】
機械学習アプリケーション630は、いくつかの技術的利点を提供し得る。たとえば、訓練済みモデル634が教師なし学習に基づいて生成される場合、訓練済みモデル634は、入力データ、たとえば、アプリケーションデータ614から知識表現(たとえば、数値表現)を生成するために推論エンジン636によって適用可能である。たとえば、顔信号を生成するように訓練されたモデルは、データサイズ(たとえば、1KB)が入力音声記録(たとえば、1MB)よりも小さい通話の表現を生成することができる。いくつかの実装では、そのような表現は、出力(たとえば、ラベル、分類など)を生成するための処理コスト(たとえば、計算コスト、メモリ使用量など)を低減するのに役立つ場合がある。
【0082】
いくつかの実装では、そのような表現は、推論エンジン636の出力から出力を生成する異なる機械学習アプリケーションへの入力として提供されてもよい。いくつかの実装では、機械学習アプリケーション630によって生成された知識表現は、たとえば、ネットワークを介して、さらに他の処理を行う異なるデバイスに提供されてもよい。たとえば、
図4または
図5を参照して説明した技術を用いて生成された顔信号は、
図4または
図5を参照して説明したように、パーソナライズされたパラメータを用いて自動ビデオクロッピングで使用するためにクライアントデバイスに提供することができる。このような実装では、重要な顔の写真または動画ではなく、知識表現を提供することにより、技術的な利点、たとえば、より低コストでより速いデータ伝送を可能にし得る。他の例では、重要な顔をクラスター化するように訓練されたモデルは、入力写真または動画からクラスタを生成することができる。クラスタは、元の写真または動画へのアクセスを必要としないさらに他の処理(たとえば、重要な顔が動画フレームまたはクロッピング矩形に存在するか否かの判定など)に適している場合があり、したがって、計算コストを節約することができる。
【0083】
いくつかの実装では、機械学習アプリケーション630は、オフライン方式で実装されてもよい。これらの実装では、訓練済みモデル634は、第1段階で生成され、機械学習アプリケーション630の一部として提供されてもよい。いくつかの実装では、機械学習アプリケーション630は、オンライン方式で実装されてもよい。たとえば、そのような実装では、機械学習アプリケーション630を呼び出すアプリケーション(たとえば、オペレーティングシステム608、他のアプリケーション612の1つ以上)は、機械学習アプリケーション630によって生成された推論を利用し、たとえば、推論をユーザに提供し、システムログ(たとえば、ユーザによって許可されている場合、推論に基づいてユーザによって行われたアクション、またはさらに他の処理についての入力として利用される場合、さらに他の処理の結果)を生成してもよい。システムログは、定期的に、たとえば、時間ごとに、月ごとに、四半期ごとなどに生成されてもよく、ユーザの許可を得て、
訓練済みモデル634を更新するため、たとえば、訓練済みモデル634のための重要な顔データを更新するために使用されてもよい。
【0084】
いくつかの実装では、機械学習アプリケーション630は、機械学習アプリケーション630が実行されるデバイス600の特定の構成に適応可能な態様で実装されてもよい。たとえば、機械学習アプリケーション630は、利用可能な計算リソース、たとえば、プロセッサ602を利用する計算グラフを決定してもよい。たとえば、機械学習アプリケーション630は、プロセッサ602が特定の数(たとえば、1000個)のGPUコアを有するGPUを含むと決定し、それに応じて(たとえば、1000個の個別のプロセスまたはスレッドとして)推論エンジンを実装してもよい。
【0085】
いくつかの実装では、機械学習アプリケーション630は、訓練済みモデルのアンサンブルを実装してもよい。たとえば、訓練済みモデル634は、各々が同じ入力データに適用可能な複数の訓練済みモデルを含んでもよい。これらの実装では、機械学習アプリケーション630は、たとえば、利用可能な計算リソース、事前推論成功率などに基づいて、特定の訓練済みモデルを選択してもよい。いくつかの実装では、機械学習アプリケーション630は、複数の訓練済みモデルが適用されるように、推論エンジン636を実行してもよい。これらの実装では、機械学習アプリケーション630は、たとえば、各訓練済みモデルの適用から個別の出力の得点を付ける投票技術を使用して、または1つ以上の特定の出力を選択することによって、個別のモデルの適用からの出力を組合わせてもよい。さらに、これらの実装において、機械学習アプリケーションは、個別の訓練済みモデルを適用するための時間閾値を適用し(たとえば、0.5ms)、時間閾値内で利用可能なこれらの個別の出力のみを利用してもよい。時間閾値内に受信されない出力は、利用されなくてもよい、たとえば、破棄されてもよい。たとえば、このようなアプローチは、たとえば、オペレーティングシステム608または1つ以上のアプリケーション612によって、たとえば、1つ以上の重要な顔が検出されたかどうかおよび他のパーソナライズされた基準に基づいて、動画を自動的にクロップする機械学習アプリケーションを呼び出す間に指定された時間制限が設けられている場合に適していることがある。
【0086】
異なる実装において、機械学習アプリケーション630は、異なるタイプの出力を生成することができる。たとえば、機械学習アプリケーション630は、表現またはクラスタ(たとえば、入力データの数値表現)、ラベル(たとえば、画像、文書、音声記録などを含む入力データ用)などを提供することができる。いくつかの実装では、機械学習アプリケーション630は、起動するアプリケーション、たとえばオペレーティングシステム608または1つ以上のアプリケーション612によって指定されるフォーマットに基づいて、出力を生成してもよい。
【0087】
メモリ604内のソフトウェアのいずれかは、代替的に、任意の他の適切な格納場所またはコンピュータ読取可能媒体に格納することができる。さらに、メモリ604(および/または他の接続されたストレージデバイス(複数可))は、1つ以上のメッセージ、1つ以上の分類法、電子百科事典、辞書、シソーラス、知識ベース、メッセージデータ、文法、顔識別子(たとえば、重要な顔)、および/または本明細書に記載する機能で使用する他の命令とデータとを格納可能である。メモリ604および任意の他のタイプのストレージ(磁気ディスク、光ディスク、磁気テープ、または他の有形媒体)は、「ストレージ」または「ストレージデバイス」とみなすことができる。
【0088】
入出力インターフェイス606は、デバイス600を他のシステムおよびデバイスとインターフェイス接続することを可能にする機能を提供可能である。インターフェイス接続されたデバイスは、デバイス600の一部として含まれ得る、または別個であってデバイス600と通信し得る。たとえば、ネットワーク通信デバイス、ストレージデバイス(た
とえば、メモリおよび/またはデータベース106)、ならびに入出力デバイスは、入出力インターフェイス606を介して通信可能である。いくつかの実装では、入出力インターフェイスは、入力デバイス(キーボード、ポインティングデバイス、タッチスクリーン、マイク、カメラ、スキャナ、センサなど)および/または出力デバイス(表示デバイス、スピーカデバイス、プリンタ、モータなど)等のインターフェイスデバイスに接続可能である。入出力インターフェイス606は、たとえば、デバイス600をセルラーネットワークまたは他のテレフォニーネットワークに結合するために、テレフォニーインターフェイスも含み得る。
【0089】
入出力インターフェイス606に接続可能なインターフェイス付きデバイスのいくつかの例は、コンテンツ、たとえば、画像、動画、および/または本明細書に記載されるような出力アプリケーションのユーザインターフェイスを表示するために使用することができる1つ以上の表示デバイス620を含み得る。表示デバイス620は、ローカル接続(たとえば、ディスプレイバス)を介して、および/またはネットワーク接続を介してデバイス600に接続することができ、任意の適切な表示デバイスであり得る。表示デバイス620は、LCD、LED、またはプラズマディスプレイスクリーン、CRT、テレビ、モニタ、タッチスクリーン、3Dディスプレイスクリーン、または他の視覚表示デバイスといった、任意の適切な表示デバイスを含み得る。たとえば、表示デバイス620は、モバイルデバイスに設けられたフラットディスプレイ画面、ゴーグルまたはヘッドセットデバイスに設けられた複数のディスプレイ画面、またはコンピュータデバイスのモニタ画面であり得る。
【0090】
図示を容易にするために、
図6では、プロセッサ602、メモリ604、入出力インターフェイス606、およびソフトウェアブロック608,612,630の各々について1つのブロックを示している。これらのブロックは、1つ以上のプロセッサまたは処理回路、オペレーティングシステム、メモリ、入出力インターフェイス、アプリケーション、および/またはソフトウェアモジュールを表してもよい。他の実装では、デバイス600は、示されたすべての構成要素を有していなくてもよく、および/または、本明細書に示された要素の代わりに、もしくはそれらに加えて、他のタイプの要素を含む他の要素を有してもよい。いくつかの構成要素は、本明細書のいくつかの実装で説明されるようなブロックおよび動作を実行するものとして説明されるが、環境100、デバイス600、類似のシステム、またはそのようなシステムに関連付けられた任意の適切な1つまたは複数のプロセッサの構成要素の任意の適切な構成要素または組合せは、説明するブロックおよび動作を実行してもよい。
【0091】
本明細書に記載される方法は、コンピュータ上で実行可能なコンピュータプログラム命令またはコードによって実現することができる。たとえば、コードは、1つ以上のデジタルプロセッサ(たとえば、マイクロプロセッサまたは他の処理回路)によって実装することができ、非一時的コンピュータ読取可能媒体(たとえば、ストレージデバイス)、たとえば、半導体もしくは固体メモリ、磁気テープ、取外し可能コンピュータディスケット、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、フラッシュメモリ、硬磁気ディスク、光ディスク、固体メモリドライブなどの磁気、光学、電磁、または半導体ストレージ媒体などを含むコンピュータプログラム製品に格納可能である。プログラム命令を、たとえば、サーバ(たとえば、分散システムおよび/またはクラウドコンピューティングシステム)から配信されるサービスとしてのソフトウェア(SaaS)の形式で、電子信号に含み、電子信号として提供することも可能である。または、1つ以上の方法は、ハードウェア(論理ゲートなど)、またはハードウェアとソフトウェアとの組合わせで実装可能である。ハードウェアの例は、プログラマブルプロセッサ(たとえば、フィールドプログラマブルゲートアレイ(FPGA)、複合プログラマブル論理デバイス)、汎用プロセッサ、グラフィックスプロセッサ、特定用途向け集積回路(ASIC)等であり得
る。1つ以上の方法は、システム上で実行されるアプリケーションの一部もしくはコンポーネントとして、または他のアプリケーションおよびオペレーティングシステムと連動して実行されるアプリケーションもしくはソフトウェアとして実行可能である。
【0092】
本明細書ではその特定の実装に関して説明したが、これらの特定の実装は例示に過ぎず、制限的なものではない。例に示された概念は、他の例および実装に適用可能である。
【0093】
本明細書で議論される特定の実装が、ユーザに関する個人情報(たとえば、ユーザデータ、顔認識データ、ユーザのソーシャルネットワークに関する情報、ユーザの位置およびその位置での時間、ユーザの生体情報、ユーザの活動および人口統計情報)を収集または使用し得る状況において、ユーザには、情報を収集するか否か、個人情報を格納するか否か、個人情報を使用するか否か、ならびにユーザについて情報を収集、格納および使用する態様を制御する1つ以上の機会が提供される。すなわち、本明細書で議論されるシステムおよび方法では、ユーザの個人情報の具体的な収集、格納および/または使用は、関連するユーザからそうするための明示的な認可を受けると行われる。たとえば、ユーザには、プログラムまたは機能が、その特定のユーザ、またはプログラムもしくは機能に関連する他のユーザについてのユーザ情報を収集するか否かの制御が提供される。個人情報が収集される各ユーザには、当該ユーザに関連する情報収集の制御を可能にし、情報が収集されるかどうか、および情報のどの部分が収集されるかに関して許可または承認を与えるための1つ以上のオプションが提示される。たとえば、ユーザには、通信ネットワークを介して1つ以上のそのような制御オプションを提供可能である。さらに、特定のデータは、格納または使用される前に、個人を特定可能な情報を削除できるように、1つ以上の方法で処理可能である。一例として、ユーザのアイデンティティは、個人を特定できる情報が決定されないように取り扱われてもよい。別の例として、ユーザのデバイスの地理的位置は、ユーザの特定の位置を特定できないように、より大きな地域へと一般化されてもよい。
【0094】
なお、本開示で説明する機能ブロック、動作、特徴、方法、デバイス、およびシステムは、当業者に知られているようなシステム、デバイス、および機能ブロックの異なる組合わせに統合または分割され得る。任意の適切なプログラミング言語およびプログラミング技術を使用して、特定の実装のルーチンを実現することができる。異なるプログラミング技法、たとえば手続き的またはオブジェクト指向の技法を採用してもよい。ルーチンは、単一の処理デバイスまたは複数のプロセッサ上で実行することができる。ステップ、動作、または計算は、特定の順序で提示され得るが、順序は、異なる特定の実装で変更されてもよい。いくつかの実装では、本明細書で順次として示される複数のステップまたは動作を同時に実行してもよい。