(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-27
(45)【発行日】2024-12-05
(54)【発明の名称】静止画像からビデオを生成するための補間の使用
(51)【国際特許分類】
H04N 5/92 20060101AFI20241128BHJP
H04N 21/44 20110101ALI20241128BHJP
【FI】
H04N5/92 010
H04N21/44
(21)【出願番号】P 2023528278
(86)(22)【出願日】2021-12-30
(86)【国際出願番号】 US2021065764
(87)【国際公開番号】W WO2022245399
(87)【国際公開日】2022-11-24
【審査請求日】2023-05-11
(32)【優先日】2021-05-18
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】コントカネン,ヤンネ
(72)【発明者】
【氏名】アスピナル,ジェイミー
(72)【発明者】
【氏名】ケーザー,ドミニク
(72)【発明者】
【氏名】サルマ,ナビン
(72)【発明者】
【氏名】カーレス,ブライアン
(72)【発明者】
【氏名】サレシン,デイビッド
【審査官】大西 宏
(56)【参考文献】
【文献】特開2003-141559(JP,A)
【文献】特開2021-010099(JP,A)
【文献】米国特許出願公開第2012/0311623(US,A1)
【文献】米国特許出願公開第2018/0315174(US,A1)
【文献】米国特許出願公開第2020/0356827(US,A1)
【文献】国際公開第2021/025717(WO,A1)
【文献】Xian-Shen Hua, Hong-Jiang Zhang,Photo2Video-A System for Automatically Converting Photographic Series Into Video,IEEE Transactions on Circuits and Systems for Video Technology,Volume: 16 Issue: 7,米国,IEEE,2006年07月24日,803 - 819,https://ieeexplore.ieee.org/document/1661657
(58)【調査した分野】(Int.Cl.,DB名)
H04N 5/91 - 5/956
H04N 21/00 -21/858
(57)【特許請求の範囲】
【請求項1】
コンピュータによって実装される方法であって、
ユーザアカウントに関連付けられた画像コレクションから、候補画像対を選択することを含み、各候補画像対は、前記ユーザアカウントからの第1の静止画像および第2の静止画像を含み、前記方法はさらに、
フィルタを適用して、前記候補画像対から特定の画像対を選択すること
を含み、前記フィルタは、特定の条件を満たす画像対を前記候補画像対から除外し、前記方法はさらに、
画像補間器を用いて、前記特定の画像対に基づいて1つ以上の中間画像を生成することと、
シーケンスに配置された3つ以上のフレームを含むビデオを生成することとを含み、前記シーケンスの第1のフレームは、前記第1の静止画像であり、前記シーケンスの最後のフレームは、前記第2の静止画像であり、前記1つ以上の中間画像の各画像は、前記第1のフレームと前記最後のフレームとの間の前記シーケンスの対応する中間フレームである、方法。
【請求項2】
コンピュータによって実装される方法であって、
ユーザアカウントに関連付けられた画像コレクションから、候補画像対を選択することを含み、各候補画像対は、前記ユーザアカウントからの第1の静止画像および第2の静止画像を含み、前記方法はさらに、
フィルタを適用して、前記候補画像対から特定の画像対を選択することを含み、前記フィルタは、時間フィルタを含み、前記候補画像対の前記第1の静止画像と前記候補画像対の前記第2の静止画像とに関連付けられたそれぞれのタイムスタンプの間の時間差が時間閾値よりも大きい場合、前記時間フィルタは、前記候補画像対のうちの1つ以上を除外
し、前記方法はさらに、
画像補間器を用いて、前記特定の画像対に基づいて1つ以上の中間画像を生成することと、
シーケンスに配置された3つ以上のフレームを含むビデオを生成することとを含み、前記シーケンスの第1のフレームは、前記第1の静止画像であり、前記シーケンスの最後のフレームは、前記第2の静止画像であり、前記1つ以上の中間画像の各画像は、前記第1のフレームと前記最後のフレームとの間の前記シーケンスの対応する中間フレームである、方法。
【請求項3】
前記1つ以上の中間画像の各々は、前記第1の静止画像のタイムスタンプと前記第2の静止画像のタイムスタンプとの間の値を有する各タイムスタンプに関連付けられ、
前記シーケンス内の各中間画像の位置は、前記各タイムスタンプに基づいている、請求項2に記載の方法。
【請求項4】
前記時間閾値は、2秒である、請求項2または3に記載の方法。
【請求項5】
コンピュータによって実装される方法であって、
ユーザアカウントに関連付けられた画像コレクションから、候補画像対を選択することを含み、各候補画像対は、前記ユーザアカウントからの第1の静止画像および第2の静止画像を含み、前記方法はさらに、
フィルタを適用して、前記候補画像対から特定の画像対を選択することを含み、前記フィルタは、動きフィルタを含み、前記動きフィルタは、前記第1の静止画像と前記第2の静止画像との間の動きを推定することと、前記第1の静止画像と前記第2の静止画像との間の前記動きが最小動き閾値未満であると判断することとによって、前記候補画像対のうちの1つ以上を除外
し、前記方法はさらに、
画像補間器を用いて、前記特定の画像対に基づいて1つ以上の中間画像を生成することと、
シーケンスに配置された3つ以上のフレームを含むビデオを生成することとを含み、前記シーケンスの第1のフレームは、前記第1の静止画像であり、前記シーケンスの最後のフレームは、前記第2の静止画像であり、前記1つ以上の中間画像の各画像は、前記第1のフレームと前記最後のフレームとの間の前記シーケンスの対応する中間フレームである、方法。
【請求項6】
前記フィルタは、前記第1の静止画像と前記第2の静止画像との間の前記動きが最大動き閾値を超えると判断することによって、前記候補画像対のうちの1つ以上をさらに除外する、請求項5に記載の方法。
【請求項7】
コンピュータによって実装される方法であって、
ユーザアカウントに関連付けられた画像コレクションから、候補画像対を選択することを含み、各候補画像対は、前記ユーザアカウントからの第1の静止画像および第2の静止画像を含み、前記方法はさらに、
フィルタを適用して、前記候補画像対から特定の画像対を選択することを含み、前記フィルタは、フィルタ機械学習モジュールを含み、前記フィルタ機械学習モジュールは、前記候補画像対の各々において前記第1の静止画像と前記第2の静止画像とを表す特徴ベクトルを生成することと、特徴ベクトルのそれぞれの間の距離が閾値ベクトル距離よりも大きい場合に、前記特徴ベクトルのそれぞれに対応する前記候補画像対のうちの1つ以上を除外することとによって、前記候補画像対のうちの前記1つ以上を除外し、前記特徴ベクトルは、数学的表現であり、類似画像の数学的表現は、非類似画像の前記数学的表現よりもベクトル空間において近
く、前記方法はさらに、
画像補間器を用いて、前記特定の画像対に基づいて1つ以上の中間画像を生成することと、
シーケンスに配置された3つ以上のフレームを含むビデオを生成することとを含み、前記シーケンスの第1のフレームは、前記第1の静止画像であり、前記シーケンスの最後のフレームは、前記第2の静止画像であり、前記1つ以上の中間画像の各画像は、前記第1のフレームと前記最後のフレームとの間の前記シーケンスの対応する中間フレームである、方法。
【請求項8】
前記特徴ベクトルは、第1の特徴ベクトルであり、前記フィルタ機械学習モジュールは、以下の動作を行うようにさらに動作可能であり、
前記動作は、
前記1つ以上の中間画像のうちの中間画像を入力として受信することと、
前記中間画像に対応する1つ以上の第2の特徴ベクトルを生成することと、
前記中間画像の前記特徴ベクトルのそれぞれから対応する候補画像対の前記特徴ベクトルのそれぞれまでの距離が前記閾値ベクトル距離よりも大きい場合に、前記特徴ベクトルのそれぞれに対応する前記1つ以上の中間画像を除外することとを含む、請求項7に記載の方法。
【請求項9】
前記画像補間器は、補間機械学習モデルを含み、前記補間機械学習モデルは、前記第1の静止画像および前記第2の静止画像を入力として受信し、前記1つ以上の中間画像を生成する、請求項1から8のいずれか1項に記載の方法。
【請求項10】
コンピュータによって実装される方法であって、
ユーザアカウントに関連付けられた画像コレクションから、候補画像対を選択することを含み、各候補画像対は、前記ユーザアカウントからの第1の静止画像および第2の静止画像を含み、前記方法はさらに、
フィルタを適用して、前記候補画像対から特定の画像対を選択することと、
画像補間器を用いて、前記特定の画像対に基づいて1つ以上の中間画像を生成することとを含み、前記特定の画像対に基づいて前記1つ以上の中間画像を生成することは、
複数の候補中間画像を生成することと、
各候補中間画像を評価することと
によって行われ、
各候補中間画像を評価することは、
前記第1の静止画像を第1のフレームとして含み、前記候補中間画像を第2のフレームとして含み、前記第2の静止画像を第3のフレームとして含む候補ビデオを生成することと、
前記候補ビデオがフレーム補間失敗を含まない場合に、前記候補中間画像を前記1つ以上の中間画像のうちの1つとして選択することとによって行われ、
前記方法はさらに、
シーケンスに配置された3つ以上のフレームを含むビデオを生成することを含み、前記シーケンスの第1のフレームは、前記第1の静止画像であり、前記シーケンスの最後のフレームは、前記第2の静止画像であり、前記1つ以上の中間画像の各画像は、前記第1のフレームと前記最後のフレームとの間の前記シーケンスの対応する中間フレームである、方法。
【請求項11】
入力画像が生成画像であるか否かを判断するように訓練された識別器機械学習モデルを用いて、前記フレーム補間失敗を判断することをさらに含み、前記候補中間画像が前記生成画像から区別することができないと前記識別器機械学習モデルが判断する場合に、前記候補中間画像は、選択される、請求項10に記載の方法。
【請求項12】
前記フィルタが前記1つ以上の中間画像を除外する場合にフレーム補間失敗が発生すると判断することと、
前記フレーム補間失敗の発生に応答して、追加の1つ以上の中間画像を生成することとをさらに含む、請求項
7または8に記載の方法。
【請求項13】
コンピュータによって実装される方法であって、
ユーザアカウントに関連付けられた画像コレクションから、候補画像対を選択することを含み、各候補画像対は、前記ユーザアカウントからの第1の静止画像および第2の静止画像を含み、前記方法はさらに、
フィルタを適用して、前記候補画像対から特定の画像対を選択することと、
画像補間器を用いて、前記特定の画像対に基づいて1つ以上の中間画像を生成することと、
シーケンスに配置された3つ以上のフレームを含むビデオを生成することとを含み、前記シーケンスの第1のフレームは、前記第1の静止画像であり、前記シーケンスの最後のフレームは、前記第2の静止画像であり、前記1つ以上の中間画像の各画像は、前記第1のフレームと前記最後のフレームとの間の前記シーケンスの対応する中間フレームであり、
前記ビデオを生成することは、深度機械学習モデルを用いて、前記第1の静止画像の深度の予測に基づいて、前記第1の静止画像内のシーンの3次元表現を生成することを含み、前記深度機械学習モデルは、前記第1の静止画像を入力として受信する分類器であり、前記ビデオは、前記シーンの前記3次元表現に基づいて生成されたカメラ効果を含む
、方法。
【請求項14】
前記カメラ効果は、ズーム、パン、または回転のうち、少なくとも1つを含む、請求項13に記載の方法。
【請求項15】
1つ以上のコンピュータによって実行されると、前記1つ以上のコンピュータに請求項1から14のいずれか1項に記載の方法を実行させる、コンピュータプログラム。
【請求項16】
1つ以上のプロセッサと、
前記1つ以上のプロセッサに接続され、請求項15に記載のコンピュータプログラムを記憶するメモリとを備える、コンピューティング装置。
【請求項17】
システムであって、
1つ以上のプロセッサと、メモリとを備え、前記メモリは、前記1つ以上のプロセッサによって実行されると、前記システムに請求項1から14のいずれか1項に記載の動作を実行させるコンピュータ可読命令を記憶する、システム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の参照
本願は、2021年5月18日に出願され、「静止画像からビデオを生成するための補間の使用」と題された米国特許仮出願第63/190234号の優先権を主張し、当該出願の全体が本明細書に組み込まれる。
【背景技術】
【0002】
背景
スマートフォンまたは他のデジタルカメラなどの装置のユーザは、多数の写真およびビデオを撮影して、画像ライブラリに記憶する。ユーザは、このようなライブラリを利用して自分の写真およびビデオを閲覧することによって、誕生日、結婚式、休暇、旅行などの様々なイベントを思い出す。ユーザは、長期間にわたって撮影された数千枚の画像を含む大きな画像ライブラリを有することができる。
【0003】
本明細書に記載された背景技術の説明は、本開示の文脈を概略的に示すことを目的としている。この背景技術の部分に記載されている範囲内で、現在名前を挙げている発明者の研究は、出願時に従来技術としてみなされない記載と同様に、本開示に対する従来技術として明示的にまたは暗示的に認められない。
【発明の概要】
【課題を解決するための手段】
【0004】
概要
方法は、ユーザアカウントに関連付けられた画像コレクションから、候補画像対を選択することを含み、各対は、ユーザアカウントからの第1の静止画像および第2の静止画像を含む。この方法は、フィルタを適用して、候補画像対から特定の画像対を選択することをさらに含む。この方法は、画像補間器を用いて、特定の画像対に基づいて1つ以上の中間画像を生成することをさらに含む。この方法は、画像補間器を用いて、特定の画像対に基づいて1つ以上の中間画像を生成することと、シーケンスに配置された3つ以上のフレームを含むビデオを生成することとを含み、シーケンスの第1のフレームは、第1の静止画像であり、シーケンスの最後のフレームは、第2の静止画像であり、1つ以上の中間画像の各画像は、第1のフレームと最後のフレームとの間のシーケンスの対応する中間フレームである。
【0005】
いくつかの実施形態において、フィルタは、時間フィルタを含み、対の第1の静止画像と対の第2の静止画像とに関連付けられたそれぞれのタイムスタンプの間の時間差が時間閾値よりも大きい場合、この時間フィルタは、候補画像対のうちの1つ以上を除外する。いくつかの実施形態において、1つ以上の中間画像の各々は、第1の静止画像のタイムスタンプと第2の静止画像のタイムスタンプとの間の値を有する各タイムスタンプに関連付けられ、シーケンス内の各中間画像の位置は、各タイムスタンプに基づいている。いくつかの実施形態において、時間閾値は、2秒である。いくつかの実施形態において、フィルタは、動きフィルタを含み、動きフィルタは、第1の静止画像と第2の静止画像との間の動きを推定することと、第1の静止画像と第2の静止画像との間の動きが最小動き閾値未満であると判断することとによって、候補画像対のうちの1つ以上を除外する。いくつかの実施形態において、フィルタは、第1の静止画像と第2の静止画像との間の動きが最大動き閾値を超えると判断することによって、候補画像対のうちの1つ以上をさらに除外する。いくつかの実施形態において、フィルタは、フィルタ機械学習モジュールを含み、このフィルタ機械学習モジュールは、候補画像対の各々において第1の静止画像と第2の静止画像とを表す特徴ベクトルを生成することと、特徴ベクトルのそれぞれの間の距離が閾値ベクトル距離よりも大きい場合に、特徴ベクトルのそれぞれに対応する候補画像対のうちの1つ以上を除外することとによって、前記候補画像対のうちの前記1つ以上を除外し、特徴ベクトルは、数学的表現であり、類似画像の数学的表現は、非類似画像の数学的表現よりもベクトル空間において近い。いくつかの実施形態において、特徴ベクトルは、第1の特徴ベクトルであり、フィルタ機械学習モジュールは、以下の動作を行うようにさらに動作可能であり、動作は、1つ以上の中間画像のうちの中間画像を入力として受信することと、中間画像に対応する1つ以上の第2の特徴ベクトルを生成することと、中間画像の特徴ベクトルのそれぞれから対応する候補画像対の特徴ベクトルのそれぞれまでの距離が閾値ベクトル距離よりも大きい場合に、特徴ベクトルのそれぞれに対応する1つ以上の中間画像を除外することとを含む。いくつかの実施形態において、画像補間器は、補間機械学習モデルを含み、この補間機械学習モデルは、第1の静止画像および第2の静止画像を入力として受信し、1つ以上の中間画像を生成する。いくつかの実施形態において、特定の画像対に基づいて1つ以上の中間画像を生成することは、複数の候補中間画像を生成することと、各候補中間画像を評価することとを含み、各候補中間画像を評価することは、第1の静止画像を第1のフレームとして含み、候補中間画像を第2のフレームとして含み、第2の静止画像を第3のフレームとして含む候補ビデオを生成することと、候補ビデオがフレーム補間失敗を含まない場合に、候補中間画像を1つ以上の中間画像のうちの1つとして選択することとによって行われる。いくつかの実施形態において、方法は、入力画像が生成画像であるか否かを判断するように訓練された識別器機械学習モデルを用いて、フレーム補間失敗を判断することをさらに含み、候補中間画像が生成画像から区別することができないと識別器機械学習モデルが判断する場合に、候補中間画像は、選択される。いくつかの実施形態において、方法は、フィルタが1つ以上の中間画像を除外する場合にフレーム補間失敗が発生すると判断することと、フレーム補間失敗の発生に応答して、追加の1つ以上の中間画像を生成することとをさらに含む。いくつかの実施形態において、ビデオを生成することは、深度機械学習モデルを用いて、第1の静止画像の深度予測に基づいて、第1の静止画像内のシーンの3次元表現を生成することを含み、深度機械学習モデルは、第1の静止画像を入力として受信する分類器であり、ビデオは、シーンの3次元表現に基づいて生成されたカメラ効果を含む。いくつかの実施形態において、カメラ効果は、ズーム(zooming)、パン(panning)、または回転(rotation)のうちの少なくとも1つを含む。
【0006】
本明細書は、有利には、一対の画像間の動きを合成し、新たに生成されたフレームを用いてギャップを埋めることによって、一対の画像からビデオを作成するための方法を記載する。本明細書は、フィルタを用いて候補画像対を除外し、特定の画像対のフレーム補間を実行ことによって中間画像を生成し、特定の画像対および中間画像からビデオを生成するためのメディアアプリケーションを記載する。本明細書は、必要とされた高い再現性およびより速い計算時間を有する一連のフィルタと必要とされた高い精度およびより遅い計算時間を有する一連のフィルタとの間のバランスを保つための方法を有利に記載する。
【図面の簡単な説明】
【0007】
【
図1】本明細書に記載されたいくつかの実施形態に従って、例示的なネットワーク環境を示すブロック図である。
【
図2】本明細書に記載されたいくつかの実施形態に従って、例示的なコンピューティング装置を示すブロック図である。
【
図3】本明細書に記載されたいくつかの実施形態に従って、フィルタリングモジュールおよび画像補間器を詳細に示すブロック図である。
【
図4】本明細書に記載されたいくつかの実施形態に従って、画像対に適用される異なるフィルタの例を示す図である。
【
図5】本明細書に記載されたいくつかの実施形態に従って、第1の画像と第2の画像との間に2つの中間画像を挿入するコンピュータ生成補間法の一例を示す図である。
【
図6】本明細書に記載されたいくつかの実施形態に従って、静止画像の3次元回転の例を示す図である。
【
図7A】本明細書に記載されたいくつかの実施形態に従って、一対の画像からビデオを生成するためのフローチャートを示す図である。
【
図7B】本明細書に記載されたいくつかの実施形態に従って、一対の画像からビデオを生成するためのフローチャートを示す図である。
【発明を実施するための形態】
【0008】
詳細な説明
例示的な環境100
図1は、例示的な環境100のブロック図を示す。いくつかの実施形態において、環境100は、全てがネットワーク105に接続された、メディアサーバ101、ユーザ装置115a、およびユーザ装置115nを含む。ユーザ125a、125nは、ユーザ装置115a、115nに各々関連付けられてもよい。いくつかの実施形態において、環境100は、
図1に示されていない他のサーバまたは装置を含んでもよく、またはメディアサーバ101を含まなくてもよい。
図1および他の図面において、参照番号の後の文字、例えば「115a」は、その特定の参照番号を有する要素への言及を表す。後ろに文字を持たない本文中の参照番号、例えば「115」は、その参照番号を有する要素の実施形態への一般的言及を表す。
【0009】
メディアサーバ101は、プロセッサと、メモリと、ネットワーク通信ハードウェアとを含んでもよい。いくつかの実施形態において、メディアサーバ101は、ハードウェアサーバである。メディアサーバ101は、信号線102を介してネットワーク105に通信可能に接続される。信号線102は、イーサネット(登録商標)、同軸ケーブル、光ファイバケーブルなどの有線接続、またはWi-Fi(登録商標)、ブルートゥース(登録商標)、もしくは他の無線技術などの無線接続であってもよい。いくつかの実施形態において、メディアサーバ101は、ネットワーク105を介して、1つ以上のユーザ装置115a、115nとの間でデータを送受信する。メディアサーバ101は、メディアアプリケーション103aおよびデータベース199を含んでもよい。
【0010】
メディアアプリケーション103aは、ユーザインターフェイスに、少なくとも2つの静止画像から動きを有するビデオを生成させるように動作可能な(1つ以上の訓練済み機械学習モデルを含む)コードおよびルーチンを含むことができる。いくつかの実施形態において、メディアアプリケーション103aは、中央処理装置(CPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、機械学習プロセッサ/コプロセッサ、任意の他の種類のプロセッサ、またはそれらの組み合わせを含むハードウェアを用いて実装されてもよい。いくつかの実施形態において、メディアアプリケーション103aは、ハードウェアおよびソフトウェアの組み合わせを用いて実装されてもよい。
【0011】
データベース199は、ユーザアカウントに関連付けられたメディアコレクション(例えば、静止画像、動画化GIFまたは動画などの動きを有する画像、ビデオなど)を記憶することができる。データベース199は、インデックス化され、ユーザ装置115のユーザ125のIDに関連付けられたメディアアイテムを記憶することができる。また、データベース199は、ユーザ125に関連するソーシャルネットワークデータ、ユーザ125のユーザ選好などを記憶することができる。
【0012】
ユーザ装置115は、メモリおよびハードウェアプロセッサを含むコンピューティング装置であってもよい。例えば、ユーザ装置115は、デスクトップコンピュータ、モバイル装置、タブレットコンピュータ、携帯電話、ウェアラブル装置、ヘッドマウントディスプレイ、モバイル電子メール装置、ポータブルゲームプレーヤ、ポータブル音楽プレーヤ、リーダ装置、またはネットワーク105にアクセスすることができる別の電子装置を含んでもよい。
【0013】
図示の実装形態において、ユーザ装置115aは、信号線108を介してネットワーク105に接続され、ユーザ装置115nは、信号線110を介してネットワーク105に接続される。メディアアプリケーション103は、メディアアプリケーション103bとしてユーザ装置115a上でまたはメディアアプリケーション103cとしてユーザ装置115n上で記憶されてもよい。信号線108および110は、イーサネット(登録商標)、同軸ケーブル、光ファイバケーブルなどの有線接続、またはWi-Fi(登録商標)、ブルートゥース(登録商標)、もしくは他の無線技術などの無線接続であってもよい。ユーザ装置115a、115nは、ユーザ125a、125nによって各々利用される。
図1のユーザ装置115a、115nは、例示として使用される。
図1は、2つのユーザ装置115aおよび115nを示すが、本開示は、1つ以上のユーザ装置115を含むシステムアーキテクチャに適用される。
【0014】
いくつかの実施形態において、ユーザアカウントは、画像コレクションを含む。例えば、ユーザは、自分のカメラ(例えば、スマートフォンまたは他のカメラ)から画像およびビデオを取得し、デジタル一眼レフ(DSLR)カメラから画像をアップロードし、他のユーザによって撮影され、共有されているメディアを画像コレクションに追加する。
【0015】
以下の例は、静止画像の対を用いて記述されるが、メディアアプリケーション103は、少なくとも2つの静止画像を用いてビデオを生成することができる。メディアアプリケーション103は、画像コレクションから候補画像対を選択する。各画像対は、ライブラリからの第1の静止画像および第2の静止画像を含むことができる。
【0016】
メディアアプリケーション103は、候補画像対から特定の画像対を選択するフィルタを適用する。例えば、フィルタは、重複物に近いものではない候補画像対、人工物を含まない候補対、品質の悪い候補対、多数の候補対、時系列的に近くない候補対、許容時間(例えば、画像を取得してから2秒以内、互いに0.1秒以上など)の範囲外の候補対、非類似である(閾値未満の類似度を有する)候補対、過度の動きを有する(閾値以上の動きを有する)候補対、双方向オプティカルフロー(optical flow)を有しない候補対、および/または(例えば、他の画像と異なるように、画像のうちの1つに視覚強化またはフィルタを適用した)視覚的に区別可能な候補対を除外することができる。例えば、メディアアプリケーション103は、第1の静止画像と第2の静止画像との間の動きの推定値が第1の動き閾値を超える(例えば、補間画像を介して描写される必要がある2つの静止画像の間に過度の動きがある)対、および/または第1の静止画像と第2の静止画像との間の動きの推定値が最小動き閾値未満である(例えば、2つの静止画像間の動きが少なすぎる)対を除外する。いくつかの実施形態において、画像が特定の種類の被写体(例えば、顔、ペット、人物など)を描写する場合、画像が品質閾値(例えば、ぼやけていない、十分に明るいこと)を満たす場合、画像が興味深い感情(例えば、笑顔)を描写する場合、および/または画像が特定の種類の活動(例えば、スポーツ、ダンスなど)を描写する場合、メディアアプリケーション103は、画像対間の動きが第1の閾値よりも大きく第2の閾値よりも小さい特定の画像対を選択する。
【0017】
メディアアプリケーション103は、画像補間器を用いて、2つの静止画像に基づいて1つ以上の中間画像を生成することができる。1つ以上の中間画像の各々は、第1の静止画像のタイムスタンプと第2の静止画像のタイムスタンプとの間の値を有する各タイムスタンプに関連付けられてもよい。シーケンス内の各画像の位置は、各タイムスタンプに基づいてもよい。
【0018】
いくつかの実施形態において、2つの静止画像に基づいて1つ以上の中間画像を生成することは、複数の候補中間画像を生成することと、各候補中間画像を評価することとを含み、各候補中間画像を評価することは、第1の静止画像を第1のフレームとして含み、候補中間画像を第2のフレームとして含み、第2の静止画像を第3のフレームとして含む候補ビデオを生成することと、候補ビデオがフレーム補間失敗を含まない場合に、候補中間画像を1つ以上の中間画像のうちの1つとして選択することとによって行われる。
【0019】
いくつかの実施形態において、画像補間器は、第1の静止画像および第2の静止画像を入力として受信し、第1の画像と第2の画像との間の動きをシミュレートするための1つ以上の中間画像を生成する補間機械学習モデル(例えば、生成モデル)である。補間機械学習モデルは、動きを含むビデオの訓練セットに対して訓練されてもよい。例えば、補間機械学習モデルは、ビデオフレームのサブセットを入力として受信し、1つ以上の欠落フレームを出力として生成することができる。生成されたフレームと(サブセットから除外された)対応する元のフレームとの間の差異に基づくコスト関数を用いて、モデルを訓練することができる。このような損失関数の例は、1つ以上の生成されたフレームと対応する元のフレームとの間のピクセルごとのL2またはL1損失を含むが、これらに限定されない。訓練は、確率的勾配降下などの最適化ルーチンを損失関数に適用することによって、補間機械学習モデルのパラメータに対する更新を決定することを含むことができる。閾値条件を満たすまで、最適化ルーチンを適用することができる。閾値条件は、訓練反復の閾値数および/または試験データセットに対する閾値性能の到達を含んでもよい。例えば、コスト関数が最小化されたときに、例えば、生成されたフレームおよび対応する元のフレームが区別することができないときに、モデルは、充分に訓練されたと考えられてもよい。分類器は、生成されたフレームと対応する元のフレームとを比較するように訓練されてもよい。ユーザの許可の許可を得て取得されたビデオの訓練セットは、様々な種類のビデオ、例えば、笑顔または目の開閉などの顔の動きを示すビデオ、歩行、ダンス、ジャンプなどの身体動作、ペットの動きなどを含むことができる。
【0020】
メディアアプリケーション103は、深度機械学習モデルを用いて、第1の画像の深度の予測に基づいて、第1の画像内のシーンの3次元表現を生成することができる。例えば、深度機械学習モデルは、第1の画像を入力として受信し、第1の画像内の深度の予測を出力する分類器であってもよい。深度の予測は、画像内の物体/特徴の深度座標、例えば、画像がx-y平面にある場合に画像内の物体のz軸座標を含んでもよい。ビデオは、シーンの3次元表現に基づいて生成されたカメラ効果を含むことができる。カメラ効果は、ズーム(zooming)および/またはパン(panning)を含むことができる。
【0021】
いくつかの実施形態において、深度機械学習モデルは、ニューラルネットワークを含む。いくつかの実施形態において、ニューラルネットワークは、畳み込みニューラルネットワークを含む。例えば、畳み込みニューラルネットワークは、入力画像から特徴を抽出し、低解像度画像を形成し、3次元画像を反復的に改善することによって、3次元画像を生成することができる。いくつかの実施形態において、深度機械学習(ML)モデルは、画像の訓練セットおよび対応する深度マップを用いて訓練されてもよい。例えば、深度MLモデルは、訓練セット内の画像の深度を予測するように訓練されてもよい。予測は、深度マップ内の正解深度と比較されてもよく、その差を訓練中のフィードバックとして用いて深度機械学習モデルのパラメータを更新することができる。予測深度と対応する正解深度との間のL1またはL2損失などの損失関数を用いて、予測深度と正解深度マップとの比較を実行することができる。最適化ルーチンを損失関数に適用することによって、パラメータの更新を決定することができる。
【0022】
メディアアプリケーション103は、ビデオを含むユーザインターフェイスを表示することができる。また、メディアアプリケーション103は、ビデオが利用可能であることをユーザに通知することができる。メディアアプリケーション103は、フィルタによって除外されていない任意の画像のビデオを生成することができる。メディアアプリケーション103は、定期的に、例えば、月に1回、週に1回、毎日など、ビデオを生成することができる。
【0023】
例示的なコンピューティング装置200
図2は、本明細書に記載された1つ以上の特徴を実装するために使用され得る例示的なコンピューティング装置200のブロック図である。コンピューティング装置200は、任意の好適なコンピュータシステム、サーバ、または他の電子装置もしくはハードウェア装置であってもよい。一例において、コンピューティング装置200は、メディアアプリケーション103を実行するために使用されるユーザ装置115である。別の例において、コンピューティング装置200は、メディアサーバ101である。さらに別の例において、メディアアプリケーション103は、ユーザ装置115上に部分的に配置され、メディアサーバ101上に部分的に配置される。
【0024】
本明細書に記載された1つ以上の方法は、任意の種類のコンピューティング装置上で実行されるスタンドアロンプログラム、ウェブブラウザ上で実行されるプログラム、モバイルコンピューティング装置(例えば、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブル装置(例えば、腕時計、アームバンド、宝飾品、ヘッドウェア、仮想現実ゴーグルまたはメガネ、拡張現実ゴーグルまたはメガネ、ヘッドマウントディスプレイ)、ラップトップコンピュータ)上で実行されるモバイルアプリケーション(アプリ)として実行することができる。主な例において、全ての計算は、モバイルコンピューティング装置上のモバイルアプリケーションで実行される。しかしながら、クライアント/サーバアーキテクチャを使用することができる。例えば、モバイルコンピューティング装置は、ユーザ入力データをサーバ装置に送信し、最終の出力データをサーバから受信して出力する(例えば、表示する)。別の例において、計算は、モバイルコンピューティング装置と1つ以上のサーバ装置との間で分担されてもよい。
【0025】
いくつかの実施形態において、コンピューティング装置200は、プロセッサ235と、メモリ237と、I/Oインターフェイス239と、ディスプレイ241と、カメラ243と、記憶装置245とを含む。プロセッサ235は、信号線222を介してバス218に接続されてもよい。メモリ237は、信号線224を介してバス218に接続されてもよい。I/Oインターフェイス239は、信号線226を介してバス218に接続されてもよい。ディスプレイ241は、信号線228を介してバス218に接続されてもよい。カメラ243は、信号線230を介してバス218に接続されてもよい。記憶装置245は、信号線232を介してバス218に接続されてもよい。
【0026】
プロセッサ235は、プログラムコードを実行し、コンピューティング装置200の基本動作を制御するための1つ以上のプロセッサおよび/または処理回路であってもよい。「プロセッサ」は、データ、信号または他の情報を処理するための任意の適切なハードウェアシステム、メカニズムまたはコンポーネントを含む。プロセッサは、1つ以上のコア(例えば、シングルコア、デュアルコア、またはマルチコア構成)を有する汎用中央処理ユニット(CPU)、(例えば、マルチプロセッサ構成を有する)複数の処理ユニット、グラフィックス処理ユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、複雑なプログラマブルロジック装置(CPLD)、機能を達成するための専用回路、ニューラルネットワークモデルに基づいた処理を実行するための専用プロセッサ、ニューラル回路、行列計算(例えば、行列乗算)を行うために最適化されたプロセッサを備えるシステム、または他のシステムを含むことができる。いくつかの実装形態において、プロセッサ235は、ニューラルネットワーク処理を実行するための1つ以上のコプロセッサを含むことができる。いくつかの実装形態において、プロセッサ235は、データを処理することによって確率的出力を生成するプロセッサであってよい。例えば、プロセッサ235によって生成された出力は、不正確であってもよく、または出力期待値の範囲内に正確であってもよい。処理は、特定の地理場所に制限される必要がなく、時間的に制限される必要もない。例えば、プロセッサは、リアルタイム、オフライン、またはバッチモードで機能を実行することができる。処理の一部は、異なる時間および異なる場所で、異なる(または同じ)処理システムによって実行されてもよい。コンピュータは、メモリと通信する任意のプロセッサであってもよい。
【0027】
メモリ237は、典型的には、プロセッサ235によって利用されるようにコンピューティング装置200内に設けられ、プロセッサまたはプロセッサのセットによって実行される命令を記憶するための任意の好適なプロセッサ可読記憶媒体、例えば、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、電気消去可能な読取り専用メモリ(EEPROM)、フラッシュメモリであってもよい。メモリ237は、プロセッサ235とは別に配置されてもよく、および/またはそれに一体化されてもよい。メモリ237は、プロセッサ235によってコンピューティング装置200上で実行されるソフトウェア(メディアアプリケーション103を含む)を記憶することができる。
【0028】
メモリ237は、オペレーティングシステム262と、他のアプリケーション264と、アプリケーションデータ266とを含むことができる。他のアプリケーション264は、例えば、カメラアプリケーション、画像ライブラリアプリケーション、画像管理アプリケーション、画像ギャラリアプリケーション、メディア表示アプリケーション、通信アプリケーション、ウェブホスティングエンジンまたはアプリケーション、マッピングアプリケーション、メディア共有アプリケーションなどを含むことができる。本明細書に開示された1つ以上の方法は、例えば、任意の種類のコンピューティング装置上で動作することができるスタンドアロンコンピュータプログラムとして、ウェブページを有するウェブアプリケーションとして、モバイルコンピューティング装置上で動作するモバイルアプリケーション(「アプリ」)として、いくつかの環境およびプラットフォーム上で実行されてもよい。
【0029】
アプリケーションデータ266は、コンピューティング装置200の他のアプリケーション264またはハードウェアによって生成されたデータであってもよい。例えば、アプリケーションデータ266は、カメラ243によって撮影された画像、他のアプリケーション264(例えば、ソーシャルネットワーキングアプリケーション)によって識別されたユーザ行動などを含んでもよい。
【0030】
I/Oインターフェイス239は、コンピューティング装置200を他のシステムおよび装置とインターフェイス接続することを可能にする機能を提供することができる。インターフェイス接続装置は、コンピューティング装置200の一部として含まれてもよく、または別個であるがコンピューティング装置200と通信することができる。例えば、ネットワーク通信装置、記憶装置(例えば、メモリ237および/またはデータベース199)、および入力/出力装置は、I/Oインターフェイス239を介して通信することができる。いくつかの実施形態において、I/Oインターフェイス239は、インターフェイス装置、例えば、入力装置(キーボード、ポインティング装置、タッチスクリーン、マイクロフォン、カメラ、スキャナ、センサなど)および/または出力装置(ディスプレイ装置、スピーカ装置、プリンタ、モニタなど)に接続することができる。例えば、ユーザがタッチ入力を提供すると、I/Oインターフェイス239は、データをメディアアプリケーション103に送信する。
【0031】
I/Oインターフェイス239に接続することができるいくつかの例示的なインターフェイス接続装置は、本明細書に記載されたコンテンツ、例えば、画像、ビデオおよび/または出力アプリケーションのユーザインターフェイスを表示し、ユーザからタッチ(またはジェスチャ)入力を受信するために使用することができるディスプレイ241を含んでもよい。例えば、ディスプレイ241を用いて、候補画像対のサブセットを含むユーザインターフェイスを表示することができる。ディスプレイ241は、任意の好適なディスプレイ装置、例えば、液晶ディスプレイ(LCD)、発光ダイオード(LED)、またはプラズマディスプレイスクリーン、陰極線管(CRT)、テレビ、モニタ、タッチスクリーン、3次元ディスプレイスクリーン、または他の視覚ディスプレイ装置を含んでもよい。例えば、ディスプレイ241は、モバイル装置上に設けられたフラットディスプレイスクリーン、眼鏡フォームファクタまたはヘッドセット装置に埋め込まれた複数のディスプレイスクリーン、またはコンピュータ装置のモニタスクリーンであってもよい。
【0032】
カメラ243は、画像および/またはビデオを撮影することができる任意の種類の画像撮影装置であってもよい。いくつかの実施形態において、カメラ243は、I/Oインターフェイス239がメディアアプリケーション103に送信する画像またはビデオを撮影する。
【0033】
記憶装置245は、メディアアプリケーション103に関連するデータを記憶する。例えば、記憶装置245は、ユーザアカウントに関連付けられた画像コレクション、機械学習モデルの訓練セット、ビデオなどを記憶することができる。メディアアプリケーション103がメディアサーバ101の一部である実施形態において、記憶装置245は、
図1のデータベース199と同じである。
【0034】
例示的なメディアアプリケーション103
図2は、例示的なメディアアプリケーション103を示している。メディアアプリケーション103は、フィルタリングモジュール202と、画像補間器204と、ユーザインターフェイスモジュール206とを含む。
【0035】
フィルタリングモジュール202は、フィルタを適用して、候補画像対から特定の画像対を選択する。いくつかの実施形態において、フィルタリングモジュール202は、フィルタを適用するためにプロセッサ235によって実行可能な1組の命令を含む。いくつかの実施形態において、フィルタリングモジュール202は、コンピューティング装置200のメモリ237に記憶され、プロセッサ235によってアクセス可能且つ実行可能であってもよい。
【0036】
いくつかの実施形態において、フィルタリングモジュール202は、画像を分かる時間が長すぎる候補画像対を除外する時間フィルタを含み、その時間は、画像の捕捉時間を指す。例えば、時間フィルタは、第1の静止画像と第2の静止画像とに関連つけられた各々のタイムスタンプの間の時間差が時間閾値よりも大きい場合、候補画像対を除外する。時間閾値は、2秒、1分、1日などの任意の時間値であってもよい。
【0037】
いくつかの実施形態において、時間フィルタは、時系列順になっていない候補画像対を除外する。いくつかの実施形態において、時間フィルタは、時系列順になっていない任意の候補対の順序を変更し、フィルタリングモジュール202に再送信して分析する。例えば、候補画像対が時系列順になっていっても、フィルタモジュール202は、例えば第1の静止画像と第2の静止画像との間の時間が時間閾値を超える場合に、候補画像対を除外してもよい。
【0038】
いくつかの実施形態において、フィルタリングモジュール202は、動きが多すぎるまたは動きが少なすぎる候補画像対を除外する動きフィルタを含む。例えば、動きフィルタは、第1の静止画像と第2の静止画像との間の動きを推定し、第1の静止画像と第2の静止画像との間の動きが最小動き閾値未満である場合、候補画像対を除外してもよい。別の例として、動きフィルタは、第1の静止画像と第2の静止画像との間の動きが最大動き閾値を超える場合、候補画像対を除外してもよい。
【0039】
いくつかの実施形態において、フィルタリングモジュール202は、品質閾値未満の品質を有する候補画像対を除外する品質フィルタを含む。例えば、品質フィルタは、候補画像対の一方または両方がぼやけている場合、ノイズが多い場合、または(画像を3分に分割し、被写体を画像の3分の1に配置する)三分割法に違反しているなどの場合、候補画像対を除外する。
【0040】
いくつかの実施形態において、フィルタリングモジュール202は、ユーザが関心を持つと判断された被写体を含まない候補画像対を除外する意味的フィルタを含む。例えば、ユーザの関心は、(a)ユーザによって提供された明示的な好み(例えば、ユーザが関心を持っている特定の人物またはペット)、(b)ユーザの行動(許可を得て、ユーザの撮影画像に最も頻繁に登場する人々、ユーザが頻繁に見る画像、ユーザが承認の表示を提供した画像(例えば、サムアップ/サムダウン、いいね、+1など)を判断すること)に基づいて判断されてもよい。このような判断は、現在の画像と既知のユーザ関心属性(例えば、人物Aを描写している)とを技術的に比較することを含む。フィルタリングモジュール202は、ユーザからユーザデータを収集するための許可を得た場合のみ、このような判断を行うことができる。
【0041】
フィルタリングモジュール202は、ユーザのために個人化されたまたはより一般的である許容可能な対象のリストを含んでもよい。例えば、ユーザは、ユーザの娘、犬、風景などの特定の対象の承認を一貫して示すことができる。別の例では、意味的モジュールは、領収書、ミームのスクリーンショットなどの被写体の画像を自動的に除外することができる。
【0042】
いくつかの実施形態において、フィルタリングモジュール202はまた、互換性のない画像サイズを有する画像を除外する。例えば、フィルタリングモジュール202は、所定の画像サイズを満たさない(例えば、特定の解像度、例えば少なくとも400ピクセルの幅および少なくとも500ピクセルの高さ未満の)画像を除外することができる。
【0043】
図3を参照すると、フィルタリングモジュール202および画像補間器204の詳細な例300が示されている。いくつかの実施形態において、フィルタリングモジュール202は、フィルタ302およびフィルタ機械学習モジュール304の一方または両方を含む。いくつかの実施形態において、フィルタ302は、時間フィルタ、動きフィルタ、品質フィルタ、意味フィルタなどのうち、1つ以上を含む。
【0044】
いくつかの実施形態において、フィルタ機械学習モジュール304は、候補画像から特徴ベクトルを生成し、特徴ベクトルに基づいて候補画像をフィルタリングするように訓練された機械学習モデルを含む。いくつかの実施形態において、フィルタ機械学習モジュール304は、特徴ベクトルを生成するためにプロセッサ235によって実行可能な1組の命令を含む。いくつかの実施形態において、フィルタ機械学習モジュール304は、コンピューティング装置200のメモリ237に記憶され、プロセッサ235によってアクセス可能且つ実行可能であってもよい。
【0045】
いくつかの実施形態において、フィルタ機械学習モジュール304は、多次元特徴空間において、各候補対の第1の静止画像および第2の静止画像を表す特徴ベクトルを生成することができる。類似する特徴を有する画像は、類似する特徴ベクトルを有してもよい。例えば、特徴ベクトルは、数学的表現であり、類似する画像の数学的表現は、類似していない画像の数学的表現よりもベクトル空間において近い。ベクトル空間は、画像の様々な要素、例えば、描写された主題(画像から検出された物体)、画像の構成、色情報、画像の向き、画像のメタデータ、画像から認識された特定の物体(例えば、ユーザ許可があれば、既知の顔)などの関数であってもよい。
【0046】
いくつかの実施形態において、フィルタ機械学習モジュール304は、(訓練の目ために許可を得て取得された)訓練データを用いて、訓練済みモデル、具体的には、フィルタ機械学習モデルを生成することができる。例えば、訓練データは、画像対の視覚的類似度の記述に関連付けられた画像対の形にした正解データを含むことができる。いくつかの実施形態において、視覚的類似度の記述は、画像対が関連しているか否かに関するユーザからのフィードバックを含むことができる。いくつかの実施形態において、視覚的類似度の記述は、画像分析によって自動的に追加されてもよい。訓練データは、任意のソース、例えば、訓練用に明記されたデータリポジトリ、機械学習の訓練データとして使用するための許可が与えられたデータから取得されてもよい。いくつかの実施形態において、訓練は、訓練データをユーザ装置115に直接に提供するメディアサーバ101上で行われてもよく、ユーザ装置115上でローカルに行われてもよく、または両方の組み合わせであってもよい。
【0047】
いくつかの実施形態において、訓練データは、訓練の目的で生成された合成データ、例えば、訓練されている状況における活動に基づいていないデータ、例えば、シミュレートされたまたはコンピュータによって生成された画像/ビデオから生成されたデータを含んでもよい。いくつかの実施形態において、フィルタ機械学習モジュール304は、別のアプリケーションから取得され、編集されていない/転送された重みを使用する。例えば、これらの実施形態において、訓練済みモデルは、例えば、異なる装置上で生成され、メディアアプリケーション103の一部として提供されてもよい。様々な実施形態において、訓練済みモデルは、(例えば、ニューラルネットワークノードの数および種類、ノード間の接続、およびノードを複数の層に編成することを定義する)モデル構造または形態と、関連する重みとを含むデータファイルとして提供されてもよい。フィルタ機械学習モジュール304は、訓練済みモデルのデータファイルを読み取り、訓練済みモデルにおいて指定されたモデル構造または形態に基づいて、ノード接続、層および重みを含むニューラルネットワークを実装することができる。
【0048】
フィルタ機械学習モジュール304は、本明細書ではフィルタ機械学習モデルと呼ばれる訓練済みモデルを生成する。いくつかの実施形態において、フィルタ機械学習モジュール304は、フィルタ機械学習モデルをアプリケーションデータ266(例えば、候補画像対)などのデータに適用することによって、各候補画像の1つ以上の特徴を特定し、候補画像対をそれぞれ表す特徴ベクトル(埋め込み)を生成するように構成されている。いくつかの実施形態において、フィルタ機械学習モジュール304は、プロセッサ235によって実行されるソフトウェアコードを含んでもよい。いくつかの実施形態において、フィルタ機械学習モジュール304は、プロセッサ235がフィルタ機械学習モデルを適用することを可能にする回路構成(例えば、プログラマブルプロセッサ、フィールドプログラマブルゲートアレイ(FPGA))を指定することができる。いくつかの実施形態において、フィルタ機械学習モジュール304は、ソフトウェア命令、ハードウェア命令、またはその組み合わせを含んでもよい。いくつかの実施形態において、フィルタ機械学習モジュール304は、アプリケーションプログラミングインターフェイス(API)を提供することができる。オペレーティングシステム262および/または他のアプリケーション264は、このAPIを利用して、フィルタ機械学習モジュール304を呼び出し、例えば、フィルタ機械学習モデルをアプリケーションデータ266に適用することによって、候補画像対のそれぞれの特徴ベクトルを出力することができる。いくつかの実施形態において、フィルタ機械学習モジュール304によって保持されている候補画像対の数学的表現は、フィルタ機械学習モジュール304によって除外された候補画像対の数学的表現よりもベクトル空間において近い。
【0049】
いくつかの実施形態において、フィルタ機械学習モデルは、候補画像対を入力として受信する分類器を含む。分類器の例は、ニューラルネットワーク、サポートベクターマシン、k最近傍、ロジスティック回帰、ナイーブベイズ、決定木、パーセプトロンなどを含む。
【0050】
いくつかの実施形態において、フィルタ機械学習モデルは、1つ以上のモデル形態または構造を含んでもよい。例えば、モデル形態または構造は、任意の種類のニューラルネットワーク、例えば、線形ネットワーク、複数の層(例えば、入力層と出力層との間の「隠れ層」。各層は、線形ネットワークである)を実装する深層ニューラルネットワーク、畳み込みニューラルネットワーク(CNN)(例えば、入力データを複数の部分またはタイルに分割または区画し、1つ以上のニューラルネットワーク層を用いて各タイルを別々に処理し、各タイルの処理から結果を集約するネットワーク)、シーケンス間(sequence-to-sequence)ニューラルネットワーク(例えば、1文中の単語、1本の動画中のフレームなどのシーケンシャルデータを入力として受信し、結果シーケンスを出力として生成するネットワーク)を含むことができる。
【0051】
モデル形態または構造は、様々なノード間の接続および層に編成されたノードの編成を指定することができる。例えば、最初の層(例えば、入力層)のノードは、データを入力データまたはアプリケーションデータ266として受信することができる。例えば、フィルタ機械学習モデルを用いて入力画像、例えば候補画像対を分析する場合、このようなデータは、例えば、ノードあたり1つ以上のピクセルを含むことができる。後続の中間層は、モデル形態または構造において指定された接続に従って、前の層のノードの出力を入力として受信することができる。これらの層は、隠れ層と呼ばれることもある。最終層(例えば、出力層)は、フィルタ機械学習モデルの出力を生成する。例えば、出力は、候補画像対の特徴ベクトルであってもよい。いくつかの実施形態において、モデル形態または構造はまた、各層内のノードの数および/または種類を指定する。
【0052】
フィルタ機械学習モジュール304によって出力された特徴は、被写体(例えば、夕日対特定の人物)、画像に存在する色(緑色の丘対青い湖)、色バランス、照明源、角度および強度、(例えば、三分割法を遵守した)画像内の物体の場所、物体の相互場所(例えば、被写界深度)、撮影場所、焦点(前景対背景)、または影を含んでもよい。前述の特徴は、人間が理解できるものであるが、出力された特徴は、画像を代表し、人間が解析可能ではない埋め込みまたは他の数値であってもよい(例えば、個々の特徴値が、存在している色、物体の場所などの特定の特徴に対応していない場合がある)。しかしながら、訓練済みモデルは、画像に対してロバストであるため、類似した画像に対して類似した特徴を出力し、著しく相違する画像に対して相違する特徴を出力する。このようなモデルの例は、オートエンコーダモデルのエンコーダを含む。
【0053】
いくつかの実施形態において、モデル形態は、ネットワーク層を含むCNNであり、各ネットワーク層は、異なる抽出レベルで画像特徴を抽出する。画像内の特徴を特定するために使用されたCNNは、画像を分類するために使用されてもよい。モデルアーキテクチャは、多次元畳み込み、平均プーリング、最大プーリング、活性化関数、正規化、正則化、および応用深層ニューラルネットワークに実際に使用される他の層およびモジュールからなる層の組み合わせおよび順序を含んでもよい。
【0054】
異なる実施形態において、フィルタ機械学習モデルは、1つ以上のモデルを含むことができる。1つ以上のモデルは、モデル構造または形態に従って層に配置された複数のノードを含んでもよい。いくつかの実施形態において、ノードは、例えば、1単位の入力を処理して1単位の出力を生成するように構成された、メモリを持たない計算ノードであってもよい。ノードによって実行される計算は、例えば、複数のノード入力の各々に重みを乗算するステップと、加重和を取得するステップと、バイアス値または切片値を用いて加重和を調整することによってノード出力を生成するステップとを含んでもよい。例えば、フィルタ機械学習モジュール304は、フィルタ機械学習モデルの1つ以上のパラメータを自動的に更新することに応答して、フィードバックに基づいて各重みを調整することができる。
【0055】
いくつかの実施形態において、ノードによって実行される計算はまた、調整された加重和にステップ/活性化関数を適用することを含んでもよい。いくつかの実施形態において、ステップ/活性化関数は、ReLU関数、シグモイド関数、tanh関数などの非線形関数であってもよい。様々な実施形態において、このような計算は、行列乗算などの演算を含んでもよい。いくつかの実施形態において、複数のノードによって実行される計算は、例えば、マルチコアプロセッサの複数のプロセッサコアを用いて、グラフィカル処理ユニット(GPU)の個々の処理ユニットを用いて、または専用ニューラル回路を用いて並列に実行されてもよい。いくつかの実施形態において、ノードは、メモリを含んでもよい。ノードは、例えば、1つ以上の前の入力を記憶し、後続の入力を処理する際に1つ以上の前の入力を使用してもよい。例えば、メモリを有するノードは、ロングショートタームメモリ(LSTM)ノードを含んでもよい。LSTMノードは、メモリを用いて、ノードが有限状態マシン(FSM)のように動作することを可能にする状態を維持することができる。このようなノードを含むモデルは、連続データ(sequential data)、例えば、1文または1段落に含まれる複数の単語、一連の画像、ビデオ内のフレーム、会話、または他の音声などを処理する際に有用であろう。例えば、ゲーティングモデルに使用されるヒューリスティックスベースモデルは、以前の画像に対して以前に生成された1つ以上の特徴を記憶することができる。
【0056】
いくつかの実施形態において、フィルタ機械学習モデルは、個々のノードの埋め込みまたは重みを含んでもよい。例えば、フィルタ機械学習モデルは、モデル形態または構造によって指定されるような層に編成された複数のノードとして初期化されてもよい。初期化の時に、モデル形態に従って接続された各ノード対、例えば、ニューラルネットワークの連続層の各ノード対の間の接続に、各々の重みを適用することができる。例えば、各々の重みは、ランダムに割り当てられてもよく、またはデフォルト値に初期化されてもよい。その後、例えば、画像対の訓練セットを用いてフィルタ機械学習モデルを訓練して、結果を生成することができる。いくつかの実施形態において、アーキテクチャ全体のサブセットは、事前に訓練された重みを活用するために、伝達学習法として他の機械学習アプリケーションから再利用されてもよい。
【0057】
例えば、訓練は、教師あり学習技術を適用することを含むことができる。教師あり学習において、訓練データは、複数の入力(例えば、ユーザアカウントに関連付けられた画像コレクションからの画像対)と、各画像対に対応する期待出力(例えば、画像対の画像埋め込み)とを含むことができる。例えば、同様の入力が提供された場合、フィルタ機械学習モデルが期待出力を生成する確率を高めるように、フィルタ機械学習モデルの出力と期待出力との比較に基づいて、重み値を自動的に調整する。比較は、損失関数を用いて実行されてもよく、調整された重み値は、損失関数に最適化ルーチンを適用することによって決定される。
【0058】
いくつかの実施形態において、訓練は、教師なし学習技術を適用することを含むことができる。教師なし学習において、入力データ(例えば、ユーザアカウントに関連付けられた画像コレクションからの画像対)のみが提供されてもよく、フィルタ機械学習モデルは、データを区別するように、例えば、画像対を異なるグループにクラスタリングするように訓練されてもよい。
【0059】
様々な実施形態において、訓練済みモデルは、モデル構造に対応する1組の重みを含む。訓練セットを省略した実施形態において、フィルタ機械学習モジュール304は、例えば、フィルタ機械学習モジュール304の開発者または第三者などによる事前の訓練に基づいてフィルタ機械学習モデルを生成してもよい。いくつかの実施形態において、フィルタ機械学習モデルは、重みを提供するサーバからダウンロードされた1組の固定の重みを含んでもよい。
【0060】
いくつかの実施形態において、フィルタ機械学習モジュール304は、オフライン方式で実装されてもよい。フィルタ機械学習モジュール304を実装することは、静的訓練セット内のデータが変化する場合に更新を含まない静的訓練セットを使用することを含むことができる。これは、有利なことに、コンピューティング装置200によって実行される処理の効率の向上および処理装置200の電力消費の低減をもたらす。これらの実施形態において、フィルタ機械学習モデルは、第1の段階で生成され、フィルタ機械学習モジュール304の一部として提供されてもよい。いくつかの実施形態において、フィルタ機械学習モデルの小さな更新は、訓練データの更新がフィルタ機械学習モデルの訓練の一部として含まれるオンライン方式で実装されてもよい。小さな更新とは、閾値サイズよりも小さいサイズを有する更新である。更新のサイズは、更新によって影響を受けるフィルタ機械学習モデル内の変数の数に関連する。このような実施形態において、フィルタ機械学習モジュール304(例えば、オペレーティングシステム262、1つ以上の他のアプリケーション264など)を呼び出すアプリケーションは、候補画像対の画像埋め込みを利用して視覚的に類似するクラスタを特定することができる。また、フィルタ機械学習モジュール304は、定期的に、例えば1時間ごとに、1ヵ月ごとに、または3ヵ月ごとにシステムログを生成することができる。システムログは、フィルタ機械学習モデルを更新するために、例えばフィルタ機械学習モデルの埋め込みを更新するために使用されてもよい。
【0061】
いくつかの実施形態において、フィルタ機械学習モジュール304は、フィルタ機械学習モジュール304が実行されるコンピューティング装置200の特定の構成に適合するような方法で実装されてもよい。例えば、フィルタ機械学習モジュール304は、利用可能な計算リソース、例えばプロセッサ235を利用する計算グラフを決定することができる。フィルタ機械学習モジュール304が複数の装置上で分散型アプリケーションとして実装された場合、例えば、メディアサーバ101が複数のメディアサーバ101を含む場合、フィルタ機械学習モジュール304は、計算を最適化するように個々の装置上で実行される計算を決定することができる。別の例において、フィルタ機械学習モジュール304は、プロセッサ235が特定の数(例えば、1000個)のGPUコアを有するGPUを含んでいると判断すると、フィルタ機械学習モジュール304を(例えば、1000個の個別のプロセスまたはスレッドとして)実装することができる。
【0062】
いくつかの実施形態において、フィルタ機械学習モジュール304は、1組の訓練済みモデルを実装することができる。例えば、フィルタ機械学習モデルは、各々が同じ入力データに適用可能である複数の訓練済みモデルを含むことができる。これらの実施形態において、フィルタ機械学習モジュール304は、例えば、利用可能な計算リソース、以前の推論を使用した場合の成功率などに基づいて、特定の訓練済みモデルを選択することができる。
【0063】
いくつかの実施形態において、フィルタ機械学習モジュール304は、複数の訓練済みモデルを実行することができる。これらの実施形態において、フィルタ機械学習モジュール304は、例えば、各訓練済みモデルを適用することによって得られた出力にスコアを付ける多数決を用いて、または1つ以上の特定の出力を選択することによって、出力を合成することができる。いくつかの実施形態において、このようなセレクタは、モデル自体の一部であり、訓練済みモデルの間の接続層として機能する。さらに、これらの実施形態において、フィルタ機械学習モジュール304は、個々の訓練済みモデルを適用するための時間閾値(例えば、0.5ms)を適用し、時間閾値内で利用可能な個々の出力のみを利用することができる。時間閾値内に受信されていない出力は、利用されず、例えば除外されてもよい。例えば、このような手法は、例えばオペレーティングシステム262または1つ以上の他のアプリケーション264によって、フィルタ機械学習モジュール304を呼び出す間に指定された時間制限があるときに適切であろう。このようにして、フィルタ機械学習モジュール304がタスクを実行するために、例えば候補画像対の1つ以上の特徴を特定し、候補画像対をそれぞれ表す特徴ベクトル(埋め込み)を生成するために要する最大時間を制限することができるため、メディアアプリケーション103の応答性を改善することができ、その結果、フィルタ機械学習モジュール304がリアルタイムで最良な分類を提供することができる。
【0064】
いくつかの実施形態において、フィルタ機械学習モジュール304は、各々の特徴ベクトル間の距離が除外される閾値ベクトル距離よりも大きい場合、各々の特徴ベクトルに対応する1つ以上の候補対を除外するように動作する。
【0065】
いくつかの実施形態において、フィルタ機械学習モジュール304は、フィードバックを受信する。例えば、フィルタ機械学習モジュール304は、ユーザインターフェイスモジュール206を介して、1人のユーザまたは1組のユーザからフィードバックを受信することができる。フィードバックは、例えば、候補画像対がビデオを生成するために使用するにはあまりにも非類似であることを含むことができる。1人のユーザがフィードバックを提供する場合、フィルタ機械学習モジュール304は、フィードバックをフィルタ機械学習モデルに提供し、フィルタ機械学習モデルは、フィードバックを用いて、フィルタ機械学習モデルのパラメータを更新して、一群の候補画像対の出力画像埋め込みを修正する。1組のユーザがフィードバックを提供する場合、フィルタ機械学習モジュール304は、集約フィードバックをフィルタ機械学習モデルに提供し、フィルタ機械学習モデルは、集約フィードバックを用いて、フィルタ機械学習モデルのパラメータを更新して、一群の候補画像対の出力画像埋め込みを修正する。例えば、集約フィードバックは、ビデオのサブセットと、ビデオのサブセットに対するユーザの反応とを含んでもよい。ユーザの反応は、1つのビデオのみを閲覧し、残りのビデオの閲覧を拒否すること、サブセット内の全てのビデオを閲覧すること、ビデオを共有すること、ビデオの承認または不承認の指示(例えば、サムアップ/サムダウン、いいね、+1など)を提供することなどを含む。フィルタ機械学習モジュール304は、フィルタ機械学習モデルのパラメータの更新に基づいて、一群の候補画像対を修正することができる。
【0066】
いくつかの実施形態において、フィルタリングモジュール202は、候補画像対に適用される異なるフィルタのサブセットを決定する。
図4を参照すると、一対の画像に適用されるフィルタの異なるオプション400が示されている。フィルタは、早期フィルタ、中期フィルタ、および後期フィルタに分類することができる。早期フィルタ、例えば時間的に離れすぎる候補画像対を除外する時間フィルタは、画像メタデータの分析を実行することができる。中期フィルタ、例えば動きが多すぎる候補画像対を除外する動きフィルタは、画像データの分析を実行することができる。後期フィルタは、画像データおよびテストレンダリングを含むことができる。異なるフィルタ間のバランスは、実行がより速いがより高い再現性を有するフィルタおよびより遅いがより高い精度を有するフィルタにより達成されてもよい。いくつかの実施形態において、フィルタリングモジュール202は、ビデオを迅速に生成する必要性に基づいて、異なるフィルタのサブセットを決定することができる。例えば、毎月1回にビデオを生成する場合、処理時間は、それほど重要ではない可能性がある。しかしながら、ユーザがビデオを要求する場合、ビデオを提供するアプリケーションがすぐ応答するように短時間でユーザに応答を提供するために、処理時間を最小化する必要がある。
【0067】
いくつかの実施形態において、フィルタリングモジュール202は、複数の候補画像対から特定の画像対を選択する。例えば、特定の画像対は、フィルタリングモジュール202によって除外されなかった画像対である。いくつかの実施形態において、特定の画像対は、複数の候補画像対のうち、フィルタリングモジュール202によって除外されなかった第1の画像対として選択される。
【0068】
いくつかの実施形態において、フィルタ機械学習モジュール304は、フィルタ機械学習モジュールへの入力として、画像補間器204から1つ以上の中間画像のうちの中間画像を受信し、中間画像に対応する特徴ベクトルを生成し、中間画像が対応する第1の静止画像または第2の静止画像とあまりにも類似していない場合、当該中間画像を除外する。例えば、画像補間器204は、中間画像から特徴ベクトルを生成し、特徴ベクトルを対応する候補画像対の特徴ベクトルと比較し、中間画像の特徴ベクトルと候補画像対の特徴ベクトルのいずれかとの間の距離が閾値ベクトル距離よりも大きい場合、当該中間画像を除外する。
【0069】
画像補間器204は、特定の画像対に基づいて、1つ以上の中間画像を生成する。いくつかの実施形態において、画像補間器204は、1つ以上の中間画像を生成するためにプロセッサ235によって実行可能な1組の命令を含む。いくつかの実施形態において、画像補間器204は、コンピューティング装置200のメモリ237に記憶され、プロセッサ235によってアクセス可能且つ実行可能であってもよい。
【0070】
いくつかの実施形態において、画像補間器204は、中間ステップを含む1つ以上の中間画像を生成する。1つ以上の中間画像は、フレームとして、第1の静的フレームと第2の静的フレームとの間に挿入される。これらのフレームをビデオとして連続して表示する場合、1つ以上の中間画像は、滑らかなアニメーションを形成するように挿入される。例えば、
図5は、第1のフレーム500と第2のフレーム575の間に2つの中間フレーム550a、550bを挿入する補間法の一例を示す。この例において、第1のフレーム500は、目が開いており、口が閉じていることを示し、第2のフレーム575は、目が部分的に閉じており、口が部分的に開いている笑顔を示している。画像補間器204は、目を閉じたり口を動かしたりする動作を含む中間フレーム550a、550bを生成する。フレームをビデオとして順次に(500、550a、550b、575の順序で)表示する場合、中間フレーム550a、550bにより、視聴者は、第1の静止画像500と第2の静止画像575との間の滑らかな動きを知覚することができる。
【0071】
図5は、2つの中間画像を示しているが、異なる実装形態において、画像補間器204は、1つ、2つ、3つ、またはより多くの中間画像を生成する。いくつかの実施形態において、中間画像の数は、フレーム500~575の間の合計動作の関数であってもよい。この場合、より多くの動作が発生すると、より多くの中間画像が生成される。いくつかの実施形態において、画像補間器204は、利用可能な計算能力に基づいて中間画像を生成する。計算能力が高い場合、より多くの中間画像が生成され、計算能力が低い場合、より少ない中間画像が生成される。いくつかの実施形態において、画像補間器204は、画像解像度に基づいて中間画像を生成してもよい。選択された画像対が高い解像度を有する場合、画像補間器204は、より多くの中間画像を生成する。いくつかの実施形態において、画像補間器204は、ユーザ装置115のリフレッシュレートに基づいて、より多くの中間画像を生成する。例えば、より高いリフレッシュレート(例えば、120Hz)は、より低いリフレッシュレート(例えば、50Hz)よりもより多くの中間画像を必要とする。
【0072】
いくつかの実施形態において、画像補間器204は、複数の連続する画像対を受信し、複数の中間画像を生成する。例えば、画像補間器204は、特定の画像対a、b、c、およびdを受信することができ、aとb、bとc、およびcとdは、画像対を構成する。画像補間器204は、各特定の画像対に対して1つ以上の中間画像対を生成することができる。
【0073】
いくつかの実施形態において、各中間画像は、第1の静止画像のタイムスタンプと第2の静止画像のタイムスタンプとの間の値を有する各タイムスタンプに関連付けられる。いくつかの実施形態において、画像補間器204は、第1の静止画像、1つ以上の中間画像および第2の静止画像の各々のタイムスタンプに基づいて、ビデオを編成する。
【0074】
いくつかの実施形態において、画像補間器204は、候補中間画像を生成し、第1の静止画像を第1のフレームとして含み、候補中間画像を第2のフレームとして含み、第2の静止画像を第3のフレームとして含む候補ビデオを生成することによって各候補中間画像を評価し、候補ビデオがフレーム補間失敗を含まない場合に、候補中間画像を1つ以上の中間画像のうちの1つとして選択することによって、1つ以上の中間画像を生成する。フレーム補間失敗は、中間画像をフィルタリングモジュール202に提供したことに応答して、または識別器機械学習モジュール308を参照して以下でより詳細に検討するように画像補間器204によって検出された失敗に基づいて発生する可能性がある。
【0075】
いくつかの実施形態において、画像補間器204は、各中間画像をフィルタリングモジュール202、例えば、フィルタマシン学習モジュール304に送信して、中間画像が特定の画像対に充分類似していることを確認する。フィルタリングモジュール202が中間画像を除外していない場合、画像補間器204は、ビデオを生成する。フィルタ機械学習モジュール304が中間画像を除外した場合、この除外は、フレーム補間失敗とみなされ、画像補間器204は、1つ以上の追加の中間画像を生成する。
【0076】
図3を参照すると、フィルタリングモジュール202および画像補間器204の詳細な例300が示されている。いくつかの実施形態において、画像補間器204は、補間機械学習モジュール306と、識別器機械学習モジュール308と、深度機械学習モジュール310と、ビデオ生成器312とを含む。
【0077】
いくつかの実施形態において、補間機械学習モジュール306、識別器機械学習モジュール308、および深度機械学習モジュール310のうちの1つ以上は、ニューラルネットワーク内の各層/ブロックであってもよく、または別個のニューラルネットワークであってもよい。例えば、補間機械学習モジュール306は、特定の画像対を入力として受信し、識別器機械学習モジュール208に入力される1つ以上の中間画像を出力することができる。1つ以上の中間画像がフレーム補間失敗を含まない場合、識別器機械学習モジュール208は、1つ以上の中間画像を出力することができる。1つ以上の中間画像は、ビデオ生成器312に入力されてもよい。また、深度機械学習モジュール310は、第1の静止画像を入力として受信し、シーンの3次元表現をビデオ生成器312に出力することができる。他の実施形態も可能である。例えば、補間機械学習モジュール306および識別器機械学習モジュール308は、ニューラルネットワーク内の層であってもよく、または補間機械学習モジュール306および深度機械学習モジュール310は、ニューラルネットワーク内の層であってもよい。さらに別の例において、補間機械学習モジュール306は、単独で動作することができ、1つ以上の中間画像を出力としてビデオ生成器312に直接に提供することができる。
【0078】
いくつかの実施形態において、補間機械学習モジュール306は、補間機械学習モデルを含む。この補間機械学習モデルは、入力として第1の静止画像および第2の静止画像を受信し、出力として1つ以上の中間画像を生成するように訓練されている。補間機械学習モジュール306は、入力画像対から画像を生成するように訓練された任意の種類の生成機械学習モデルを含むことができる。いくつかの実施形態において、補間機械学習モジュール306は、1つ以上の中間画像を生成するためにプロセッサ235によって実行可能な1組の命令を含む。いくつかの実施形態において、補間機械学習モジュール306は、コンピューティング装置200のメモリ237に記憶され、プロセッサ235によってアクセス可能且つ実行可能であってもよい。
【0079】
いくつかの実施形態において、補間機械学習モジュール306は、(訓練のために許可を得て取得された)訓練データを用いて、訓練済みモデル、具体的には、補間機械学習モデルを生成することができる。例えば、訓練データは、画像対と中間画像の視覚的類似度の記述に関連付けられた画像対および中間画像の形にした正解データを含むことができる。いくつかの実施形態において、視覚的類似度の記述は、画像分析によって自動的に追加されてもよい。訓練データは、任意のソース、例えば、訓練用に明記されたデータリポジトリ、機械学習の訓練データとして使用するための許可が与えられたデータから取得されてもよい。いくつかの実施形態において、訓練は、訓練データをユーザ装置115に直接に提供するメディアサーバ101上で行われてもよく、ユーザ装置115上でローカルに行われてもよく、または両方の組み合わせであってもよい。
【0080】
いくつかの実施形態において、訓練データは、訓練の目的で生成された合成データ、例えば、訓練されている状況における活動に基づいていないデータ、例えば、シミュレートされたまたはコンピュータによって生成された画像/ビデオから生成されたデータを含んでもよい。いくつかの実施形態において、補間マシン学習モジュール306は、別のアプリケーションから取得され、編集されていない/転送された重みを使用する。例えば、これらの実施形態において、訓練済みモデルは、例えば、異なる装置上で生成され、メディアアプリケーション103の一部として提供されてもよい。様々な実施形態において、訓練済みモデルは、(例えば、ニューラルネットワークノードの数および種類、ノード間の接続、およびノードを複数の層に編成することを定義する)モデル構造または形態と、関連する重みとを含むデータファイルとして提供されてもよい。補間マシン学習モジュール306は、訓練済みモデルのデータファイルを読み取り、訓練済みモデルにおいて指定されたモデル構造または形態に基づいて、ノード接続、層および重みを含むニューラルネットワークを実装することができる。
【0081】
いくつかの実施形態において、補間機械学習モジュール306は、補間機械学習モデルをアプリケーションデータ266(例えば、選択された画像対)などのデータに適用し、第1の静止画像と第2の静止画像との間の異なる物体の位置を近似し得る1つ以上の中間画像を生成するように構成されている。例えば、第1の静止画像および第2の静止画像がある場合、補間機械学習モジュール306は、第1の中間画像を出力し、その後、一連の中間画像を出力する。この例において、第1の静止画像および第2の静止画像は、幼児(toddler)および小児(infant)を描写する。両子供の頭部は、第1の静止画像と第2の静止画像との間で異なるように回転される。この例において、補間機械学習モジュール306は、子供の頭部が第1の静止画像と第2の静止画像との間の位置にある1つの中間画像を生成する。いくつかの実施形態において、補間機械学習モジュール306は、子供の頭部が第1の静止画像と第2の静止画像との間の位置にある追加の中間画像を生成する。
【0082】
いくつかの実施形態において、補間機械学習モジュール306は、プロセッサ235によって実行されるソフトウェアコードを含んでもよい。いくつかの実施形態において、補間機械学習モジュール306は、プロセッサ235が補間機械学習モデルを適用することを可能にする回路構成(例えば、プログラマブルプロセッサ、フィールドプログラマブルゲートアレイ(FPGA))を指定することができる。いくつかの実施形態において、補間機械学習モジュール306は、ソフトウェア命令、ハードウェア命令、またはその組み合わせを含んでもよい。いくつかの実施形態において、補間機械学習モジュール306は、アプリケーションプログラミングインターフェイス(API)を提供することができる。オペレーティングシステム262および/または他のアプリケーション264は、このAPIを利用して、補間機械学習モジュール306を呼び出し、例えば、補間機械学習モデルをアプリケーションデータ266に適用することによって、1つ以上の中間画像を出力することができる。
【0083】
いくつかの実施形態において、補間機械学習モデルは、選択された画像対を入力として受信する分類器を含む。分類器の例は、ニューラルネットワーク、サポートベクターマシン、k最近傍、ロジスティック回帰、ナイーブベイズ、決定木、パーセプトロンなどを含む。
【0084】
いくつかの実施形態において、補間機械学習モデルは、1つ以上のモデル形態または構造を含んでもよい。例えば、モデル形態または構造は、線形ネットワーク、複数の層(例えば、入力層と出力層との間の「隠れ層」。各層は、線形ネットワークである)を実装する深層ニューラルネットワーク、畳み込みニューラルネットワーク(CNN)(例えば、入力データを複数の部分またはタイルに分割または区画し、1つ以上のニューラルネットワーク層を用いて各タイルを別々に処理し、各タイルの処理から結果を集約するネットワーク)、シーケンス間(sequence-to-sequence)ニューラルネットワーク(例えば、1文中の単語、1本の動画中のフレームなどのシーケンシャルデータを入力として受信し、結果シーケンスを出力として生成するネットワーク)を含むことができる。
【0085】
モデル形態または構造は、様々なノード間の接続および層に編成されたノードの編成を指定することができる。例えば、最初の層(例えば、入力層)のノードは、データを入力データまたはアプリケーションデータ266として受信することができる。例えば、補間機械学習モデルを用いて入力画像、例えば選択された画像対を分析する場合、このようなデータは、例えば、ノードあたり1つ以上のピクセルを含むことができる。後続の中間層は、モデル形態または構造において指定された接続に従って、前の層のノードの出力を入力として受信することができる。例えば、第1の静止画像および第2の静止画像の中央にある第1の中間画像は、第1の中間層の一部であってもよい。これらの層は、隠れ層と呼ばれることもある。最終層(例えば、出力層)は、補間機械学習モデルの出力を生成する。例えば、出力は、第1の静止画像、第2の静止画像、および第1の中間画像に基づいた一連の中間画像であってもよい。いくつかの実施形態において、モデル形態または構造はまた、各層内のノードの数および/または種類を指定する。
【0086】
いくつかの実施形態において、モデル形態は、ネットワーク層を含むCNNであり、各ネットワーク層は、異なる抽出レベルで画像特徴を抽出する。画像内の特徴を特定するために使用されたCNNは、画像を分類するために使用されてもよい。モデルアーキテクチャは、多次元畳み込み、平均プーリング、最大プーリング、活性化関数、正規化、正則化、および応用深層ニューラルネットワークに実際に使用される他の層およびモジュールからなる層の組み合わせおよび順序を含んでもよい。
【0087】
異なる実施形態において、補間機械学習モデルは、1つ以上のモデルを含むことができる。1つ以上のモデルは、モデル構造または形態に従って層に配置された複数のノードを含んでもよい。いくつかの実施形態において、ノードは、例えば、1単位の入力を処理して1単位の出力を生成するように構成された、メモリを持たない計算ノードであってもよい。ノードによって実行される計算は、例えば、複数のノード入力の各々に重みを乗算するステップと、加重和を取得するステップと、バイアス値または切片値を用いて加重和を調整することによってノード出力を生成するステップとを含んでもよい。例えば、補間機械学習モジュール306は、補間機械学習モデルの1つ以上のパラメータを自動的に更新することに応答して、フィードバックに基づいて各重みを調整することができる。
【0088】
いくつかの実施形態において、ノードによって実行される計算はまた、調整された加重和にステップ/活性化関数を適用することを含んでもよい。いくつかの実施形態において、ステップ/活性化関数は、ReLU関数、シグモイド関数、tanh関数などの非線形関数であってもよい。様々な実施形態において、このような計算は、行列乗算などの演算を含んでもよい。いくつかの実施形態において、複数のノードによって実行される計算は、例えば、マルチコアプロセッサの複数のプロセッサコアを用いて、グラフィカル処理ユニット(GPU)の個々の処理ユニットを用いて、または専用ニューラル回路を用いて並列に実行されてもよい。いくつかの実施形態において、ノードは、メモリを含んでもよい。ノードは、例えば、1つ以上の前の入力を記憶し、後続の入力を処理する際に1つ以上の前の入力を使用してもよい。例えば、メモリを有するノードは、ロングショートタームメモリ(LSTM)ノードを含んでもよい。LSTMノードは、メモリを用いて、ノードが有限状態マシン(FSM)のように動作することを可能にする状態を維持することができる。このようなノードを含むモデルは、連続データ(sequential data)、例えば、1文または1段落に含まれる複数の単語、一連の画像、ビデオ内のフレーム、会話、または他の音声などを処理する際に有用であろう。例えば、ゲーティングモデルに使用されるヒューリスティックスベースモデルは、以前の画像に対して以前に生成された1つ以上の特徴を記憶することができる。
【0089】
いくつかの実施形態において、補間機械学習モデルは、個々のノードの埋め込みまたは重みを含んでもよい。例えば、補間機械学習モデルは、モデル形態または構造によって指定されるような層に編成された複数のノードとして初期化されてもよい。初期化の時に、モデル形態に従って接続された各ノード対、例えば、ニューラルネットワークの連続層の各ノード対の間の接続に、各々の重みを適用することができる。例えば、各々の重みは、ランダムに割り当てられてもよく、またはデフォルト値に初期化されてもよい。その後、例えば、画像対の訓練セットを用いて補間機械学習モデルを訓練して、結果を生成することができる。いくつかの実施形態において、アーキテクチャ全体のサブセットは、事前に訓練された重みを活用するために、伝達学習法として他の機械学習アプリケーションから再利用されてもよい。
【0090】
例えば、訓練は、教師あり学習技術を適用することを含むことができる。教師あり学習において、訓練データは、複数の入力(例えば、ユーザアカウントに関連付けられた画像コレクションからの画像対)と、各画像対に対応する期待出力(例えば、1つ以上の中間画像)とを含むことができる。例えば、補間機械学習モデルが同様の入力を提供したときに期待出力を生成する確率を高めるように、補間機械学習モデルの出力と期待出力との比較に基づいて、重み値を自動的に調整する。
【0091】
いくつかの実施形態において、訓練は、教師なし学習技術を適用することを含むことができる。教師なし学習において、入力データ(例えば、ユーザアカウントに関連付けられた画像コレクションからの画像対)のみが提供されてもよく、補間機械学習モデルは、データを区別するように、例えば、画像対を異なるグループにクラスタリングするように訓練されてもよい。
【0092】
様々な実施形態において、訓練済みモデルは、モデル構造に対応する1組の重みを含む。訓練セットを省略した実施形態において、補間機械学習モジュール306は、例えば、補間機械学習モジュール306の開発者または第三者などによる事前の訓練に基づいて補間機械学習モデルを生成してもよい。いくつかの実施形態において、補間機械学習モデルは、重みを提供するサーバからダウンロードされた1組の固定の重みを含んでもよい。
【0093】
いくつかの実施形態において、補間機械学習モジュール306は、オフライン方式で実装されてもよい。補間機械学習モジュール306を実装することは、静的訓練セット内のデータが変化する場合に更新を含まない静的訓練セットを使用することを含むことができる。これは、有利なことに、コンピューティング装置200によって実行される処理の効率の向上および処理装置200の電力消費の低減をもたらす。これらの実施形態において、補間機械学習モデルは、第1の段階で生成され、補間機械学習モジュール306の一部として提供されてもよい。いくつかの実施形態において、補間機械学習モデルの小さな更新は、訓練データの更新が補間機械学習モデルの訓練の一部として含まれるオンライン方式で実装されてもよい。小さな更新とは、閾値サイズよりも小さいサイズを有する更新である。更新のサイズは、更新によって影響を受ける補間機械学習モデル内の変数の数に関連する。このような実施形態において、補間機械学習モジュール306(例えば、オペレーティングシステム262、1つ以上の他のアプリケーション264など)を呼び出すアプリケーションは、候補画像対の画像埋め込みを利用して視覚的に類似するクラスタを識別することができる。また、補間機械学習モジュール306は、定期的に、例えば1時間ごとに、1ヵ月ごとに、または3ヵ月ごとにシステムログを生成することができる。システムログは、補間機械学習モデルを更新するために、例えば補間機械学習モデルの埋め込みを更新するために使用されてもよい。
【0094】
いくつかの実施形態において、補間機械学習モジュール306は、補間機械学習モジュール306が実行されるコンピューティング装置200の特定の構成に適合するような方法で実装されてもよい。例えば、補間機械学習モジュール306は、利用可能な計算リソース、例えばプロセッサ235を利用する計算グラフを決定することができる。補間機械学習モジュール306が複数の装置上で分散型アプリケーションとして実装された場合、例えば、メディアサーバ101が複数のメディアサーバ101を含む場合、補間機械学習モジュール306は、計算を最適化するように個々の装置上で実行される計算を決定することができる。別の例において、補間機械学習モジュール306は、プロセッサ235が特定の数(例えば、1000個)のGPUコアを有するGPUを含んでいると判断すると、補間機械学習モジュール306を(例えば、1000個の個別のプロセスまたはスレッドとして)実装することができる。
【0095】
いくつかの実施形態において、補間機械学習モジュール306は、1組の訓練済みモデルを実装することができる。例えば、補間機械学習モデルは、各々が同じ入力データに適用可能である複数の訓練済みモデルを含むことができる。これらの実施形態において、補間機械学習モジュール306は、例えば、利用可能な計算リソース、以前の推論を使用した場合の成功率などに基づいて、特定の訓練済みモデルを選択することができる。
【0096】
いくつかの実施形態において、補間機械学習モジュール306は、複数の訓練済みモデルを実行することができる。これらの実施形態において、補間機械学習モジュール306は、例えば、各訓練済みモデルを適用することによって得られた出力にスコアを付ける多数決を用いて、または1つ以上の特定の出力を選択することによって、出力を合成することができる。いくつかの実施形態において、このようなセレクタは、モデル自体の一部であり、訓練済みモデルの間の接続層として機能する。さらに、これらの実施形態において、補間機械学習モジュール306は、個々の訓練済みモデルを適用するための時間閾値(例えば、0.5ms)を適用し、時間閾値内で利用可能な個々の出力のみを利用することができる。時間閾値内に受信されていない出力は、利用されず、例えば除外されてもよい。例えば、このような手法は、例えばオペレーティングシステム262または1つ以上の他のアプリケーション264によって、補間機械学習モジュール306を呼び出す間に指定された時間制限があるときに適切であろう。このようにして、補間機械学習モジュール306がタスクを実行するために、例えば選択された画像対の1つ以上の特徴を特定し、候補画像対をそれぞれ表す特徴ベクトル(埋め込み)を生成するために要する最大時間を制限することができるため、メディアアプリケーション103の応答性を改善することができ、その結果、補間機械学習モジュール306がリアルタイムで1つ以上の中間画像の最良な生成を提供することができる。
【0097】
いくつかの実施形態において、補間機械学習モジュール306は、フィードバックを受信する。例えば、補間機械学習モジュール306は、ユーザインターフェイスモジュール206を介して、1人のユーザまたは1組のユーザからフィードバックを受信することができる。フィードバックは、例えば、中間画像がビデオを生成するために使用される特定の画像対とはあまりにも非類似であることを含むことができる。1人のユーザがフィードバックを提供する場合、補間機械学習モジュール306は、補間機械学習モデルにフィードバックを提供し、補間機械学習モデルは、フィードバックを用いて、補間機械学習モデルのパラメータを更新して、出力の1つ以上の中間画像を修正する。1組のユーザがフィードバックを提供する場合、補間機械学習モジュール306は、集約フィードバックを補間機械学習モデルに提供し、補間機械学習モデルは、集約フィードバックを用いて、補間機械学習モデルのパラメータを更新して、出力の中間画像を修正する。例えば、集約フィードバックは、ビデオのサブセットと、ビデオのサブセットに対するユーザの反応とを含んでもよい。ユーザの反応は、1つのビデオのみを閲覧し、残りのビデオの閲覧を拒否すること、サブセット内の全てのビデオを閲覧すること、ビデオを共有すること、ビデオの承認または不承認の指示(例えば、サムアップ/サムダウン、いいね、+1など)を提供することなどを含む。
【0098】
いくつかの実施形態において、識別器機械学習モジュール308は、識別器機械学習モデルを含み、この識別器機械学習モデルは、1つ以上の中間画像と、第1の静止画像および第2の静止画像のうちの1つ以上とを入力として受信し、1つ以上の中間画像が生成画像であることを示す尤度を出力するように訓練されている。いくつかの実施形態において、補間機械学習モジュール306は、1つ以上の中間画像が生成画像であることを示す尤度を出力するためにプロセッサ235によって実行可能な1組の命令を含む。いくつかの実施形態において、補間機械学習モジュール306は、コンピューティング装置200のメモリ237に記憶され、プロセッサ235によってアクセス可能且つ実行可能であってもよい。
【0099】
いくつかの実施形態において、識別器機械学習モジュール308は、(訓練のために許可を得て取得された)訓練データを用いて、訓練済みモデル、具体的には、識別器機械学習モデルを生成するすることができる。例えば、訓練データは、中間画像が生成画像であるか否かの記述に関連付けられた画像と中間画像との対の形にした正解データを含んでもよい。いくつかの実施形態において、中間画像の記述は、画像分析によって自動的に追加されてもよい。訓練データは、任意のソース、例えば、訓練用に明記されたデータリポジトリ、機械学習の訓練データとして使用するための許可が与えられたデータから取得されてもよい。いくつかの実施形態において、訓練は、訓練データをユーザ装置115に直接に提供するメディアサーバ101上で行われてもよく、訓練は、ユーザ装置115上でローカルに行われてもよく、または両方の組み合わせであってもよい。いくつかの実施形態において、生成的敵対手法を用いて、補間機械学習モデルと共に識別器モデルを訓練することができる。
【0100】
いくつかの実施形態において、識別器機械学習モジュール308は、アプリケーションデータ266(例えば、中間画像と、第1の静止画像および第2の静止画像のうちの1つ以上と)などのデータに識別器機械学習モデルを適用し、中間画像が第1の静止画像および第2の静止画像のうちの1つ以上から視覚的に区別することができないことを示す尤度を生成するように構成されている。いくつかの実施形態において、尤度が閾値を満たさない場合、中間画像は、除外される。いくつかの実施形態において、尤度が閾値を超える場合、中間画像は、受け入れられ、実施形態に応じて、入力として深度機械学習モジュール310またはビデオ生成器312に提供される。
【0101】
識別器機械学習モジュール308が、訓練データをどのように使用するか、プロセッサ235を使用するか、異なる種類の機械学習モデルとして機能するかなどに関する追加の説明は、上記で説明されており、ここではその説明を繰り返さない。
【0102】
いくつかの実施形態において、深度機械学習モジュール310は、深度機械学習モデルを含み、この深度機械学習モデルは、入力として第1の静止画像を受信し、第1の静止画像の深度の予測に基づいて第1の静止画像内のシーンの3次元表現を出力するように訓練されている。いくつかの実施形態において、補間機械学習モジュール306は、1つ以上の中間画像が生成画像であることを示す尤度を出力するためにプロセッサ235によって実行可能な1組の命令を含む。いくつかの実施形態において、補間機械学習モジュール306は、コンピューティング装置200のメモリ237に記憶され、プロセッサ235によってアクセス可能且つ実行可能であってもよい。
【0103】
いくつかの実施形態において、深度機械学習モジュール310は、(訓練のために許可を得て取得された)訓練データを用いて、訓練済みモデル、具体的には、深度機械学習モデルを生成することができる。例えば、訓練データは、シーンおよびシーンを含む3次元表現の画像の形にした正解データを含むことができる。訓練データは、任意のソース、例えば、訓練用に明記されたデータリポジトリ、機械学習の訓練データとして使用するための許可が与えられたデータから取得されてもよい。
【0104】
いくつかの実施形態において、深度機械学習モジュール310は、アプリケーションデータ266(例えば、第1の静止画像)などのデータに深度機械学習モデルを適用し、シーンの3次元表現を生成するように構成されている。いくつかの実施形態において、深度機械学習モデルは、入力として第1の静止画像を受信し、シーンの3次元表現を生成する分類器である。シーンの3次元表現は、ズーム(zooming)、パン(panning)、回転(rotation)、またはその組み合わせなどのカメラ効果を含むことができる。
【0105】
図6は、静止画像の3次元ズームの一例を示す図である。第1の画像600は、上述したように深度機械学習モデルへの入力として受信された第1の静止画像と同じであってもよい。深度機械学習モデルは、出力として、ズームカメラ効果を有するシーンの3次元表現を生成する。この3次元表現は、第2の例650および第3の例675として示されている。
図6の例において、シーケンス600~675は、人物と葉がフレームにおいてより近づくことにより、画像の深度を強調しているビデオを視聴者に提供する。
【0106】
深度機械学習モジュール310が、訓練データをどのように使用するか、プロセッサ235を使用するか、異なる種類の機械学習モデルとして機能するかなどに関する追加の説明は、上記で説明されており、ここではその説明を繰り返さない。
【0107】
ビデオ生成器312は、第1の静止画像、第2の静止画像および1つ以上の中間画像から、ビデオを生成する。いくつかの実施形態において、3つ以上のフレームがシーケンスに配置され、シーケンスの第1のフレームが第1の静止画像であり、シーケンスの最後のフレームが第2の静止画像であり、1つ以上の中間画像の各画像は、第1のフレームと最後のフレームとの間のシーケンスの対応する中間フレームである。
【0108】
ユーザインターフェイスモジュール206は、ユーザインターフェイスを生成する。いくつかの実施形態において、ユーザインターフェイスモジュール206は、ユーザインターフェイスを生成するためにプロセッサ235によって実行可能な1組の命令を含む。いくつかの実施形態において、ユーザインターフェイスモジュール206は、コンピューティング装置200のメモリ237に記憶され、プロセッサ235によってアクセス可能且つ実行可能であってもよい。
【0109】
例示的なフローチャート
図7A~
図7Bは、いくつかの実施形態に従って、候補画像対からビデオを生成するための例示的な方法700を示すフローチャートである。フローチャート700に示された方法は、
図2のコンピューティング装置200によって実行されてもよい。
【0110】
方法700は、ブロック702から始まることができる。ブロック702において、ユーザアカウントに関連付けられたメディアアイテムコレクションへのアクセスを求める要求を生成する。いくつかの実施形態において、要求は、ユーザインターフェイスモジュール206によって生成される。ブロック702の後にブロック704を実行することができる。
【0111】
ブロック704において、許可インターフェイス要素を表示する。例えば、ユーザインターフェイスモジュール206は、ユーザがメディアアイテムコレクションへのアクセス許可を提供することを要求するための許可インターフェイス要素を含むユーザインターフェイスを表示することができる。ブロック704の後にブロック706を実行することができる。
【0112】
ブロック706において、メディアアイテムコレクションへのアクセスのための許可がユーザによって与えられたか否かを判断する。いくつかの実施形態において、ブロック806は、ユーザインターフェイスモジュール206によって実行される。ユーザが許可を提供していない場合、方法は、終了する。ユーザが許可を提供した場合、ブロック706の後にブロック708を実行することができる。
【0113】
ブロック708において、画像コレクションから候補画像対を選択する。例えば、候補対は、先週、今月などの限定された時間帯に発生するものとして選択される。代替的には、候補対は、ユーザがカメラ243から取得した画像から候補対を作成した後に受信されてもよい。ブロック708の後にブロック710を実行することができる。
【0114】
ブロック710において、フィルタが候補画像対を除外するか否かを判断する。フィルタは、時間フィルタ、動きフィルタなどを含む。判断がYESである場合、候補画像対を除外する。判断がNOである場合、残りの任意の候補画像対は、特定の画像対と見なされてもよい。ブロック710の後にブロック712を実行することができる。
【0115】
ブロック712において、画像補間器は、特定の画像対に基づいて、1つ以上の中間画像を生成する。ブロック712の後にブロック714を実行することができる。
【0116】
ブロック714において、フィルタまたは画像補間器が1つ以上の中間画像を除外するか否かを判断する。判断がYESである場合、1つ以上の中間画像を除外する。判断がNOである場合、1つ以上の中間画像をビデオ生成器に提供する。ブロック714の後にブロック716を実行することができる。
【0117】
ブロック716において、シーケンスに配置された3つ以上のフレームを含むビデオを生成する。シーケンスの第1のフレームは、第1の画像であり、シーケンスの最後のフレームは、第2の画像であり、1つ以上の中間画像の各画像は、第1のフレームと最後のフレームとの間のシーケンスの対応する中間フレームである。
【0118】
上記の説明に加えて、本明細書に記載のシステム、プログラムまたは機能がユーザ情報(例えば、ユーザのソーシャルネットワーク、社会的行動または活動、職業、画像に基づいた作成物の視聴好み、人物またはペットを非表示するための設定、ユーザインターフェイス好みなどのユーザの好み、またはユーザの現在の場所に関する情報)の収集を可能にするかおよびいつ可能にするか並びにサーバからコンテンツまたは情報を送信するかを選択できるコントロールをユーザに与えてもよい。さらに、特定のデータを格納または使用する前に、1つ以上の方法で特定可能な個人情報を削除するように処理することができる。例えば、ユーザの個人情報が特定できないように、ユーザのIDを処理することができる。また、ユーザの場所を特定できないように、(例えば、都市、郵便番号、または州レベルなどの)場所情報を取得する場合、ユーザの地理場所を一般化することができる。したがって、ユーザは、収集されるユーザ情報、情報の用途、およびユーザに提供される情報を制御することができる。
【0119】
上記の説明において、説明の目的で、多くの具体的な詳細を記載することによって、記載された様々な実施形態の完全な理解を提供する。しかしながら、これらの具体的な詳細がなくても、記載された様々な実施形態を実施することができることは、当業者には明らかであろう。場合によっては、説明を不明瞭にすることを回避するために、構造および装置は、ブロック図で示される。例えば、実施形態は、主にユーザインターフェイスおよび特定のハードウェアを参照して上記で説明することができる。しかしながら、実施形態は、データおよびコマンドを受信することができる任意の種類のコンピューティング装置、およびサービスを提供する任意の周辺装置に適用することができる。
【0120】
本明細書において「いくつかの実施形態」または「いくつかのインスタンス」への言及は、実施形態またはインスタンスに関連して説明された特定の特徴、構造、または特性が、説明の少なくとも1つの実装形態に含まれ得ることを意味する。本明細書の様々な場所に「いくつかの実施形態において」という表現は、必ずしも全てが同じ実施形態を指しているわけではない。
【0121】
上記の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズムおよび記号表現の観点から提示されている。これらのアルゴリズム的記述および表現は、データ処理技術の当業者が、その仕事の内容を他の当業者に最も効果的に伝えるために使用される手段である。アルゴリズムは、本明細書において、一般的に、所望の結果をもたらす矛盾しない一連のステップであると考えられる。ステップは、物理的な量の物理的な操作を必要とするものである。通常、これらの量は、必ずしもそうではないが、記憶、転送、結合、比較、およびその他の操作が可能な電気的または磁気的データの形をとる。場合によって、主に一般的な使用の理由から、これらのデータをビット、数値、要素、シンボル、文字、項、数などと呼ぶことが便利である。
【0122】
理解すべきことは、これらおよび同様の用語の全ては、適切な物理量に関連付けられ、これらの量に適用される便利なラベルにすぎないことである。特に明記しない限りまたは議論から明白であるように、説明の全体において「処理する」、「演算する」、「計算する」、「決定する」または「表示する」などを含む用語を利用する議論は、コンピュータシステムメモリ、レジスタもしくは他の情報記憶装置、伝送装置または表示装置内の物理量として表されたデータを処理および変換するコンピュータシステムまたは同様の電子コンピューティング装置の動作およびプロセスを指す。
【0123】
本明細書の実施形態は、上記で説明した方法の1つ以上のステップを実行するためのプロセッサにも関連する。プロセッサは、コンピュータに記憶されたコンピュータプログラムによって選択的に起動または再構成される専用のプロセッサであってもよい。このようなコンピュータプログラムは、限定しないが、光ディスク、ROM、CD-ROM、磁気ディスク、RAM、EPROM、EEPROM、磁気または光カード、不揮発性メモリを有するUSBキーを含むフラッシュメモリを含む任意の種類のディスク、または各々がコンピュータシステムバスに接続され、電子命令を記憶するのに適した任意の種類の媒体を含む非一時的コンピュータ可読記憶媒体に記憶されてもよい。
【0124】
本明細書は、いくつかの完全にハードウェアの実施形態、いくつかの完全にソフトウェアの実施形態、またはハードウェア要素とソフトウェア要素の両方を含むいくつかの実施形態を含むことができる。いくつかの実施形態において、本明細書は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されないソフトウェアで実装される。
【0125】
さらに、説明は、コンピュータまたは任意の命令実行システムによってまたはそれに関連して使用されるプログラムコードを提供するコンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形をとることができる。本説明の目的のために、コンピュータ使用可能またはコンピュータ可読媒体は、命令実行システム、機械または装置によってまたはそれに関連して使用されるプログラムを含有、記憶、通信、伝搬、または輸送することができる任意の装置であることができる。
【0126】
プログラムコードを記憶または実行するのに適したデータ処理システムは、システムバスを介してメモリ要素に直接にまたは間接に接続された少なくとも1つのプロセッサを含む。メモリ要素は、プログラムコードの実際の実行中に使用されるローカルメモリと、大容量記憶装置と、実行中に大容量記憶装置からコードを取り出さなければならない回数を減らすために少なくともいくつかのプログラムコードの一時的な記憶を提供するキャッシュメモリとを含んでもよい。