IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ グーグル インコーポレイテッドの特許一覧

<>
  • 特許-選択的な動きの描画を伴う画像表示 図1
  • 特許-選択的な動きの描画を伴う画像表示 図2
  • 特許-選択的な動きの描画を伴う画像表示 図3
  • 特許-選択的な動きの描画を伴う画像表示 図4
  • 特許-選択的な動きの描画を伴う画像表示 図5
  • 特許-選択的な動きの描画を伴う画像表示 図6
  • 特許-選択的な動きの描画を伴う画像表示 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-06
(45)【発行日】2024-11-14
(54)【発明の名称】選択的な動きの描画を伴う画像表示
(51)【国際特許分類】
   G06F 16/78 20190101AFI20241107BHJP
   G06T 7/20 20170101ALI20241107BHJP
   G06T 7/00 20170101ALI20241107BHJP
【FI】
G06F16/78
G06T7/20 300Z
G06T7/00 350C
【請求項の数】 18
【外国語出願】
(21)【出願番号】P 2024021131
(22)【出願日】2024-02-15
(62)【分割の表示】P 2021543225の分割
【原出願日】2019-09-27
(65)【公開番号】P2024073439
(43)【公開日】2024-05-29
【審査請求日】2024-03-14
(31)【優先権主張番号】16/258,406
(32)【優先日】2019-01-25
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】イケモト,レスリー
(72)【発明者】
【氏名】ソウデン,ポール
【審査官】酒井 恭信
(56)【参考文献】
【文献】特開2007-221495(JP,A)
【文献】米国特許出願公開第2007/0206917(US,A1)
【文献】特開2017-111660(JP,A)
【文献】特開2004-357054(JP,A)
【文献】特開平08-317378(JP,A)
【文献】特開2006-222510(JP,A)
【文献】米国特許出願公開第2015/0341550(US,A1)
【文献】特開2013-046259(JP,A)
【文献】特開2015-061236(JP,A)
【文献】特開2013-015916(JP,A)
【文献】特開2000-115762(JP,A)
【文献】米国特許出願公開第2010/0104261(US,A1)
【文献】特開2017-217472(JP,A)
【文献】特開2009-048347(JP,A)
【文献】特開2018-081404(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00 - 16/958
G06T 7/00 - 7/292
(57)【特許請求の範囲】
【請求項1】
コンピュータによって実行される方法であって、
被写体の種類、および複数のフレームを含む動画像における前記被写体の移動の程度を判断するステップと、
前記被写体の前記種類および前記被写体の前記移動の程度に基づいて、前記動画像の動きスコアを算出するステップとを含み、前記動きスコアを算出するステップは、
前記被写体の前記移動の程度が移動のしきい値レベルを満たすかどうかを判断するステップを含み、前記移動のしきい値レベルは前記被写体の前記種類に基づき、前記動きスコアを算出するステップは、さらに、
前記被写体の前記移動の程度が前記移動のしきい値レベルを満たすと判断された場合、前記被写体の種類が風景または無生物であるかどうかを判断し、前記被写体の種類が風景または無生物であると判断された場合、前記動きスコアを表示しきい値を満たさない値に設定するステップと、
前記被写体の前記移動の程度が前記移動のしきい値レベルを満たさないと判断された場合、前記動きスコアを前記表示しきい値を満たさない値に設定するステップと、
前記動きスコアを算出するステップの後に前記動きスコアが前記表示しきい値を満たすかどうかを判断するステップと、
前記動きスコアが前記表示しきい値を満たす場合、前記動画像の前記複数のフレームを連続して表示することによって、前記動画像を被写体の動きを伴って表示させるステップと、
前記動きスコアが前記表示しきい値を満たさなかった場合、前記動画像の前記複数のフレームのうち特定のフレームを表示することによって、前記動画像を被写体の動きなしで表示させるステップとを含む、コンピュータによって実行される方法。
【請求項2】
前記動画像は、1つ以上のその他の画像を含むユーザインターフェースにおいて表示され、前記動きスコアが前記表示しきい値を満たす場合、前記ユーザインターフェースにおける前記動画像のサイズは、前記1つ以上のその他の画像のうち少なくとも1つよりも大きい、請求項1に記載の、コンピュータによって実行される方法。
【請求項3】
前記動画像は、1つ以上のその他の画像を含むユーザインターフェースの一部として表示され、前記方法は、さらに、
前記1つ以上のその他の画像の各動きスコアを決定するステップと、
前記1つ以上のその他の画像の前記各動きスコアに基づいて前記表示しきい値を設定するステップとを含む、請求項1または2に記載のコンピュータによって実行される方法。
【請求項4】
記動きスコアを算出するステップは、動きスコアを決定するように訓練された機械学習モデルを適用するステップを含む、請求項1~のいずれか1項に記載のコンピュータによって実行される方法。
【請求項5】
前記動画像は、クライアントデバイスによって撮影されて、前記クライアントデバイスの揮発性メモリに保存され、
前記動きスコアが前記表示しきい値とは異なる保存しきい値を満たさないと判断するステップと、
前記動きスコアが前記保存しきい値を満たさないと判断したことに応答して、前記動画像の前記複数のフレームのうち前記特定のフレームのみを含む静止画像を取得して、前記クライアントデバイスの不揮発性メモリに保存するステップとをさらに含む、請求項1~のいずれか1項に記載のコンピュータによって実行される方法。
【請求項6】
前記動きスコアを算出するステップは、前記クライアントデバイスのユーザが前記被写体を知っているか否かを判断するステップを含む、請求項5に記載のコンピュータによって実行される方法。
【請求項7】
前記動画像は、前記被写体の種類を示すラベルおよび前記動画像の撮影中に録音された音の少なくとも1つを含む、請求項1~6のいずれか1項に記載のコンピュータによって実行される方法。
【請求項8】
複数のフレームから構成される動画像を表示するためのデバイスであって、前記デバイスは、
プロセッサと、
前記プロセッサに連結された、プログラムを格納した非一時的なコンピュータ読み取り可能な記録媒体とを備え、前記プログラムは、前記プロセッサによって実行されると、前記プロセッサに動作を実行させ、前記動作は、
被写体の種類、および複数のフレームを含む動画像における前記被写体の移動の程度を判断することと、
前記被写体の前記種類および前記被写体の前記移動の程度に基づいて、前記動画像の動きスコアを算出することと、
1つ以上のその他の画像の各動きスコアを決定することとを含み、前記動画像は、前記1つ以上のその他の画像を含むユーザインターフェースの一部として表示され、前記動作は、さらに、
前記1つ以上のその他の画像の前記各動きスコアに基づいて表示しきい値を設定することと、
前記動きスコアが前記表示しきい値を満たすかどうかを判断することと、
前記動きスコアが前記表示しきい値を満たす場合、前記動画像の前記複数のフレームを連続して表示することによって、前記動画像を被写体の動きを伴って前記ユーザインターフェースに表示させることと、
前記動きスコアが前記表示しきい値を満たさなかった場合、前記動画像の前記複数のフレームのうち特定のフレームを表示することによって、前記動画像を被写体の動きなしで前記ユーザインターフェースに表示させることとを含む、デバイス。
【請求項9】
前記動きスコアを算出する動作は、
前記被写体の前記移動の程度が移動のしきい値レベルを満たすかどうかを判断することと、
前記被写体の前記移動の程度が前記移動のしきい値レベルを満たすと判断された場合、前記被写体の種類が風景または無生物であるかどうかを判断し、前記被写体の種類が風景または無生物であると判断された場合、前記動きスコアを前記表示しきい値を満たさない値に設定することと、
前記被写体の前記移動の程度が前記移動のしきい値レベルを満たさないと判断された場合、前記動きスコアを前記表示しきい値を満たさない値に設定することとを含む、請求項8に記載のデバイス。
【請求項10】
前記移動のしきい値レベルは、前記被写体の前記種類に基づく、請求項9に記載のデバイス。
【請求項11】
前記プロセッサに連結された揮発性メモリと、
前記プロセッサに連結された不揮発性メモリとをさらに備え、前記動画像は、前記デバイスによって撮影されて、撮影された際に前記揮発性メモリに保存され、前記動作は、さらに、
前記動きスコアが前記表示しきい値とは異なる保存しきい値を満たさないと判断することと、
前記動きスコアが前記保存しきい値を満たさないと判断したことに応答して、前記動画像の前記複数のフレームのうち前記特定のフレームのみを含む静止画像を取得して前記デバイスの前記不揮発性メモリに保存することとを含む、請求項10のいずれか1項に記載のデバイス。
【請求項12】
前記動きスコアを算出することは、前記デバイスのユーザが前記被写体を知っているか否かを判断するステップを含む、請求項8~11のいずれか1項に記載のデバイス。
【請求項13】
前記動画像は、前記被写体の種類を示すラベルおよび前記動画像の撮影中に録音された音の少なくとも1つを含む、請求項8~12のいずれか1項に記載のデバイス。
【請求項14】
プログラムであって、プロセッサによって実行されると、前記プロセッサに動作を実行させ、前記動作は、
被写体の種類、および複数のフレームを含む動画像における前記被写体の移動の程度を判断することと、
前記被写体の前記種類および前記被写体の前記移動の程度に基づいて、前記動画像の動きスコアを算出することとを含み、前記動きスコアを算出することは、
前記被写体の前記移動の程度が移動のしきい値レベルを満たすかどうかを判断することを含み、前記移動のしきい値レベルは前記被写体の前記種類に基づき、前記動きスコアを算出することは、さらに、
前記被写体の前記移動の程度が前記移動のしきい値レベルを満たすと判断された場合、前記被写体の種類が風景または無生物であるかどうかを判断し、前記被写体の種類が風景または無生物であると判断された場合、前記動きスコアを表示しきい値を満たさない値に設定することと、
前記被写体の前記移動の程度が前記移動のしきい値レベルを満たさないと判断された場合、前記動きスコアを前記表示しきい値を満たさない値に設定することと、
前記動きスコアを算出することの後に前記動きスコアが前記表示しきい値を満たすかどうかを判断することと、
前記動きスコアが前記表示しきい値を満たす場合、前記動画像の前記複数のフレームを連続して表示することによって、前記動画像を被写体の動きを伴って表示させることと、
前記動きスコアが前記表示しきい値を満たさなかった場合、前記動画像の前記複数のフレームのうち特定のフレームを表示することによって、前記動画像を被写体の動きなしで表示させることとを含む、プログラム。
【請求項15】
前記動画像は、1つ以上のその他の画像を含むユーザインターフェースにおいて表示され、前記動きスコアが前記表示しきい値を満たす場合、前記ユーザインターフェースにおける前記動画像のサイズは、前記1つ以上のその他の画像のうち少なくとも1つよりも大きい、請求項14に記載のプログラム。
【請求項16】
前記動画像は、1つ以上のその他の画像を含むユーザインターフェースの一部として表示され、前記動作は、さらに、
前記1つ以上のその他の画像の各動きスコアを決定することと、
前記1つ以上のその他の画像の前記各動きスコアに基づいて前記表示しきい値を設定することとを含む、請求項14または15に記載のプログラム。
【請求項17】
前記動きスコアを算出することは、前記プロセッサを含むデバイスのユーザが前記被写体を知っているか否かを判断するステップを含む、請求項14~16のいずれか1項に記載のプログラム。
【請求項18】
前記動画像は、前記被写体の種類を示すラベルおよび前記動画像の撮影中に録音された音の少なくとも1つを含む、請求項14~17のいずれか1項に記載のプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
ユーザは、写真など、静止画像を含む画像;モーションスチール、モーションフォト、またはライブフォトと称されることもある被写体の動きを含む画像;360度画像;動画などを撮影することができる。たとえば、カメラ、スマートフォン、ウェアラブルデバイス、コンピュータなど、画像を撮影または見るために用いられるデバイスは、画像を保存するための容量に限りがある場合がある。被写体の動きを含む画像は、複数のフレームを含み、これらは写真または静止画像よりも多くの記憶容量が必要である場合がある。このような状況では、ユーザは、ユーザデバイスのローカルストレージに画像を保存することに関して手入力を行う必要がある。
【0002】
本明細書において提供する背景は、本開示の背景を一般的に提示するためのものである。ここに挙げる発明者の背景欄に説明されている範囲の業績、および出願時の従来技術として適格でないと思われる説明の態様については、明示的にも暗示的にも、本開示に対する従来技術として認められない。
【発明の概要】
【0003】
概要
本明細書において説明する実施態様は、複数のフレームを含む動画像を表示するための方法、デバイス、およびコンピュータ読み取り可能な媒体に関する。いくつかの実施態様では、コンピュータにより実現される方法は、複数のフレームに基づいて動画像の動きスコアを決定するステップを含む。この方法は、動きスコアが表示しきい値を満たすかどうかを判断するステップをさらに含む。動きスコアが表示しきい値を満たす場合、方法は、動画像の複数のフレームを連続して表示することによって、動画像を被写体の動きを伴って表示させるステップをさらに含む。動きスコアが表示しきい値を満たさなかった場合、方法は、動画像の特定のフレームを表示することによって、動画像を被写体の動きなしで表示させるステップをさらに含む。
【0004】
いくつかの実施態様は、複数のフレームを含む動画像を表示するための、コンピュータにより実現される方法を含む。この方法は、動画像の動きスコアを、動画像の複数のフレームに基づいて決定するステップを含み得る。方法は、動きスコアが表示しきい値を満たすかどうかを判断するステップをさらに含み得る。動きスコアが表示しきい値を満たす場合、方法は、動画像の複数のフレームを連続して表示することによって、動画像を被写体の動きを伴って表示させるステップをさらに含み得る。動きスコアが表示しきい値を満たさなかった場合、方法は、動画像の複数のフレームのうち特定のフレームを表示することによって、動画像を被写体の動きなしで表示させるステップをさらに含み得る。
【0005】
いくつかの実施態様では、動画像は、1つ以上のその他の画像を含むユーザインターフェースにおいて表示される。これらの実施態様では、動きスコアが表示しきい値を満たす場合、ユーザインターフェースにおける動画像のサイズは、1つ以上のその他の画像のうち少なくとも1つよりも大きい。
【0006】
いくつかの実施態様では、方法は、1つ以上のその他の画像の各動きスコアを決定するステップを含み得る。方法は、各動きスコアに基づいて表示しきい値を選択するステップをさらに含み得る。選択するステップは、動画像の動きスコアよりも高い動きスコアにそれぞれ対応付けられた1つ以上のその他の画像の数を判断するステップを含む。数がしきい値数以上である場合、選択するステップは、表示しきい値を、動画像の動きスコアより
も高く設定するステップをさらに含む。数がしきい値数未満である場合、選択するステップは、表示しきい値を、動画像の動きスコアよりも低く設定するステップをさらに含む。いくつかの実施態様は、動画像を表示するソフトウェアアプリケーションの複数の実行スレッドに少なくとも部分的に基づいてしきい値数を決定するステップをさらに含む。
【0007】
いくつかの実施態様では、動きスコアを決定するステップは、複数のフレームのそれぞれの画素値に基づいて、動画像の背景部分の安定性の程度、動画像の被写体の種類、および動画像における被写体の移動の程度を判断するステップと、安定性の程度、被写体の種類、および被写体の移動の程度に基づいて動きスコアを算出するステップとを含む。いくつかの実施態様では、被写体の種類が風景または無生物である場合、動きスコアを算出するステップは、動きスコアを表示しきい値未満の値に設定するステップを含む。
【0008】
いくつかの実施態様では、動きスコアを算出するステップは、被写体の移動の程度が移動のしきい値レベルを満たすかどうかを判断するステップを含む。被写体の移動の程度が移動のしきい値レベルを満たすと判断された場合、動きスコアを算出するステップは、動きスコアを表示しきい値を満たす値に設定するステップをさらに含む。被写体の移動の程度が移動のしきい値レベルを満たさないと判断された場合、動きスコアを算出するステップは、動きスコアを表示しきい値を満たさない値に設定するステップをさらに含む。いくつかの実施態様では、第1種類の被写体は顔であり、第2種類の被写体は体であり、顔に対応付けられた移動の第1しきい値レベルは、体に対応付けられた移動の第2しきい値レベルよりも低い。
【0009】
いくつかの実施態様では、動画像の動きスコアを決定するステップは、動画像のビュー数が視聴者数しきい値を満たす場合、または、少なくとも1つのモーションアーティファクトが動画像に基づいて作成されていた場合、動きスコアを表示しきい値を満たす値に設定するステップをさらに含み得る。
【0010】
いくつかの実施態様では、動画像の動きスコアを判断するステップは、複数の層に編成された複数のノードを含み、動きスコアを決定するように構成されたニューラルネットワークから構成された訓練済みの機械学習モデルを適用するステップを含む。これらの実施態様では、動画像は、訓練済みの機械学習モデルへの入力として提供される。
【0011】
いくつかの実施態様では、動画像は、クライアントデバイスによって撮影されて、クライアントデバイスの揮発性メモリに保存される。これらの実施態様では、方法は、動きスコアが保存しきい値を満たすと判断するステップをさらに含み得る。動きスコアが保存しきい値を満たす場合、方法は、動画像をクライアントデバイスの不揮発性メモリに保存するステップをさらに含み得る。動きスコアが保存しきい値を満たさなかった場合、方法は、動画像を、複数のフレームのうち、特定のフレームのみを含み、動画像よりも小さいファイルサイズを有する静止画像に自動的に変更するステップをさらに含み得る。いくつかの実施態様では、動画像を静止画像に変更するステップは、複数のフレームのうち、その他のフレームを削除するステップと、静止画像をクライアントデバイスの不揮発性メモリに保存するステップとを含む。
【0012】
いくつかの実施態様は、複数のフレームから構成される動画像を表示するためのデバイスを含み得る。このデバイスは、プロセッサと、命令を格納した非一時的なコンピュータ読み取り可能な媒体とを備え得る。命令は、プロセッサによって実行されると、プロセッサに動作を実行させ、当該動作は、動画像の動きスコアを、複数のフレームに基づいて決定する動作を含み得る。動作は、動きスコアが表示しきい値を満たすかどうかを判断する動作をさらに含み得る。動きスコアが表示しきい値を満たす場合、当該動作は、動画像の複数のフレームを連続して表示することによって、動画像を被写体の動きを伴って表示さ
せる動作をさらに含み得る。動きスコアが表示しきい値を満たさなかった場合、動作は、動画像の複数のフレームのうち特定のフレームを表示することによって、動画像を被写体の動きなしで表示させる動作をさらに含み得る。
【0013】
いくつかの実施態様では、動画像の動きスコアを判断する動作は、複数の層に編成された複数のノードを含みニューラルネットワークから構成された、かつ、動きスコアを決定するように構成された、デバイスに格納された訓練済みの機械学習モデルを適用する動作を含む。いくつかの実施態様では、動画像は、訓練済みの機械学習モデルへの入力として提供される。
【0014】
いくつかの実施態様では、動作は、動画像のビュー数が視聴者数しきい値を満たす、または、動画像からモーションアーティファクトが作成されたと判断する動作をさらに含み得る。動作は、判断に応答して、訓練済みの機械学習モデルを更新する動作をさらに含み得る。いくつかの実施態様では、訓練済みの機械学習モデルを更新する動作は、複数のノードのうち、少なくとも1つのノードの重みを調整する動作を含む。いくつかの実施態様では、訓練済みの機械学習モデルを更新する動作は、複数のノードのうち少なくとも1対のノード間の接続を更新する動作を含む。
【0015】
いくつかの実施態様では、動作は、動画像の背景部分の安定性の程度を判断する動作と、動画像の被写体の種類、および動画像における被写体の移動の程度を判断する動作とをさらに含み得る。いくつかの実施態様では、背景部分の安定性の程度、被写体の種類、および被写体の移動の程度は、さらなる入力として訓練済みの機械学習モデルに提供される。
【0016】
いくつかの実施態様では、動作は、複数のフレームのうち、特定のフレームのみを表示することによって動画像を静止画像として表示するためのユーザ入力を受け付ける動作をさらに含み得る。動作は、ユーザ入力に応答して、訓練済みの機械学習モデルを更新する動作をさらに含み得る。いくつかの実施態様では、機械学習モデルを更新する動作は、複数のノードのうち、1つのノードの重みを調整する動作を含む。いくつかの実施態様では、機械学習モデルを更新する動作は、複数のノードのうち少なくとも1対のノード間の接続を更新する動作のうち、少なくとも1つの動作を含む。
【0017】
いくつかの実施態様では、デバイスは、動画像を撮影するカメラをさらに備え得る。いくつかの実施態様では、動画像は、デバイスの揮発性メモリに保存される。これらの実施態様では、動作は、動きスコアが保存しきい値を満たすかどうかを判断する動作を含み得る。動きスコアが保存しきい値を満たす場合、動作は、動画像をデバイスの不揮発性メモリに保存する動作をさらに含み得る。動きスコアが保存しきい値を満たさなかった場合、動作は、動画像を、複数のフレームのうち、特定のフレームのみを含み、動画像よりも小さいファイルサイズを有する静止画像に自動的に変更する動作を含み得る。いくつかの実施態様では、動画像を静止画像に変更するステップは、複数のフレームのうち、その他のフレームを削除する動作と、静止画像をデバイスの不揮発性メモリに保存する動作とを含み得る。
【0018】
いくつかの実施態様は、命令を格納した非一時的なコンピュータ読み取り可能な媒体でを含み得、命令は、プロセッサによって実行されると、プロセッサに動作を実行させ、動作は、動画像の動きスコアを、動画像の複数のフレームに基づいて決定する動作を含み得る。当該動作は、動きスコアが表示しきい値を満たすかどうかを判断する動作をさらに含み得る。動きスコアが表示しきい値を満たす場合、当該動作は、動画像の複数のフレームを連続して表示することによって、動画像を被写体の動きを伴って表示させる動作をさらに含み得る。動きスコアが表示しきい値を満たさなかった場合、動作は、動画像の複数の
フレームのうち特定のフレームを表示することによって、動画像を被写体の動きなしで表示させる動作をさらに含み得る。
【0019】
いくつかの実施態様では、非一時的なコンピュータ読み取り可能な媒体は、さらなる命令を格納し得、当該さらなる命令は、プロセッサによって実行されると、プロセッサに動作を実行させ、動作は、動画像の背景部分の安定性の程度を判断する動作と、動画像の被写体の種類、および動画像における被写体の移動の程度を判断する動作とを含み得る。いくつかの実施態様では、動きスコアは、安定性の程度、被写体の種類、および被写体の移動の程度に基づく。
【0020】
いくつかの実施態様では、非一時的なコンピュータ読み取り可能な媒体は、さらなる命令を格納し得、当該さらなる命令は、プロセッサによって実行されると、プロセッサに動作を実行させ、動作は、1つ以上のその他の画像の各動きスコアを決定する動作と、各動きスコアに基づいて表示しきい値を選択する動作とを含み得る。いくつかの実施態様では、選択する動作は、動画像の動きスコアよりも高い動きスコアにそれぞれ対応付けられた1つ以上のその他の画像の数を判断する動作を含み得る。当該数がしきい値数以上である場合、動作は、表示しきい値を、動画像の動きスコアよりも高く設定する動作をさらに含む。当該数がしきい値数未満である場合、動作は、表示しきい値を、動画像の動きスコアよりも低く設定する動作をさらに含む。
【図面の簡単な説明】
【0021】
図1】本明細書において説明する1つ以上の実施態様のために用いられ得る例示的なネットワーク環境のブロック図である。
図2】いくつかの実施態様に係る、動画像を表示および/または保存するための例示的な方法を説明するフロー図である。
図3】いくつかの実施態様に係る、動画像の動きスコアを決定するための例示的な方法を説明するフロー図である。
図4】いくつかの実施態様に係る、動画像の動きスコアを決定するための別の例示的な方法を説明するフロー図である。
図5】例示的な動画像を示す図である。
図6】いくつかの実施態様に係る、画像グリッドを含む例示的なユーザインターフェースの図解である。
図7】本明細書において説明する1つ以上の実施態様のために用いられ得る例示的なデバイスのブロック図である。
【発明を実施するための形態】
【0022】
詳細な説明
いくつかの実施態様は、複数のフレームを含む動画像を表示するための方法、デバイス、および命令を有するコンピュータ読み取り可能な媒体を含む。たとえば、動画像は、たとえば、3秒以下の短期間にわたってカメラで撮影された複数のフレームを含んでもよい。この動画像は、大幅なカメラの移動なしで、たとえば、パン、ズーム、チルト、またはカメラの移動を必要とするその他の動作なしで撮影されてもよい。
【0023】
動画像は、被写体および背景を描写してもよい。動画像に対するユーザの関心の程度は異なり、たとえば、笑顔になる友達、ジャンプしているペット、ダンスの動き、スポーツの動きなどを描写する動画像は、ユーザの関心が高いであろう。別の例では、複数のフレームの間に動きをほとんどまたはまったく描写しない動画像、ユーザの関心の対象を含まない動画像、たとえば、文書または無生物などの画像に対するユーザの関心は低いであろう。
【0024】
技術的課題は、動画像を撮影、表示、または保存する機能を有するデバイスがこのような操作において計算資源を無駄にしていることである。たとえば、多くのデバイスが動画像を撮影するためのデフォルト設定を提供している。このようなデバイスは、動画像を撮影して保存することができるが、デバイスのカメラが操作され、結果として得られる画像データがデバイス上に保存される必要がある。この場合、動画像が表示されたときにユーザエクスペリエンスが向上しない場合であっても、デバイスのリソースは、この動画像を撮影して保存するために利用されており、動画像を撮影して処理するための計算容量と、動画像を保存するための記憶容量とを無駄にしてしまっている。たとえば、表示された動画像は、見ているユーザによって認識され得る大幅な被写体の動きが当該画像にある場合に、高品質のユーザエクスペリエンスを提供する。さらには、ユーザがこのような動画像を見た場合、デバイスのプロセッサ、メモリ、および表示画面を利用して複数のフレームをロードして被写体の動きを描写している動画像を表示する。ユーザは、動画像の撮影、保存、または表示を選択的に無効化することができるが、このような設定は、実際には汎用的であり、個々の画像の特性やユーザの好みを考慮していない。
【0025】
本明細書において説明する実施態様は、動画像の複数のフレームを分析することによって動画像の動きスコアを自動的に決定する。動画像の動きスコアが表示しきい値を満たす場合、被写体の動きを描写している複数のフレームをユーザインターフェースに表示する。それ以外の場合、動画像の特定のフレームを表示し、静止画像を提供する。このような選択的表示によって、動画像を表示するために利用される計算資源の使用を減らすことができる。
【0026】
いくつかの実施態様では、複数の画像を表示するユーザインターフェースを提供する。これらの実施態様では、たとえば、利用可能なハードウェア容量に基づいて動きスコアを評価し、限られた数の画像のみを動画像として表示する。たとえば、画像の数は、利用可能なハードウェア上で実行できるユーザインターフェースを生成するプログラムまたはソフトウェアアプリケーションのスレッドの数に基づいてもよい。ユーザインターフェースは、このように利用可能なハードウェアリソースに合わせて描画され、これにより、異なる種類のデバイスが実装コードを修正するまたは動画像を修正する必要なくユーザインターフェースを表示することを可能にできる。さらには、いくつかの実施態様では、ユーザインターフェースにおける動画像のサイズを、動画像の動きスコアに基づいて決定する。このような画像サイズのカスタマイズにより、使用がさらに容易になったユーザインターフェースを提供できる。たとえば、異なるサイズの画像を含む画像グリッドが、特定の画像をその他の画像よりも大きいサイズで表示し、たとえば、このような画像のために利用可能な表示画面領域のより多くの部分が利用されるため、ユーザがこのような画像をさらに詳細に認識できるようになる。このような表示により、画像を編集するかどうか、画像をフル画面で見るかどうか、画像ベースの作品を生成するかどうか、画像を共有するかどうかなどについての判断を、画像が小さいサイズで表示される場合よりも確信を持ってユーザが行うことを可能にできる。また、選択的に特定の画像を大きいサイズで表示することで、確実に、任意の数の画像を十分な詳細を表示しながら画面上に表示できるようになる。
【0027】
さらには、いくつかの実施態様では、動きスコアが保存しきい値と比較されて、動画像は、保存する前に(1つのフレームを含む)静止画像に変更される。このような選択的な変換により、動画像を保存するために必要な記憶容量を減らすことができる。ユーザ画像がサーバにアップロードされる場合、選択的な変換により、サーバに画像を送るための送信コストを減らすことができ、かつ、動画像を保存するためのサーバ記憶容量の利用を低減することができる。
【0028】
さらに別の実施態様では、訓練済みの機械学習モデルを利用して動きスコアを決定する
。訓練済みのMLモデルは、動きスコアを決定するための計算効率のよいメカニズムを提供してもよい。なぜならば、このモデルはこの用途のために最適化されており、FPGA、ASIC、GPU、または機械学習プロセッサなど、特定用途向けハードウェア上に実装することができるからである。
【0029】
訓練済みのMLモデルが利用されるいくつかの実施態様では、ユーザの許可がある場合、たとえば、動画像を見ること、モーションアーティファクトを生成すること、動きコンポーネント(フレーム)を動画像から破棄することなど、ユーザインタラクションに基づいてモデルが更新する。モデルによって決定される動きスコアはユーザに固有であるので、このようなモデルに対する更新によって動画像の表示および保存をさらに改善することができる。さらには、ユーザの許可がある場合、このようなモデルの更新を、多数のユーザから受け付けてもよく、たとえば、連合学習手法でMLモデルをさらに訓練するために使用して動きスコアの決定を改善してもよい。
【0030】
画像撮影時および不揮発性メモリに保存する前に動きスコアが決定されるいくつかの実施態様では、記載の技術は、ユーザの関心がないと思われる動画像のフレームを破棄することによって不揮発性メモリの利用を減らすことができる。いくつかの実施態様では、本明細書において説明する技術は、ユーザが選択的に動きを破棄することを可能にするユーザインターフェースを提供する。これにより、動画像撮影のデフォルトモードと比較してリソースの使用が低減される。
【0031】
図1およびその他の図面では、同じ参照番号を用いて同じ要素を識別している。「156a」など、参照番号の後の文字は、このテキストが、その特定の参照番号を有する要素を特別に指していることを示す。「156」など、続く文字がないテキストにおける参照番号は、図面においてその参照番号を持つ要素のうちのいずれかまたはすべてを指す(たとえば、テキストの「156」は、図面の参照番号「156a」および/または「156b」を指す)。
【0032】
図1は、本明細書において説明するいくつかの実施態様において用いられ得る例示的なネットワーク環境100のブロック図を示す。いくつかの実施態様では、ネットワーク環境100は、1つ以上のサーバシステム、たとえば、図1の例ではサーバシステム102を備える。サーバシステムは、たとえば、ネットワーク130と通信できる。サーバシステム102は、サーバ装置104およびデータベース106またはその他の記憶装置を備え得る。データベース106は、1つ以上の画像と、当該1つ以上の画像に対応付けられたメタデータとを保存してもよい。いくつかの実施態様では、サーバ装置104は、画像管理アプリケーション156bを提供してもよい。画像管理アプリケーション156bは、データベース106に保存された画像にアクセスしてもよい。
【0033】
また、ネットワーク環境100は、1つ以上のクライアントデバイス、たとえば、クライアントデバイス120、122、124、および126を含み得る。クライアントデバイス120、122、124、および126は互いに通信してもよく、ならびに/またはサーバシステム102および/もしくは第2サーバシステム140とネットワーク130を介して通信してもよい。ネットワーク130は、任意の種類の通信ネットワークであり得、インターネット、ローカルエリアネットワーク(LAN)、ワイヤレスネットワーク、スイッチ接続またはハブ接続などのうちの1つ以上を含む。いくつかの実施態様では、ネットワーク130は、たとえば、ピアツーピアワイヤレスプロトコル(たとえば、Bluetooth(登録商標)、Wi-Fi Directなど)などを用いたデバイス間のピアツーピア通信を含み得る。2つのクライアントデバイス120および122間のピアツーピア通信の一例は、矢印132によって示されている。
【0034】
説明を容易にするために、図1は、サーバシステム102、サーバ装置104、およびデータベース106について1つのブロックを示しており、クライアントデバイス120、122、124、および126について4つのブロックを示している。サーバブロック102は、複数のシステム、複数のサーバ装置、および複数のネットワークデータベースを表してもよく、当該ブロックは、図示されている構成とは異なる構成で提供できる。たとえば、サーバシステム102は、その他のサーバシステムとネットワーク130を介して通信できる複数のサーバシステムを表すことができる。いくつかの実施態様では、サーバシステム102は、たとえば、クラウドホスティングサーバを含み得る。いくつかの例では、データベース106および/またはその他の記憶装置は、サーバ装置104とは別個のサーバシステムブロック(複数可)で提供することができ、サーバ装置104およびその他のサーバシステムとネットワーク130を介して通信できる。また、任意の数のクライアントデバイスがあってもよい。各クライアントデバイスは、任意の種類の電子機器、たとえば、デスクトップコンピュータ、ラップトップコンピュータ、ポータブルまたはモバイルデバイス、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、TVセットトップボックスまたは娯楽機器、ウェアラブルデバイス(たとえば、ディスプレイ眼鏡またはゴーグル、腕時計、ヘッドセット、アームバンド、アクセサリーなど)、PDA(Personal Digital Assistant)、メディアプレーヤ、ゲーム機器などであり得る。また、いくつかのクライアントデバイスは、データベース106に類似したローカルデータベースまたはその他のストレージを有してもよい。いくつかの実施態様では、ネットワーク環境100は、図示された構成要素のすべてを有さなくてもよく、および/または本明細書に記載の構成要素の代わりまたはそれらに加えて、その他の種類の要素を含むその他の要素を有してもよい。
【0035】
様々な実施態様では、エンドユーザU1、U2、U3、およびU4は、それぞれのクライアントデバイス120、122、124、および126を用いてサーバシステム102と通信および/または互いに通信してもよい。いくつかの例では、ユーザU1、U2、U3、およびU4は、それぞれのクライアントデバイスおよび/もしくはサーバシステム102もしくは第2サーバシステム140上で実行中のアプリケーションを介して、および/または、サーバシステム102上に実装されたソーシャルネットワークサービスもしくはその他の種類のネットワークサービスなど、ネットワークサービスを介して互いにやり取りしてもよい。たとえば、それぞれのクライアントデバイス120、122、124、および126は、1つ以上のサーバシステム(たとえば、システム102、第2サーバシステム140)との間でデータを通信してもよい。
【0036】
いくつかの実施態様では、サーバシステム102および/またはネットワークサービスにアップロードされた通信コンテンツまたは共有コンテンツを各クライアントデバイスが受信できるように、サーバシステム102は、適切なデータをクライアントデバイスに提供してもよい。いくつかの例では、ユーザU1~U4は、電話会議もしくはテレビ会議、音声チャット、動画チャット、もしくはテキストチャット、またはその他の通信モードもしくは通信アプリケーションを介してやり取りすることができる。サーバシステム102によって実装されるネットワークサービスはユーザが様々な通信を行ったり、リンク付けおよび関連付けを行ったり、画像、テキスト、動画、音声、およびその他の種類のコンテンツなど、共有コンテンツをアップロードおよび投稿したり、ならびに/またはその他の機能を行ったりすることを可能にするシステムを含み得る。たとえば、クライアントデバイスは、当該クライアントデバイスに送信もしくはストリーム配信され、異なるクライアントデバイスからサーバおよび/もしくはネットワークサービスを介して(もしくは、異なるクライアントデバイスから直接)送信された、または、サーバシステムおよび/もしくはネットワークサービスから送信されたコンテンツ投稿など、受信データを表示できる。いくつかの実施態様では、クライアントデバイスは、たとえば、上述したようなクライアントデバイス間のピアツーピア通信を用いて直接互いに通信できる。いくつかの実施態
様では、「ユーザ」は、1つ以上のプログラムまたは1つ以上の仮想エンティティ、およびシステムまたはネットワークとやり取りする人を含み得る。
【0037】
いくつかの実施態様では、クライアントデバイス120、122、124、および/または126のいずれも、1つ以上のアプリケーションを提供できる。たとえば、図1に示すように、クライアントデバイス120は、カメラアプリケーション152および画像管理アプリケーション156aを提供してもよい。クライアントデバイス122~126も同様のアプリケーションを提供してもよい。たとえば、カメラアプリケーション152は、各クライアントデバイスのユーザ(たとえば、ユーザU1~U4)に、それぞれのユーザデバイスのカメラを用いて画像を撮影する機能を提供してもよい。たとえば、カメラアプリケーション152は、クライアントデバイス120上で実行されるソフトウェアアプリケーションであってもよい。
【0038】
いくつかの実施態様では、カメラアプリケーション152は、ユーザインターフェースを提供してもよい。たとえば、ユーザインターフェースは、クライアントデバイス120のユーザが画像撮影モード、たとえば、静止画像(または写真)モード、バーストモード(たとえば、短期間での連続した複数の画像の撮影)、動画像モード、動画モード、HDR(High Dynamic Range)モードなどを選択することを可能にしてもよい。たとえば、動画像モードは、クライアントデバイス120のカメラの起動時の静止画像撮影、およびカメラの起動前後の複数のフレームを含むショートクリップ撮影に対応してもよい。たとえば、ショートクリップの期間は1~3秒であってもよい。
【0039】
いくつかの実施態様では、動画像は、画像データ部分に静止画像を含み、第2部分、たとえば、画像メタデータ部分に複数のフレームを含んだ1つの画像ファイルとして、クライアントデバイス120の揮発性メモリで取得されてもよい。いくつかの実施態様では、動画像は、静止画像を含む第1ファイルおよびショートクリップを含む第2ファイルという2つの別個の画像ファイルとして、クライアントデバイス120の揮発性メモリで取得されてもよい。いくつかの実施態様では、第1ファイルおよび/または第2ファイルは、その他のファイルが同時に撮影されたことを示す画像メタデータを含んでもよい。いくつかの実施態様では、カメラアプリケーション152が、本明細書において図2図4を参照して説明する方法を実装してもよい。いくつかの実施態様では、画像管理アプリケーション156aおよび/または画像管理アプリケーション156bが、本明細書において図2図4を参照して説明する方法を実装してもよい。
【0040】
カメラアプリケーション152および画像管理アプリケーション156aは、クライアントデバイス120のハードウェアおよび/またはソフトウェアを用いて実装されてもよい。異なる実施態様では、画像管理アプリケーション156aは、たとえば、クライアントデバイス120~124のうちのいずれかのクライアントデバイス上で実行されるスタンドアロンアプリケーションであってもよく、または、サーバシステム102上で提供される画像管理アプリケーション156bと連動して動作してもよい。ユーザの許可がある場合、画像管理アプリケーション156は、(たとえば、サーバシステム102のデータベース106に)画像をバックアップする、画像を強調する、画像の安定化、画像に含まれる1つ以上の物体(たとえば、顔、体、無生物など)を認識するなど1つ以上の自動的機能を実行してもよい。画像の安定化は、加速度計、ジャイロスコープ、もしくはクライアントデバイス120のその他のセンサーからの入力に基づいて、および/または動画像もしくは動画の複数のフレームの比較に基づいて行われてもよい。
【0041】
画像管理アプリケーション156は、ユーザインターフェースに(たとえば、1枚の画像を含むワンナップ表示、複数の画像を含むグリッド表示などで)画像を表示する機能、画像を編集する(たとえば、画像設定を調整する、フィルタを適用する、画像の焦点を変
更する、動画像または動画の1つ以上のフレームの削除する)機能、(たとえば、クライアントデバイス122~126の)その他のユーザと画像を共有する機能、画像をアーカイブに保存する(たとえば、主要ユーザインターフェースに現れないように画像を格納する)機能、画像ベースの作品(たとえば、コラージュ、フォトブック、アニメーション、ストーリー、ビデオループなど、モーションベースのアーティファクト)を生成する機能など、画像管理機能を提供してもよい。
【0042】
クライアントデバイス120、122、124、ならびに/または126上のユーザインターフェースによって、画像、動画、データ、およびその他のコンテンツ、および通信、プライバシー設定、通知、およびその他のデータを含む、ユーザコンテンツならびにその他のコンテンツの表示を可能にすることができる。このようなユーザインターフェースを、クライアントデバイス上のソフトウェア、サーバ装置上のソフトウェア、ならびに/またはサーバ装置104上で実行されているクライアントソフトウェアとサーバソフトウェアとの組合せ、たとえば、サーバシステム102と通信中のアプリケーションソフトウェアもしくはクライアントソフトウェアを用いて表示することができる。このユーザインターフェースを、クライアントデバイスまたはサーバ装置の表示装置、たとえば、タッチスクリーンもしくはその他のディスプレイ画面、プロジェクタなどで表示することができる。いくつかの実施態様では、サーバシステム上で動作するアプリケーションプログラムは、クライアントデバイスと通信を行って当該クライアントデバイスにおけるユーザ入力を受信し、クライアントデバイスにおける画像データ、音声データなどのデータを出力することができる。
【0043】
いくつかの実施態様では、サーバシステム102および/または1つ以上のクライアントデバイス120~126のうちのいずれも、通信アプリケーションプログラムを提供できる。この通信プログラムによって、システム(たとえば、クライアントデバイスまたはサーバシステム)は、その他のデバイスとの通信についてのオプションを提供できるようになるであろう。通信プログラムは、サーバシステムまたはクライアントデバイスに対応付けられた表示装置上に表示される1つ以上の関連するユーザインターフェースを提供できる。ユーザインターフェースは、通信モード、通信するユーザまたはデバイスなどを選択できる様々なオプションをユーザに提供してもよい。いくつかの例では、通信プログラムは、同報通信エリアにコンテンツの投稿を同報通信できるオプションを提供し、および/またはコンテンツの投稿がデバイスによって受信されたことを示す通知、投稿用の規定の同報通信エリアにデバイスがあることを示す通知を出力できる。通信プログラムは、送信したコンテンツの投稿および受信したコンテンツの投稿を、たとえば様々な形式で表示または出力し得る。コンテンツの投稿は、たとえば、他のユーザと共有している画像を含み得る。
【0044】
本明細書において説明する特徴のその他の実施態様は、任意の種類のシステムおよび/またはサービスを利用することができる。たとえば、ソーシャルネットワーキングサービスの代わりまたはソーシャルネットワーキングサービスに加えて、その他のネットワーク接続された(たとえば、インターネットに接続された)サービスを利用できる。いずれの種類の電子機器も、本明細書において説明する特徴を利用することができる。いくつかの実施態様は、本明細書において説明する1つ以上の特徴を、コンピュータネットワークから切断されたもしくはコンピュータネットワークに断続的に接続された1つ以上のクライアント装置またはサーバ装置上で提供できる。いくつかの例では、表示装置を備えるまたは表示装置が接続されたクライアントデバイスは、クライアントデバイスにローカルな記憶装置上に格納された、たとえば、通信ネットワーク上で以前に受信したコンテンツ投稿を表示できる。
【0045】
図2は、いくつかの実施態様に係る、動画像を表示および/または保存するための例示
的な方法200を説明するフロー図である。いくつかの実施態様では、方法200は、たとえば、図1に示すサーバシステム102上で実装され得る。いくつかの実施態様では、方法200の一部またはすべては、図1に示す1つ以上のクライアントデバイス120、122、124、もしくは126、1つ以上のサーバ装置上、ならびに/または、サーバ装置(複数可)およびクライアントデバイス(複数可)の両方の上で実装され得る。記載した例では、実装システムは、1つ以上のデジタルプロセッサまたは処理回路(「プロセッサ」)、および1つ以上の記憶装置(たとえば、データベース106またはその他のストレージ)を備える。いくつかの実施態様では、1つ以上のサーバおよび/または1つ以上のクライアントの異なる構成要素は、方法200の異なるブロックまたはその他の部分を実行できる。いくつかの例では、第1デバイスが方法200のブロックを実行すると説明している。いくつかの実施態様は、結果またはデータを第1デバイスに送信できる1つ以上のその他のデバイス(たとえば、その他のクライアントデバイスまたはサーバ装置)によって実行される方法200の1つ以上のブロックを有し得る。
【0046】
いくつかの実施態様では、方法200または当該方法の一部を、システムによって自動的に起動させることができる。いくつかの実施態様では、実装システムは、第1デバイスである。たとえば、方法(またはその一部)を、定期的に実行したり、たとえば、アプリケーション(たとえば、ユーザによって起動されているカメラアプリケーション152、画像管理アプリケーション156など)、システムに新たにアップロードされたもしくはシステムがアクセス可能な1つ以上の画像を受信した、方法200が最後に実行されてから所定時間が経過した、および/もしく方法が読み込む設定において指定可能な1つ以上のその他の条件が発生したなど、1つ以上の特定のイベントまたは条件に基づいて実行したりすることができる。いくつかの実施態様では、このような条件は、格納されたユーザのカスタム基本設定でユーザによって指定することができる。
【0047】
様々な実施態様では、クライアントデバイス120は、スタンドアロンカメラ、カメラを備える別のデバイス(たとえば、スマートフォン、タブレット端末、コンピュータ、スマートウォッチなどのウェアラブルデバイス、ヘッドセットなど)、または別のデバイスが撮影した画像を受信できるその他のクライアントデバイスであり得る。いくつかの実施態様では、クライアントデバイス120は、撮影専用のデバイス、たとえば、画面を備えないカメラであってもよい。いくつかの実施態様では、クライアントデバイス120は、表示専用デバイス、たとえば、画像を表示できる画面を備えるが、カメラ機能、または画像を撮影するためのその他の機能を持たないデバイスであってもよい。いくつかの実施態様では、クライアントデバイス120は、画像撮影機能と画像表示機能との両方を備えてもよい。
【0048】
いくつかの実施態様では、クライアントデバイス120は、画像を撮影するための1つのカメラを備えてもよい。いくつかの実施態様では、クライアントデバイス120は、複数のカメラ(または、レンズ)を備えてもよい。たとえば、スマートフォンまたはその他のデバイスは、1つ以上の正面カメラ(デバイスの画面と同じ側にある)および/または1つ以上の背面カメラを備えてもよい。いくつかの実施態様では、当該1つ以上の正面カメラまたは背面カメラは、画像撮影中、連動して動作してもよい、たとえば、第1カメラが深度情報を撮影し、第2カメラが画像画素を撮影してもよい。いくつかの実施態様では、たとえば、異なるズームレベルを用いた異なる種類の画像撮影に異なるカメラ(たとえば、望遠レンズ、広角レンズなど)を用いてもよい。いくつかの実施態様では、クライアントデバイス120は、360度画像を撮影するように構成されてもよい。いくつかの実施態様では、カメラまたはレンズは、1つのイメージセンサ(たとえば、CCDまたはCMOSセンサー)、または複数のセンサーを用いて画像を撮影してもよい。いくつかの実施態様では、画像撮影時、たとえば深度センサーなど、その他のセンサーを1つ以上のカメラと合わせて使用してもよい。
【0049】
いくつかの実施態様では、クライアントデバイス120は、1つ以上のカメラ(または、レンズ)のイメージセンサにおいて撮影されたRAW画像データと、その他のセンサー(たとえば、加速度計、ジャイロスコープ、位置センサー、深度センサーなど)から取得したその他のデータとを合成して1枚の画像を形成してもよい。たとえば、複数の画像フレームを撮影するモード(たとえば、複数のフレームを素早く連続撮影して動画像とするバーストモードまたはモーションモード、動画を撮影する動画モード、異なる露出の複数の画像を1枚の複合画像に合成するハイダイナミックレンジモードなど)でクライアントデバイス120が操作された場合、センサーから取得したデータを利用して、撮影された画像の安定化を行ってもよい。たとえば、複数の撮影されたフレームを加速度計データまたはジャイロスコープデータを利用して位置合わせすることによって、画像撮影中のユーザの手の震えによってカメラが動いてしまうのを補償してもよい。いくつかの実施態様では、撮影された画像または動画を切り抜いて、安定化された画像、たとえば、背景の動きが抑えられた画像または動画を作成してもよい。
【0050】
クライアントデバイス120によって、ユーザは、たとえば、1つのフレームを撮影するための静止画像(またはフォト)モード、複数のフレームを撮影するためのバーストモードまたは動画像モード、動画を撮影するための動画モードなど、異なるモードで画像を撮影することが可能になる。いくつかの実施態様では、カメラが複数のフレームを構成する画像撮影時に方法200を実行してもよい。
【0051】
クライアントデバイス120によって、ユーザは、画像、たとえばクライアントデバイス120が撮影した画像またはユーザに関連するその他の画像を、異なるユーザインターフェースで見ることが可能になる。たとえば、ユーザが一度に1枚の画像を見ることが可能になるワンナップモードまたはスライドショーモードが提供されてもよい。別の例では、ユーザが、たとえば、画像グリッドとして同時に複数の画像を見ることが可能になるギャラリーモードが提供されてもよい。
【0052】
いくつかの実施態様では、クライアントデバイス120が方法200を実行してもよい。別の例では、クライアントデバイスまたはサーバ装置が方法200を実行し得る。いくつかの実施態様は、ユーザ入力に基づいて方法200が開始され得る。ユーザ(たとえば、操作者またはエンドユーザ)が、たとえば、表示ユーザインターフェース、たとえば、アプリケーションユーザインターフェースまたはその他のユーザインターフェースから方法200の開始を選択した可能性がある。いくつかの実施態様では、方法200は、サーバ装置によって実装されてもよい。
【0053】
いくつかの実施態様では、たとえば、クライアントデバイスのユーザがカメラを操作して動画像を撮影したとき、クライアントデバイスのユーザがクライアントデバイス上またはサーバ装置上などに保存された画像を見るときに、方法200が自動的に開始されてもよい。
【0054】
本明細書において指す画像は、1つ以上の画素値(たとえば、色値、輝度値など)を有する画素を有するデジタル画像を含み得る。画像は、静止画像(たとえば、スチール写真、1つのフレームを有する画像など)、または動画像(たとえば、アニメーション、アニメーションGIF、画像の一部が動きを含み、他の部分が静止しているシネマグラフなど、複数のフレームを含む画像、音声の有無にかかわらず複数のフレームを含む動画)であり得る。
【0055】
ブロック202では、方法200の実装においてユーザデータを利用するためのユーザの同意(たとえば、ユーザの許可)が得られているかどうかを確認する。たとえば、ユー
ザデータは、クライアントデバイスを用いてユーザが撮影した画像、たとえばクライアントデバイスを用いてユーザが格納またはアクセスした画像、画像メタデータ、メッセージングアプリケーションの利用に関するユーザデータ、ユーザの好み、ユーザの生体情報、ユーザ特性(たとえば、身元、名前、年齢、性別、職業など)、ユーザのソーシャルネットワークおよび連絡先についての情報、社会的またはその他の種類の行動および活動、ユーザが作成または書き込んだコンテンツ、評価、および意見、ユーザの現在地、過去のユーザデータ、ユーザが生成、受信、および/またはアクセスした画像、ユーザが見たまたは共有した画像などを含み得る。本明細書において説明する方法の1つ以上のブロックは、このようなユーザデータをいくつかの実施態様において使用してもよい。
【0056】
方法200においてユーザデータが使用される可能性のある関連ユーザからユーザ同意が得られている場合、ブロック204において、本明細書における方法のブロックにおいて上記のようなユーザデータが利用できる状態でこれらのブロックを実施できると判断し、方法は、ブロック212に続く。ユーザの同意が得られていない場合、ブロック206において、ユーザデータを利用せずにブロックを実施すると判断し、方法は、ブロック212に続く。いくつかの実施態様では、ユーザの同意が得られていない場合、ユーザデータを利用せず、合成データならびに/または汎用的もしくは一般に受け入れられているデータおよび一般に使用できるデータを利用してブロックを実施する。いくつかの実施態様では、ユーザの同意が得られていない場合、方法200を実行しない。
【0057】
ブロック212では、動画像の動きスコアを決定する。いくつかの実施態様では、方法200は、カメラによって新しい動画像が撮影された際に実行されてもよい。これらの実施態様では、動画像の動きスコアの決定は、画像データ(たとえば、動画像の複数のフレームの画素値)および画像メタデータに基づいて行われてもよい。いくつかの実施態様では、方法200を実行して、複数のフレームを含み、動きスコアが決定される保存された動画像(たとえば、クライアントデバイス120の不揮発性メモリに保存された)の動きスコアを決定してもよい。たとえば、画像メタデータ、または(たとえば、画像のデータベースに保存された)動画像に対応付けられたその他のデータが動きスコアを含まない場合または失効した動きスコアを含む場合に動きスコアの決定を行ってもよい。たとえば、動画像の動きスコアは、たとえば、(たとえば、クライアントデバイス120の)ユーザによって動画像が撮影または最後の視聴から特定の日数が経った後、動画像が修正された際、アニメーションGIF、動画、コラージュ、または動画像に基づいたその他の作品などが生成された際に失効してもよい。
【0058】
動画像の複数のフレームに基づいた動きスコアの決定は、たとえば、図3を参照して説明する方法300または図4を参照して説明する方法400を用いて行われもよい。たとえば、予め算出されて画像メタデータまたは画像のデータベースに格納された有効な動きスコアに動画像が対応付けられている場合、動きスコアを決定するステップは、画像メタデータまたは画像のデータベースにアクセスして動きスコアを取り出すステップを含む。ブロック212の後にブロック214が続いてもよい。
【0059】
ブロック214では、動画像の動きスコアが表示しきい値を満たすかどうかを判断する。ユーザの許可があれば、表示しきい値の値は、ユーザデータに基づいて決定してもよい。たとえば、動画像を描写するユーザインターフェースの、ユーザによるこれまでのビュー、画像撮影/表示モードに被写体の動きを含めるか含めないかを手動で切り替えることなどに基づいて決定してもよい。いくつかの実施態様では、たとえば、1つ以上のその他の画像を含むユーザインターフェースの一部として動画像が表示される場合、表示しきい値は、(たとえば、複数のフレームを順次表示することによって)目標の動画像数よりも多い数の動画像が動きをオンにした状態で表示されないように、一度に表示する目標の動画像数に基づいて設定されてもよい。いくつかの実施態様では、たとえば、動画像が単一
画像モード、たとえば、ワンナップモードで表示されるまたはスライドショーの一部として表示される場合、表示しきい値を、順次表示されたときに動画像の複数のフレーム内の被写体の動きに対する関心に基づいて決定される値に設定してもよい。たとえば、被写体の動きに対する関心は、動画像の被写体の動きの、ワンナップモードまたはスライドショーモードで動きが表示された、ユーザ(またはその他のユーザ)が見たその他の動画像における被写体の動きに対する類似性に基づいてもよい。
【0060】
いくつかの実施態様では、たとえば、1つ以上のその他の画像を含むユーザインターフェースの一部として(たとえば、画像グリッドの一部として)動画像が表示されると、表示しきい値には、当該1つ以上のその他の画像の動きスコアに基づいた値が設定されてもよい。たとえば、1つ以上のその他の画像がその他の動画像を含んでもよい場合。少なくともしきい値数の1つまたはその他の画像の動きスコアが動画像よりも高い場合、表示しきい値には、動画像の動きスコアが表示しきい値を満たさないような値が設定されてもよい。たとえば、表示しきい値には、動画像の動きスコアよりも高い値が設定されてもよい。動画像よりも動きスコアが高いその他の画像の数がしきい値数よりも少ない場合、表示しきい値には、動画像の動きスコアが表示しきい値を満たすような値が設定されてもよい。たとえば、表示しきい値には、動画像の動きスコアよりも低い値が設定されてもよい。
【0061】
いくつかの実施態様では、しきい値数は、方法200を実行するデバイス、たとえば、クライアントデバイス120のハードウェア機能に基づいてもよい。たとえば、方法200は、動画像を表示するためのソフトウェアアプリケーションによって実行され(または呼び出され)てもよい。このソフトウェアアプリケーションは、たとえばソフトウェアアプリケーションの1つ以上の実行スレッドがクライアントデバイス120のハードウェアプロセッサ上で動作するマルチスレッドで実行されてもよい。いくつかの実施態様では、各個々の実行スレッドは、グリッドで表示されるように対応する動画像を処理して、複数のフレームを表示するために描画してもよい。これらの実施態様では、しきい値数は、実行スレッドの数に基づいてもよく、たとえば、しきい値数は、実行スレッドの数以下であってもよい。
【0062】
いくつかの実施態様では、実行スレッドの数は、たとえば、クライアントデバイス120のハードウェアプロセッサの処理コアの数、クライアントデバイス120の利用可能なメモリなど、ハードウェア機能に基づいてもよい。たとえば、個々の実行スレッドが対応する処理コア上で動作する場合、実行スレッドの数は、利用可能な処理コアの数を超えなくてもよい。そのため、利用可能な処理コアの数は、利用可能な電力(たとえば、バッテリ)、オペレーティングシステム設定(たとえば、アプリケーション当たりの実行スレッドの数を限定する構成設定)などに基づいてもよい。
【0063】
ハードウェア機能に基づいたしきい値数の選択により、ユーザインターフェース、たとえば、画像グリッドで表示するために描画される動画像の数を、ハードウェアによって確実にサポートできるようになる。たとえば、画像グリッドが複数のフレームを含む画像を1つだけ含むように、しきい値数を1に設定してもよい(たとえば、画像を画像グリッドで描画するために利用可能な処理コアが1つしかない場合)。この例では、その他の動画像の各々の1つのフレームを表示するために描画することによって、モーショングリッドに含まれるその他の動画像は静止画像として表示される。別の例では、モーショングリッドに含まれる画像を描画するために4つのコア が利用可能な場合、しきい値数を4に設定してもよい。しきい値数をこのように設定することにより、利用可能なハードウェア機能を用いて画像グリッドを遅延なく描画するという技術的利点が与えられる。
【0064】
動画像の動きスコアが表示しきい値を満たす場合、ブロック214の後にブロック216が続く。動画像の動きスコアが表示しきい値を満たさなかった場合、ブロック214の
後にブロック218が続く。
【0065】
ブロック216では、動画像を被写体の動きを伴って表示させる。動画像は、たとえば、画像ギャラリーアプリケーションが提供するユーザインターフェースの一部として表示されてもよい。いくつかの実施態様では、動画像を表示することは、たとえば、動画像の複数のフレーム内の被写体の動きがユーザによって認識可能なように動画像の複数のフレームを連続して表示することを含む。たとえば、動画像は、一度に1つの画像が表示されるワンナップモードまたはスライドショーモードでユーザインターフェースに表示されてもよい。
【0066】
いくつかの実施態様では、動画像を表示するステップは、さらに、複数の画像を含む画像グリッドを含むユーザインターフェースにその他の画像よりも大きいサイズで動画像を表示することを含む。参照して説明した状況によって決まるしきい値数の選択により、表示しきい値を満たす動きスコアに対応付けられた、被写体の動きを伴って表示される1つ以上の動画像を有する画像グリッドを表示することが可能になる。いくつかの実施態様では、表示しきい値を満たす動きスコアに対応付けられた動画像を、グリッドにおいて1つ以上のその他の画像よりも大きいサイズでユーザインターフェースに表示してもよい。たとえば、このような動画像の特定のフレームのみを表示することによって、表示しきい値を満たさないスコアにそれぞれが対応付けられているユーザインターフェースにあるその他の動画像は、被写体の動きなしでユーザインターフェースに表示される。ブロック216の後にブロック220が続いてもよい。
【0067】
動画像の動きスコアが表示しきい値を満たさなかった場合、ブロック218を実行して、たとえば動画像の特定のフレームのみを表示することによって、動画像を被写体の動きなしで表示する。このように特定のフレームを表示することは、動画像のその他のフレームは表示されないので、計算資源を節約するであろう。ブロック218の後にブロック220が続いてもよい。
【0068】
ブロック220では、動きスコアが保存しきい値を満たすかどうかを判断する。保存しきい値は、様々な要因に基づいてもよい。たとえば、保存しきい値は、動画像を保存するユーザデバイス、たとえば、クライアントデバイス120の利用可能な不揮発性メモリ容量に基づいてもよい。別の例では、たとえば、動画像がサーバ上に保存される場合、保存しきい値は、動画像を保存する特定のユーザアカウントに割り当てられたサーバの記憶容量に基づいてもよい。いくつかの実施態様では、保存しきい値は、ユーザデバイスの不揮発性メモリ容量と、サーバの割り当てられた記憶容量との組合せに基づいて設定されてもよい。動きスコアが保存しきい値を満たす場合、ブロック220の後にブロック222が続く。動きスコアが保存しきい値を満たさなかった場合、ブロック220の後にブロック224が続いてもよい。
【0069】
ブロック222では、動画像を静止画像に変更する。たとえば、クライアントデバイスによって動画像を撮影した際に方法200が実行された場合、動画像は、クライアントデバイスの揮発性メモリ(たとえば、RAM)に一時的に保存されてもよい。動画像が保存しきい値を満たさなかった場合、動画像の複数のフレームのうち特定のフレームのみが保存される、たとえば、クライアントデバイスの不揮発性メモリに書き込まれる。動画像の複数のフレームのうち、その他のフレームは、画像を保存する前に削除される。
【0070】
たとえば、複数のフレームは、ユーザによるクライアントデバイスのカメラのユーザ起動前に撮影された1つ以上のフレーム、ユーザ起動時に撮影された1つのフレーム、およびユーザ起動後に撮影された1つ以上のフレームを含んでもよい。たとえば、動画像の長さは、最大で3秒であってもよい。いくつかの実施態様では、特定のフレームは、ユーザ
起動時に撮影された、たとえば、カメラの起動に一致するタイムスタンプに対応付けられた1つのフレームであってもよい。いくつかの実施態様では、特定のフレームは、動画像の複数のフレームのうち、その他のフレームであってもよい。
【0071】
たとえば、特定のフレームは、画像をプログラムで分析することに基づいて判断される動画像の異なる特性に基づいて選択されてもよい。たとえば、このような特徴は、フレームにおけるぼけ具合、フレームが笑顔および/または目を開けた人の被写体を描写しているかどうか、被写体への焦点の良否などを含んでもよい。各フレームの異なる特性を評価して品質スコアを判断してもよく、最高品質スコアに対応付けられたフレームを特定のフレームとして選択してもよい。いくつかの実施態様では、特定のフレームをランダムに選択してもよい。
【0072】
動画像を静止画像に変更することにより、技術的利点が与えられる。たとえば、静止画像が1つのフレームを含むので、静止画像のファイルサイズは複数のフレームを含む動画像よりも小さい。そのため、静止画像を保存する際に必要とされる記憶空間が少なくて済む。さらには、静止画像をたとえばサーバ装置に、またはその他のクライアントデバイスに送信することにより、ネットワーク利用が減る。ブロック222の後にブロック224が続いてもよい。
【0073】
ブロック224では、画像を、たとえば、クライアントデバイス120の不揮発性メモリ、サーバ装置の不揮発性メモリ、またはその両方に保存する。ブロック220の後にブロック224が実行されると、(複数のフレームを含む)動画像が保存され、ブロック222の後にブロック224が実行されると、静止画像が保存される。
【0074】
図2の様々なブロックを参照して方法200を説明したが、図2のブロックの一部を実行しないで本開示に記載の技術が実施してもよいことを理解されたい。様々な実施態様では、方法200のブロックの一部を並列して、または図2に示す順序とは異なる順序で実行してもよい。
【0075】
たとえば、方法200を実行して1つ以上の予め保存されていた画像を含むユーザインターフェースを表示するいくつかの実施態様では、ブロック220~224を実行しなくてもよい。別の例では、たとえば、動画像が撮影された直後に方法200が実行され、かつ、動画像は撮影されると保存されるという指示をユーザが与えている場合、ブロック220および222は実行されず、ブロック216またはブロック218の後にブロック224が実行される。いくつかの実施態様では、たとえば、常に被写体の動きを伴って動画像を表示させるようにユーザが指示を与えている場合、ブロック214は実行されず、ブロック212に続いてブロック216が実行される。これらの実施態様のさらに別の変形例では、ブロック216を実行して動画像を表示してもよく、ブロック216の後にブロック212を実行して動きスコアを決定してもよい。
【0076】
さらには、いくつかの実施態様は、動画像の表示を完全に除外してもよく、たとえば、このような実施態様では、ブロック214~218は実行されない。これらの実施態様では、動画像の動きスコアを決定し(ブロック212)、動きスコアが保存しきい値を満たす場合(ブロック220)、動画像を、選択的に静止画像に変換する(ブロック222)。動画像または静止画像を、不揮発性メモリに保存する(ブロック224)。たとえば、サーバ装置は、これらの実施態様を利用してストレージの使用を節約してもよい。これらの実施態様では、画像は、保存された後に表示されてもよく、たとえば、画像は、動画像で保存されている場合、動画像として表示され、静止画像で保存されている場合、静止画像として表示される。
【0077】
さらには、いくつかの実施態様では、たとえば、予め保存されていた動画像を表示するために、ブロック214~218をブロック212および220~224の後に実行してもよい。これらの実施態様では、動きスコアは、画像とともに保存されてもよく、または、画像の表示時に再計算されてもよい。
【0078】
図3は、いくつかの実施態様に係る、動画像の動きスコアを決定するための方法300の一例を説明するフロー図である。いくつかの実施態様では、方法300は、たとえば、図1に示すサーバシステム102上で実装され得る。いくつかの実施態様では、方法300の一部またはすべては、図1に示す1つ以上のクライアントデバイス120、122、124、もしくは126、1つ以上のサーバ装置上、ならびに/または、サーバ装置(複数可)およびクライアントデバイス(複数可)の両方の上で実装され得る。記載した例では、実装システムは、1つ以上のデジタルプロセッサまたは処理回路(「プロセッサ」)、および1つ以上の記憶装置(たとえば、データベース106またはその他のストレージ)を備える。いくつかの実施態様では、1つ以上のサーバおよび/または1つ以上のクライアントの異なる構成要素は、方法300の異なるブロックまたはその他の部分を実行できる。いくつかの例では、第1デバイスは、方法300のブロックを実行すると説明されている。いくつかの実施態様は、結果またはデータを第1デバイスに送信できる1つ以上のその他のデバイス(たとえば、その他のクライアントデバイスまたはサーバ装置)によって実行される方法300の1つ以上のブロックを有し得る。
【0079】
いくつかの実施態様では、方法300または当該方法の一部を、システムによって自動的に起動させることができる。いくつかの実施態様では、実装システムは、第1デバイスである。たとえば、方法(またはその一部)を、定期的に実行したり、たとえば、アプリケーション(たとえば、ユーザによって起動されているカメラアプリケーション152、画像管理アプリケーション156など)、システムに新たにアップロードされたもしくはシステムがアクセス可能な1つ以上の画像を受信した、方法300が最後に実行されてから所定時間が経過した、および/もしく方法が読み込む設定において指定可能な1つ以上のその他の条件が発生したなど、1つ以上の特定のイベントまたは条件に基づいて実行したりすることができる。いくつかの実施態様では、このような条件は、格納されたユーザのカスタム基本設定でユーザによって指定することができる。
【0080】
様々な実施態様では、クライアントデバイス120は、スタンドアロンカメラ、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス、またはユーザによってクライアントデバイスに入力されたコンテンツ(たとえば、画像撮影)を受信でき、方法300を実行できるその他のクライアントデバイスであり得る。別の例では、クライアントデバイスまたはサーバ装置が方法300を実行できる。いくつかの実施態様は、ユーザ入力に基づいて方法300を開始できる。ユーザ(たとえば、操作者またはエンドユーザ)は、たとえば、表示ユーザインターフェース、たとえば、アプリケーションユーザインターフェースまたはその他のユーザインターフェースから方法300の開始を選択した可能性がある。いくつかの実施態様では、方法300は、クライアントデバイスによって実装されてもよい。いくつかの実施態様では、方法300は、サーバ装置によって実装されてもよい。
【0081】
ブロック302では、動画像の安定性の程度を判断する。いくつかの実施態様では、安定性の程度は、動画像の複数のフレームのうち連続するフレームに含まれる対応する画素の画素値の比較に基づいてもよい。たとえば、画素のかなりの割合(たとえば、90%)が一致する、たとえば、等しいまたは同様の値を有する場合、画像に安定性があると判断してもよい。いくつかの実施態様では、動画像をプログラムで分析して、動画像の背景部分を判断してもよい。これらの実施態様では、背景部分に対応する画素のサブセットについてのみ画素値の比較を行ってもよい。
【0082】
いくつかの実施態様では、安定性の程度は、動画像を撮影したデバイスの1つ以上のセンサー、たとえば、クライアントデバイス120から取得したデータに基づいて判断されてもよい。たとえば、このようなデータは、デバイスの加速度計および/またはジャイロスコープの表示値を含んでもよい。たとえば、動画像の撮影(たとえば、短期間、たとえば、最大で3秒間行われてもよい)中にデバイスが動いたり回転していなかったりすることをセンサーからのデータが示す場合、安定性の程度が高いと判断してもよい。一方で、(たとえば、センサーによって測定されるデバイスのずれおよび/または回転によって示される)撮影中のデバイスの移動は、安定性の程度が低いことを示してもよい。
【0083】
いくつかの実施態様では、安定性の程度の判断は、複数のフレームの画素値およびセンサー表示値に基づいてもよい。安定性の程度を判断するその他の技術が用いられてもよい。ブロック302の後にブロック304が続いてもよい。
【0084】
ブロック304では、動画像に安定性があるかどうかを判断してもよい。たとえば、動画像の安定性の程度を、安定性しきい値と比較してもよい。安定性の程度が安定性しきい値を満たす場合、ブロック304の後にブロック306が続く。その他の場合、ブロック304の後にブロック330が続く。
【0085】
ブロック306では、動画像をプログラムで分析して動画像の被写体を検出し、被写体の種類を判断する。たとえば、物体認識技術を利用して、動画像に含まれる様々な物体、たとえば、人の顔、人の体、動物、木、および、ビル、家具、乗り物など、無生物の存在を検出してもよい。動画像の被写体は、複数のフレームの中心近くに現れる1つ以上の物体、焦点が合わされている物体、画像内で領域を最も多く占める物体などとして判断されてもよい。たとえば、焦点が合っているおよび/または中央にある人の顔を描写する動画像は、「人の顔」または「ポートレート」という被写体の種類に相当してもよい。別の例では、人の集団を描写する動画像は、「集合写真」という被写体の種類に相当してもよい。さらに別の例では、犬、猫、またはその他の動物を描写する動画像は、「ペット」または「動物」などという被写体の種類に相当してもよい。
【0086】
また、動画像の複数のフレームを分析して動画像内での被写体の移動の程度を判断してもよい。たとえば、被写体の種類が「人の顔」である場合、移動の程度は、複数のフレームに含まれる顔の画素値の変化に基づいて判断されてもよい。この例では、表情がほとんどまたはまったく変わらない動画像は、低程度の被写体の移動に相当してもよく、被写体が笑顔になる、眉毛を上げる、顔の向きを変えるまたは傾けるなどの動画像は、高程度の被写体の移動に相当してもよい。
【0087】
別の例では、被写体の種類が人の体である場合、ジャンプしたり、ある場所から別の場所へ移動したりするなどの被写体の動きは、高程度の移動に相当してもよく、(たとえば、手を上げる、頭を傾けるなど)その他の方法で動く静止した被写体は、低程度の移動に相当してもよい。いくつかの実施態様では、比較に用いられる移動のしきい値レベルは、被写体の種類に基づいてもよく、たとえば、低いしきい値は、被写体が体である場合よりも顔である場合に用いられてもよい。たとえば、オプティカルフロー、画像セグメンテーション、画像登録など、様々な技術を利用して被写体の移動を検出してもよい。たとえば、物体認識技術を利用して物体および当該物体に対応する画素のオプティカルフローを検出してもよく、たとえば、物体の外枠を測定して物体の移動の程度を判断してもよい。別の例では、画像登録技術を利用して複数のフレームの画素を位置合わせし、異なる画素座標によって示される物体の位置変更を利用して移動の程度を判断してもよい。いくつかの実施態様では、技術を組み合わせたものを利用してもよい。ブロック306の後にブロック308が続いてもよい。
【0088】
ブロック308では、被写体の移動の程度が移動のしきい値レベルを満たすかどうかを判断する。被写体の移動の程度がしきい値を満たす場合、ブロック308の後にブロック310が続く。その他の場合、ブロック308の後にブロック330が続く。
【0089】
ブロック310では、被写体の種類が風景または無生物であるかを判断する。たとえば、検出された物体が山、木、川、海などの物体を含む場合、たとえば、動画像の被写体の種類は風景であると判断され、たとえば、検出された物体が家具、ビル、自動車などの物体を含む場合、無生物であると判断される。いくつかの実施態様では、たとえば、風景または無生物を有する画像において人または動物(たとえば、ペット)を検出した場合、人または動物の被写体が検出されているため、被写体の種類は風景や無生物ではない。被写体の種類が風景または無生物である場合、ブロック310の後にブロック330が続く。その他の場合、ブロック310の後にブロック312が続く。
【0090】
ブロック312では、動画像のビュー数が視聴者数しきい値を満たすかどうかを判断する。たとえば、動画像の複数のフレームが連続して視聴されたことが以前にあり、これにより被写体の動きの表示が少なくともしきい値回数提供されている場合、この動画像は、視聴者数しきい値を満たすと判断される。たとえば、ユーザ(または、画像を共有したその他のユーザ)が、たとえば、5回、10回など複数回見た保存画像は、視聴者数しきい値を満たすと判断されてもよいため、画像にある動きはユーザにとって関心のあるものである。動画像のビュー数が視聴者数しきい値を満たす場合、ブロック312の後にブロック320が続いてもよい。その他の場合、ブロック312の後にブロック314が続いてもよい。
【0091】
ブロック314では、動画像からモーションアーティファクトが作成されたかどうかを判断する。たとえば、モーションアーティファクトは、アニメーションGIF、または、たとえば動画像の2つ以上のフレームを含むその他のアニメーションを含んでもよい。たとえば、モーションアーティファクトは、ループで再生されるように設定された2つ以上のフレームを含んでもよい。ループの2つ以上のフレームは順番に再生されてもよく、たとえば、第1フレームの後で第2フレームが再生され、その次に第3フレームが再生されてもよい。モーションアーティファクトは、第1フレームが最後のフレームの後に提供される順方向ループであって、連続したノンストップアニメーションを提供してもよい。モーションアーティファクトは、フレームが第1フレームから最後のフレームに順番に再生され、続いて最後のフレームから第1フレームに逆順で再生される逆方向ループ(ブーメランとしても知られる)であって、連続したアニメーションを提供してもよい。いくつかの実施態様では、モーションアーティファクトは、たとえば、動画像の2つ以上のフレームを含むコラージュ、動画像の2つ以上のフレームを重ね合わせて1つの静止画像にするモーションブラー画像など、動画像に基づいたその他の作品を含んでもよい。
【0092】
カメラアプリケーション、画像ギャラリーアプリケーション、またはその他のアプリケーションは、たとえば自動的または手動でモーションアーティファクトを作成するための機能を提供してもよい。モーションアーティファクトが作成された場合、たとえば、ユーザが入力を行うことによって当該モーションアーティファクトを作成したり、自動生成されるモーションアーティファクトを保存したりすることを選択した場合、ブロック314の後にブロック316が続いてもよい。その他の場合、ブロック314の後にブロック320が続いてもよい。
【0093】
ブロック316では、動画像の動きスコアを算出する。いくつかの実施態様では、動きスコアは、動画像の安定性の程度、動画像の被写体の種類、または動画像の複数のフレームにおける被写体の移動の程度のうち、1つ以上に基づいてもよい。たとえば、動きスコ
アは、安定性の程度と動きにおける被写体の移動の程度との重み付き組合せであってもよい。いくつかの実施態様では、安定性の程度が大きいほど高い動きスコアに対応し、安定性の程度が小さいほど低い動きスコアに対応してもよい。いくつかの実施態様では、被写体の移動の程度が大きいほど高い動きスコアに対応し、被写体の移動の程度が小さいほど低い動きスコアに対応してもよい。いくつかの実施態様では、被写体の種類に基づいて異なる重みが被写体の移動の程度に割り当てられてもよい。たとえば、被写体の種類が顔である場合、被写体の種類が体である場合よりも大きな重みが移動の程度に割り当てられてもよい。
【0094】
いくつかの実施態様では、これまでに説明した要因に加えて、1つ以上のその他の要因を利用してもよい。たとえば、顔認識技術の使用をユーザが許可した場合、画像の被写体がユーザが知っている人(たとえば、ユーザが撮影したまたはユーザの画像ギャラリーに保存されているその他の画像などに描写されているユーザのソーシャルネットワークの一部)または動物(たとえば、ペット)であるかを判断してもよい。知っている被写体を描写した動画像の動きスコアは、その他の要因は同等であっても、知らない被写体を描写した動画像よりも高くてもよい。いくつかの実施態様では、特定の被写体の種類、たとえば、スポーツまたは運動、ダンスなどを描写した動画像が、より高い重みに対応付けられてもよく、このような被写体の種類を描写した動画像が対応してより高い動きスコアを受けてもよい。言い換えると、動きスコアが高いことは、ユーザが認識する動画像のフレーム間の変動が大きいまたはかなりであることを示し、表示されると、このような画像の動きの態様は、ユーザエクスペリエンス、当該動きの態様によってユーザが得る知覚および情報を増加または向上させる。一方で、動きスコアが低いことは、動画像のフレーム間の変動がほとんどないまたは取るに足らない変動であることを示し、動き情報の静的表示または削除、および動画像の静止画像への変換のいずれかによる動き情報の消失は、ユーザエクスペリエンスならびに画像コンテンツの知覚および認識を低下させない、または、むしろ、改善させるであろう。後者の場合、たとえば、動画像に含まれる動きの態様は、静的シーンの動画像が撮影されたときのカメラのジッターまたは震えによって生じるぐらつきを含んでもよい。この状況では、たとえば、動きの態様によって生じたぐらつきのせいでユーザが静的シーンの詳細を適切に集中して認識することができないので、動き情報および動画像としての画像の表示が実際にユーザの知覚を低下させるであろう。
【0095】
いくつかの実施態様では、動画像は、被写体の種類を示すラベル(たとえば、被写体の種類が文書、スクリーンショット、レシートなどであることを示す「アーカイブ」というラベル)を含むまたはこのようなラベルに対応付けられてもよく、このようなラベルを利用して動きスコアを決定してもよい。いくつかの実施態様では、動画像は、たとえば、動画像の撮影中に録音された音を含んでもよい。これらの実施態様では、この音をプログラムで分析して、関心のある動きに対応付けられた音のカテゴリに対応するかどうかを判断してもよく、たとえば、滝の音、バットがボールを打つ音、ダンス音楽、笑い声などが関心のある動きに対応付けられ、背景ノイズ、車両ノイズなど、その他の音が関心のある動きを描写しない画像に対応付けられてもよい。
【0096】
いくつかの実施態様では、算出された動きスコアは、たとえば、動画像メタデータに含まれる画像に対応付けて、動画像に対応付けられたラベルとして、動画像についてのデータなどを保存するデータベースに保存されてもよい。保存された動きスコアは、たとえば、動画像を含むユーザインターフェースを生成する際、モーションアーティファクトの作成またはその他の画像作成を提案する際などにアクセスされてもよい。
【0097】
動画像のビュー数が視聴者数しきい値を満たす場合、または動画像からモーションアーティファクトが作成された場合に実行されるブロック320では、動きスコアを、表示しきい値を満たす値に設定してもよい。たとえば、動きスコアを、ブロック316を参照し
て説明したように算出し、表示しきい値と比較してもよい。動きスコアが表示しきい値を満たさなかった場合、動きスコアを、表示しきい値を満たす値に設定してもよい。このように動きスコアを更新することにより、自動的に決定された動きスコアよりも、動画像に対する関心を示すユーザ入力のほうが必ず優先され、動画像の複数のフレームを連続して表示することによって、ユーザが興味を持つ動画像が、ユーザが動きを認識するように表示される。
【0098】
ブロック330は、(ブロック304において判断されるように)動画像に安定性がない場合、被写体の移動の程度が移動のしきい値レベルを満たさなかった場合(ブロック308)、または、動画像の被写体の種類が風景または無生物であった場合(ブロック310)に実行される。ブロック330では、動きスコアを、表示しきい値を満たさない値、たとえば、表示しきい値よりも低い値に設定してもよい。動きスコアをこのように設定することにより、たとえば、図2を参照して上述したように、動画像の特定のフレームのみを表示することによって、高品質の視聴体験を可能にしない動画像、たとえば、不安定な、または安定性のない画像、被写体の移動が最低限である画像、もしくは被写体の種類が動画像の複数のフレームの表示に適さない画像を必ず静止画像として表示するようにできる。動きスコアをこのように設定することにより、画像の複数のフレームを描画するための計算資源を節約し、または、動画像が不揮発性メモリに保存されるもしくはサーバまたはその他のクライアントデバイスに送信されるときの記憶空間を節約することができる。
【0099】
図3の様々なブロックを参照して方法300を説明したが、図3のブロックの一部を実行しないで本開示に記載の技術が実施してもよいことを理解されたい。たとえば、いくつかの実施態様では、たとえば、モーションアーティファクトの作成に関連するビュー数または情報が利用可能でない場合、ブロック312、314、および320は実行されない。いくつかの実施態様では、図3に示すブロックの1つ以上を組み合わせてもよい。様々な実施態様では、方法300のブロックの一部を並列して、または図3に示す順序とは異なる順序で実行してもよい。
【0100】
図4は、いくつかの実施態様に係る、動画像の動きスコアを決定するための例示的な方法400を説明するフロー図である。いくつかの実施態様では、方法400は、たとえば、図1に示すサーバシステム102上で実装され得る。いくつかの実施態様では、方法400の一部またはすべては、図1に示す1つ以上のクライアントデバイス120、122、124、もしくは126、1つ以上のサーバ装置上、ならびに/または、サーバ装置(複数可)およびクライアントデバイス(複数可)の両方の上で実装され得る。記載した例では、実装システムは、1つ以上のデジタルプロセッサまたは処理回路(「プロセッサ」)、および1つ以上の記憶装置(たとえば、データベース106またはその他のストレージ)を備える。いくつかの実施態様では、1つ以上のサーバおよび/または1つ以上のクライアントの異なる構成要素は、方法400の異なるブロックまたはその他の部分を実行できる。いくつかの例では、第1デバイスは、方法400のブロックを実行すると説明されている。いくつかの実施態様は、結果またはデータを第1デバイスに送信できる1つ以上のその他のデバイス(たとえば、その他のクライアントデバイスまたはサーバ装置)によって実行される方法400の1つ以上のブロックを有し得る。
【0101】
いくつかの実施態様では、方法400または当該方法の一部を、システムによって自動的に起動させることができる。いくつかの実施態様では、実装システムは、第1デバイスである。たとえば、方法(またはその一部)を、定期的に実行したり、たとえば、アプリケーション(たとえば、ユーザによって起動されているカメラアプリケーション152、画像管理アプリケーション156など)、システムに新たにアップロードされたもしくはシステムがアクセス可能な1つ以上の画像を受信した、方法400が最後に実行されてから所定時間が経過した、および/もしく方法が読み込む設定において指定可能な1つ以上
のその他の条件が発生したなど、1つ以上の特定のイベントまたは条件に基づいて実行したりすることができる。いくつかの実施態様では、このような条件は、格納されたユーザのカスタム基本設定でユーザによって指定することができる。
【0102】
様々な実施態様では、クライアントデバイス120は、スタンドアロンカメラ、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス、またはユーザによってクライアントデバイスに入力されたコンテンツ(たとえば、画像撮影)を受信でき、方法400を実行できるその他のクライアントデバイスであり得る。別の例では、クライアントデバイスまたはサーバ装置が方法400を実行できる。いくつかの実施態様は、ユーザ入力に基づいて方法400を開始できる。ユーザ(たとえば、操作者またはエンドユーザ)は、たとえば、表示ユーザインターフェース、たとえば、アプリケーションユーザインターフェースまたはその他のユーザインターフェースから方法400の開始を選択した可能性がある。いくつかの実施態様では、方法400は、クライアントデバイスによって実装されてもよい。いくつかの実施態様では、方法400は、サーバ装置によって実装されてもよい。
【0103】
ブロック402では、動画像のビュー数が視聴者数しきい値を満たすかどうかを判断する。ブロック402は、図3で説明したブロック312と同様であってもよい。ビュー数が視聴者数しきい値を満たす場合、ブロック402の後にブロック410が続く。その他の場合、ブロック402の後にブロック404が続く。
【0104】
ブロック404では、動画像からモーションアーティファクトが作成されたかどうかを判断する。ブロック404は、図3で説明したブロック314と同様であってもよい。少なくとも1つのモーションアーティファクトが作成されていた場合、ブロック404の後にブロック410が続く。その他の場合、ブロック404の後にブロック410が続く。
【0105】
ブロック406では、たとえば、動画像の特定のフレームを表示することによって動画像を静止画像として表示するためのユーザ入力が受信されたかどうかを判断する。たとえば、ユーザは、「この画像の動きをオフにする」などのオプションを選択することにより、このような入力を行ってもよい。このようなユーザ入力は、視聴者が関心のある画像内の動きに気づかないという指示であってもよい。ユーザ入力が受信された場合、ブロック406の後にブロック420が続く。その他の場合、ブロック406の後にブロック408が続いてもよい。
【0106】
ブロック408では、動画像の動きスコアを算出する。いくつかの実施態様では、複数の層に編成された複数のノードを含み、画像の動きスコアを決定するように構成されたニューラルネットワークから構成される訓練済みの機械学習モデルを適用することによって動きスコアが算出される。動画像は、訓練済みの機械学習モデルへの入力として提供される。
【0107】
いくつかの実施態様は、動画像の動きスコアを決定するように機械学習モデルを訓練することを含む。たとえば、訓練されていない機械学習モデルは、複数の層に編成された複数のノードを含むニューラルネットワークから構成されてもよい。各層のノードは、前の層のノードおよび後続の層のノードに接続されてもよい。第1の層のノードは、動画像を入力として受け付けるように構成されてもよく、複数の層のうち最後の層のノードは、動きスコアを出力するように構成されてもよい。各ノードは、任意の種類のニューラルネットワークノード、たとえば、LSTMノードであってもよい。
【0108】
訓練前に、ノードの各々に初期の重みを割り当ててもよく、ニューラルネットワークの異なる層のノード間の接続を初期化してもよい。動画像の訓練データセットを取得して、
ニューラルネットワークへの入力として提供してもよい。たとえば、訓練データセットは、複数の動画像および関連する動きスコアまたはラベル含んでもよい。たとえば、訓練データセットのうち、第1セットの動画像は、画像の各々にある被写体の動きがユーザが関心する動きであることを示す1つ以上のラベルに対応付けられてもよい。このようなラベルは、ユーザ入力に基づいて取得されてもよく、または、ユーザ許可によって得られたユーザデータ(たとえば、動画像の視聴者数、モーションアーティファクトの作成など)から取得されてもよい。
【0109】
訓練データセットのうち、第2セットの動画像は、第2セットの画像の各々にある被写体の動きがユーザが関心する動きではないことを示す1つ以上のラベルに対応付けられてもよい。これらのラベルは、ユーザ入力に基づいて取得されてもよく、または、ユーザ許可によって得られたユーザデータ(たとえば、動画像のフレームを破棄する、動画像を削除するなど)から取得されてもよい。第1セットを積極的訓練例と称し、第2セットを「消極的訓練例」と称する場合がある。訓練セットは、様々な種類の被写体を異なる安定性の程度で描写する動画像と、複数のフレーム内の被写体の移動の程度とを含んでもよい。訓練セットは、フィールド使用中にモデルへの入力として後に提供され得る異なる種類の画像の例を訓練セットが必ず含むように選択されてもよい。
【0110】
複数の動画像が訓練中のモデルへの入力として提供されてもよい。いくつかの実施態様では、訓練用画像および関連するラベルが、まず、訓練中のモデルへの入力として提供されてもよい。この訓練段階では、モデルが出力する動きスコアが関連するラベルに含まれる動きスコアに一致するよう、個々のノードの重み(および、オプションで、ノードの数)、異なる層のノード間の接続性(または、オプションで、層の数)が自動的に調整されてもよい。いくつかの実施態様では、これを最初の訓練段階と称する場合がある。
【0111】
いくつかの実施態様では、画像の訓練セットのサブセットを最初の訓練段階から除外してもよい。このサブセットを最初の訓練段階の後に提供し、モデルが出力する動きスコアを、サブセットに含まれる画像に対応付けられた動きスコアと比較してもよい。動きスコアが一致しなかった場合、このような不一致を、モデルへの訓練用の入力として提供してもよい(強化学習)。この段階において、モデルが画像のサブセットの動きスコアを正しく予測できるようになるまで、1つ以上のノードの重み、ノード間の接続性など、モデルパラメータが調整されてもよい。たとえば、モデルが動きスコアの予測において十分なレベルの正解率を達成するまで、第2段階を任意の回数繰り返してもよい。いくつかの実施態様では、訓練済みモデルをさらに修正する、たとえば、(より少ない数のノードまたは層を用いるために)圧縮する、(たとえば、異なる種類のハードウェア上で利用可能にするために)変形させるなどしてもよい。訓練済みのモデルをデバイス、たとえば、クライアントデバイス120またはサーバ装置上に提供して、動画像の動きスコアを算出してもよい。いくつかの実施態様では、異なるバージョンのモデルを提供してもよい。たとえば、クライアントバージョンのモデルを、大きさに最適化させて計算量を抑えるようにしてもよく、サーババージョンのモデルを、正解率に最適化させてもよい。
【0112】
ブロック408では、動画像を、訓練済みの機械学習(ML)モデルへの入力として提供する。訓練済みのMLモデルは、動画像に基づいて動きスコアを算出してもよい。いくつかの実施態様では、動画像の代わりまたはそれに加えて、動画像についてのその他のデータが訓練済みのMLモデルへの入力として提供されてもよい。たとえば、このような要因は、動画像の(たとえば、背景部分の)安定性の程度、動画像の被写体の種類、または、動画像における被写体の移動の程度を含んでもよい。異なる実施態様では、このような要因は、図3を参照して説明した技術を用いて画像の画素値に基づいて決定されてもよい。いくつかの実施態様では、安定性の程度、被写体の種類、または被写体の移動の程度を決定するように訓練された別個のMLモデルが提供されもよく、これらのMLモデルの出
力が訓練済みのMLモデルに提供されてもよい。いくつかの実施態様では、訓練済みのMLモデルは、このような要因を中間層の出力として決定してもよい。
【0113】
動画像のビュー数が視聴者数しきい値を満たす場合(ブロック402)または、動画像からモーションアーティファクトが作成された場合(ブロック404)、ブロック410が実行される。ブロック410では、図3で説明したブロック320と同様に、動きスコアを、表示しきい値を満たす値に設定する。ブロック410の後にブロック430が続いてもよい。
【0114】
ブロック420では、たとえば、図3で説明したブロック330と同様に、動きスコアを、表示しきい値を満たさない値に設定する。ブロック420の後にブロック430が続いてもよい。
【0115】
ブロック430では、訓練済みのMLモデルを更新してもよい。たとえば、ブロック410の後にブロック430が実行されると、(ユーザ入力に基づく)表示しきい値を満たす値に設定された動きスコアに基づいてモデルが更新されてもよいので、動画像がユーザが関心する動画を描写していることを示している。別の例では、ブロック420の後にブロック420が実行されると、表示しきい値を満たさない値に設定された動きスコアに基づいてモデルが更新されてもよいので、動画像がユーザが関心しない動きを描写していることを示している。
【0116】
いくつかの実施態様では、MLモデルを更新することは、複数のノードのうち少なくとも1つのノードの重みを調整すること、または、複数のノードのうち少なくとも1対のノード間の接続を更新することを含んでもよい。いくつかの実施態様では、MLモデルがブロック410または420で設定された動きスコアに一致する動きスコアを更新後に算出するよう、重みが調整されてもよい。いくつかの実施態様では、たとえば、ユーザデータを使用するための許可をユーザが与えない場合、ブロック430は実行されない。ユーザがユーザデータの利用を可能にする実施態様では、更新済みのMLモデルをサーバに提供して、たとえば連合学習を可能にしてもよい。訓練済みのMLモデルをこのように更新することにより、動画像を見るユーザ用に動きスコアの算出を個人向けにカスタマイズすることが可能になってもよく、それによって、ユーザが撮影または見た動画像に対する関心の程度を正確に示すMLモデルによって決定された動きスコアにより、計算負荷を低減したまたはストレージコストを抑えた改善された動画像表示が可能になる。
【0117】
図4の様々なブロックを参照して方法400を説明したが、図4のブロックの一部を実行しないで本開示に記載の技術が実施してもよいことを理解されたい。たとえば、いくつかの実施態様では、ブロック402および/または404は実行されない。いくつかの実施態様では、図4に示すブロックの1つ以上を組み合わせてもよい。様々な実施態様では、方法400ブロックの一部を並列して、または図4に示す順序とは異なる順序で実行してもよい。たとえば、いくつかの実施態様では、ブロック402および404が同時に実行されてもよい。
【0118】
図5は、例示的な動画像を示す図である。特に、例示的な動画像の3つのフレーム(502、512、および522)が示されている。これら3つのフレームは、短期間、たとえば、1~3秒内の異なる時点で撮影されてもよい。図5に見られるように、動画像の被写体(506、516、526)は、ブランコに乗っている人である。動画像の撮影中、フレーム502、512、および522に見られるように、この人物は後ろから前にブランコを漕いで両足を広げる。この動きは、たとえば、デプス情報を判断可能なカメラを用いて動画像が撮影された場合、デプス画像に格納されたデプスデータによって示されてもよい。動画像は、背景部分も含む(504)。
【0119】
図5に示す動画像は、大幅な動きがある被写体(人)を含み、たとえば、表示しきい値を満たす比較的高い動きスコアを有すると判断されてもよい。その他の動画像は、被写体、たとえば、文書、家具、もしくはその他の無生物、または風景を含んでもよく、または、大幅な被写体の動きを含まなくてもよく、たとえば、表示しきい値を満たさない比較的低い動きスコアを有すると判断されてもよい。図5は、(フレーム502、512、および522間で背景504が変化しない)安定性のある画像を示しているが、その他の動画像は、たとえば、複数のフレーム間で背景が変化する不安定な、または安定性のない画像を含んでもよい。
【0120】
図6は、画像グリッドを含む例示的なユーザインターフェース600の図解である。図6に示す例示的なユーザインターフェースは、図5に示す動画像を画像グリッドの一部として含む。ユーザインターフェースが動画像の複数のフレームを連続して表示することを説明するために、ユーザインターフェースの3つのビュー(602、612、622)を示している。この例では、動画像は、画像グリッドに含まれるその他の画像よりも大きいサイズで表示されている。
【0121】
この例示的なユーザインターフェースでは、ユーザインターフェースに被写体の動きが表示された1つの動画像が示されている。しかしながら、図3を参照して説明したように、画像グリッドの画像のそれぞれの動きスコアに基づいて、任意の数、たとえば、被写体の動きが伴うゼロ、2つ、3つ、またはそれ以上の数の画像が示されてもよいことを理解されたい。様々な実施態様では、ユーザインターフェース600は、表示装置、たとえば、図1のクライアントデバイス120、122、124、および/または126もしくはサーバシステム102の表示画面によって表示することができる。
【0122】
図7は、例示的なデバイス700のブロック図である。デバイス700は、本明細書において説明する1つ以上の特徴を実現するために使用され得る。一例において、デバイス700を用いて、クライアントデバイス、たとえば、図1に示すクライアントデバイス(120、122、124、126)のうちのいずれかを実装してもよい。あるいは、デバイス700は、サーバ装置、たとえば、サーバ104を実装し得る。いくつかの実施態様では、デバイス700を用いて、クライアントデバイス、サーバ装置、またはクライアントおよびサーバ装置の両方を実装してもよい。デバイス700は、上述した任意の適切なコンピュータシステム、サーバ、またはその他の電子機器もしくはハードウェア装置であり得る。
【0123】
本明細書において説明する1つ以上の方法は、任意の種類のコンピューティングデバイス上で実行できるスタンドアロンプログラム、ウェブブラウザ上で動作するプログラム、モバイルコンピューティングデバイス(たとえば、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス(腕時計、アームバンド、装身具、帽子、仮想現実ゴーグルまたは眼鏡、拡張現実ゴーグルまたは眼鏡、ヘッドマウントディスプレイなど)、ラップトップコンピュータなど)上で動作する携帯アプリケーション(「アプリ」)であり得る。一例において、クライアント/サーバアーキテクチャを用いることができ、たとえば、(クライアントデバイスとしての)モバイルコンピューティングデバイスが、ユーザ入力データをサーバ装置に送信し、出力用(たとえば、表示用)の最終出力データを当該サーバから受信する。別の例では、モバイルコンピューティングデバイス上のモバイルアプリ(および/またはその他のアプリ)内ですべての計算が行われ得る。別の例では、計算を、モバイルコンピューティングデバイスと1つ以上のサーバ装置とに分担させ得る。
【0124】
いくつかの実施態様では、デバイス700は、プロセッサ702と、メモリ704と、
入/出力(I/O)インターフェース706と、カメラ716とを備える。プロセッサ702は、プログラムコードを実行し、デバイス600の基本動作を制御するための1つ以上のプロセッサおよび/または1つ以上の処理回路であり得る。「プロセッサ」は、データ、信号、またはその他の情報を処理する任意の適切なハードウェアシステム、機構、または構成要素を含む。プロセッサは、(たとえば、シングルコア構成、デュアルコア構成、またはマルチコア構成の)1つ以上のコアを有する汎用CPU(Central Processing Unit)を備えたシステム、(たとえば、マルチプロセッサ構成の)複数の処理部、GPU(Graphics Processing Unit)、FPGA(Field-Programmable Gate Array)、ASIC(Application-Specific Integrated Circuit)、CPLD(Complex Programmable Logic Device)、機能を実現するための専用回路、ニューラルネットワークモデルベースの処理を実施するための専門プロセッサ、ニューロン回路、行列計算(たとえば、行列乗算)に最適化されたプロセッサ、またはその他のシステムを含んでもよい。いくつかの実施態様では、プロセッサ702は、ニューラルネットワーク処理を実装する1つ以上のコプロセッサを含んでもよい。いくつかの実施態様では、プロセッサ702は、データを処理して確率に基づく出力を生成するプロセッサであってもよく、たとえば、プロセッサ702が生成する出力は、不正確であってもよく、予想出力から特定の範囲内で正確であってもよい。処理は、特定の地理的位置に限定される必要はなく、または、時間的制限がある必要はない。たとえば、プロセッサは、その機能を「リアルタイム」、「オフライン」、「バッチモード」などで実行してもよい。処理の一部は、異なる(または同じ)処理システムによって、異なるタイミングで異なる場所において実行されてもよい。コンピュータは、メモリと通信する任意のプロセッサであってもよい。
【0125】
メモリ704は、通常、プロセッサ702がアクセスできるよう、デバイス700内に提供される。メモリ704は、RAM(Random Access Memory)、ROM(Read-Only Memory)、EEPROM(Electrical Erasable Read-only Memory)、フラッシュメモリなど、プロセッサによって実行される命令を格納するのに適した任意の適切なプロセッサ読み取り可能な記憶媒体であってもよく、プロセッサ702とは別個に位置していてもよく、および/またはプロセッサ702と一体化されていてもよい。メモリ704は、オペレーティングシステム708、機械学習アプリケーション730、その他のアプリケーション712、およびアプリケーションデータ714を含む、プロセッサ702によってサーバ装置700上で操作されるソフトウェアを格納し得る。その他のアプリケーション712は、カメラアプリケーション、画像ギャラリーまたは画像ライブラリアプリケーション、データ表示エンジン、ウェブホスティングエンジン、画像表示エンジン、通知エンジン、ソーシャルネットワーキングエンジンなどのアプリケーションを含んでもよい。いくつかの実施態様では、機械学習アプリケーション730およびその他のアプリケーション712は、各々、プロセッサ702が本明細書に記載の機能、たとえば、図2図3、および図4の方法の一部またはすべてを実行することを可能にする命令を含み得る。
【0126】
その他のアプリケーション712は、たとえば、カメラアプリケーション、画像ライブラリまたは画像ギャラリーアプリケーション、メディア表示アプリケーション、通信アプリケーション、ウェブホスティングエンジンまたはアプリケーション、マッピングアプリケーション、メディア共有アプリケーションなどを含み得る。たとえば、任意の種類のコンピューティングデバイス上で動作できるスタンドアロンコンピュータプログラムとして、ウェブページを有するウェブアプリケーションとして、モバイルコンピューティングデバイス上で動作する携帯アプリケーション(「アプリ」)としてなど、本明細書において開示する1つ以上の方法は、いくつかの環境およびプラットフォームにおいて動作できる。
【0127】
様々な実施態様では、機械学習アプリケーションは、ベイズ分類器、サポートベクターマシン、ニューラルネットワーク、またはその他の学習手法を利用してもよい。いくつかの実施態様では、機械学習アプリケーション730は、訓練済みモデル734と、推論エンジン736と、データ732とを含んでもよい。いくつかの実施態様では、データ732は、訓練データ、たとえば、訓練済みモデル734を生成するために用いられるデータを含んでもよい。たとえば、訓練データは、文字、画像、音声、動画など、任意の種類のデータを含んでもよい。たとえば、訓練データは、動画像を含んでもよい。訓練データは、任意のソース、たとえば、訓練用に明確に記されたデータリポジトリ、機械学習用の訓練データとして用いるための許可が与えられたデータなどから取得されてもよい。1人以上のユーザが機械学習モデル、たとえば、訓練済みモデル734を訓練するためにそれぞれのユーザデータの利用を許可している実施態様では、訓練データは、ユーザデータを含んでもよい。ユーザがそれぞれのユーザデータの利用を許可している実施態様では、データ732は、画像または画像メタデータ(たとえば、動画像、モーションアーティファクト、または、その他のユーザが生成した画像、その他のユーザと画像を共有することに関するデータ、画像に対応付けられたラベルなど)、コミュニケーション(たとえば、電子メール;テキストメッセージ、音声、動画などのチャットデータなど)、文書(たとえば、表計算、テキスト文書、プレゼンテーションなど)など、許可データを含んでもよい。
【0128】
いくつかの実施態様では、訓練データは、学習対象となるコンテキストにおけるユーザの入力または活動に基づいていないデータ、たとえば、シミュレーション動画像またはコンピュータによって生成された動画像から生成されたデータなど、訓練目的で生成された合成データを含んでもよい。いくつかの実施態様では、機械学習アプリケーション730は、データ732を除外する。たとえば、これらの実施態様では、訓練済みモデル734は、たとえば、異なるデバイス上で生成されて、機械学習アプリケーション730の一部として提供されてもよい。様々な実施態様では、訓練済みモデル734は、(たとえば、ニューラルネットワークノードの数および種類、ノード間の接続性、ならびに複数の層にノードを編成することを規定する)モデル構造またはモデル形態と、関連する重みとを含むデータファイルとして提供されてもよい。推論エンジン736は、訓練済みモデル734用のデータファイルを読み出して、訓練済みモデル734において指定されたモデル構造またはモデル形態に基づいたノード接続性、層、および重みを有するニューラルネットワークを実装してもよい。
【0129】
また、機械学習アプリケーション730は、訓練済みモデル734を含んでもよい。いくつかの実施態様では、訓練済みモデルは、1つ以上のモデル形態または1つ以上のモデル構造を含んでもよい。たとえば、モデル形態またはモデル構造は、線形ネットワーク、複数の層(たとえば、入力層と出力層との間の「隠れ層」。各層が線形ネットワークである)を実装するディープニューラルネットワーク、畳み込みニューラルネットワーク(たとえば、入力データを複数の部分またはタイルに分割または仕切り、1つ以上のニューラルネットワーク層を用いて各タイルを別々に処理し、各タイルの処理から得られた結果を集約するネットワーク)、sequence-to-sequenceニューラルネットワーク(たとえば、1文に含まれる単語、1本の動画に含まれるフレームなど、順次データを入力として取り、結果シーケンスを出力として生成するネットワーク)など、任意の種類のニューラルネットワークを含み得る。モデル形態またはモデル構造は、様々なノード間の接続性、およびノードの層への編成を指定してもよい。たとえば、最初の層(たとえば、入力層)にあるノードは、データを入力データ732またはアプリケーションデータ714として受信してもよい。このようなデータは、たとえば複数のフレームを含む動画像の画像解析に訓練済みモデルが用いられる場合、たとえばノード当たり1つ以上の画素を含み得る。後続の中間層は、モデル形態またはモデル構造で指定された接続性に従って、前の層のノードの出力を入力として受信してもよい。また、これらの層は、隠れ層と
も呼ばれる。最後の層(たとえば、出力層)は、機械学習アプリケーションの出力を生成する。具体的な訓練済みのモデルによっては、この出力は、たとえば、動きスコア、画像についてのラベルのセット、画像のその他の画像(たとえば、画像の特徴ベクトル)との比較を可能にする画像の表示、入力文に応答する出力文、入力データの1つ以上のカテゴリなどであってもよい。また、いくつかの実施態様では、モデル形態またはモデル構造は、各層におけるノードの数および/または種類を指定する。
【0130】
それぞれ異なる実施態様では、訓練済みモデル734は、モデル構造またはモデル形態に従って複数の層に配置された複数のノードを含んでもよい。いくつかの実施態様では、ノードは、たとえば、1単位の入力を処理して1単位の出力を生成するように構成された、メモリを有さない計算ノードであってもよい。ノードが行う計算は、たとえば、複数のノード入力の各々を重みで乗算するステップと、重み付き和を取得するステップと、バイアス値または切片値を用いて重み付き和を調整してノード出力を生成するステップとを含んでもよい。また、いくつかの実施態様では、ノードが行う計算は、調整された重み付き和にステップ/活性化関数を適用するステップを含んでもよい。いくつかの実施態様では、ステップ/活性化関数は、非線形関数であってもよい。様々な実施態様では、このような計算は、行列乗算などの演算を含んでもよい。いくつかの実施態様では、たとえば、マルチコアプロセッサに含まれる複数のプロセッサコアを使用したり、GPUまたは専門ニューロン回路の個々の処理部を使用したりして、複数のノードによる計算を並列して行ってもよい。いくつかの実施態様では、ノードは、メモリを含んでもよく、たとえば、1つ以上前の入力を格納して、後続の入力を処理する際に利用できてもよい。たとえば、メモリを有するノードは、LSTM(Long Short-Term Memory)ノードを含んでもよい。LSTMノードは、メモリを用いて、ノードがFSM(Finite
State Machine)のように動作することを可能にする「状態」を維持してもよい。このようなノードを有するモデルは、たとえば、1文または1段落に含まれる複数の単語、1本の動画に含まれる複数のフレーム、会話またはその他の音声など、順次データを処理する際に役立つであろう。
【0131】
いくつかの実施態様では、訓練済みモデル734は、個々のノードついて埋め込みまたは重みを含んでもよい。たとえば、モデルは、モデル形態またはモデル構造によって指定されるように複数の層に編成された複数のノードとして初期化されてもよい。初期化時、モデル形態に従って接続されたノードのペア、たとえば、ニューラルネットワークの連続した層に含まれる対のノード間の接続に、重みを適用してもよい。たとえば、それぞれの重みは、ランダムに割り当てられたり、デフォルト値に初期化されたりしてもよい。次に、モデルは、たとえばデータ732を用いて訓練されて、結果を生成してもよい。
【0132】
たとえば、訓練するステップは、教師あり学習手法を適用するステップを含んでもよい。教師あり学習では、訓練データは、複数の入力(たとえば、画像のセット)と、入力ごとに対応する予想出力(たとえば、画像ごとに1つ以上のラベル)とを含み得る。たとえば、同様の入力が与えられた場合にモデルが予想出力を生成する確率を上げるよう、モデルの出力を予想出力と比較することに基づいて重みの値が自動的に調整される。
【0133】
いくつかの実施態様では、訓練するステップは、教師なし学習手法を適用するステップを含んでもよい。教師なし学習では、入力データのみが与えられ、モデルは、データを区別する、たとえば、入力データを複数の群にクラスタリングするように訓練されてもよい。各群は、なんらかの形で類似する入力データを含んでいる。たとえば、モデルは、動画像にスコアを割り当てるように訓練されてもよい。
【0134】
様々な実施態様では、訓練済みモデルは、モデル構造に対応する重みのセットまたは埋め込みのセットを含む。データ732が除外されている実施態様では、機械学習アプリケ
ーション730は、たとえば、機械学習アプリケーション730の開発者、サードパーティなどによる事前の訓練に基づいた訓練済みモデル734を含んでもよい。いくつかの実施態様では、訓練済みモデル734は、たとえば重みを提供するサーバからダウンロードされた、固定の重みセットを含んでもよい。
【0135】
また、機械学習アプリケーション730は、推論エンジン736を含む。推論エンジン736は、アプリケーションデータ714(たとえば、動画像)など、データに訓練済みモデル734を適用して、推論を提供するように構成される。いくつかの実施態様では、推論エンジン736は、プロセッサ702によって実行されるソフトウェアコードを含んでもよい。いくつかの実施態様では、推論エンジン736は、プロセッサ702が訓練済みモデルを適用することを可能にする(たとえば、プログラマブルプロセッサ、FPGA(Field Programmable Gate Array)などの)回路構成を指定してもよい。いくつかの実施態様では、推論エンジン736は、ソフトウェア命令、ハードウェア命令、または組合せを含んでもよい。いくつかの実施態様では、推論エンジン736は、オペレーティングシステム708および/またはその他のアプリケーション712が推論エンジン736を呼び出して、たとえば、訓練済みモデル734をアプリケーションデータ714に適用して推論を生成するために用いることができるAPI(Application Programming Interface)を提供してもよい。
【0136】
機械学習アプリケーション730によって、いくつかの技術的利点がもたらされるであろう。たとえば、教師なし学習に基づいて訓練済みのモデル734が生成される場合、推論エンジン736によって訓練済みのモデル734を適用して、入力データ、たとえば、アプリケーションデータ714からナレッジ表現(たとえば、数値表現)を生成することができる。たとえば、画像解析用に訓練済みのモデルが入力画像(たとえば、10MB)よりもデータサイズ(たとえば、1KB)が小さい画像の表示を生成してもよい。いくつかの実施態様では、出力(たとえば、画像のラベル、分類、文による記述など)を生成するための処理コスト(たとえば、計算コスト、メモリ使用量など)減らすのにこのような表現が役立つ場合がある。いくつかの実施態様では、推論エンジン736の出力から出力を生成する異なる機械学習アプリケーションへの入力としてこのような表現が提供されてもよい。いくつかの実施態様では、機械学習アプリケーション730が生成したナレッジ表現は、たとえばネットワーク上でさらなる処理を実行する異なるデバイスに提供されてもよい。このような実施態様では、画像ではなくナレッジ表現を提供することにより、技術的利点がもたらされるであろう、たとえば、少ないコストでより速いデータ送信を可能にする。別の例では、文書のクラスタリングの訓練済みのモデルが入力文書から文書クラスタリングを生成してもよい。文書クラスタリングは、元の文書にアクセスする必要のないさらなる処理(たとえば、文書がトピックに関するかどうかを判断する、文書の分類カテゴリを判断するなど)に適すると思われるので、計算コストが節約できる。
【0137】
いくつかの実施態様では、機械学習アプリケーション730をオフラインで実装してもよい。これらの実施態様では、訓練済みモデル734を第1段階で生成し、機械学習アプリケーション730の一部として提供してもよい。いくつかの実施態様では、機械学習アプリケーション730をオンラインで実装してもよい。たとえば、このような実施態様では、機械学習アプリケーション730(たとえば、オペレーティングシステム708、その他のアプリケーション712のうちの1つ以上のアプリケーション)を呼び出すアプリケーションが、機械学習アプリケーション730が生成した推論を利用、たとえば、推論をユーザに提供してもよく、システムログ(たとえば、ユーザによって許可されている場合、推論に基づいてユーザがとる行動;または、さらに処理を行うための入力として利用される場合、当該さらに行う処理の結果)を生成してもよい。システムログは、たとえば、1時間ごと、1ヶ月ごと、四半期ごとなど、定期的に生成されてもよく、ユーザの許可
がある場合、訓練済みモデル734を更新する、たとえば、訓練済みモデル734用の埋め込みを更新するために用いられてもよい。
【0138】
いくつかの実施態様では、機械学習アプリケーション730が実行されるデバイス700の特定の構成に適応できるように機械学習アプリケーション730を実装してもよい。たとえば、機械学習アプリケーション730は、使用可能な計算リソース、たとえば、プロセッサ702を利用する計算グラフを求めてもよい。たとえば、機械学習アプリケーション730が複数のデバイス上の分散アプリケーションとして実装された場合、機械学習アプリケーション730は、個々のデバイス上で計算を最適化する方法で行われる計算を求めてもよい。別の例では、機械学習アプリケーション730は、プロセッサ702が特定の数のGPUコア(たとえば、1000個)を有するGPUを含んでおり、(たとえば、1000個の個々のプロセスまたはスレッドとして)それに応じて推論エンジンを実装していると判断してもよい。
【0139】
いくつかの実施態様では、機械学習アプリケーション730は、訓練済みモデルの一式を実装してもよい。たとえば、訓練済みモデル734は、同じ入力データに各々が適用可能な複数の訓練済みモデルを含んでもよい。これらの実施態様では、機械学習アプリケーション730は、たとえば、使用可能な計算リソース、前の推論を用いた場合の成功率などに基づいて特定の訓練済みモデルを選んでもよい。いくつかの実施態様では、機械学習アプリケーション730は、複数の訓練済みモデルが適用されるよう、推論エンジン736を実行してもよい。これらの実施態様では、機械学習アプリケーション730は、たとえば、各訓練済みモデルを適用することによって得られる出力に得点を付ける多数決を用いて、または1つ以上の特定の出力を選ぶことによって、個々のモデルを適用することから得られる出力を組み合わせてもよい。さらには、これらの実施態様では、機械学習アプリケーションは、個々の訓練済みモデルを適用するための時間閾値(たとえば、0.5ミリ秒)を適用して、時間閾値内で使用可能な個々の出力のみを利用してもよい。時間閾値内に受信しなかった出力は、使用しなくてもよく、たとえば破棄してもよい。たとえば、このような手法は、たとえばオペレーティングシステム708または1つ以上のアプリケーション712によって機械学習アプリケーションを呼び出している間に指定された時間制限が存在する場合に適しているであろう。
【0140】
異なる実施態様では、機械学習アプリケーション730は、異なる種類の出力を生成できる。たとえば、機械学習アプリケーション730は、表現もしくはクラスタ(たとえば、入力データの数値表現)、(たとえば、画像、文書などを含む入力データの)ラベル、フレーズまたは文(たとえば、入力文に対する応答として使用するのに適した画像または動画の記述など)、(たとえば、入力に応答して機械学習アプリケーションが生成した)画像、音声または動画(たとえば、入力動画に応答して、機械学習アプリケーション730は、特定の効果が適用された出力動画を生成してもよく、たとえば、コミック本または特定のアーティストからの訓練データを用いて訓練済みのモデル734が訓練される場合などでは、コミック本または特定のアーティストのスタイルで描画された出力動画を生成してもよい)を提供できる。いくつかの実施態様では、機械学習アプリケーション730は、呼び出し中のアプリケーション、たとえば、オペレーティングシステム708または1つ以上のアプリケーション712によって指定されたフォーマットに基づいて出力を生成してもよい。いくつかの実施態様では、呼び出し中のアプリケーションは、別の機械学習アプリケーションであってもよい。たとえば、このような構成は、呼び出し中の機械学習アプリケーションが機械学習アプリケーション730からの出力を用いて訓練される、または、機械学習アプリケーション730が呼び出し中の機械学習アプリケーションからの出力を用いて訓練される敵対的生成ネットワークにおいて用いられてもよい。
【0141】
メモリ704にあるソフトウェアを、代わりにその他の適した記憶位置またはコンピュ
ータ読み取り可能な媒体上に格納することができる。これに加えて、メモリ704(および/もしくはその他の接続された記憶装置(複数可))は、本明細書において説明した特徴において用いられる1つ以上のメッセージ、1つ以上の分類法、電子百科事典、辞書、類語辞典、ナレッジベース、メッセージデータ、文法、ユーザの好み、ならびに/またはその他の命令およびデータを格納することができる。メモリ704およびその他の種類のストレージ(磁気ディスク、光ディスク、磁気テープ、もしくはその他の有形の媒体)は、「ストレージ」もしくは「記憶装置」とみなされ得る。
【0142】
I/Oインターフェース706は、サーバ装置700をその他のシステムおよびデバイスとインターフェース接続することを可能にする機能を提供できる。インターフェース接続されたデバイスを、デバイス700の一部として含めることができる。または、インターフェース接続されたデバイスは、別個であり得、デバイス700と通信を行うことができる。たとえば、ネットワーク通信装置、記憶装置(たとえば、メモリおよび/またはデータベース106)、ならびに入出力装置は、I/Oインターフェース706を介して通信を行うことができる。いくつかの実施態様では、I/Oインターフェースは、入力装置(キーボード、ポインティングデバイス、タッチスクリーン、マイクロフォン、カメラ、スキャナ、センサーなど)および/または出力装置(表示装置、スピーカ装置、プリンタ、モーターなど)など、インターフェース装置に接続することができる。
【0143】
I/Oインターフェース706に接続できるインターフェース接続されたデバイスのいくつかの例として、画像、動画など、コンテンツを表示するために用いることができる1つ以上の表示装置720、および/または本明細書において説明した出力アプリケーションのユーザインターフェースなどを挙げることができる。表示装置720は、ローカル接続(たとえば、表示バス)を介して、および/またはネットワーク接続された接続を介してデバイス700に接続することができ、任意の適切な表示装置であり得る。表示装置720は、LCD画面、LED画面、もしくはプラズマディスプレイ画面、CRT、テレビ、モニタ、タッチスクリーン、3Dディスプレイ画面、またはその他の表示装置デバイスなど、任意の適切な表示装置を含み得る。たとえば、表示装置720は、モバイル機器上に提供されるフラットディスプレイ画面、ゴーグルまたはヘッドセット装置において備えられる複数のディスプレイ画面、または、コンピュータデバイスのモニタ画面であり得る。
【0144】
I/Oインターフェース706は、その他の入力装置および出力装置にインターフェース接続することができる。いくつかの例として、画像を撮影できる1つ以上のカメラなどが挙げられる。いくつかの実施態様は、(たとえば、撮影画像の一部、音声コマンドなどとして)音を記録するためのマイクロフォン、音を出力するためのオーディオスピーカ装置、またはその他の入力装置および出力装置を提供することができる。
【0145】
カメラ716は、複数のフレームを含む動画像を撮影できる任意の種類のカメラであってもよい。いくつかの実施態様では、カメラ716は、たとえば、正面レンズ対背面レンズ、異なるズームレベル、撮影画像の画像解像度など、異なる能力を有する複数のレンズを含んでもよい。いくつかの実施態様では、デバイス700は、深度センサー、加速度計、位置センサー(たとえば、GPS)、ジャイロスコープなど、1つ以上のセンサーを含んでもよい。いくつかの実施態様では、これらの1つ以上のセンサーをカメラとともに操作して、カメラを用いて撮影した動画像の異なるフレームに対応するセンサー測定値を取得してもよい。
【0146】
説明を容易にするために、図7は、プロセッサ702、メモリ704、I/Oインターフェース706、カメラ716、ならびにソフトウェアブロック708、712、および730の各々について1つのブロックを示す図である。これらのブロックは、1つ以上の
プロセッサもしくは処理回路、1つ以上のオペレーティングシステム、1つ以上のメモリ、1つ以上のI/Oインターフェース、1つ以上のアプリケーション、および/または1つ以上のソフトウェアモジュールを表してもよい。その他の実施態様では、デバイス700は、図示した構成要素のすべてを有さなくてもよく、および/または、本明細書において示した要素の代わりまたはそれらに加えて、その他の種類の要素を含むその他の要素を有してもよい。いくつかの構成要素について、本明細書のいくつかの実施態様に記載したブロックおよび動作を行うと説明したが、環境100、デバイス700、同様のシステムの任意の適切な構成要素もしくは構成要素の組合せ、またはこのようなシステムに対応付けられた任意の適切な1つのプロセッサまたは複数プロセッサが、記載のブロックおよび動作を実行してもよい。
【0147】
本明細書において説明する方法を、コンピュータ上で実行できるコンピュータプログラム命令またはコードによって実装することができる。たとえば、コードは、1つ以上のデジタルプロセッサ(たとえば、マイクロプロセッサまたはその他の処理回路)によって実装することができ、半導体メモリもしくは固体メモリ、磁気テープ、リムーバブルコンピュータディスク、RAM(Random Access Memory)、ROM(Read-Only Memory)、フラッシュメモリ、剛性磁気ディスク、光ディスク、固体メモリドライブなどを含む、磁気記憶媒体、光記憶媒体、電磁記憶媒体、もしくは半導体記憶媒体など、非一時的なコンピュータ読み取り可能な媒体(たとえば、記憶媒体)を含むコンピュータプログラムプロダクト上に格納することができる。また、プログラム命令は、たとえば、サーバ(たとえば、分散システムおよび/またはクラウドコンピューティングシステム)から配信されるSaaS(Software as a Service)形式の電気信号として含めることができ、電気信号として提供することができる。あるいは、1つ以上の方法をハードウェア(論理ゲートなど)で実現したり、ハードウェアとソフトウェアとの組合せで実現したりすることができる。例示的なハードウェアとして、プログラマブルプロセッサ(たとえば、FPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device))、汎用プロセッサ、グラフィックスプロセッサ、ASIC(Application Specific Integrated Circuit)などがあり得る。1つ以上の方法を、システム上で動作するアプリケーションのコンポーネントとしてまたはその一部として実行することができたり、その他のアプリケーションおよびオペレーティングシステムと連動して動作するアプリケーションまたはソフトウェアとして実行したりすることができる。
【0148】
特定の実施態様の説明について記載したが、これらの特定の実施態様は、例示に過ぎず、限定ではない。例示した概念をその他の例および実施態様に適用してもよい。
【0149】
本明細書に記載の特定の実施態様がユーザについての個人情報(たとえば、ユーザデータ、ユーザのソーシャルネットワークについての情報、ユーザの位置およびユーザが当該位置にいるときの時刻、ユーザの生体情報、ユーザの活動およびデモグラフィック情報)を収集または使用し得る状況では、ユーザには、情報を収集してもよいかどうか、個人情報を保存してもよいかどうか、個人情報を利用してもよいかどうか、ならびにユーザについての情報がどのように収集、格納、および利用されるかについて規制できる1つ以上の機会が与えられる。つまり、本明細書に記載のシステムならびに方法は、具体的には、関連のあるユーザからユーザ個人情報を収集、格納、および/または利用してもよいという明確な許可を受け取った際にそのようにする。
【0150】
たとえば、プログラムもしくは特徴がユーザについてのユーザ情報または当該プログラムもしくは当該特徴に関連性のあるその他のユーザについてのユーザ情報を収集するかどうかについて、その特定のユーザが規制することができる。個人情報が収集される各ユー
ザには、そのユーザに関連性のある情報収集を規制できるオプション、情報を収集してもよいかどうか、および情報のどの部分を収集するかについての許可または承認が与えられるオプションなど、1つ以上のオプションが提示される。たとえば、ユーザには、1つ以上のこのような規制オプション通信ネットワーク上で与えることができる。これに加えて、個人を特定できる情報が取り除かれるよう、特定のデータを、格納または利用される前に1つ以上の方法で扱ってもよい。一例として、個人を特定できる情報が特定できないようにユーザの身元を扱ってもよい。別の例として、ユーザの特定の位置が特定できないよう、ユーザデバイスの地理的位置をより大きな地域に一般化してもよい。
【0151】
なお、当業者に分かるように、本開示に記載の機能ブロック、動作、特徴、方法、デバイス、およびシステムを、システム、デバイス、および機能ブロックの異なる組合せに統合したり、分割したりしてもよい。任意の適切なプログラミング言語およびプログラミング技法を用いて特定の実施態様のルーチンを実装してもよい。手続き型またはオブジェクト指向など、異なるプログラミング技法を用いてもよい。このルーチンを1つの処理装置または複数のプロセッサ上で実行してもよい。ステップ、動作、または計算は、特定の順序で提示されているが、この順序は、異なる特定の実施態様において変更されてもよい。いくつかの実施態様では、本明細書において一続きで示した複数のステップまたは複数の動作が、同時に実行されもよい。
図1
図2
図3
図4
図5
図6
図7