JP7228682B2 - 動画解析のためのゲーティングモデル - Google Patents

動画解析のためのゲーティングモデル Download PDF

Info

Publication number
JP7228682B2
JP7228682B2 JP2021514518A JP2021514518A JP7228682B2 JP 7228682 B2 JP7228682 B2 JP 7228682B2 JP 2021514518 A JP2021514518 A JP 2021514518A JP 2021514518 A JP2021514518 A JP 2021514518A JP 7228682 B2 JP7228682 B2 JP 7228682B2
Authority
JP
Japan
Prior art keywords
video
model
frames
training
implementations
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021514518A
Other languages
English (en)
Other versions
JP2022523606A (ja
Inventor
ラマスワミー,シャラド
チャウドフリ,ソウリッシュ
ロス,ジョセフ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2022523606A publication Critical patent/JP2022523606A/ja
Application granted granted Critical
Publication of JP7228682B2 publication Critical patent/JP7228682B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44008Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics in the video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/25Fusion techniques
    • G06F18/254Fusion techniques of classification results, e.g. of results related to same input data
    • G06F18/256Fusion techniques of classification results, e.g. of results related to same input data of results relating to different input data, e.g. multimodal recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/169Annotation, e.g. comment data or footnotes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/80Fusion, i.e. combining data from various sources at the sensor level, preprocessing level, feature extraction level or classification level
    • G06V10/809Fusion, i.e. combining data from various sources at the sensor level, preprocessing level, feature extraction level or classification level of classification results, e.g. where the classifiers operate on the same input data
    • G06V10/811Fusion, i.e. combining data from various sources at the sensor level, preprocessing level, feature extraction level or classification level of classification results, e.g. where the classifiers operate on the same input data the classifiers operating on different input data, e.g. multi-modal recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/41Higher-level, semantic clustering, classification or understanding of video scenes, e.g. detection, labelling or Markovian modelling of sport events or news items
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/46Extracting features or characteristics from the video content, e.g. video fingerprints, representative shots or key frames
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/46Extracting features or characteristics from the video content, e.g. video fingerprints, representative shots or key frames
    • G06V20/47Detecting features for summarising video content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/439Processing of audio elementary streams
    • H04N21/4394Processing of audio elementary streams involving operations for analysing the audio stream, e.g. detecting features or characteristics in audio streams

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Oral & Maxillofacial Surgery (AREA)
  • Human Computer Interaction (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Image Analysis (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • User Interface Of Digital Computer (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

背景
ユーザは、オンライン画像管理サービスに画像や動画をアップロードする。動画アノテーションを行うサービスもある。たとえば、動画アノテーションは、人の顔、オブジェクト(たとえば、誕生日ケーキ)、動き(たとえば、ジャンプ、走るなど)、音(たとえば、笑い声)などを示すラベルをアップロード動画に含む。プログラムに基づいた技術を用いて動画を解析することによって、動画アノテーションが生成される。
本明細書において提供する背景説明は、本開示の内容を一般的に提示するためである。現在知られている発明者らの当該背景セクションに記載されている範囲の業績、および、当該説明の局面(出願時に先行技術としてみなされない限り)は、明示的にも暗示的にも本開示に対する先行技術として示されたり認められたりしていない。
概要
本明細書において説明する実施態様は、動画を解析して1つ以上の動画アノテーションを付加するかどうかを判断するための方法、デバイス、およびコンピュータ読み取り可能な媒体に関する。いくつかの実施態様では、コンピュータにより実現される方法は、複数のフレームおよび対応する音声から構成される動画を取得するステップを含む。この方法は、さらに、目標フレームレートに基づいてサンプリングを実行し、複数のフレームのサブセットを選択するステップを含む。いくつかの実施態様では、目標フレームレートは、動画のフレームレート以下である。この方法は、さらに、複数のフレームからなるサブセットに含まれるフレームごとに音声スペクトログラムを抽出するステップを含む。この方法は、さらに、複数のフレームからなるサブセットの解像度を下げるステップと、解像度を下げるステップの後、複数のフレームからなるサブセットおよび対応する音声スペクトログラムに機械学習ベースのゲーティングモデルを適用するステップを含む。この方法は、さらに、ゲーティングモデルの出力として、動画を解析して1つ以上の動画アノテーションを付加するかどうかについての指示を取得するステップを含む。
いくつかの実施態様では、方法は、さらに、ゲーティングモデルを適用するステップの前に、動画を複数のセグメントに分割するステップを含み得、各セグメントは、複数のフレームを含み、ゲーティングモデルを適用するステップは、複数のセグメントに対して順番に繰り返し行われ、指示は、各イテレーションにおいて生成される。いくつかの実施態様では、複数のセグメントに含まれる各セグメントは、複数のセグメントに含まれる別のセグメントと重なり合ってもよい。いくつかの実施態様では、特定のイテレーションにおける指示が動画を解析するという指示であった場合、複数のセグメントのうち1つ以上のセグメントが除外されるようにゲーティングモデルの適用を終了させる。
いくつかの実施態様では、ゲーティングモデルは、ゲーティングモデルに提供される入力動画に特定の特徴が存在するかどうかを判断するように訓練される。いくつかの実施態様では、特定の特徴は、人の顔、ある種類のオブジェクト、ある種類の動き、またはある種類の音声のうち、少なくとも1つを含む。
いくつかの実施態様では、ゲーティングモデルを適用するステップは、特定の特徴が存在する可能性を判断する第1モデルを適用するステップと、入力として特定の特徴が存在する可能性を受信し、動画を解析するかどうかについての指示を生成する第2モデルを適用するステップとを含み得る。いくつかの実施態様では、第1モデルは、動画を解析するように訓練された複数の層を含む第1の畳み込みニューラルネットワークと、音声を解析するように訓練された複数の層を含む第2の畳み込みニューラルネットワークと、第1の畳み込みニューラルネットワークの出力および第2の畳み込みニューラルネットワークの出力を入力として受信し、特定の特徴が第2モデルに存在する可能性を提供する、複数の層を含むフュージョンネットワークとを含む。いくつかの実施態様では、第2モデルは、ヒューリスティクス、再帰型ニューラルネットワーク、またはマルコフ連鎖解析手法のうち、1つ以上を用いて実装される。いくつかの実施態様では、方法は、第2モデルに追加入力を提供するステップをさらに含み得る。追加入力は、特定の特徴が存在すると検出された複数のフレームからなるサブセットのうち、特定のフレームの一部のID、複数のフレームからなるサブセットに特定の特徴が現れている期間、または、早期終了に関するヒューリスティクス、のうちの1つ以上を含み得る。これらの実施態様では、第2モデルは、追加入力を利用して指示を生成する。
いくつかの実施態様では、方法は、指示が動画を解析するという指示であった場合、動画をプログラムで解析して1つ以上の動画アノテーションを付加するステップをさらに含み得る。動画アノテーションは、動画における、顔、特定の種類のオブジェクト、特定の種類の動き、または特定の種類の音声、のうちの1つ以上の存在を示す1つ以上のラベルを含み得る。
いくつかの実施態様は、動画を解析して1つ以上の動画アノテーションを付加するためのコンピューティングデバイスを含み得る。このデバイスは、プロセッサと、命令を格納したメモリとを備え得る。当該命令は、プロセッサによって実行されると、プロセッサに動作を実行させ、動作は、複数のフレームおよび対応する音声から構成される動画を取得する動作を含み得る。動作は、動画のフレームレート以下の目標フレームレートに基づいてサンプリングを実行し、複数のフレームのサブセットを選択する動作をさらに含み得る。動作は、複数のフレームからなるサブセットに含まれるフレームごとに音声スペクトログラムを抽出する動作をさらに含み得る。動作は、複数のフレームからなるサブセットの解像度を下げる動作をさらに含み得る。動作は、解像度を下げるステップの後、複数のフレームからなるサブセットおよび対応する音声スペクトログラムに機械学習ベースのゲーティングモデルを適用する動作をさらに含み得る。動作は、ゲーティングモデルの出力として、動画を解析して1つ以上の動画アノテーションを付加するかどうかについての指示を取得する動作をさらに含み得る。
いくつかの実施態様では、メモリは、さらに命令を格納し得、命令は、プロセッサによって実行されると、プロセッサにさらに動作を実行させ、動作は、ゲーティングモデルを適用する動作の前に、動画を複数のセグメントに分割する動作を含む。各セグメントは、複数のフレームを含み得る。これらの実施態様では、ゲーティングモデルを適用する動作は、複数のセグメントに対して順番に繰り返し行われ、指示は、各イテレーションにおいて生成される。
本明細書において説明する実施態様は、さらに、動画を解析して特定の特徴に対応するアノテーションを付加するかどうかについての指示を生成するように機械学習ベースのゲーティングモデルを訓練するための方法、デバイス、およびコンピュータ読み取り可能な媒体に関する。機械学習ベースのゲーティングモデルは、特定の特徴が動画に存在する可能性を動画の動画フレームに基づいて生成する第1の畳み込みニューラルネットワークを含む第1モデルと、入力として特定の特徴が動画に存在する可能性を受信し、指示を生成する第2モデルとを含み得る。いくつかの実施態様では、コンピュータにより実現される方法は、訓練セットを取得するステップを含み、訓練セットは、複数の訓練動画を含む。各訓練動画は、複数のフレームを含み得る。各訓練動画は、対応する高解像度動画の、低解像度のサンプリングされたバージョンの動画である。訓練セットは、さらに、複数の訓練ラベルを含む。各訓練ラベルは、複数の訓練動画のうちの1つ以上の訓練動画に対応する高解像度動画における特定の特徴の存在を示す。
この方法は、さらに、ゲーティングモデルを訓練するステップを含み、訓練するステップは、第1モデルを訓練動画に適用することによって、特定の特徴が訓練動画に存在する可能性を生成するステップを含む。ゲーティングモデルを訓練するステップは、さらに、第2モデルを適用することによって、訓練動画を解析して特定の特徴に対応するアノテーションを付加するかどうかについての指示を特定の特徴が訓練動画に存在する可能性に基づいて生成するステップを含む。ゲーティングモデルを訓練するステップは、さらに、対応する高解像度動画に関連付けられた訓練ラベル、および指示に基づいて、フィードバックデータを生成するステップと、訓練入力として、フィードバックデータを第1モデルおよび第2モデルに提供するステップとを含む。ゲーティングモデルを訓練するステップは、訓練セットに含まれる訓練動画ごとに実行され得る。
いくつかの実施態様では、特定の特徴は、人の顔、ある種類の動き、またはある種類のオブジェクトのうち少なくとも1つを含む。いくつかの実施態様では、訓練セットに含まれる複数の訓練動画は、特定の特徴が存在する少なくとも1つの動画と、特定の特徴が存在しない少なくとも1つの動画とを含む。これらの実施態様では、ゲーティングモデルを訓練するステップは、第1モデルの第1の畳み込みニューラルネットワークの1つ以上のノードの重みを自動的に調整するステップ、または、第1モデルの第1の畳み込みニューラルネットワークの1つ以上の対のノード間の接続性を自動的に調整するステップのうち、1つ以上のステップを含む。
いくつかの実施態様では、ゲーティングモデルの第2モデルは、ヒューリスティクスを基にしたモデル、再帰型ニューラルネットワーク、またはマルコフ連鎖解析モデルのうち、1つ以上を含む。これらの実施態様では、ゲーティングモデルを訓練するステップは、ヒューリスティクスを基にしたモデルの1つ以上のパラメータを自動的に調整するステップ、再帰型ニューラルネットワークの1つ以上のパラメータを自動的に調整するステップ、またはマルコフ連鎖解析モデルの1つ以上のパラメータを自動的に調整するステップのうち、1つ以上のステップを含む。
いくつかの実施態様では、ゲーティングモデルを訓練するステップは、訓練動画の複数のフレームをフレームからなる複数のスタックに分割するステップをさらに含み得る。各スタックは、少なくとも1つのフレームを含み得る。複数のスタックは、順序付けられたシーケンスに編成され得る。これらの実施態様では、ゲーティングモデルを訓練するステップは、フレームからなる複数のスタックに含まれるフレームからなるスタックごとに順次実行される。これらの実施態様では、第2モデルは、生成された指示を訓練動画のスタックごとに格納するように構成される。さらには、これらの実施態様では、特定のスタックについての指示を生成するステップは、順序付けられたシーケンスに含まれる1つ以上の前のスタックについてのそれぞれ格納された指示にさらに基づく。
いくつかの実施態様では、複数の訓練動画に含まれる1つ以上の訓練動画は、複数のフレームに対応する音声スペクトログラムを含み得る。これらの実施態様では、第1モデルは、音声スペクトログラムを解析するように訓練された第2の畳み込みニューラルネットワークと、第1の畳み込みニューラルネットワークおよび第2の畳み込みニューラルネットワークの出力を入力として受信し、特定の特徴が動画に存在する可能性を生成するフュージョンネットワークとをさらに含み得る。
本明細書において説明する1つ以上の実施態様で用いられ得る例示的なネットワーク環境のブロック図である。 いくつかの実施態様に係る、例示的な方法200を示すフロー図である。 いくつかの実施態様に係る、例示的なゲーティングモデル300の動作を示す図である。 いくつかの実施態様に係る、機械学習ベースのゲーティングモデルを訓練するための例示的な方法400を示すフロー図である。 例示的な動画およびゲーティングモデルの対応する出力を示す図である。 本明細書において説明する1つ以上の実施態様で用いられ得る例示的なデバイスのブロック図である。
詳細な説明
ユーザは、カメラ、たとえば、スマートフォンまたはその他のデバイスを用いて動画を撮影する。ユーザは、クライアントデバイスまたはサーバ、たとえば、動画ホスティングサービスを提供するサーバ上にこのような動画を格納するであろう。たとえば「ジョンの誕生日」、「マリアの卒業」、「先週末の私の野球の試合」など、キーワードまたはキーフレーズを使うことによってユーザが動画を検索することを可能にするアプリケーションが、ユーザのクライアントデバイスおよび/またはサーバを介して提供されてもよい。
ユーザの動画のクイック検索を可能にするために、このアプリケーションは、アノテーションを生成し、ユーザの動画と対応付けて格納してもよい。アノテーションは、ラベルであり得る。または、ラベルを含み得る。たとえば、アノテーションは、動画に写る特徴、たとえば、人の顔の存在(および、この顔が特定の人物に対応付けられているかどうか)、ある種のオブジェクトの存在(たとえば、ケーキ、キャンドル、野球バットなど)、ある種の動き、行動、または活動の存在(たとえば、ランニングする、ダンスする、スポーツをするなど)を示してもよい。ユーザが検索を行った場合、アノテーションが解析され、検索に一致する動画が特定される。たとえば、「先週末の私の野球の試合」という検索に応答してアノテーションを解析し、1つ以上の特定のアノテーション、たとえば、「野球バット」、「野球帽」、「スタジアム」などが動画に対応付けられているかどうかを判断し、この動画が検索に一致するかどうかが判断される。ユーザの同意が得られている場合、アノテーションを自動的に解析し、たとえば、動画が自動的に共有されるユーザを見つける、ユーザデバイス上に提示される関連動画またはその一部を見つける(たとえば、テーマ別の提示、または、写っているオブジェクト、活動など、動画コンテンツに基づいたその他の画像ベースの作品に結合される)など、特定のシステムタスクを実行するための特定の基準に一致した動画を特定することができる。
動画を解析して当該動画に関する1つ以上のアノテーションを付加することは、計算コストがかかる場合がある。アノテーションが特定の特徴に対応する場合、動画全体を解析してこの特定の特徴のうちの1つ以上が動画(または、動画の1つ以上のセグメント)に存在するかどうかを判断する必要があり、特定の特徴が存在する場合、対応するアノテーションが動画に付加され得る。この作業は無駄になり得る。たとえば、特定の特徴が動画に存在しなかった場合、動画の解析によって計算リソースおよび計算能力を浪費してしまうであろう。
さらには、動画を解析してアノテーションを付加することは実現可能でない場合があり、または、特定のデバイス、たとえば、処理能力に限りがあるデバイス、電力容量に限りがあるデバイス(たとえば、電池式デバイス)上では特にコストがかかるであろう。特定の特徴を含まない複数の動画を含んだ動画ライブラリをユーザが所有していた場合、動画を解析するという計算コストがかかる作業が複数の動画の各々に対して行われてしまうであろう。さらには、動画の一部のみが特定の特徴を写していた場合、動画全体を解析することによって、計算リソースが無駄になってしまうであろう。
いくつかの実施態様は、方法、デバイス、および動画のゲーティング解析を行うための命令を有するコンピュータ読み取り可能な媒体を含む。動画または動画の1つ以上のセグメントを解析して1つ以上の動画アノテーションを付加するかどうかについての指示を生成する訓練済みの機械学習ベースのゲーティングモデルを適用することによって、ゲーティング解析を行ってもよい。
この指示を生成するためにゲーティングモデルを利用することによって、いくつかの技術的利点がもたらされるであろう。たとえば、ゲーティングモデルは、動画を解析して特定の特徴が存在するかどうかを検出する動画解析技術、および対応するアノテーションを付加するために利用される動画解析技術よりも計算コストが大幅に低く抑えられるであろう。
たとえば、低解像度のサンプリングされた、動画のフレームのサブセットにゲーティングモデルを適用してもよいため、これに応じて、元の高解像度動画を解析するよりも計算コストが低くなる。さらには、その後、ゲーティングモデルが肯定指示を生成した動画のみを解析すればよいので、計算コストおよび計算能力の無駄をなくすことができる。
また、ゲーティングモデルの利用によって、計算能力が低いまたは電力に限りがあるデバイス上で動画アノテーションを実行することが可能になる。さらには、いくつかの実施態様では、ゲーティングモデルからの指示は、解析する動画の1つ以上のセグメントに特定の特徴が存在する可能性に基づく当該1つ以上のセグメントのIDを含んでもよい。これらの実施態様では、動画のその他のセグメントが、動画アノテーションを付加するための解析から除外され得るので、計算コストの無駄をなくすことができる。ゲーティングモデルは、任意の数の動画に適用することができる。たとえば、ユーザが多数の動画、たとえば、数千本の動画を所有していた場合、すべての動画を解析するのではなく、ゲーティングモデルを適用して、アノテーションを付加するために計算コストが高い技術を利用してさらに解析する動画を特定することができる。この例では、ゲーティングモデルが特定したさらなる解析用の動画のサブセット(たとえば、数千本の動画のうちの300本の動画)、たとえば、100本の動画のうちの10本の動画をさらに解析するが、その他の動画をさらに解析することはない。総計算コスト(数千本の動画にゲーティングモデルを利用する計算コストと、コストが高い技術を利用して300本の動画をさらに解析する計算コストとの合計)は、コストが高い技術を利用して数千本の動画を解析する場合よりも低い。
いくつかの実施態様では、ゲーティングモデルを2段階モデルとして実装してもよい。2段階モデルは、特定の特徴が動画に存在する可能性を判断するように訓練された第1モデルと、可能性予測(または、一連の可能性予測)、たとえば、第1モデルによる出力を、動画を解析するかどうかの指示を生成するための入力として利用するように訓練された第2モデルとを含む。いくつかの実施態様では、この2段階モデルは、特定の特徴が存在する可能性を判断する複数の異なる第1モデルと、1つの第2段階モデルとを含んでもよい。
いくつかの実施態様では、第1モデルと第2モデルとを含む2段階モデルとしてゲーティングモデルを実装した場合、第1モデルと第2モデルとを互いに独立して訓練してもよい。たとえば、第1モデルを、特定の特徴(たとえば、人の顔、ある種のオブジェクト、ある種の動き、ある種の音声など)が動画に存在する可能性を判断するように訓練してもよい。この訓練は、たとえば、訓練動画に対応付けられた訓練ラベルに基づいて取得されたフィードバックデータを提供することによって、第2モデルの訓練とは独立して行うことができる。
たとえば、第2モデルを、可能性予測(または、一連の可能性予測)を入力として利用し、動画を解析してアノテーションを付加するかどうかについての指示を生成するように訓練してもよい。この訓練は、たとえば、異なる可能性値を入力として提供し、訓練ラベルをフィードバックデータとして提供することによって、第1モデルの訓練とは独立して行うことができる。よって、ゲーティングモデル全体の性能(たとえば、正解率、計算コストなど)の向上に伴い、各モデルを他方のモデルとは別個に評価および訓練できるようになる。
図1では、同様の参照番号を用いて同様の要素を示している。「156a」など、参照番号に続く文字は、その特定の参照番号を有する要素をこのテキストが具体的に指していることを示す。「156」など、文字が後に続かないテキストに含まれる参照番号は、図面においてこの参照番号を持ついずれかまたはすべて要素を指している(たとえば、テキストにある「156」は、図にある「156a」および/または「156b」という参照番号を指している)。
図1は、本明細書において説明するいくつかの実施態様において用いられ得る例示的なネットワーク環境100のブロック図である。いくつかの実施態様では、ネットワーク環境100は、1つ以上のサーバシステム、たとえば、図1の例のサーバシステム102を含む。サーバシステム102は、たとえば、ネットワーク130と通信を行うことができる。サーバシステム102は、サーバ装置104と、データベース106またはその他の記憶装置とを備え得る。データベース106は、1つ以上の画像および/または動画、ならびに当該1つ以上の画像および/または動画に対応付けられたメタデータを格納してもよい。いくつかの実施態様では、サーバ装置104は、画像管理アプリケーション156bを提供してもよい。画像管理アプリケーション156bは、データベース106に格納された画像にアクセスしてもよい。
また、ネットワーク環境100は、1つ以上のクライアントデバイス、たとえば、クライアントデバイス120、122、124、および126を含み得る。クライアントデバイス120、122、124、および126は、互いに通信を行ってもよく、ならびに/またはネットワーク130を介してサーバシステム102と通信を行ってもよい。ネットワーク130は、インターネット、ローカルエリアネットワーク(LAN)、ワイヤレスネットワーク、スイッチまたはハブ接続などのうちの1つ以上を含む任意の種類の通信ネットワークであり得る。いくつかの実施態様では、ネットワーク130は、たとえば、ピアツーピア無線プロトコル(たとえば、Bluetooth(登録商標)、Wi-Fi Directなど)などを利用したデバイス間のピアツーピア通信を含み得る。2つのクライアントデバイス120および122間のピアツーピア通信の一例を、矢印132によって示している。
説明を容易にするために、図1には、サーバシステム102、サーバ装置104、およびデータベース106からなる1つのブロックを示し、クライアントデバイス120、122、124、および126の4つのブロックを示している。サーバブロック102、104、および106は、複数のシステム、複数のサーバ装置、および複数のネットワークデータベースを表してもよく、これらのブロックは、図示する構成とは異なる構成で提供され得る。たとえば、サーバシステム102は、その他のサーバシステムとネットワーク130を介して通信可能な複数のサーバシステムを表し得る。いくつかの実施態様では、サーバシステム102は、たとえば、クラウドホスティングサーバを含み得る。いくつかの例では、データベース106および/またはその他の記憶装置は、サーバ装置104とは別個の、サーバ装置104およびその他のサーバシステムとネットワーク130を介して通信可能なサーバシステムブロック(複数可)で提供され得る。
任意の数のクライアントデバイスがあってもよい。各クライアントデバイスは、任意の種類の電子機器、たとえば、デスクトップコンピュータ、ラップトップコンピュータ、ポータブルまたはモバイル機器、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、TVセットトップボックスまたは娯楽機器、ウェアラブルデバイス(たとえば、表示用眼鏡またはゴーグル、腕時計、ヘッドセット、アームバンド、装身具など)、PDA(Personal Digital Assistant)、メディアプレーヤ、ゲーム機などであり得る。また、いくつかのクライアントデバイスは、データベース106に類似したローカルデータベースまたはその他のストレージを含んでもよい。いくつかの実施態様では、ネットワーク環境100は、図示した構成要素のすべてを有さなくてもよく、および/または、本明細書に記載の要素の代わりにまたはそれらに加えて、その他の種類の要素を含むその他の要素を有してもよい。
様々な実施態様では、エンドユーザU1、U2、U3、およびU4は、それぞれのクライアントデバイス120、122、124、および126を利用してサーバシステム102および/または互いに通信を行ってもよい。いくつかの例では、ユーザU1、U2、U3、およびU4は、サーバシステム102上に実装されたネットワークサービス、たとえば、ソーシャルネットワークサービス、画像ホスティングサービス、またはその他の種類のネットワークサービスを介してそれぞれのクライアントデバイスおよび/またはサーバシステム102上で動作するアプリケーションを介して、互いにやり取りを行ってもよい。たとえば、それぞれのクライアントデバイス120、122、124、および126は、1つ以上のサーバシステム、たとえば、システム102との間でデータを通信してもよい。
いくつかの実施態様では、通信されたコンテンツまたはサーバシステム102および/もしくはネットワークサービスにアップロードされた共有コンテンツを各クライアントデバイスが受信できるよう、サーバシステム102は、適切なデータをクライアントデバイスに提供してもよい。いくつかの例では、ユーザU1~U4は、音声会議もしくは映像会議、音声チャット、動画チャット、もしくはテキストチャット、またはその他の通信モードもしくはアプリケーションを介してやり取りすることができる。サーバシステム102によって実装されるネットワークサービスは、ユーザに様々な通信を行わせたり、リンクや関連付けを行わせたり、画像、テキスト、動画、音声、ならびにその他の種類のコンテンツなど、共有コンテンツをアップロードならびに投稿させたり、および/またはその他の機能を行わせたりするシステムを含み得る。たとえば、クライアントデバイスは、クライアントデバイスに送信またはストリーム配信され、ならびにサーバおよび/もしくはネットワークサービスを介して異なるクライアントデバイスから(もしくは、当該異なるクライアントデバイスから直接)発信された、もしくはサーバシステムおよび/もしくはネットワークサービスから発信されたコンテンツの投稿などの受信データを表示することができる。いくつかの実施態様では、クライアントデバイスは、たとえば上述したクライアントデバイス間のピアツーピア通信を利用して互いに直接通信を行うことができる。いくつかの実施態様では、「ユーザ」とは、1つ以上のプログラム仮想エンティティ、およびシステムまたはネットワークと接続している人を含み得る。
いくつかの実施態様では、クライアントデバイス120、122、124、および/または126のうちのいずれも、1つ以上のアプリケーションを提供することができる。たとえば、図1に示すように、クライアントデバイス120は、カメラアプリケーション152および画像管理アプリケーション156aを提供してもよい。また、クライアントデバイス122~126が同様のアプリケーションを提供してもよい。たとえば、カメラアプリケーション152は、各クライアントデバイス(たとえば、ユーザU1~U4)のユーザにユーザデバイスのカメラを使って画像を撮影する機能を提供してもよい。たとえば、カメラアプリケーション152は、クライアントデバイス120上で動作するソフトウェアアプリケーションであってもよい。
いくつかの実施態様では、カメラアプリケーション152は、ユーザインターフェースを提供してもよい。たとえば、ユーザインターフェースによって、クライアントデバイス120のユーザが画像撮影モード、たとえば、静止画像(またはフォト)モード、バーストモード(たとえば、短時間で連続した複数の画像を撮影する)、動画像モード、動画モード、HDR(High Dynamic Range)モードなどを選択することが可能になる。たとえば、動画モードは、複数のフレームを含んだ動画の撮影に相当してもよく、任意の長さであってもよい。さらには、動画モードは、異なるフレームレート、たとえば、25fps(フレーム/秒)、30fps、50fps、60fpsなどをサポートしてもよい。画像撮影の1つ以上のパラメータが、動画の撮影中に変更されてもよい。たとえば、ユーザは、動画の撮影中、クライアントデバイスを用いてシーンをズームインしたり、ズームアウトしたりしてもよい。
いくつかの実施態様では、カメラアプリケーション152は、図2および図4を参照して本明細書において説明する方法を(たとえば、一部またはすべて)実装してもよい。いくつかの実施態様では、画像管理アプリケーション156aおよび/または画像管理アプリケーション156bは、図2および図4を参照して本明細書において説明する方法を(たとえば、一部またはすべて)実装してもよい。
クライアントデバイス120のハードウェアおよび/またはソフトウェアを用いてカメラアプリケーション152および画像管理アプリケーション156aを実装してもよい。それぞれ異なる実施態様では、画像管理アプリケーション156aは、たとえば、クライアントデバイス120~124のうちのいずれかのクライアントデバイス上で実行されるスタンドアロンアプリケーションであってもよく、または、サーバシステム102上に提供された画像管理アプリケーション156bと連動して動作してもよい。
ユーザの許可がある場合、画像管理アプリケーション156は、画像または動画を(たとえば、サーバシステム102のデータベース106に)格納(たとえば、バックアップ)する自動機能、画像または動画を強調する自動機能、画像または動画の手ぶれ補正を行う自動機能、画像にある1つ以上の特徴、たとえば、顔、体、ある種のオブジェクト、ある種の動きなどを認識する自動機能など、1つ以上の自動機能を実行してもよい。いくつかの例では、加速度計、ジャイロスコープ、もしくはクライアントデバイス120のその他のセンサからの入力に基づいて、および/または動画像または動画の複数のフレームの比較に基づいて画像もしくは動画の手ぶれ補正を行ってもよい。
また、画像管理アプリケーション156は、ユーザインターフェースに(たとえば、1枚の画像を含むワンナップ表示、複数の画像を含むグリッド表示などで)画像および/または動画を表示する画像管理機能、画像または動画を編集(たとえば、画像設定を調整する、フィルタを適用する、画像の焦点を変更する、動画像または動画の1つ以上のフレームを取り除く)画像管理機能、(たとえば、クライアントデバイス120~126の)他のユーザと画像を共有する画像管理機能、画像をアーカイブに入れる(たとえば、主要ユーザインターフェースに現れないように画像を格納する)画像管理機能、画像ベースの作品(たとえば、コラージュ、フォトブック、アニメーション、ストーリー、ビデオループなど、モーションベースのアーティファクト)を生成する画像管理機能などの画像管理機能を提供してもよい。いくつかの実施態様では、画像ベースの作品を生成するために、画像管理アプリケーション156は、画像または動画に対応付けられた1つ以上のラベルを利用してもよい。
いくつかの実施態様では、画像管理アプリケーション156は、画像にある1つ以上の特徴を検出するためのオブジェクト認識技術を利用することによって画像または動画をプログラムで解析してもよい。いくつかの実施態様では、画像管理アプリケーション156は、画像または動画に対応付けられた1つ以上のラベルをデータベース106および/またはクライアントデバイス(図示せず)上のローカルデータベースに格納してもよい。
データベース106は、画像および/または動画のうちの1つ以上と対応付けられたラベル(たとえば、コンテンツアノテーション)を格納してもよい。たとえば、ラベルは、画像または動画に特定の特徴が現れているかどうかについての指示を含んでもよい。たとえば、当該特定の特徴は、たとえば、人の顔、ある種のオブジェクト(たとえば、誕生日ケーキ、スポーツ用品、木など)、ある種の動き(たとえば、ジャンプ、スキーなど)、ある種の音声(たとえば、人の会話、笑い声、音楽、自然の音)などであってもよい。また、ラベルのうちの1つ以上が特定のタイムスタンプを含んでもよい。たとえば、ある種の動きに対応付けられたラベルについてのタイムスタンプは、画像または動画に含まれる動きの始まりと終わりにそれぞれ対応する開始タイムスタンプおよび終了タイムスタンプを含んでもよい。いくつかの実施態様では、たとえば、ビーチ傍でのサンセット、スキーをしている人、バースデーシーン、ウエディング、卒業など、ラベルは、画像または動画に写るある種のシーンを示してもよい。
クライアントデバイス120、122、124、ならびに/または126上のユーザインターフェースによって、画像、動画、データ、およびその他のコンテンツ、および通信、プライバシー設定、通知、およびその他のデータを含む、ユーザコンテンツならびにその他のコンテンツの表示を可能にすることができる。このようなユーザインターフェースを、クライアントデバイス上のソフトウェア、サーバ装置上のソフトウェア、ならびに/またはサーバ装置104上で実行されているクライアントソフトウェアとサーバソフトウェアとの組合せ、たとえば、サーバシステム102と通信中のアプリケーションソフトウェアもしくはクライアントソフトウェアを用いて表示することができる。このユーザインターフェースを、クライアントデバイスまたはサーバ装置の表示装置、たとえば、タッチスクリーンもしくはその他のディスプレイ画面、プロジェクタなどで表示することができる。いくつかの実施態様では、サーバシステム上で動作するアプリケーションプログラムは、クライアントデバイスと通信を行って当該クライアントデバイスにおけるユーザ入力を受信し、クライアントデバイスにおける画像データ、音声データなどのデータを出力することができる。
いくつかの実施態様では、サーバシステム102および/または1つ以上のクライアントデバイス120~126のうちのいずれも、通信アプリケーションプログラムを提供し得る。この通信プログラムによって、システム(たとえば、クライアントデバイスまたはサーバシステム)は、その他のデバイスとの通信についてのオプションを提供できるようになるであろう。通信プログラムは、サーバシステムまたはクライアントデバイスに対応付けられた表示装置上に表示される1つ以上の関連するユーザインターフェースを提供し得る。ユーザインターフェースは、通信モード、通信するユーザまたはデバイスなどを選択できる様々なオプションをユーザに提供してもよい。いくつかの例では、通信プログラムは、たとえば同報通信エリアにコンテンツの投稿を送信もしくは同報通信できるオプションを提供し、および/またはコンテンツの投稿がデバイスによって受信されたことを示す通知、たとえば、投稿用の規定の同報通信エリアにデバイスがあることを示す通知を出力できる。通信プログラムは、送信したコンテンツの投稿および受信したコンテンツの投稿を、たとえば様々な形式で表示または出力し得る。コンテンツの投稿は、たとえば、他のユーザと共有している画像を含み得る。
本明細書において説明する特徴のその他の実施態様は、任意の種類のシステムおよび/またはサービスを利用することができる。たとえば、ソーシャルネットワーキングサービスの代わりまたはソーシャルネットワーキングサービスに加えて、その他のネットワーク接続された(たとえば、インターネットに接続された)サービスを利用できる。いずれの種類の電子機器も、本明細書において説明する特徴を利用することができる。いくつかの実施態様は、本明細書において説明する1つ以上の特徴を、コンピュータネットワークから切断されたもしくはコンピュータネットワークに断続的に接続された1つ以上のクライアント装置またはサーバ装置上で提供し得る。いくつかの例では、表示装置を備えるまたは表示装置が接続されたクライアントデバイスは、クライアントデバイスにローカルな記憶装置上に格納された、たとえば、通信ネットワーク上で以前に受信したデータ(たとえば、コンテンツ)を表示し得る。
図2は、いくつかの実施態様に係る、例示的な方法200を示すフロー図である。いくつかの実施態様では、たとえば、図1に示すサーバシステム102上で方法200を実装することができる。いくつかの実施態様では、図1に示す1つ以上のクライアントデバイス120、122、124、もしくは126、1つ以上のサーバ装置、ならびに/またはサーバ装置(複数可)およびクライアントデバイス(複数可)の両方の上で方法200の一部またはすべてを実装することができる。記載の例では、実装システムは、1つ以上のデジタルプロセッサまたは処理回路(「プロセッサ」)と、1つ以上の記憶装置(たとえば、データベース106またはその他のストレージ)とを備える。いくつかの実施態様では、1つ以上のサーバおよび/または1つ以上のクライアントの異なる構成要素が、方法200の異なるブロックまたはその他の部分を実行することができる。いくつかの例では、第1デバイスが方法200のブロックを実行すると記載されている。いくつかの実施態様は、結果またはデータを第1デバイスに送信することができる1つ以上のその他のデバイス(たとえば、その他のクライアントデバイスまたはサーバ装置)によって実行される方法200の1つ以上のブロックを有し得る。
いくつかの実施態様では、方法200または当該方法の一部は、システムによって自動的に開始させることができる。いくつかの実施態様では、実装システムは、第1デバイスである。たとえば、方法(またはその一部)を、定期的に実行したり、たとえば、ユーザがアプリケーション(たとえば、カメラアプリケーション152、画像管理アプリケーション156など)を使用して動画撮影を開始した、システムに新たにアップロードされたもしくはシステムがアクセス可能な1つ以上の動画を受信した、方法200の最後の実行から所定時間が経過した、および/もしく方法が読み込む設定において指定可能な1つ以上のその他の条件が発生したなど、1つ以上の特定のイベントまたは条件に基づいて実行したりすることができる。いくつかの実施態様では、このような条件は、格納されたユーザのカスタム基本設定においてユーザによって指定され得る。
様々な実施態様では、クライアントデバイス120は、スタンドアロンカメラ、カメラを備える別のデバイス(たとえば、スマートフォン、タブレット端末、コンピュータ、スマートウォッチなどのウェアラブルデバイス、ヘッドセットなど)、または別のデバイスが撮影した画像もしくは動画を受信できるその他のクライアントデバイスであり得る。いくつかの実施態様では、クライアントデバイス120は、撮影専用のデバイス、たとえば、画面を備えないカメラであってもよい。いくつかの実施態様では、クライアントデバイス120は、表示専用デバイス、たとえば、画像もしくは動画を表示できる画面を備えるが、カメラ機能、または画像もしくは動画を撮影するためのその他の機能を持たないデバイスであってもよい。いくつかの実施態様では、クライアントデバイス120は、撮影機能と表示機能との両方を備えてもよい。
いくつかの実施態様では、クライアントデバイス120は、画像または動画を撮影するための1つのカメラを備えてもよい。いくつかの実施態様では、クライアントデバイス120は、複数のカメラ(または、レンズ)を備えてもよい。たとえば、スマートフォンまたはその他のデバイスは、1つ以上の正面カメラ(デバイスの画面と同じ側にある)および/または1つ以上の背面カメラを備えてもよい。いくつかの実施態様では、当該1つ以上の正面カメラまたは背面カメラは、撮影中、連動して動作してもよい、たとえば、第1カメラが深度情報を撮影し、第2カメラが画像または動画の画像画素を撮影してもよい。いくつかの実施態様では、たとえば、異なるズームレベルを用いた異なる種類の画像撮影または動画撮影に、異なるカメラ(たとえば、望遠レンズ、広角レンズなど)を用いてもよい。いくつかの実施態様では、クライアントデバイス120は、360度画像または360度動画を撮影するように構成されてもよい。いくつかの実施態様では、カメラまたはレンズは、1つのイメージセンサ(たとえば、CCDまたはCMOSセンサ)、または複数のセンサを用いて画像を撮影してもよい。いくつかの実施態様では、画像撮影時、たとえば深度センサなど、その他のセンサを1つ以上のカメラと合わせて使用してもよい。
いくつかの実施態様では、クライアントデバイス120は、カメラ(または、レンズ)のうちの1つ以上のカメラのイメージセンサにおいて撮影されたRAW画像データと、その他のセンサ(たとえば、加速度計、ジャイロスコープ、位置センサ、深度センサなど)から取得したその他のデータとを合成して1枚の画像または1本の動画を形成してもよい。たとえば、複数の画像フレームを撮影するモード(たとえば、複数のフレームを素早く連続撮影して動画像とするバーストモードまたはモーションモード、動画を撮影する動画モード、異なる露出の複数の画像を1枚の複合画像に合成するハイダイナミックレンジモードなど)でクライアントデバイス120が操作された場合、センサから取得したデータを利用して、撮影された画像または動画の手ぶれ補正を行ってもよい。たとえば、複数の撮影されたフレームを、加速度計データまたはジャイロスコープデータを利用して位置合わせすることによって、撮影中のユーザの手の震えによってカメラが動いてしまうのを補償してもよい。いくつかの実施態様では、撮影された画像または動画を切り抜いて、手ぶれ補正された画像または動画、たとえば、背景の動きが抑えられた画像または動画を作成してもよい。
クライアントデバイス120によって、ユーザは、たとえば、1つのフレームを撮影するための静止画像(またはフォト)モード、複数のフレームを撮影するためのバーストモードまたは動画像モード、複数のフレームを含んだ動画を撮影するための動画モードなど、異なるモードで画像を撮影することが可能になる。いくつかの実施態様では、カメラが複数のフレームを構成するときである撮影時、撮影が完了した後、またはそれ以降の時間(たとえば、クライアントデバイス120がユーザによって活発に使用されておらず、たとえば、バッテリによってまたは外部電源に連結されていることによって十分な充電があるとき)に方法200を実行してもよい。
クライアントデバイス120によって、ユーザは、たとえば、クライアントデバイス120によって撮影されたまたはユーザに関連する画像もしくは動画を、異なるユーザインターフェースで見ることが可能になる。たとえば、ユーザが一度に1枚の画像もしくは1本の動画を見ることが可能になるワンナップモードまたはスライドショーモードが提供されてもよい。別の例では、ユーザが、たとえば、画像グリッドとして同時に複数の画像を見ることが可能になるギャラリーモードが提供されてもよい。
いくつかの実施態様では、クライアントデバイス120が方法200を実行してもよい。別の例では、クライアントデバイスまたはサーバ装置が方法200を実行し得る。いくつかの実施態様では、方法は、サーバ装置によって実装されてもよい。いくつかの実施態様では、たとえば、クライアントデバイスのユーザがカメラを操作して動画を撮影した時、動画をクライアントデバイスにダウンロードした時、動画をサーバにアップロードした時などに、方法200が自動的に開始されてもよい。
本明細書において指す画像は、1つ以上の画素値(たとえば、色値、輝度値など)を有する画素を有するデジタル画像を含み得る。画像は、静止画像(たとえば、スチール写真、1つのフレームを有する画像など)、または動画像(たとえば、アニメーション、アニメーションGIF、画像の一部が動きを含み、他の部分が静止しているシネマグラフなど、複数のフレームを含む画像)であり得る。本明細書において指す動画は、音声の有無にかかわらず、複数のフレームを含む。いくつかの実施態様では、動画撮影時、1つ以上のカメラ設定、たとえば、ズームレベル、絞りなどを修正してもよい。いくつかの実施態様では、動画を撮影するクライアントデバイスを、動画の撮影中に動かしてもよい。本明細書において指すテキストは、英数字、絵文字、記号、またはその他の文字を含み得る。
ブロック202では、方法200の実装においてユーザデータを利用するためのユーザの同意(たとえば、ユーザの許可)が得られているかどうかを確認する。たとえば、ユーザデータは、クライアントデバイスを用いてユーザが撮影した画像または動画、たとえばクライアントデバイスを用いてユーザが格納またはアクセスした画像または動画、画像メタデータ/動画メタデータ、メッセージングアプリケーションの利用に関するユーザデータ、ユーザの好み、ユーザの生体情報、ユーザ特性(たとえば、身元、名前、年齢、性別、職業など)、ユーザのソーシャルネットワークおよび連絡先についての情報、社会的またはその他の種類の行動および活動、ユーザが作成または書き込んだコンテンツ、評価、および意見、ユーザの現在地、過去のユーザデータ、ユーザが生成、受信、および/またはアクセスした画像、ユーザが見たまたは共有した画像などを含み得る。本明細書において説明する方法の1つ以上のブロックは、このようなユーザデータをいくつかの実施態様において使用してもよい。
方法200においてユーザデータが使用される可能性のある関連ユーザからユーザ同意が得られている場合、ブロック204において、本明細書における方法のブロックにおいて上記のようなユーザデータが利用できる状態でこれらのブロックを実施できると判断し、方法は、ブロック212に続く。ユーザの同意が得られていない場合、ブロック206において、ユーザデータを利用せずにブロックを実施すると判断し、方法は、ブロック212に続く。いくつかの実施態様では、ユーザの同意が得られていない場合、ユーザデータを利用せず、合成データならびに/または一般的もしくは一般に受け入れられているデータおよび一般に使用できるデータを利用してブロックを実施する。いくつかの実施態様では、ユーザの同意が得られていない場合、方法200を実行しない。たとえば、1つ以上の動画へのアクセス許可をユーザが拒否した場合、方法200は実行されない。または、ブロック206を実行した後に停止される。
ブロック210では、動画を取得する。たとえば、この動画は、クライアントデバイス120~126のうちのいずれかを用いてユーザが撮影した動画であってもよい。別の例では、動画は、たとえば、動画共有ウェブサイト、ソーシャルネットワーク、オンラインの動画ライブラリ、またはその他のオンラインリソースからユーザによってダウンロードされ、クライアントデバイスまたはサーバ装置上に格納されてもよい。さらに別の例では、動画は、たとえば、インスタントメッセージングアプリケーション、チャットアプリケーション、RCS(Rich Communication Services)アプリケーションなど、メッセージングアプリケーションを介してユーザによってダウンロードされてもよい。
いくつかの実施態様では、動画は、複数のフレームおよび対応する音声から構成されてもよい。動画の各フレームは、複数の画素から構成された静止画像であってもよい。いくつかの実施態様では、動画は、音声を含まなくてもよい。動画は、フレームレート、たとえば、動画が撮影された時のフレームレートを有してもよい。たとえば、フレームレートは、24フレーム/秒(fps)、25fps、30fps、50fps、60fps、72fps、100fpsなどであってもよい。動画のフレームレートは、動画1秒につき使用可能な画像フレームの数を示してもよい。いくつかの実施態様では、動画の複数のフレームのうち、1つ以上のフレームは、各々、タイムスタンプに対応付けられてもよい。
いくつかの実施態様では、動画は、ストリーミング動画または特定のフォーマットの動画ファイルであってもよい。いくつかの実施態様では、複数の動画フレームが動画の音声とは別個に格納されてもよい。これらの実施態様では、動画内に同期情報が提供されていてもよい。同期情報は、動画の再生中に音声を複数の動画フレームと同期させるために利用可能であってもよい。いくつかの実施態様では、音声を圧縮フォーマットで格納してもよい。ブロック210の後にブロック212が続いてもよい。
ブロック212では、サンプリングを実行して動画の複数のフレームからなるサブセットを選択する。いくつかの実施態様では、このサンプリングは、目標フレームレート、たとえば、5fps、6fps、10fps、20fpsなどに基づいて行われてもよい。いくつかの実施態様では、たとえば、25fps動画の場合は25個のフレームなど、特定数のフレームに対応し得る動画1秒ごとに、動画に対するサンプリングが繰り返し行われてもよく、フレームからなる対応するサブセットがサブセット内で選択されてもよい。いくつかの実施態様では、サンプリングは、ランダムサンプリングを含んでもよく、たとえば、動画1秒につき5つのフレームをランダムに選択して、目標フレームレートで複数のフレームからなるサブセットを取得してもよい。いくつかの実施態様では、サンプリングは、n枚おきにフレームを選択してフレームのサブセットを取得するステップを含んでもよい。たとえば、25fps動画の5枚おきにフレームを選択して5fpsの目標フレームレートを得てもよい。それぞれ異なる実施態様では、その他のサンプリング戦略が用いられてもよい。
いくつかの実施態様では、目標フレームレートは、動画のフレームレートよりも少ない。動画をサンプリングすることによって、方法200の後続ステップにおいてフレームのサブセットのみを解析すればよいため、動画全体を処理する場合よりも方法の処理コストを抑えることが可能になる。いくつかの実施態様では、たとえば、動画のフレームレートが低い場合(たとえば、5fps、6fps)、目標フレームレートは、動画のフレームレートと等しくてもよい。ブロック212の後にブロック214が続いてもよい。
ブロック214では、ブロック212で選択された複数のフレームからなるサブセットに含まれるフレームごとに音声スペクトログラムを抽出してもよい。音声スペクトログラムは、動画の音声から抽出されてもよい。いくつかの実施態様では、音声スペクトログラムは、対応するフレーム、たとえば、サブセットにある単に1つのフレームの時間的範囲以上の音声に基づく。たとえば、特定のフレームの音声スペクトログラムは、当該特定のフレームの0.5秒前に対応する動画フレームに対応する音声を含み得る。別の例では、特定のフレームの音声スペクトログラムは、当該特定のフレームの後の動画に続く0.5秒に対応する動画フレームに対応する音声を含み得る。いくつかの実施態様では、特定のフレームの音声スペクトログラムは、たとえば、0.5秒、1秒など、先行する動画フレームおよび後続の動画フレームの両方の特定の長さの音声に基づいてもよい。それぞれ異なる実施態様では、音声スペクトログラムに用いられる音声の特定の長さは、先行するフレームに対応する音声と後続するフレームに対応する音声とで同じであってもよく(たとえば、前後0.5秒)、異なってもよい(たとえば、前は1秒、後ろは0.5秒)。いくつかの実施態様では、音声スペクトログラムは、音声の周波数領域表現であってもよい。いくつかの実施態様では、音声スペクトログラムは、メルスペクトログラムであってもよい。ブロック214の後にブロック216が続いてもよい。
ブロック216では、複数のフレームからなるサブセットの解像度を下げてもよい。たとえば、動画が高精細(たとえば、720p、1080p、2K、4K、8Kなど)動画であった場合、サブセットの各フレームに対してダウンサンプリングを行って各フレームの解像度を下げてもよい。いくつかの実施態様では、ダウンサンプリングは、フレームの画素のサブセットを選択するステップを含んでもよい。いくつかの実施態様では、解像度が下げられた動画の解像度は、128×128画素であってもよい。いくつかの実施態様では、縦方向(フレームの高さ)の画素数は、横方向(フレームの幅)の画素数とは異なってもよい。たとえば、方法200を実装するデバイスの使用可能な計算能力に基づいて、解像度が下げられたフレームにある画素の数を選択して性能を最適化させてもよい。いくつかの実施態様では、ダウンサンプリングは、1つ以上のフレームの補間を含んでもよい。いくつかの実施態様では、バイリニア補間法を用いて解像度を下げる。いくつかの実施態様では、ダウンサンプリングは、コンテンツに応じたダウンサンプリングを含んでもよい。たとえば、画像フレームのぼやけた領域を、鮮明な領域またはエッジを含んだ領域よりも積極的にダウンサンプリングしてもよい。いくつかの実施態様では、動画フレームを切り抜いてもよい。たとえば、動画フレームの解像度を140×140画素に下げた後、フレームを切り抜いて128×128画素にサイズを変更してもよい。いくつかの実施態様では、切り抜きを行って、目標解像度のランダムなパッチ、たとえば、ランダムな128×128画素を選択してもよい。ランダムな切り抜きによって、元の動画フレームの異なる部分をフレームのサブセットに含めることができるようになる。これにより、動画におけるローカルなオクルージョン、被写体の速い動きなどに対するロバスト性を改善することができる。フレームの解像度を下げることによって、方法200の後続ステップの計算コストを抑えることができる。いくつかの実施態様では、複数のフレームからなるサブセットの解像度を下げた後に1つ以上のその他の作業が行われてもよい。たとえば、画像の変形、たとえば、画像フレームの色空間の変更が行われてもよい。たとえば、画像の色空間をRGBからsRGBに変更してもよい。ブロック216の後にブロック218が続いてもよい。
ブロック218では、複数のフレームからなるサブセットをセグメント(スタックとも呼ぶ)に分割してもよい。たとえば、各セグメントまたはスタックは、たとえば、3フレーム、5つのフレーム、10フレームなど、特定の数のフレームを含んでもよい。セグメントまたはスタックは、連続していてもよい。たとえば、タイムスタンプt-1に対応するフレームを含む第1セグメントの後には、タイムスタンプtに対応するフレームを含む第2セグメントが順次続いてもよい。次に、タイムスタンプtに対応するフレームを含む第2セグメントの後には、タイムスタンプt+1に対応するフレームを含む第3セグメントが順次続いてもよい。いくつかの実施態様では、セグメントは、重なり合ったセグメントであってもよい。たとえば、特定のセグメントの1つ以上のフレームが1つ以上のその他のセグメントと共通であってもよい。セグメントに含まれるフレームの総数よりも少ない任意の数のフレームが重なり合っていてもよい。たとえば、1つのセグメントは、1つのフレームが前のセグメントに重なっており、1つのフレームが次のセグメントに重なっている3フレームを含んでもよい。スライディングウィンドウ技術を利用してフレームのサブセットをセグメントに分割してもよい、たとえば、ウィンドウが第1セグメントを第1位置に指定した場合、ウィンドウは、第2位置へ向かう方向(順方向または逆方向)に複数のフレーム分移動され、ウィンドウが第2セグメントを第2位置に指定した場合、以下同様である。いくつかの実施態様では、セグメントは、重なり合っていないセグメントであってもよい。ブロック218の後にブロック220が続いてもよい。
ブロック220では、機械学習ベースのゲーティングモデル(ゲーティングモデルとも呼ぶ)をセグメントに適用してもよい。機械学習ベースのゲーティングモデルは、たとえば、畳み込みニューラルネットワーク、再帰型ニューラルネットワークなど、1つ以上のニューラルネットワーク、および/または、たとえば、ヒューリスティクスを基にしたモデル、マルコフ連鎖手法ベースのモデルなど、その他の種類のモデルを含んでもよい。ゲーティングモデルは、動画をさらに解析して1つ以上の動画アノテーションを付加するかどうかについての指示を生成するように訓練されてもよい。たとえば、いくつかの実施態様では、ゲーティングモデルは、セグメントのフレームを入力として受信し、この指示を出力として生成してもよい。別の例では、いくつかの実施態様では、ゲーティングモデルは、セグメントのフレームおよび対応する音声スペクトログラムを入力として受信し、この指示を出力として生成してもよい。
いくつかの実施態様では、ゲーティングモデルは、複数の機械学習モデルを含んでもよい。たとえば、ゲーティングモデルは、ゲーティングモデルに提供された入力動画から取得した複数の動画フレームからなるサブセットに基づいて当該入力動画に特定の特徴が存在するかどうかを判断するように訓練された第1の畳み込みニューラルネットワークを含む第1モデル(モデルAとも呼ぶ)を含んでもよい。たとえば、いくつかの実施態様では、当該特定の特徴は、人の顔、ある種類のオブジェクト、またはある種類の動きを含んでもよい。別の例では、第1モデルは、ゲーティングモデルに提供された入力動画から取得した複数の動画フレームからなるサブセットに対応する音声スペクトログラムに基づいて当該入力動画に特定の特徴が存在するかどうかを判断するように訓練された第2の畳み込みニューラルネットワークをさらに含んでもよい。たとえば、いくつかの実施態様では、当該特定の特徴は、ある種類の音声を含んでもよい。たとえば、ある種類の音声として、人の会話、音楽などを含んでもよい。
たとえば、人の顔は、知っている顔、たとえば、入力動画として撮影または取得したユーザの画像ライブラリにある画像および/または動画に以前写っていたことのある人の顔であってもよい。また、人の顔は、俳優、テレビ司会者、政治家、著名人、スポーツ選手など、有名人に相当してもよい。別の例では、ある種類のオブジェクトとは、ケーキ(たとえば、誕生日ケーキ)、スイミングプール、木、花、ラケットまたはその他のスポーツ用品など、任意のオブジェクトであってもよい。さらに別の例では、ある種類の動きとは、ジャンプする、ランニングする、泳ぐ、ダンスするなどであってもよい。いくつかの実施態様では、人の会話は、たとえば、(ユーザの同意が得られている場合)以前にユーザの画像ライブラリにあった動画に基づいて音声シグネチャが知られている人物の音声を含んでもよい。いくつかの実施態様では、人の会話は、俳優、テレビ司会者、政治家、著名人、スポーツ選手など、有名人の会話を含んでもよい。
いくつかの実施態様では、たとえば、第1モデルが第1の畳み込みニューラルネットワークと第2の畳み込みニューラルネットワークとを含む場合、第1モデルは、第1および第2の畳み込みニューラルネットワークの出力を組み合わせて、第1モデルに提供された入力動画に特定の特徴が存在するかどうかを判断するフュージョンネットワークをさらに含んでもよい。いくつかの実施態様では、第1の畳み込みニューラルネットワークは、複数の層を含んでもよく、動画、たとえば、動画フレームを解析するように訓練されてもよい。いくつかの実施態様では、第2の畳み込みニューラルネットワークは、複数の層を含んでもよく、音声、たとえば、動画フレームに対応する音声スペクトログラムを解析するように訓練されてもよい。いくつかの実施態様では、フュージョンネットワークは、第1および第2の畳み込みニューラルネットワークの出力を入力として受信し、入力動画に特定の特徴が存在する可能性を出力として提供するように訓練された複数の層を含んでもよい。
それぞれ異なる実施態様では、第1モデルは、第1の畳み込みニューラルネットワークのみを含んでもよく、第2の畳み込みニューラルネットワークのみを含んでもよく、第1および第2の畳み込みニューラルネットワークの両方を含んでもよく、第1および第2の畳み込みニューラルネットワークの両方およびフュージョンネットワークを含んでもよい。いくつかの実施態様では、第1モデルは、その他の種類のニューラルネットワークまたはその他の種類の機械学習モデルを用いて実装されてもよい。
いくつかの実施態様では、ゲーティングモデルは、特定の特徴が存在する可能性(たとえば、第1モデルによる出力)を入力として受信し、動画を解析するかどうかについての指示を生成する第2モデルを含んでもよい。いくつかの実施態様では、第2モデルは、ヒューリスティクス、再帰型ニューラルネットワーク、またはマルコフ連鎖解析手法のうち、1つ以上を用いて実装されてもよい。
いくつかの実施態様では、1つ以上の追加入力をゲーティングモデルに提供してもよい。たとえば、このような追加入力は、1つ以上の特定の画像特徴、たとえば、俳優、テレビ司会者、政治家、著名人、スポーツ選手など、有名人の顔、ミーム、コマーシャル動画、アニメーションまたは合成動画などを表す埋め込みを含んでもよい。別の例では、このような追加入力は、1つ以上の特定の音声特徴、たとえば、俳優、テレビ司会者、政治家、著名人、スポーツ選手など、有名人の声に対応する音声シグネチャ、コマーシャル音楽、人間以外の音声、人の会話などを表す音埋め込みを含んでもよい。このような追加入力は、動画に写っていたとしてもアノテーションに含まれることのない特徴を示す。たとえば、動画がユーザの個人的な画像ライブラリからの動画であった場合、ユーザは、(たとえば、他のユーザと動画を共有する、人で動画を検索するなどの理由で)個人的に知らない人物を写した動画にはまったく興味を示さない可能性があり、その人物が個人的に知らない人物である場合、人の顔の存在を示すアノテーションは役に立たない。したがって、知っている人物、たとえば、家族によって行われているスポーツ活動を写した動画をラベル付けすることは重要であり、有名スポーツ選手の動画をラベル付けすることは役に立たないであろう。アノテーションに含まれることのない画像特徴を表す追加入力を提供することによって、ゲーティングモデルがこのような特徴の存在を検出し、動画をさらに解析しないという指示を生成することが可能になる。追加入力によって、ゲーティングモデルは、ミーム、コマーシャル動画、アニメーションもしくは合成動画、または有名人を写した動画を検出し、この動画をさらに解析しないという指示を生成できるようになる。
いくつかの実施態様では、セグメントにある画像フレームから導出したデータを追加入力としてゲーティングモデルに提供してもよい。たとえば、このようなデータは、画像フレームのエネルギー、画像フレームの色分布などを含んでもよい。いくつかの実施態様では、セグメントに対応する音声から導出したデータを追加入力としてゲーティングモデルに提供してもよい。たとえば、このようなデータは、音声の中に人の音声を検出したかどうかを含んでもよい。
いくつかの実施態様では、ユーザが許可した場合、動画に対応付けられたメタデータを追加入力としてゲーティングモデルに提供してもよい。メタデータは、動画を撮影した場所および/または時間などユーザが許可した要因;ソーシャルネットワーク、画像共有アプリケーション、メッセージングアプリケーションなどを介して動画が共有されたかどうか;1つ以上の動画フレームに対応付けられた深度情報;加速度計、ジャイロスコープ、光センサ、またはその他のセンサなど、動画を撮影したカメラの1つ以上のセンサのセンサ値;ユーザの身元(ユーザの同意が得られている場合)などを含んでもよい。たとえば、カメラを上に向けた状態で夜に屋外で動画を撮影した場合、このようなメタデータは、動画の撮影時にカメラが空に向けられていたことを示すであろう。そのため、メタデータは、その動画が人の顔などの特徴を含んでいる可能性が低いことを示すであろう。別の例では、特定の特徴が人の顔であり、ゲーティングモデルが100×100画素サイズの顔を動画の深度40mの位置に検出した場合、このようなメタデータは、この顔は生きた人の顔ではない可能性があり、むしろ、この顔を表示する広告掲示板またはスクリーンであることを示すであろう。
いくつかの実施態様では、追加入力を第2モデルに提供してもよい。これらの実施態様では、当該追加入力は、特定の特徴が存在すると検出された複数のフレームからなるサブセットに含まれる特定のフレームの一部のID、複数のフレームからなるサブセットに当該特定の特徴が現れている期間、または早期終了に関するヒューリスティクス、のうちの1つ以上を含んでもよい。たとえば、第2モデルは、サブセットの特定のフレームの一部を利用して、動画の異なるフレーム、たとえば、セグメントまたはスタックにある一続きのフレームの同じ位置またはその近くに特定の特徴を検出するかどうかを判断してもよい。たとえば、特定の特徴が連続フレームにおいて異なる位置に現れるように特定のフレームの一部が異なる場合、このような追加入力は、当該特定の特徴のスプリアス検出を示すであろう。
別の例では、第2モデルは、複数のフレームからなるサブセットに特定の特徴が現れている期間を利用して、当該特定の特徴が一時的であるかどうかを判断する。その結果、検出がスプリアスであると思われると判断してもよい。たとえば、この期間が短い、たとえば、1つのフレーム、2つのフレーム、または少数のフレームの場合、特定の特徴は一時的であるとみなされるため、この検出はスプリアスであるとみなされるであろう。
別の例では、第2モデルは、ゲーティングモデルによる動画解析の早期終了に関するヒューリスティクスを利用してもよい。このような早期終了によって、動画をさらに解析するかどうかについての指示が直ちに出力される。たとえば、ヒューリスティクスは、多数の前の動画に基づいて取得されてもよい。たとえば、ヒューリスティクスは、第1モデルの出力が特定の特徴が存在する可能性(たとえば、閾値、たとえば、80%、90%よりも高い)が高いことを示す場合は、これ以上の動画のセグメントがゲーティングモデルによる解析から除外され得ることを示してもよく、この指示は、動画をさらに解析して1つ以上の動画アノテーションを付加するという肯定指示として出力されてもよい。別の例では、ヒューリスティクスは、特定の特徴が存在する可能性が高い(たとえば、閾値を満たす2つ以上の連続したセグメントに対応する可能性値、たとえば、50%、60%など)ことを複数の連続したセグメントに対する第1モデルの出力が示す場合、これ以上の動画のセグメントが除外され得ることを示してもよく、この指示は、動画をさらに解析して1つ以上の動画アノテーションを付加するという肯定指示として出力されてもよい。
ブロック222では、ゲーティングモデルが出力した指示を評価し、動画を解析して1つ以上の動画アノテーションを付加するかどうかを判断する。動画を解析するという指示であった場合、ブロック222の後にブロック224が続いてもよい。この例では、もしあれば、シーケンスに含まれる1つ以上の残りのセグメントにゲーティングモデルが適用されることはない。つまり、シーケンスに含まれるセグメントのうちの1つ以上がゲーティングモデルを用いた解析から除外されるよう、複数のフレームからなるサブセットへのゲーティングモデルの適用を終了させる。このように早期終了させることによって、方法200の計算コストを抑えることができる。動画を解析するという指示でない場合、方法は、ブロック230に進む。
ブロック224では、複数のフレームおよび対応する音声(使用可能であれば)から構成される動画をプログラムで解析して1つ以上の動画アノテーションをこの動画に付加する。たとえば、動画アノテーションは、1つ以上のラベルを含んでもよい。たとえば、いくつかの実施態様では、ラベルは、動画における顔の存在、動画における特定の種類のオブジェクトの存在、動画における特定の種類の動きまたは活動の存在、または特定の種類の音声の存在を示してもよい。動画をプログラムで解析することは、1つ以上のコストの高い動画解析技術を利用するステップを含んでもよい。たとえば、このような技術は、顔、ある種類のオブジェクト、ある種類の動き、ある種類の音声などを高い正解率で検出するように訓練された1つ以上の機械学習モデルを適用することを含んでもよい。このような技術の計算コストは、ゲーティングモデルよりも高い。また、動画解析技術は、ヒューリスティクスを基にした技術、オブジェクト認識技術などを含んでもよい。いくつかの実施態様では、1つ以上のラベルを、動画の一部として、たとえば、動画メタデータとして格納してもよい。いくつかの実施態様では、たとえば、動画のラベルを格納するデータベースに1つ以上のラベルを動画に対応付けて格納してもよい。
動画を解析して1つ以上のアノテーションを付加する計算コストは、ゲーティングモデルを適用するよりも高いであろう。いくつかの実施態様では、方法200の総計算コスト(サンプリング、音声スペクトログラムの抽出、解像度の低減、ゲーティングモデルの適用、および指示の取得を含む)は、コストの高い動画解析技術を用いて動画を解析する計算コストよりも低いであろう。いくつかの実施態様では、方法200の計算コストは、たとえば、動画をさらに解析する計算コストの5分の1、10分の1、20分の1、100分の1など、大幅に低くてもよい。ブロック224の後にブロック210が続いてもよい。ブロック210では、次の動画を取得してもよい。
ブロック230では、1つ以上のセグメントがまだシーケンスに含まれているかどうかを判断してもよい。まだセグメントがある場合、ブロック230の後にブロック220が続いてもよい。ブロック220では、次のセグメントにゲーティングモデルを適用する。すべてのセグメントが処理されると、ブロック230の後にブロック210が続いてもよい。ブロック220、222、および230からなるシーケンスを、たとえば、ブロック222の指示が動画をさらに解析してアノテーションを付加するという指示になるまで、またはゲーティングモデルがすべてのセグメントに適用されるまで、1回以上繰り返してもよい。
図2の様々なブロックを参照して方法200を説明したが、図2のブロックの一部を実行しないで本開示に記載の技術が実行されてもよいことを理解されたい。様々な実施態様では、方法200のブロックの一部を並列して、または図2に示す順序とは異なる順序で実行してもよい。様々な実施態様では、方法200のブロックの一部を複数回実行してもよい。
たとえば、いくつかの実施態様では、動画のフレームレートが低い、および/または閾値数のフレームよりも少ない場合、ブロック212は実行されず、フレームのサブセットは、動画のすべてのフレーム含むことになる。別の例では、いくつかの実施態様では、音声スペクトログラムが以前に抽出されたことがある場合、ブロック214は実行されず、当該以前に抽出された音声スペクトログラムが利用されてもよい。さらに別の例では、いくつかの実施態様では、低解像度バージョンの動画が使用可能である(たとえば、予め計算されて格納されている)場合、ブロック216は実行されない。その代わりに、この使用可能な低解像度バージョンの動画が利用される。さらに別の例では、いくつかの実施態様では、ブロック218は実行されず、たとえば、動画が短い動画である場合、動画全体にゲーティングモデルを適用してもよい。さらに別の例では、ブロック214を、ブロック216および/またはブロック218と並列して実行してもよい。
いくつかの実施態様では、ゲーティングモデルは、複数のゲーティングモデルを含んでもよい。これらの実施態様では、各ゲーティングモデルは、対応する目標フレームレートを有してもよい。たとえば、第1のゲーティングモデルは、5fpsという第1の目標フレームレートを有してもよく、第2のゲーティングモデルは、20fpsという第2の目標フレームレートを有してもよい。これらの実施態様では、ブロック212を複数回実行して、目標フレームレートに基づいて複数のフレームからなる複数の異なるサブセットを取得してもよい。これらの実施態様のうちの1つ以上では、特定の目標フレームレートに対応して、ブロック214~218を複数回実行する、たとえば、複数のフレームからなるサブセットごとに1回実行してもよい。実施態様では、動画のすべてのフレームに対してブロック214および216を実行してもよく、ブロック212を実行してブロック216で取得した解像度を下げたフレームからフレームのサブセットを選択してもよく、ブロック218が続く。
いくつかの実施態様では、方法200の複数のイテレーションが行われてもよく、たとえば、第1の目標フレームレートを有する第1のゲーティングモデルを使用した第1のイテレーション、および第2の目標フレームレートを有する第2のゲーティングモデルを使用した第2のイテレーションが行われてもよい。第1のゲーティングモデルと第2のゲーティングモデルとは、それぞれ異なるゲーティングモデルであってもよく、各々、対応する目標フレームレート用に訓練されている。方法200の計算コストは、目標フレームレートが低い場合には、目標フレームレートが高い場合よりも低くなるであろう。
たとえば、低い目標フレームレート、たとえば、5fpsを用いた方法200のイテレーションを最初に行い、動画を解析しないという指示であった場合、より高い目標フレームレート、たとえば、20fpsを用いて方法200の別のイテレーションを行うことが有利であるだろう。この例では、複数の動画のゲーティングを実行する方法200の計算コストは、たとえば、より高い目標フレームレートを用いた方法200を複数の動画に対して実行する場合よりも低くてもよい。
いくつかの実施態様では、複数のイテレーションを並列して実行し、動画を解析するという指示であった場合は進行中のイテレーションを終了してもよい。この例では、複数の動画のゲーティングを実行するのに必要な時間は、複数のイテレーションを順次実行する場合よりも少ないであろう。
いくつかの実施態様では、クライアントデバイス(たとえば、クライアントデバイス120、122、124、または126のうちのいずれか)上で方法200を実行してもよい。たとえば、方法200は、方法200を実行するための計算能力、たとえば、計算能力が十分なプロセッサを有するクライアントデバイス、またはGPU、ASIC、もしくは方法200を実装するために使用できるニューラルネットワークプロセッサを備えたクライアントデバイス上で実行されてもよい。これらの実施態様は、方法200を実行するためのサーバ装置上の負荷を減らすことによる技術的利点を提供してもよい。
いくつかの実施態様では、サーバ装置(たとえば、サーバ装置104)上で方法200を実行してもよい。たとえば、動画を撮影するクライアントデバイスが方法200を実行するための計算能力を有さない場合、またはクライアントデバイスのバッテリが少ない場合、サーバ装置上で方法200を実行してもよい。これらの実施態様は、サーバ装置を用いてゲーティング技術を実行することによる技術的利点を提供してもよく、これにより、クライアントデバイス上の消費電力が抑えられる。
図2を参照して説明したゲーティング技術の様々な実施態様は、肯定指示に対応付けられる動画のサブセットのみに対する解析を可能にし、その他の動画を解析しないことによって、アノテーションを動画に付加するための総計算コストを抑えるであろう。たとえば、アノテーションが顔ラベルに対応する場合、ゲーティング技術は、動画のサブセットに人の顔が存在する可能性に基づいて取得された、肯定指示に対応付けられた動画のサブセットに対してのみ解析を行うことを示してもよい。
図3は、いくつかの実施態様に係る、例示的なゲーティングモデル300の動作を示す図である。ゲーティングモデル300は、第1モデル320(モデルA)と、第2モデル330(モデルB)とを含む。いくつかの実施態様では、ゲーティングモデル300は、特定の目標フレームレート、たとえば、5fps、10fps、20fpsなどに対応付けられてもよい。
第1モデル320は、第1の畳み込みニューラルネットワーク(CNN)322と、第2のCNN324と、フュージョンネットワーク326とを含む。第1のCNN322、第2のCNN324、およびフュージョンネットワーク326は、各々、ニューラルネットワークノードからなる複数の層を含んでもよい。
入力として、動画フレームの1つ以上のスタック302を第1のCNN322に提供する。たとえば、動画フレームのスタックは、解像度が下げられた(ダウンサンプリングされた)動画フレームを含む、サンプリングされた複数の動画フレームからなるサブセットに基づいてもよい。ゲーティングモデルの目標フレームレートに基づいて動画をサンプリングすることによって、このサブセットを取得してもよい。
いくつかの実施態様では、入力として、特定の特徴を表す1つ以上の埋め込み304を第1のCNN322に提供してもよい。たとえば、当該1つ以上の埋め込みは、低次元の、1つ以上の特徴または特徴の1つ以上の種類を表す学習済みベクトル表現であってもよい。特定のタスクを実行するように、たとえば、特定の特徴を写しているまたは特定の特徴を写していないとして動画を分類するように訓練されたニューラルネットワークを用いて、1つ以上の埋め込みを学習してもよい。1つ以上の埋め込みは、パラメータ(たとえば、ニューラルネットワークの重み)であってもよい。この特定のタスクについての損失関数を最小化することによって、埋め込みを学習してもよい。たとえば、1つ以上の埋め込み304は、俳優、テレビ司会者、政治家、著名人、スポーツ選手など、有名人の顔;ミーム(たとえば、メッセージングもしくはソーシャルネットワークアプリケーションを介して広く出回っている動画、もしくは動画ホスティングウェブサイトを介して視聴されている動画);コマーシャル動画(たとえば、映画、テレビ、ポッドキャスト、もしくはその他の動画コンテンツ;または、アニメーションもしくは合成動画(たとえば、スクリーンキャプチャ動画、ビデオゲームから取得した動画など)を表してもよい。
第1のCNNは、入力として、動画フレームのスタック302および埋め込み304を、複数の層のうち、入力層を介して受信してもよい。入力層は、複数の層のうち、第2層に接続されてもよい。いくつかの実施態様では、前の層の出力を入力として受信し、次の層への入力として提供する1つ以上の追加層が第1のCNN322に含まれてもよい。第1のCNN322の最後の層は、出力層であってもよい。
第1のCNN322は、出力として、特定の特徴(たとえば、人の顔、知っている顔、ある種類の動きなど)が動画に存在する第1確率を生成してもよい。第1のCNNの出力は、確率値、(たとえば、動画フレームの特定のスタックに各々が対応する)確率値のセット、または第1のCNN322の出力層が生成するベクトル表現であってもよい。入力として、第1のCNN322の出力をフュージョンネットワーク326に提供してもよい。
入力として、音声スペクトログラムの1つ以上のスタック312を第2のCNN324に提供してもよい。たとえば、音声スペクトログラムのスタックは、サンプリングされた複数の動画フレームからなるサブセットに基づいて、たとえば、先行する時間幅および/または後続の時間幅に対応するフレームに基づいて音声から抽出されてもよい。
いくつかの実施態様では、入力として、特定の特徴を表す1つ以上の埋め込み314を第2のCNN324に提供してもよい。たとえば、当該1つ以上の埋め込みは、低次元の、特徴の1つ以上の種類を表す学習済みベクトル表現であってもよい。特定のタスクを実行するように、たとえば、特定の特徴を写しているまたは特定の特徴を写していないとして音声を分類するように訓練されたニューラルネットワークを用いて、1つ以上の埋め込みを学習してもよい。1つ以上の埋め込みは、パラメータ(たとえば、ニューラルネットワークの重み)であってもよい。特定のタスクについての損失関数を最小化することによって、埋め込みを学習してもよい。たとえば、1つ以上の埋め込み304は、俳優、テレビ司会者、政治家、著名人、スポーツ選手など、有名人に対応する周知の音声シグネチャ;オーディオミーム(たとえば、メッセージングもしくはソーシャルネットワークアプリケーションを介して広く出回っているオーディオ、もしくオーディオホスティングウェブサイトを介して視聴されているオーディオ);コマーシャル音声(たとえば、音楽、ポッドキャスト、もしくはその他の音声コンテンツ);または、人間以外の音声(たとえば、自然の音、合成して生成された音など)を表してもよい。
第2のCNN324は、入力として、音声スペクトログラムのスタック312および埋め込み314を、複数の層のうち、入力層を介して受信してもよい。入力層は、複数の層のうち、第2層に接続されてもよい。いくつかの実施態様では、前の層の出力を入力として受信し、次の層への入力として提供する1つ以上の追加層が第2のCNN324に含まれてもよい。第2のCNN324の最後の層は、出力層であってもよい。
第2のCNN324は、出力として、特定の特徴(たとえば、人の会話、特定の種類の音声など)が音声に存在する第1確率を生成してもよい。第2のCNNの出力は、確率値、(たとえば、音声スペクトログラムの特定のスタックに各々が対応する)確率値のセット、または第2のCNN324の出力層が生成するベクトル表現であってもよい。入力として、第2のCNN324の出力をフュージョンネットワーク326に提供してもよい。
フュージョンネットワーク326は、ニューラルネットワークノードからなる複数の層を含んでもよい。フュージョンネットワーク326は、入力として、第1のCNN322および第2のCNN324の出力を、複数の層のうち、入力層を介して受信してもよい。入力層は、複数の層のうち、第2層に接続されてもよい。いくつかの実施態様では、前の層の出力を入力として受信し、次の層への入力として提供する1つ以上の追加層がフュージョンネットワーク326に含まれてもよい。フュージョンネットワーク326の最後の層は、出力層であってもよい。フュージョンネットワーク326は、特定の特徴が動画に存在する可能性(328)を、第1のCNN322および第2のCNN324の出力に基づいて生成するように訓練されてもよい。いくつかの実施態様では、フュージョンネットワーク326は、2つの層のみ、つまり、入力層と出力層(たとえば、第2の層は、出力層である)のみを含んでもよい。いくつかの実施態様では、フュージョンネットワーク326は、3つ以上の層を含んでもよい。入力として、特定の特徴が動画に存在する可能性を第2モデル330に提供してもよい。
ゲーティングモデル300は、さらに、第2モデル330(モデルB)を含む。いくつかの実施態様では、第2モデル330は、ヒューリスティクスを基にしたモデル、再帰型ニューラルネットワーク、またはマルコフ連鎖解析モデルのうち、1つ以上を含んでもよい。それぞれ異なる実施態様では、これらの技術のうち、1つ以上を用いて第2モデル330を実装する。2種類以上のモデルが第2モデル330に含まれる実施態様では、第2モデルの出力は、当該2種類以上のモデルのそれぞれの出力の重み付き組合せに基づいてもよい。いくつかの実施態様では、その他の適した技術を利用して第2モデル330を実装してもよい。
第2モデル330は、特定の特徴が動画に存在する可能性に基づいて、動画を解析してアノテーションを付加するかどうかについての指示を生成する。いくつかの実施態様では、第1モデル320が動画フレームおよび/または音声スペクトログラムの複数のスタックについてのそれぞれの可能性をシーケンスとして提供する場合、第2モデルは、スタックごとに生成された指示を、順序付けられたシーケンスで格納するように構成される。これらの実施態様では、指示の生成は、さらに、順序付けられたシーケンスで格納された、1つ以上の前のスタックについての指示に基づく。
いくつかの実施態様では、第2モデル330は、(たとえば、第1モデルによって判断したたような)特定の特徴が存在する可能性が閾値確率を満たすかどうかを判断してもよい。これらの実施態様では、可能性が閾値を満たさなかった場合、第2モデルは、否定指示、たとえば、動画を解析してアノテーションを付加することをしないという指示を出力してもよい。可能性が閾値を満たす場合、第2モデルは、肯定指示、たとえば、動画を解析してアノテーションを付加するという指示を出力してもよい。たとえば、閾値は、たとえば第2モデルの訓練中に得られた、ヒューリスティックに決定された確率値に設定されてもよい。閾値確率は、特定の特徴ごとに異なってもよい。閾値確率は、訓練データに基づいて決定される、第2モデルの正解率に基づいて決定されてもよい。たとえば、正解率は、真陽性(第2モデルが正確な肯定指示を提供した動画)と偽陽性(第2モデルが不正確な肯定指示を提供した動画)との割合として判断されてもよい。真陽性と偽陽性との割合の選択は、ROC(Receiver Operating Characteristic)曲線に基づいてもよい。ROC曲線は、ゲーティングモデルの特異性と感度とのトレードオフを評価するために用いられる。閾値の選択によって、ゲーティングモデルの実行速度とゲーティングモデルの正解率とのトレードオフを評価することが可能になるであろう。
また、いくつかの実施態様では、第2モデルは、その他のヒューリスティクスを利用してもよい。たとえば、第2モデルは、特定の時間帯内で少なくとも閾値数のフレームにおいて特定の特徴が検出されたかどうかを判断してもよい。たとえば、第2モデルは、たとえば3つのフレームからなるスタックのうち2つ以上のフレーム、5つのフレームからなるスタックのうち3つ以上のフレームなど、複数のフレームからなるスタックのうち少なくとも閾値数のフレームにおいて特定の特徴が検出されたかどうかを判断してもよい。ゲーティングモデルを第1モデルと第2モデルとに分離することによって、たとえば、第1モデルの再訓練に計算コストをかけないで第2モデルを適応させることができるようになる。
いくつかの実施態様では、第2モデルは、一続きのフレームのうち、少なくとも閾値数の連続したフレームにおいて特定の特徴が検出されたかどうかを判断してもよい。たとえば、第2モデルは、5つのフレームからなるスタックに含まれる少なくとも2つの連続したフレーム、7つのフレームからなるスタックに含まれる少なくとも3つの連続したフレームなどにおいて特定の特徴が検出されたかどうかを判断してもよい。
いくつかの実施態様では、第2モデルは、たとえば、閾値確率、閾値数のフレームおよび特定の時間帯、ならびに指示を生成するための閾値数の連続したフレームに基づいた;またはこれらの要因のうちの2つに基づいたヒューリスティクスの組合せ(たとえば、重み付き組合せ)を利用してもよい。
いくつかの実施態様では、たとえば、画像管理アプリケーション156aの一部として、ゲーティングモデル300を、クライアントデバイス120、122、124、または126のうちの1つ以上のクライアントデバイス上で実装してもよい。いくつかの実施態様では、たとえば、画像管理アプリケーション156bの一部として、ゲーティングモデル300をサーバ装置104上に実装してもよい。いくつかの実施態様では、サーバ装置104およびクライアントデバイス120、122、124、または126のうちの1つ以上のクライアントデバイス上でゲーティングモデル300を実装してもよい。
いくつかの実施態様では、ゲーティングモデル300を、汎用プロセッサ、たとえば、デバイスのCPU(Central Processing Unit)上で実行可能なソフトウェアとして実装してもよい。いくつかの実施態様では、たとえば、GPU(Graphics Processing Unit)、FPGA(Field-Programmable Gate Array)、機械学習プロセッサなど、専門プロセッサ上で実行可能なソフトウェアとしてゲーティングモデル300を実装してもよい。いくつかの実施態様では、ゲーティングモデル300を、専用ハードウェア、たとえば、ASIC(Application Specific Integrated Circuit)として実装してもよい。
図4は、いくつかの実施態様に係る、動画を解析して特定の特徴に対応するアノテーションを付加するかどうかについての指示を生成するように機械学習ベースのゲーティングモデルを訓練するための例示的な方法400を示すフロー図である。それぞれ異なる実施態様では、特定の特徴は、人の顔、ある種類のオブジェクト、ある種類の動き、またはある種類の音声を含む。たとえば、図3を参照して説明したように、方法400を利用してゲーティングモデル300を訓練してもよい。
方法400は、ブロック402から開始してもよい。ブロック402では、訓練セットを取得する。訓練セットは、複数の訓練動画を含んでもよい。各訓練動画は、複数のフレームから構成されてもよい。各訓練動画は、対応する高解像度動画の、低解像度のサンプリングされたバージョンの動画であってもよい。たとえば、高解像度動画の各フレームは、360画素の幅(標準解像度に相当する)、720画素または1080画素の幅(高精細もしくはHDに相当する)、2K/4K/8K画素の幅(2K、4K、および8K解像度にそれぞれ相当する)、またはその他の解像度であってもよい。高解像度動画に対応する訓練動画は、訓練動画の1つのフレームの総画素数が対応する高解像度動画の1つのフレームの総画素数よりも少なくなるように高解像度動画をダウンサンプリングした(解像度を下げた)バージョンの動画であってもよい。訓練セットに含まれる訓練動画は、特定の特徴が存在する訓練動画と、特定の特徴が存在しない訓練動画とをそれぞれ少なくとも1つ含む。ブロック402の後にブロック404が続いてもよい。
訓練データは、さらに、複数の訓練ラベルを含んでもよい。各訓練ラベルは、複数の訓練動画のうち1つ以上の訓練動画に対応する高解像度動画に(ゲーティングモデルを訓練する)1つ以上の特定の特徴が存在することを示してもよい。たとえば、訓練ラベルを生成する動画解析技術を用いて高解像度動画をプログラムで解析することに基づいて、訓練ラベルを生成してもよい。別の例では、ユーザの手入力に基づいて、訓練ラベルを生成してもよい。
いくつかの実施態様では、複数の訓練動画のうち、1つ以上の訓練動画は、さらに、複数のフレームに対応する音声スペクトログラムを含んでもよい。これらの実施態様では、ゲーティングモデルは、音声スペクトログラムを解析するように訓練された畳み込みニューラルネットワークを含んでもよい。これらの実施態様では、ゲーティングモデルは、第1の畳み込みニューラルネットワークおよび第2の畳み込みニューラルネットワークの出力を入力として受信し、特定の特徴が動画に存在する可能性を生成するフュージョンネットワークをさらに含んでもよい。
ブロック404では、訓練セットにある各訓練動画にゲーティングモデルの第1モデルを適用し、訓練動画に特定の特徴が存在する可能性を生成する。ブロック404の後にブロック406が続いてもよい。
ブロック406では、特定の特徴が訓練動画に存在する可能性に基づいてゲーティングモデルの第2モデルを適用し、訓練動画を解析して特定の特徴に対応するアノテーションを付加するかどうかについての指示を生成してもよい。いくつかの実施態様では、ゲーティングモデルは、指示を、関連する信頼度(たとえば、5%、10%、50%など)を用いて生成してもよい。ブロック406の後にブロック408が続いてもよい。
ブロック408では、ブロック406において生成した指示、および訓練動画に対応する高解像度動画に対応付けられた訓練ラベルに基づいて、フィードバックデータを生成する。たとえば、指示が否定指示(動画を解析しない)であって、訓練ラベルが特定の特徴が存在すると示している場合、フィードバックデータは、ゲーティングモデルの出力が誤りであった(否定フィードバック)と示してもよい。別の例では、指示が肯定指示(動画を解析する)であって、訓練ラベルが特定の特徴が存在しないと示している場合、フィードバックデータは、ゲーティングモデルの出力が誤りであった(否定フィードバック)と示してもよい。別の例では、指示が肯定指示(動画を解析する)であって、特定の特徴が存在すると訓練ラベルが示している場合、フィードバックデータは、ゲーティングモデルの出力が正確であった(肯定フィードバック)と示してもよい。別の例では、指示が否定指示(動画を解析しない)であって、訓練ラベルが特定の特徴が存在しないと示している場合、フィードバックデータは、ゲーティングモデルの出力が正解であった(肯定フィードバック)と示してもよい。
上記では、肯定フィードバックまたは否定フィードバックとしてフィードバックデータを説明したが、フィードバックデータは、その他の形態で提供されてもよい。たとえば、ゲーティングモデルにフィードバックを提供する前に、複数の訓練動画から生成したフィードバックデータを集約させてもよい。たとえば、集約は、特定の特徴に対してモデルが生成した指示(および関連する信頼度)の正解率が高く、異なる特徴に対しては正解率が低いという指示を提供するステップを含んでもよい。たとえば、フィードバックデータは、「人の顔」および「笑顔」という特徴に対する指示を生成した場合、ゲーティングモデルの正解率は高く、「誕生日ケーキ」、「笑い声」、または「ジャンプする」という特徴に対する指示を生成した場合、正解率が低いことを示してよい。
ブロック408の後にブロック410が続いてもよい。ブロック410では、訓練入力として、フィードバックデータをゲーティングモデルに提供する。いくつかの実施態様では、ブロック410の後にブロック412が続いてもよい。
ブロック412では、フィードバックデータに基づいてゲーティングモデルを自動的に更新する。いくつかの実施態様では、ゲーティングモデルを更新するステップは、第1モデルの畳み込みニューラルネットワークの1つ以上のノードの重みを自動的に調整するステップを含む。いくつかの実施態様では、ゲーティングモデルを更新するステップは、第1モデルの畳み込みニューラルネットワークの1つ以上の対のノード間の接続性を自動的に調整するステップを含む。
いくつかの実施態様では、各訓練動画の複数のフレームをフレーム(または、セグメント)からなる複数のスタックに分割してもよい。各スタックは、1つ以上のフレームを含んでもよい。いくつかの実施態様では、各スタックは、少なくとも2つのフレームを含んでもよい。複数のスタックは、順序付けられたシーケンスに編成されてもよい。ゲーティングモデルの訓練は、フレームからなる複数のスタックに含まれるフレームからなるスタックごとに順次実行されてもよい。
いくつかの実施態様では、ゲーティングモデルは、1つ以上の畳み込みニューラルネットワーク(CNN)を含む第1モデルを含んでもよい。ゲーティングモデルを訓練する前に、CNNは、複数の層に編成された複数のノードを含んでもよい。各層にあるノードは、前の層にあるノードおよび後続の層にあるノードに接続されてもよい。最初の層にあるノードは、動画フレームまたは音声スペクトログラムを入力として受け付けるように構成されてもよい。各ノードは、任意の種類のニューラルネットワークノード、たとえば、LSTMノードであってもよい。
訓練の前に、ノードの各々に初期の重みを割り当てて、ニューラルネットワークの異なる層のノード間の接続を初期化してもよい。訓練は、1つ以上のノードの重み、および/または1つ以上の対のノード間の接続を調整するステップを含んでもよい。
いくつかの実施態様では、訓練セットのサブセットを最初の訓練段階から除外してもよい。このサブセットを最初の訓練段階の後に提供し、予測(動画を解析するかどうかについての指示)の正解率を判断してもよい。正解率が閾値を下回った場合、訓練セットからの別の動画を使用してさらなる訓練を行い、画像のサブセットの動きスコアをモデルが正しく予測できるようになるまで、モデルのパラメータを調整してもよい。当該さらなる訓練(第2段階)を、任意の回数、たとえば、モデルが十分なレベルの正解率を達成するまで行ってもよい。いくつかの実施態様では、訓練済みモデルをさらに修正する、たとえば、(より少ない数のノードまたは層を用いるために)圧縮する、(たとえば、異なる種類のハードウェア上で利用可能にするために)変形させるなどしてもよい。いくつかの実施態様では、異なるバージョンのモデルを提供してもよい。たとえば、クライアントバージョンのモデルを、大きさに最適化させて計算量を抑えるようにしてもよく、サーババージョンのモデルを、正解率に最適化させてもよい。
図4の様々なブロックを参照して方法400を説明したが、図4のブロックの一部を実行しないで、本開示において説明する技術を実行してもよいことを理解されたい。たとえば、いくつかの実施態様では、ブロック412を分けて実行してもよい。たとえば、ゲーティングモデルの更新をオフラインで行ってもよい。いくつかの実施態様では、図4に示すブロックのうち1つ以上を組み合わせてもよい。たとえば、オンライン訓練用にブロック410と412とを組み合わせてもよい。
さらには、訓練セットを例に訓練を説明したが、ゲーティングモデルを動作中に訓練してもよい。たとえば、(たとえば、動画コラージュ、複数の動画から取得したクリップをフィーチャーしたストーリーなど、動画ベースの作品の制作を開始することなどによって)特定の動画を解析することをユーザが要求した場合、特定の動画についての動画解析がトリガされてもよい。動画に特定の特徴が存在すると動画解析が示す場合、このような指示をフィードバックデータとして提供し、ゲーティングモデルを訓練してもよい。いくつかの実施態様では、ユーザは、アノテーションを手入力で提供してもよい、たとえば、動画の一部を、特定の特徴を有しているとラベル付けしてもよい。ユーザの許可がある場合、いくつかの実施態様は、このようなアノテーションを利用してゲーティングモデルを訓練してもよい。
図5は、例示的な動画、および、ゲーティングモデル、たとえば、推論段階で使用される訓練済みゲーティングモデルの対応する出力を示す図である。特に、例示的な動画の、フレームからなる3つのスタック(502、512、および522)を示している。フレームからなる3つのスタックは、動画の複数のフレームからなるサブセットの一部であり、それぞれ異なる時点t-1、t、およびt+1に対応している。図5に見られるように、動画の異なるフレームは、ブランコに乗っている人(506、516、526)を写している。動画の撮影中、動画フレーム502、512、および522のスタックに見られるように、この人物は後ろから前にブランコを漕いで両足を広げる。この動きは、たとえば、深度情報を判断可能なカメラを用いて動画が撮影された場合、深度画像に格納された深度データによって示されてもよい。また、動画は、背景部分(504)を含んでいる。
動いている間、この人物は、「This is fun!」というフレーズを発している。このフレーズは、動画の音声部分として格納される。フレーズの第1部分(508)は、「This」という単語を含み、フレームからなる第1のスタック(502)に対応する。フレーズの第2部分(518)は、「is」という単語を含み、フレームからなる第2のスタック(512)に対応する。フレーズの第3部分(528)は、「fun」という単語を含み、フレームからなる第2のスタック(522)に対応する。フレームからなる異なるスタックに対応する音声スペクトログラムを取得する。動画は、時間t-1よりも前、および時間t+1のすぐ後に、その他のフレームを含んでもよい。これらのフレームは、各々、対応する音声スペクトログラムを有する。
図5に示すように、フレームのスタックおよび対応する音声スペクトログラムを第1モデル540(モデルA)に提供してもよい。フレームのスタックごとに、第1モデル540は、スタックに特定の特徴が存在する可能性の出力予測を生成する。図示した例では、特定の特徴とは、人の顔である。図5に見られるように、第1モデル540は、スタック502、512、および522にそれぞれ対応する3つの確率値(0.5、0.5、0.7)を生成する。
入力として、第1モデル540が生成した可能性値を第2モデル542(モデルB)に提供する。第2モデルは、フレームのスタックごとに、動画を解析して特定の特徴、たとえば、「人の顔」というラベルに対応する1つ以上のアノテーションを付加するかどうかについての指示を生成する。たとえば、指示は、スタック502および512に基づいて「No」であり、スタック522に基づいて「Yes」である。たとえば、指示の生成は、ヒューリスティクスに基づいてもよい。第2モデル542を訓練することによってヒューリスティクスを取得してもよい。いくつかの例では、ヒューリスティクスは、1つのスタック、および/またはフレームからなる複数のスタック、たとえば、隣接もしくは連続したスタック、もしくは非連続のスタックに基づいてもよい。
図5に示す例では、特定の特徴が存在する可能性>0.4を有する、フレームからなる3つの連続したスタックが見られる。この例では、第2モデル542についての単純なヒューリスティックは、「3つ以上の連続したスタックが可能性>0.4に対応付けられている場合、Yesという指示を生成し、そうでない場合、Noという指示を生成する」であってもよい。また、たとえば、「フレームからなる任意のスタックが可能性>0.9に対応付けられている場合、Yesを生成する」、「3つの連続したスタックのうち、少なくとも1つのスタックの可能性<0.5である場合、Noを生成する」など、その他のヒューリスティクスが利用されてもよい。いくつかの実施態様では、第2モデル542は、複数のヒューリスティクスを組合せ(たとえば、重み付き組合せ)として評価し、これに応じて指示を生成してもよい。いくつかの実施態様では、第2モデル542は、異なる特定の特徴に対応する異なる指示を生成してもよい。たとえば、図5では、「ジャンプする」という指示は、「No」であってもよく、「ブランコを揺らす」という指示は、「Yes」であってもよい。
図6は、例示的なデバイス600のブロック図である。デバイス600は、本明細書において説明する1つ以上の特徴を実現するために使用され得る。一例において、デバイス600を用いて、クライアントデバイス、たとえば、図1に示すクライアントデバイス(120、122、124、126)のうちのいずれかを実装してもよい。あるいは、デバイス600は、サーバ装置、たとえば、サーバ104を実装し得る。いくつかの実施態様では、デバイス600を用いて、クライアントデバイス、サーバ装置、またはクライアントおよびサーバ装置の両方を実装してもよい。デバイス600は、上述した任意の適切なコンピュータシステム、サーバ、またはその他の電子機器もしくはハードウェア装置であり得る。
本明細書において説明する1つ以上の方法は、任意の種類のコンピューティングデバイス上で実行できるスタンドアロンプログラム、ウェブブラウザ上で動作するプログラム、モバイルコンピューティングデバイス(たとえば、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス(腕時計、アームバンド、装身具、帽子、仮想現実ゴーグルまたは眼鏡、拡張現実ゴーグルまたは眼鏡、ヘッドマウントディスプレイなど)、ラップトップコンピュータなど)上で動作する携帯アプリケーション(「アプリ」)であり得る。一例において、クライアント/サーバアーキテクチャを用いることができ、たとえば、(クライアントデバイスとしての)モバイルコンピューティングデバイスが、ユーザ入力データをサーバ装置に送信し、出力用(たとえば、表示用)の最終出力データを当該サーバから受信する。別の例では、モバイルコンピューティングデバイス上のモバイルアプリ(および/またはその他のアプリ)内ですべての計算が行われ得る。別の例では、計算を、モバイルコンピューティングデバイスと1つ以上のサーバ装置とに分担させ得る。
いくつかの実施態様では、デバイス600は、プロセッサ602と、メモリ604と、入出力(I/O)インターフェース606と、カメラ616とを備える。プロセッサ602は、プログラムコードを実行し、デバイス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)、機能を実現するための専用回路、ニューラルネットワークモデルベースの処理を実施するための専門プロセッサ、神経回路、行列計算(たとえば、行列乗算)に最適化されたプロセッサ、またはその他のシステムを含んでもよい。いくつかの実施態様では、プロセッサ602は、ニューラルネットワーク処理を実装する1つ以上のコプロセッサを含んでもよい。いくつかの実施態様では、プロセッサ602は、データを処理して確率に基づく出力を生成するプロセッサであってもよく、たとえば、プロセッサ602が生成する出力は、不正確であってもよく、予想出力から特定の範囲内で正確であってもよい。処理は、特定の地理的位置に限定される必要はなく、または、時間的制限がある必要はない。たとえば、プロセッサは、その機能を「リアルタイム」、「オフライン」、「バッチモード」などで実行してもよい。処理の一部は、異なる(または同じ)処理システムによって、異なるタイミングで異なる場所において実行されてもよい。コンピュータは、メモリと通信する任意のプロセッサであってもよい。
メモリ604は、通常、プロセッサ602がアクセスできるよう、デバイス600内に提供される。メモリ604は、RAM(Random Access Memory)、ROM(Read-Only Memory)、EEPROM(Electrical Erasable Read-only Memory)、フラッシュメモリなど、プロセッサによって実行される命令を格納するのに適した任意の適切なプロセッサ読み取り可能な記憶媒体であってもよく、プロセッサ602とは別個に位置していてもよく、および/またはプロセッサ602と一体化されていてもよい。メモリ604は、オペレーティングシステム608、機械学習アプリケーション630、その他のアプリケーション612、およびアプリケーションデータ614を含む、プロセッサ602によってサーバ装置600上で操作されるソフトウェアを格納し得る。その他のアプリケーション612は、カメラアプリケーション、画像ギャラリーまたは画像ライブラリアプリケーション、データ表示エンジン、ウェブホスティングエンジン、画像表示エンジン、通知エンジン、ソーシャルネットワーキングエンジンなどのアプリケーションを含んでもよい。いくつかの実施態様では、機械学習アプリケーション630およびその他のアプリケーション612は、各々、プロセッサ602が本明細書に記載の機能、たとえば、図2および図4の方法の一部またはすべてを実行することを可能にする命令を含み得る。
その他のアプリケーション612は、たとえば、カメラアプリケーション、画像ライブラリアプリケーション、画像管理アプリケーション、画像ギャラリーアプリケーション、メディア表示アプリケーション、通信アプリケーション、ウェブホスティングエンジンまたはアプリケーション、マッピングアプリケーション、メディア共有アプリケーションなどを含み得る。たとえば、任意の種類のコンピューティングデバイス上で動作できるスタンドアロンコンピュータプログラムとして、ウェブページを有するウェブアプリケーションとして、モバイルコンピューティングデバイス上で動作する携帯アプリケーション(「アプリ」)としてなど、本明細書において開示する1つ以上の方法は、いくつかの環境およびプラットフォームにおいて動作できる。
様々な実施態様では、機械学習アプリケーション630は、ベイズ分類器、サポートベクターマシン、ニューラルネットワーク、またはその他の学習手法を利用してもよい。いくつかの実施態様では、機械学習アプリケーション630は、訓練済みモデル634と、推論エンジン636と、データ632とを含んでもよい。いくつかの実施態様では、訓練済みモデル634は、ゲーティングモデルであってもよく、1つ以上のモデルを含んでもよい。
いくつかの実施態様では、データ632は、訓練データ、たとえば、訓練済みモデル634を生成するために用いられるデータを含んでもよい。たとえば、訓練データは、文字、画像、音声、動画など、任意の種類のデータを含んでもよい。たとえば、訓練データは、複数の訓練動画および対応する複数のラベルから構成される訓練セットを含んでもよい。訓練データは、任意のソース、たとえば、訓練用に明確に記されたデータリポジトリ、機械学習用の訓練データとして用いるための許可が与えられたデータなどから取得されてもよい。1人以上のユーザが機械学習モデル、たとえば、訓練済みモデル634を訓練するためにそれぞれのユーザデータの利用を許可している実施態様では、訓練データは、ユーザデータを含んでもよい。ユーザがそれぞれのユーザデータの利用を許可している実施態様では、データ632は、画像/動画または画像メタデータ/動画メタデータ(たとえば、動画、他のユーザとの動画共有に関するデータ、動画に対応付けられたラベル、動画コラージュ、ストーリーなど、動画ベースの作品が動画から生成されたかどうかなど)、コミュニケーション(たとえば、電子メール;テキストメッセージ、音声、動画などのチャットデータなど)、文書(たとえば、表計算、テキスト文書、プレゼンテーションなど)など、許可データを含んでもよい。
いくつかの実施態様では、訓練データは、学習対象となるコンテキストにおけるユーザの入力または活動に基づいていないデータ、たとえば、シミュレーション動画またはコンピュータによって生成された動画から生成されたデータなど、訓練目的で生成された合成データを含んでもよい。いくつかの実施態様では、機械学習アプリケーション630は、データ632を除外する。たとえば、これらの実施態様では、訓練済みモデル634は、たとえば、異なるデバイス上で生成されて、機械学習アプリケーション630の一部として提供されてもよい。様々な実施態様では、訓練済みモデル634は、(たとえば、ニューラルネットワークノードの数および種類、ノード間の接続性、ならびに複数の層にノードを編成することを規定する)モデル構造またはモデル形態と、関連する重みとを含むデータファイルとして提供されてもよい。推論エンジン636は、訓練済みモデル634用のデータファイルを読み出して、訓練済みモデル634において指定されたモデル構造またはモデル形態に基づいたノード接続性、層、および重みを有するニューラルネットワークを実装してもよい。
また、機械学習アプリケーション630は、訓練済みモデル634を含んでもよい。いくつかの実施態様では、訓練済みモデルは、1つ以上のモデル形態または1つ以上のモデル構造を含んでもよい。たとえば、モデル形態またはモデル構造は、線形ネットワーク、複数の層(たとえば、入力層と出力層との間の「隠れ層」。各層が線形ネットワークである)を実装するディープニューラルネットワーク、畳み込みニューラルネットワーク(たとえば、入力データを複数の部分またはタイルに分割または仕切り、1つ以上のニューラルネットワーク層を用いて各タイルを別々に処理し、各タイルの処理から得られた結果を集約するネットワーク)、sequence-to-sequenceニューラルネットワーク(たとえば、1文に含まれる単語、1本の動画に含まれるフレームなど、順次データを入力として受信し、結果シーケンスを出力として生成するネットワーク)など、任意の種類のニューラルネットワークを含み得る。
モデル形態またはモデル構造は、様々なノード間の接続性、およびノードの層への編成を指定してもよい。たとえば、最初の層(たとえば、入力層)にあるノードは、データを入力データ632またはアプリケーションデータ614として受信してもよい。このようなデータは、たとえば複数のフレームを含む動画の解析に訓練済みモデルが用いられる場合、たとえばノード当たり1つ以上の画素を含み得る。後続の中間層は、モデル形態またはモデル構造で指定された接続性に従って、前の層のノードの出力を入力として受信してもよい。また、これらの層は、隠れ層とも呼ばれる。最後の層(たとえば、出力層)は、機械学習アプリケーションの出力を生成する。たとえば、この出力は、動画をプログラムで解析して1つ以上のアノテーション(たとえば、ラベルのセット)を動画に付加するかどうかについての指示であってもよい。また、いくつかの実施態様では、モデル形態またはモデル構造は、各層におけるノードの数および/または種類を指定する。
それぞれ異なる実施態様では、訓練済みモデル634は、1つ以上のモデルを含み得る。モデルのうち、1つ以上のモデルは、モデル構造またはモデル形態に従って複数の層に配置された複数のノードを含んでもよい。いくつかの実施態様では、ノードは、たとえば、1単位の入力を処理して1単位の出力を生成するように構成された、メモリを有さない計算ノードであってもよい。ノードが行う計算は、たとえば、複数のノード入力の各々を重みで乗算するステップと、重み付き和を取得するステップと、バイアス値または切片値を用いて重み付き和を調整してノード出力を生成するステップとを含んでもよい。また、いくつかの実施態様では、ノードが行う計算は、調整された重み付き和にステップ/活性化関数を適用するステップを含んでもよい。いくつかの実施態様では、ステップ/活性化関数は、非線形関数であってもよい。様々な実施態様では、このような計算は、行列乗算などの演算を含んでもよい。いくつかの実施態様では、たとえば、マルチコアプロセッサに含まれる複数のプロセッサコアを使用したり、GPUまたは専用の神経回路の個々の処理部を使用したりして、複数のノードによる計算を並列して行ってもよい。いくつかの実施態様では、ノードは、メモリを含んでもよく、たとえば、1つ以上前の入力を格納して、後続の入力を処理する際に利用できてもよい。たとえば、メモリを有するノードは、LSTM(Long Short-Term Memory)ノードを含んでもよい。LSTMノードは、メモリを用いて、ノードがFSM(Finite State Machine)のように動作することを可能にする「状態」を維持してもよい。このようなノードを有するモデルは、たとえば、1文または1段落に含まれる複数の単語、1本の動画に含まれる複数のフレーム、会話またはその他の音声など、順次データを処理する際に役立つであろう。たとえば、ゲーティングモデルにおいて用いられるヒューリスティクスを基にしたモデルは、動画フレームからなる一連のスタックのうち、フレームからなる前のスタックに対応する1つ以上の前に生成された指示を格納してもよい。
いくつかの実施態様では、訓練済みモデル634は、個々のノードついて埋め込みまたは重みを含んでもよい。たとえば、モデルは、モデル形態またはモデル構造によって指定されるように複数の層に編成された複数のノードとして初期化されてもよい。初期化時、モデル形態に従って接続されたノードのペア、たとえば、ニューラルネットワークの連続した層に含まれる対のノード間の接続に、重みを適用してもよい。たとえば、それぞれの重みは、ランダムに割り当てられたり、デフォルト値に初期化されたりしてもよい。次に、モデルは、たとえばデータ632を用いて訓練されて、結果を生成してもよい。
たとえば、訓練するステップは、教師あり学習手法を適用するステップを含んでもよい。教師あり学習では、訓練データは、複数の入力(たとえば、動画のセット)と、入力ごとに対応する予想出力(たとえば、動画ごとに1つ以上のラベル)とを含み得る。たとえば、同様の入力が与えられた場合にモデルが予想出力を生成する確率を上げるよう、モデルの出力を予想出力と比較することに基づいて重みの値が自動的に調整される。
いくつかの実施態様では、訓練するステップは、教師なし学習手法を適用するステップを含んでもよい。教師なし学習では、入力データのみが与えられ、モデルは、データを区別する、たとえば、入力データを複数の群にクラスタリングするように訓練されてもよい。各群は、なんらかの形で類似する入力データを含んでいる。たとえば、モデルは、動画を解析して1つ以上のアノテーションを付加するかどうかを判断するように訓練されてもよい。
様々な実施態様では、訓練済みモデルは、モデル構造に対応する重みのセットまたは埋め込みのセットを含む。データ632が除外されている実施態様では、機械学習アプリケーション630は、たとえば、機械学習アプリケーション630の開発者、サードパーティなどによる事前の訓練に基づいた訓練済みモデル634を含んでもよい。いくつかの実施態様では、訓練済みモデル634は、たとえば重みを提供するサーバからダウンロードされた、固定の重みセットを含んでもよい。
また、機械学習アプリケーション630は、推論エンジン636を含む。推論エンジン636は、アプリケーションデータ614(たとえば、動画)など、データに訓練済みモデル634を適用して、推論を提供するように構成される。いくつかの実施態様では、推論エンジン636は、プロセッサ602によって実行されるソフトウェアコードを含んでもよい。いくつかの実施態様では、推論エンジン636は、プロセッサ602が訓練済みモデルを適用することを可能にする(たとえば、プログラマブルプロセッサ、FPGA(Field Programmable Gate Array)などの)回路構成を指定してもよい。いくつかの実施態様では、推論エンジン636は、ソフトウェア命令、ハードウェア命令、または組合せを含んでもよい。いくつかの実施態様では、推論エンジン636は、オペレーティングシステム608および/またはその他のアプリケーション612が推論エンジン636を呼び出して、たとえば、訓練済みモデル634をアプリケーションデータ614に適用して推論を生成するために用いることができるAPI(Application Programming Interface)を提供してもよい。
たとえば、ソースの解像度が高く、かつ特定の時間幅を有する動画を解析すること)は、計算コストがかかるであろう。アノテーションが特定の特徴に対応する場合、動画全体を解析して特定の特徴のうちの1つ以上が動画(または、動画の1つ以上のセグメント)に存在するかどうかを判断する必要があり、対応するアノテーションが動画に付加される場合がある。この作業は、たとえば、特定の特徴が存在しない場合、無駄になってしまうであろう。さらには、この作業は実現可能でない場合があり、または、特定のデバイス、たとえば、処理能力に限りがあるデバイス、電力容量に限りがあるデバイス(たとえば、電池式デバイス)上では特にコストがかかるであろう。さらには、ユーザが特定の特徴を含まない複数の動画を含んだ動画ライブラリを所有していた場合、このようなコストがかかる作業が複数の動画の各々に対して行われてしまうであろう。さらには、動画の一部のみが特定の特徴を写していた場合、動画全体を解析することによって、計算リソースが無駄になってしまうであろう。
機械学習アプリケーション630によって、この状況下においていくつかの技術的利点がもたらされるであろう。たとえば、動画に適用されるゲーティングモデルが訓練済みモデル634である場合、このモデルは、動画を解析して1つ以上の動画アノテーションを付加するかどうかについての指示を提供するであろう。元の高解像度の動画を解析するよりも計算コストが少ないと思われる、低解像度のサンプリングされた動画のフレームからなるサブセットにゲーティングモデルを適用してもよい。その後、ゲーティングモデルが肯定指示を生成した動画のみを解析すればよいので、計算コストおよび計算能力の無駄をなくすことができる。また、ゲーティングモデルの利用によって、計算能力が低いまたは電力に限りがあるデバイス上で動画アノテーションを実行することが可能になる。さらには、いくつかの実施態様では、ゲーティングモデルからの指示は、解析する動画の1つ以上のセグメントに特定の特徴が存在する可能性に基づく当該1つ以上のセグメントのIDを含んでもよい。これらの実施態様では、動画のその他のセグメントが、動画アノテーションを付加するための解析から除外され得るので、計算コストの無駄をなくすことができる。
いくつかの実施態様では、第1モデルと第2モデルとを含む2段階モデルとしてゲーティングモデルを実装した場合、第1モデルと第2モデルとを互いに独立して訓練してもよい。たとえば、第1モデルを、特定の特徴が動画に存在する可能性を検出するように訓練してもよい。この訓練は、たとえば、訓練動画に対応付けられた訓練ラベルに基づいて取得されたフィードバックデータを提供することによって、第2モデルの訓練とは独立して行うことができる。たとえば、第2モデルを、動画を解析してアノテーションを付加するかどうかについての指示を生成するように訓練してもよい。この訓練は、たとえば、異なる可能性値を入力として提供し、訓練ラベルをフィードバックデータとして提供することによって、第1モデルの訓練とは独立して行うことができる。よって、ゲーティングモデル全体の性能(たとえば、正解率、計算コストなど)の向上に伴い、各モデルを他方のモデルとは別個に評価および訓練できるようになる。
いくつかの実施態様では、機械学習アプリケーション630をオフラインで実装してもよい。これらの実施態様では、訓練済みモデル634を第1段階で生成し、機械学習アプリケーション630の一部として提供してもよい。いくつかの実施態様では、機械学習アプリケーション630をオンラインで実装してもよい。たとえば、このような実施態様では、機械学習アプリケーション630(たとえば、オペレーティングシステム608、その他のアプリケーション612のうちの1つ以上のアプリケーションなど)を呼び出すアプリケーションが、機械学習アプリケーション630が生成した推論を利用、たとえば、推論をユーザに提供してもよく、システムログ(たとえば、ユーザによって許可されている場合、推論に基づいてユーザがとる行動;または、さらに処理を行うための入力として利用される場合、当該さらに行う処理の結果)を生成してもよい。システムログは、たとえば、1時間ごと、1ヶ月ごと、四半期ごとなど、定期的に生成されてもよく、ユーザの許可がある場合、訓練済みモデル634を更新する、たとえば、訓練済みモデル634用の埋め込みを更新するために用いられてもよい。
いくつかの実施態様では、機械学習アプリケーション630が実行されるデバイス600の特定の構成に適応できるように機械学習アプリケーション630を実装してもよい。たとえば、機械学習アプリケーション630は、使用可能な計算リソース、たとえば、プロセッサ602を利用する計算グラフを求めてもよい。たとえば、機械学習アプリケーション630が複数のデバイス上の分散アプリケーションとして実装された場合、機械学習アプリケーション630は、個々のデバイス上で計算を最適化する方法で行われる計算を求めてもよい。別の例では、機械学習アプリケーション630は、プロセッサ602が特定の数のGPUコア(たとえば、1000個)を有するGPUを含んでおり、(たとえば、1000個の個々のプロセスまたはスレッドとして)それに応じて推論エンジンを実装していると判断してもよい。
いくつかの実施態様では、機械学習アプリケーション630は、訓練済みモデルの一式を実装してもよい。たとえば、訓練済みモデル634は、同じ入力データに各々が適用可能な複数の訓練済みモデルを含んでもよい。これらの実施態様では、機械学習アプリケーション630は、たとえば、使用可能な計算リソース、前の推論を用いた場合の成功率などに基づいて特定の訓練済みモデルを選んでもよい。いくつかの実施態様では、機械学習アプリケーション630は、複数の訓練済みモデルが適用されるよう、推論エンジン636を実行してもよい。これらの実施態様では、機械学習アプリケーション630は、たとえば、各訓練済みモデルを適用することによって得られる出力に得点を付ける投票法を用いて、または1つ以上の特定の出力を選ぶことによって、個々のモデルを適用することから得られる出力を組み合わせてもよい。さらには、これらの実施態様では、機械学習アプリケーションは、個々の訓練済みモデルを適用する時間閾値(たとえば、0.5ms)を適用して、時間閾値内で使用可能な個々の出力のみを利用してもよい。時間閾値内に受信しなかった出力は、使用しなくてもよく、たとえば破棄してもよい。たとえば、このような手法は、たとえばオペレーティングシステム608または1つ以上のアプリケーション612によって機械学習アプリケーションを呼び出している間に指定された時間制限が存在する場合に適しているであろう。
たとえば、ゲーティングモデルは、各モデルが異なる目標フレームレートおよび関連する計算コストを有する訓練済みモデルの一式として実装されてもよい。たとえば、ゲーティングモデルは、5fps、10fps、および20fpsというフレームレート用に訓練されたモデルを実装してもよい。ここで、フレームレートが高いモデルは、フレームレートが低いモデルよりも大きな計算コストに対応付けられている。別の例では、ゲーティングモデルは、セグメントまたはスタック、たとえば、3つのフレームを含むスタック、5つのフレームを含むスタック、10個のフレームを含むスタックなどに含まれる異なる数のフレームを用いて訓練されたモデルを実装してもよい。いくつかの実施態様では、より多くの数のフレームを有するスタックを用いて訓練されたモデルは、少ない数のフレームを有するスタックを用いたモデルよりも大きな計算コストに対応付けられてもよい。計算コストが低いモデルが信頼度の高い指示を生成した場合、一式に含まれているその他のモデルを特定の動画に適用しなくてもよく、または、並列して実行されている場合、終了してもよい。
いくつかの実施態様では、機械学習アプリケーション630は、呼び出し中のアプリケーション、たとえば、オペレーティングシステム608または1つ以上のアプリケーション612によって指定されたフォーマットに基づいて出力を生成してもよい。いくつかの実施態様では、呼び出し中のアプリケーションは、別の機械学習アプリケーションであってもよい。たとえば、このような構成は、呼び出し中の機械学習アプリケーションが機械学習アプリケーション630からの出力を用いて訓練される、または、機械学習アプリケーション630が呼び出し中の機械学習アプリケーションからの出力を用いて訓練される敵対的生成ネットワークにおいて用いられてもよい。
メモリ604にあるソフトウェアを、代わりにその他の適した記憶位置またはコンピュータ読み取り可能な媒体上に格納することができる。これに加えて、メモリ604(および/もしくはその他の接続された記憶装置(複数可))は、本明細書において説明した特徴において用いられる1つ以上のメッセージ、1つ以上の分類法、電子百科事典、辞書、類語辞典、ナレッジベース、メッセージデータ、文法、ユーザの好み、ならびに/またはその他の命令およびデータを格納することができる。メモリ604およびその他の種類のストレージ(磁気ディスク、光ディスク、磁気テープ、もしくはその他の有形の媒体)は、「ストレージ」もしくは「記憶装置」とみなされ得る。
I/Oインターフェース606は、サーバ装置600をその他のシステムおよびデバイスとインターフェース接続することを可能にする機能を提供できる。インターフェース接続されたデバイスを、デバイス600の一部として含めることができる。または、インターフェース接続されたデバイスは、別個であり得、デバイス600と通信を行うことができる。たとえば、ネットワーク通信装置、記憶装置(たとえば、メモリおよび/またはデータベース106)、ならびに入出力装置は、I/Oインターフェース606を介して通信を行うことができる。いくつかの実施態様では、I/Oインターフェースは、入力装置(キーボード、ポインティングデバイス、タッチスクリーン、マイクロフォン、カメラ、スキャナ、センサなど)および/または出力装置(表示装置、スピーカ装置、プリンタ、モーターなど)など、インターフェース装置に接続することができる。
I/Oインターフェース606に接続できるインターフェース接続されたデバイスのいくつかの例として、画像、動画など、コンテンツを表示するために用いることができる1つ以上の表示装置620、および/または本明細書において説明した出力アプリケーションのユーザインターフェースなどを挙げることができる。表示装置620は、ローカル接続(たとえば、ディスプレイバス)を介して、および/またはネットワーク接続された接続を介してデバイス600に接続することができ、任意の適切な表示装置であり得る。表示装置620は、LCD画面、LED画面、もしくはプラズマディスプレイ画面、CRT、テレビ、モニタ、タッチスクリーン、3Dディスプレイ画面、またはその他の表示装置デバイスなど、任意の適切な表示装置を含み得る。たとえば、表示装置620は、モバイル機器上に提供されるフラットディスプレイ画面、ゴーグルまたはヘッドセット装置において備えられる複数のディスプレイ画面、または、コンピュータデバイスのモニタ画面であり得る。
I/Oインターフェース606は、その他の入力装置および出力装置にインターフェース接続することができる。いくつかの例として、画像を撮影できる1つ以上のカメラなどが挙げられる。いくつかの実施態様は、(たとえば、撮影画像、音声コマンドなどの一部として)音を記録するためのマイクロフォン、音を出力するためのオーディオスピーカ装置、またはその他の入力装置および出力装置を提供することができる。
カメラ616は、複数のフレームを含む動画を撮影できる任意の種類のカメラであってもよい。本明細書において使用するとき、カメラは、任意の撮像装置を含み得る。いくつかの実施態様では、カメラ616は、たとえば、正面レンズ対背面レンズ、異なるズームレベル、撮影画像の画像解像度など、異なる能力を有する複数のレンズを含んでもよい。いくつかの実施態様では、デバイス600は、深度センサ、加速度計、位置センサ(たとえば、GPS)、ジャイロスコープなど、1つ以上のセンサを含んでもよい。いくつかの実施態様では、これらの1つ以上のセンサをカメラとともに操作して、カメラを用いて撮影した動画の異なるフレームに対応するセンサ測定値を取得してもよい。
説明を容易にするために、図6は、プロセッサ602、メモリ604、I/Oインターフェース606、カメラ616、ならびにソフトウェアブロック608、612、および630の各々について1つのブロックを示す図である。これらのブロックは、1つ以上のプロセッサもしくは処理回路、1つ以上のオペレーティングシステム、1つ以上のメモリ、1つ以上のI/Oインターフェース、1つ以上のアプリケーション、および/または1つ以上のソフトウェアモジュールを表してもよい。その他の実施態様では、デバイス600は、図示した構成要素のすべてを有さなくてもよく、および/または、本明細書において示した要素の代わりまたはそれらに加えて、その他の種類の要素を含むその他の要素を有してもよい。いくつかの構成要素について、本明細書のいくつかの実施態様に記載したブロックおよび動作を行うと説明したが、環境100、デバイス600、同様のシステムの任意の適切な構成要素もしくは構成要素の組合せ、またはこのようなシステムに対応付けられた任意の適切な1つのプロセッサまたは複数プロセッサが、記載のブロックおよび動作を実行してもよい。
本明細書において説明する方法を、コンピュータ上で実行できるコンピュータプログラム命令またはコードによって実装することができる。たとえば、コードは、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つ以上の方法を、システム上で動作するアプリケーションのコンポーネントとしてまたはその一部として実行することができたり、その他のアプリケーションおよびオペレーティングシステムと連動して動作するアプリケーションまたはソフトウェアとして実行したりすることができる。
特定の実施態様の説明について記載したが、これらの特定の実施態様は、例示に過ぎず、限定ではない。例示した概念をその他の例および実施態様に適用してもよい。
本明細書に記載の特定の実施態様がユーザについての個人情報(たとえば、ユーザデータ、ユーザのソーシャルネットワークについての情報、ユーザの位置およびユーザが当該位置にいるときの時刻、ユーザの生体情報、ユーザの活動およびデモグラフィック情報)を収集または使用し得る状況では、ユーザには、情報を収集してもよいかどうか、個人情報を保存してもよいかどうか、個人情報を利用してもよいかどうか、ならびにユーザについての情報がどのように収集、格納、および利用されるかについて規制できる1つ以上の機会が与えられる。つまり、本明細書に記載のシステムならびに方法は、具体的には、関連のあるユーザからユーザ個人情報を収集、格納、および/または利用してもよいという明確な許可を受け取った際にそのようにする。
たとえば、プログラムもしくは特徴がユーザについてのユーザ情報または当該プログラムもしくは当該特徴に関連性のあるその他のユーザについてのユーザ情報を収集するかどうかについて、その特定のユーザが規制することができる。個人情報が収集される各ユーザには、そのユーザに関連性のある情報収集を規制できるオプション、情報を収集してもよいかどうか、および情報のどの部分を収集するかについての許可または承認が与えられるオプションなど、1つ以上のオプションが提示される。たとえば、ユーザには、1つ以上のこのような規制オプション通信ネットワーク上で与えることができる。これに加えて、個人を特定できる情報が取り除かれるよう、特定のデータを、格納または利用される前に1つ以上の方法で扱ってもよい。一例として、個人を特定できる情報が特定できないようにユーザの身元を扱ってもよい。別の例として、ユーザの特定の位置が特定できないよう、ユーザデバイスの地理的位置をより大きな地域に一般化してもよい。
なお、当業者に分かるように、本開示に記載の機能ブロック、動作、特徴、方法、デバイス、およびシステムを、システム、デバイス、および機能ブロックの異なる組合せに統合したり、分割したりしてもよい。任意の適切なプログラミング言語およびプログラミング技法を用いて特定の実施態様のルーチンを実装してもよい。手続き型またはオブジェクト指向など、異なるプログラミング技法を用いてもよい。このルーチンを1つの処理装置または複数のプロセッサ上で実行してもよい。ステップ、動作、または計算は、特定の順序で提示されているが、この順序は、異なる特定の実施態様において変更されてもよい。いくつかの実施態様では、本明細書において一続きで示した複数のステップまたは複数の動作が、同時に実行されもよい。

Claims (20)

  1. 複数のフレームおよび対応する音声から構成される動画を取得するステップと、
    前記動画のフレームレート以下の目標フレームレートに基づいてサンプリングを実行し、前記複数のフレームのサブセットを選択するステップと、
    前記複数のフレームからなるサブセットに含まれるフレームごとに音声スペクトログラムを抽出するステップと、
    前記複数のフレームからなるサブセットの解像度を下げるステップと、
    前記解像度を下げるステップの後、前記複数のフレームからなるサブセットおよび対応する音声スペクトログラムに機械学習ベースのゲーティングモデルを適用するステップと、
    前記ゲーティングモデルの出力として、前記動画を解析して1つ以上の動画アノテーションを付加するかどうかについての指示を取得するステップとを含む、コンピュータにより実行される方法。
  2. さらに、前記ゲーティングモデルを適用するステップの前に、前記動画を複数のセグメントに分割するステップを含み、各セグメントは、複数のフレームを含み、前記ゲーティングモデルを適用するステップは、前記複数のセグメントに対して順番に繰り返し行われ、前記指示は、各イテレーションにおいて生成される、請求項1に記載のコンピュータにより実行される方法。
  3. 前記複数のセグメントに含まれる各セグメントは、前記複数のセグメントに含まれる別のセグメントと重なり合う、請求項2に記載のコンピュータにより実行される方法。
  4. 特定のイテレーションにおける前記指示が前記動画を解析するという指示であった場合、前記複数のセグメントのうち1つ以上のセグメントが除外されるように前記ゲーティングモデルの適用を終了させる、請求項2または3に記載のコンピュータにより実行される方法。
  5. 前記ゲーティングモデルは、前記ゲーティングモデルに提供される入力動画に特定の特徴が存在するかどうかを判断するように訓練される、請求項1~4のいずれかに記載のコンピュータにより実行される方法。
  6. 前記特定の特徴は、人の顔、ある種類のオブジェクト、ある種類の動き、またはある種類の音声のうち、少なくとも1つを含む、請求項5に記載のコンピュータにより実行される方法。
  7. 前記ゲーティングモデルを適用するステップは、
    特定の特徴が存在する可能性を判断する第1モデルを適用するステップと、
    入力として前記特定の特徴が存在する可能性を受信し、前記動画を解析するかどうかについての前記指示を生成する第2モデルを適用するステップとを含む、請求項1~6のいずれかに記載のコンピュータにより実行される方法。
  8. 前記第1モデルは、
    動画を解析するように訓練された複数の層を含む第1の畳み込みニューラルネットワークと、
    音声を解析するように訓練された複数の層を含む第2の畳み込みニューラルネットワークと、
    前記第1の畳み込みニューラルネットワークの出力および前記第2の畳み込みニューラルネットワークの出力を入力として受信し、前記特定の特徴が前記第2モデルに存在する前記可能性を提供する、複数の層を含むフュージョンネットワークとを含む、請求項7に記載のコンピュータにより実行される方法。
  9. 前記第2モデルは、ヒューリスティクス、再帰型ニューラルネットワーク、またはマルコフ連鎖解析手法のうち、1つ以上を用いて実装される、請求項7に記載のコンピュータにより実行される方法。
  10. 前記第2モデルに追加入力を提供するステップをさらに含み、前記追加入力は、
    前記特定の特徴が存在すると検出された前記複数のフレームからなるサブセットのうち、特定のフレームの一部のID、
    前記複数のフレームからなるサブセットに前記特定の特徴が現れている期間、または、
    早期終了に関するヒューリスティクス、のうちの1つ以上を含み、
    前記第2モデルは、前記追加入力を利用して前記指示を生成する、請求項7に記載のコンピュータにより実行される方法。
  11. 前記指示が前記動画を解析するという指示であった場合、前記動画をプログラムで解析して前記1つ以上の動画アノテーションを付加するステップをさらに含み、前記動画アノテーションは、前記動画における、顔、特定の種類のオブジェクト、特定の種類の動き、または特定の種類の音声、のうちの1つ以上の存在を示す1つ以上のラベルを含む、請求項1~10のいずれかに記載のコンピュータにより実行される方法。
  12. コンピューティングデバイスであって、
    プロセッサと、
    命令を格納したメモリとを備え、前記命令は、前記プロセッサによって実行されると、前記プロセッサに動作を実行させ、前記動作は、
    複数のフレームおよび対応する音声から構成される動画を取得する動作と、
    前記動画のフレームレート以下の目標フレームレートに基づいて、サンプリングを実行し、前記複数のフレームのサブセットを選択する動作と、
    前記複数のフレームからなるサブセットに含まれるフレームごとに音声スペクトログラムを抽出する動作と、
    前記複数のフレームからなるサブセットの解像度を下げる動作と、
    前記解像度を下げるステップの後、前記複数のフレームからなるサブセットおよび対応する音声スペクトログラムに機械学習ベースのゲーティングモデルを適用する動作と、
    前記ゲーティングモデルの出力として、前記動画を解析して1つ以上の動画アノテーションを付加するかどうかについての指示を取得する動作とを含む、コンピューティングデバイス。
  13. 前記メモリは、さらに命令を格納し、前記命令は、前記プロセッサによって実行されると、前記プロセッサにさらに動作を実行させ、前記動作は、前記ゲーティングモデルを適用する動作の前に、前記動画を複数のセグメントに分割する動作を含み、各セグメントは、複数のフレームを含み、前記ゲーティングモデルを適用する動作は、前記複数のセグメントに対して順番に繰り返し行われ、前記指示は、各イテレーションにおいて生成される、請求項12に記載のコンピューティングデバイス。
  14. 動画を解析して特定の特徴に対応するアノテーションを付加するかどうかについての指示を生成するように機械学習ベースのゲーティングモデルを訓練するための、コンピュータにより実行される方法であって、前記機械学習ベースのゲーティングモデルは、
    前記特定の特徴が動画に存在する可能性を前記動画の動画フレームに基づいて生成する第1の畳み込みニューラルネットワークを含む第1モデルと、
    入力として前記特定の特徴が前記動画に存在する可能性を受信し、前記指示を生成する第2モデルとを含み、前記方法は、
    訓練セットを取得するステップを含み、前記訓練セットは、
    複数の訓練動画を含み、各訓練動画は、複数のフレームを含み、各訓練動画は、対応する高解像度動画の、低解像度のサンプリングされたバージョンの動画であり、前記訓練セットは、さらに、
    複数の訓練ラベルを含み、各訓練ラベルは、前記複数の訓練動画のうちの1つ以上の訓練動画に対応する前記高解像度動画における前記特定の特徴の存在を示し、前記方法は、さらに、
    前記ゲーティングモデルを訓練するステップを含み、前記訓練するステップは、前記訓練セットに含まれる訓練動画ごとに、
    前記第1モデルを前記訓練動画に適用することによって、前記特定の特徴が前記訓練動画に存在する可能性を生成するステップと、
    前記第2モデルを適用することによって、前記訓練動画を解析して特定の特徴に対応するアノテーションを付加するかどうかについての前記指示を前記特定の特徴が前記訓練動画に存在する可能性に基づいて生成するステップと、
    前記対応する高解像度動画に関連付けられた前記訓練ラベル、および前記指示に基づいて、フィードバックデータを生成するステップと、
    訓練入力として、前記フィードバックデータを前記第1モデルおよび前記第2モデルに提供するステップとを含む、コンピュータにより実行される方法。
  15. 前記特定の特徴は、人の顔、ある種類の動き、またはある種類のオブジェクトのうち少なくとも1つを含む、請求項14に記載のコンピュータにより実行される方法。
  16. 前記訓練セットに含まれる前記複数の訓練動画は、前記特定の特徴が存在する少なくとも1つの動画と、前記特定の特徴が存在しない少なくとも1つの動画とを含み、前記ゲーティングモデルを訓練するステップは、前記第1モデルの前記第1の畳み込みニューラルネットワークの1つ以上のノードの重みを自動的に調整するステップ、または、前記第1モデルの前記第1の畳み込みニューラルネットワークの1つ以上の対のノード間の接続性を自動的に調整するステップのうち、1つ以上のステップを含む、請求項14または15に記載のコンピュータにより実行される方法。
  17. 前記第2モデルは、ヒューリスティクスを基にしたモデル、再帰型ニューラルネットワーク、またはマルコフ連鎖解析モデルのうち、1つ以上を含み、前記ゲーティングモデルを訓練するステップは、前記ヒューリスティクスを基にしたモデルの1つ以上のパラメータを自動的に調整するステップ、前記再帰型ニューラルネットワークの1つ以上のパラメータを自動的に調整するステップ、または前記マルコフ連鎖解析モデルの1つ以上のパラメータを自動的に調整するステップのうち、1つ以上のステップを含む、請求項14~16のいずれかに記載のコンピュータにより実行される方法。
  18. 前記ゲーティングモデルを訓練するステップは、前記訓練動画の複数のフレームをフレームからなる複数のスタックに分割するステップをさらに含み、各スタックは、少なくとも1つのフレームを含み、前記複数のスタックは、順序付けられたシーケンスに編成され、前記ゲーティングモデルを訓練するステップは、前記フレームからなる複数のスタックに含まれるフレームからなるスタックごとに順次実行される、請求項14~17のいずれかに記載のコンピュータにより実行される方法。
  19. 前記第2モデルは、前記生成された指示を前記訓練動画のスタックごとに格納するように構成され、特定のスタックについての前記指示を生成するステップは、前記順序付けられたシーケンスに含まれる1つ以上の前のスタックについてのそれぞれ格納された指示にさらに基づく、請求項18に記載のコンピュータにより実行される方法。
  20. 前記複数の訓練動画に含まれる1つ以上の訓練動画は、前記複数のフレームに対応する音声スペクトログラムをさらに含み、前記第1モデルは、さらに、
    音声スペクトログラムを解析するように訓練された第2の畳み込みニューラルネットワークと、
    前記第1の畳み込みニューラルネットワークおよび前記第2の畳み込みニューラルネットワークの出力を入力として受信し、前記特定の特徴が前記動画に存在する可能性を生成するフュージョンネットワークとを含む、請求項14~19のいずれかに記載のコンピュータにより実行される方法。
JP2021514518A 2019-03-13 2019-09-27 動画解析のためのゲーティングモデル Active JP7228682B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/352,605 US10984246B2 (en) 2019-03-13 2019-03-13 Gating model for video analysis
US16/352,605 2019-03-13
PCT/US2019/053501 WO2020185256A1 (en) 2019-03-13 2019-09-27 Gating model for video analysis

Publications (2)

Publication Number Publication Date
JP2022523606A JP2022523606A (ja) 2022-04-26
JP7228682B2 true JP7228682B2 (ja) 2023-02-24

Family

ID=68296667

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021514518A Active JP7228682B2 (ja) 2019-03-13 2019-09-27 動画解析のためのゲーティングモデル

Country Status (6)

Country Link
US (2) US10984246B2 (ja)
EP (1) EP3735777A1 (ja)
JP (1) JP7228682B2 (ja)
KR (1) KR102297393B1 (ja)
CN (1) CN112740709B (ja)
WO (1) WO2020185256A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020046859A1 (en) * 2018-08-27 2020-03-05 Neuralmagic Inc. Systems and methods for neural network convolutional layer matrix multiplication using cache memory
US10984246B2 (en) * 2019-03-13 2021-04-20 Google Llc Gating model for video analysis
US11363315B2 (en) * 2019-06-25 2022-06-14 At&T Intellectual Property I, L.P. Video object tagging based on machine learning
CN110543943B (zh) * 2019-09-10 2022-03-25 北京百度网讯科技有限公司 一种网络融合方法及装置、电子设备、存储介质
US11455531B2 (en) * 2019-10-15 2022-09-27 Siemens Aktiengesellschaft Trustworthy predictions using deep neural networks based on adversarial calibration
US20210329306A1 (en) * 2020-04-15 2021-10-21 Nvidia Corporation Video compression using neural networks
SG10202006357UA (en) * 2020-07-01 2020-09-29 Alipay Labs Singapore Pte Ltd A Document Identification Method and System
US11776273B1 (en) * 2020-11-30 2023-10-03 Amazon Technologies, Inc. Ensemble of machine learning models for automatic scene change detection
CN114581966A (zh) * 2020-11-30 2022-06-03 伊姆西Ip控股有限责任公司 用于信息处理的方法、电子设备和计算机程序产品
CN112528109B (zh) * 2020-12-01 2023-10-27 科大讯飞(北京)有限公司 一种数据分类方法、装置、设备及存储介质
US20220253990A1 (en) * 2021-02-10 2022-08-11 Adobe Inc. Media enhancement using discriminative and generative models with feedback
US11748988B1 (en) 2021-04-21 2023-09-05 Amazon Technologies, Inc. Shot contras five self-supervised learning of a plurality of machine learning models for video analysis applications
EP4089574A1 (en) * 2021-05-14 2022-11-16 Fyma OÜ A method and system for gathering information of an object moving in an area of interest
KR102401955B1 (ko) 2021-05-20 2022-05-25 (주)에어패스 Fsm 특성을 활용한 ar 스포츠 게임 콘텐츠 제공시스템
US11671551B2 (en) * 2021-05-24 2023-06-06 Sony Group Corporation Synchronization of multi-device image data using multimodal sensor data
US20230164389A1 (en) * 2021-11-19 2023-05-25 Qualcomm Incorporated Analyzing Content Of A Media Presentation
CN114419508A (zh) * 2022-01-19 2022-04-29 北京百度网讯科技有限公司 识别方法、训练方法、装置、设备及存储介质
US11804245B2 (en) * 2022-01-21 2023-10-31 Kyndryl, Inc. Video data size reduction
WO2023243754A1 (ko) * 2022-06-17 2023-12-21 주식회사 엔씨소프트 지정된 모션이 캡쳐된 시점을 추출하는 전자 장치 및 방법
JP7487392B1 (ja) 2023-10-06 2024-05-20 セーフィー株式会社 システム、方法、およびプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170078767A1 (en) 2015-09-14 2017-03-16 Logitech Europe S.A. Video searching for filtered and tagged motion

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101311746A (zh) * 2007-05-24 2008-11-26 李世雄 可示意障碍物距离的车用障碍物检测装置
US8706655B1 (en) * 2011-06-03 2014-04-22 Google Inc. Machine learned classifiers for rating the content quality in videos using panels of human viewers
US9118886B2 (en) * 2012-07-18 2015-08-25 Hulu, LLC Annotating general objects in video
TWI490827B (zh) * 2013-05-13 2015-07-01 Univ Nat Cheng Kung 即時影片註記學習系統及其方法
US20150032449A1 (en) * 2013-07-26 2015-01-29 Nuance Communications, Inc. Method and Apparatus for Using Convolutional Neural Networks in Speech Recognition
US9620169B1 (en) * 2013-07-26 2017-04-11 Dreamtek, Inc. Systems and methods for creating a processed video output
EP2833325A1 (en) 2013-07-30 2015-02-04 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for resource-adaptive object detection and tracking
US9330171B1 (en) * 2013-10-17 2016-05-03 Google Inc. Video annotation using deep network architectures
US10467287B2 (en) * 2013-12-12 2019-11-05 Google Llc Systems and methods for automatically suggesting media accompaniments based on identified media content
US20160080835A1 (en) * 2014-02-24 2016-03-17 Lyve Minds, Inc. Synopsis video creation based on video metadata
US9646227B2 (en) 2014-07-29 2017-05-09 Microsoft Technology Licensing, Llc Computerized machine learning of interesting video sections
US9176987B1 (en) * 2014-08-26 2015-11-03 TCL Research America Inc. Automatic face annotation method and system
US10303768B2 (en) 2015-05-04 2019-05-28 Sri International Exploiting multi-modal affect and semantics to assess the persuasiveness of a video
US20160378863A1 (en) * 2015-06-24 2016-12-29 Google Inc. Selecting representative video frames for videos
US10733979B2 (en) * 2015-10-09 2020-08-04 Google Llc Latency constraints for acoustic modeling
US20170140260A1 (en) 2015-11-17 2017-05-18 RCRDCLUB Corporation Content filtering with convolutional neural networks
US20170178346A1 (en) 2015-12-16 2017-06-22 High School Cube, Llc Neural network architecture for analyzing video data
US10381022B1 (en) * 2015-12-23 2019-08-13 Google Llc Audio classifier
US10390082B2 (en) * 2016-04-01 2019-08-20 Oath Inc. Computerized system and method for automatically detecting and rendering highlights from streaming videos
CN107273782B (zh) * 2016-04-08 2022-12-16 微软技术许可有限责任公司 使用递归神经网络的在线动作检测
US9830516B1 (en) * 2016-07-07 2017-11-28 Videoken, Inc. Joint temporal segmentation and classification of user activities in egocentric videos
US20180018970A1 (en) * 2016-07-15 2018-01-18 Google Inc. Neural network for recognition of signals in multiple sensory domains
WO2018048945A1 (en) * 2016-09-06 2018-03-15 Deepmind Technologies Limited Processing sequences using convolutional neural networks
US10152637B2 (en) * 2016-09-14 2018-12-11 Canon Kabushiki Kaisha Temporal segmentation of actions using context features
US10430661B2 (en) 2016-12-20 2019-10-01 Adobe Inc. Generating a compact video feature representation in a digital medium environment
US10445582B2 (en) * 2016-12-20 2019-10-15 Canon Kabushiki Kaisha Tree structured CRF with unary potential function using action unit features of other segments as context feature
US11044520B2 (en) * 2016-12-29 2021-06-22 Telefonaktiebolaget Lm Ericsson (Publ) Handling of video segments in a video stream
US20180204064A1 (en) * 2017-01-19 2018-07-19 Adrienne Rebecca Tran Method and system for annotating video of test subjects for behavior classification and analysis
US20200202171A1 (en) 2017-05-14 2020-06-25 Digital Reasoning Systems, Inc. Systems and methods for rapidly building, managing, and sharing machine learning models
US20180373980A1 (en) * 2017-06-27 2018-12-27 drive.ai Inc. Method for training and refining an artificial intelligence
CN107632961B (zh) * 2017-07-12 2020-12-01 天津大学 基于全相位谱分析的多频内插迭代频率估计方法及估计器
US10509988B2 (en) * 2017-08-16 2019-12-17 Microsoft Technology Licensing, Llc Crime scene analysis using machine learning
US10628486B2 (en) * 2017-11-15 2020-04-21 Google Llc Partitioning videos
US10740394B2 (en) * 2018-01-18 2020-08-11 Oath Inc. Machine-in-the-loop, image-to-video computer vision bootstrapping
CN109389055B (zh) * 2018-09-21 2021-07-20 西安电子科技大学 基于混合卷积和注意力机制的视频分类方法
US10846522B2 (en) * 2018-10-16 2020-11-24 Google Llc Speaking classification using audio-visual data
CN109218622A (zh) * 2018-11-01 2019-01-15 华勤通讯技术有限公司 照片的生成方法和设备
EP3654249A1 (en) * 2018-11-15 2020-05-20 Snips Dilated convolutions and gating for efficient keyword spotting
US11636681B2 (en) * 2018-11-21 2023-04-25 Meta Platforms, Inc. Anticipating future video based on present video
CN109740670B (zh) * 2019-01-02 2022-01-11 京东方科技集团股份有限公司 视频分类的方法及装置
US10984246B2 (en) * 2019-03-13 2021-04-20 Google Llc Gating model for video analysis
US11151386B1 (en) * 2020-03-04 2021-10-19 Amazon Technologies, Inc. Automated identification and tagging of video content
CN111797771B (zh) * 2020-07-07 2022-09-09 南京理工大学 一种基于迭代学习的弱监督视频行为检测方法及系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170078767A1 (en) 2015-09-14 2017-03-16 Logitech Europe S.A. Video searching for filtered and tagged motion

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
孟洋ほか,ニュース映像アーカイブにおけるキーショットの抽出と索引付け,電子情報通信学会技術研究報告,社団法人電子情報通信学会,2005年06月09日,Vol.105,No.118,pp.55-59

Also Published As

Publication number Publication date
US20200293783A1 (en) 2020-09-17
JP2022523606A (ja) 2022-04-26
CN112740709A (zh) 2021-04-30
US10984246B2 (en) 2021-04-20
KR20210031756A (ko) 2021-03-22
US20210216778A1 (en) 2021-07-15
WO2020185256A1 (en) 2020-09-17
KR102297393B1 (ko) 2021-09-02
CN112740709B (zh) 2023-08-29
EP3735777A1 (en) 2020-11-11
US11587319B2 (en) 2023-02-21

Similar Documents

Publication Publication Date Title
JP7228682B2 (ja) 動画解析のためのゲーティングモデル
US11231838B2 (en) Image display with selective depiction of motion
US10599391B2 (en) Parsing electronic conversations for presentation in an alternative interface
US11949848B2 (en) Techniques to capture and edit dynamic depth images
US11641445B2 (en) Personalized automatic video cropping
US20150130816A1 (en) Computer-implemented methods and systems for creating multimedia animation presentations
US20240214542A1 (en) Techniques to capture and edit dynamic depth images

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210708

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210708

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221101

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230117

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230213

R150 Certificate of patent or registration of utility model

Ref document number: 7228682

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150