KR102297393B1 - 비디오 분석을 위한 게이팅 모델 - Google Patents
비디오 분석을 위한 게이팅 모델 Download PDFInfo
- Publication number
- KR102297393B1 KR102297393B1 KR1020217006604A KR20217006604A KR102297393B1 KR 102297393 B1 KR102297393 B1 KR 102297393B1 KR 1020217006604 A KR1020217006604 A KR 1020217006604A KR 20217006604 A KR20217006604 A KR 20217006604A KR 102297393 B1 KR102297393 B1 KR 102297393B1
- Authority
- KR
- South Korea
- Prior art keywords
- video
- model
- frames
- implementations
- gating
- Prior art date
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 27
- 238000000034 method Methods 0.000 claims abstract description 138
- 238000010801 machine learning Methods 0.000 claims abstract description 52
- 238000005070 sampling Methods 0.000 claims abstract description 19
- 238000013527 convolutional neural network Methods 0.000 claims description 71
- 238000013528 artificial neural network Methods 0.000 claims description 27
- 230000004927 fusion Effects 0.000 claims description 20
- 230000015654 memory Effects 0.000 claims description 20
- 230000000306 recurrent effect Effects 0.000 claims description 7
- 230000002028 premature Effects 0.000 claims description 3
- 238000012549 training Methods 0.000 description 115
- 238000012545 processing Methods 0.000 description 26
- 238000004891 communication Methods 0.000 description 16
- 238000003860 storage Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 15
- 230000009183 running Effects 0.000 description 12
- 230000000694 effects Effects 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000009191 jumping Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 239000002131 composite material Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000011521 glass Substances 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 230000006641 stabilisation Effects 0.000 description 2
- 238000011105 stabilization Methods 0.000 description 2
- 230000009182 swimming Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 210000000707 wrist Anatomy 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing 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/44008—Processing 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/23418—Processing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
- G06F18/254—Fusion techniques of classification results, e.g. of results related to same input data
- G06F18/256—Fusion techniques of classification results, e.g. of results related to same input data of results relating to different input data, e.g. multimodal recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/169—Annotation, e.g. comment data or footnotes
-
- G06K9/00221—
-
- G06K9/00711—
-
- G06K9/6256—
-
- G06K9/6293—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/77—Processing 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/80—Fusion, i.e. combining data from various sources at the sensor level, preprocessing level, feature extraction level or classification level
- G06V10/809—Fusion, 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/811—Fusion, 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/40—Scenes; Scene-specific elements in video content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/40—Scenes; Scene-specific elements in video content
- G06V20/41—Higher-level, semantic clustering, classification or understanding of video scenes, e.g. detection, labelling or Markovian modelling of sport events or news items
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/40—Scenes; Scene-specific elements in video content
- G06V20/46—Extracting features or characteristics from the video content, e.g. video fingerprints, representative shots or key frames
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/40—Scenes; Scene-specific elements in video content
- G06V20/46—Extracting features or characteristics from the video content, e.g. video fingerprints, representative shots or key frames
- G06V20/47—Detecting features for summarising video content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/439—Processing of audio elementary streams
- H04N21/4394—Processing 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)
- Software Systems (AREA)
- General Engineering & Computer Science (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)
- Molecular Biology (AREA)
- Biomedical Technology (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Oral & Maxillofacial Surgery (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
본 명세서에 설명된 구현은 비디오 분석을 위한 게이팅을 수행하기 위한 방법, 장치 및 컴퓨터 판독 가능 매체에 관한 것이다. 일부 구현에서, 컴퓨터로 구현되는 방법은 복수의 프레임 및 대응하는 오디오를 포함하는 비디오를 획득하는 단계를 포함한다. 방법은 목표 프레임 레이트에 기초하여 복수의 프레임의 서브세트를 선택하기 위해 샘플링을 수행하고 복수의 프레임의 서브세트의 각 프레임에 대한 개별 오디오 스펙트로그램을 추출하는 단계를 더 포함한다. 방법은 복수의 프레임의 서브세트의 해상도를 감소시키는 단계를 더 포함한다. 방법은 기계 학습 기반 게이팅 모델을 복수의 프레임 및 대응하는 오디오 스펙트로그램의 서브세트에 적용하고 게이팅 모델의 출력으로서 하나 이상의 비디오 주석을 추가하기 위해 비디오를 분석할지 여부의 표시를 획득하는 단계를 더 포함한다.
Description
본 명세서는 비디오 분석을 위한 게이팅 모델에 관한 것이다.
사용자는 온라인 이미지 관리 서비스에 이미지와 비디오를 업로드한다. 일부 서비스는 비디오 주석(annotation)을 수행한다. 예를 들어, 비디오 주석은 업로드된 파일에서 사람의 얼굴, 객체(예: 생일 케이크), 움직임(예: 점프, 뛰기 등), 소리(예: 웃음) 등을 나타내는 라벨을 포함한다. 비디오 주석은 프로그래밍 기법을 사용하여 비디오를 분석하여 생성된다.
본 명세서에 제공된 배경 설명은 일반적으로 본 개시 내용의 맥락을 제시하기 위한 것이다. 이 배경 섹션에 설명된 한도 내에서 현재 지명된 발명자의 워크분만 아니라 출원 당시에 선행 기술로 달리 자격이 없을 수 있는 설명의 양태는 명시적이거나 묵시적으로 본 개시에 대한 이전 기술로 인정되지 않는다.
본 명세서에 설명된 구현은 하나 이상의 비디오 주석을 추가하기 위해 비디오를 분석할지 여부를 결정하기 위한 방법, 장치 및 컴퓨터 판독 가능 매체에 관한 것이다. 일부 구현에서, 컴퓨터로 구현되는 방법은 복수의 프레임 및 대응하는 오디오를 포함하는 비디오를 획득하는 단계를 포함한다. 방법은 목표 프레임 레이트에 기초하여 복수의 프레임의 서브세트를 선택하기 위해 샘플링을 수행하는 단계를 더 포함한다. 일부 구현에서, 목표 프레임 레이트는 비디오의 프레임 레이트 이하이다. 방법은 또한 복수의 프레임의 서브세트에서 각 프레임에 대한 각각의 오디오 스펙트로그램을 추출하는 단계를 포함한다. 방법은 또한 복수의 프레임의 서브세트의 해상도를 감소시키고, 해상도를 감소시킨 후, 기계 학습 기반 게이팅 모델을 복수의 프레임 및 대응하는 오디오 스펙트로그램의 서브세트에 적용하는 단계를 포함한다. 방법은 게이팅 모델의 출력으로서, 하나 이상의 비디오 주석을 추가하기 위해 비디오를 분석할지 여부의 표시를 획득하는 단계를 더 포함한다.
일부 구현에서, 방법은, 게이팅 모델을 적용하기 전에, 비디오를 복수의 세그먼트로 분할하는 단계를 더 포함하며, 각 세그먼트는 복수의 프레임을 포함하고, 게이팅 모델을 적용하는 것은 복수의 세그먼트에 걸쳐 순차적으로 반복적으로 수행되며, 상기 표시는 각 반복에서 생성된다. 일부 구현에서, 복수의 세그먼트의 각각의 세그먼트는 복수의 세그먼트의 다른 세그먼트와 중첩될 수 있다. 일부 구현에서, 특정 반복에서의 표시가 비디오가 분석되어야한다는 것이라면, 적용은 복수의 세그먼트 중 하나 이상이 제외되도록 종료된다.
일부 구현에서, 게이팅 모델은 게이팅 모델에 제공된 입력 비디오에 특정 특징이 존재하는지 여부를 결정하도록 훈련된다. 일부 구현에서, 특정 특징은 사람의 얼굴, 객체(사물) 유형, 움직임 유형 또는 오디오 유형 중 적어도 하나를 포함한다.
일부 구현에서, 게이팅 모델을 적용하는 단계는, 특정 특징이 존재할 가능성을 결정하는 제1 모델을 적용하는 단계; 그리고 특정 특징이 존재할 가능성을 입력으로 수신하고, 상기 비디오를 분석할지 여부의 상기 표시를 생성하는 제2 모델을 적용하는 단계를 포함할 수 있다. 일부 구현에서, 제1 모델은, 비디오를 분석하도록 훈련된 복수의 계층을 포함하는 제1 컨벌루션 신경망; 오디오를 분석하도록 훈련된 복수의 계층을 포함하는 제2 컨벌루션 신경망; 그리고 복수의 계층을 포함하고, 제1 컨벌루션 신경망 및 제2 컨벌루션 신경망의 출력을 입력으로 수신하고, 특정 특징이 제2 모델에 존재할 가능성을 제공하는 퓨전 네트워크를 포함할 수 있다. 일부 구현에서, 제2 모델은 휴리스틱, 순환 신경망 또는 마르코프 체인 분석 기술 중 하나 이상을 사용하여 구현된다. 일부 구현에서, 방법은 제2 모델에 추가 입력을 제공하는 단계를 더 포함할 수 있다. 추가 입력은, 특정 특징이 존재하는 것으로 검출되는 복수의 프레임의 서브세트의 특정 프레임의 부분 식별, 특정 특징이 복수의 프레임의 서브세트에 나타나는 기간, 또는 조기 종료에 관한 휴리스틱 중 하나 이상을 포함할 수 있다. 이러한 구현에서 제2 모델은 표시를 생성하기 위해 추가 입력을 활용(이용)한다.
일부 구현에서, 방법은 표시가 비디오를 분석하는 것일 때, 하나 이상의 비디오 주석을 추가하기 위해 비디오를 프로그래밍 방식으로 분석하는 단계를 더 포함할 수 있다. 비디오 주석은 하나 이상의 얼굴, 특정 유형의 객체, 특정 유형의 움직임 또는 특정 유형의 오디오가 비디오에 존재함을 나타내는 하나 이상의 라벨을 포함할 수 있다.
일부 구현은 하나 이상의 비디오 주석을 추가하기 위해 비디오를 분석하는 컴퓨팅 장치를 포함할 수 있다. 장치는 프로세서와 이에 저장된 명령어를 포함할 수 있다. 프로세서에 의해 실행될 때 명령어는 프로세서로 하여금 복수의 프레임 및 해당 오디오를 포함하는 비디오를 획득하는 것을 포함할 수 있는 동작을 수행하게 한다. 동작은 비디오의 프레임 레이트 이하인 목표 프레임 레이트에 기초하여 복수의 프레임의 서브세트를 선택하기 위해 샘플링을 수행하는 것을 더 포함할 수 있다. 동작은 복수의 프레임의 서브세트의 각 프레임에 대한 오디오로부터 각각의 오디오 스펙트로그램을 추출하는 것을 더 포함할 수 있다. 동작은 복수의 프레임의 서브세트의 해상도를 감소시키는 것을 더 포함할 수 있다. 동작은 해상도를 감소시킨 후, 기계 학습 기반 게이팅 모델을 복수의 프레임 및 대응하는 오디오 스펙트로그램의 서브세트에 적용하는 것을 더 포함할 수 있다. 동작은 게이팅 모델의 출력으로서 하나 이상의 비디오 주석을 추가하기 위해 비디오를 분석할지 여부의 표시를 획득하는 것을 더 포함할 수 있다.
일부 구현에서, 메모리는 프로세서에 의해 실행될 때 프로세서가 게이팅 모델을 적용하기 전에 비디오를 복수의 세그먼트로 분할하는 것을 포함하는 추가 동작을 수행하게 하는 저장된 추가 명령어를 포함할 수 있다. 각 세그먼트에는 여러 프레임이 포함될 수 있다. 이들 구현에서, 게이팅 모델을 적용하는 것은 복수의 세그먼트에 걸쳐 순차적으로 반복적으로 수행되고, 표시는 각 반복에서 생성된다.
본 명세서에 설명된 구현은 또한 특정 특징에 대응하는 주석을 추가하기 위해 비디오를 분석할지 여부의 표시를 생성하기 위해 기계 학습 기반 게이팅 모델을 훈련하는 방법, 장치 및 컴퓨터 판독 가능 매체에 관한 것이다. 기계 학습 기반 게이팅 모델은 비디오의 비디오 프레임에 기초하여 특정 특징이 비디오에 존재할 가능성을 생성하는 제1 컨벌루션 신경망을 포함하는 제1 모델; 그리고 특정 특징이 비디오에 존재할 가능성을 입력으로 수신하고, 상기 표시를 생성하는 제2 모델을 포함할 수 있다. 일부 구현에서, 컴퓨터로 구현되는 방법은 복수의 훈련 비디오를 포함하는 훈련 세트를 획득하는 것을 포함한다. 각 훈련 비디오는 복수의 프레임을 포함할 수 있다. 각 훈련 비디오는 해당하는 고해상도 비디오의 저해상도 샘플 버전(sampled version)이다. 훈련 세트는 복수의 훈련 라벨을 더 포함한다. 각각의 훈련 라벨은 복수의 훈련 비디오 중 하나 이상에 대응하는 고해상도 비디오에서 특정 특징의 존재를 표시한다.
방법은 게이팅 모델을 훈련시키는 단계를 더 포함하며, 이는 훈련 비디오에 제1 모델을 적용함으로써 특정 특징이 훈련 비디오에 존재할 가능성을 생성하는 단계를 포함한다. 게이팅 모델을 훈련시키는 것은 제2 모델의 적용에 의해 훈련 비디오에 특정 특징이 존재할 가능성에 기초하여, 특정 특징에 대응하는 주석을 추가하기 위해 훈련 비디오를 분석할지 여부의 표시를 생성하는 것을 더 포함한다. 게이팅 모델을 훈련시키는 것은 또한 대응하는 고해상도 비디오 및 표시와 연관된 훈련 라벨에 기초하여 피드백 데이터를 생성하고, 피드백 데이터를 훈련 입력으로서 제1 모델 및 제2 모델에 제공하는 것을 포함한다. 훈련 세트의 각 훈련 비디오에 대해 게이팅 모델 훈련을 수행할 수 있다.
일부 구현에서, 특정 특징은 사람의 얼굴, 움직임의 유형 또는 객체의 유형 중 적어도 하나를 포함한다. 일부 구현에서, 훈련 세트의 복수의 훈련 비디오는 특정 특징이 존재하는 적어도 하나의 비디오 및 특정 특징이 없는 적어도 하나의 비디오를 포함한다. 이러한 구현에서, 게이팅 모델을 훈련시키는 단계는, 제1 모델의 제1 컨벌루션 신경망의 하나 이상의 노드의 가중치를 자동으로 조정하는 단계 또는 제1 모델의 제1 컨벌루션 신경망의 하나 이상의 노드 쌍 사이의 연결을 자동으로 조정하는 단계 중 하나 이상을 포함한다.
일부 구현에서, 게이팅 모델의 제2 모델은 휴리스틱 기반 모델, 순환 신경망, 또는 마르코프 체인 분석 모델 중 하나 이상을 포함한다. 이러한 구현에서, 게이팅 모델을 훈련시키는 단계는 휴리스틱 기반 모델, 순환 신경망 또는 마르코프 체인 분석 모델의 하나 이상의 파라미터를 자동으로 조정하는 단계를 포함한다.
일부 구현에서, 게이팅 모델을 훈련시키는 것은 훈련 비디오의 복수의 프레임을 복수의 프레임 스택으로 분할하는 것을 더 포함할 수 있다. 각 스택은 하나 이상의 프레임을 포함할 수 있다. 복수의 스택은 순서대로 구성될 수 있다. 이들 구현에서, 게이팅 모델을 훈련시키는 것은 복수의 프레임 스택의 각 프레임 스택에 대해 순차적으로 수행된다. 이러한 구현에서, 제2 모델은 훈련 비디오의 각 스택에 대해 생성된 표시를 저장하도록 구성된다. 더욱이, 이러한 구현에서, 특정 스택에 대한 표시를 생성하는 것은 추가로 순서화된(정렬된) 시퀀스에서 하나 이상의 이전 스택에 대한 각각의 저장된 표시에 기초한다.
일부 구현에서, 복수의 훈련 비디오 중 하나 이상의 훈련 비디오는 복수의 프레임에 대응하는 오디오 스펙트로그램을 포함할 수 있다. 이러한 구현에서, 제1 모델은 오디오 스펙트로그램을 분석하도록 훈련된 제2 컨벌루션 신경망; 그리고 제1 컨벌루션 신경망과 제2 컨벌루션 신경망의 출력을 입력으로 수신하고, 특정 특징이 비디오에 존재할 가능성을 생성하는 퓨전 네트워크를 더 포함한다.
도 1은 본 명세서에 설명된 하나 이상의 구현에 사용될 수 있는 예시적인 네트워크 환경의 블록도이다.
도 2는 일부 구현에 따른 예시적인 방법(200)을 예시하는 흐름도이다.
도 3은 일부 구현에 따른 예시적인 게이팅 모델(300)의 동작을 도시한다.
도 4는 일부 구현들에 따라 기계 학습 기반 게이팅 모델을 훈련하기 위한 예시적인 방법(400)을 예시하는 흐름도이다.
도 5는 예시적인 비디오 및 게이팅 모델의 대응하는 출력을 도시한다.
도 6은 본 명세서에 설명된 하나 이상의 구현을 위해 사용될 수 있는 예시적인 장치의 블록도이다.
도 2는 일부 구현에 따른 예시적인 방법(200)을 예시하는 흐름도이다.
도 3은 일부 구현에 따른 예시적인 게이팅 모델(300)의 동작을 도시한다.
도 4는 일부 구현들에 따라 기계 학습 기반 게이팅 모델을 훈련하기 위한 예시적인 방법(400)을 예시하는 흐름도이다.
도 5는 예시적인 비디오 및 게이팅 모델의 대응하는 출력을 도시한다.
도 6은 본 명세서에 설명된 하나 이상의 구현을 위해 사용될 수 있는 예시적인 장치의 블록도이다.
사용자는 스마트 폰 또는 기타 장치와 같은 카메라를 사용하여 비디오를 캡처한다. 사용자는 이러한 비디오를 클라이언트 장치 또는 서버, 예를 들어 비디오 호스팅 서비스를 제공하는 서버에 저장할 수 있다. 애플리케이션은, 예를 들어, "John 's birthday(존의 생일)", "Maria’s graduation(마리아의 졸업)", "my baseball game from last weekend(지난 주말부터의 나의 야구 경기)와 같은 키워드 또는 키 구문을 사용하여, 사용자의 클라이언트 장치 및/또는 사용자가 비디오를 검색할 수 있는 서버를 통해 제공될 수 있다.
사용자의 비디오를 빠르게 검색할 수 있도록 애플리케이션은 사용자의 비디오과 관련된 특수 효과를 생성하고 저장할 수 있다. 주석은 라벨이거나 라벨을 포함할 수 있다. 예를 들어, 주석은 비디오에 묘사된 특징, 예를 들어 사람 얼굴의 존재(그리고 얼굴이 특정 사람과 연관되어 있는지 여부), 객체 유형의 존재(예: 케이크, 양초, 야구 방망이 등), 움직임의 유형, 행동 또는 활동(예: 달리기, 춤추 기, 운동하기 등)의 존재를 나타낼 수 있다. 사용자가 검색을 수행하면 검색과 일치하는 비디오를 식별하기 위해 주석이 분석된다. 예를 들어 'my baseball game from last weekend(지난 주말부터의 나의 야구 경기)' 검색에 대한 응답으로, 비디오가 검색과 일치하는지 여부를 결정하기 위해 "야구 방망이", "야구 모자", "경기장" 등과 같은 하나 이상의 특정 주석이 비디오와 연관되어 있는지 여부를 결정하기 위해 주석을 분석할 수 있다. 사용자 동의를 얻은 경우, 주석은 자동으로 분석되어 특정 시스템 태스크를 수행하기 위해 특정 기준과 일치하는 비디오를 식별할 수 있으며, 예를 들어, 비디오를 자동으로 공유할 사용자를 찾고, 사용자 장치에 표시되는 관련 비디오 또는 그 일부(예: 묘사된 객체, 활동 등과 같은 비디오 콘텐츠를 기반으로 한 주제별 프레젠테이션 또는 기타 이미지 기반 창작물로 결합)를 찾는 등의 작업을 수행할 수 있다.
비디오에 대한 하나 이상의 주석을 추가하기 위해 비디오를 분석하는 것은 계산 비용이 많이들 수 있다. 주석이 특정 특징에 해당하는 경우, 특정 특징 중 하나 이상이 비디오(또는 비디오의 하나 이상의 세그먼트)에 존재하는지 여부를 결정하기 위해 전체 비디오를 분석해야할 수 있으며, 특정 특징이 존재하는 경우 해당 주석이 비디오에 추가될 수 있다. 이 작업(동작)은 낭비적일 수 있다. 예를 들어 특정 특징이 비디오에 없는 경우 비디오 분석은 컴퓨팅 리소스와 에너지를 낭비할 수 있다.
또한, 주석을 추가하기 위해 비디오를 분석하는 것은 실행 가능하지 않거나 특정 장치, 예를 들어 제한된 처리 용량을 가진 장치, 제한된 전력 용량을 가진 장치(예를 들어, 배터리 전원 장치)에서 특히 비용이 많이들 수 있다. 사용자가 특정 특징을 포함하지 않는 여러 비디오가 포함된 비디오 라이브러리를 가지고있는 경우 비디오 분석의 계산 비용이 많이 드는 작업(동작)은 복수의 비디오 각각에 대해 실행될 수 있다. 또한 비디오의 일부만 특정 특징을 묘사하는 경우 전체 비디오를 분석하면 컴퓨팅 리소스가 낭비될 수 있다.
일부 구현에는 비디오의 게이팅 분석을 수행하기 위한 명령어가 있는 방법, 장치 및 컴퓨터 판독 가능 매체가 포함된다. 게이팅 분석은 하나 이상의 비디오 주석을 추가하기 위해 비디오 또는 비디오의 하나 이상의 세그먼트를 분석할지 여부에 대한 표시를 생성하는 훈련된 기계 학습 기반 게이팅 모델(gating model)을 적용함으로써 수행될 수 있다.
표시를 생성하기 위해 게이팅 모델을 사용하면 몇 가지 기술적 장점을 제공할 수 있다. 예를 들어, 게이팅 모델은 특정 특징이 존재하는지 여부를 검출하고 해당 주석을 추가하기 위해 비디오를 분석하는 데 사용되는 비디오 분석 기술보다 실질적으로 더 낮은 계산 비용과 연관될 수 있다.
예를 들어, 게이팅 모델은 비디오 프레임의 저해상도, 샘플링된 서브세트에 적용될 수 있으며, 따라서 원본 고해상도 비디오를 분석하는 것보다 계산 비용이 더 낮다. 또한 게이팅 모델이 긍정적인 표시를 생성하는 비디오만 분석해야하므로 컴퓨팅 비용과 전력을 절약할 수 있다.
게이팅 모델을 사용하면 컴퓨팅 용량이 낮거나 전력이 제한된 장치에서 비디오 주석을 수행할 수도 있다. 또한 일부 구현에서, 게이팅 모델로부터의 표시는 특정 특징이 하나 이상의 세그먼트에 존재할 가능성에 기초하여 분석을 위한 비디오의 하나 이상의 세그먼트의 식별을 포함할 수 있다. 이러한 구현에서, 비디오 주석을 추가하기 위해 비디오의 다른 세그먼트가 분석에서 제외되어 계산 비용이 절약될 수 있다. 게이팅 모델은 여러 비디오에 적용할 수 있다. 예를 들어, 사용자가 수천 개의 비디오와 같이 많은 수의 비디오를 가지고 있는 경우, 게이팅 모델은 모든 비디오를 분석하는 대신 계산 비용이 높은 기술을 사용하여 주석을 추가하기 위해 추가 분석할 비디오를 식별하는 데 적용할 수 있다. 이 예에서, 게이팅 모델이 추가 분석을 위해 식별하는 비디오의 서브세트(예: 1,000 개 비디오 중 300 개 비디오)는, 예를들어 100 개의 비디오 중 10 개가 추가로 분석되지만 다른 비디오는 추가로 분석되지 않는다. 총 계산 비용(이는 1000 개의 비디오에 대한 게이팅 모델 사용의 계산 비용과 고비용 기술을 사용하여 300 개의 비디오를 추가로 분석하는 계산 비용의 합계임)은 고비용 기술을 사용하여 수천 개의 동영상을 분석하는 것보다 낮다.
일부 구현에서, 게이팅 모델은 특정 특징이 비디오에 존재할 가능성을 결정하도록 훈련된 제1 모델과 가능성 예측(또는 가능성 예측 시퀀스)을 활용하도록 훈련된 제2 모델을 포함하는 2단계(two-stage) 모델로 구현될 수 있다(예를 들어, 비디오 분석 여부 표시를 생성하기 위한 입력으로서 제1 모델에 의한 출력). 일부 구현에서, 2 단계 모델은 특정 특징이 존재할 가능성을 결정하는 복수의 상이한 제1 모델 및 단일 제2 단계 모델을 포함할 수 있다.
일부 구현에서, 게이팅 모델이 제1 모델 및 제2 모델을 포함하는 2 단계 모델로 구현될 때, 제1 모델 및 제2 모델은 서로 독립적으로 훈련될 수 있다. 예를 들어, 제1 모델은 특정 특징(예를 들어, 사람의 얼굴, 객체 유형, 움직임 유형, 오디오 유형 등)이 비디오에 존재할 가능성을 결정하도록 훈련될 수 있다. 이 훈련은 예를 들어 훈련 비디오와 관련된 훈련 라벨을 기반으로 얻은 피드백 데이터를 제공함으로써 제2 모델의 훈련과 독립적으로 수행될 수 있다.
예를 들어, 제2 모델은 주석을 추가하기 위해 비디오를 분석할지 여부의 표시를 생성하기 위해 입력으로서 가능성 예측(또는 가능성 예측의 시퀀스)을 활용하도록 훈련될 수 있다. 이 훈련은 다른 가능성 값을 입력으로 제공하고 훈련 라벨을 피드백 데이터로 제공하여 제1 모델의 훈련과 독립적으로 수행할 수 있다. 따라서 각 모델은 게이팅 모델 전체의 성능(예: 정확도, 계산 비용 등)이 그에 따라 향상되면서 다른 모델과 별도로 평가되고 훈련될 수 있다.
도 1은 동일한 요소를 식별하기 위해 동일한 참조 번호를 사용한다. "156a"와 같이 참조 번호 뒤의 문자는 텍스트가 특정 참조 번호를 갖는 요소를 구체적으로 참조함을 나타낸다. "156"과 같이 다음 문자가 없는 텍스트의 참조 번호는 해당 참조 번호를 포함하는 도면의 요소 중 일부 또는 전부를 나타낸다(예: 텍스트에서 "156"은 도면에서 참조 번호 "156a" 및/또는 "156b"를 나타냄).
도 1은 본 명세서에 설명된 일부 구현에서 사용될 수 있는 예시적인 네트워크 환경(100)의 블록도를 도시한다. 일부 구현에서, 네트워크 환경(100)은 하나 이상의 서버 시스템, 예를 들어 도 1의 예의 서버 시스템(102)을 포함한다. 서버 시스템(102)은 예를 들어 네트워크(130)와 통신할 수 있다. 서버 시스템(102)은 서버 장치(104) 및 데이터베이스(106) 또는 다른 저장 장치를 포함할 수 있다. 데이터베이스(106)는 하나 이상의 이미지 및/또는 비디오 및 하나 이상의 이미지 및/또는 비디오와 연관된 메타데이터를 저장할 수 있다. 일부 구현에서, 서버 장치(104)는 이미지 관리 애플리케이션(156b)을 제공할 수 있다. 이미지 관리 애플리케이션(156b)은 데이터베이스(106)에 저장된 이미지에 액세스할 수 있다.
네트워크 환경(100)은 또한 네트워크(130)를 통해 서로 및/또는 서버 시스템(102)과 통신할 수 있는 하나 이상의 클라이언트 장치, 예를 들어 클라이언트 장치(120, 122, 124, 126)를 포함할 수 있다. 네트워크(130)는 인터넷, 근거리 통신망(LAN), 무선 네트워크, 스위치 또는 허브 연결 중 하나 이상을 포함하는 임의의 유형의 통신 네트워크일 수 있다. 일부 구현들에서,
네트워크(130)는 예를 들어, 피어-투-피어(peer-to-peer)(P2P) 무선 프로토콜(예를 들어, 블루투스 ®, Wi-Fi 다이렉트 등) 등을 사용하는 장치들 간의 피어-투-피어 통신을 포함할 수 있다. 두 클라이언트 장치(120 및 122) 사이의 P2P 통신은 화살표(132)로 표시된다.
설명의 편의를 위해, 도 1은 서버 시스템(102), 서버 장치(104) 및 데이터베이스(106)에 대한 하나의 블록을 나타내고, 클라이언트 장치(120, 122, 124 및 126)에 대한 4 개의 블록을 나타낸다. 서버 블록(102, 104, 106)은 복수의 시스템, 서버 장치 및 네트워크 데이터베이스를 나타낼 수 있으며, 블록은 도시된 것과 다른 구성으로 제공될 수 있다. 예를 들어, 서버 시스템(102)은 네트워크(130)를 통해 다른 서버 시스템과 통신할 수 있는 다중 서버 시스템을 나타낼 수 있다. 일부 구현에서, 서버 시스템(102)은 예를 들어 클라우드 호스팅 서버를 포함할 수 있다. 일부 예에서, 데이터베이스(106) 및/또는 다른 저장 장치는 서버 장치(104)와 분리되고 네트워크(130)를 통해 서버 장치(104) 및 다른 서버 시스템과 통신할 수 있는 서버 시스템 블록(들)에 제공될 수 있다.
클라이언트 장치의 수에는 제한이 없다. 각 클라이언트 장치는 데스크톱 컴퓨터, 랩톱 컴퓨터, 휴대용 또는 모바일 장치, 휴대폰, 스마트 폰, 태블릿 컴퓨터, 텔레비전, 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)는 하나 이상의 서버 시스템, 예를 들어 시스템(102)과 데이터를 주고 받을 수 있다.
일부 구현에서, 서버 시스템(102)은 각각의 클라이언트 장치가 서버 시스템(102) 및/또는 네트워크 서비스에 업로드된 공유된 콘텐츠 또는 통신된 콘텐츠를 수신할 수 있도록 적절한 데이터를 클라이언트 장치에 제공할 수 있다. 일부 예에서, 사용자(U1-U4)는 오디오 또는 비디오 회의, 오디오, 비디오 또는 텍스트 채팅, 또는 기타 통신 모드 또는 애플리케이션을 통해 상호 작용할 수 있다. 서버 시스템(102)에 의해 구현되는 네트워크 서비스는 사용자가 다양한 통신을 수행하고, 링크 및 연결을 형성하고, 이미지, 텍스트, 비디오, 오디오 및 기타 유형의 콘텐츠와 같은 공유 콘텐츠를 업로드 및 게시하고 및/또는 다른 기능을 수행할 수 있는 시스템을 포함할 수 있다. 예를 들어, 클라이언트 장치는 클라이언트 장치로 전송 또는 스트리밍되고 서버 및/또는 네트워크 서비스를 통해 다른 클라이언트 장치에서(또는 다른 클라이언트 장치에서 직접) 발생하거나 서버 시스템 및/또는 네트워크 서비스에서 발생하는 콘텐츠 포스트과 같은 수신된 데이터를 표시할 수 있다. 일부 구현에서, 클라이언트 장치는 예를 들어 위에서 설명한 클라이언트 장치 간의 피어-투-피어(P2P) 통신을 사용하여 서로 직접 통신할 수 있다. 일부 구현에서, "사용자"는 시스템 또는 네트워크와 인터페이스하는 사람뿐만 아니라 하나 이상의 프로그램 또는 가상 엔티티를 포함할 수 있다.
일부 구현에서, 임의의 클라이언트 장치(120, 122, 124 및/또는 126)는 하나 이상의 애플리케이션을 제공할 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 클라이언트 장치(120)는 카메라 애플리케이션(152) 및 이미지 관리 애플리케이션(156a)을 제공할 수 있다. 클라이언트 장치(122-126)도 유사한 애플리케이션을 제공할 수 있다. 예를 들어, 카메라 애플리케이션(152)은 각각의 클라이언트 장치의 사용자(예를 들어, 사용자 U1-U4)에게 각각의 사용자 장치의 카메라를 사용하여 이미지를 캡처하는 능력을 제공할 수 있다. 예를 들어, 카메라 애플리케이션(152)은 클라이언트 장치(120)에서 실행되는 소프트웨어 애플리케이션일 수 있다.
일부 구현에서, 카메라 애플리케이션(152)은 사용자 인터페이스를 제공할 수 있다. 예를 들어, 사용자 인터페이스는
클라이언트 장치(120)의 사용자가 이미지 캡처 모드, 예를 들어 정적 이미지(또는 사진) 모드, 버스트 모드(예를 들어, 짧은 시간 동안 연속된 수의 이미지 캡처), 모션 이미지 모드, 비디오 모드, HDR(High Dynamic Range) 모드 등을 선택할 수 있도록 할 수 있다. 예를 들어, 비디오 모드는 복수의 프레임을 포함하는 비디오의 캡처에 대응할 수 있으며 임의의 길이일 수 있다. 또한, 비디오 모드는 25fps(초당 프레임 수), 30fps, 50fps, 60fps 등과 같은 다른 프레임 속도를 지원할 수 있다. 이미지 캡처의 하나 이상의 파라미터는 비디오 캡처 중에 변경될 수 있다. 예를 들어, 사용자는 비디오를 캡처하는 동안 클라이언트 장치를 사용하여 장면을 확대하거나 축소할 수 있다.
일부 구현에서, 카메라 애플리케이션(152)은 도 2 및 도 4를 참조하여 본 명세서에 설명된 방법을 (예를 들어, 부분적으로 또는 전체적으로) 구현할 수 있다. 일부 구현에서, 이미지 관리 애플리케이션(156a) 및/또는 이미지 관리 애플리케이션(156b)은 도 2 및 도 4를 참조하여 여기에 설명된 방법을 (예를 들어, 부분적으로 또는 전체적으로) 구현할 수 있다.
카메라 애플리케이션(152) 및 이미지 관리 애플리케이션(156a)은 클라이언트 장치(120)의 하드웨어 및/또는 소프트웨어를 사용하여 구현될 수 있다. 다른 구현에서, 이미지 관리 애플리케이션(156a)은 예를 들어 임의의 클라이언트 장치(120-124)에서 실행되는 독립형 애플리케이션일 수 있거나, 서버 시스템(102)에 제공된 이미지 관리 애플리케이션(156b)과 함께 작동할 수 있다.
사용자 허가로, 이미지 관리 애플리케이션(156)은 이미지 또는 비디오를 저장(예를 들어, 백업)(예를 들어, 서버 시스템(102)의 데이터베이스(106)에), 이미지 또는 비디오 향상, 이미지 또는 비디오 안정화, 얼굴, 신체, 객체의 유형, 움직임의 유형 등과 같은 이미지의 하나 이상의 특징을 인식하는 것과 같은 하나 이상의 자동 기능을 수행할 수 있다. 일부 예들에서, 이미지 또는 비디오 안정화는 클라이언트 장치(120)의 가속도계, 자이로 스코프, 또는 다른 센서로부터의 입력에 기초하여 및/또는 모션 이미지 또는 비디오의 복수 프레임의 비교에 기초하여 수행될 수 있다.
이미지 관리 애플리케이션(156)은 또한 사용자 인터페이스에서 이미지 및/또는 비디오 디스플레이(예: 단일 이미지를 포함하는 단일보기, 여러 이미지를 포함하는 격자보기 등), 이미지 또는 비디오 편집(예: 이미지 설정 조정, 필터 적용, 이미지 초점 변경, 동영상 또는 비디오의 하나 이상의 프레임 제거), 다른 사용자(예: 클라이언트 장치 120-126)와 이미지 공유, 이미지 보관(예: 기본 사용자 인터페이스에 표시되지 않도록 이미지 저장), 이미지 기반 창작물 생성(예: 콜라주, 포토 북, 애니메이션, 스토리, 비디오 루프 등과 같은 모션 기반 아티팩트) 등과 같은 이미지 관리 기능을 제공할 수 있다. 일부 구현에서, 이미지 기반 생성을 생성하기 위해, 이미지 관리 애플리케이션(156)은 이미지 또는 비디오와 연관된 하나 이상의 라벨을 이용할 수 있다.
일부 구현에서, 이미지 관리 애플리케이션(156)은 이미지 내의 하나 이상의 특징을 검출하기 위해 객체 인식 기술을 이용함으로써 이미지 또는 비디오를 프로그래밍 방식으로 분석할 수 있다. 일부 구현에서, 이미지 관리 애플리케이션(156)은 이미지 또는 비디오와 관련된 하나 이상의 라벨을 데이터베이스(106) 및/또는 클라이언트 장치(도시되지 않음)상의 로컬 데이터베이스에 저장할 수 있다.
데이터베이스(106)는 이미지 및/또는 비디오 중 하나 이상과 연관된 라벨(예를 들어, 콘텐츠 주석)을 저장할 수 있다. 예를 들어, 라벨에는 특정 특징이 이미지 또는 비디오에 나타나는지 여부에 대한 표시가 포함될 수 있다. 예를 들어, 특정 특징은 예를 들어 사람의 얼굴, 객체의 유형(예: 생일 케이크, 스포츠 장비, 나무 등), 움직임의 유형(예: 점프, 스키 등), 오디오 유형(예: 사람의 말, 웃음, 음악, 자연스러운 소리) 등일 수 있다. 하나 이상의 라벨은 또한 특정 타임스탬프를 포함할 수 있으며, 예를 들어, 움직임(모션) 유형과 연관된 라벨에 대한 타임스탬프는 이미지 또는 비디오에서 모션의 시작 및 종료에 각각 대응하는 시작 및 종료 타임스탬프를 포함할 수 있다. 일부 구현에서, 라벨은 이미지 또는 비디오에 묘사된 장면의 유형, 예를 들어 해변의 일몰, 스키를 타는 사람, 생일 장면, 결혼식, 졸업식 등을 나타낼 수 있다.
클라이언트 장치(120, 122, 124 및/또는 126)의 사용자 인터페이스는 통신, 개인 정보 설정, 알림 및 기타 데이터뿐만 아니라 이미지, 비디오, 데이터 및 기타 콘텐츠를 포함한 사용자 콘텐츠 및 기타 콘텐츠의 디스플레이를 가능하게 할 수 있다. 이러한 사용자 인터페이스는 클라이언트 장치의 소프트웨어, 서버 장치의 소프트웨어 및/또는 서버 장치(104)에서 실행되는 클라이언트 소프트웨어 및 서버 소프트웨어의 조합(예를 들어, 서버 시스템(102)과 통신하는 애플리케이션 소프트웨어 또는 클라이언트 소프트웨어)을 사용하여 디스플레이 표시될 수 있다. 사용자 인터페이스는 클라이언트 장치 또는 서버 장치(예: 터치 스크린 또는 기타 디스플레이 스크린, 프로젝터 등)의 디스플레이 장치에 의해 디스플레이될 수 있다. 일부 구현에서, 서버 시스템에서 실행되는 애플리케이션 프로그램은 클라이언트 장치에서 사용자 입력을 수신하고 클라이언트 장치에서 시각 데이터, 오디오 데이터 등과 같은 데이터를 출력하기 위해 클라이언트 장치와 통신할 수 있다.
일부 구현에서, 임의의 서버 시스템(102) 및/또는 하나 이상의 클라이언트 장치(120-126)는 통신 애플리케이션 프로그램을 제공할 수 있다. 통신 프로그램은 시스템(예를 들어, 클라이언트 장치 또는 서버 시스템)이 다른 장치와 통신하기 위한 옵션을 제공하도록 할 수 있다. 통신 프로그램은 서버 시스템 또는 클라이언트 장치와 연관된 디스플레이 장치에 디스플레이되는 하나 이상의 연관된 사용자 인터페이스를 제공할 수 있다. 사용자 인터페이스는 통신 모드, 통신할 사용자 또는 장치 등을 선택하기 위해 사용자에게 다양한 옵션을 제공할 수 있다. 일부 예들에서, 통신 프로그램은 콘텐츠 포스트를 예를 들어 브로드캐스트(방송) 영역으로 전송 또는 브로드캐스트하기 위한 옵션을 제공할 수 있고 및/또는 콘텐츠 포스트가 장치에 의해 수신되었음을 나타내는 알림, 예를 들어 장치가 포스트에 대해 정의된 방송 영역에 있음을 나타내는 알림을 출력할 수 있다. 통신 프로그램은 전송된 콘텐츠 포스트 및 수신된 콘텐츠 포스트을 예를 들어 다양한 형식 중 하나로 디스플레이하거나 출력할 수 있다. 콘텐츠 포스트에는 다른 사용자와 공유된 이미지 등이 포함될 수 있다.
여기에 설명된 특징의 다른 구현은 임의의 유형의 시스템 및/또는 서비스를 사용할 수 있다. 예를 들어, 다른 네트워크 서비스(예: 인터넷에 연결됨)가 소셜 네트워킹 서비스 대신 또는 추가로 사용될 수 있다. 모든 유형의 전자 장치는 여기에 설명된 기능을 사용할 수 있다. 일부 구현은 컴퓨터 네트워크로부터 단절되거나 간헐적으로 연결된 하나 이상의 클라이언트 또는 서버 장치에서 여기에 설명된 하나 이상의 특징을 제공할 수 있다. 일부 예에서, 디스플레이 장치를 포함하거나 이에 연결된 클라이언트 장치는 클라이언트 장치에 로컬인 저장 장치에 저장된 데이터(예를 들어, 콘텐츠)를 디스플레이할 수 있으며, 예를 들어 통신 네트워크를 통해 이전에 수신할 수 있다.
도 2는 일부 구현에 따른 예시적인 방법(200)을 예시하는 흐름도이다. 일부 구현에서, 방법(200)은 예를 들어 도 1에 도시된 바와 같이 서버 시스템(102)상에서 구현될 수 있다. 일부 구현에서, 방법(200)의 일부 또는 전부는 도 1에 도시된 바와 같이 하나 이상의 클라이언트 장치(120, 122, 124 또는 126), 하나 이상의 서버 장치 및/또는 서버 장치(들) 및 클라이언트 장치(들) 모두에서 구현될 수 있다. 설명된 예들에서, 구현 시스템은 하나 이상의 디지털 프로세서 또는 처리 회로("프로세서"), 및 하나 이상의 저장 장치(예를 들어, 데이터베이스(106) 또는 다른 저장 장치)를 포함한다. 일부 구현에서, 하나 이상의 서버 및/또는 클라이언트의 다른 컴포넌트는 방법(200)의 다른 블록 또는 다른 부분을 수행할 수 있다. 일부 예에서, 제1 장치(디바이스)는 방법(200)의 블록을 수행하는 것으로 설명된다. 일부 구현은 결과 또는 데이터를 제1 장치로 전송할 수 있는 하나 이상의 다른 장치(예를 들어, 다른 클라이언트 장치 또는 서버 장치)에 의해 수행되는 방법(200)의 하나 이상의 블록을 가질 수 있다.
일부 구현에서, 방법(200) 또는 방법의 일부는 시스템에 의해 자동으로 시작될 수 있다. 일부 구현에서, 구현 시스템은 제1 장치이다. 예를 들면, 방법(또는 그 일부)은 주기적으로 수행되거나 하나 이상의 특정 이벤트 또는 조건(예를 들어, 애플리케이션(예: 카메라 애플리케이션(152), 이미지 관리 애플리케이션(156) 등)을 사용하여 사용자에 의해 시작되는 비디오 캡처, 시스템에 새로 업로드되었거나 시스템에 의해 액세스 가능한 하나 이상의 비디오 수신, 방법(200)의 마지막 수행 이후 만료된 미리 결정된 기간, 및/또는 방법에서 읽은 설정에서 지정할 수 있는 하나 이상의 다른 조건)에 기반하여 수행될 수 있다. 일부 구현에서, 이러한 조건은 사용자의 저장된 맞춤형(커스텀) 선호도에서 사용자에 의해 지정될 수 있다.
다양한 구현에서, 클라이언트 장치(120)는 독립형 카메라, 카메라를 포함하는 또 다른 장치(예를 들어, 스마트 워치, 헤드셋 등과 같은 웨어러블 장치, 스마트폰, 태블릿, 컴퓨터, 또는 다른 장치에서 캡처한 비디오 또는 이미지를 수신할 수 있는 다른 클라이언트 장치일 수 있다. 일부 구현에서, 클라이언트 장치(120)는 캡처 전용 장치, 예를 들어 스크린을 포함하지 않는 카메라일 수 있다. 일부 구현에서, 클라이언트 장치(120)는 보기 전용(view-only) 장치, 예를 들어 이미지 또는 비디오가 디스플레이될 수 있는 화면을 포함하지만 이미지 또는 비디오를 캡처하는 카메라 또는 다른 기능을 갖지 않는 장치일 수 있다. 일부 구현에서, 클라이언트 장치(120)는 캡처 및 보기 기능 모두를 가질 수 있다.
일부 구현에서, 클라이언트 장치(120)는 이미지 또는 비디오를 캡처하기 위한 단일 카메라를 포함할 수 있다. 일부 구현에서, 클라이언트 장치(120)는 복수의 카메라(또는 렌즈)를 포함할 수 있다. 예를 들어, 스마트 폰 또는 다른 장치는 하나 이상의 전면 카메라(장치의 화면과 동일한 측면에 있음) 및/또는 하나 이상의 후면 카메라를 포함할 수 있다. 일부 구현에서, 하나 이상의 전면 또는 후면 카메라는 캡처 중에 함께 작동할 수 있다. 예를 들어, 제1 카메라는 깊이 정보를 캡처할 수 있고 제2 카메라는 이미지 또는 비디오의 이미지 픽셀을 캡처할 수 있다. 일부 구현에서, 상이한 유형의 이미지 또는 비디오 캡처를 위해 상이한 카메라가, 예를 들어 상이한 줌 레벨(예를 들어, 망원 렌즈, 광각 렌즈 등)를 사용하여 사용될 수 있다. 일부 구현에서, 클라이언트 장치(120)는 360도 이미지 또는 비디오를 캡처하도록 구성될 수 있다. 일부 구현에서, 카메라 또는 렌즈는 단일 이미지 센서(예를 들어, CCD 또는 CMOS 센서) 또는 복수의 센서를 사용하여 이미지를 캡처할 수 있다. 일부 구현에서, 다른 센서, 예를 들어 깊이 센서 등은 이미지 캡처시에 하나 이상의 카메라와 함께 사용될 수 있다.
일부 구현에서, 클라이언트 장치(120)는 하나 이상의 카메라(또는 렌즈)로부터 이미지 센서에서 캡처된 원시 이미지 데이터와 다른 센서(예: 가속도계, 자이로 스코프, 위치 센서, 깊이 센서 등)로부터 획득된 다른 데이터를 결합하여 단일 이미지 또는 비디오를 형성할 수 있다. 예를 들어, 클라이언트 장치(120)가 복수의 이미지 프레임을 캡처하는 모드(예를 들어, 버스트 모드 또는 모션 이미지로 빠르게 연속해서 여러 프레임을 캡처하는 모션 모드, 비디오를 캡처하는 비디오 모드, 노출이 다른 여러 이미지를 하나의 합성 이미지로 결합하는 HDR(high dynamic range) 모드 등)에서 작동될 때, 센서로부터 얻은 데이터는 캡처된 이미지 또는 비디오를 안정화하는 데 활용될 수 있다. 예를 들어, 가속도계 또는 자이로 스코프 데이터는 복수의 캡처된 프레임을 정렬함으로써, 예를 들어 캡처하는 동안 사용자의 손이 떨리는 캡처로 인한 카메라 움직임을 보상하기 위해 사용될 수 있다. 일부 구현에서, 캡처된 이미지 또는 비디오는 예를 들어 배경 움직임(모션)이 감소된 안정화된 버전을 생성하기 위해 잘릴(cropped) 수 있다.
클라이언트 장치(120)는 사용자가 단일 프레임을 캡처하기 위한 정적 이미지(또는 사진) 모드, 복수의 프레임을 캡처하기 위한 버스트 또는 모션 이미지 모드, 여러 프레임 등을 포함하는 비디오를 캡처하기 위한 비디오 모드와 같은 다른 모드에서 이미지를 캡처할 수 있도록 할 수 있다. 일부 구현에서, 방법(200)은 카메라가 복수의 프레임을 구성할 때, 캡처가 완료된 후 또는 나중에, 예를 들어 클라이언트 장치(120)가 사용자에 의해 능동적으로 사용되지 않고, 예를 들어 배터리를 통해 또는 외부 전원에 연결됨으로써 충분한 전력을 가질 때 캡처시에 수행될 수 있다.
클라이언트 장치(120)는 사용자가 예를 들어, 클라이언트 장치(120)에 의해 캡처되거나 사용자와 연관된 이미지 또는 비디오를 상이한 사용자 인터페이스에서 볼 수 있게 할 수 있다. 예를 들어, 사용자가 한 번에 하나의 이미지 또는 비디오를 볼 수 있도록 원-업 모드(one-up mode) 또는 슬라이드 쇼 모드가 제공될 수 있다. 다른 예에서, 사용자가 예를 들어 이미지 그리드로서 동시에 복수의 이미지를 볼 수 있게 하는 갤러리 모드가 제공될 수 있다.
일부 구현에서, 클라이언트 장치(120)는 방법(200)을 수행할 수 있다. 다른 예에서, 클라이언트 장치 또는 서버 장치는 방법(200)을 수행할 수 있다. 일부 구현에서, 방법(200)은 서버 장치에 의해 구현될 수 있다. 일부 구현에서, 방법(200)은 예를 들어, 클라이언트 장치의 사용자가 비디오를 캡처하기 위해 카메라를 작동하고, 클라이언트 장치에 비디오를 다운로드하고, 서버에 비디오를 업로드하는 등의 경우에 자동으로 시작될 수 있다.
본 명세서에서 언급되는 이미지는 하나 이상의 픽셀 값(예를 들어, 색상 값, 밝기 값 등)을 갖는 픽셀을 갖는 디지털 이미지를 포함할 수 있다. 이미지는 정적 이미지(예: 스틸 사진, 단일 프레임이 있는 이미지 등) 또는 모션 이미지(예를 들어, 애니메이션, 애니메이션 GIF, 이미지의 일부가 모션을 포함하고 다른 부분은 정적인 시네마 그래프와 같은 복수의 프레임을 포함하는 이미지 등)일 수 있다. 일부 구현에서, 하나 이상의 카메라 설정, 예를 들어 줌 레벨, 조리개 등은 비디오 캡처 중에 수정될 수 있다. 일부 구현에서, 비디오를 캡처하는 클라이언트 장치는 비디오를 캡처하는 동안 이동될 수 있다. 본 명세서에서 언급되는 텍스트는 영숫자 문자, 이모지(emojis), 기호 또는 기타 문자를 포함할 수 있다.
블록(202)에서, 방법(200)의 구현에서 사용자 데이터를 사용하기 위해 사용자 동의(예를 들어, 사용자 허가)가 획득되었는지가 체크된다. 예를 들어, 사용자 데이터는 클라이언트 장치를 사용하여 사용자가 캡처한 이미지 또는 비디오, (예: 클라이언트 장치를 사용하여) 사용자가 저장하거나 액세스한 이미지 또는 비디오, 이미지/비디오 메타데이터, 메시징 애플리케이션 사용과 관련된 사용자 데이터, 사용자 선호도, 사용자 생체 인식 정보, 사용자 특성(예 : 신원, 이름, 나이, 성별, 직업 등), 사용자의 소셜 네트워크 및 연락처에 대한 정보, 소셜 및 기타 유형의 활동 및 활동, 사용자가 생성하거나 제출한 콘텐츠, 평가 및 의견, 사용자의 현재 위치, 과거 사용자 데이터, 사용자가 생성, 수신 및/또는 액세스한 이미지, 사용자가 보거나 공유한 이미지 등을 포함할 수 있다. 여기에 설명된 방법의 하나 이상의 블록은 일부 구현에서 이러한 사용자 데이터를 사용할 수 있다.
사용자 데이터가 방법(200)에서 사용될 수 있는 관련 사용자로부터 사용자 동의가 획득된 경우, 블록 204에서, 본 명세서의 방법의 블록은 이들 블록에 대해 설명된 사용자 데이터의 가능한 사용으로 구현될 수 있다고 결정되고, 방법은 블록 212로 계속된다. 사용자 동의가 획득되지 않은 경우, 블록 206에서 블록이 사용자 데이터를 사용하지 않고 구현되어야한다고 결정되고, 방법은 블록 212로 계속 진행된다. 일부 구현에서, 사용자 동의를 얻지 못한 경우, 블록은 사용자 데이터를 사용하지 않고 합성(synthetic) 데이터 및/또는 일반 또는 공개적으로 액세스 가능하고 공개적으로 사용 가능한 데이터로 구현된다. 일부 구현에서, 사용자 동의가 획득되지 않은 경우, 방법(200)이 수행되지 않는다. 예를 들어, 사용자가 하나 이상의 비디오에 대한 액세스 권한을 거부하면, 방법(200)이 수행되지 않거나 블록(206)을 수행한 후에 중지된다.
블록 210에서, 비디오가 획득된다. 예를 들어, 비디오는 임의의 클라이언트 장치(120-126)를 사용하여 사용자에 의해 캡처된 비디오일 수 있다. 다른 예에서, 비디오는 예를 들어 비디오 공유 웹 사이트, 소셜 네트워크, 온라인 비디오 라이브러리 또는 기타 온라인 리소스로부터 사용자에 의해 다운로드될 수 있고 클라이언트 장치 또는 서버 장치에 저장될 수 있다. 또 다른 예에서, 비디오는 메시징 애플리케이션, 예를 들어 인스턴트 메시징 애플리케이션, 채팅 애플리케이션, RCS(Rich Communication Services) 애플리케이션 등을 통해 사용자에 의해 다운로드될 수 있다.
일부 구현에서, 비디오는 복수의 프레임 및 대응하는 오디오를 포함할 수 있다. 비디오의 각 프레임은 복수의 픽셀을 포함하는 정지 이미지일 수 있다. 일부 구현에서, 비디오는 오디오를 제외할 수 있다. 비디오는 프레임 레이트, 예를 들어 비디오가 캡처된 프레임 레이트를 가질 수 있다. 예를 들어, 프레임 속도는 초당 24 프레임(fps), 25fps, 30fps, 50fps, 60fps, 72fps, 100fps 등일 수 있다. 비디오의 프레임 속도는 비디오의 초당 이용 가능한 이미지 프레임의 수를 나타낼 수 있다. 일부 구현에서, 비디오의 복수의 프레임 중 하나 이상의 프레임은 각각의 타임스탬프와 연관될 수 있다.
일부 구현에서, 비디오는 스트리밍 비디오 또는 특정 포맷의 비디오 파일일 수 있다. 일부 구현에서, 복수의 비디오 프레임은 비디오의 오디오와 별도로 저장될 수 있다. 이러한 구현에서, 동기화 정보가 비디오에 제공될 수 있다. 동기화 정보는 비디오 재생 중에 오디오를 복수의 비디오 프레임과 동기화하는 데 사용할 수 있다. 일부 구현에서, 오디오는 압축된 형식으로 저장될 수 있다. 블록 210 다음에 블록 212가 이어질 수 있다.
블록(212)에서, 비디오의 복수의 프레임의 서브세트를 선택하기 위해 샘플링이 수행된다. 일부 구현에서, 샘플링은 예를 들어, 5fps, 6fps, 10fps, 20fps 등과 같은 목표 프레임 레이트에 기초하여 수행될 수 있다. 일부 구현에서, 샘플링은 비디오에 대해 반복적으로 수행될 수 있으며, 예를 들어 특정 수의 프레임, 예를 들어 25fps 비디오에 대한 25 개 프레임에 대응할 수 있는 비디오의 각 초에 대해, 해당 프레임 서브세트가 서브세트에서 선택될 수 있다. 일부 구현에서, 샘플링은 랜덤 샘플링을 포함할 수 있으며, 예를 들어, 목표 프레임 레이트에서 복수의 프레임의 서브세트를 획득하기 위해 비디오의 초당 5 개 프레임이 랜덤하게 선택될 수 있다. 일부 구현에서, 샘플링은 프레임의 서브세트를 얻기 위해 매 n 번째 프레임을 선택하는 것을 포함할 수 있으며, 예를 들어, 5fps의 목표 프레임 레이트를 얻기 위해 25fps 비디오의 매 5 번째 프레임이 선택될 수 있다. 다른 구현에서, 다른 샘플링 전략이 사용될 수 있다.
일부 구현에서, 목표 프레임 속도는 비디오의 프레임 속도보다 낮다. 비디오를 샘플링하는 것은 방법(200)의 후속 단계에서 프레임의 서브세트만이 분석될 필요가 있기 때문에 전체 비디오를 처리하는 것보다 방법에 대한 처리 비용을 낮출 수 있다. 일부 구현에서, 예를 들어 비디오가 낮은 프레임 레이트(예를 들어, 5fps, 6fps)를 가질 때, 목표 프레임 레이트는 비디오의 프레임 레이트와 동일할 수 있다. 블록 212 다음에 블록 214가 올 수 있다.
블록(214)에서, 블록(212)에서 선택된 복수의 프레임의 서브세트의 각 프레임에 대해 각각의 오디오 스펙트로그램(spectrogram)이 추출될 수 있다. 오디오 스펙트로그램은 비디오의 오디오에서 추출될 수 있다. 일부 구현에서, 오디오 스펙트로그램은 대응하는 프레임, 예를 들어, 서브세트의 프레임의 시간적 스팬(temporal span) 이상의 오디오에 기초한다. 예를 들어, 특정 프레임에 대한 오디오 스펙트로그램은 특정 프레임 이전의 0.5 초에 해당하는 비디오 프레임에 해당하는 오디오를 포함할 수 있다. 다른 예에서, 특정 프레임에 대한 오디오 스펙트로그램은 특정 프레임 이후 비디오의 후속 0.5 초에 대응하는 비디오 프레임에 대응하는 오디오를 포함할 수 있다. 일부 구현에서, 특정 프레임에 대한 오디오 스펙트로그램은 특정 기간, 예를 들어 0.5 초, 1 초 등의 이전 및 후속 비디오 프레임 모두로부터의 오디오에 기초할 수 있다. 다른 구현에서, 오디오 스펙트로그램에 사용되는 오디오의 특정 지속 시간은 이전 프레임에 해당하는 오디오와 후속 프레임에 해당하는 오디오에 대해 동일(예: 0.5 초 전후)하거나 다를 수 있다(예: 1 초 전, 0.5 초 후). 일부 구현에서, 오디오 스펙트로그램은 오디오의 주파수 도메인 표현일 수 있다. 일부 구현에서, 오디오 스펙트로그램은 멜 스펙트로그램일 수 있다. 블록 214 다음에 블록 216이 올 수 있다.
블록 216에서, 복수의 프레임의 서브세트의 해상도가 감소될 수 있다. 예를 들어, 비디오가 고화질(예: 720p, 1080p, 2K, 4K, 8K 등) 비디오인 경우, 각 프레임의 해상도를 줄이기 위해 서브세트의 각 프레임에서 다운 샘플링이 수행될 수 있다. 일부 구현에서, 다운 샘플링은 프레임의 픽셀의 서브세트를 선택하는 것을 포함할 수 있다. 일부 구현에서, 감소된 해상도 비디오의 해상도는 128x128 픽셀일 수 있다. 일부 구현에서, 수직 방향(프레임의 높이)의 픽셀 수는 수평 방향(프레임의 폭)의 수와 다를 수 있다. 감소된 해상도를 갖는 프레임 내의 픽셀의 수는, 예를 들어 방법(200)을 구현하는 장치의 이용 가능한 컴퓨팅 능력에 기초하여 성능을 최적화하도록 선택될 수 있다. 일부 구현에서, 다운 샘플링은 하나 이상의 프레임의 보간을 포함할 수 있다. 일부 구현에서, 해상도를 줄이기 위해 쌍 선형 보간이 사용된다. 일부 구현에서, 다운 샘플링은 콘텐츠 인식 다운 샘플링을 포함할 수 있다. 예를 들어, 이미지 프레임의 흐릿한 영역은 날카로운 영역이나 가장자리를 포함하는 영역보다 더 공격적으로 다운 샘플링될 수 있다. 일부 구현에서, 비디오 프레임이 잘릴 수 있다. 예를 들어, 비디오 프레임의 해상도는 140x140 픽셀로 감소될 수 있고, 프레임을 128x128 픽셀로 크기 조정하기 위해 자르기(cropping)가 이어질 수 있다. 일부 구현에서, 목표 해상도의 무작위 패치, 예를 들어 무작위 128x128 픽셀을 선택하기 위해 자르기가 수행된다. 임의 자르기는 원래 비디오 프레임의 다른 부분이 프레임 서브세트에 포함되도록 할 수 있다. 이는 국소 폐색(local occlusions), 비디오에서의 빠른 피사체 움직임 등에 대한 견고성을 향상시킬 수 있다. 프레임의 해상도를 감소시키는 것은 방법(200)의 후속 단계의 계산 비용을 감소시킬 수 있다. 일부 구현에서, 복수의 프레임의 서브세트의 해상도를 감소시킨 후에 하나 이상의 다른 동작이 수행될 수 있다. 예를 들어, 이미지 프레임의 색 공간 변경과 같은 이미지 변환이 수행될 수 있다. 예를 들어, 이미지의 색 공간이 RGB에서 sRGB로 변경될 수 있다. 블록 216 다음에 블록 218이 올 수 있다.
블록(218)에서, 복수의 프레임의 서브세트는 세그먼트(스택이라고도 함)로 분할될 수 있다. 예를 들어, 각 세그먼트 또는 스택은 특정 수의 프레임, 예를 들어 3 프레임, 5 프레임, 10 프레임 등을 포함할 수 있다. 세그먼트 또는 스택은 순차적일 수 있다. 예를 들면, 타임스탬프 t-1에 대응하는 프레임을 포함하는 제1 세그먼트는 타임스탬프 t에 대응하는 프레임을 포함하는 제2 세그먼트가 시퀀스에서 뒤따를 수 있고, 이는 타임스탬프 t + 1에 대응하는 프레임을 포함하는 제3(세번째) 세그먼트가 시퀀스에서 뒤따를 수 있다. 일부 구현에서, 세그먼트는 중첩 세그먼트일 수 있으며, 예를 들어 특정 세그먼트의 하나 이상의 프레임은 하나 이상의 다른 세그먼트와 공통될 수 있다. 세그먼트의 총 프레임 수보다 적은 수의 프레임이 겹칠 수 있다. 예를 들어, 세그먼트는 3 개의 프레임을 포함할 수 있으며, 한 프레임은 이전 세그먼트와 겹치고 하나의 프레임은 다음 세그먼트와 겹친다. 슬라이딩 윈도우 기술은 프레임의 서브세트를 세그먼트로 분할하기 위해 이용될 수 있으며, 예를 들어, 윈도우가 제1 위치에서 제1 세그먼트를 지정하는 경우, 윈도우는 한 방향(앞 또는 뒤로)으로 여러 프레임을 제2 위치로 이동시키며, 여기서 윈도우는 제2 위치에서 제2 세그먼트를 지정(designate)한다. 일부 구현에서, 세그먼트는 겹치지(중첩되지) 않는 세그먼트일 수 있다. 블록 218 다음에 블록 220이 이어질 수 있다.
블록 220에서, 기계 학습 기반 게이팅 모델(게이팅 모델이라고도 함)이 세그먼트에 적용될 수 있다. 기계 학습 기반 게이팅 모델은 하나 이상의 신경망, 예를 들어 컨벌루션 신경망, 순환 신경망 등 및/또는 다른 유형의 모델, 예를 들어 휴리스틱 기반 모델, 마르코프 체인 기술 기반 모델을 포함할 수 있다. 게이팅 모델은 하나 이상의 비디오 주석(video annotations)을 추가하기 위해 비디오를 추가로 분석할지 여부에 대한 표시(indication)를 생성하도록 훈련될 수 있다. 예를 들어, 일부 구현에서, 게이팅 모델은 세그먼트의 프레임을 입력으로 수신하고 표시를 출력으로 생성할 수 있다. 다른 예에서, 일부 구현에서, 게이팅 모델은 세그먼트의 프레임 및 대응하는 오디오 스펙트로그램을 입력으로 수신하고 표시를 출력으로 생성할 수 있다.
일부 구현에서, 게이팅 모델은 복수의 기계 학습 모델을 포함할 수 있다. 예를 들어, 게이팅 모델은 입력 비디오로부터 획득된 복수의 비디오 프레임의 서브세트에 기초하여, 게이팅 모델에 제공된 입력 비디오에 특정 특징이 존재하는지 여부를 결정하도록 훈련된 제1 컨벌루션 신경망을 포함하는 제1 모델(모델 A라고도 함)을 포함할 수 있다. 예를 들어, 일부 구현에서, 특정 특징은 사람의 얼굴, 객체의 유형 또는 움직임의 유형을 포함할 수 있다. 또 다른 예에서, 제1 모델은 입력 비디오로부터 획득된 복수의 비디오 프레임의 서브세트에 대응하는 오디오 스펙트로그램에 기초하여 게이팅 모델에 제공된 입력 비디오에 특정 특징이 존재하는지 여부를 결정하도록 훈련된 제2 컨벌루션 신경망을 더 포함할 수 있다. 예를 들어, 일부 구현에서, 특정 특징에는 오디오 유형이 포함될 수 있다. 예를 들어, 오디오 유형에는 사람의 말, 음악 등이 포함될 수 있다.
예를 들어, 인간의 얼굴은 알려진 얼굴, 예를 들어 입력 비디오로 캡처하거나 획득한 사용자의 이미지 라이브러리의 이미지 및/또는 비디오에서 이전에 묘사 된 사람의 얼굴일 수 있다. 사람의 얼굴은 배우, 텔레비전 진행자, 정치인, 유명 인사, 스포츠맨 등과 같은 유명한 사람에 해당할 수도 있다. 다른 예에서, 객체의 유형은 케이크(예: 생일 케이크), 수영장, 나무, 꽃, 라켓 또는 기타 스포츠 장비 등과 같은 임의의 객체일 수 있다. 또 다른 예에서, 유형은 점프, 달리기, 수영, 춤 등의 움직임이 있다. 일부 구현에서, 인간의 음성은 예를 들어 사용자의 이미지 라이브러리의 이전 비디오에 기초하여 음성 서명이 알려진 사람의 음성을 포함할 수 있다(사용자 동의가 획득된 경우). 일부 구현에서, 인간 음성(스피치)은 배우, 텔레비전 호스트, 정치인, 유명인, 스포츠맨 등과 같은 유명한 인물의 음성을 포함할 수 있다.
일부 구현에서, 예를 들어, 제1 모델이 제1 컨벌루션 신경망 및 제2 컨벌루션 신경망을 포함하는 경우, 제1 모델은 제1 모델에 제공된 입력 비디오에 특정 특징이 존재하는지 여부를 결정하기 위해 제1 및 제2 컨벌루션 신경망의 출력을 결합하는 퓨전 네트워크를 더 포함할 수 있다. 일부 구현에서, 제1 컨벌루션 신경망은 복수의 계층을 포함할 수 있고 비디오, 예를 들어 비디오 프레임을 분석하도록 훈련될 수 있다. 일부 구현에서, 제2 컨벌루션 신경망은 복수의 계층을 포함할 수 있고 오디오, 예를 들어 비디오 프레임에 대응하는 오디오 스펙트로그램을 분석하도록 훈련될 수 있다. 일부 구현에서, 퓨전 네트워크는 제1 및 제2 컨벌루션 신경망의 출력을 입력으로 수신하고 특정 특징이 입력 비디오에 존재할 가능성을 출력으로 제공하도록 훈련된 복수의 계층을 포함할 수 있다.
다른 구현에서, 제1 모델은 제1 컨벌루션 신경망만, 제2 컨벌루션 신경망만, 제1 및 제2 컨벌루션 신경망 모두, 또는 제1 및 제2 컨벌루션 신경망과 퓨전 네트워크를 모두 포함할 수 있다. 일부 구현에서, 제1 모델은 다른 유형의 신경망 또는 다른 유형의 기계 학습 모델을 사용하여 구현될 수 있다.
일부 구현들에서, 게이팅 모델은 특정 특징이 입력으로서 존재(예를 들어, 제1 모델에 의해 출력됨)될 가능성을 수신하고 비디오를 분석할지 여부의 표시를 생성하는 제2 모델을 포함할 수 있다. 일부 구현에서, 제2 모델은 휴리스틱(heuristics), 순환 신경망, 또는 마르코프 체인 분석 기술 중 하나 이상을 사용하여 구현될 수 있다.
일부 구현에서, 하나 이상의 추가 입력이 게이팅 모델에 제공될 수 있다. 예를 들면, 이러한 추가 입력은 하나 이상의 특정 이미지 특징을 나타내는 임베딩을 포함할 수 있으며, 특정 이미지 특징은 예를 들어 배우, 텔레비전 호스트, 정치인, 유명인, 스포츠맨 등과 같은 유명한 인물의 얼굴, 밈(memes), 상업 비디오, 애니메이션 또는 합성 비디오 등을 포함할 수 있다. 다른 예에서, 이러한 추가 입력에는 하나 이상의 특정 오디오 특징을 나타내는 사운드 임베딩, 예를 들어 배우, 텔레비전 호스트, 정치인, 유명인, 스포츠맨 등과 같은 유명 인물의 음성, 상업 음악, 사람이 아닌 오디오, 사람의 음성 등에 해당하는 음성 서명이 포함될 수 있다. 이러한 추가 입력은 비디오에 묘사된 경우에도 주석에 포함되지 않아야 하는 특징을 나타낸다. 예를 들어, 비디오가 사용자의 개인 이미지 라이브러리에 있는 경우 (예: 다른 사용자와 비디오 공유, 사람별로 비디오 검색 등을 위해) 사용자는 개인적으로 알 수 없는 사람을 묘사하는 비디오에만 관심이 없을 수 있으며, 사람이 사용자에게 개인적으로 알려지지 않은 경우 사람의 얼굴이 있음을 나타내는 주석은 유용하지 않을 수 있다. 따라서 가족과 같이 아는 사람이 수행하는 스포츠 활동을 묘사하는 비디오은 라벨링이 중요할 수 있지만 유명 스포츠맨의 비디오 라벨링은 유용하지 않을 수 있다. 주석에 포함되지 않는 이미지 특징을 나타내는 추가 입력을 제공하면 게이팅 모델이 이러한 특징의 존재를 감지하고 비디오가 더 이상 분석되지 않는다는 표시를 생성할 수 있다. 추가 입력을 통해 게이팅 모델은 밈, 상업 비디오, 애니메이션 또는 합성 비디오 또는 유명한 인물을 묘사하는 비디오를 감지하고 비디오를 더 이상 분석하지 않아야 한다는 표시를 생성할 수 있다.
일부 구현에서, 세그먼트의 이미지 프레임으로부터 파생된 데이터는 게이팅 모델에 대한 추가 입력으로 제공될 수 있다. 예를 들어, 이러한 데이터에는 이미지 프레임의 에너지, 이미지 프레임의 색상 분포 등이 포함될 수 있다. 일부 구현에서, 세그먼트에 대응하는 오디오로부터 유도된 데이터는 게이팅 모델에 대한 추가 입력으로 제공될 수 있다. 예를 들어, 이러한 데이터는 오디오에서 사람의 음성이 검출되는지 여부를 포함할 수 있다.
일부 구현에서, 비디오와 연관된 메타데이터는 사용자가 허용하는 경우 게이팅 모델에 대한 추가 입력으로 제공될 수 있다. 메타데이터는, 위치 및/또는 비디오 캡처 시간과 같은 사용자 허용 요소(user-permitted factors); 비디오가 소셜 네트워크, 이미지 공유 애플리케이션, 메시징 애플리케이션 등을 통해 공유되었는지 여부; 하나 이상의 비디오 프레임과 관련된 깊이 정보; 비디오를 캡처한 카메라의 하나 이상의 센서, 예를 들어 가속도계, 자이로 스코프, 광 센서 또는 기타 센서의 센서 값; 사용자의 신원(사용자 동의를 얻은 경우) 등을 포함할 수 있다. 예를 들어, 비디오가 카메라가 위쪽을 향한 상태로 실외 위치에서 야간에 캡처된 경우, 이러한 메타데이터는 비디오 캡처 시점에 카메라가 하늘을 향했음을 나타낼 수 있으므로 해당 비디오에 사람의 얼굴과 같은 특징이 포함되지 않을 가능성이 있다. 다른 예에서, 특정 특징이 사람의 얼굴이고 게이팅 모델이 동영상에서 40m 깊이의 100x100 픽셀 크기의 얼굴을 감지하는 경우, 이러한 메타데이터는 얼굴이 실제 사람의 얼굴이 아니라 얼굴을 표시하는 광고판 또는 화면이라는 표시일 수 있다.
일부 구현에서, 추가 입력이 제2 모델에 제공될 수 있다. 이러한 구현에서, 추가 입력은 특정 특징이 존재하는 것으로 검출되는 복수의 프레임 서브세트의 특정 프레임의 일부에 대한 식별, 특정 특징이 복수의 프레임의 서브세트에 나타나는 기간, 또는 조기 종료(early termination)에 관한 휴리스틱 중 하나 이상을 포함 할 수 있다. 예를 들어, 제2 모델은 특정 특징이 비디오의 상이한 프레임, 예를 들어 세그먼트 또는 스택의 프레임 시퀀스에서 동일한 위치에서 또는 그 근처에서 검출되는지 여부를 결정하기 위해 서브세트의 특정 프레임의 일부를 이용할 수 있다. 예를 들어, 특정 프레임의 부분이 다르기 때문에 특정 특징이 순차적인 프레임에서 다른 위치에 나타나는 경우, 그러한 추가 입력은 특정 특징의 스퓨리어스(spurious) 검출을 나타낼 수 있다.
다른 예에서, 제2 모델은 특정 특징이 일시적이고 따라서 검출이 스퓨리어스일 수 있는지 여부를 결정하기 위해 특정 특징이 복수의 프레임의 서브세트에 나타나는 시간의 기간을 이용할 수 있다. 예를 들어, 지속 시간(기간)이 짧은 경우(예: 단일 프레임, 2 개 프레임 또는 적은 수의 프레임), 특정 특징은 일시적인 것으로 간주될 수 있으므로 검출은 스퓨리어스로 간주될 수 있다.
다른 예에서, 제2 모델은 게이팅 모델에 의한 비디오 분석의 조기 종료(중지)에 관한 휴리스틱를 활용할 수 있다. 이러한 조기 종료는 비디오를 추가로 분석할지 여부에 대한 표시를 즉시 출력한다. 예를 들어, 이러한 휴리스틱는 많은 수의 이전 비디오를 기반으로 얻을 수 있다. 예를 들어, 휴리스틱는 제1 모델의 출력이 특정 기능이 존재할 가능성이 높다는 것을 나타낼 때(예: 임계값보다 높음 (예: 80%, 90%)) 비디오의 추가 세그먼트가 게이팅 모델에 의한 분석에서 제외될 수 있음을 나타낼 수 있으며, 표시는 비디오가 하나 이상의 비디오 주석을 추가하기 위해 추가로 분석되어야 한다는 긍정적인 표시로 출력될 수 있다. 다른 예에서, 휴리스틱는 다중 연속 세그먼트에 대한 제1 모델의 출력이 특정 특징이 존재할 가능성이 높은 것을 나타낼 때(예를 들어, 임계값을 충족하는 2 개 이상의 연속 세그먼트에 대응하는 가능성 값, 예를 들어, 50 %, 60 % 등) 비디오의 추가 세그먼트가 제외 될 수 있음을 나타낼 수 있으며, 표시는 비디오가 하나 이상의 비디오 주석을 추가하기 위해 추가로 분석되어야 한다는 긍정적인 표시로 출력될 수 있다.
블록 222에서, 게이팅 모델에 의해 출력된 표시는 하나 이상의 비디오 주석을 추가하기 위해 비디오를 분석할지 여부를 결정하기 위해 평가된다. 비디오가 분석되어야한다는 표시인 경우, 블록 222 다음에 블록 224가 이어진다. 이 경우 게이팅 모델은 시퀀스에 남아있는 하나 이상의 세그먼트(있는 경우)에 적용되지 않는다. 다시 말하면, 복수의 프레임의 서브세트에 대한 게이팅 모델의 적용은 종료되어 시퀀스의 하나 이상의 세그먼트가 게이팅 모델로 분석되는 것에서 제외된다. 이러한 방식의 조기 종료는 방법(200)의 계산 비용을 줄일 수 있다. 비디오가 분석될 것이라는 표시가 아닌 경우, 방법은 블록 230으로 진행한다.
블록 224에서, 복수의 프레임 및 대응하는 오디오(사용 가능한 경우)를 포함하는 비디오는 하나 이상의 비디오 주석을 비디오에 추가하기 위해 프로그래밍 방식으로 분석된다. 예를 들어, 비디오 주석은 하나 이상의 라벨을 포함할 수 있다. 예를 들어, 일부 구현에서, 라벨은 비디오에서 얼굴의 존재, 비디오에서 특정 유형의 객체의 존재, 비디오에서 특정 유형의 움직임 또는 활동의 존재 또는 특정 유형의 오디오의 존재를 나타낼 수 있다. 비디오를 프로그래밍 방식으로 분석하는 것은 하나 이상의 고비용 비디오 분석 기술을 이용하는 것을 포함할 수 있다. 예를 들어, 이러한 기술은 높은 정확도로 얼굴, 객체 유형, 움직임 유형, 오디오 유형 등을 감지(검출)하도록 훈련된 하나 이상의 기계 학습 모델을 적용하는 것을 포함할 수 있다. 이러한 기술은 게이팅 모델보다 계산 비용이 높다. 비디오 분석 기술에는 휴리스틱 기반 기술, 객체 인식 기술 등이 포함될 수도 있다. 일부 구현에서, 하나 이상의 라벨은 비디오의 일부로서, 예를 들어 비디오 메타데이터로서 저장될 수 있다. 일부 구현에서, 하나 이상의 라벨은 비디오와 관련하여, 예를 들어, 비디오에 대한 라벨을 저장하는 데이터베이스에 저장될 수 있다.
하나 이상의 주석을 추가하기 위해 비디오를 분석하는 계산 비용은 게이팅 모델을 적용하는 것보다 높을 수 있다. 일부 구현에서, 방법(200)의 총 계산 비용(샘플링, 오디오 스펙트로그램의 추출, 해상도 감소, 게이팅 모델 적용 및 표시 획득 포함)은 고비용 비디오 분석 기술을 사용하여 비디오를 분석하는 계산 비용보다 낮을 수 있다. 일부 구현에서, 방법(200)의 계산 비용은 비디오를 추가로 분석하는 계산 비용보다 훨씬 낮을 수 있으며, 예를 들어 5 배, 10 배, 20 배, 100 배 더 낮을 수 있다. 블록 224 다음에 블록 210이 이어질 수 있으며, 여기서 다음 비디오가 획득될 수 있다.
블록 230에서, 시퀀스에서 하나 이상의 추가 세그먼트가 이용 가능한지 여부가 결정될 수 있다. 더 많은 세그먼트가 이용 가능하다면, 블록 230 뒤에 블록 220이 올 수 있으며, 여기서 게이팅 모델은 다음 세그먼트에 적용된다. 모든 세그먼트가 처리된 경우, 블록 230 다음에 블록 210이 이어질 수 있다. 블록 220, 222 및 230의 시퀀스는 예를 들어, 블록 222로부터의 표시가 비디오가 주석을 추가하기 위해 추가로 분석되어야 한다는 표시가 될 때까지 또는 게이팅 모델이 모든 세그먼트에 적용될 때까지 한 번 이상 반복될 수 있다.
방법(200)이 도 2의 다양한 블록을 참조하여 설명되었지만, 본 개시에서 설명된 기술은 도 2의 일부 블록을 수행하지 않고 수행될 수 있다는 것을 이해할 수 있다. 다양한 구현에서, 방법(200)의 블록들 중 일부는 병렬로 또는 도 2에 예시된 것과 다른 순서로 수행될 수 있다. 다양한 구현에서, 방법(200)의 블록 중 일부는 여러 번 수행될 수 있다.
예를 들어, 일부 구현에서, 비디오가 낮은 프레임 레이트 및/또는 임계 프레임 수보다 낮을 때, 블록(212)이 수행되지 않고 프레임의 서브세트는 비디오의 모든 프레임을 포함한다. 다른 예에서, 오디오 스펙트로그램이 이전에 추출된 일부 구현에서, 블록 214가 수행되지 않고 이전에 추출된 오디오 스펙트로그램이 이용될 수 있다. 또 다른 예에서, 비디오의 저해상도 버전이 이용 가능한(예를 들어, 미리 계산되고 저장되는) 일부 구현에서, 블록 216이 수행되지 않고 대신에, 비디오의 이용 가능한 저해상도 버전이 이용될 수 있다. 또 다른 예에서, 일부 구현에서, 블록(218)이 수행되지 않고 게이팅 모델이 예를 들어 비디오가 짧은 지속 시간인 경우 전체 비디오에 적용될 수 있다. 또 다른 예에서, 블록(214)은 블록(216) 및/또는 블록(218)과 병렬로 수행될 수 있다.
일부 구현에서, 게이팅 모델은 복수의 게이팅 모델을 포함할 수 있다. 이러한 구현에서, 각 게이팅 모델은 대응하는 목표 프레임 레이트를 가질 수 있다. 예를 들어, 제1 게이팅 모델은 5fps의 제1 목표 프레임 레이트를 가질 수 있고, 제2 게이팅 모델은 20fps의 제2 목표 프레임 레이트를 가질 수 있다. 이들 구현에서, 블록(212)은 목표 프레임 레이트에 기초하여 복수의 프레임의 복수의 상이한 서브세트를 획득하기 위해 여러 번 수행될 수 있다. 이들 구현 중 하나 이상에서, 블록 214 내지 218은 특정 목표 프레임 레이트에 대응하는 복수의 프레임의 각각의 서브세트에 대해 한 번과 같이 여러 번 수행될 수 있다. 구현에서, 블록(214 및 216)은 비디오의 모든 프레임에 대해 수행될 수 있고, 블록(212)은 블록(216)에 이어 블록(218)에서 획득된 감소된 해상도 프레임으로부터 프레임의 서브세트를 선택하기 위해 수행될 수 있다.
일부 구현에서, 방법(200)의 다중 반복, 예를 들어, 제1 목표 프레임 레이트를 갖는 제1 게이팅 모델과의 제1 반복 및 제2 목표 프레임 레이트를 갖는 제2 게이팅 모델과의 제2 반복이 수행될 수 있다. 제1 게이팅 모델 및 제2 게이팅 모델은 각각 대응하는 목표 프레임 레이트에 대해 훈련된 상이한 게이팅 모델일 수 있다. 방법(200)의 계산 비용은 더 높은 목표 프레임 레이트보다 더 낮은 목표 프레임 레이트에 대해 더 낮을 수 있다.
예를 들어, 낮은 목표 프레임 레이트(속도)(예: 5fps)로 방법(200)의 반복을 먼저 수행하는 것이 유리할 수 있으며, 표시가 비디오를 분석하지 않는 것이라면 더 높은 목표 프레임 레이트(속도)(예: 20fps)로 방법(200)의 또 다른 반복을 수행하는 것이 유리할 수 있다. 이 예에서, 다중 비디오의 게이팅을 수행하기 위한 방법(200)의 계산 비용은 예를 들어 다중 비디오에 대한 더 높은 목표 프레임 속도로 방법(200)을 실행하는 것보다 낮을 수 있다.
일부 구현에서, 다중 반복이 병렬로 수행될 수 있으며, 표시가 분석될 비디오라는 표시인 경우 진행중인 반복이 종료된다. 이 예에서, 여러 비디오의 게이팅을 수행하는 데 필요한 시간은 여러 반복을 순차적으로 실행하는 것보다 더 낮을 수 있다.
일부 구현에서, 방법(200)은 클라이언트 장치(예를 들어, 클라이언트 장치(120, 122, 124, 또는 126) 중 임의의 것)에서 수행될 수 있다. 예를 들어, 방법(200)은 방법(200)을 수행하는 계산 능력을 갖는 클라이언트 장치, 예를 들어 충분한 계산 능력을 갖는 프로세서, 또는 방법(200)을 구현하는 데 사용될 수 있는 GPU, ASIC 또는 신경망 프로세서를 포함하는 클라이언트 장치에서 수행될 수 있다. 이러한 구현은 방법(200)을 실행하기 위해 서버 장치에 대한 부하를 감소시킴으로써 기술적 장점을 제공할 수 있다.
일부 구현에서, 방법(200)은 서버 장치(예를 들어, 서버 장치(104))에서 수행될 수 있다. 예를 들어, 방법(200)은 비디오를 캡처하는 클라이언트 장치가 방법(200)을 수행하는 계산 능력을 갖지 않거나 클라이언트 장치의 배터리가 부족한 경우 서버 장치에서 수행될 수 있다. 이러한 구현은 클라이언트 장치에서 전력 소비를 줄이는 서버 장치로 게이팅 기술을 수행함으로써 기술적 이점을 제공할 수 있다.
도 2를 참조하여 설명된 게이팅 기술의 다양한 구현은 긍정적인 표시와 연관된 비디오의 서브세트만을 분석하고 다른 비디오는 분석하지 않음으로써 비디오에 주석을 추가하는 전체 계산 비용을 줄일 수 있다. 예를 들어, 주석이 얼굴 라벨에 해당하는 경우, 게이팅 기술은 사람의 얼굴이 비디오의 서브세트에 존재할 가능성을 기반으로 획득된 긍정적인 표시와 관련된 비디오의 서브세트에 대해서만 분석이 수행됨을 나타낼 수 있다.
도 3은 일부 구현에 따른 예시적인 게이팅 모델(300)의 동작을 도시한다. 게이팅 모델(300)은 제1 모델(320)(모델 A) 및 제2 모델(330)(모델 B)을 포함한다. 일부 구현에서, 게이팅 모델(300)은 특정 목표 프레임 레이트(속도), 예를 들어 5fps, 10fps, 20fps 등과 연관될 수 있다.
제1 모델(320)은 제1 컨벌루션 신경망(CNN)(322), 제2 CNN(324) 및 퓨전 네트워크(326)를 포함한다. 제1 CNN(322), 제2 CNN(324) 및 퓨전 네트워크(326)는 각각 복수의 신경망 노드 계층을 포함할 수 있다.
비디오 프레임(302)의 하나 이상의 스택이 제1 CNN(322)에 대한 입력으로서 제공된다. 예를 들어, 비디오 프레임의 스택은 감소된 해상도(다운 샘플링된) 비디오 프레임을 포함하는 복수의 비디오 프레임의 샘플링된 서브세트에 기초할 수 있다. 게이팅 모델에 대한 목표 프레임 레이트에 기초하여 비디오를 샘플링함으로써 서브세트를 획득할 수 있다.
일부 구현에서, 특정 특징을 나타내는 하나 이상의 임베딩(304)이 제1 CNN(322)에 대한 입력으로서 제공될 수 있다. 예를 들어, 하나 이상의 임베딩은 하나 이상의 특징 또는 특징 유형을 나타내는 저 차원의 학습된 벡터 표현일 수 있다. 하나 이상의 임베딩은 특정 작업을 수행하도록 훈련된 신경망을 사용하여 학습될 수 있으며, 예를 들어 특정 특징을 묘사하거나 특정 특징을 묘사하지 않는 것으로 비디오를 분류할 수 있다. 하나 이상의 임베딩은 파라미터(예: 신경망의 가중치)일 수 있다. 임베딩은 특정 작업에 대한 손실 함수를 최소화하여 학습할 수 있다. 예를 들어, 하나 이상의 임베딩(304)은, 배우, 텔레비전 호스트, 정치인, 유명인, 스포츠맨 등과 같은 유명한 인물의 얼굴; 밈(예: 메시징 또는 소셜 네트워크 애플리케이션을 통해 널리 유포되거나 비디오 호스팅 웹 사이트를 통해 보는 비디오); 상업 비디오(예: 영화, 텔레비전, 팟 캐스트 또는 기타 비디오 콘텐츠); 또는 애니메이션 또는 합성 비디오(예: 화면 캡처 비디오, 비디오 게임에서 얻은 비디오 등)을 나타낼 수 있다.
제1 CNN은 복수의 계층의 입력 계층(레이어)을 통해 입력으로서 비디오 프레임(302) 및 임베딩(304)의 스택을 수신할 수 있다. 입력 계층은 복수의 계층 중 제2 계층에 연결될 수 있다. 일부 구현에서, 각각 이전 계층의 출력을 입력으로서 수신하고 다음 계층에 입력을 제공하는 하나 이상의 추가 계층이 제1 CNN(322)에 포함될 수 있다. 제1 CNN(322)의 마지막 계층은 출력 계층일 수 있다.
제1 CNN(322)은 특정 특징(예를 들어, 인간의 얼굴, 알려진 얼굴, 움직임의 유형 등)이 비디오에 존재하는 제1 확률을 출력으로서 생성할 수 있다. 제1 CNN의 출력은 확률 값, 확률 값 세트(예를 들어, 각각 비디오 프레임의 특정 스택에 대응), 또는 제1 CNN(322)의 출력 계층에 의해 생성된 벡터 표현일 수 있다. 제1 CNN(322)의 출력은 퓨전 네트워크(326)에 대한 입력으로서 제공된다.
오디오 스펙트로그램의 하나 이상의 스택(312)이 제2 CNN(324)에 대한 입력으로서 제공된다. 예를 들어, 오디오 스펙트로그램의 스택은 복수의 비디오 프레임의 샘플링된 서브세트에 기초하여, 예를 들어 이전 시간 기간 및/또는 후속 시간 기간에 대응하는 프레임에 기초하여 오디오로부터 추출될 수 있다.
일부 구현에서, 특정 특징을 나타내는 하나 이상의 임베딩(314)이 제2 CNN(324)에 대한 입력으로서 제공될 수 있다. 예를 들어, 하나 이상의 임베딩은 하나 이상의 유형의 특징을 나타내는 저 차원의 학습된 벡터 표현일 수 있다. 하나 이상의 임베딩은 특정 작업을 수행하도록 훈련된 신경망을 사용하여 학습될 수 있으며, 예를 들어 오디오를 특정 특징을 묘사하거나 묘사하지 않는 것으로 분류할 수 있다. 하나 이상의 임베딩은 파라미터(예: 신경망의 가중치)일 수 있다. 임베딩은 특정 작업에 대한 손실 함수를 최소화하여 학습할 수 있다. 예를 들어, 하나 이상의 임베딩(304)은 배우, 텔레비전 호스트, 정치인, 유명 인사, 스포츠맨 등과 같은 유명한 인물에 대응하는 알려진 음성 서명; 오디오 밈(예: 메시징 또는 소셜 네트워크 애플리케이션을 통해 널리 유포되거나 오디오 호스팅 웹 사이트를 통해 듣는 오디오); 상업용 오디오(예: 음악, 팟 캐스트 또는 기타 오디오 콘텐츠) 또는 사람이 아닌 오디오(예: 자연의 소리, 합성적으로 생성된 소리 등)을 나타낼 수 있다.
제2 CNN(324)은 오디오 스펙트로그램(312)의 스택 및 임베딩(314)을 복수의 계층의 입력 계층을 통해 입력으로서 수신할 수 있다. 입력 계층은 복수의 계층 중 제2 계층에 연결될 수 있다. 일부 구현에서, 각각 이전 계층의 출력을 입력으로서 수신하고 다음 계층에 입력을 제공하는 하나 이상의 추가 계층이 제2 CNN(324)에 포함될 수 있다. 제2 CNN(324)의 마지막 계층은 출력 계층일 수 있다.
제2 CNN(324)은 특정 특징(예를 들어, 사람의 음성, 특정 유형의 오디오 등)이 오디오에 존재하는 제1 확률을 출력으로서 생성할 수 있다. 제2 CNN의 출력은 확률 값, 확률 값 세트(예를 들어, 각각 오디오 스펙트로그램의 특정 스택에 대응), 또는 제2 CNN(324)의 출력 계층에 의해 생성된 벡터 표현일 수 있다. 제2 CNN(324)의 출력은 퓨전 네트워크(326)에 대한 입력으로서 제공된다.
퓨전 네트워크(326)는 신경망 노드의 복수의 계층을 포함할 수 있다. 퓨전 네트워크(326)는 복수의 계층의 입력 계층을 통해 입력으로서 제1 CNN(322) 및 제2 CNN(324)의 출력을 수신할 수 있다. 입력 계층은 복수의 계층 중 제2 계층에 연결될 수 있다. 일부 구현에서, 각각 이전 계층의 출력을 입력으로서 수신하고 다음 계층에 입력을 제공하는 하나 이상의 추가 계층이 퓨전 네트워크(326)에 포함될 수 있다. 퓨전 네트워크(326)의 마지막 층은 출력 층일 수 있다. 퓨전 네트워크(326)는 제1 CNN(322) 및 제2 CNN(324)의 출력에 기초하여 특정 특징이 비디오에 존재할 가능성(328)을 생성하도록 훈련된다. 일부 구현에서, 퓨전 네트워크(326)는 단지 2 개의 계층, 즉 입력 층과 출력 층을 포함할 수 있다(예를 들어, 제2 층은 출력 층이다). 일부 구현에서, 퓨전 네트워크(326)는 3 개 이상의 계층을 포함할 수 있다. 특정 특징이 비디오에 존재할 가능성은 제2 모델(330)에 대한 입력으로서 제공된다.
게이팅 모델(300)은 제2 모델(330)(모델 B)을 더 포함한다. 일부 구현에서, 제2 모델(330)은 휴리스틱 기반 모델, 순환 신경망, 또는 마르코프 체인 분석 모델 중 하나 이상을 포함할 수 있다. 다른 구현에서, 제2 모델(330)은 이러한 기술 중 하나 이상을 사용하여 구현된다. 2 개 이상의 유형의 모델이 제2 모델(330)에 포함되는 구현에서, 제2 모델의 출력은 2 개 이상의 유형의 모델의 각각의 출력의 가중치 조합에 기초할 수 있다. 일부 구현에서, 다른 적절한 기술이 제2 모델(330)을 구현하기 위해 이용될 수 있다.
제2 모델(330)은 특정 특징이 비디오에 존재할 가능성에 기초하여 주석을 추가하기 위해 비디오를 분석할지 여부의 표시를 생성한다. 일부 구현에서, 제1 모델(320)은 비디오 프레임 및/또는 오디오 스펙트로그램의 복수의 스택에 대한 각각의 가능성을 시퀀스로서 제공하고, 제2 모델은 정렬된 시퀀스의 각 스택에 대해 생성된 표시를 저장하도록 구성된다. 이러한 구현에서, 표시의 생성은 정렬된 시퀀스에서 하나 이상의 이전 스택에 대한 저장된 표시에 추가로 기초한다.
일부 구현들에서, 제2 모델(330)은(예를 들어, 제1 모델에 의해 결정된 바와 같이) 특정 특징이 존재할 가능성이 임계 확률을 충족하는지 여부를 결정할 수 있다. 이러한 구현에서, 가능성이 임계값을 충족하지 않으면, 제2 모델은 부정적인 표시, 예를 들어 주석을 추가하기 위해 비디오를 분석하지 않는다는 표시를 출력할 수 있다. 가능성이 임계값을 충족하는 경우, 제2 모델은 긍정적인 표시, 예를 들어 주석을 추가하기 위해 비디오를 분석하기 위한 표시를 출력할 수 있다. 예를 들어, 임계값은 예를 들어 제2 모델의 훈련 동안 획득된 경험적으로 결정된 확률 값으로 설정될 수 있다. 임계(임계값) 확률은 다른 특정 특징에 따라 다를 수 있다. 임계 확률은 훈련 데이터에 기초하여 결정된 바와 같이 제2 모델의 정확도에 기초하여 결정될 수 있다. 예를 들어, 정확도는 TP(true positives)(제2 모델이 정확하고 긍정적인 표시를 제공한 비디오)과 FP(false positives)(제2 모델이 정확하지 않은 긍정적인 표시를 제공한 비디오)의 비율로 결정될 수 있다. TP 및 FP 비율의 선택은 게이팅 모델의 특이성과 민감도 간의 균형을 평가하는 데 사용되는 ROC(receiver operating characteristic) 곡선을 기반으로 할 수 있다. 임계값의 선택은 게이팅 모델의 실행 속도 대 게이팅 모델의 정확성의 트레이드오프(tradeoff)를 가능하게 할 수 있다.
일부 구현에서, 제2 모델은 또한 다른 휴리스틱를 활용할 수 있다. 예를 들어, 제2 모델은 특정 특징이 특정 시간 윈도우 내의 적어도 임계 프레임 수에서 검출되었는지 여부를 결정할 수 있다. 예를 들어, 제2 모델은 특정 특징이 프레임 스택의 프레임 수 임계값 이상(예를 들어, 3 개 프레임 스택에서 2 개 이상의 프레임, 5 개 스택에서 3 개 이상의 프레임 프레임 등)에서 검출되었는지 여부를 결정할 수 있다. 게이팅 모델을 제1 모델과 제2 모델로 분리하면 예를 들어 계산 비용없이 제2 모델을 적용하여 제1 모델을 재훈련시킬 수 있다.
일부 구현에서, 제2 모델은 특정 특징이 프레임 시퀀스의 연속 프레임의 임계 수 이상에서 검출되었는지 여부를 결정할 수 있다. 예를 들어, 제2 모델은 5 개 프레임의 스택에서 적어도 2 개의 연속 프레임, 7 개의 프레임의 스택에서 적어도 3 개의 연속 프레임 등에서 특정 특징이 검출되었는지 여부를 결정할 수 있다.
일부 구현에서, 제2 모델은 예를 들어 임계 확률, 프레임의 임계 수 및 특정 시간 윈도우, 및 표시를 생성하기 위해 연속 프레임의 임계 수, 또는 이러한 요소(factors) 중 두 가지에 기초하여 휴리스틱의 조합(예를 들어, 가중된(weighted) 조합)을 이용할 수 있다.
일부 구현에서, 게이팅 모델(300)은 예를 들어 이미지 관리 애플리케이션(156a)의 일부로서 클라이언트 장치(120, 122, 124 또는 126) 중 하나 이상에서 구현될 수 있다. 일부 구현에서, 게이팅 모델(300)은 예를 들어 이미지 관리 애플리케이션(156b)의 일부로서 서버 장치(104)상에서 구현될 수 있다. 일부 구현에서, 게이팅 모델(300)은 서버 장치(104) 및 클라이언트 장치(120, 122, 124, 126) 중 하나 이상에서 구현될 수 있다.
일부 구현에서, 게이팅 모델(300)은 범용 프로세서, 예를 들어 장치의 중앙 처리 장치(CPU)에서 실행 가능한 소프트웨어로 구현될 수 있다. 일부 구현에서, 게이팅 모델(300)은 그래픽 처리 장치(GPU), 필드 프로그래밍 가능 게이트 어레이(FPGA), 기계 학습 프로세서 등과 같은 특수 목적 프로세서에서 실행 가능한 소프트웨어로 구현될 수 있다. 일부 구현에서, 게이팅 모델(300)은 전용 하드웨어, 예를 들어 ASIC(application specific integrated circuit)으로 구현될 수 있다.
도 4는 일부 구현들에 따라, 특정 특징에 대응하는 주석을 추가하기 위해 비디오를 분석할지 여부의 표시를 생성하기 위해 기계 학습 기반 게이팅 모델을 훈련시키는 예시적인 방법(400)을 예시하는 흐름도이다. 다른 구현에서, 특정 특징은 사람의 얼굴, 객체 유형, 움직임 유형 또는 오디오 유형을 포함한다. 예를 들어, 방법(400)은 도 3을 참조하여 설명된 게이팅 모델(300)을 훈련시키기 위해 이용될 수 있다.
방법(400)은 블록 402에서 시작할 수 있다. 블록 402에서, 훈련 세트가 획득된다. 훈련 세트는 복수의 훈련 비디오를 포함할 수 있다. 각 훈련 비디오는 복수의 프레임을 포함할 수 있다. 각각의 훈련 비디오는 대응하는 고해상도 비디오의 저해상도 샘플링 버전일 수 있다. 예를 들면, 고해상도 비디오의 각 프레임은 360 픽셀 와이드(pixels wide)(표준 화질에 해당), 720 또는 1080 픽셀 와이드(고화질 또는 HD에 해당), 2K/4K/8K 픽셀 와이드(2K, 4K 및 8K 해상도에 해당), 기타 해상도일 수 있다. 고해상도 비디오에 대응하는 훈련 비디오는 고해상도 비디오의 다운 샘플링된(축소된 해상도) 버전일 수 있으며, 훈련 비디오의 프레임의 총 픽셀 수는 해당 고해상도 비디오보다 낮을 수 있다. 훈련 세트의 훈련 비디오는 특정 특징이 존재하는 적어도 하나의 훈련 비디오와 특정 특징이 없는 적어도 하나의 훈련 비디오를 포함한다. 블록 402 다음에 블록 404가 올 수 있다.
훈련 데이터는 복수의 훈련 라벨을 더 포함할 수 있다. 각각의 훈련 라벨은 복수의 훈련 비디오 중 하나 이상에 대응하는 고해상도 비디오에서(게이팅 모델이 훈련될) 하나 이상의 특정 특징의 존재를 나타낼 수 있다. 예를 들어, 훈련 라벨을 생성하는 비디오 분석 기술을 사용하여 고해상도 비디오를 프로그래밍 방식으로 분석하여 훈련 라벨을 생성할 수 있다. 다른 예에서, 훈련 라벨은 수동 사용자 입력에 기초하여 생성될 수 있다.
일부 구현에서, 복수의 훈련 비디오 중 하나 이상의 훈련 비디오는 복수의 프레임에 대응하는 오디오 스펙트로그램을 더 포함할 수 있다. 이러한 구현에서 게이팅 모델은 오디오 스펙트로그램을 분석하도록 훈련된 컨벌루션 신경망을 포함할 수 있다. 이러한 구현에서, 게이팅 모델은 제1 컨벌루션 신경망 및 제2 컨벌루션 신경망의 출력을 입력으로 수신하고 특정 특징이 비디오에 존재할 가능성을 생성하는 퓨전 네트워크를 더 포함할 수 있다.
블록(404)에서, 게이팅 모델의 제1 모델은 특정 특징이 훈련 비디오에 존재할 가능성을 생성하기 위해 훈련 세트의 각 훈련 비디오에 적용된다. 블록 404 다음에 블록 406이 올 수 있다.
블록(406)에서, 특정 특징에 대응하는 주석을 추가하기 위해 훈련 비디오를 분석할지 여부의 표시를 생성하기 위해 특정 특징이 훈련 비디오에 존재할 가능성에 기초하여 게이팅 모델의 제2 모델이 적용된다. 일부 구현에서, 게이팅 모델은 연관된 신뢰(신뢰도) 수준(예를 들어, 5 %, 10 %, 50 % 등)을 사용하여 표시를 생성할 수 있다. 블록 406 다음에 블록 408이 올 수 있다.
블록(408)에서, 피드백 데이터는 블록(406)에서 생성된 표시 및 훈련 비디오에 대응하는 고해상도 비디오와 연관된 훈련 라벨에 기초하여 생성된다. 예를 들어, 표시가 부정적(비디오가 분석되지 않음)이고 훈련 라벨이 특정 특징이 있음을 나타내는 경우 피드백 데이터는 게이팅 모델의 출력이 잘못되었음을 나타낼 수 있다(부정적 피드백). 다른 예에서, 표시가 긍정적이고(비디오가 분석될 예정임) 훈련 라벨이 특정 특징이 없음을 나타내는 경우, 피드백 데이터는 게이팅 모델의 출력이 오류(부정적 피드백)임을 나타낼 수 있다. 다른 예에서, 표시가 긍정적이고(비디오가 분석될 예정임) 훈련 라벨이 특정 특징이 존재함을 나타내는 경우, 피드백 데이터는 게이팅 모델의 출력이 정확했음을 나타낼 수 있다(긍정적 피드백). 또 다른 예에서, 표시가 부정적(비디오가 분석되지 않음)이고 훈련 라벨이 특정 특징이 없음을 나타내는 경우, 피드백 데이터는 게이팅 모델의 출력이 정확했음을 나타낼 수 있다(긍정적 피드백).
상기에서는 피드백 데이터를 긍정적 또는 부정적 피드백으로 설명했지만 피드백 데이터는 다른 형태로 제공될 수 있다. 예를 들어, 게이팅 모델에 피드백을 제공하기 전에 여러 훈련 비디오에서 생성된 피드백 데이터를 집계할 수 있다. 예를 들어, 집계는 특정 특징에 대해 모델에 의해 생성된 표시(및 관련 신뢰 수준)가 높은 정확도를 갖는 반면 다른 특징에 대해서는 정확도가 낮다는 표시를 제공하는 것을 포함할 수 있다. 예를 들어, 피드백 데이터는, 게이팅 모델이 "인간 얼굴" 및 "미소(smiling)" 특징에 대한 표시를 생성할 때 높은 정확도를 가지며, "생일 케이크", "라우터(laughter)" 또는 "점프" 특징에 대한 표시를 생성할 때 낮은 정확도를 가진다고 나타낼 수 있다.
블록 408 다음에 블록 410이 이어질 수 있다. 블록 410에서, 피드백 데이터는 게이팅 모델에 대한 훈련(트레이닝) 입력으로서 제공된다. 일부 구현에서, 블록 410 다음에 블록 412가 올 수 있다.
블록 412에서, 게이팅 모델은 피드백 데이터에 기초하여 자동으로 업데이트된다. 일부 구현에서, 게이팅 모델을 업데이트하는 것은 제1 모델의 컨벌루션 신경망의 하나 이상의 노드의 가중치를 자동으로 조정하는 것을 포함한다. 일부 구현에서, 게이팅 모델을 업데이트하는 것은 제1 모델의 컨벌루션 신경망의 노드의 하나 이상의 쌍 사이의 연결을 자동으로 조정하는 것을 포함한다.
일부 구현에서, 각각의 훈련 비디오의 복수의 프레임은 복수의 프레임(또는 세그먼트) 스택으로 분할될 수 있다. 각 스택은 하나 이상의 프레임을 포함할 수 있다. 일부 구현에서, 각각의 스택은 적어도 2 개의 프레임을 포함할 수 있다. 복수의 스택은 정렬된 순서로 구성될 수 있다. 게이팅 모델의 훈련(트레이닝)은 복수의 프레임 스택에서 프레임의 각 스택에 대해 순차적으로 수행될 수 있다.
일부 구현에서, 게이팅 모델은 하나 이상의 컨벌루션 신경망(CNN)을 포함하는 제1 모델을 포함할 수 있다. 게이팅 모델을 훈련하기 전에, CNN은 복수의 계층으로 구성된 복수의 노드를 포함할 수 있다. 각 계층의 노드는 이전 계층의 노드와 후속 계층의 노드에 연결될 수 있다. 제1 계층의 노드는 비디오 프레임 또는 오디오 스펙트로그램을 입력으로 받아들이도록 구성될 수 있다. 각 노드는 모든 유형의 신경망 노드, 예를 들어 LSTM 노드일 수 있다.
훈련 전에 각 노드에는 초기 가중치가 할당되고 신경망의 서로 다른 계층의 노드 간의 연결이 초기화될 수 있다. 훈련은 하나 이상의 노드의 가중치 및/또는 하나 또는 노드 쌍 사이의 연결을 조정하는 것을 포함할 수 있다.
일부 구현에서, 훈련 세트의 서브세트는 초기 훈련 단계에서 제외될 수 있다. 이 서브세트는 초기 훈련 단계 이후에 제공될 수 있고 예측의 정확성(비디오 분석 여부 표시)이 결정될 수 있다. 정확도가 임계값 미만이면 모델이 이미지 서브세트에 대한 모션(동작) 점수를 올바르게 예측할 때까지 모델 파라미터를 조정하기 위해 훈련 세트의 추가 비디오로 추가 훈련을 수행할 수 있다. 추가 훈련(second phase)은 예를 들어 모델이 만족스러운 수준의 정확도를 얻을 때까지 여러 번 반복될 수 있다. 일부 구현에서, 훈련된 모델은 추가로 수정될 수 있으며, 예를 들어 (더 적은 노드 또는 계층을 사용하기 위해) 압축, (예를 들어, 다른 유형의 하드웨어에서 사용 가능하도록) 변환 등이 될 수 있다. 일부 구현에서, 모델의 다른 버전이 제공될 수 있는데, 예를 들어 모델의 클라이언트 버전은 크기에 최적화되고 계산 복잡성이 감소될 수 있는 반면, 모델의 서버 버전은 정확성을 위해 최적화될 수 있다.
방법(400)이 도 4의 다양한 블록을 참조하여 설명되었지만, 본 개시에서 설명된 기술은 도 4의 일부 블록을 수행하지 않고 수행될 수 있다는 것을 이해할 수 있다. 예를 들어, 일부 구현들, 블록(412)은 개별적으로 수행될 수 있으며, 예를 들어 게이팅 모델에 대한 업데이트는 오프라인 방식으로 수행될 수 있다. 일부 구현에서, 도 4에 예시된 블록 중 하나 이상이 결합될 수 있으며, 예를 들어, 블록 410 및 412는 예를 들어 온라인 훈련을 위해 결합될 수 있다.
또한, 훈련 세트를 참조하여 훈련(트레이닝)을 설명했지만, 게이팅 모델은 작동 중에 훈련될 수 있다. 예를 들어, 사용자가 특정 비디오의 분석을 요청하면(예: 비디오 콜라주, 여러 비디오에서 얻은 클립을 특징으로 하는 스토리 등과 같은 비디오 기반 제작을 시작하여) 특정 비디오에 대해 비디오 분석이 트리거될 수 있다. 비디오 분석이 비디오에 특정 특징이 있음을 나타내는 경우 이러한 표시는 게이팅 모델을 훈련하기 위한 피드백 데이터로 제공될 수 있다. 일부 구현에서, 사용자는 수동으로 주석을 제공할 수 있으며, 예를 들어 특정 특징을 갖는 것으로 비디오의 일부에 라벨을 지정할 수 있다. 사용자 권한이 있는 일부 구현에서는 이러한 주석을 사용하여 게이팅 모델을 훈련(학습)시킬 수 있다.
도 5는 예를 들어 추론 단계에서 사용되는 훈련된 게이팅 모델과 같은 게이팅 모델의 예시적인 비디오 및 대응하는 출력을 도시한다. 특히, 예시 비디오의 3 개의 프레임 스택(502, 512 및 522)이 표시된다. 3 개의 프레임 스택은 비디오의 복수 프레임의 서브세트의 일부이고, 각각 다른 시점 t-1, t 및 t + 1에 대응한다. 도 5에서 볼 수 있듯이, 비디오의 다른 프레임은 스윙(swing)을 하는 사람을 묘사한다(506, 516, 526). 비디오를 캡처하는 동안, 사람은 비디오 프레임(502, 512, 522) 스택에서 볼 수 있듯이 뒤에서 앞으로 스윙을 타고 다리를 편다. 이러한 움직임은 깊이 정보를 결정할 수 있는 카메라를 사용하여 비디오를 캡처할 때 깊이 이미지에 저장된 깊이 데이터에 의해 표시될 수 있다. 비디오는 또한 배경 부분(504)을 포함한다.
움직이는 동안 그 사람은“This is fun!(재미있다!)”라는 문구를 발화하며, 이는 비디오의 오디오 부분으로 저장된다. 문구(508)의 제1 부분은 "This"라는 단어를 포함하고 프레임의 제1 스택(502)에 대응한다. 문구(518)의 제2 부분은 "is"라는 단어를 포함하고 프레임의 제2 스택(512)에 대응한다. 문구(528)의 세 번째 부분은 "fun"이라는 단어를 포함하고 프레임의 제2 스택(522)에 해당한다. 서로 다른 프레임 스택에 해당하는 오디오 스펙트로그램을 얻는다. 비디오는 시간 t-1 이전 및 시간 t + 1 이후에 각각 대응하는 오디오 스펙트로그램을 갖는 다른 프레임을 포함할 수 있다.
도 5에 예시된 바와 같이, 프레임 스택 및 대응하는 오디오 스펙트로그램은 제1 모델(540)(모델 A)에 제공된다. 프레임의 각 스택에 대해, 제1 모델(540)은 스택에 존재하는 특정 특징(Feature)의 가능성에 대한 출력 예측을 생성한다. 예시된 예에서 특정 특징은 사람의 얼굴이다. 도 5에 도시된 바와 같이, 제1 모델(540)은 각각 스택(502, 512 및 522)에 대응하는 3 개의 확률 값(0.5, 0.5, 0.7)을 생성한다.
제1 모델(540)에 의해 생성된 우도 값은 제2 모델(542)(모델 B)에 대한 입력으로서 제공된다. 제2 모델은, 각 프레임 스택에 대해, 특정 특징(예: "인간 얼굴" 라벨)에 해당하는 하나 이상의 주석을 추가하기 위해 비디오를 분석할지 여부에 대한 표시를 생성한다. 예를 들어, 표시는 스택(502 및 512)을 기반으로 "No(아니오)" 이고 스택(522)을 기반으로 "Yes(예)" 이다. 예를 들어, 표시의 생성은 휴리스틱을 기반으로 할 수 있다. 휴리스틱는 제2 모델(542)을 훈련함으로써 획득될 수 있다. 일부 예에서, 휴리스틱는 단일 스택 및/또는 프레임의 다중 스택, 예를 들어 인접 또는 연속 스택, 또는 비 연속 스택에 기초할 수 있다.
도 5에 예시된 예에서, 세 개의 연속적인 프레임 스택이 표시되며 특정 특징이 0.4 미만일 가능성이 있다. 이 예에서, 제2 모델(542)에 대한 간단한 휴리스틱은 "3 개 이상의 연속 스택이 우도 > 0.4와 연관되면 표시를 생성하고(표시(Yes)) 그렇지 않으면 표시를 생성하지 않는다(표시(No))"일 수 있다. 예를 들어, "프레임의 스택이 우도 > 0.9와 연관되면 Yes를 생성하고", "3 개의 연속 스택 중 적어도 하나의 스택이 우도 < 0.5 이면 No를 생성한다" 등과 같은 다른 휴리스틱도 활용될 수 있다. 일부 구현에서, 제2 모델(542)은 조합(예를 들어, 가중된 조합)으로서 다중 휴리스틱을 평가하고 그에 따라 표시를 생성할 수 있다. 일부 구현에서, 제2 모델(542)은 상이한 특정 특징에 대응하는 상이한 표시를 생성할 수 있다. 예를 들어, 도 5에서 "jumping(점핑)" 표시는 "No"이고 "swinging a swing" 표시는 "Yes"일 수 있다.
도 6은 본 명세서에 설명된 하나 이상의 특징을 구현하는 데 사용될 수 있는 예시적인 장치(600)의 블록도이다. 일례에서, 장치(600)는 클라이언트 장치, 예를 들어 도 1에 도시된 임의의 클라이언트 장치(120, 122, 124, 126)를 구현하는 데 사용될 수 있다. 대안적으로, 장치(600)는 서버 장치, 예를 들어 서버(104)를 구현할 수 있다. 일부 구현에서, 장치(600)는 클라이언트 장치, 서버 장치, 또는 클라이언트 및 서버 장치 모두를 구현하는 데 사용될 수 있다. 장치(600)는 임의의 적절한 컴퓨터 시스템, 서버, 또는 전술한 바와 같은 다른 전자 또는 하드웨어 장치일 수 있다.
여기에 설명된 하나 이상의 방법은 임의의 유형의 컴퓨팅 장치에서 실행될 수 있는 독립 실행형 프로그램, 웹 브라우저에서 실행되는 프로그램, 모바일 컴퓨팅 장치(예 : 휴대 전화, 스마트 폰, 태블릿 컴퓨터, 웨어러블 기기(손목 시계, 완장, 보석, 모자, 가상 현실 고글 또는 안경, 증강 현실 고글 또는 안경, 헤드 마운트 디스플레이 등), 노트북 컴퓨터 등)에서 실행되는 모바일 애플리케이션("앱")에서 실행될 수 있다. 일례에서, 클라이언트/서버 아키텍처가 사용될 수 있다(예를 들어, 모바일 컴퓨팅 장치(클라이언트 장치로서)는 사용자 입력 데이터를 서버 장치로 전송하고 서버로부터 출력(예를 들어, 디스플레이용)을 위한 최종 출력 데이터를 수신한다). 다른 예에서, 모든 계산은 모바일 컴퓨팅 장치의 모바일 앱(및/또는 다른 앱) 내에서 수행될 수 있다. 다른 예에서, 계산은 모바일 컴퓨팅 장치와 하나 이상의 서버 장치간에 분할될 수 있다.
일부 구현에서, 장치(600)는 프로세서(602), 메모리(604), 입력/출력(I/O) 인터페이스(606) 및 카메라(616)를 포함한다. 프로세서(602)는 프로그램 코드를 실행하고 장치(600)의 기본 동작을 제어하기 위한 하나 이상의 프로세서 및/또는 처리 회로일 수 있다. "프로세서"는 데이터, 신호 또는 기타 정보를 처리하는 적절한 하드웨어 시스템, 메커니즘 또는 컴포넌트를 포함한다. 프로세서는 하나 이상의 코어가 있는 범용 CPU(중앙 처리 장치)가 있는 시스템(예: 단일 코어, 듀얼 코어 또는 멀티 코어 구성), 다중 처리 장치(예: 다중 프로세서 구성), 그래픽 처리 장치 (GPU), FPGA(Field-Programmable Gate Array), ASIC(application-specific integrated circuit), CPLD(complex programmable logic device), 기능 달성을 위한 전용 회로, 신경망 모델 기반 처리를 구현하는 특수 목적 프로세서, 신경 회로, 행렬 계산(예: 행렬 곱셈)에 최적화된 프로세서 또는 다른 시스템을 포함할 수 있다. 일부 구현에서, 프로세서(602)는 신경망 처리를 구현하는 하나 이상의 코-프로세서를 포함할 수 있다. 일부 구현에서, 프로세서(602)는 확률적 출력을 생성하기 위해 데이터를 처리(프로세싱)는하는 프로세서일 수 있으며, 예를 들어, 프로세서(602)에 의해 생성된 출력은 부정확할 수 있거나 예상 출력으로부터의 범위 내에서 정확할 수 있다. 처리(프로세싱)는 특정 지리적 위치로 제한되거나 일시적인 제한이 있을 필요가 없으며, 예를 들어, 프로세서는 "실시간", "오프라인", "배치(batch) 모드" 등의 기능을 수행할 수 있다. 처리의 일부는 상이한(또는 동일한) 처리 시스템에 의해 상이한 시간 및 상이한 위치에서 수행될 수 있다. 컴퓨터는 메모리와 통신하는 모든 프로세서일 수 있다.
메모리(604)는 일반적으로 프로세서(602)에 의한 액세스를 위해 장치(600)에 제공되고, RAM(Random Access Memory), ROM(Read-Only Memory), EEPROM(Electrical Erasable Read-Only Memory), 플래시 메모리 등과 같은 임의의 적절한 프로세서 판독 가능 저장 매체가 될 수 있으며, 이는 프로세서에 의한 실행을 위한 명령어를 저장하기에 적합하고, 프로세서(602)와 분리되어 있고 및/또는 그와 통합된다. 메모리(604)는 운영 체제(608), 기계 학습 애플리케이션(630), 다른 애플리케이션(612) 및 애플리케이션 데이터(614)를 포함하여 프로세서(602)에 의해 서버 장치(600)에서 작동하는 소프트웨어를 저장할 수 있다. 다른 애플리케이션(612)은 카메라 애플리케이션, 이미지 갤러리 또는 이미지 라이브러리 애플리케이션, 데이터 디스플레이 엔진, 웹 호스팅 엔진, 이미지 디스플레이 엔진, 알림 엔진, 소셜 네트워킹 엔진 등과 같은 애플리케이션을 포함할 수 있다. 일부 구현에서, 기계 학습 애플리케이션(630) 및 다른 애플리케이션(612)은 각각 프로세서(602)가 본 명세서에 설명된 기능, 예를 들어 도 2 및 도 4의 방법의 일부 또는 전부를 수행할 수 있게 하는 명령어를 포함할 수 있다.
다른 애플리케이션(612)은 예를 들어 카메라 애플리케이션, 이미지 라이브러리 애플리케이션, 이미지 관리 애플리케이션, 이미지 갤러리 애플리케이션, 미디어 디스플레이 애플리케이션, 통신 애플리케이션, 웹 호스팅 엔진 또는 애플리케이션, 매핑 애플리케이션, 미디어 공유 애플리케이션 등을 포함할 수 있다. 여기에 개시된 하나 이상의 방법은 여러 환경 및 플랫폼에서 작동할 수 있으며, 예를 들어, 임의의 유형의 컴퓨팅 장치에서 실행될 수 있는 독립형 컴퓨터 프로그램, 웹 페이지를 갖는 웹 애플리케이션, 모바일 애플리케이션( "앱")에서 실행될 수 있는 모바일 컴퓨팅 장치 등에서 실행된다.
다양한 구현에서, 기계 학습 애플리케이션(630)은 베이지안(Bayesian) 분류기를 이용할 수 있고, 벡터 기계, 신경망 또는 다른 학습 기술을 지원할 수 있다. 일부 구현에서, 기계 학습 애플리케이션(630)은 훈련된 모델(634), 추론 엔진(636) 및 데이터(632)를 포함할 수 있다. 일부 구현에서, 훈련된 모델(634)은 게이팅 모델일 수 있고 하나 이상의 모델을 포함할 수 있다.
일부 구현에서, 데이터(632)는 훈련 데이터, 예를 들어 훈련된 모델(634)을 생성하는 데 사용되는 데이터를 포함할 수 있다. 예를 들어, 훈련 데이터에는 텍스트, 이미지, 오디오, 비디오 등과 같은 모든 유형의 데이터가 포함될 수 있다. 예를 들어, 훈련 데이터는 복수의 훈련 비디오 및 대응하는 라벨을 포함하는 훈련 세트를 포함할 수 있다. 훈련 데이터는 훈련용으로 특별히 표시된 데이터 저장소, 기계 학습을 위한 훈련 데이터로 사용하기 위해 권한이 제공되는 데이터 등과 같은 모든 소스에서 얻을 수 있다. 하나 이상의 사용자가 기계 학습 모델, 예를 들어 훈련된 모델(634)을 훈련하기 위해 각자의 사용자 데이터의 사용을 허용하는 구현에서, 훈련 데이터는 이러한 사용자 데이터를 포함할 수 있다. 사용자가 각각의 사용자 데이터 사용을 허용하는 구현에서, 데이터(632)는 이미지/비디오 또는 이미지/비디오 메타데이터(예: 비디오, 다른 사용자와 비디오 공유에 관한 데이터, 비디오와 관련된 레이블, 비디오 콜라주, 스토리 등과 같은 비디오 기반 창작물이 비디오에서 생성되었는지 여부 등), 통신(예: 이메일, 문자 메시지, 음성, 영상 등의 채팅 데이터), 문서(예: 스프레드시트(spreadsheets), 텍스트 문서, 프리젠테이션 등)와 같은 허용된 데이터를 포함할 수 있다.
일부 구현에서, 훈련 데이터는 훈련되는 컨텍스트에서 사용자 입력 또는 활동을 기반으로하지 않는 데이터(예: 시뮬레이션 또는 컴퓨터 생성 비디오에서 생성된 데이터 등)와 같이 훈련 목적으로 생성된 합성 데이터를 포함할 수 있다. 일부 구현에서, 기계 학습 애플리케이션(630)은 데이터(632)를 제외한다. 예를 들어, 이러한 구현에서, 훈련된 모델(634)은 예를 들어 다른 장치에서 생성될 수 있고 기계 학습 애플리케이션(630)의 일부로서 제공될 수 있다. 다양한 구현에서, 훈련된 모델(634)은 모델 구조 또는 형태(예를 들어, 신경망 노드의 수 및 유형, 노드 간의 연결 및 노드를 복수의 계층으로 구성) 및 관련 가중치를 포함하는 데이터 파일로 제공될 수 있다. 추론 엔진(636)은 훈련된 모델(634)에 대한 데이터 파일을 읽고 훈련된 모델(634)에 지정된 모델 구조 또는 형태에 기초한 노드 연결성, 계층 및 가중치를 갖는 신경망을 구현할 수 있다.
기계 학습 애플리케이션(630)은 또한 훈련된 모델(634)을 포함한다. 일부 구현에서, 훈련된 모델은 하나 이상의 모델 형태 또는 구조를 포함할 수 있다. 예를 들면, 모델 형태 또는 구조는 선형 네트워크, 복수의 계층을 구현하는 심층 신경망(예: 입력 계층과 출력 계층 사이의 "은닉 계층", 각 계층은 선형 네트워크임), 컨벌루션 신경망(예: 입력 데이터를 여러 부분 또는 타일로 구분하거나 분할하고, 하나 이상의 신경망 계층을 사용하여 각 타일을 개별적으로 처리하고, 각 타일 처리 결과를 집계하는 네트워크), 시퀀스-투-시퀀스(sequence-to-sequence) 신경망 (예: 문장의 단어, 비디오의 프레임 등과 같은 순차적 데이터를 입력으로 수신하고 결과 시퀀스를 출력으로 생성하는 네트워크) 등과 같은 모든 유형의 신경망을 포함할 수 있다.
모델 형태 또는 구조는 다양한 노드 사이의 연결과 계층으로의 노드 구성을 지정할 수 있다. 예를 들어, 제1 계층(예를 들어, 입력 계층)의 노드는 입력 데이터(632) 또는 애플리케이션 데이터(614)로서 데이터를 수신할 수 있다. 이러한 데이터는 예를 들어, 학습된 모델이 예를 들어 복수의 프레임을 포함하는 비디오의 분석에 사용될 때 노드 당 하나 이상의 픽셀을 포함할 수 있다. 후속 중간 계층은 모델 형태 또는 구조에 지정된 연결에 따라 이전 계층의 노드의 입력, 출력으로 수신할 수 있다. 이러한 계층은 히든 계층라고도 한다. 최종 계층(예: 출력 계층)은 기계 학습 애플리케이션의 출력을 생성한다. 예를 들어, 출력은 비디오에 하나 이상의 주석(예를 들어, 라벨 세트)을 추가하기 위해 비디오를 프로그래밍 방식으로 분석할지 여부에 대한 표시일 수 있다. 일부 구현에서, 모델 형태 또는 구조는 또한 각 계층에서 노드의 수 및/또는 유형을 지정한다.
다른 구현에서, 훈련된 모델(634)은 하나 이상의 모델을 포함할 수 있다. 모델들 중 하나 이상은 모델 구조 또는 형태에 따라 층으로 배열된 복수의 노드를 포함할 수 있다. 일부 구현에서, 노드는 예를 들어, 하나의 입력 단위를 처리하여 하나의 출력 단위를 생성하도록 구성된 메모리가 없는 계산 노드일 수 있다. 노드에 의해 수행되는 계산은, 예를 들어, 복수의 노드 입력 각각에 가중치를 곱하고, 가중치 합을 얻고, 가중치 합을 바이어스 또는 인터셉트 값으로 조정하여 노드 출력을 생성하는 것을 포함할 수 있다. 일부 구현에서, 노드에 의해 수행되는 계산은 또한 조정된 가중(weighted) 합에 단계/활성화 함수를 적용하는 것을 포함할 수 있다. 일부 구현에서, 단계/활성화 함수는 비선형 함수일 수 있다. 다양한 구현에서, 이러한 계산은 행렬 곱셈과 같은 연산을 포함할 수 있다. 일부 구현에서, 복수의 노드에 의한 계산은 예를 들어 멀티 코어 프로세서의 다중 프로세서 코어를 사용하거나, GPU의 개별 처리 유닛을 사용하거나, 특수 목적 신경 회로를 사용하여 병렬로 수행될 수 있다. 일부 구현에서, 노드는 메모리를 포함할 수 있으며, 예를 들어 후속 입력을 처리할 때 하나 이상의 이전 입력을 저장하고 사용할 수 있다. 예를 들어, 메모리가 있는 노드에는 장단기 메모리(LSTM) 노드가 포함될 수 있다. LSTM 노드는 노드가 FSM(Finite State Machine)처럼 작동하도록 허용하는 "상태"를 유지하기 위해 메모리를 사용할 수 있다. 이러한 노드가 있는 모델은 연속 데이터(예: 문장 또는 단락의 단어, 비디오의 프레임, 음성 또는 기타 오디오 등)를 처리하는 데 유용할 수 있다. 예를 들어, 게이팅 모델에서 사용되는 휴리스틱 기반 모델은 비디오 프레임의 스택 시퀀스로부터의 이전 프레임 스택에 대응하는 하나 이상의 이전에 생성된 표시를 저장할 수 있다.
일부 구현에서, 훈련된 모델(634)은 개별 노드에 대한 임베딩 또는 가중치를 포함할 수 있다. 예를 들어, 모델은 모델 형태 또는 구조에 의해 지정된대로 계층으로 구성된 복수의 노드로 시작될 수 있다. 초기화시, 모델 형태에 따라 연결된 각 노드 쌍, 예를 들어 신경망의 연속적인 계층의 노드 사이의 연결에 각각의 가중치가 적용될 수 있다. 예를 들어, 각각의 가중치는 무작위로 할당되거나 기본값으로 초기화될 수 있다. 모델은 결과를 생성하기 위해 예를 들어 데이터(632)를 사용하여 훈련될 수 있다.
예를 들어, 훈련에는 지도(supervised) 학습 기술 적용이 포함될 수 있다. 지도 학습에서, 훈련 데이터는 복수의 입력(예를 들어, 비디오 세트) 및 각 입력에 대한 대응하는 예상 출력(예를 들어, 각 비디오에 대한 하나 이상의 라벨)을 포함할 수 있다. 모델의 출력과 예상 출력의 비교를 기반으로 가중치 값은 예를 들어 유사한 입력이 제공될 때 모델이 예상 출력을 생성할 확률을 높이는 방식으로 자동으로 조정된다.
일부 구현에서, 훈련은 비지도 학습 기술을 적용하는 것을 포함할 수 있다. 비지도 학습에서, 입력 데이터만 제공될 수 있고 모델은 데이터를 차별화하도록 훈련될 수 있다. 예를 들어, 입력 데이터를 복수의 그룹으로 클러스터링하기 위해, 각 그룹은 어떤 방식으로 유사한 입력 데이터를 포함한다. 예를 들어, 모델은 하나 이상의 주석을 추가하기 위해 비디오를 분석해야하는지 여부를 결정하도록 훈련될 수 있다.
다양한 구현에서 훈련된 모델은 모델 구조에 해당하는 가중치 또는 임베딩 세트를 포함한다. 데이터(632)가 생략된 구현에서, 기계 학습 애플리케이션(630)은 예를 들어, 기계 학습 애플리케이션(630)의 개발자, 제3자 등에 의한 사전 훈련에 기초한 훈련된 모델(634)을 포함할 수 있다. 일부 구현에서, 훈련된 모델(634)은 고정된, 예를 들어 가중치를 제공하는 서버로부터 다운로드되는 가중치 세트를 포함할 수 있다.
기계 학습 애플리케이션(630)은 또한 추론 엔진(636)을 포함한다. 추론 엔진(636)은 추론을 제공하기 위해 애플리케이션 데이터(614)(예를 들어, 비디오)와 같은 데이터에 훈련된 모델(634)을 적용하도록 구성된다. 일부 구현에서, 추론 엔진(636)은 프로세서(602)에 의해 실행될 소프트웨어 코드를 포함할 수 있다. 일부 구현에서, 추론 엔진(636)은 프로세서(602)가 훈련된 모델을 적용할 수 있게 하는 회로 구성(예를 들어, 프로그래밍 가능 프로세서에 대한, FPGA(field programmable gate array) 등)을 지정할 수 있다. 일부 구현에서, 추론 엔진(636)은 소프트웨어 명령어, 하드웨어 명령어 또는 조합을 포함할 수 있다. 일부 구현에서, 추론 엔진(636)은 추론 엔진(636)을 호출하기 위해, 예를 들어, 추론을 생성하기 위해 애플리케이션 데이터(614)에 훈련된 모델(634)을 적용하기 위해 운영 체제(608) 및/또는 다른 애플리케이션(612)에 의해 사용될 수 있는 애플리케이션 프로그래밍 인터페이스(API)를 제공 할 수 있다.
예를 들어, 소스 해상도가 높고 특정 시간을 갖는 비디오를 분석하는 것은 계산 비용이 많이들 수 있다. 주석이 특정 특징에 해당하는 경우 전체 비디오를 분석하여 특정 특징 중 하나 이상이 비디오(또는 비디오의 하나 이상의 세그먼트)에 존재하는지 여부를 결정해야 할 수 있으며 해당 주석이 비디오에 추가될 수 있다. 예를 들어 특정 특징이 없는 경우 이 작업은 낭비일 수 있다. 또한, 이 동작은 실행 가능하지 않을 수 있거나 특정 장치, 예를 들어 제한된 처리 용량을 갖는 장치, 제한된 전력 용량을 갖는 장치(예를 들어, 배터리 구동 장치)에서 특히 비쌀 수 있다. 또한, 사용자가 특정 특징을 포함하지 않는 여러 비디오를 포함하는 비디오 라이브러리를 가지고 있는 경우, 이러한 비용이 많이 드는 작업이 여러 비디오 각각에 대해 실행될 수 있다. 또한 비디오의 일부만 특정 특징을 묘사하는 경우 전체 비디오를 분석하면 컴퓨팅 리소스가 낭비될 수 있다.
기계 학습 애플리케이션(630)은 이러한 맥락에서 몇 가지 기술적 이점을 제공할 수 있다. 예를 들어, 훈련된 모델(634)이 비디오에 적용되는 게이팅 모델 인 경우, 모델은 하나 이상의 비디오 주석을 추가하기 위해 비디오를 분석할지 여부에 대한 표시를 제공할 수 있다. 게이팅 모델은 원래의 고해상도 비디오를 분석하는 것보다 더 낮은 계산 비용을 가질 수 있는 비디오 프레임의 저해상도, 샘플링된 서브세트에 적용될 수 있다. 게이팅 모델이 긍정적인 표시를 생성하는 비디오만 분석해야하므로 컴퓨팅 비용과 전력을 절약할 수 있다. 게이팅 모델을 사용하면 컴퓨팅 용량이 낮거나 전력이 제한된 장치에서 비디오 주석을 수행할 수도 있다. 또한, 일부 구현에서, 게이팅 모델로부터의 표시는 하나 이상의 세그먼트에 존재하는 특정 특징의 가능성에 기초하여 분석을 위한 비디오의 하나 이상의 세그먼트의 식별을 포함할 수 있다. 이러한 구현에서, 비디오 주석을 추가하기 위해 비디오의 다른 세그먼트가 분석에서 제외되어 계산 비용이 절약될 수 있다.
일부 구현에서, 게이팅 모델이 제1 모델 및 제2 모델을 포함하는 2 단계 모델로 구현될 때, 제1 모델 및 제2 모델은 서로 독립적으로 훈련될 수 있다. 예를 들어, 제1 모델은 특정 특징이 비디오에 존재할 가능성을 감지하도록 훈련될 수 있다. 이 훈련은 예를 들어 훈련 비디오와 관련된 훈련 라벨을 기반으로 얻은 피드백 데이터를 제공함으로써 제2 모델의 훈련과 독립적으로 수행될 수 있다. 예를 들어, 제2 모델은 주석을 추가하기 위해 비디오를 분석할지 여부에 대한 표시를 생성하도록 훈련될 수 있다. 이 훈련은 다른 가능성 값을 입력으로 제공하고 훈련 라벨을 피드백 데이터로 제공하여 제1 모델의 훈련과 독립적으로 수행할 수 있다. 따라서 각 모델은 게이팅 모델 전체의 성능(예: 정확도, 계산 비용 등)이 그에 따라 향상되면서 다른 모델과 별도로 평가되고 학습될 수 있다.
일부 구현에서, 기계 학습 애플리케이션(630)은 오프라인 방식으로 구현될 수 있다. 이러한 구현에서, 훈련된 모델(634)은 제1 단계에서 생성될 수 있고 기계 학습 애플리케이션(630)의 일부로서 제공될 수 있다. 일부 구현에서, 기계 학습 애플리케이션(630)은 온라인 방식으로 구현될 수 있다. 예를 들어, 이러한 구현에서, 기계 학습 애플리케이션(630)(예: 운영 체제(608), 하나 이상의 다른 애플리케이션(612) 등)을 호출하는 애플리케이션은 기계 학습 애플리케이션(630)에 의해 생성된 추론을 이용할 수 있으며, 예를 들어 사용자에게 추론을 제공하고 시스템 로그(예: 사용자가 허용하는 경우 추론을 기반으로 사용자가 취한 조치 또는 추가 처리를 위한 입력으로 활용되는 경우 추가 처리의 결과)를 생성할 수 있다. 시스템 로그는 주기적으로, 예를 들어, 시간별, 월별, 분기 별 등으로 생성될 수 있으며, 사용자 허가하에 훈련된 모델(634)을 업데이트하기 위해, 예를 들어, 훈련된 모델(634)에 대한 임베딩을 업데이트하기 위해 사용될 수 있다.
일부 구현에서, 기계 학습 애플리케이션(630)은 기계 학습 애플리케이션(630)이 실행되는 장치(600)의 특정 구성에 적응할 수 있는 방식으로 구현될 수 있다. 예를 들어, 기계 학습 애플리케이션(630)은 가용 계산 자원, 예를 들어 프로세서(602)를 활용하는 계산 그래프를 결정할 수 있다. 예를 들어, 기계 학습 애플리케이션(630)이 다중 장치에서 분산 애플리케이션으로 구현되는 경우, 기계 학습 애플리케이션(630)은 계산을 최적화하는 방식으로 개별 장치에서 수행될 계산을 결정할 수 있다. 다른 예에서, 기계 학습 애플리케이션(630)은 프로세서(602)가 특정 개수의 GPU 코어(예를 들어, 1000)를 갖는 GPU를 포함하고 그에 따라(예를 들어, 1000 개의 개별 프로세스 또는 스레드로서) 추론 엔진을 구현한다고 결정할 수 있다.
일부 구현에서, 기계 학습 애플리케이션(630)은 훈련된 모델의 앙상블을 구현할 수 있다. 예를 들어, 훈련된 모델(634)은 동일한 입력 데이터에 각각 적용 가능한 복수의 훈련된 모델을 포함할 수 있다. 이러한 구현에서, 기계 학습 애플리케이션(630)은 예를 들어 이용 가능한 계산 자원, 사전 추론을 통한 성공률 등에 기초하여 특정 훈련된 모델을 선택할 수 있다. 일부 구현에서, 기계 학습 애플리케이션(630)은 복수의 훈련된 모델이 적용되도록 추론 엔진(636)을 실행할 수 있다. 이러한 구현에서, 기계 학습 애플리케이션(630)은, 예를 들어, 각각의 훈련된 모델을 적용함으로써 개별 출력을 점수화하는 투표 기술을 사용하거나 하나 이상의 특정 출력을 선택함으로써 개별 모델을 적용하여 출력을 결합할 수 있다. 또한, 이러한 구현에서 기계 학습 애플리케이션은 개별 훈련된 모델을 적용하기 위한 시간 임계값(예: 0.5ms)을 적용하고 시간 임계값 내에서 사용할 수 있는 개별 출력만을 활용할 수 있다. 시간 임계값 내에 수신되지 않은 출력은 사용되지 않을 수 있다(예: 폐기됨). 예를 들어, 이러한 접근법은 예를 들어, 운영 체제(608) 또는 하나 이상의 애플리케이션(612)에 의해 기계 학습 애플리케이션을 호출하는 동안 지정된 시간 제한이 있을 때 적합할 수 있다.
예를 들어, 게이팅 모델은 학습된 모델의 앙상블로 구현될 수 있으며, 각 모델은 서로 다른 목표 프레임 속도(레이트) 및 관련 컴퓨팅 비용을 갖는다. 예를 들어, 게이팅 모델은 5fps, 10fps 및 20fps의 프레임 속도에 대해 훈련된 모델을 구현할 수 있으며, 여기서 높은 프레임 속도를 가진 모델은 낮은 프레임 속도를 가진 모델보다 더 높은 컴퓨팅 비용과 관련된다. 다른 예에서, 게이팅 모델은 세그먼트 또는 스택, 예를 들어 3 개의 프레임을 포함하는 스택, 5 개의 프레임을 포함하는 스택, 10 개의 프레임을 포함하는 스택 등에서 상이한 수의 프레임으로 훈련된 모델을 구현할 수 있다. 일부 구현에서, 더 많은 수의 프레임을 갖는 스택으로 훈련된 모델은 더 적은 수의 프레임을 갖는 스택을 갖는 모델보다 더 큰 컴퓨팅 비용과 연관될 수 있다. 계산 비용이 낮은 모델이 높은 신뢰도로 표시를 생성하면 앙상블의 다른 모델이 특정 비디오에 적용되지 않거나 병렬로 실행되는 경우 종료될 수 있다.
일부 구현에서, 기계 학습 애플리케이션(630)은 예를 들어, 호출 애플리케이션(운영 체제(608) 또는 하나 이상의 애플리케이션(612))에 의해 지정된 형식에 기초하여 출력을 생성할 수 있다. 일부 구현에서, 호출 애플리케이션은 또 다른 기계 학습 애플리케이션일 수 있다. 예를 들어, 이러한 구성은 생성적 적대 네트워크(generative adversarial networks)에서 사용될 수 있으며, 여기서 호출하는 기계 학습 애플리케이션은 기계 학습 애플리케이션(630)의 출력을 사용하여 훈련되고 그 반대의 경우도 마찬가지이다.
메모리(604) 내의 임의의 소프트웨어는 대안적으로 임의의 다른 적절한 저장 위치 또는 컴퓨터 판독 가능 매체에 저장될 수 있다. 또한, 메모리(604)(및/또는 다른 연결된 저장 장치(들))는 하나 이상의 메시지, 하나 이상의 분류법(taxonomies), 전자 백과 사전, 사전, 시소러스(thesauruses), 지식 기반, 메시지 데이터, 문법, 사용자 선호도, 및/또는 여기에 설명된 특징에 사용되는 기타 명령어 및 데이터를 저장할 수 있다. 메모리(604) 및 임의의 다른 유형의 저장소(스토리지)(자기 디스크, 광 디스크, 자기 테이프 또는 기타 유형의 매체)는 "스토리지" 또는 "스토리지 장치"로 간주될 수 있다.
I/O 인터페이스(606)는 서버 장치(600)를 다른 시스템 및 장치와 인터페이스할 수 있는 기능을 제공할 수 있다.인터페이스된 장치는 장치(600)의 일부로서 포함될 수 있거나 분리되어 장치(600)와 통신할 수 있다. 예를 들어, 네트워크 통신 장치, 저장 장치(예를 들어, 메모리 및/또는 데이터베이스(106)) 및 입력/출력 장치는 I/O 인터페이스(606)를 통해 통신할 수 있다. 일부 구현에서, I/O 인터페이스는 입력 장치(키보드, 포인팅 장치, 터치 스크린, 마이크, 카메라, 스캐너, 센서 등) 및/또는 출력 장치(디스플레이 장치, 스피커 장치, 프린터, 모터 등)와 같은 인터페이스 장치에 연결할 수 있다.
I/O 인터페이스(606)에 연결할 수 있는 인터페이스 장치의 일부 예는 본 명세서에 설명된 바와 같이 출력 애플리케이션의 콘텐츠, 예를 들어 이미지, 비디오 및/또는 사용자 인터페이스를 디스플레이하는 데 사용될 수 있는 하나 이상의 디스플레이 장치(620)를 포함할 수 있다. 디스플레이 장치(620)는 로컬 연결(예를 들어, 디스플레이 버스) 및/또는 네트워크 연결을 통해 장치(600)에 연결될 수 있으며 임의의 적절한 디스플레이 장치일 수 있다. 디스플레이 장치(620)는 LCD, LED 또는 플라즈마 디스플레이 스크린, CRT, 텔레비전, 모니터, 터치 스크린, 3-D 디스플레이 스크린, 또는 다른 시각적 디스플레이 장치와 같은 임의의 적절한 디스플레이 장치를 포함할 수 있다. 예를 들어, 디스플레이 장치(620)는 모바일 장치에 제공된 평면 디스플레이 화면, 고글 또는 헤드셋 장치에 제공된 다중 디스플레이 화면, 또는 컴퓨터 장치용 모니터 화면일 수 있다.
I/O 인터페이스(606)는 다른 입력 및 출력 장치와 인터페이스할 수 있다. 일부 예에는 이미지를 캡처할 수 있는 하나 이상의 카메라가 포함된다. 일부 구현은, 사운드 캡처를 위한 마이크로폰(예: 캡처된 이미지, 음성 명령 등의 일부로), 사운드를 출력하기 위한 오디오 스피커 장치 또는 기타 입력 및 출력 장치를 제공할 수 있다.
카메라(616)는 복수의 프레임을 포함하는 비디오를 캡처할 수 있는 임의의 유형의 카메라일 수 있다. 여기에 사용된 카메라는 임의의 이미지 캡처 장치를 포함할 수 있다. 일부 구현에서, 카메라(616)는 상이한 기능, 예를 들어 전면 대 후면, 상이한 줌 레벨, 캡처된 이미지의 이미지 해상도 등을 갖는 복수의 렌즈를 포함할 수 있다. 일부 구현에서, 장치(디바이스)(600)는 깊이 센서, 가속도계, 위치 센서(예를 들어, GPS), 자이로스코프 등과 같은 하나 이상의 센서를 포함할 수 있다. 일부 구현에서, 하나 이상의 센서는 카메라를 사용하여 캡처된 비디오의 다른 프레임에 대응하는 센서 판독 값을 얻기 위해 카메라와 함께 작동될 수 있다.
설명의 편의를 위해, 도 6은 프로세서(602), 메모리(604), I/O 인터페이스(606), 카메라(616) 및 소프트웨어 블록(608, 612 및 630) 각각에 대한 하나의 블록을 도시한다. 이러한 블록은 하나 이상의 프로세서 또는 처리 회로, 운영 체제, 메모리, I/O 인터페이스, 애플리케이션 및/또는 소프트웨어 모듈을 나타낼 수 있다. 다른 구현에서, 장치(600)는 도시된 모든 컴포넌트를 갖지 않을 수 있고 및/또는 여기에 도시된 것 대신에 또는 이에 추가하여 다른 유형의 요소를 포함하는 다른 요소를 가질 수 있다. 일부 컴포넌트는 본 명세서의 일부 구현에서 설명된 바와 같이 블록 및 동작을 수행하는 것으로 설명되지만, 환경(100), 장치(600), 유사한 시스템, 또는 그러한 시스템과 관련된 임의의 적절한 프로세서 또는 프로세서의 임의의 적절한 컴포넌트 또는 컴포넌트의 조합은 설명된 블록 및 동작을 수행할 수 있다.
여기에 설명된 방법은 컴퓨터에서 실행될 수 있는 컴퓨터 프로그램 명령어 또는 코드에 의해 구현될 수 있다. 예를 들면, 코드는 하나 이상의 디지털 프로세서(예: 마이크로프로세서 또는 기타 처리 회로)에 의해 구현될 수 있으며, 반도체 또는 솔리드 스테이트 메모리, 자기 테이프, 이동식 컴퓨터 디스켓, RAM(Random Access Memory), ROM(read-only memory), 플래시 메모리, RMD(rigid magnetic disk), 광 디스크, 솔리드 스테이트 메모리 드라이브 등을 포함하는, 자기, 광학, 전자기 또는 반도체 저장 매체와 같은, 비-일시적 컴퓨터 판독 가능 매체(예: 저장 매체)를 포함하는 컴퓨터 프로그램 제품에 저장될 수 있다. 프로그램 명령어는 또한 예를 들어 서버(예를 들어, 분산 시스템 및/또는 클라우드 컴퓨팅 시스템)로부터 전달되는 SaaS(Software as a Service)의 형태로 전자 신호에 포함되어 제공될 수 있다. 또는 하나 이상의 방법이 하드웨어(로직 게이트 등) 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 하드웨어의 예는 프로그래밍 가능 프로세서(예: FPGA(Field-Programmable Gate Array), 복합 프로그래밍 가능 논리 장치), 범용 프로세서, 그래픽 프로세서, ASIC(Application Specific Integrated Circuits) 등일 수 있다. 하나 이상의 방법은 시스템에서 실행되는 애플리케이션의 일부 또는 컴포넌트로 수행되거나 다른 애플리케이션 및 운영 체제와 함께 실행되는 애플리케이션이나 소프트웨어로 수행될 수 있다.
설명이 특정 구현에 대해 설명되었지만, 이러한 특정 구현은 단지 예시적이며 제한적이지 않다. 예에서 예시된 개념은 다른 예 및 구현에 적용될 수 있다.
여기에 설명된 특정 구현이 사용자에 대한 개인 정보(예: 사용자 데이터, 사용자의 소셜 네트워크에 대한 정보, 위치에서의 사용자 위치 및 시간, 사용자의 생체 정보, 사용자의 활동 및 인구 통계 정보)를 수집하거나 사용할 수 있는 상황에서, 사용자에게는 정보 수집 여부, 개인 정보 저장 여부, 개인 정보 사용 여부 및 사용자에 대한 정보 수집, 저장 및 사용 방법을 제어할 수 있는 하나 이상의 기회가 제공된다. 즉, 여기에 설명된 시스템 및 방법은 관련 사용자로부터 명시적인 승인을 받으면 사용자 개인 정보를 수집, 저장 및/또는 사용한다.
예를 들어, 사용자는 프로그램 또는 기능이 특정 사용자 또는 프로그램 또는 기능과 관련된 다른 사용자에 대한 사용자 정보를 수집하는지 여부를 제어할 수 있다. 개인 정보를 수집할 각 사용자에게는 해당 사용자와 관련된 정보 수집에 대한 제어를 허용하고 정보 수집 여부 및 정보의 수집 부분에 대한 권한 또는 권한을 제공하는 하나 이상의 옵션이 제공된다. 예를 들어, 사용자는 통신 네트워크를 통해 이러한 제어 옵션을 하나 이상 제공받을 수 있다. 또한 특정 데이터는 저장 또는 사용되기 전에 하나 이상의 방식으로 처리되어 개인 식별 정보가 제거될 수 있다. 예를 들어, 사용자의 신원은 개인 식별 정보가 결정되지 않도록 처리될 수 있다. 다른 예로서, 사용자 장치의 지리적 위치는 사용자의 특정 위치를 결정할 수 없도록 더 큰 지역으로 일반화될 수 있다.
본 개시에 설명된 기능 블록, 동작, 특징, 방법, 장치 및 시스템은 당업자에게 알려진 바와 같이 시스템, 장치 및 기능 블록의 상이한 조합으로 통합되거나 분할될 수 있음을 주목한다. 특정 구현의 루틴을 구현하기 위해 임의의 적절한 프로그래밍 언어 및 프로그래밍 기술이 사용될 수 있다. 절차적 또는 객체 지향과 같은 다양한 프로그래밍 기법이 사용될 수 있다. 루틴은 단일 처리 장치 또는 다중 프로세서에서 실행될 수 있다. 단계, 작업 또는 계산이 특정 순서로 표시될 수 있지만 순서는 다른 특정 구현에서 변경될 수 있다. 일부 구현에서, 본 명세서에서 순차적으로 도시된 복수의 단계 또는 동작이 동시에 수행될 수 있다.
Claims (20)
- 컴퓨터로 구현되는 방법으로서,
복수의 프레임 및 해당 오디오를 포함하는 비디오를 획득하는 단계;
비디오의 프레임 레이트보다 작거나 같은 목표 프레임 레이트에 기초하여 상기 복수의 프레임의 서브세트를 선택하기 위해 샘플링을 수행하는 단계;
상기 복수의 프레임의 서브세트에서 각 프레임에 대한 각각의 오디오 스펙트로그램을 추출하는 단계;
복수의 프레임의 서브세트의 해상도를 감소시키는 단계;
해상도를 감소시킨 후, 비디오를 복수의 세그먼트로 분할하는 단계 -각 세그먼트는 다중 프레임을 포함함-;
기계 학습 기반 게이팅 모델을 해당 오디오 스펙트로그램 및 복수의 프레임의 서브세트에 적용하는 단계 -게이팅 모델을 적용하는 것은 순차적으로 복수의 세그먼트에 대해 반복적으로 수행됨-; 그리고
게이팅 모델의 출력으로서, 하나 이상의 비디오 주석을 추가하도록 상기 비디오를 분석할지 여부의 표시를 획득하는 단계를 포함하며, 상기 표시는 각 반복에서 생성되고, 그리고 특정 반복에서의 상기 표시가 비디오가 분석되어야 하는 것이면, 게이팅 모델의 적용은 복수의 세그먼트 중 하나 이상이 제외되도록 종료되는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 제1항에 있어서, 상기 복수의 세그먼트의 각각의 세그먼트는 상기 복수의 세그먼트의 다른 세그먼트와 중첩되는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
- 제1항에 있어서, 상기 게이팅 모델은, 상기 게이팅 모델에 제공된 입력 비디오에 특정 특징이 존재하는지 여부를 결정하도록 훈련되는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
- 제3항에 있어서, 상기 특정 특징은 사람의 얼굴, 객체의 유형, 움직임의 유형 또는 오디오 유형 중 적어도 하나를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
- 제1항에 있어서, 게이팅 모델을 적용하는 단계는,
특정 특징이 존재할 가능성을 결정하는 제1 모델을 적용하는 단계; 그리고
특정 특징이 존재할 가능성을 입력으로 수신하고, 상기 비디오를 분석할지 여부의 상기 표시를 생성하는 제2 모델을 적용하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 제5항에 있어서, 제1 모델은,
비디오를 분석하도록 훈련된 복수의 계층을 포함하는 제1 컨벌루션 신경망;
오디오를 분석하도록 훈련된 복수의 계층을 포함하는 제2 컨벌루션 신경망; 그리고
복수의 계층을 포함하고, 제1 컨벌루션 신경망 및 제2 컨벌루션 신경망의 출력을 입력으로 수신하고, 특정 특징이 제2 모델에 존재할 가능성을 제공하는 퓨전 네트워크를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 제5항에 있어서, 상기 제2 모델은,
휴리스틱, 순환 신경망 또는 마르코프 체인 분석 기술 중 하나 이상을 사용하여 구현되는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 제5항에 있어서, 방법은,
제2 모델에 추가 입력을 제공하는 단계를 더 포함하며, 추가 입력은,
특정 특징이 존재하는 것으로 검출되는 복수의 프레임의 서브세트의 특정 프레임의 부분 식별,
특정 특징이 복수의 프레임의 서브세트에 나타나는 기간, 또는
조기 종료에 관한 휴리스틱 중 하나 이상을 포함하며,
제2 모델은 상기 표시를 생성하도록 상기 추가 입력을 이용하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 제1항에 있어서, 방법은,
상기 표시가 비디오를 분석하도록 하는 것일 때, 하나 이상의 비디오 주석을 추가하도록 상기 비디오를 프로그래밍 방식으로(programmatically) 분석하는 단계를 더 포함하며, 상기 비디오 주석은 얼굴, 특정 유형의 객체, 특정 유형의 움직임 또는 특정 유형의 오디오 중 하나 이상이 비디오에 존재함을 나타내는 하나 이상의 라벨을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법. - 컴퓨팅 장치로서,
프로세서; 그리고
프로세서에 의해 실행될 때, 프로세서로 하여금 동작들을 수행하게 하는 명령어가 저장된 메모리를 포함하며, 상기 동작들은,
복수의 프레임 및 해당 오디오를 포함하는 비디오를 획득하는 동작;
비디오의 프레임 레이트보다 작거나 같은 목표 프레임 레이트에 기초하여 상기 복수의 프레임의 서브세트를 선택하기 위해 샘플링을 수행하는 동작;
상기 복수의 프레임의 서브세트에서 각 프레임에 대한 각각의 오디오 스펙트로그램을 추출하는 동작;
복수의 프레임의 서브세트의 해상도를 감소시키는 동작;
해상도를 감소시킨 후, 비디오를 복수의 세그먼트로 분할하는 동작 -각 세그먼트는 다중 프레임을 포함함-;
기계 학습 기반 게이팅 모델을 해당 오디오 스펙트로그램 및 복수의 프레임의 서브세트에 적용하는 동작 -게이팅 모델을 적용하는 것은 순차적으로 복수의 세그먼트에 대해 반복적으로 수행됨-; 그리고
게이팅 모델의 출력으로서, 하나 이상의 비디오 주석을 추가하도록 상기 비디오를 분석할지 여부의 표시를 획득하는 동작을 포함하며, 상기 표시는 각 반복에서 생성되고, 그리고 특정 반복에서의 상기 표시가 비디오가 분석되어야 하는 것이면, 게이팅 모델의 적용은 복수의 세그먼트 중 하나 이상이 제외되도록 종료되는 것을 특징으로 하는 컴퓨팅 장치. - 제10항에 있어서, 비디오를 복수의 세그먼트로 분할하는 동작은,
상기 복수의 세그먼트의 각각의 세그먼트가 상기 복수의 세그먼트의 다른 세그먼트와 중첩되도록 수행되는 것을 특징으로 하는 컴퓨팅 장치. - 제10항에 있어서, 상기 게이팅 모델은, 상기 게이팅 모델에 제공된 입력 비디오에 특정 특징이 존재하는지 여부를 결정하도록 훈련되는 것을 특징으로 하는 컴퓨팅 장치.
- 제12항에 있어서, 상기 특정 특징은 사람의 얼굴, 객체의 유형, 움직임의 유형 또는 오디오 유형 중 적어도 하나를 포함하는 것을 특징으로 하는 컴퓨팅 장치.
- 제10항에 있어서, 게이팅 모델을 적용하는 동작은,
특정 특징이 존재할 가능성을 결정하는 제1 모델을 적용하는 동작; 그리고
특정 특징이 존재할 가능성을 입력으로 수신하고, 상기 비디오를 분석할지 여부의 상기 표시를 생성하는 제2 모델을 적용하는 동작을 포함하는 것을 특징으로 하는 컴퓨팅 장치. - 제14항에 있어서, 제1 모델은,
비디오를 분석하도록 훈련된 복수의 계층을 포함하는 제1 컨벌루션 신경망;
오디오를 분석하도록 훈련된 복수의 계층을 포함하는 제2 컨벌루션 신경망; 그리고
복수의 계층을 포함하고, 제1 컨벌루션 신경망 및 제2 컨벌루션 신경망의 출력을 입력으로 수신하고, 특정 특징이 제2 모델에 존재할 가능성을 제공하는 퓨전 네트워크를 포함하는 것을 특징으로 하는 컴퓨팅 장치. - 컴퓨터에 의해 실행될 때 컴퓨터로 하여금 동작들을 수행하도록 하는 명령어가 저장된 비-일시적 컴퓨터 판독 가능 매체로서, 상기 동작들은,
복수의 프레임 및 해당 오디오를 포함하는 비디오를 획득하는 동작;
비디오의 프레임 레이트보다 작거나 같은 목표 프레임 레이트에 기초하여 상기 복수의 프레임의 서브세트를 선택하기 위해 샘플링을 수행하는 동작;
상기 복수의 프레임의 서브세트에서 각 프레임에 대한 각각의 오디오 스펙트로그램을 추출하는 동작;
복수의 프레임의 서브세트의 해상도를 감소시키는 동작;
해상도를 감소시킨 후, 비디오를 복수의 세그먼트로 분할하는 동작 -각 세그먼트는 다중 프레임을 포함함-;
기계 학습 기반 게이팅 모델을 해당 오디오 스펙트로그램 및 복수의 프레임의 서브세트에 적용하는 동작 -게이팅 모델을 적용하는 것은 순차적으로 복수의 세그먼트에 대해 반복적으로 수행됨-; 그리고
게이팅 모델의 출력으로서, 하나 이상의 비디오 주석을 추가하도록 상기 비디오를 분석할지 여부의 표시를 획득하는 동작을 포함하며, 상기 표시는 각 반복에서 생성되고, 그리고 특정 반복에서의 상기 표시가 비디오가 분석되어야 하는 것이면, 게이팅 모델의 적용은 복수의 세그먼트 중 하나 이상이 제외되도록 종료되는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체. - 제16항에 있어서, 비디오를 복수의 세그먼트로 분할하는 동작은,
상기 복수의 세그먼트의 각각의 세그먼트가 상기 복수의 세그먼트의 다른 세그먼트와 중첩되도록 수행되는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체. - 제16항에 있어서,
복수의 세그먼트의 각각의 세그먼트는 복수의 세그먼트의 다른 세그먼트와 중첩되는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체. - 제16항에 있어서, 게이팅 모델을 적용하는 동작은,
특정 특징이 존재할 가능성을 결정하는 제1 모델을 적용하는 동작; 그리고
특정 특징이 존재할 가능성을 입력으로 수신하고, 상기 비디오를 분석할지 여부의 상기 표시를 생성하는 제2 모델을 적용하는 동작을 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체. - 제19항에 있어서, 제1 모델은,
비디오를 분석하도록 훈련된 복수의 계층을 포함하는 제1 컨벌루션 신경망;
오디오를 분석하도록 훈련된 복수의 계층을 포함하는 제2 컨벌루션 신경망; 그리고
복수의 계층을 포함하고, 제1 컨벌루션 신경망 및 제2 컨벌루션 신경망의 출력을 입력으로 수신하고, 특정 특징이 제2 모델에 존재할 가능성을 제공하는 퓨전 네트워크를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/352,605 | 2019-03-13 | ||
US16/352,605 US10984246B2 (en) | 2019-03-13 | 2019-03-13 | Gating model for video analysis |
PCT/US2019/053501 WO2020185256A1 (en) | 2019-03-13 | 2019-09-27 | Gating model for video analysis |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210031756A KR20210031756A (ko) | 2021-03-22 |
KR102297393B1 true KR102297393B1 (ko) | 2021-09-02 |
Family
ID=68296667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217006604A KR102297393B1 (ko) | 2019-03-13 | 2019-09-27 | 비디오 분석을 위한 게이팅 모델 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10984246B2 (ko) |
EP (1) | EP3735777A1 (ko) |
JP (1) | JP7228682B2 (ko) |
KR (1) | KR102297393B1 (ko) |
CN (1) | CN112740709B (ko) |
WO (1) | WO2020185256A1 (ko) |
Families Citing this family (24)
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 | 科大讯飞(北京)有限公司 | 一种数据分类方法、装置、设备及存储介质 |
US11418821B1 (en) * | 2021-02-09 | 2022-08-16 | Gracenote, Inc. | Classifying segments of media content using closed captioning |
US20220253990A1 (en) * | 2021-02-10 | 2022-08-11 | Adobe Inc. | Media enhancement using discriminative and generative models with feedback |
US12067777B2 (en) * | 2021-03-17 | 2024-08-20 | Qualcomm Incorporated | Efficient video processing via dynamic knowledge propagation |
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 |
US20230288786A1 (en) * | 2021-12-15 | 2023-09-14 | SMPL Inc. | Graphic user interface system for improving throughput and privacy in photo booth applications |
CN114419508A (zh) * | 2022-01-19 | 2022-04-29 | 北京百度网讯科技有限公司 | 识别方法、训练方法、装置、设备及存储介质 |
US11804245B2 (en) * | 2022-01-21 | 2023-10-31 | Kyndryl, Inc. | Video data size reduction |
US20230368520A1 (en) * | 2022-05-12 | 2023-11-16 | Samsung Electronics Co., Ltd. | Fast object detection in video via scale separation |
WO2023243754A1 (ko) * | 2022-06-17 | 2023-12-21 | 주식회사 엔씨소프트 | 지정된 모션이 캡쳐된 시점을 추출하는 전자 장치 및 방법 |
JP7487392B1 (ja) | 2023-10-06 | 2024-05-20 | セーフィー株式会社 | システム、方法、およびプログラム |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150169747A1 (en) | 2013-12-12 | 2015-06-18 | Google Inc. | Systems and methods for automatically suggesting media accompaniments based on identified media content |
US20160328384A1 (en) | 2015-05-04 | 2016-11-10 | Sri International | Exploiting multi-modal affect and semantics to assess the persuasiveness of a video |
Family Cites Families (42)
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 | 即時影片註記學習系統及其方法 |
US9620169B1 (en) * | 2013-07-26 | 2017-04-11 | Dreamtek, Inc. | Systems and methods for creating a processed video output |
US20150032449A1 (en) * | 2013-07-26 | 2015-01-29 | Nuance Communications, Inc. | Method and Apparatus for Using Convolutional Neural Networks in Speech Recognition |
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 |
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 |
US20160378863A1 (en) * | 2015-06-24 | 2016-12-29 | Google Inc. | Selecting representative video frames for videos |
US10299017B2 (en) * | 2015-09-14 | 2019-05-21 | Logitech Europe S.A. | Video searching for filtered and tagged motion |
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 |
JP6750121B2 (ja) * | 2016-09-06 | 2020-09-02 | ディープマインド テクノロジーズ リミテッド | 畳み込みニューラルネットワークを使用したシーケンスの処理 |
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 |
EP3563580B1 (en) * | 2016-12-29 | 2021-04-14 | 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 |
CN111095308A (zh) | 2017-05-14 | 2020-05-01 | 数字推理系统有限公司 | 用于快速构建、管理和共享机器学习模型的系统和方法 |
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 | 南京理工大学 | 一种基于迭代学习的弱监督视频行为检测方法及系统 |
-
2019
- 2019-03-13 US US16/352,605 patent/US10984246B2/en active Active
- 2019-09-27 KR KR1020217006604A patent/KR102297393B1/ko active IP Right Grant
- 2019-09-27 JP JP2021514518A patent/JP7228682B2/ja active Active
- 2019-09-27 EP EP19790932.8A patent/EP3735777A1/en active Pending
- 2019-09-27 WO PCT/US2019/053501 patent/WO2020185256A1/en unknown
- 2019-09-27 CN CN201980060091.9A patent/CN112740709B/zh active Active
-
2021
- 2021-03-30 US US17/216,925 patent/US11587319B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150169747A1 (en) | 2013-12-12 | 2015-06-18 | Google Inc. | Systems and methods for automatically suggesting media accompaniments based on identified media content |
US20160328384A1 (en) | 2015-05-04 | 2016-11-10 | Sri International | Exploiting multi-modal affect and semantics to assess the persuasiveness of a video |
Also Published As
Publication number | Publication date |
---|---|
EP3735777A1 (en) | 2020-11-11 |
US11587319B2 (en) | 2023-02-21 |
US10984246B2 (en) | 2021-04-20 |
JP2022523606A (ja) | 2022-04-26 |
US20210216778A1 (en) | 2021-07-15 |
US20200293783A1 (en) | 2020-09-17 |
KR20210031756A (ko) | 2021-03-22 |
CN112740709B (zh) | 2023-08-29 |
WO2020185256A1 (en) | 2020-09-17 |
CN112740709A (zh) | 2021-04-30 |
JP7228682B2 (ja) | 2023-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102297393B1 (ko) | 비디오 분석을 위한 게이팅 모델 | |
US11231838B2 (en) | Image display with selective depiction of motion | |
US11949848B2 (en) | Techniques to capture and edit dynamic depth images | |
US20220053195A1 (en) | Learning-based image compression setting | |
US11641445B2 (en) | Personalized automatic video cropping | |
KR102718174B1 (ko) | 모션을 선택적으로 묘사한 이미지 디스플레이 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |