KR20210118437A - 모션을 선택적으로 묘사한 이미지 디스플레이 - Google Patents

모션을 선택적으로 묘사한 이미지 디스플레이 Download PDF

Info

Publication number
KR20210118437A
KR20210118437A KR1020217026368A KR20217026368A KR20210118437A KR 20210118437 A KR20210118437 A KR 20210118437A KR 1020217026368 A KR1020217026368 A KR 1020217026368A KR 20217026368 A KR20217026368 A KR 20217026368A KR 20210118437 A KR20210118437 A KR 20210118437A
Authority
KR
South Korea
Prior art keywords
motion
image
motion image
score
threshold
Prior art date
Application number
KR1020217026368A
Other languages
English (en)
Inventor
레슬리 이케모토
폴 소든
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20210118437A publication Critical patent/KR20210118437A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/269Analysis of motion using gradient-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • G06T7/251Analysis of motion using feature-based methods, e.g. the tracking of corners or segments involving models
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • H04N5/23251
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30176Document
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30196Human being; Person
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30196Human being; Person
    • G06T2207/30201Face
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30221Sports video; Sports image

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • User Interface Of Digital Computer (AREA)
  • Image Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 명세서에 설명된 구현은 복수의 프레임을 포함하는 모션 이미지를 디스플레이하기 위한 방법, 장치, 및 컴퓨터 판독가능 매체에 관한 것이다. 일부 구현들에서, 컴퓨터로 구현되는 방법은 복수의 프레임들에 기초하여 모션 이미지에 대한 모션 스코어를 결정하는 단계를 포함한다. 방법은 모션 스코어가 디스플레이 임계값을 충족하는지 여부를 결정하는 단계를 더 포함한다. 모션 스코어가 디스플레이 임계값을 충족하는 경우, 방법은 모션 이미지의 복수의 프레임을 연속적으로 디스플레이함으로써 피사체 모션과 함께 모션 이미지가 디스플레이되게 하는 단계를 더 포함한다. 모션 스코어가 디스플레이 임계값을 충족하지 않는 경우, 방법은 모션 이미지의 특정 프레임을 디스플레이하여 피사체 모션 없이 모션 이미지가 디스플레이되도록 하는 단계를 더 포함한다.

Description

모션을 선택적으로 묘사한 이미지 디스플레이
본 명세서는 모션을 선택적으로 묘사한 이미지 디스플레이에 관한 것이다.
사용자는 사진과 같은 정지 이미지를 포함한 이미지를 캡처할 수 있으며, 정지 이미지는 모션 스틸, 모션 사진 또는 라이브 사진이라고도 하는 피사체 모션; 360도 이미지; 비디오 등을 포함한다. 카메라, 스마트폰, 웨어러블 장치, 컴퓨터 등과 같이 이미지를 캡처하거나 보는 데 사용되는 장치는 이미지를 저장하는 용량이 제한될 수 있다. 복수의 프레임을 포함하는 피사체 모션이 포함된 이미지는 사진이나 정지 이미지보다 더 높은 저장 용량이 필요할 수 있다. 이러한 상황에서 사용자는 사용자 장치의 로컬 저장소에 저장할 이미지에 대해 수동 입력을 제공해야 한다.
본 명세서에 제공된 배경 설명은 본 개시내용의 맥락을 일반적으로 제시하기 위한 것이다. 현재 명명된 발명가의 작업은 이 배경 섹션에 설명되어 있는 한도 내에서 출원 당시 선행 기술로 인정되지 않을 수 있는 설명의 양태는 본 개시내용에 대한 선행기술로서 명시적으로도 묵시적으로도 인정되지 않는다.
본 명세서에 설명된 구현은 복수의 프레임을 포함하는 모션 이미지를 디스플레이하기 위한 방법, 장치, 및 컴퓨터 판독가능 매체에 관한 것이다. 일부 구현들에서, 컴퓨터로 구현되는 방법은 복수의 프레임들에 기초하여 모션 이미지에 대한 모션 스코어를 결정하는 단계를 포함한다. 방법은 모션 스코어가 디스플레이 임계값을 충족하는지 여부를 결정하는 단계를 더 포함한다. 모션 스코어가 디스플레이 임계값을 충족하는 경우, 방법은 모션 이미지의 복수의 프레임을 연속적으로 디스플레이함으로써 피사체 모션과 함께 모션 이미지가 디스플레이되게 하는 단계를 더 포함한다. 모션 스코어가 디스플레이 임계값을 충족하지 않는 경우, 방법은 모션 이미지의 특정 프레임을 디스플레이하여 피사체 모션 없이 모션 이미지가 디스플레이되도록 하는 단계를 더 포함한다.
일부 구현은 복수의 프레임을 포함하는 모션 이미지를 디스플레이하기 위한 컴퓨터로 구현되는 방법을 포함한다. 방법은 모션 이미지의 복수의 프레임에 기초하여 모션 이미지에 대한 모션 스코어를 결정하는 단계를 포함할 수 있다. 방법은 모션 스코어가 디스플레이 임계값을 충족하는지 여부를 결정하는 단계를 더 포함할 수 있다. 모션 스코어가 디스플레이 임계값을 충족하는 경우, 방법은 모션 이미지의 복수의 프레임을 연속적으로 디스플레이함으로써 피사체 모션과 함께 모션 이미지가 디스플레이되도록 하는 단계를 더 포함할 수 있다. 모션 스코어가 디스플레이 임계값을 충족하지 않는 경우, 방법은 모션 이미지의 복수의 프레임 중 특정 프레임을 디스플레이함으로써 피사체 모션 없이 모션 이미지가 디스플레이되도록 하는 단계를 더 포함할 수 있다.
일부 구현에서, 모션 이미지는 하나 이상의 다른 이미지를 포함하는 사용자 인터페이스에 디스플레이된다. 이러한 구현에서, 모션 스코어가 디스플레이 임계값을 충족하는 경우, 사용자 인터페이스의 모션 이미지의 크기는 하나 이상의 다른 이미지 중 적어도 하나보다 크다.
일부 구현들에서, 방법은 하나 이상의 다른 이미지들의 각각의 모션 스코어를 결정하는 단계를 포함할 수 있다. 방법은 각각의 모션 스코어에 기초하여 디스플레이 임계값을 선택하는 단계를 더 포함할 수 있다. 상기 선택하는 단계는 모션 이미지의 모션 스코어보다 더 높은 각각의 모션 스코어와 연관된 하나 이상의 다른 이미지의 개수를 결정하는 것을 포함한다. 상기 개수가 임계값 이상인 경우, 상기 선택하는 단계는 상기 모션 이미지의 모션 스코어보다 높은 디스플레이 임계값을 설정하는 단계를 더 포함한다. 상기 개수가 임계값보다 낮은 경우, 선택하는 단계는 모션 이미지의 모션 스코어보다 낮은 디스플레이 임계값을 설정하는 단계를 더 포함한다. 일부 구현들은 모션 이미지를 디스플레이하는 소프트웨어 애플리케이션의 실행 스레드들의 수(개수)에 적어도 부분적으로 기초하여 임계 개수를 결정하는 것을 더 포함한다.
일부 구현들에서, 모션 스코어를 결정하는 단계는 복수의 프레임들의 각각의 픽셀 값들에 기초하여, 모션 이미지의 배경 부분의 안정도 레벨, 모션 이미지의 피사체의 유형, 및 모션 이미지의 피사체의 움직임 레벨을 결정하는 단계; 안정도 레벨, 피사체의 유형, 피사체의 움직임 레벨에 따라 모션 스코어를 계산하는 단계를 포함한다. 일부 구현에서, 피사체의 유형이 풍경 또는 무생물 객체인 경우, 모션 스코어를 계산하는 단계는 모션 스코어를 디스플레이 임계값보다 작은 값으로 설정하는 단계를 포함한다.
일부 구현에서, 모션 스코어를 계산하는 단계는 피사체의 움직임 레벨이 움직임의 임계 레벨을 충족하는지 여부를 결정하는 것을 포함한다. 피사체의 움직임 레벨이 움직임의 임계 레벨을 충족하는 것으로 결정되면, 모션 스코어를 계산하는 단계는 모션 스코어를 디스플레이 임계값을 충족하는 값으로 설정하는 단계를 더 포함한다. 피사체의 움직임 레벨이 움직임의 임계값 레벨을 충족하지 않는 것으로 결정되면, 모션 스코어를 계산하는 단계는 모션 스코어를 디스플레이 임계값을 충족하지 않는 값으로 설정하는 단계를 더 포함한다. 일부 구현에서, 피사체의 제1 유형은 얼굴이고, 피사체의 제2 유형은 바디이며, 얼굴과 연관된 움직임의 제1 임계값 레벨은 바디와 연관된 움직임의 제2 임계값 레벨보다 낮다.
일부 구현들에서, 모션 이미지에 대한 모션 스코어를 결정하는 단계는 모션 이미지의 뷰의 카운트가 시청률(viewership) 임계값을 충족하거나 적어도 하나의 모션 아티팩트가 모션 이미지에 기초하여 생성된 경우 디스플레이 임계값을 충족하는 값으로 모션 스코어를 설정하는 단계를 더 포함한다.
일부 구현에서, 모션 이미지에 대한 모션 스코어를 결정하는 단계는 복수의 레이어로 구성된 복수의 노드를 포함하고 그리고 모션 스코어를 결정하도록 구성된 신경망을 포함하는 훈련된 기계 학습 모델을 적용하는 단계를 포함한다. 이러한 구현에서 상기 모션 이미지는 훈련된 기계 학습 모델에 대한 입력으로서 제공된다.
일부 구현에서, 모션 이미지는 클라이언트 장치에 의해 캡처되고 클라이언트 장치의 휘발성 메모리에 저장된다. 이러한 구현들에서, 방법은 모션 스코어가 저장 임계값을 충족하는지를 결정하는 단계를 더 포함할 수 있다. 모션 스코어가 저장 임계값을 충족하는 경우, 방법은 모션 이미지를 클라이언트 장치의 비휘발성 메모리에 저장하는 단계를 더 포함할 수 있다. 모션 스코어가 저장 임계값을 충족하지 않는 경우, 방법은 모션 이미지를 복수의 프레임 중 특정 프레임만을 포함하고 모션 이미지보다 파일 크기가 작은 정지 이미지로 자동 변경하는 단계를 더 포함할 수 있다. 일부 구현에서, 모션 이미지를 정지 이미지로 변경하는 것은 복수의 프레임의 다른 프레임을 제거하고 정지 이미지를 클라이언트 장치의 비휘발성 메모리에 저장하는 것을 포함한다.
일부 구현은 복수의 프레임을 포함하는 모션 이미지를 디스플레이하는 장치를 포함할 수 있다. 장치는 프로세서 및 명령어가 저장된 비일시적 컴퓨터 판독 가능 매체를 포함할 수 있다. 명령어는 프로세서에 의해 실행될 때 프로세서로 하여금 복수의 프레임에 기초하여 모션 이미지에 대한 모션 스코어를 결정하는 것을 포함할 수 있는 동작을 수행하게 한다. 동작은 모션 스코어가 디스플레이 임계값을 충족하는지 여부를 결정하는 동작을 더 포함할 수 있다. 모션 스코어가 디스플레이 임계값을 충족하는 경우, 동작은 모션 이미지의 복수의 프레임을 연속적으로 디스플레이함으로써 피사체 모션과 함께 모션 이미지가 디스플레이되게 하는 동작을 더 포함할 수 있다. 모션 스코어가 디스플레이 임계값을 충족하지 않는 경우, 동작은 모션 이미지의 복수의 프레임 중 특정 프레임을 디스플레이하여 피사체 모션 없이 모션 이미지가 디스플레이되도록 하는 동작을 더 포함할 수 있다.
일부 구현에서, 모션 이미지에 대한 모션 스코어를 결정하는 동작은 복수의 레이어로 구성된 복수의 노드를 포함하는 신경망을 포함하는 훈련된 기계 학습 모델을 적용하는 동작를 포함하고, 훈련된 기계 학습 모델은 상기 장치에 저장되고 그리고 모션 스코어를 결정하도록 구성된다. 일부 구현에서 상기 모션 이미지는 훈련된 기계 학습 모델에 대한 입력으로서 제공된다.
일부 구현들에서, 동작은 모션 이미지의 뷰들의 카운트가 시청률 임계값을 충족하는지 또는 모션 아티팩트가 모션 이미지로부터 생성되었는지를 결정하는 것을 더 포함할 수 있다. 동작은 상기 결정에 응답하여 훈련된 기계 학습 모델을 업데이트하는 것을 더 포함할 수 있다. 일부 구현에서, 훈련된 기계 학습 모델을 업데이트하는 것은 복수의 노드 중 적어도 하나의 가중치를 조정하는 것을 포함한다. 일부 구현에서, 훈련된 기계 학습 모델을 업데이트하는 것은 복수의 노드 중 적어도 한 쌍의 노드 사이의 연결을 업데이트하는 것을 포함한다.
일부 구현들에서, 동작은 모션 이미지의 배경 부분의 안정도 레벨을 결정하는 동작 및 상기 모션 이미지의 피사체의 유형 및 상기 모션 이미지 내 피사체의 움직임 레벨을 결정하는 동작을 더 포함할 수 있다. 일부 구현에서, 배경 부분의 안정도 레벨, 피사체의 유형 및 피사체의 움직임 레벨은 추가 입력으로서 훈련된 기계 학습 모델에 제공된다.
일부 구현들에서, 동작은 복수의 프레임들 중 특정 프레임만을 디스플레이함으로써 정지 이미지로서 모션 이미지를 디스플레이하기 위한 사용자 입력을 수신하는 동작을 더 포함할 수 있다. 동작은 사용자 입력에 응답하여 훈련된 기계 학습 모델을 업데이트하는 것을 더 포함할 수 있다. 일부 구현에서, 훈련된 기계 학습 모델을 업데이트하는 것은 복수의 노드 중 적어도 하나의 가중치를 조정하는 것을 포함한다. 일부 구현에서, 훈련된 기계 학습 모델을 업데이트하는 것은 복수의 노드 중 적어도 한 쌍의 노드 사이의 연결을 업데이트하는 것을 포함한다.
일부 구현에서, 장치는 모션 이미지를 캡처하는 카메라를 더 포함할 수 있다. 일부 구현에서, 모션 이미지는 장치의 휘발성 메모리에 저장된다. 이러한 구현에서, 동작은 모션 스코어가 저장 임계값을 충족하는지 여부를 결정하는 것을 더 포함할 수 있다. 모션 스코어가 저장 임계값을 충족하는 경우, 동작은 장치의 비휘발성 메모리에 모션 이미지를 저장하는 것을 더 포함할 수 있다. 모션 스코어가 저장 임계값을 충족하지 않는 경우, 동작은 모션 이미지를 복수의 프레임 중 특정 프레임만을 포함하고 모션 이미지보다 작은 파일 크기를 갖는 정지 이미지로 자동 변경하는 것을 더 포함할 수 있다. 일부 구현들에서, 모션 이미지를 정지 이미지로 변경하는 것은 복수의 프레임들의 다른 프레임들을 제거하고 장치의 비휘발성 메모리에 정지 이미지를 저장하는 것을 포함할 수 있다.
일부 구현은 프로세서에 의해 실행될 때 프로세서가 모션 이미지의 복수의 프레임에 기초하여 모션 이미지에 대한 모션 스코어를 결정하는 것을 포함할 수 있는 동작을 수행하게 하는 명령어가 저장된 비일시적 컴퓨터 판독 가능 매체를 포함할 수 있다. 동작은 모션 스코어가 디스플레이 임계값을 충족하는지 여부를 결정하는 것을 더 포함할 수 있다. 모션 스코어가 디스플레이 임계값을 충족하는 경우, 동작은 모션 이미지의 복수의 프레임을 연속적으로 디스플레이함으로써 피사체 모션과 함께 모션 이미지가 디스플레이되게 하는 것을 더 포함할 수 있다. 모션 스코어가 디스플레이 임계값을 충족하지 않는 경우, 동작은 모션 이미지의 복수의 프레임 중 특정 프레임을 디스플레이하여 피사체 모션 없이 모션 이미지가 디스플레이되도록 하는 것을 더 포함할 수 있다.
일부 구현들에서, 비일시적 컴퓨터 판독가능 매체는 프로세서에 의해 실행될 때 프로세서로 하여금 모션 이미지의 배경 부분의 안정도 레벨을 결정하게 하고; 그리고 상기 모션 이미지의 피사체의 유형 및 상기 모션 이미지 내 피사체의 움직임 레벨을 결정하게 한다. 일부 구현에서, 모션 스코어는 안정도의 레벨, 피사체의 유형 및 피사체의 움직임 레벨에 기초한다.
일부 구현들에서, 비일시적 컴퓨터 판독가능 매체는 프로세서에 의해 실행될 때 프로세서로 하여금 하나 이상의 다른 이미지의 각각의 모션 스코어를 결정하게 하고; 그리고 각각의 모션 스코어에 기초하여 디스플레이 임계값을 선택하게 한다. 일부 구현들에서, 디스플레이 임계값을 선택하게 하는 것은 모션 이미지의 모션 스코어보다 높은 각각의 모션 스코어와 연관된 하나 이상의 다른 이미지의 개수를 결정하게 하는 것을 포함할 수 있다. 개수가 임계 개수 이상인 경우, 동작은 디스플레이 임계값을 모션 이미지의 모션 스코어보다 높게 설정하는 것을 더 포함한다. 개수가 임계 개수보다 낮으면, 동작은 디스플레이 임계값을 모션 이미지의 모션 스코어보다 낮게 설정하는 것을 더 포함한다.
도 1은 여기에 설명된 하나 이상의 구현을 위해 사용될 수 있는 예시적인 네트워크 환경의 블록도이다.
도 2는 일부 구현들에 따른, 모션 이미지를 디스플레이 및/또는 저장하기 위한 예시적인 방법을 예시하는 흐름도이다.
도 3은 일부 구현들에 따른, 모션 이미지에 대한 모션 스코어를 결정하기 위한 예시적인 방법을 예시하는 흐름도이다.
도 4는 일부 구현들에 따른, 모션 이미지에 대한 모션 스코어를 결정하기 위한 다른 예시적인 방법을 예시하는 흐름도이다.
도 5는 예시적인 모션 이미지를 도시한다.
도 6은 일부 구현들에 따른, 이미지 그리드를 포함하는 예시적인 사용자 인터페이스의 개략도이다.
도 7은 여기에 설명된 하나 이상의 구현을 위해 사용될 수 있는 예시적인 장치(디바이스)의 블록도이다.
일부 구현은 방법, 장치, 및 복수의 프레임을 포함하는 모션 이미지를 디스플레이하기 위한 명령(명령어)이 있는 컴퓨터 판독 가능 매체를 포함한다. 예를 들어, 모션 이미지는 예를 들어 3초 이하와 같은 짧은 시간 동안 카메라로 캡처된 복수의 프레임을 포함할 수 있다. 모션 이미지는 예를 들어 팬, 줌, 틸트 또는 카메라의 움직임을 필요로 하는 다른 동작 없이 상당한 카메라 움직임(모션) 없이 캡처될 수 있다. 모션 이미지는 피사체와 배경을 묘사할 수 있다. 사용자는 모션 이미지에 다양한 레벨의 관심을 가지고 있으며, 예를 들어, 친구가 미소를 짓고 있는 모습, 애완동물이 점프하는 모습, 춤 동작, 스포츠 활동 등을 묘사하는 모션 이미지는 사용자에게 높은 관심을 끌 수 있다. 다른 예에서, 복수의 프레임 동안 모션이 거의 또는 전혀 묘사되지 않는 모션 이미지, 예를 들어, 사용자 관심의 피사체를 포함하지 않는 모션 이미지, 문서 또는 무생물 객체 등의 이미지는 사용자의 관심이 낮을 수 있다.
기술적인 문제는 모션 이미지를 캡처, 디스플레이 또는 저장할 수 있는 장치가 이러한 동작에서 계산 리소스를 낭비한다는 것이다. 예를 들어 많은 장치에서 모션 이미지를 캡처하기 위한 기본 설정을 제공한다. 이러한 장치는 모션 이미지를 캡처하여 저장할 수 있으며, 이를 위해 장치의 카메라가 작동되고 결과 이미지 데이터가 장치에 저장되어야 한다. 이 경우 모션 이미지로 디스플레이(표시)되는 경우 모션 이미지가 사용자 경험을 향상시키지 않더라도, 장치 리소스는 모션 이미지를 캡처하고 저장하는 데 사용되며, 모션 이미지를 캡처하고 처리하는 데 계산 용량을 낭비하고 모션 이미지를 저장하는 데 저장 용량을 낭비한다. 예를 들어, 표시된 모션 이미지는 보는 사용자가 인식할 수 있는 이미지에 중요한 피사체 모션이 있을 때 고품질 사용자 경험을 제공한다. 또한, 사용자가 이러한 모션 이미지를 볼 때 장치의 프로세서, 메모리 및 디스플레이 화면을 활용하여 복수의 프레임을 로드하고 피사체의 모션을 나타내는 모션 이미지를 표시한다. 사용자는 모션 이미지 캡처, 저장 또는 표시를 선택적으로 비활성화할 수 있지만 이러한 설정은 본질적으로 전역적(global)이며 개별 이미지 특성이나 사용자 기본 설정을 고려하지 않는다.
여기에 설명된 구현은 모션 이미지의 복수의 프레임을 분석함으로써 모션 이미지에 대한 모션 스코어를 자동으로 결정한다. 모션 이미지의 모션 스코어가 디스플레이 임계값을 충족하면 피사체 모션을 나타내는 복수의 프레임이 사용자 인터페이스에 디스플레이된다. 그렇지 않으면 모션 이미지의 특정 프레임이 표시되어 정지 이미지를 제공한다. 이러한 방식의 선택적 표시(디스플레이)는 모션 이미지를 디스플레이하는 데 사용되는 계산 리소스의 사용을 줄일 수 있다.
일부 구현에서, 복수의 이미지를 디스플레이하는 사용자 인터페이스가 제공된다. 이들 구현에서, 모션 스코어는 예를 들어 이용가능한 하드웨어 용량에 기초하여 제한된 수의 이미지만을 모션 이미지로서 디스플레이하도록 평가된다. 예를 들어, 이미지의 수는 사용 가능한 하드웨어에서 실행할 수 있는 사용자 인터페이스를 생성하는 프로그램 또는 소프트웨어 애플리케이션의 스레드 수에 기초할 수 있다. 따라서 사용자 인터페이스의 렌더링은 사용 가능한 하드웨어 리소스에 맞게 조정되어 구현 코드를 수정하거나 모션 이미지를 수정할 필요 없이 다양한 유형의 장치에서 사용자 인터페이스를 표시할 수 있다. 또한, 일부 구현에서, 사용자 인터페이스의 모션 이미지의 크기는 모션 이미지의 모션 스코어에 기초하여 결정된다. 이러한 이미지 크기의 사용자 정의(customization)는 사용하기 쉬운 사용자 인터페이스를 제공할 수 있다. 예를 들어, 다양한 크기의 이미지를 포함하는 이미지 그리드는 특정 이미지를 다른 이미지보다 더 큰 크기로 디스플레이하여 사용자가 이러한 이미지에서 더 높은 레벨의 세부사항을 인지할 수 있도록 한다(예를 들어, 사용 가능한 디스플레이 화면 공간의 더 많은 부분이 그러한 이미지에 사용되기 때문에). 이러한 디스플레이를 통해 사용자는 이미지를 더 작은 크기로 표시할 때보다 더 확실하게 이미지를 편집할지, 전체 화면으로 이미지를 볼지, 이미지 기반 생성을 생성할지, 이미지를 공유할지 여부를 결정할 수 있다. 특정 이미지를 선택적으로 더 큰 크기로 표시하면 충분한 이미지 세부 정보를 표시하면서 화면에 원하는 수의 이미지를 표시할 수 있다.
또한, 일부 구현에서, 모션 스코어는 저장 임계값과 비교되고, 모션 이미지는 저장 전에 정지 이미지(단일 프레임을 포함하는)로 변경된다. 이러한 선택적 변환은 모션 이미지 저장에 필요한 저장 용량을 낮출 수 있다. 사용자 이미지가 서버에 업로드될 때 선택적 변환은 이미지를 서버로 보내기 위한 전송 비용을 줄이고 모션 이미지를 저장하기 위한 서버 저장 용량의 활용을 줄일 수 있다.
또 다른 구현에서, 훈련된 기계 학습(ML) 모델은 모션 스코어를 결정하기 위해 활용된다. 훈련된 ML 모델은 모델이 이러한 목적에 최적화되어 있고 FPGA, ASIC, GPU 또는 기계 학습 프로세서와 같은 특수 목적 하드웨어에서 구현될 수 있기 때문에 모션 스코어를 결정하는 계산 효율적인 메커니즘을 제공할 수 있다.
훈련된 ML 모델이 활용되는 일부 구현에서, 사용자가 허용하는 경우, 모델은 사용자 상호작용(예: 모션 이미지 보기, 모션 아티팩트 생성, 모션 이미지에서 모션 컴포넌트(프레임) 폐기 등)을 기반으로 업데이트된다. 모델에 의해 결정된 모션 스코어는 사용자에 따라 다르기 때문에 모델에 대한 이러한 업데이트는 모션 이미지의 표시(디스플레이) 및 저장을 더욱 개선할 수 있다. 더욱이, 사용자가 허용할 때, 그러한 모델 업데이트는 복수의 사용자로부터 수신될 수 있고, 모션 스코어의 결정을 개선하기 위해 예를 들어 연합 학습(federated learning) 접근법에서 ML 모델을 추가로 훈련하는 데 사용될 수 있다.
모션 스코어가 이미지 캡처 시에 그리고 비휘발성 메모리에 저장되기 전에 결정되는 일부 구현에서, 설명된 기술은 사용자가 관심을 가질 가능성이 없는 모션 이미지 프레임을 폐기함으로써 비휘발성 메모리의 사용을 줄일 수 있다. 일부 구현에서, 여기에 설명된 기술은 사용자가 모션을 선택적으로 폐기할 수 있도록 하는 사용자 인터페이스를 제공한다. 이는 모션 이미지 캡처의 기본 모드와 비교하여 리소스 사용을 줄인다.
도 1 및 다른 도면은 유사한 요소를 식별하기 위해 유사한 참조 번호를 사용한다. "156a"와 같이 참조 번호 뒤의 문자는 텍스트가 특정 참조 번호를 갖는 요소를 구체적으로 참조함을 나타낸다. "156"과 같이 다음 문자가 없는 텍스트의 참조 번호는 해당 참조 번호를 포함하는 도면의 요소 중 일부 또는 전부를 나타낸다(예: 텍스트에서 "156"은 도면에서 참조 번호 "156a" 및/또는 "156b"를 나타냄).
도 1은 여기에 설명된 일부 구현들에서 사용될 수 있는 예시적인 네트워크 환경(100)의 블록도를 도시한다. 일부 구현에서, 네트워크 환경(100)은 하나 이상의 서버 시스템, 예를 들어 도 1의 예에서 서버 시스템(102)을 포함한다. 서버 시스템은 예를 들어 네트워크(130)와 통신할 수 있다. 서버 시스템(102)은 서버 장치(104) 및 데이터베이스(106) 또는 다른 저장 장치를 포함할 수 있다. 데이터베이스(106)는 하나 이상의 이미지 및 하나 이상의 이미지와 연관된 메타데이터를 저장할 수 있다. 일부 구현들에서, 서버 장치(104)는 이미지 관리 애플리케이션(156b)을 제공할 수 있다. 이미지 관리 애플리케이션(156b)은 데이터베이스(106)에 저장된 이미지에 액세스할 수 있다.
네트워크 환경(100)은 또한 네트워크(130)를 통해 서로 및/또는 서버 시스템(102) 및/또는 제2 서버 시스템(140)과 통신할 수 있는 하나 이상의 클라이언트 장치, 예를 들어 클라이언트 장치(120, 122, 124, 126)를 포함할 수 있다. 네트워크(130)는 인터넷, 근거리 통신망(LAN), 무선 네트워크, 스위치 또는 허브 연결 등 중 하나 이상을 포함하는 임의의 유형의 통신 네트워크일 수 있다. 일부 구현에서, 네트워크(130)는 예를 들어, 피어-투-피어 무선 프로토콜(예를 들어, 블루투스®, Wi-Fi 다이렉트 등) 등을 사용하여 장치들(디바이스들) 간의 피어-투-피어(peer-to-peer) 통신을 포함할 수 있다. 2개의 클라이언트 장치(120, 122) 사이의 피어-투-피어 통신의 일례가 화살표(132)로 도시되어 있다.
설명의 편의를 위해, 도 1은 서버 시스템(102), 서버 장치(104) 및 데이터베이스(106)에 대한 하나의 블록을 보여주고 클라이언트 장치(120, 122, 124, 126)에 대한 네 개의 블록을 보여준다. 서버 블록(102)은 복수의 시스템, 서버 장치 및 네트워크 데이터베이스를 나타낼 수 있고, 블록은 도시된 것과 다른 구성으로 제공될 수 있다. 예를 들어, 서버 시스템(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) 또는 제2 서버 시스템(140)에서 실행되는 애플리케이션을 통해, 및/또는 네트워크 서비스, 예를 들어, 소셜 네트워크 서비스 또는 서버 시스템(102)에서 구현된 네트워크 서비스의 기타 유형을 통해 서로 상호작용할 수 있다. 예를 들어, 각각의 클라이언트 장치(120, 122, 124, 126)는 하나 이상의 서버 시스템(예를 들어, 시스템(102), 제2 서버 시스템(140))과 데이터를 주고받을 수 있다.
일부 구현들에서, 서버 시스템(102)은 각각의 클라이언트 장치가 서버 시스템(102) 및/또는 네트워크 서비스에 업로드된 통신 콘텐츠 또는 공유 콘텐츠를 수신할 수 있도록 적절한 데이터를 클라이언트 장치들에 제공할 수 있다. 일부 예에서, 사용자(U1-U4)는 오디오 또는 비디오 회의, 오디오, 비디오 또는 텍스트 채팅, 또는 다른 통신 모드 또는 애플리케이션을 통해 상호작용할 수 있다. 서버 시스템(102)에 의해 구현된 네트워크 서비스는 사용자가 다양한 통신을 수행하고, 링크 및 연결을 형성하고, 이미지, 텍스트, 비디오, 오디오 및 기타 유형의 콘텐츠와 같은 공유 콘텐츠를 업로드 및 게시하고, 기타 기능을 수행할 수 있는 시스템을 포함할 수 있다. 예를 들어, 클라이언트 장치는 클라이언트 장치로 전송되거나 스트리밍되고 서버 및/또는 네트워크 서비스를 통해 (또는 다른 클라이언트 장치에서 직접) 다른 클라이언트 장치에서 발생하거나 서버 시스템 및/또는 네트워크 서비스에서 발생하는 콘텐츠 게시물과 같은 수신된 데이터를 표시할 수 있다. 일부 구현들에서, 클라이언트 장치들은 예를 들어 위에서 설명된 바와 같이 클라이언트 장치들 사이의 피어-투-피어 통신을 사용하여 서로 직접 통신할 수 있다. 일부 구현에서, "사용자"는 시스템 또는 네트워크와 인터페이스하는 사람뿐만 아니라 하나 이상의 프로그램 또는 가상 엔티티를 포함할 수 있다.
일부 구현들에서, 클라이언트 장치들(120, 122, 124, 및/또는 126) 중 임의의 것은 하나 이상의 애플리케이션을 제공할 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 클라이언트 장치(120)는 카메라 애플리케이션(152) 및 이미지 관리 애플리케이션(156a)을 제공할 수 있다. 클라이언트 장치(122-126)도 유사한 애플리케이션을 제공할 수 있다. 예를 들어, 카메라 애플리케이션(152)은 각자의 클라이언트 장치의 사용자(예를 들어, 사용자(U1-U4)에 그들의 각자의 사용자 장치의 카메라를 사용하여 이미지를 캡처하는 능력을 제공할 수 있음)를 제공할 수 있다. 예를 들어, 카메라 애플리케이션(152)은 클라이언트 장치(120) 상에서 실행되는 소프트웨어 애플리케이션일 수 있다.
일부 구현에서, 카메라 애플리케이션(152)은 사용자 인터페이스를 제공할 수 있다. 예를 들어, 사용자 인터페이스는 클라이언트 장치(120)의 사용자가 이미지 캡처 모드, 예를 들어 정지 이미지(또는 사진) 모드, 버스트 모드(예: 짧은 시간에 연속적인 수의 이미지 캡처), 모션 이미지 모드, 비디오 모드, HDR(high dynamic range) 모드 등을 선택하는 것을 가능하게 할 수 있다. 예를 들어, 모션 이미지 모드는 클라이언트 장치(120)의 카메라의 활성화 시 정지 이미지의 캡처 및 카메라의 활성화 이전 및 이후의 복수의 프레임을 포함하는 짧은 클립의 캡처에 대응할 수 있다. 예를 들어, 짧은 클립은 1~3초 길이일 수 있다.
일부 구현에서, 모션 이미지는 이미지 데이터 부분의 정지 이미지 및 제2 부분(예를 들어, 이미지 메타데이터 부분)의 복수의 프레임을 포함하는 단일 이미지 파일로서 클라이언트 장치(120)의 휘발성 메모리에서 획득될 수 있다. 일부 구현에서, 모션 이미지는 2개의 개별 이미지 파일로서 클라이언트 장치(120)의 휘발성 메모리에서 획득될 수 있는데, 제1 파일은 정지 이미지를 포함하고 제2 파일은 짧은 클립을 포함한다. 일부 구현에서, 제1 파일 및/또는 제2 파일은 다른 파일이 동시에 캡처되었음을 나타내는 이미지 메타데이터를 포함할 수 있다. 일부 구현에서, 카메라 애플리케이션(152)은 도 2 내지 도 4를 참조하여 본 명세서에 설명된 방법을 구현할 수 있다. 일부 구현들에서, 이미지 관리 애플리케이션(156a) 및/또는 이미지 관리 애플리케이션(156b)은 도 2 내지 도 4를 참조하여 본 명세서에 설명된 방법들을 구현할 수 있다.
카메라 애플리케이션(152) 및 이미지 관리 애플리케이션(156a)은 클라이언트 장치(120)의 하드웨어 및/또는 소프트웨어를 사용하여 구현될 수 있다. 상이한 구현들에서, 이미지 관리 애플리케이션(156a)은 예를 들어 클라이언트 장치들(120-124) 중 임의의 것에서 실행되는 독립형 애플리케이션일 수 있거나, 서버 시스템(102)에 제공된 이미지 관리 애플리케이션(156b)과 함께 작동할 수 있다. 사용자 허가로, 이미지 관리 애플리케이션(156)은 (예를 들어, 서버 시스템(102)의 데이터베이스(106)로) 이미지 백업, 이미지 향상, 이미지 안정화, 이미지 내 하나 이상의 객체(예: 얼굴, 바디(body), 무생물 객체 등) 인식 등과 같은 하나 이상의 자동 기능을 수행할 수 있다. 이미지 안정화는 가속도계, 자이로스코프, 또는 클라이언트 장치(120)의 다른 센서로부터의 입력에 기초하여, 및/또는 모션 이미지 또는 비디오의 복수의 프레임의 비교에 기초하여 수행될 수 있다.
이미지 관리 애플리케이션(156)은 사용자 인터페이스에 이미지를 디스플레이하고(예: 단일 이미지를 포함하는 단일 보기에서, 여러 이미지를 포함하는 격자 보기에서 등), 이미지를 편집하고(예: 이미지 설정 조정, 필터 적용, 이미지 초점 변경, 모션 이미지 또는 비디오의 하나 이상의 프레임 제거), (예: 클라이언트 장치(122-126)의) 다른 사용자와 이미지를 공유하고, 이미지를 보관하고(예: 기본 사용자 인터페이스에 나타나지 않도록 이미지 저장), 이미지 기반 창작물을 생성하ㄴ는예: 콜라주, 사진첩, 애니메이션, 스토리, 비디오 루프 등과 같은 모션 기반 인공물) 것과 같은 이미지 관리 기능을 제공할 수 있다.
클라이언트 장치(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)의 마지막 수행 이후 만료된 미리 결정된 기간, 및/또는 방법에서 읽은 설정에서 지정할 수 있는 하나 이상의 다른 조건 발생). 일부 구현에서, 이러한 조건은 사용자의 저장된 사용자 정의 기본 설정(custom preferences)에서 사용자에 의해 지정될 수 있다.
다양한 구현에서, 클라이언트 장치(120)는 독립형 카메라, 카메라를 포함하는 다른 장치, 예를 들어 스마트폰, 태블릿, 컴퓨터, 스마트워치, 헤드셋 등과 같은 웨어러블 장치, 또는 다른 장치에 의해 캡처된 이미지를 수신할 수 있는 다른 클라이언트 장치일 수 있다. 일부 구현에서, 클라이언트 장치(120)는 캡처 전용 장치, 예를 들어 스크린을 포함하지 않는 카메라일 수 있다. 일부 구현에서, 클라이언트 장치(120)는 보기 전용 장치, 예를 들어 이미지가 표시될 수 있는 화면을 포함하지만 카메라 또는 이미지를 캡처하는 다른 기능이 없는 장치일 수 있다. 일부 구현들에서, 클라이언트 장치(120)는 이미지 캡처 및 이미지 보기 기능 둘 다를 가질 수 있다.
일부 구현에서, 클라이언트 장치(120)는 이미지를 캡처하기 위한 단일 카메라를 포함할 수 있다. 일부 구현들에서, 클라이언트 장치(120)는 복수의 카메라들(또는 렌즈들)을 포함할 수 있다. 예를 들어, 스마트폰 또는 다른 장치는 하나 이상의 전면 카메라(기기의 화면과 동일한 면에 있음) 및/또는 하나 이상의 후면 카메라를 포함할 수 있다. 일부 구현에서, 하나 이상의 전면 또는 후면 카메라는 이미지 캡처 동안 함께 작동할 수 있다. 예를 들어, 제1 카메라는 깊이 정보를 캡처할 수 있고 제2 카메라는 이미지 픽셀을 캡처할 수 있다. 일부 구현에서, 상이한 유형의 이미지 캡처를 위해 상이한 카메라가, 예를 들어 상이한 줌 레벨(예를 들어, 망원 렌즈, 광각 렌즈 등)로 사용될 수 있다. 일부 구현들에서, 클라이언트 장치(120)는 360도 이미지를 캡처하도록 구성될 수 있다. 일부 구현에서, 카메라 또는 렌즈는 단일 이미지 센서(예를 들어, CCD 또는 CMOS 센서) 또는 복수의 센서를 사용하여 이미지를 캡처할 수 있다. 일부 구현에서, 다른 센서, 예를 들어 깊이 센서 등이 이미지 캡처 시에 하나 이상의 카메라와 함께 사용될 수 있다.
일부 구현에서, 클라이언트 장치(120)는 하나 이상의 카메라(또는 렌즈)로부터 이미지 센서에서 캡처된 원시 이미지 데이터와 다른 센서(예를 들어, 가속도계, 자이로스코프, 위치 센서, 깊이 센서 등)로부터 획득된 다른 데이터를 결합하여 단일 이미지를 형성할 수 있다. 예를 들어, 클라이언트 장치(120)가 복수의 이미지 프레임을 캡처하는 모드에서 동작할 때 (예를 들어, 버스트 모드 또는 모션 이미지로 여러 프레임을 연속적으로 빠르게 캡처하는 모션 모드, 비디오를 캡처하는 비디오 모드, 노출이 다른 여러 이미지를 하나의 합성 이미지로 결합하는 하이 다이내믹 레인지 모드, 등.), 센서로부터 획득된 데이터는 캡처된 이미지를 안정화하기 위해 이용될 수 있다. 예를 들어, 가속도계 또는 자이로스코프 데이터는 복수의 캡처된 프레임을 정렬함으로써, 예를 들어 이미지 캡처 동안 흔들리는 캡처 사용자의 손으로 인한 카메라 모션을 보상하기 위해 사용될 수 있다. 일부 구현에서, 캡처된 이미지는 예를 들어 감소된 배경 모션으로 안정화된 버전을 생성하기 위해 크롭(crop)될 수 있다.
클라이언트 장치(120)는 사용자가 상이한 모드, 예를 들어 단일 프레임을 캡처하기 위한 정지 이미지(또는 사진) 모드, 복수의 프레임을 캡처하기 위한 버스트 또는 모션 이미지 모드, 비디오를 캡처하기 위한 비디오 모드에서 이미지를 캡처할 수 있게 할 수 있다. 일부 구현들에서, 방법(200)은 카메라가 복수의 프레임들을 구성할 때 이미지 캡처 시에 수행될 수 있다.
클라이언트 장치(120)는 사용자가 이미지, 예를 들어 클라이언트 장치(120)에 의해 캡처된 이미지 또는 사용자와 연관된 다른 이미지를 상이한 사용자 인터페이스에서 볼 수 있게 할 수 있다. 예를 들어, 사용자가 한 번에 하나의 이미지를 볼 수 있도록 하는 원업(one-up) 모드 또는 슬라이드쇼 모드가 제공될 수 있다. 다른 예에서, 사용자가 예를 들어, 이미지 격자로서 복수의 이미지를 동시에 볼 수 있게 하는 갤러리 모드가 제공될 수 있다.
일부 구현들에서, 클라이언트 장치(120)는 방법(200)을 수행할 수 있다. 다른 예에서, 클라이언트 장치 또는 서버 장치는 방법(200)을 수행할 수 있다. 일부 구현은 사용자 입력에 기초하여 방법(200)을 개시할 수 있다. 사용자(예를 들어, 오퍼레이터 또는 최종 사용자)는 예를 들어, 디스플레이된 사용자 인터페이스, 예를 들어, 애플리케이션 사용자 인터페이스 또는 다른 사용자 인터페이스로부터 방법(200)의 개시를 선택했을 수 있다. 일부 구현에서, 방법(200)은 서버 장치에 의해 구현될 수 있다.
일부 구현들에서, 방법(200)은, 예를 들어, 클라이언트 장치의 사용자가 모션 이미지를 캡처하기 위해 카메라를 작동할 때, 클라이언트 장치의 사용자가 클라이언트 장치 상에 또는 서버 장치 상에 저장된 이미지들을 볼 때 등에 자동으로 개시될 수 있다.
본 명세서에서 언급되는 이미지는 하나 이상의 픽셀 값(예를 들어, 색상 값, 밝기 값 등)을 갖는 픽셀을 갖는 디지털 이미지를 포함할 수 있다. 이미지는 정지 이미지(예: 정지 사진, 단일 프레임의 이미지 등) 또는 모션 이미지(예: 애니메이션, 애니메이션 GIF, 이미지의 일부는 모션을 포함하고 다른 부분은 정적인 시네마그래프와 같은 복수의 프레임을 포함하는 이미지, 오디오가 있거나 없는 복수의 프레임을 포함하는 비디오)일 수 있다. 본 명세서에서 언급되는 텍스트는 영숫자 문자, 이모티콘, 기호 또는 기타 문자를 포함할 수 있다.
블록(202)에서, 방법(200)의 구현에서 사용자 데이터를 사용하기 위해 사용자 동의(예를 들어, 사용자 허가)가 획득되었는지 여부가 검사된다. 예를 들어, 사용자 데이터는 클라이언트 장치를 사용하여 사용자가 캡처한 이미지, 예를 들어 클라이언트 장치를 사용하여 사용자가 저장하거나 액세스한 이미지, 이미지 메타데이터, 메시징 애플리케이션 사용과 연관된 사용자 데이터, 사용자 선호도, 사용자 생체 정보, 사용자 특성(예: 신원, 이름, 나이, 성별, 직업 등), 사용자의 소셜 네트워크 및 연락처에 대한 정보, 사용자가 생성하거나 제출한 소셜 및 기타 유형의 작업 및 활동, 콘텐츠, 등급 및 의견, 사용자의 현재 위치, 사용자 기록 데이터, 사용자가 생성, 수신 및/또는 액세스한 이미지, 조회된 이미지, 사용자가 보거나 공유한 이미지 등을 포함할 수 있다. 여기에 설명된 방법의 하나 이상의 블록은 일부 구현에서 이러한 사용자 데이터를 사용할 수 있다.
사용자 데이터가 방법(200)에서 사용될 수 있는 관련 사용자로부터 사용자 동의가 획득된 경우, 블록(204)에서, 여기에 있는 방법의 블록이 해당 블록에 대해 설명된 사용자 데이터의 가능한 사용으로 구현될 수 있다고 결정되고 방법은 블록(212)으로 계속된다. 사용자 동의가 획득되지 않은 경우 블록(206)에서 사용자 데이터를 사용하지 않고 블록이 구현되어야 하는 것으로 결정되고 방법은 블록(212)로 계속된다. 일부 구현에서 사용자 동의를 얻지 못한 경우 사용자 데이터를 사용하지 않고 합성 데이터 및/또는 일반 또는 공개적으로 액세스할 수 있고 공개적으로 사용 가능한 데이터를 사용하여 블록이 구현된다. 일부 구현들에서, 사용자 동의가 획득되지 않았다면, 방법(200)은 수행되지 않는다.
블록(212)에서, 모션 이미지에 대한 모션 스코어가 결정된다. 일부 구현들에서, 방법(200)은 카메라에 의한 새로운 모션 이미지의 캡처 시에 수행될 수 있다. 이들 구현에서, 모션 이미지에 대한 모션 스코어의 결정은 이미지 데이터(예를 들어, 모션 이미지의 복수의 프레임의 픽셀 값) 및 이미지 메타데이터에 기초하여 수행될 수 있다. 일부 구현들에서, 방법(200)은 복수의 프레임들을 포함하고 모션 스코어가 결정될 저장된 모션 이미지(예를 들어, 클라이언트 장치(120)의 비휘발성 메모리에 저장됨)에 대한 모션 스코어를 결정하기 위해 수행될 수 있다. 예를 들어, 모션 스코어의 결정은 모션 이미지와 연관된 (예를 들어, 이미지 데이터베이스에 저장된) 이미지 메타데이터 또는 다른 데이터가 모션 스코어를 포함하지 않거나 경과한 모션 스코어를 포함하는 경우 수행될 수 있다. 예를 들어, 모션 이미지의 모션 스코어는 예를 들어 모션 이미지가 수정될 때, 애니메이션 GIF, 비디오, 콜라주 또는 동영상을 기반으로 한 기타 창작물 생성시, (예를 들어, 클라이언트 장치(120)의) 사용자가 모션 이미지를 캡처하거나 마지막으로 본 후 일정 기간이 지나면 소멸할 수 있다.
모션 이미지의 복수의 프레임에 기초한 모션 스코어의 결정은, 예를 들어, 도 3을 참조하여 설명된 방법(300) 또는 도 4를 참조하여 설명된 방법(400)을 사용하여 수행될 수 있다. 모션 이미지가 유효한 모션 스코어(예: 이전에 계산되어 이미지 메타데이터 또는 이미지 데이터베이스에 저장된)와 연관되는 경우, 모션 스코어를 결정하는 단계는 모션 스코어를 검색하기 위해 이미지 메타데이터 또는 이미지 데이터베이스에 액세스하는 단계를 포함한다. 블록(212) 다음에 블록(214)이 올 수 있다.
블록(214)에서, 모션 이미지에 대한 모션 스코어가 디스플레이 임계값을 충족하는지가 결정된다. 사용자 권한으로, 디스플레이 임계값의 값은 사용자 데이터, 예를 들어 모션 이미지를 묘사하는 사용자 인터페이스의 사용자에 의한 이전 보기, 피사체 모션을 포함하거나 제외하기 위한 이미지 캡처/보기 모드의 수동 토글 등에 기초하여 결정될 수 있다. 일부 구현에서, 예를 들어, 모션 이미지가 하나 이상의 다른 이미지를 포함하는 사용자 인터페이스의 일부로 표시(디스플레이)될 때, 디스플레이 임계값은 한 번에 표시할 모션 이미지의 목표 개수를 기준으로 설정하여 모션 이미지의 목표 개수 이하의 모션 이미지가 동작을 켠 상태로(예를 들어, 복수의 프레임을 순차적으로 디스플레이함으로써) 디스플레이되도록 할 수 있다. 일부 구현에서, 예를 들어, 모션 이미지가 단일 이미지 모드(예: 단일 이미지 모드 또는 슬라이드쇼의 일부로 표시됨)로 표시되는 경우, 디스플레이 임계값은 순차적으로 표시될 때 모션 이미지의 복수의 프레임 내 피사체 모션의 흥미도(interestingness)에 기초하여 결정되는 값으로 설정될 수 있다. 예를 들어, 피사체 모션의 흥미도는 모션 이미지가 원업 또는 슬라이드쇼 모드로 표시되는 모션으로 사용자(또는 다른 사용자)가 본 다른 모션 이미지의 피사체 모션에 대한 피사체 모션의 유사도에 기초할 수 있다.
일부 구현에서, 예를 들어, 모션 이미지가 하나 이상의 다른 이미지를 포함하는 사용자 인터페이스의 일부로서(예를 들어, 이미지 그리드의 일부로서) 디스플레이될 때, 디스플레이 임계값은 하나 이상의 다른 이미지의 모션 스코어에 기초한 값으로 설정될 수 있다. 예를 들어, 하나 이상의 다른 이미지는 다른 모션 이미지를 포함할 수 있다. 적어도 하나 또는 다른 이미지의 임계값 개수가 모션 이미지의 모션 스코어보다 높은 모션 스코어를 갖는 경우, 디스플레이 임계값은 모션 이미지의 모션 스코어가 디스플레이 임계값을 충족하지 않는 값으로 설정될 수 있다. 예를 들어, 디스플레이 임계값은 모션 이미지의 모션 스코어보다 높은 값으로 설정될 수 있다. 모션 이미지보다 모션 스코어가 높은 다른 이미지의 수가 임계값보다 적은 경우, 디스플레이 임계값은 모션 이미지의 모션 스코어가 디스플레이 임계값을 충족하도록 하는 값으로 설정될 수 있다. 예를 들어, 디스플레이 임계값은 모션 이미지의 모션 스코어보다 낮은 값으로 설정될 수 있다.
일부 구현에서, 임계값 수(임계값 개수)는 방법(200)을 수행하는 장치, 예를 들어 클라이언트 장치(120)의 하드웨어 능력에 기초할 수 있다. 예를 들어, 방법(200)은 모션 이미지를 디스플레이하기 위해 소프트웨어 애플리케이션에 의해 수행(또는 호출)될 수 있다. 소프트웨어 애플리케이션은 다중 스레드 방식으로 실행될 수 있으며, 예를 들어 소프트웨어 애플리케이션의 하나 이상의 실행 스레드가 클라이언트 장치(120)의 하드웨어 프로세서에서 실행된다. 일부 구현들에서, 각각의 개별 실행 스레드는 그리드로 디스플레이될 대응하는 모션 이미지를 처리하고 디스플레이를 위해 복수의 프레임들을 렌더링할 수 있다. 이러한 구현에서, 임계값 수는 실행 스레드의 수에 기초할 수 있으며, 예를 들어 임계값 수는 실행 스레드의 수보다 작거나 같을 수 있다.
일부 구현들에서, 실행 스레드들의 수는 하드웨어 능력들, 예를 들어 클라이언트 장치(120)의 하드웨어 프로세서의 프로세싱 코어들의 수, 클라이언트 장치(120)의 이용가능한 메모리 등에 기초할 수 있다. 예를 들어, 각각의 개별 실행 스레드가 해당 처리 코어에서 실행될 때 실행 스레드의 수는 사용 가능한 처리 코어의 수를 초과할 수 없다. 사용 가능한 처리 코어의 수는 사용 가능한 전력(예: 배터리), 운영 체제 설정(예: 애플리케이션당 실행 스레드 수를 제한하는 구성 설정) 등에 따라 달라질 수 있다.
하드웨어 능력에 기초한 임계값 개수의 선택은 사용자 인터페이스, 예를 들어, 이미지 그리드에서 디스플레이를 위해 렌더링된 모션 이미지의 수가 하드웨어에 의해 지원되는 것을 보장할 수 있다. 예를 들어, 임계값은 이미지 그리드가 복수의 프레임을 포함하는 하나의 이미지만을 포함하도록 1로 설정될 수 있다(예: 이미지 그리드에서 이미지를 렌더링하는 데 단일 처리 코어만 사용할 수 있는 경우). 이 예에서, 모션 그리드의 다른 모션 이미지는 디스플레이를 위해 다른 모션 이미지 각각의 단일 프레임을 렌더링함으로써 정지 이미지로 디스플레이된다. 다른 예에서, 모션 그리드에서 이미지를 렌더링하는 데 4개의 코어가 사용 가능한 경우 임계값 수는 4로 설정될 수 있다. 이러한 방식으로 임계값 수를 설정하면 이미지 그리드가 지연 없이 그리고 사용 가능한 하드웨어 기능을 사용하여 렌더링된다는 기술적 이점이 있다.
모션 이미지의 모션 스코어가 디스플레이 임계값을 충족하는 경우, 블록(214) 다음에 블록(216)이 이어진다. 모션 이미지의 모션 스코어가 디스플레이 임계값을 충족하지 않으면, 블록(214) 다음에 블록(218)이 이어진다.
블록(216)에서, 모션 이미지가 피사체 모션과 함께 디스플레이되게 한다. 모션 이미지는 예를 들어 이미지 갤러리 애플리케이션에 의해 제공되는 사용자 인터페이스의 일부로 표시될 수 있다. 일부 구현들에서, 모션 이미지를 디스플레이하는 것은, 예를 들어 모션 이미지의 복수의 프레임들 내의 대상(피사체) 모션이 사용자에 의해 인지될 수 있도록 모션 이미지의 복수의 프레임들을 연속적으로 디스플레이하는 것을 포함한다. 예를 들어, 모션 이미지는 한 번에 하나의 이미지가 표시되는 원업 모드 또는 슬라이드쇼 모드에서 사용자 인터페이스에 표시될 수 있다.
일부 구현들에서, 모션 이미지를 디스플레이하는 것은 복수의 이미지들을 포함하는 이미지 그리드를 포함하는 사용자 인터페이스에서 다른 이미지들보다 더 큰 사이즈로 모션 이미지를 디스플레이하는 것을 더 포함한다. 참조로 설명된 바와 같이 임계값 수의 컨텍스트 선택은 피사체 모션(subject motion)과 함께 표시될 디스플레이 임계값을 충족하는 모션 스코어와 연관된 하나 이상의 모션 이미지로 이미지 그리드를 표시할 수 있다. 일부 구현에서, 디스플레이 임계값을 충족하는 모션 스코어와 연관된 모션 이미지는 그리드의 하나 이상의 다른 이미지보다 사용자 인터페이스에서 더 큰 크기로 디스플레이될 수 있다. 디스플레이 임계값을 충족하지 않는 각각의 스코어와 연관된 사용자 인터페이스의 다른 모션 이미지는 예를 들어 그러한 모션 이미지의 특정 프레임만을 디스플레이함으로써 피사체 모션 없이 사용자 인터페이스에 디스플레이된다. 블록(216) 다음에 블록(220)이 올 수 있다.
모션 이미지의 모션 스코어가 디스플레이 임계값을 충족하지 않는 경우, 예를 들어 모션 이미지의 특정 프레임만을 디스플레이함으로써 피사체 모션 없이 모션 이미지를 디스플레이하기 위해 블록(218)이 수행된다. 이러한 방식으로 특정 프레임을 표시하면, 모션 이미지의 다른 프레임이 표시되지 않으므로 계산 자원을 절약할 수 있다. 블록(218) 다음에 블록(220)이 올 수 있다.
블록(220)에서, 모션 스코어가 저장 임계값을 충족하는지가 결정된다. 저장 임계값은 다양한 요인을 기반으로 할 수 있다. 예를 들어, 저장 임계값은 모션 이미지를 저장하는 사용자 장치, 예를 들어 클라이언트 장치(120)의 이용가능한 비휘발성 메모리 용량에 기초할 수 있다. 다른 예에서, 예를 들어, 모션 이미지가 서버에 저장될 때, 저장 임계값은 모션 이미지를 저장하는 특정 사용자 계정에 할당된 서버의 저장 용량에 기초할 수 있다. 일부 구현들에서, 저장 임계값은 사용자 장치의 비휘발성 메모리 용량과 서버의 할당된 저장 용량의 조합에 기초하여 설정될 수 있다. 모션 스코어가 저장 임계값을 충족하면 블록(220) 다음에 블록(222)이 온다. 모션 스코어가 저장 임계값을 충족하지 않으면 블록(220) 다음에 블록(224)이 올 수 있다.
블록(222)에서, 모션 이미지는 정지 이미지로 변경된다. 예를 들어, 방법(200)이 클라이언트 장치에 의한 모션 이미지의 캡처 시에 수행될 때, 모션 이미지는 클라이언트 장치의 휘발성 메모리(예: RAM)에 일시적으로 저장될 수 있다. 모션 이미지가 저장 임계값을 충족하지 않는 경우, 모션 이미지의 복수의 프레임 중 특정 프레임만이 저장되며, 예를 들어 클라이언트 장치의 비휘발성 메모리에 기록된다. 모션 이미지의 복수 프레임의 다른 프레임은 이미지를 저장하기 전에 제거된다.
예를 들어, 복수의 프레임은 사용자가 클라이언트 장치의 카메라를 활성화하기 전에 캡처한 하나 이상의 프레임, 사용자가 활성화된 순간에 캡처한 단일 프레임, 사용자 활성화 후에 캡처한 하나 이상의 프레임을 포함할 수 있다. 예를 들어 모션 이미지의 총 길이는 최대 3초일 수 있다. 일부 구현에서, 특정 프레임은 예를 들어 카메라의 활성화와 일치하는 타임스탬프와 연관된 사용자 활성화의 순간에 캡처된 단일 프레임일 수 있다. 일부 구현들에서, 특정 프레임은 모션 이미지의 복수의 프레임들 중 임의의 다른 프레임일 수 있다.
예를 들어, 특정 프레임은 이미지를 프로그래밍 방식으로 분석하는 것에 기초하여 결정되는 모션 이미지의 상이한 특성에 기초하여 선택될 수 있다. 예를 들어, 이러한 특성에는 프레임의 블러(blur) 레벨, 프레임이 웃는 얼굴 및/또는 눈을 뜨고 있는 인간 피사체를 묘사하는지 여부, 피사체에 대한 초점 품질 등이 포함될 수 있다. 각 프레임에 대한 상이한 특성은 품질 스코어를 결정하기 위해 평가될 수 있고 최고 품질 스코어와 연관된 프레임이 특정 프레임으로서 선택될 수 있다. 일부 구현에서, 특정 프레임은 무작위로 선택될 수 있다.
모션 이미지를 정지 이미지로 변경하면 기술적인 이점이 있다. 예를 들어, 하나의 프레임을 포함하는 정지 이미지이기 때문에 정지 이미지의 파일 크기는 복수의 프레임을 포함하는 모션 이미지보다 작다. 따라서 정지 이미지를 저장하면 더 적은 저장 공간이 필요하다. 또한, 정지 이미지를 예를 들어 서버 장치 또는 다른 클라이언트 장치로 전송하면 네트워크 활용도가 감소한다. 블록(222) 다음에 블록(224)가 올 수 있다.
블록(224)에서, 이미지는 예를 들어 클라이언트 장치(120)의 비휘발성 메모리, 서버 장치의 비휘발성 메모리에 저장되거나, 또는 둘 다에 저장된다. 블록(224)이 블록(220) 이후에 수행될 때, (복수의 프레임을 포함하는) 모션 이미지가 저장되고, 블록(224)이 블록(222) 이후에 수행될 때, 정지 이미지가 저장된다.
방법(200)이 도 2의 다양한 블록을 참조하여 설명되었지만, 본 개시에서 설명된 기술들은 도 2의 블록들 중 일부를 수행하지 않고 수행될 수 있다는 것을 이해할 수 있다. 다양한 구현들에서, 방법(200)의 블록들 중 일부는 병렬로 또는 도 2에 예시된 것과 다른 순서로 수행될 수 있다.
예를 들어, 방법(200)이 하나 이상의 미리 저장된 이미지를 포함하는 사용자 인터페이스를 디스플레이하기 위해 수행되는 일부 구현에서, 블록(220-224)은 수행되지 않을 수 있다. 다른 예에서, 예를 들어, 방법(200)이 모션 이미지의 캡처 즉시 수행되고 사용자가 모션 이미지가 캡처된 것으로 저장되어야 한다는 표시를 제공한 경우 블록(220 및 222)은 수행되지 않고 블록(224)은 블록(216) 또는 블록(218) 후에 수행된다. 일부 구현에서, 예를 들어, 사용자가 항상 피사체 모션이 있는 모션 이미지를 표시하라는 표시를 제공한 경우 블록(214)은 수행되지 않고 블록(216)은 블록(212) 다음에 수행된다. 이들 구현의 추가 변형에서, 블록(216)은 모션 이미지를 디스플레이하기 위해 수행될 수 있고, 블록(212)은 모션 스코어를 결정하기 위해 블록(216) 후에 수행될 수 있다.
또한, 일부 구현은 모션 이미지의 디스플레이를 완전히 배제할 수 있으며, 예를 들어 블록(214-218)은 이러한 구현에서 수행되지 않는다. 이러한 구현에서, 모션 스코어는 모션 이미지에 대해 결정되고(블록 212), 모션 스코어가 저장 임계값을 충족하면(블록 220), 모션 이미지는 선택적으로 정지 이미지로 변환된다(블록 222). 모션 이미지 또는 정지 이미지는 비휘발성 메모리에 저장된다(블록 224). 예를 들어, 서버 장치는 이러한 구현을 활용하여 스토리지 사용량을 절약할 수 있다. 이러한 구현에서, 이미지는 이미지를 저장한 후에 표시될 수 있다. 예를 들어, 저장된 버전이 모션 이미지인 경우 이미지가 모션 이미지로 디스플레이되고, 저장된 버전이 정지된 이미지인 경우 정지 이미지로 디스플레이된다.
또한, 일부 구현에서, 블록(214-218)은 예를 들어 이전에 저장된 모션 이미지를 디스플레이하기 위해 블록(212 및 220-224) 후에 수행될 수 있다. 이러한 구현들에서, 모션 스코어는 이미지와 함께 저장될 수 있거나, 이미지의 디스플레이 시에 재계산될 수 있다.
도 3은 일부 구현들에 따른, 모션 이미지에 대한 모션 스코어를 결정하기 위한 방법(300)의 일 예를 예시하는 흐름도이다. 일부 구현에서, 방법(300)은 예를 들어 도 1에 도시된 바와 같은 서버 시스템(102)에서 구현될 수 있다. 일부 구현에서, 방법(300)의 일부 또는 전부는 도 1에 도시된 바와 같이 하나 이상의 클라이언트 장치(120, 122, 124 또는 126), 하나 이상의 서버 장치, 및/또는 서버 장치(들) 및 클라이언트 장치 모두에서 구현될 수 있다. 설명된 예에서, 구현 시스템은 하나 이상의 디지털 프로세서 또는 처리 회로("프로세서"), 및 하나 이상의 저장 장치(예를 들어, 데이터베이스(106) 또는 기타 저장 장치)를 포함한다. 일부 구현에서, 하나 이상의 서버 및/또는 클라이언트의 상이한 컴포넌트는 방법(300)의 상이한 블록 또는 다른 부분을 수행할 수 있다. 일부 예들에서, 제1 장치는 방법(300)의 블록들을 수행하는 것으로서 설명된다. 일부 구현은 결과 또는 데이터를 제1 장치로 전송할 수 있는 하나 이상의 다른 장치(예를 들어, 다른 클라이언트 장치 또는 서버 장치)에 의해 수행되는 방법(300)의 하나 이상의 블록을 가질 수 있다.
일부 구현에서, 방법(300) 또는 방법의 일부는 시스템에 의해 자동으로 개시될 수 있다. 일부 구현에서, 구현 시스템은 제1 장치이다. 예를 들어, 방법은 주기적으로 수행되거나 하나 이상의 특정 이벤트 또는 조건에 따라 수행될 수 있다(예를 들어, 사용자에 의해 시작되는 애플리케이션(예: 카메라 애플리케이션(152), 이미지 관리 애플리케이션(156 등)), 시스템에 새로 업로드되거나 시스템에 의해 액세스 가능한 하나 이상의 이미지 수신, 방법(300)의 마지막 수행, 및/또는 방법에 의해 판독된 설정에서 지정될 수 있는 발생하는 하나 이상의 다른 조건). 일부 구현에서, 이러한 조건은 사용자의 저장된 사용자 정의 기본 설정에서 사용자에 의해 지정될 수 있다.
다양한 구현에서, 클라이언트 장치(120)는 독립형 카메라, 휴대 전화, 스마트폰, 태블릿 컴퓨터, 웨어러블 장치, 또는 사용자에 의해 클라이언트 장치에 대한 콘텐츠 입력(예를 들어, 이미지 캡처)을 수신할 수 있는 다른 클라이언트 장치일 수 있고 방법(300)을 수행할 수 있다. 다른 예에서, 클라이언트 장치 또는 서버 장치는 방법(300)을 수행할 수 있다. 일부 구현은 사용자 입력에 기초하여 방법(300)을 시작할 수 있다. 사용자(예를 들어, 오퍼레이터 또는 최종 사용자)는 예를 들어, 디스플레이된 사용자 인터페이스, 예를 들어 애플리케이션 사용자 인터페이스 또는 다른 사용자 인터페이스로부터 방법(300)의 개시를 선택했을 수 있다. 일부 구현들에서, 방법(300)은 클라이언트 장치에 의해 구현될 수 있다. 일부 구현에서, 방법(300)은 서버 장치에 의해 구현될 수 있다.
블록(302)에서, 모션 이미지의 안정도 레벨이 결정된다. 일부 구현에서, 안정도 레벨은 모션 이미지의 복수의 프레임의 연속적인 프레임에서 대응하는 픽셀의 픽셀 값의 비교에 기초하여 결정될 수 있다. 예를 들어, 픽셀의 상당한 비율(예: 90%)이 일치하는 경우(예: 동일하거나 유사한 값을 갖는 경우) 이미지가 안정적인 것으로 결정될 수 있다. 일부 구현에서, 모션 이미지는 모션 이미지의 배경 부분을 결정하기 위해 프로그래밍 방식으로 분석될 수 있다. 이러한 구현에서, 픽셀 값의 비교는 배경 부분에 대응하는 픽셀의 서브세트에 대해서만 수행될 수 있다.
일부 구현에서, 안정도의 레벨은 모션 이미지를 캡처한 장치(디바이스), 예를 들어 클라이언트 장치(120)의 하나 이상의 센서로부터 획득된 데이터에 기초하여 결정될 수 있다. 예를 들어, 이러한 데이터에는 장치의 가속도계 및/또는 자이로스코프의 판독값이 포함될 수 있다. 예를 들어, 센서의 데이터가 모션 이미지를 캡처하는 동안(예: 짧은 시간 동안 수행될 수 있음, 예: 최대 3초) 기기가 움직이거나 회전하지 않았음을 나타내는 경우, 안정도 레벨이 높다고 결정할 수 있다. 반면에 캡처 중 장치의 움직임(예: 센서에 의해 측정된 장치의 변위 및/또는 회전으로 표시됨)은 낮은 레벨의 안정도을 나타낼 수 있다.
일부 구현들에서, 안정도 레벨의 결정은 복수의 프레임들의 픽셀 값들 및 센서 판독값에 기초할 수 있다. 안정도 레벨을 결정하는 다른 기술도 사용할 수 있다. 블록(302) 다음에 블록(304)이 올 수 있다.
블록(304)에서, 모션 이미지가 안정적인지 여부가 결정된다. 예를 들어, 모션 이미지의 안정도 레벨은 안정도 임계값과 비교될 수 있다. 안정도 레벨이 안정도 임계값을 충족하면 블록(304) 다음에 블록(306)이 올수 있다. 그렇지 않으면 블록(304) 다음에 블록(330)이 이어진다.
블록(306)에서, 모션 이미지는 모션 이미지의 피사체를 검출하고 피사체의 유형을 결정하기 위해 프로그래밍 방식으로 분석된다. 예를 들어, 객체 인식 기술은 사람의 얼굴, 인체, 동물, 나무 및 건물, 가구, 차량 등과 같은 무생물과 같은 모션 이미지의 다양한 객체의 존재를 감지하는 데 활용될 수 있다. 모션 이미지의 피사체는 복수의 프레임의 중앙 부근에 나타나는 하나 이상의 객체, 초점이 맞는 객체, 이미지 내에서 가장 큰 영역을 차지하는 객체 등으로 결정될 수 있다. 예를 들어, 초점이 맞춰진 사람의 얼굴 및/또는 중앙에 있는 사람의 얼굴을 묘사하는 모션 이미지는 "사람의 얼굴" 또는 "인물"이라는 피사체 유형에 해당할 수 있다. 다른 예에서, 사람들의 그룹을 묘사하는 모션 이미지는 "단체 사진"이라는 피사체 유형에 대응할 수 있다. 또 다른 예에서, 개, 고양이 또는 다른 동물을 묘사하는 모션 이미지는 피사체 유형 "애완 동물" 또는 "동물" 등에 해당할 수 있다.
모션 이미지의 복수의 프레임은 또한 모션 이미지 내에서 피사체의 모션의 레벨을 결정하기 위해 분석될 수 있다. 예를 들어, 피사체 유형이 '사람의 얼굴'인 경우, 복수의 프레임에서 얼굴의 픽셀 값의 변화에 따라 움직임 레벨이 결정될 수 있다. 이 예에서 표정의 변화가 거의 또는 전혀 없는 모션 이미지는 피사체의 낮은 모션에 해당할 수 있는 반면, 피사체가 미소를 짓거나 눈썹을 올리거나 얼굴을 돌리거나 기울이는 등의 모션 이미지는 피사체의 높은 레벨의 모션에 해당한다.
다른 예에서, 피사체 유형이 인체인 경우 한 지점에서 다른 지점으로 점프하거나 이동하는 것과 같은 피사체 모션은 높은 레벨의 모션에 해당할 수 있고 다른 방식으로(예: 손 들기, 머리 기울이기 등) 움직이는 정지된 피사체는 낮은 레벨의 모션에 해당할 수 있다. 일부 구현에서, 비교에 사용되는 움직임의 임계값 레벨은 피사체 유형에 기초할 수 있으며, 예를 들어 피사체가 바디일 때보다 피사체가 얼굴일 때 더 낮은 임계값이 사용될 수 있다. 피사체의 모션을 감지하는 다양한 기술(예: 광학 흐름, 이미지 분할, 이미지 등록 등)이 활용될 수 있다. 예를 들어, 물체(객체) 인식 기술은 객체 및 객체에 대응하는 픽셀의 광학적 흐름을 검출하는데 이용될 수 있으며, 예를 들어 객체의 외부 경계는 객체의 모션의 레벨을 결정하기 위해 측정될 수 있다. 다른 예에서, 이미지 등록 기술은 복수의 프레임의 픽셀을 정렬하는데 이용될 수 있고, 상이한 픽셀 좌표에 의해 지시되는 바와 같이 객체의 위치 변화는 모션의 레벨을 결정하기 위해 이용될 수 있다. 일부 구현에서, 기술의 조합이 이용될 수 있다. 블록(306) 다음에 블록(308)이 올 수 있다.
블록(308)에서, 피사체의 움직임 레벨이 움직임의 임계 레벨을 충족하는지가 결정된다. 피사체의 움직임 레벨이 임계값을 충족한다고 결정되면 블록(308) 다음에 블록(310)이 이어진다. 그렇지 않으면 블록(308) 다음에 블록(330)이 이어진다.
블록(310)에서, 피사체 유형이 풍경인지 또는 무생물인지가 결정된다. 예를 들어, 모션 이미지의 피사체 유형은 산, 나무, 강, 바다 등의 객체가 검출된 경우 풍경으로 결정하고, 검출된 객체가 가구, 건물, 자동차 등의 객체를 포함하는 경우 무생물로 결정한다. 일부 구현에서, 예를 들어, 풍경 또는 무생물이 포함된 이미지에서 사람 또는 동물(예: 애완동물)이 감지되면 사람 또는 동물 피사체가 감지되었으므로 피사체 유형은 풍경 또는 무생물이 아니다. 피사체 유형이 풍경 또는 무생물인 경우 블록(310) 다음에 블록(330)이 이어진다. 그렇지 않은 경우 블록(310) 다음에 블록(312)이 이어진다.
블록(312)에서, 모션 이미지의 뷰의 카운트가 시청률(viewership) 임계값을 충족하는지 여부가 결정된다. 예를 들어, 모션 이미지의 복수의 프레임이 이전에 연속적으로 시청되어 피사체 모션의 디스플레이를 적어도 임계 횟수만큼 제공했다면, 모션 이미지는 시청률 임계값을 충족하는 것으로 결정된다. 예를 들어, 사용자(또는 이미지가 공유된 다른 사용자)가 여러 번, 예를 들어, 5회, 10회 등을 본 저장된 이미지는, 이미지의 모션이 사용자 관심 대상이 되도록, 시청률 임계값을 충족하도록 결정될 수 있다. 모션 이미지의 뷰의 카운트가 시청률 임계값을 충족하는 경우 블록(312) 다음에 블록(320)이 올 수 있다. 그렇지 않으면, 블록(312) 다음에 블록(314)이 올 수 있다.
블록(314)에서, 모션 이미지에서 모션 아티팩트(artifact)가 생성되었는지 여부가 결정된다. 예를 들어, 모션 아티팩트는 애니메이션 GIF 또는 예를 들어 모션 이미지의 2개 이상의 프레임을 포함하는 다른 애니메이션을 포함할 수 있다. 예를 들어, 모션 아티팩트는 루프에서 재생하도록 설정된 둘 이상의 프레임을 포함할 수 있다. 루프의 2개 이상의 프레임은 순차적인 순서로 재생될 수 있는데, 예를 들어 제1 프레임과 제2 프레임이 차례로 재생되고 그 다음에는 제3 프레임이 재생된다. 모션 아티팩트는 연속적인 논스톱 애니메이션을 제공하기 위해 마지막 프레임 다음에 제1 프레임이 제공되는 순방향 루프일 수 있다. 모션 아티팩트는 프레임이 제1 프레임부터 마지막 프레임까지 순차적으로 재생된 후 마지막 프레임에서 제1 프레임까지 역순으로 반복 재생되어 연속적인 애니메이션을 제공하는 역방향 루프(부메랑이라고도 함)일 수 있다. 일부 구현에서, 모션 아티팩트는 모션 이미지를 기반으로 하는 다른 창작물, 예를 들어 모션 이미지의 2개 이상의 프레임을 포함하는 콜라주, 모션 이미지의 2개 이상의 프레임을 단일 정지 이미지로 중첩하는 모션 블러 이미지 등을 포함할 수 있다.
카메라 애플리케이션, 이미지 갤러리 애플리케이션, 또는 임의의 다른 애플리케이션은 예를 들어 자동 또는 수동으로 모션 아티팩트를 생성하는 기능을 제공할 수 있다. 모션 아티팩트가 생성된 경우, 예를 들어 사용자가 입력을 제공함으로써 모션 아티팩트를 생성했거나 자동으로 생성된 모션 아티팩트를 저장하기로 선택한 경우, 블록(314) 다음에 블록(316)이 올 수 있다. 그렇지 않으면, 블록(314) 다음에 블록(320)이 올 수 있다.
블록(316)에서, 모션 스코어는 모션 이미지에 대해 계산된다. 일부 구현에서, 모션 스코어는 모션 이미지의 안정도 레벨, 모션 이미지의 피사체 유형, 또는 모션 이미지의 복수의 프레임에서 피사체의 모션 레벨 중 하나 이상에 기초할 수 있다. 예를 들어, 모션 스코어는 안정도 레벨과 모션에서 피사체의 움직임 레벨의 가중치 조합일 수 있다. 일부 구현에서, 더 높은 레벨의 안정도는 더 높은 모션 스코어에 대응할 수 있고 그 반대도 마찬가지다. 일부 구현에서 피사체의 더 높은 레벨의 모션은 더 높은 모션 스코어에 해당할 수 있으며 그 반대의 경우도 마찬가지다. 일부 구현에서 피사체의 움직임 레벨은 피사체의 유형에 따라 다른 가중치가 할당될 수 있다. 예를 들어, 피사체 유형이 바디인 경우보다 피사체 유형이 얼굴인 경우 움직임 레벨에 더 높은 가중치가 할당될 수 있다.
일부 구현에서, 전술한 것에 더하여 하나 이상의 다른 인자가 이용될 수 있다. 예를 들어, 사용자가 얼굴 인식 기술의 사용을 허용하는 경우, 이미지의 피사체가 사용자에게 알려진(예: 사용자의 소셜 네트워크의 일부, 사용자가 캡처한 다른 이미지 또는 사용자의 이미지 갤러리에 저장된 등) 사람 또는 동물(예: 애완동물)인지 여부가 결정될 수 있다. 알려진 피사체를 묘사하는 모션 이미지의 모션 스코어는 알려지지 않은 피사체를 묘사하는 모션 이미지보다 높을 수 있으며 다른 요소는 동일하다. 일부 구현에서, 특정 피사체 유형은 더 높은 가중치, 예를 들어 스포츠 또는 운동 활동, 댄스 등을 묘사하는 모션 이미지와 연관될 수 있고, 이러한 피사체 유형을 묘사하는 모션 이미지는 더 높은 모션 스코어를 수신할 수 있다. 다시 말해, 높은 모션 스코어는 사용자에 의해 크거나 중요하게 인식되는 모션 이미지의 프레임 전반에 걸친 변화를 나타내며, 이러한 이미지의 모션 양태(motion aspect)는 디스플레이될 때 모션 양태에 의해 사용자가 획득한 사용자 경험, 지각 및 정보를 증가시키고 향상시킨다. 반면에, 낮은 모션 스코어는 정적 디스플레이 또는 모션 정보 제거 및 모션 이미지를 정지 이미지로의 변환을 통한 모션 정보 손실이 이미지 콘텐츠의 사용자 경험과 지각 및 인식을 저하시키지 않거나 심지어 개선할 수도 있도록 모션 이미지의 프레임 전반에 걸쳐 거의 또는 미미한 변화를 나타낸다. 후자의 경우, 예를 들어, 모션 이미지에 포함된 모션 양태는 정지된 장면을 모션 이미지로 촬영할 때 카메라의 떨림 또는 떨림에 의해 발생하는 흔들림을 포함할 수 있다. 이러한 상황에서, 예를 들어 사용자가 모션 양태에 의해 도입된 떨림으로 인해 정지 장면의 세부 사항을 적절하게 초점을 맞추고 인식할 수 없기 때문에 모션 정보 및 이미지를 모션 이미지로 디스플레이하는 것은 실제로 사용자 인식을 저하시킬 수 있다.
일부 구현에서, 모션 이미지는 피사체 유형을 나타내는 레이블(예: 피사체 유형이 문서, 스크린샷, 영수증 등임을 나타내는 "archive" 레이블)을 포함하거나 이와 연관될 수 있으며 이러한 레이블은 모션 스코어를 결정하는 데 사용될 수 있다. 일부 구현에서, 모션 이미지는 예를 들어, 모션 이미지의 캡처 동안 녹음된 사운드를 포함할 수 있다. 이러한 구현에서, 사운드는 관심 있는 모션과 연관된 사운드(예를 들어 폭포 사운드, 배트로 공을 치는 사운드, 댄스 음악, 웃음 등)의 카테고리에 해당하는지 여부를 결정하기 위해 프로그래밍 방식으로 분석될 수 있고, 관심의 모션과 연관될 수 있는 반면, 배경 사운드, 차량 사운드 등과 같은 다른 사운드는 관심의 모션을 묘사하지 않는 이미지와 연관될 수 있다.
일부 구현에서, 계산된 모션 스코어는 예를 들어, 모션 이미지 메타데이터에, 모션 이미지와 연관된 레이블로서, 모션 이미지에 대한 데이터를 저장하는 데이터베이스 등에 이미지와 연관되어 저장될 수 있다. 저장된 모션 스코어는 예를 들어 모션 이미지를 포함하는 사용자 인터페이스를 생성할 때, 모션 아티팩트의 생성 또는 다른 이미지 생성을 제안할 때 액세스될 수 있다.
블록(320)에서, 모션 이미지의 뷰의 카운트가 시청률 임계값을 충족하거나 모션 아티팩트가 모션 이미지로부터 생성된 경우 수행되는, 모션 스코어는 디스플레이 임계값을 충족하는 값으로 설정될 수 있다. 예를 들어, 모션 스코어는 블록(316)을 참조하여 설명된 바와 같이 계산되고 디스플레이 임계값과 비교될 수 있다. 모션 스코어가 디스플레이 임계값을 충족하지 않는 경우 모션 스코어는 디스플레이 임계값을 충족하는 값으로 설정될 수 있다. 이러한 방식으로 모션 스코어를 업데이트하는 것은 모션 이미지의 흥미를 나타내는 사용자 입력이 자동으로 결정된 모션 스코어를 무시하는 것을 보장할 수 있고, 예를 들어, 모션 이미지의 복수의 프레임을 연속적으로 디스플레이함으로써, 사용자가 관심을 갖는 모션 이미지가 사용자가 모션을 인지할 수 있는 방식으로 디스플레이되도록 한다.
블록(330)은 (블록 304에서 결정된 바와 같이) 모션 이미지가 안정적이지 않은 경우, 피사체의 움직임 레벨이 움직임의 임계 레벨을 충족하지 않는 경우(블록 308) 또는 모션 이미지의 피사체 유형이 풍경 또는 무생물인 경우(블록 310) 수행된다. 블록(330)에서, 모션 스코어는 디스플레이 임계값을 충족하지 않는 값, 예를 들어, 디스플레이 임계값보다 낮은 값으로 설정될 수 있다.
이러한 방식으로 모션 스코어를 설정하면 흔들리거나 불안정한 이미지, 피사체의 움직임이 최소화된 이미지 또는 피사체 유형이 모션 이미지의 복수의 프레임의 디스플레이에 적합하지 않은 이미지와 같이 고품질 시청 경험을 제공하지 않는 모션 이미지가 예를 들어 도 2를 참조하여 위에서 설명된 바와 같이, 모션 이미지의 특정 프레임만을 디스플레이함으로써 정지된 이미지로 디스플레이되도록 할 수 있다. 이러한 방식으로 모션 스코어를 설정하면 이미지의 복수의 프레임을 렌더링하기 위한 계산 자원이 절약되고, 모션 이미지가 비휘발성 메모리에 저장되거나 서버 또는 다른 클라이언트 장치로 전송될 때 저장 공간을 절약할 수도 있다.
방법(300)이 도 3의 다양한 블록들을 참조하여 설명되었지만, 본 개시물에서 설명된 기술들은 도 3의 블록들 중 일부를 수행하지 않고 수행될 수 있다는 것이 이해될 수 있다. 예를 들어, 일부 구현, 예를 들어 뷰의 카운트 또는 모션 아티팩트 생성에 관한 정보를 사용할 수 없는 경우 블록(312, 314, 320)은 수행되지 않는다. 일부 구현에서, 도 3에 예시된 블록 중 하나 이상이 결합될 수 있다. 다양한 구현들에서, 방법(300)의 블록들 중 일부는 병렬로 또는 도 3에 예시된 것과 다른 순서로 수행될 수 있다.
도 4는 일부 구현들에 따른, 모션 이미지에 대한 모션 스코어를 결정하기 위한 예시적인 방법(400)을 예시하는 흐름도이다. 일부 구현에서, 방법(400)은 예를 들어 도 1에 도시된 바와 같이 서버 시스템(102)에서 구현될 수 있다. 일부 구현에서, 방법(400)의 일부 또는 전부는 도 1에 도시된 바와 같이 하나 이상의 클라이언트 장치(120, 122, 124 또는 126), 하나 이상의 서버 장치, 및/또는 서버 장치(들) 및 클라이언트 장치 모두에서 구현될 수 있다. 설명된 예에서, 구현 시스템은 하나 이상의 디지털 프로세서 또는 처리 회로("프로세서"), 및 하나 이상의 저장 장치(예를 들어, 데이터베이스(106) 또는 기타 저장 장치)를 포함한다. 일부 구현에서, 하나 이상의 서버 및/또는 클라이언트의 상이한 컴포넌트는 방법(400)의 상이한 블록 또는 다른 부분을 수행할 수 있다. 일부 예들에서, 제1 장치는 방법(400)의 블록들을 수행하는 것으로서 설명된다. 일부 구현은 결과 또는 데이터를 제1 장치로 전송할 수 있는 하나 이상의 다른 장치(예를 들어, 다른 클라이언트 장치 또는 서버 장치)에 의해 수행되는 방법(400)의 하나 이상의 블록을 가질 수 있다.
일부 구현에서, 방법(400) 또는 방법의 일부는 시스템에 의해 자동으로 개시될 수 있다. 일부 구현에서, 구현 시스템은 제1 장치이다. 예를 들어, 방법(또는 그 일부)은 주기적으로 수행되거나 하나 이상의 특정 이벤트 또는 조건에 따라 수행될 수 있다(예를 들어, 사용자에 의해 시작되는 애플리케이션(예를 들어, 카메라 애플리케이션(152), 이미지 관리 애플리케이션(156) 등), 시스템에 새로 업로드되었거나 시스템에서 액세스할 수 있는 하나 이상의 이미지의 수신, 방법(400)의 마지막 수행 이후 만료된 미리 결정된 기간, 및/또는 방법에서 판독한 설정에서 지정할 수 있는 하나 이상의 다른 조건 발생). 일부 구현에서, 이러한 조건은 사용자의 저장된 사용자 정의 기본 설정에서 사용자에 의해 지정될 수 있다.
다양한 구현에서, 클라이언트 장치(120)는 독립형 카메라, 휴대 전화, 스마트폰, 태블릿 컴퓨터, 웨어러블 장치, 또는 사용자에 의해 클라이언트 장치에 대한 콘텐츠 입력(예를 들어, 이미지 캡처)을 수신할 수 있는 다른 클라이언트 장치일 수 있고, 방법(400)을 수행할 수 있다. 다른 예에서, 클라이언트 장치 또는 서버 장치는 방법(400)을 수행할 수 있다. 일부 구현은 사용자 입력에 기초하여 방법(400)을 시작할 수 있다. 사용자(예를 들어, 오퍼레이터 또는 최종 사용자)는, 예를 들어, 디스플레이된 사용자 인터페이스, 예를 들어, 애플리케이션 사용자 인터페이스 또는 다른 사용자 인터페이스로부터 방법(400)의 개시를 선택했을 수 있다. 일부 구현에서, 방법(400)은 클라이언트 장치에 의해 구현될 수 있다. 일부 구현에서, 방법(400)은 서버 장치에 의해 구현될 수 있다.
블록(402)에서, 모션 이미지의 뷰 카운트(조회수)가 시청률 임계값을 충족하는지 여부가 결정된다. 블록(402)은 도 3을 참조하여 설명된 블록(312)과 유사할 수 있다. 조회수가 시청률 임계값을 충족하면 블록(402) 다음에 블록(410)이 이어진다. 그렇지 않으면 블록(402) 다음에 블록(404)이 이어진다.
블록(404)에서, 모션 아티팩트가 모션 이미지로부터 생성되었는지가 결정된다. 블록(404)은 도 3을 참조하여 설명된 블록(314)과 유사할 수 있다. 적어도 하나의 모션 아티팩트가 생성된 경우, 블록(404) 다음에 블록(410)이 이어진다. 그렇지 않은 경우, 블록(404) 다음에 블록(410)이 이어진다.
블록(406)에서, 예를 들어, 모션 이미지의 특정 프레임을 디스플레이함으로써 모션 이미지를 정지 이미지로서 디스플레이하기 위한 사용자 입력이 수신되었는지가 결정된다. 예를 들어, 사용자는 "turn motion off for this image(이 이미지에 대해 모션 끄기)"와 같은 옵션을 선택하여 이러한 입력을 제공할 수 있다. 이러한 사용자 입력은 시청자가 관심 있는 이미지 내에서 모션을 찾지 못한다는 표시일 수 있다. 사용자 입력이 수신된 경우, 블록(406) 다음에 블록(420)이 이어진다. 그렇지 않으면, 블록(406) 다음에 블록(408)이 올 수 있다.
블록(408)에서, 모션 이미지에 대한 모션 스코어가 계산된다. 일부 구현에서, 모션 스코어는 복수의 레이어로 구성되고 그리고 이미지에 대한 모션 스코어를 결정하도록 구성된 복수의 노드를 포함하는 신경망을 포함하는 훈련된 기계 학습 모델을 적용함으로써 계산된다. 모션 이미지는 훈련된 기계 학습 모델에 대한 입력으로 제공된다.
일부 구현에는 모션 이미지에 대한 모션 스코어를 결정하기 위해 기계 학습 모델을 훈련하는 것이 포함된다. 예를 들어, 훈련되지 않은 기계 학습 모델은 복수의 레이어로 구성된 복수의 노드를 포함하는 신경망을 포함할 수 있다. 각 레이어의 노드는 이전 레이어의 노드 및 다음 레이어의 노드와 연결될 수 있다. 제1 레이어의 노드는 모션 이미지를 입력으로 받아들이도록 구성될 수 있고, 복수의 레이어 중 마지막 레이어의 노드는 모션 스코어를 출력하도록 구성될 수 있다. 각 노드는 LSTM 노드와 같은 모든 유형의 신경망 노드일 수 있다.
훈련에 앞서, 각 노드에 초기 가중치가 할당되고 신경망의 서로 다른 레이어의 노드 간의 연결이 초기화될 수 있다. 모션 이미지의 훈련 데이터 세트가 획득되어 신경망에 대한 입력으로 제공될 수 있다. 예를 들어, 훈련 데이터세트는 복수의 모션 이미지 및 연관된 모션 스코어 또는 레이블을 포함할 수 있다. 예를 들어, 훈련 데이터세트에서 모션 이미지의 제1 세트는 이미지 각각의 피사체 모션이 사용자 관심 대상임을 나타내는 하나 이상의 레이블과 연관될 수 있다. 이러한 레이블은 사용자 입력을 기반으로 하거나 사용자 허가를 받아 얻은 사용자 데이터(예: 모션 이미지 시청률, 모션 아티팩트 생성 등)에서 얻을 수 있다.
훈련 데이터세트의 제2 세트의 모션 이미지는 제2 세트의 이미지 각각의 피사체 모션이 사용자의 관심 대상이 아님을 나타내는 하나 이상의 레이블과 연관될 수 있다. 레이블은 사용자 입력을 기반으로 하거나 사용자 허가를 받아 얻은 사용자 데이터(예: 모션 이미지 프레임 폐기, 모션 이미지 삭제 등)에서 얻을 수 있다. 제1 세트는 포지티브 훈련 예시로 지칭될 수 있고, 제2 세트는 "네거티브 훈련 예시"로 지칭될 수 있다. 훈련 세트는 다양한 유형의 피사체를 묘사하는 모션 이미지를 포함할 수 있으며, 다양한 레벨의 안정도와 복수의 프레임 내에서 피사체의 움직임 레벨을 포함할 수 있다. 훈련 세트는 훈련 세트가 필드 사용 동안 모델에 대한 입력으로서 후속적으로 제공될 수 있는 상이한 유형의 이미지의 예를 포함하도록 선택될 수 있다.
복수의 모션 이미지는 훈련 중인 모델에 대한 입력으로서 제공될 수 있고, 모델은 훈련 이미지 각각에 대한 모션 스코어를 출력하도록 구성될 수 있다. 일부 구현에서, 훈련 이미지 및 연관된 레이블은 먼저 훈련 중인 모델에 대한 입력으로서 제공될 수 있다. 이 훈련 단계에서는 개별 노드의 가중치(선택적으로 노드의 수), 다른 레이어의 노드 간 연결(또는 선택적으로, 레이어 수)는 모델에 의해 출력된 모션 스코어가 연관된 레이블의 모션 스코어와 일치하도록 자동으로 조정될 수 있다. 일부 구현에서, 이는 초기 훈련 단계로 지칭될 수 있다.
일부 구현들에서, 이미지들의 훈련 세트의 서브세트는 초기 훈련 단계에서 제외될 수 있다. 이 서브세트는 초기 훈련 단계 후에 제공될 수 있고 모델에 의해 출력된 모션 스코어는 서브세트의 이미지와 연관된 모션 스코어와 비교될 수 있다. 모션 스코어가 일치하지 않으면 이러한 불일치가 모델(강화 학습)에 대한 훈련 입력으로 제공될 수 있다. 이 단계에서, 하나 이상의 노드의 가중치, 노드 간의 연결성 등과 같은 모델 파라미터는 모델이 이미지 서브세트에 대한 모션 스코어를 정확하게 예측할 때까지 조정될 수 있다. 제2 단계는 예를 들어 모델이 모션 스코어를 예측할 때 충족스러운 레벨의 정확도를 달성할 때까지 여러 번 반복될 수 있다. 일부 구현에서, 훈련된 모델은 추가로 수정, 예를 들어 압축(더 적은 수의 노드 또는 레이어를 사용하기 위해), 변환(예를 들어, 다른 유형의 하드웨어에서 사용 가능하도록)될 수 있다. 훈련된 모델은 모션 이미지에 대한 모션 스코어를 계산하기 위해 장치(디바이스), 예를 들어 클라이언트 장치(120) 또는 서버 장치에 제공될 수 있다. 일부 구현에서, 모델의 다른 버전이 제공될 수 있으며, 예를 들어 모델의 클라이언트 버전은 크기에 대해 최적화될 수 있고 계산 복잡성이 감소될 수 있는 반면, 모델의 서버 버전은 정확도에 대해 최적화될 수 있다.
블록(408)에서, 모션 이미지는 훈련된 기계 학습(ML) 모델에 대한 입력으로서 제공된다. 학습된 ML 모델은 모션 이미지를 기반으로 모션 스코어를 계산할 수 있다. 일부 구현에서, 모션 이미지 대신에, 또는 모션 이미지에 추가하여, 모션 이미지에 대한 다른 데이터가 훈련된 ML 모델에 대한 입력으로서 제공될 수 있다. 예를 들어, 이러한 인자(factor)는 모션 이미지의 안정도(예: 배경 부분) 레벨, 모션 이미지의 피사체 유형 또는 모션 이미지에서 피사체의 움직임 레벨을 포함할 수 있다. 상이한 구현들에서, 그러한 인자는 도 3을 참조하여 설명된 바와 같은 기술들을 사용하여 이미지의 픽셀 값들에 기초하여 결정될 수 있다. 일부 구현에서, 안정도 레벨, 피사체 유형 또는 피사체의 움직임 레벨을 결정하도록 훈련된 별도의 ML 모델이 제공될 수 있고, 이러한 ML 모델의 출력이 훈련된 ML 모델에 제공될 수 있다. 일부 구현에서, 훈련된 ML 모델은 중간 레이어의 출력과 같은 인자를 결정할 수 있다.
블록(410)은 모션 이미지의 뷰 카운트가 시청률 임계값을 충족하거나(블록 402) 모션 아티팩트가 모션 이미지로부터 생성된 경우(블록 404) 수행된다. 블록(410)에서, 모션 스코어는 도 3을 참조하여 설명된 블록(320)과 유사하게 디스플레이 임계값을 충족하는 값으로 설정된다. 블록(410) 다음에 블록(430)이 이어질 수 있다.
블록(420)에서, 모션 스코어는, 예를 들어, 도 3을 참조하여 설명된 블록(330)과 유사하게, 디스플레이 임계값을 충족하지 않는 값으로 설정된다. 블록(420) 다음에 블록(430)이 이어질 수 있다.
블록(430)에서, 훈련된 ML 모델이 업데이트될 수 있다. 예를 들어, 블록(410) 이후에 블록(430)이 수행되면, 모델은 (사용자 입력에 기초하여) 디스플레이 임계값을 충족시키는 값으로 설정되는 모션 스코어에 기초하여 업데이트될 수 있고, 따라서 모션 이미지가 사용자 관심의 모션을 묘사함을 나타낼 수 있다. 다른 예에서, 블록(430)이 블록(420) 후에 수행될 때, 모델은 모션 스코어가 디스플레이 임계값을 충족하지 않는 값으로 설정되는 것에 기초하여 업데이트될 수 있으며, 따라서 모션 이미지가 사용자의 관심이 아닌 모션을 묘사한다는 것을 나타낸다.
일부 구현들에서, ML 모델을 업데이트하는 것은 복수의 노드들 중 적어도 하나의 가중치를 조정하는 것 또는 복수의 노드들 중 적어도 한 쌍의 노드들 사이의 연결을 업데이트하는 것을 포함할 수 있다. 일부 구현에서, 가중치는, 업데이트 후 ML 모델이 블록(410 또는 420)에 설정된 모션 스코어와 일치하는 모션 스코어를 계산하도록 조정될 수 있다. 일부 구현에서, 예를 들어 사용자가 사용자 데이터의 사용에 대한 허가를 제공하지 않을 때, 블록(430)은 수행되지 않는다. 사용자가 사용자 데이터의 사용을 허용하는 구현에서, 업데이트된 ML 모델은 예를 들어 연합 학습을 가능하게 하기 위해 서버에 제공될 수 있다. 이러한 방식으로 훈련된 ML 모델을 업데이트하면 모션 스코어 계산이 모션 이미지를 보는 사용자에 대해 개인화될 수 있고, 그에 따라 사용자가 캡처하거나 본 모션 이미지의 흥미도 레벨을 정확하게 나타내는 ML 모델에 의해 결정된 모션 스코어로 인해, 감소된 계산 부하 또는 감소된 저장 비용으로 모션 이미지의 개선된 디스플레이를 제공한다.
방법(400)이 도 4의 다양한 블록을 참조하여 설명되었지만, 본 개시에서 설명된 기술들은 도 4의 블록들 중 일부를 수행하지 않고 수행될 수 있다는 것을 이해할 수 있다. 예를 들어, 일부 구현, 블록(402 및/또는 404)은 수행되지 않는다. 일부 구현에서, 도 4에 예시된 블록 중 하나 이상이 결합될 수 있다. 다양한 구현들에서, 방법(400)의 블록들 중 일부는 병렬로 또는 도 4에 예시된 것과 다른 순서로 수행될 수 있다. 예를 들어, 일부 구현들에서, 블록들(402 및 404)은 동시에 수행될 수 있다.
도 5는 예시적인 모션 이미지를 도시한다. 특히, 예시적인 모션 이미지의 3개의 프레임(502, 512, 522)이 도시된다. 3개의 프레임은 짧은 간격, 예를 들어 1-3초 내에서 서로 다른 시점에서 캡처될 수 있다. 도 5에 도시된 바와 같이, 모션 이미지의 피사체(506, 516, 526)는 그네를 타고 있는 사람이다. 모션 이미지를 촬영하는 동안 프레임(502, 512, 522)에서 볼 수 있는 것처럼 사람은 그네를 타고 뒤에서 앞으로 다리를 펼친다. 이러한 모션은 깊이 정보를 결정할 수 있는 카메라를 사용하여 모션 이미지를 캡처하는 경우와 같이 깊이 이미지에 저장된 깊이 데이터에 의해 표시될 수 있다. 모션 이미지는 또한 배경 부분(504)을 포함한다.
도 5에 예시된 모션 이미지는 상당한 모션을 경험하고 예를 들어 디스플레이 임계값을 충족하는 비교적 높은 모션 스코어를 갖는 것으로 결정될 수 있는 피사체(사람)를 포함한다. 다른 모션 이미지에는 문서, 가구 또는 기타 무생물 또는 풍경과 같은 피사체가 포함될 수 있다. 중요한 피사체 모션을 포함하지 않을 수 있으며, 예를 들어 디스플레이 임계값을 충족하지 않는 상대적으로 낮은 모션 스코어를 갖는 것으로 결정될 수 있다. 도 5는 안정적인 이미지(배경(504)는 프레임(502, 512, 522) 사이에서 변경되지 않음)를 예시하지만, 다른 모션 이미지는 흔들리거나 불안정한 이미지, 예를 들어, 복수의 프레임 사이에서 변경되는 배경을 갖는 이미지를 포함할 수 있다.
도 6은 이미지 그리드를 포함하는 예시적인 사용자 인터페이스(600)의 개략도이다. 도 6에 도시된 예시적인 사용자 인터페이스는 이미지 그리드의 일부로서 도 5에 도시된 모션 이미지를 포함한다. 사용자 인터페이스의 3개의 뷰(602, 612, 622)는 사용자 인터페이스가 모션 이미지의 복수의 프레임을 연속적으로 디스플레이하는 것을 예시하기 위해 도시된다. 이 예에서 모션 이미지는 이미지 그리드의 다른 이미지보다 큰 크기로 디스플레이된다.
이 예시적인 사용자 인터페이스에서, 단일 모션 이미지가 사용자 인터페이스에 표시된 피사체 모션과 함께 디스플레이되지만, 임의의 수, 예를 들어 0, 2, 3, 또는 그 이상의 이미지가 도 3을 참조하여 설명된 바와 같이 이미지 그리드에서 이미지의 각각의 모션 스코어에 기초하여 피사체 모션과 함께 표시될 수 있음을 이해할 것이다. 다양한 구현에서, 사용자 인터페이스(600)는 디스플레이 장치에 의해, 예를 들어, 도 1의 클라이언트 장치(120, 122, 124, 및/또는 126) 또는 서버 시스템(102)의 디스플레이 스크린에 의해 디스플레이될 수 있다.
도 7은 본 명세서에 설명된 하나 이상의 특징을 구현하는 데 사용될 수 있는 예시적인 장치(700)의 블록도이다. 일례에서, 장치(700)는 클라이언트 장치, 예를 들어 도 1에 도시된 임의의 클라이언트 장치(120, 122, 124, 126)를 구현하는 데 사용될 수 있다. 대안적으로, 장치(700)는 서버 장치, 예를 들어 서버(104)를 구현할 수 있다. 일부 구현에서, 장치(700)는 클라이언트 장치, 서버 장치, 또는 클라이언트 및 서버 장치 모두를 구현하는 데 사용될 수 있다. 장치(700)는 임의의 적절한 컴퓨터 시스템, 서버, 또는 전술한 바와 같은 다른 전자 또는 하드웨어 장치일 수 있다.
여기에 설명된 하나 이상의 방법은 임의의 유형의 컴퓨팅 장치에서 실행될 수 있는 독립 실행형 프로그램, 웹 브라우저에서 실행되는 프로그램, 모바일 컴퓨팅 장치(예 : 휴대 전화, 스마트 폰, 태블릿 컴퓨터, 웨어러블 기기(손목 시계, 완장, 보석, 모자, 가상 현실 고글 또는 안경, 증강 현실 고글 또는 안경, 헤드 마운트 디스플레이 등), 노트북 컴퓨터 등)에서 실행되는 모바일 애플리케이션("앱")에서 실행될 수 있다. 일례에서, 클라이언트/서버 아키텍처가 사용될 수 있다(예를 들어, 모바일 컴퓨팅 장치(클라이언트 장치로서)는 사용자 입력 데이터를 서버 장치로 전송하고 서버로부터 출력(예를 들어, 디스플레이용)을 위한 최종 출력 데이터를 수신한다). 다른 예에서, 모든 계산은 모바일 컴퓨팅 장치의 모바일 앱(및/또는 다른 앱) 내에서 수행될 수 있다. 다른 예에서, 계산은 모바일 컴퓨팅 장치와 하나 이상의 서버 장치간에 분할될 수 있다.
일부 구현에서, 장치(700)는 프로세서(702), 메모리(704), 입력/출력(I/O) 인터페이스(706) 및 카메라(716)를 포함한다. 프로세서(702)는 프로그램 코드를 실행하고 장치(700)의 기본 동작을 제어하기 위한 하나 이상의 프로세서 및/또는 처리 회로일 수 있다. "프로세서"는 데이터, 신호 또는 기타 정보를 처리하는 적절한 하드웨어 시스템, 메커니즘 또는 컴포넌트를 포함한다. 프로세서는 하나 이상의 코어가 있는 범용 CPU(중앙 처리 장치)가 있는 시스템(예: 단일 코어, 듀얼 코어 또는 멀티 코어 구성), 다중 처리 장치(예: 다중 프로세서 구성), 그래픽 처리 장치 (GPU), FPGA(Field-Programmable Gate Array), ASIC(application-specific integrated circuit), CPLD(complex programmable logic device), 기능 달성을 위한 전용 회로, 신경망 모델 기반 처리를 구현하는 특수 목적 프로세서, 신경 회로, 행렬 계산(예: 행렬 곱셈)에 최적화된 프로세서 또는 다른 시스템을 포함할 수 있다. 일부 구현에서, 프로세서(702)는 신경망 처리를 구현하는 하나 이상의 코-프로세서를 포함할 수 있다. 일부 구현에서, 프로세서(702)는 확률적 출력을 생성하기 위해 데이터를 처리(프로세싱)는하는 프로세서일 수 있으며, 예를 들어, 프로세서(702)에 의해 생성된 출력은 부정확할 수 있거나 예상 출력으로부터의 범위 내에서 정확할 수 있다. 처리(프로세싱)는 특정 지리적 위치로 제한되거나 일시적인 제한이 있을 필요가 없으며, 예를 들어, 프로세서는 "실시간", "오프라인", "배치(batch) 모드" 등의 기능을 수행할 수 있다. 처리의 일부는 상이한(또는 동일한) 처리 시스템에 의해 상이한 시간 및 상이한 위치에서 수행될 수 있다. 컴퓨터는 메모리와 통신하는 모든 프로세서일 수 있다.
메모리(704)는 일반적으로 프로세서(702)에 의한 액세스를 위해 장치(700)에 제공되고, RAM(Random Access Memory), ROM(Read-Only Memory), EEPROM(Electrical Erasable Read-Only Memory), 플래시 메모리 등과 같은 임의의 적절한 프로세서 판독 가능 저장 매체가 될 수 있으며, 이는 프로세서에 의한 실행을 위한 명령어를 저장하기에 적합하고, 프로세서(702)와 분리되어 있고 및/또는 그와 통합된다. 메모리(704)는 운영 체제(708), 기계 학습 애플리케이션(730), 다른 애플리케이션(712) 및 애플리케이션 데이터(714)를 포함하여 프로세서(702)에 의해 서버 장치(700)에서 작동하는 소프트웨어를 저장할 수 있다. 다른 애플리케이션(712)은 카메라 애플리케이션, 이미지 갤러리 또는 이미지 라이브러리 애플리케이션, 데이터 디스플레이 엔진, 웹 호스팅 엔진, 이미지 디스플레이 엔진, 알림 엔진, 소셜 네트워킹 엔진 등과 같은 애플리케이션을 포함할 수 있다. 일부 구현에서, 기계 학습 애플리케이션(730) 및 다른 애플리케이션(712)은 각각 프로세서(702)가 본 명세서에 설명된 기능, 예를 들어 도 2, 도 3 및 도 4의 방법의 일부 또는 전부를 수행할 수 있게 하는 명령어를 포함할 수 있다.
다른 애플리케이션(712)은 예를 들어 카메라 애플리케이션, 이미지 라이브러리 애플리케이션, 이미지 갤러리 애플리케이션, 미디어 디스플레이 애플리케이션, 통신 애플리케이션, 웹 호스팅 엔진 또는 애플리케이션, 매핑 애플리케이션, 미디어 공유 애플리케이션 등을 포함할 수 있다. 여기에 개시된 하나 이상의 방법은 여러 환경 및 플랫폼에서 작동할 수 있으며, 예를 들어, 임의의 유형의 컴퓨팅 장치에서 실행될 수 있는 독립형 컴퓨터 프로그램, 웹 페이지를 갖는 웹 애플리케이션, 모바일 애플리케이션( "앱")에서 실행될 수 있는 모바일 컴퓨팅 장치 등에서 실행된다.
다양한 구현에서, 기계 학습 애플리케이션은 베이지안 분류기, 지원 벡터 기계, 신경망, 또는 기타 학습 기술을 활용할 수 있다. 일부 구현에서, 기계 학습 애플리케이션(730)은 훈련된 모델(734), 추론 엔진(736), 및 데이터(732)를 포함할 수 있다. 일부 구현에서, 데이터(732)는 훈련 데이터, 예를 들어 훈련된 모델(734)을 생성하는 데 사용되는 데이터를 포함할 수 있다. 예를 들어 훈련 데이터는 텍스트, 이미지, 오디오, 비디오 등과 같은 모든 유형의 데이터를 포함할 수 있다. 예를 들어, 훈련 데이터는 모션 이미지를 포함할 수 있다. 훈련 데이터는 예를 들어 훈련용으로 특별히 표시된 데이터 저장소, 기계 학습을 위한 훈련 데이터로 사용하도록 허가된 데이터 등과 같은 모든 소스에서 얻을 수 있다. 하나 이상의 사용자가 기계 학습 모델, 예를 들어 훈련된 모델(734)을 훈련하기 위해 각자의 사용자 데이터를 사용하는 것을 허용하는 구현에서 훈련 데이터는 이러한 사용자 데이터를 포함할 수 있다. 사용자가 각자의 사용자 데이터의 사용을 허용하는 구현에서, 데이터(732)는 이미지 또는 이미지 메타데이터(예: 모션 이미지, 모션 아티팩트 또는 기타 사용자 생성 이미지, 다른 사용자와 이미지 공유에 관한 데이터, 이미지와 관련된 레이블 등), 통신(예: 이메일, 문자 메시지, 음성, 비디오 등과 같은 채팅 데이터), 문서(예: 스프레드시트, 텍스트 문서, 프레젠테이션 등)와 같은 허용된 데이터를 포함할 수 있다.
일부 구현에서, 훈련 데이터는 훈련되는 컨텍스트에서 사용자 입력 또는 활동을 기반으로하지 않는 데이터(예: 시뮬레이션 또는 컴퓨터 생성 비디오에서 생성된 데이터 등)와 같이 훈련 목적으로 생성된 합성 데이터를 포함할 수 있다. 일부 구현에서, 기계 학습 애플리케이션(730)은 데이터(732)를 제외한다. 예를 들어, 이러한 구현에서, 훈련된 모델(734)은 예를 들어 다른 장치에서 생성될 수 있고 기계 학습 애플리케이션(730)의 일부로서 제공될 수 있다. 다양한 구현에서, 훈련된 모델(734)은 모델 구조 또는 형태(예를 들어, 신경망 노드의 수 및 유형, 노드 간의 연결 및 노드를 복수의 레이어으로 구성) 및 관련 가중치를 포함하는 데이터 파일로 제공될 수 있다. 추론 엔진(736)은 훈련된 모델(734)에 대한 데이터 파일을 읽고 훈련된 모델(734)에 지정된 모델 구조 또는 형태에 기초한 노드 연결성(연결), 레이어 및 가중치를 갖는 신경망을 구현할 수 있다.
기계 학습 애플리케이션(730)은 또한 훈련된 모델(734)을 포함한다. 일부 구현에서, 훈련된 모델은 하나 이상의 모델 형태 또는 구조를 포함할 수 있다. 예를 들면, 모델 형태 또는 구조는 선형 네트워크, 복수의 레이어를 구현하는 심층 신경망(예: 입력 레이어과 출력 레이어 사이의 "은닉 레이어", 각 레이어는 선형 네트워크임), 컨벌루션 신경망(예: 입력 데이터를 여러 부분 또는 타일로 구분하거나 분할하고, 하나 이상의 신경망 레이어를 사용하여 각 타일을 개별적으로 처리하고, 각 타일 처리 결과를 집계하는 네트워크), 시퀀스-투-시퀀스(sequence-to-sequence) 신경망 (예: 문장의 단어, 비디오의 프레임 등과 같은 순차적 데이터를 입력으로 수신하고 결과 시퀀스를 출력으로 생성하는 네트워크) 등과 같은 모든 유형의 신경망을 포함할 수 있다. 모델 형태 또는 구조는 다양한 노드 사이의 연결과 레이어으로의 노드 구성을 지정할 수 있다. 예를 들어, 제1 레이어(예를 들어, 입력 레이어)의 노드는 입력 데이터(732) 또는 애플리케이션 데이터(714)로서 데이터를 수신할 수 있다. 이러한 데이터는 예를 들어, 학습된 모델이 예를 들어 복수의 프레임을 포함하는 비디오의 분석에 사용될 때 노드 당 하나 이상의 픽셀을 포함할 수 있다. 후속 중간 레이어는 모델 형태 또는 구조에 지정된 연결에 따라 이전 레이어의 노드의 입력, 출력으로 수신할 수 있다. 이러한 레이어는 히든 레이어라고도 한다. 최종 레이어(예: 출력 레이어)는 기계 학습 애플리케이션의 출력을 생성한다. 예를 들어, 출력은
모션 스코어, 이미지에 대한 레이블 세트, 이미지를 다른 이미지(예: 이미지에 대한 특징 벡터)와 비교할 수 있도록 하는 이미지 표현, 입력 문장에 응답하는 출력 문장, 특정 훈련된 모델에 따라 입력 데이터 등에 대한 하나 이상의 카테고리일 수 있다. 일부 구현에서, 모델 형태 또는 구조는 또한 각 레이어에서 노드의 수 및/또는 유형을 지정한다.
상이한 구현들에서, 훈련된 모델(734)은 모델 구조 또는 형태당 레이어들로 배열된 복수의 노드들을 포함할 수 있다. 일부 구현에서, 노드는 메모리가 없는 계산 노드일 수 있으며, 예를 들어 하나의 출력 유닛을 생성하기 위해 하나의 입력 유닛을 처리하도록 구성될 수 있다. 노드에 의해 수행되는 계산은, 예를 들어, 복수의 노드 입력들 각각에 가중치를 곱하고, 가중 합을 획득하고, 가중 합을 바이어스 또는 인터셉트 값으로 조정하여 노드 출력을 생성하는 것을 포함할 수 있다. 일부 구현에서, 노드에 의해 수행되는 계산은 또한 조정된 가중 합에 스텝/활성화 함수를 적용하는 것을 포함할 수 있다. 일부 구현에서, 스텝/활성화 함수는 비선형 함수일 수 있다. 다양한 구현들에서, 그러한 계산은 행렬 곱셈과 같은 연산들을 포함할 수 있다. 일부 구현에서, 복수의 노드에 의한 계산은, 예를 들어, GPU의 개별 처리 유닛, 또는 특수 목적 신경 회로를 사용하여, 멀티코어 프로세서의 다중 프로세서 코어를 사용하여 병렬로 수행될 수 있다. 일부 구현에서, 노드는 메모리를 포함할 수 있으며, 예를 들어 후속 입력을 처리할 때 하나 이상의 이전 입력을 저장하고 사용할 수 있다. 예를 들어, 메모리가 있는 노드는 LSTM(long short-term memory) 노드를 포함할 수 있다. LSTM 노드는 메모리를 사용하여 노드가 FSM(finite state machine)처럼 작동하도록 허용하는 "state(상태)"를 유지할 수 있다. 이러한 노드가 있는 모델은 순차적 데이터(예: 문장 또는 단락의 단어, 비디오의 프레임, 음성 또는 기타 오디오 등)를 처리하는 데 유용할 수 있다.
일부 구현에서, 훈련된 모델(734)은 개별 노드에 대한 임베딩 또는 가중치를 포함할 수 있다. 예를 들어, 모델은 모델 형태 또는 구조에 의해 지정된대로 레이어으로 구성된 복수의 노드로 시작될 수 있다. 초기화시, 모델 형태에 따라 연결된 각 노드 쌍, 예를 들어 신경망의 연속적인 레이어의 노드 사이의 연결에 각각의 가중치가 적용될 수 있다. 예를 들어, 각각의 가중치는 무작위로 할당되거나 기본값으로 초기화될 수 있다. 모델은 결과를 생성하기 위해 예를 들어 데이터(732)를 사용하여 훈련될 수 있다.
예를 들어, 훈련에는 지도(supervised) 학습 기술 적용이 포함될 수 있다. 지도 학습에서, 훈련 데이터는 복수의 입력(예를 들어, 비디오 세트) 및 각 입력에 대한 대응하는 예상 출력(예를 들어, 각 비디오에 대한 하나 이상의 레이블)을 포함할 수 있다. 모델의 출력과 예상 출력의 비교를 기반으로 가중치 값은 예를 들어 유사한 입력이 제공될 때 모델이 예상 출력을 생성할 확률을 높이는 방식으로 자동으로 조정된다.
일부 구현에서, 훈련은 비지도 학습 기술을 적용하는 것을 포함할 수 있다. 비지도 학습에서, 입력 데이터만 제공될 수 있고 모델은 데이터를 차별화하도록 훈련될 수 있다. 예를 들어, 입력 데이터를 복수의 그룹으로 클러스터링하기 위해, 각 그룹은 어떤 방식으로 유사한 입력 데이터를 포함한다. 예를 들어, 모델은 모션 이미지에 스코어를 할당하도록 훈련될 수 있다.
다양한 구현에서 훈련된 모델은 모델 구조에 해당하는 가중치 또는 임베딩 세트를 포함한다. 데이터(732)가 생략된 구현에서, 기계 학습 애플리케이션(730)은 예를 들어, 기계 학습 애플리케이션(730)의 개발자, 제3자 등에 의한 사전 훈련에 기초한 훈련된 모델(734)을 포함할 수 있다. 일부 구현에서, 훈련된 모델(734)은 고정된, 예를 들어 가중치를 제공하는 서버로부터 다운로드되는 가중치 세트를 포함할 수 있다.
기계 학습 애플리케이션(730)은 또한 추론 엔진(736)을 포함한다. 추론 엔진(736)은 추론을 제공하기 위해 애플리케이션 데이터(714)(예를 들어, 비디오)와 같은 데이터에 훈련된 모델(734)을 적용하도록 구성된다. 일부 구현에서, 추론 엔진(736)은 프로세서(702)에 의해 실행될 소프트웨어 코드를 포함할 수 있다. 일부 구현에서, 추론 엔진(736)은 프로세서(702)가 훈련된 모델을 적용할 수 있게 하는 회로 구성(예를 들어, 프로그래밍 가능 프로세서에 대한, FPGA(field programmable gate array) 등)을 지정할 수 있다. 일부 구현에서, 추론 엔진(736)은 소프트웨어 명령어, 하드웨어 명령어 또는 조합을 포함할 수 있다. 일부 구현에서, 추론 엔진(736)은 추론 엔진(736)을 호출하기 위해, 예를 들어, 추론을 생성하기 위해 애플리케이션 데이터(714)에 훈련된 모델(734)을 적용하기 위해 운영 체제(708) 및/또는 다른 애플리케이션(712)에 의해 사용될 수 있는 애플리케이션 프로그래밍 인터페이스(API)를 제공할 수 있다.
기계 학습 애플리케이션(730)은 몇 가지 기술적 이점을 제공할 수 있다. 예를 들어, 훈련된 모델(734)이 비지도 학습에 기초하여 생성될 때, 훈련된 모델(734)은 입력 데이터, 예를 들어 애플리케이션 데이터(714)로부터 지식 표현(예를 들어, 수치 표현)을 생성하기 위해 추론 엔진(736)에 의해 적용될 수 있다. 예를 들어, 이미지 분석을 위해 훈련된 모델은 입력 이미지(예: 10MB)보다 작은 데이터 크기(예: 1KB)를 갖는 이미지 표현을 생성할 수 있다. 일부 구현에서, 이러한 표현은 출력(예를 들어, 레이블, 분류, 이미지를 설명하는 문장 등)을 생성하기 위해 처리 비용(예를 들어, 계산 비용, 메모리 사용 등)을 줄이는 데 도움이 될 수 있다. 일부 구현에서, 이러한 표현은 추론 엔진(736)의 출력으로부터 출력을 생성하는 다른 기계 학습 애플리케이션에 대한 입력으로서 제공될 수 있다. 일부 구현에서, 기계 학습 애플리케이션(730)에 의해 생성된 지식 표현은 예를 들어 네트워크를 통해 추가 처리를 수행하는 다른 장치에 제공될 수 있다. 그러한 구현에서, 이미지보다 지식 표현을 제공하는 것은 기술적 이점을 제공할 수 있으며, 예를 들어 감소된 비용으로 더 빠른 데이터 전송을 가능하게 할 수 있다. 다른 예에서, 문서 클러스터링을 위해 훈련된 모델은 입력 문서로부터 문서 클러스터를 생성할 수 있다. 문서 클러스터는 원본 문서에 액세스할 필요 없이 추가 처리(예: 문서가 주제와 관련이 있는지 여부 결정, 문서에 대한 분류 범주 결정 등)에 적합할 수 있으므로 계산 비용을 절약할 수 있다.
일부 구현에서, 기계 학습 애플리케이션(730)은 오프라인 방식으로 구현될 수 있다. 이러한 구현에서, 훈련된 모델(734)은 제1 단계에서 생성될 수 있고 기계 학습 애플리케이션(730)의 일부로서 제공될 수 있다. 일부 구현에서, 기계 학습 애플리케이션(730)은 온라인 방식으로 구현될 수 있다. 예를 들어, 이러한 구현에서, 기계 학습 애플리케이션(730)(예: 운영 체제(708), 하나 이상의 다른 애플리케이션(712) 등)을 호출하는 애플리케이션은 기계 학습 애플리케이션(730)에 의해 생성된 추론을 이용할 수 있으며, 예를 들어 사용자에게 추론을 제공하고 시스템 로그(예: 사용자가 허용하는 경우 추론을 기반으로 사용자가 취한 조치 또는 추가 처리를 위한 입력으로 활용되는 경우 추가 처리의 결과)를 생성할 수 있다. 시스템 로그는 주기적으로, 예를 들어, 시간별, 월별, 분기 별 등으로 생성될 수 있으며, 사용자 허가하에 훈련된 모델(734)을 업데이트하기 위해, 예를 들어, 훈련된 모델(734)에 대한 임베딩을 업데이트하기 위해 사용될 수 있다.
일부 구현에서, 기계 학습 애플리케이션(730)은 기계 학습 애플리케이션(730)이 실행되는 장치(700)의 특정 구성에 적응할 수 있는 방식으로 구현될 수 있다. 예를 들어, 기계 학습 애플리케이션(730)은 가용 계산 자원, 예를 들어 프로세서(702)를 활용하는 계산 그래프를 결정할 수 있다. 예를 들어, 기계 학습 애플리케이션(730)이 다중 장치에서 분산 애플리케이션으로 구현되는 경우, 기계 학습 애플리케이션(730)은 계산을 최적화하는 방식으로 개별 장치에서 수행될 계산을 결정할 수 있다. 다른 예에서, 기계 학습 애플리케이션(730)은 프로세서(702)가 특정 개수의 GPU 코어(예를 들어, 1000)를 갖는 GPU를 포함하고 그에 따라(예를 들어, 1000 개의 개별 프로세스 또는 스레드로서) 추론 엔진을 구현한다고 결정할 수 있다.
일부 구현에서, 기계 학습 애플리케이션(730)은 훈련된 모델의 앙상블을 구현할 수 있다. 예를 들어, 훈련된 모델(734)은 동일한 입력 데이터에 각각 적용 가능한 복수의 훈련된 모델을 포함할 수 있다. 이러한 구현에서, 기계 학습 애플리케이션(730)은 예를 들어 이용 가능한 계산 자원, 사전 추론을 통한 성공률 등에 기초하여 특정 훈련된 모델을 선택할 수 있다. 일부 구현에서, 기계 학습 애플리케이션(730)은 복수의 훈련된 모델이 적용되도록 추론 엔진(736)을 실행할 수 있다. 이러한 구현에서, 기계 학습 애플리케이션(730)은, 예를 들어, 각각의 훈련된 모델을 적용함으로써 개별 출력을 스코어화하는 투표 기술을 사용하거나 하나 이상의 특정 출력을 선택함으로써 개별 모델을 적용하여 출력을 결합할 수 있다. 또한, 이러한 구현에서 기계 학습 애플리케이션은 개별 훈련된 모델을 적용하기 위한 시간 임계값(예: 0.5ms)을 적용하고 시간 임계값 내에서 사용할 수 있는 개별 출력만을 활용할 수 있다. 시간 임계값 내에 수신되지 않은 출력은 사용되지 않을 수 있다(예: 폐기됨). 예를 들어, 이러한 접근법은 예를 들어, 운영 체제(708) 또는 하나 이상의 애플리케이션(712)에 의해 기계 학습 애플리케이션을 호출하는 동안 지정된 시간 제한이 있을 때 적합할 수 있다.
다른 구현에서, 기계 학습 애플리케이션(730)은 다른 유형의 출력을 생성할 수 있다. 예를 들어, 기계 학습 애플리케이션(730)은 표현 또는 클러스터(예: 입력 데이터의 수치 표현), 레이블(예: 이미지, 문서 등을 포함하는 입력 데이터용), 구 또는 문장(예: 입력 문장에 대한 응답으로 사용하기에 적합한 이미지 또는 비디오에 대한 설명 등), 이미지(예: 입력에 응답하여 기계 학습 애플리케이션에 의해 생성됨), 오디오 또는 비디오(예: 입력 비디오에 응답하여 기계 학습 애플리케이션(730)은 특정 효과가 적용된 출력 비디오를 생성)(예를 들어, 훈련된 모델(734)이 만화책 또는 특정 아티스트 등의 훈련 데이터를 사용하여 훈련될 때 만화책 또는 특정 예술가의 스타일로 렌더링됨)를 제공할 수 있다. 일부 구현에서, 기계 학습 애플리케이션(730)은 예를 들어, 호출 애플리케이션(운영 체제(708) 또는 하나 이상의 애플리케이션(712))에 의해 지정된 형식에 기초하여 출력을 생성할 수 있다. 일부 구현에서, 호출 애플리케이션은 또 다른 기계 학습 애플리케이션일 수 있다. 예를 들어, 이러한 구성은 생성적 적대 네트워크(generative adversarial networks)에서 사용될 수 있으며, 여기서 호출하는 기계 학습 애플리케이션은 기계 학습 애플리케이션(730)의 출력을 사용하여 훈련되고 그 반대의 경우도 마찬가지이다.
메모리(704) 내의 임의의 소프트웨어는 대안적으로 임의의 다른 적절한 저장 위치 또는 컴퓨터 판독 가능 매체에 저장될 수 있다. 또한, 메모리(704)(및/또는 다른 연결된 저장 장치(들))는 하나 이상의 메시지, 하나 이상의 분류법(taxonomies), 전자 백과 사전, 사전, 시소러스(thesauruses), 지식 기반, 메시지 데이터, 문법, 사용자 선호도, 및/또는 여기에 설명된 특징에 사용되는 기타 명령어 및 데이터를 저장할 수 있다. 메모리(704) 및 임의의 다른 유형의 저장소(스토리지)(자기 디스크, 광 디스크, 자기 테이프 또는 기타 유형의 매체)는 "스토리지" 또는 "스토리지 장치"로 간주될 수 있다.
I/O 인터페이스(706)는 서버 장치(700)를 다른 시스템 및 장치와 인터페이스할 수 있는 기능을 제공할 수 있다.인터페이스된 장치는 장치(700)의 일부로서 포함될 수 있거나 분리되어 장치(700)와 통신할 수 있다. 예를 들어, 네트워크 통신 장치, 저장 장치(예를 들어, 메모리 및/또는 데이터베이스(106)) 및 입력/출력 장치는 I/O 인터페이스(706)를 통해 통신할 수 있다. 일부 구현에서, I/O 인터페이스는 입력 장치(키보드, 포인팅 장치, 터치 스크린, 마이크, 카메라, 스캐너, 센서 등) 및/또는 출력 장치(디스플레이 장치, 스피커 장치, 프린터, 모터 등)와 같은 인터페이스 장치에 연결할 수 있다.
I/O 인터페이스(706)에 연결할 수 있는 인터페이스 장치의 일부 예는 본 명세서에 설명된 바와 같이 출력 애플리케이션의 콘텐츠, 예를 들어 이미지, 비디오 및/또는 사용자 인터페이스를 디스플레이하는 데 사용될 수 있는 하나 이상의 디스플레이 장치(720)를 포함할 수 있다. 디스플레이 장치(720)는 로컬 연결(예를 들어, 디스플레이 버스) 및/또는 네트워크 연결을 통해 장치(700)에 연결될 수 있으며 임의의 적절한 디스플레이 장치일 수 있다. 디스플레이 장치(720)는 LCD, LED 또는 플라즈마 디스플레이 스크린, CRT, 텔레비전, 모니터, 터치 스크린, 3-D 디스플레이 스크린, 또는 다른 시각적 디스플레이 장치와 같은 임의의 적절한 디스플레이 장치를 포함할 수 있다. 예를 들어, 디스플레이 장치(720)는 모바일 장치에 제공된 평면 디스플레이 화면, 고글 또는 헤드셋 장치에 제공된 다중 디스플레이 화면, 또는 컴퓨터 장치용 모니터 화면일 수 있다.
I/O 인터페이스(706)는 다른 입력 및 출력 장치와 인터페이스할 수 있다. 일부 예에는 이미지를 캡처할 수 있는 하나 이상의 카메라가 포함된다. 일부 구현은, 사운드 캡처를 위한 마이크로폰(예: 캡처된 이미지, 음성 명령 등의 일부로), 사운드를 출력하기 위한 오디오 스피커 장치 또는 기타 입력 및 출력 장치를 제공할 수 있다.
카메라(716)는 복수의 프레임을 포함하는 모션 이미지를 캡처할 수 있는 임의의 유형의 카메라일 수 있다. 여기에 사용된 카메라는 임의의 이미지 캡처 장치를 포함할 수 있다. 일부 구현에서, 카메라(716)는 상이한 기능, 예를 들어 전면 대 후면, 상이한 줌 레벨, 캡처된 이미지의 이미지 해상도 등을 갖는 복수의 렌즈를 포함할 수 있다. 일부 구현에서, 장치(디바이스)(700)는 깊이 센서, 가속도계, 위치 센서(예를 들어, GPS), 자이로스코프 등과 같은 하나 이상의 센서를 포함할 수 있다. 일부 구현에서, 하나 이상의 센서는 카메라를 사용하여 캡처된 모션 이미지의 다른 프레임에 대응하는 센서 판독 값을 얻기 위해 카메라와 함께 작동될 수 있다.
설명의 편의를 위해, 도 7은 프로세서(702), 메모리(704), I/O 인터페이스(706), 카메라(716) 및 소프트웨어 블록(708, 712 및 730) 각각에 대한 하나의 블록을 도시한다. 이러한 블록은 하나 이상의 프로세서 또는 처리 회로, 운영 체제, 메모리, I/O 인터페이스, 애플리케이션 및/또는 소프트웨어 모듈을 나타낼 수 있다. 다른 구현에서, 장치(700)는 도시된 모든 컴포넌트를 갖지 않을 수 있고 및/또는 여기에 도시된 것 대신에 또는 이에 추가하여 다른 유형의 요소를 포함하는 다른 요소를 가질 수 있다. 일부 컴포넌트는 본 명세서의 일부 구현에서 설명된 바와 같이 블록 및 동작을 수행하는 것으로 설명되지만, 환경(100), 장치(700), 유사한 시스템, 또는 그러한 시스템과 연관된 임의의 적절한 프로세서 또는 프로세서의 임의의 적절한 컴포넌트 또는 컴포넌트의 조합은 설명된 블록 및 동작을 수행할 수 있다.
여기에 설명된 방법은 컴퓨터에서 실행될 수 있는 컴퓨터 프로그램 명령어 또는 코드에 의해 구현될 수 있다. 예를 들면, 코드는 하나 이상의 디지털 프로세서(예: 마이크로프로세서 또는 기타 처리 회로)에 의해 구현될 수 있으며, 반도체 또는 솔리드 스테이트 메모리, 자기 테이프, 이동식 컴퓨터 디스켓, 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. 복수의 프레임을 포함하는 모션 이미지를 디스플레이하는 컴퓨터로 구현되는 방법으로서,
    모션 이미지의 복수의 프레임에 기초하여 모션 이미지에 대한 모션 스코어를 결정하는 단계;
    모션 스코어가 디스플레이 임계값을 충족하는지 여부를 결정하는 단계;
    모션 스코어가 디스플레이 임계값을 충족하는 경우, 모션 이미지의 복수의 프레임을 연속적으로 디스플레이하여 피사체 모션과 함께 모션 이미지가 디스플레이되도록 하는 단계; 그리고
    모션 스코어가 디스플레이 임계값을 충족하지 않는 경우, 모션 이미지의 복수의 프레임 중 특정 프레임을 디스플레이하여 피사체 모션없이 모션 이미지가 디스플레이되도록 하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  2. 제1항에 있어서, 상기 모션 이미지는 하나 이상의 다른 이미지를 포함하는 사용자 인터페이스에 디스플레이되고, 그리고 모션 스코어가 디스플레이 임계값을 충족하는 경우, 사용자 인터페이스의 모션 이미지의 크기는 하나 이상의 다른 이미지 중 적어도 하나보다 큰 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  3. 제1항에 있어서, 모션 이미지는 하나 이상의 다른 이미지를 포함하는 사용자 인터페이스의 일부로 디스플레이되고, 상기 방법은,
    하나 이상의 다른 이미지의 각각의 모션 스코어를 결정하는 단계; 그리고
    각각의 모션 스코어에 기초하여 디스플레이 임계값을 선택하는 단계를 더 포함하며, 상기 디스플레이 임계값을 선택하는 단계는,
    모션 이미지의 모션 스코어보다 높은 각각의 모션 스코어와 연관된 하나 이상의 다른 이미지의 개수를 결정하는 단계;
    상기 개수가 임계 개수 이상이면, 디스플레이 임계값을 모션 이미지의 모션 스코어보다 높게 설정하는 단계; 그리고
    상기 개수가 임계 개수보다 작으면, 디스플레이 임계값을 모션 이미지의 모션 스코어보다 낮게 설정하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  4. 제3항에 있어서, 상기 방법은,
    상기 모션 이미지를 디스플레이하는 소프트웨어 애플리케이션의 실행 스레드의 수에 적어도 부분적으로 기초하여 상기 임계 개수를 결정하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  5. 제1항에 있어서, 모션 스코어를 결정하는 단계는,
    상기 복수의 프레임의 각각의 픽셀 값에 기초하여, 상기 모션 이미지의 배경 부분의 안정도 레벨, 상기 모션 이미지의 피사체의 유형 및 상기 모션 이미지 내 피사체의 움직임 레벨을 결정하는 단계; 그리고
    상기 안정도 레벨, 피사체의 유형, 피사체의 움직임 레벨에 따라 모션 스코어를 계산하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  6. 제5항에 있어서, 피사체의 유형은 풍경 또는 무생물 객체이고, 그리고 모션 스코어를 계산하는 단계는 모션 스코어를 디스플레이 임계값보다 작은 값으로 설정하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  7. 제5항에 있어서, 상기 모션 스코어를 계산하는 단계는,
    피사체의 움직임 레벨이 움직임의 임계값 레벨을 충족하는지 여부를 결정하는 단계;
    피사체의 움직임 레벨이 움직임의 임계값 레벨을 충족하는 것으로 결정되면, 모션 스코어를 디스플레이 임계값을 충족하는 값으로 설정하는 단계; 그리고
    상기 피사체의 움직임 레벨이 움직임의 임계값 레벨을 충족하지 않는 것으로 결정되면, 모션 스코어를 디스플레이 임계값을 충족하지 않는 값으로 설정하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  8. 제7항에 있어서,
    피사체의 제1 유형은 얼굴이고 그리고 피사체의 제2 유형은 바디이며,
    얼굴과 연관된 움직임의 제1 임계값 레벨은 바디와 연관된 움직임의 제2 임계값 레벨보다 낮은 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  9. 제1항에 있어서,
    모션 이미지에 대한 모션 스코어를 결정하는 단계는 모션 이미지의 뷰의 카운트가 시청률(viewership) 임계값을 충족하거나 적어도 하나의 모션 아티팩트가 모션 이미지에 기초하여 생성된 경우 디스플레이 임계값을 충족하는 값으로 모션 스코어를 설정하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  10. 제1항에 있어서, 모션 이미지에 대한 모션 스코어를 결정하는 단계는 복수의 레이어로 구성된 복수의 노드를 포함하고 그리고 모션 스코어를 결정하도록 구성된 신경망을 포함하는 훈련된 기계 학습 모델을 적용하는 단계를 포함하고, 상기 모션 이미지는 훈련된 기계 학습 모델에 대한 입력으로서 제공되는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  11. 제1항에 있어서, 상기 모션 이미지는 클라이언트 장치에 의해 캡처되고 그리고 상기 클라이언트 장치의 휘발성 메모리에 저장되며, 상기 방법은,
    모션 스코어가 저장 임계값을 충족하는지 결정하는 단계;
    모션 스코어가 저장 임계값을 충족하는 경우, 모션 이미지를 클라이언트 장치의 비휘발성 메모리에 저장하는 단계; 그리고
    모션 스코어가 저장 임계값을 충족하지 않는 경우,
    모션 이미지를 정지 이미지로 자동 변경하는 단계 -상기 정지 이미지은 상기 복수의 프레임 중 특정 프레임만을 포함하고 그리고 상기 모션 이미지보다 파일 사이즈가 작은 것을 특징으로 하고, 상기 자동 변경하는 것은 상기 복수의 프레임 중 다른 프레임을 제거하는 것을 포함함-; 그리고
    클라이언트 장치의 비휘발성 메모리에 정지 이미지를 저장하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  12. 복수의 프레임을 포함하는 모션 이미지를 디스플레이하는 장치로서,
    프로세서; 그리고
    프로세서에 의해 실행될 때 프로세서로 하여금 동작들을 수행하게 하는 명령어가 저장된 비일시적 컴퓨터 판독 가능 매체를 포함하며, 상기 동작들은,
    복수의 프레임에 기초하여 모션 이미지에 대한 모션 스코어를 결정하는 동작;
    모션 스코어가 디스플레이 임계값을 충족하는지 여부를 결정하는 동작;
    모션 스코어가 디스플레이 임계값을 충족하는 경우, 모션 이미지의 복수의 프레임을 연속적으로 디스플레이하여 피사체 모션과 함께 모션 이미지가 디스플레이되도록 하는 동작; 그리고
    모션 스코어가 디스플레이 임계값을 충족하지 않는 경우, 모션 이미지의 복수의 프레임 중 특정 프레임을 디스플레이하여 피사체 모션없이 모션 이미지가 디스플레이되도록 하는 동작을 포함하는 것을 특징으로 하는 복수의 프레임을 포함하는 모션 이미지를 디스플레이하는 장치.
  13. 제12항에 있어서, 모션 이미지에 대한 모션 스코어를 결정하는 동작은 복수의 레이어로 구성된 복수의 노드를 포함하는 신경망을 포함하는 훈련된 기계 학습 모델을 적용하는 동작를 포함하고, 훈련된 기계 학습 모델은 상기 장치에 저장되고 그리고 모션 스코어를 결정하도록 구성되며, 상기 모션 이미지는 훈련된 기계 학습 모델에 대한 입력으로서 제공되는 것을 특징으로 하는 복수의 프레임을 포함하는 모션 이미지를 디스플레이하는 장치.
  14. 제13항에 있어서, 상기 동작들은,
    모션 이미지의 뷰의 카운트가 시청률 임계값을 충족하는지 또는 모션 이미지로부터 모션 아티팩트가 생성되었는지를 결정하는 동작; 그리고
    상기 결정에 응답하여, 훈련된 기계 학습 모델을 업데이트하는 동작을 더 포함하며, 훈련된 기계 학습 모델을 업데이트하는 동작은,
    복수의 노드 중 적어도 하나의 가중치를 조정하는 동작; 그리고
    복수의 노드 중 적어도 한 쌍의 노드 사이의 연결(connection)을 업데이트하는 동작 중 적어도 하나를 포함하는 것을 특징으로 하는 복수의 프레임을 포함하는 모션 이미지를 디스플레이하는 장치.
  15. 제13항에 있어서, 상기 동작들은,
    모션 이미지의 배경 부분의 안정도 레벨을 결정하는 동작; 그리고
    상기 모션 이미지의 피사체의 유형 및 상기 모션 이미지 내 피사체의 움직임 레벨을 결정하는 동작을 더 포함하며, 배경 부분의 안정도 레벨, 피사체의 유형 및 피사체의 움직임 레벨은 추가 입력으로서 훈련된 기계 학습 모델에 제공되는 것을 특징으로 하는 복수의 프레임을 포함하는 모션 이미지를 디스플레이하는 장치.
  16. 제13항에 있어서, 상기 동작들은,
    상기 복수의 프레임 중 특정 프레임만을 디스플레이하여 상기 모션 이미지를 정지 이미지로 디스플레이하는 사용자 입력을 수신하는 동작; 그리고
    사용자 입력에 응답하여,
    훈련된 기계 학습 모델을 업데이트하는 동작을 더 포함하며, 훈련된 기계 학습 모델을 업데이트하는 동작은,
    복수의 노드 중 하나의 노드의 가중치를 조정하는 동작; 그리고
    복수의 노드 중 한 쌍의 노드 사이의 연결을 업데이트하는 동작 중 적어도 하나를 포함하는 것을 특징으로 하는 복수의 프레임을 포함하는 모션 이미지를 디스플레이하는 장치.
  17. 제12항에 있어서, 상기 장치는 카메라를 더 포함하고, 상기 모션 이미지는 카메라로 캡처되어 상기 장치의 휘발성 메모리에 저장되고, 상기 동작들은,
    모션 스코어가 저장 임계값을 충족하는지 여부를 결정하는 동작;
    모션 스코어가 저장 임계값을 충족하는 경우, 모션 이미지를 장치의 비휘발성 메모리에 저장하는 동작; 그리고
    모션 스코어가 저장 임계값을 충족하지 않으면, 모션 이미지를 정지 이미지로 자동으로 변경하는 동작을 더 포함하며, 상기 정지 이미지은 상기 복수의 프레임 중 특정 프레임만을 포함하고 그리고 상기 모션 이미지보다 파일 사이즈가 작은 것을 특징으로 하고, 상기 자동으로 변경하는 동작은,
    복수의 프레임 중 다른 프레임을 제거하는 동작; 그리고
    장치의 비휘발성 메모리에 정지 이미지를 저장하는 동작을 포함하는 것을 특징으로 하는 복수의 프레임을 포함하는 모션 이미지를 디스플레이하는 장치.
  18. 프로세서에 의해 실행될 때 프로세서로 하여금 동작들을 수행하게 하는 명령어가 저장된 비일시적 컴퓨터 판독 가능 매체로서, 상기 동작들은,
    모션 이미지의 복수의 프레임에 기초하여 모션 이미지에 대한 모션 스코어를 결정하는 동작;
    모션 스코어가 디스플레이 임계값을 충족하는지 여부를 결정하는 동작;
    모션 스코어가 디스플레이 임계값을 충족하는 경우, 모션 이미지의 복수의 프레임을 연속적으로 디스플레이하여 피사체 모션과 함께 모션 이미지가 디스플레이되도록 하는 동작; 그리고
    모션 스코어가 디스플레이 임계값을 충족하지 않는 경우, 모션 이미지의 복수의 프레임 중 특정 프레임을 디스플레이하여 피사체 모션없이 모션 이미지가 디스플레이되도록 하는 동작을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 매체.
  19. 제18항에 있어서, 프로세서에 의해 실행될 때 프로세서로 하여금 추가 동작들을 수행하게 하는 추가 명령어가 저장되며, 상기 추가 동작들은,
    모션 이미지의 배경 부분의 안정도 레벨을 결정하는 동작; 그리고
    상기 모션 이미지의 피사체의 유형 및 상기 모션 이미지 내 피사체의 움직임 레벨을 결정하는 동작을 더 포함하며, 모션 스코어는 안정도의 레벨, 피사체의 유형 및 피사체의 움직임 레벨에 기초하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 매체.
  20. 제18항에 있어서, 프로세서에 의해 실행될 때 프로세서로 하여금 추가 동작들을 수행하게 하는 추가 명령어가 저장되며, 상기 추가 동작들은,
    하나 이상의 다른 이미지의 각각의 모션 스코어를 결정하는 동작; 그리고
    각각의 모션 스코어에 기초하여 디스플레이 임계값을 선택하는 동작을 포함하며, 디스플레이 임계값을 선택하는 동작은,
    모션 이미지의 모션 스코어보다 높은 각각의 모션 스코어와 연관된 하나 이상의 다른 이미지의 개수를 결정하는 동작;
    상기 개수가 임계 개수 이상이면, 디스플레이 임계값을 모션 이미지의 모션 스코어보다 높게 설정하는 동작; 그리고
    상기 개수가 임계 개수보다 작으면, 디스플레이 임계값을 모션 이미지의 모션 스코어보다 낮게 설정하는 동작을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 매체.
KR1020217026368A 2019-01-25 2019-09-27 모션을 선택적으로 묘사한 이미지 디스플레이 KR20210118437A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/258,406 2019-01-25
US16/258,406 US10775977B2 (en) 2019-01-25 2019-01-25 Image display with selective depiction of motion
PCT/US2019/053690 WO2020153999A1 (en) 2019-01-25 2019-09-27 Image display with selective depiction of motion

Publications (1)

Publication Number Publication Date
KR20210118437A true KR20210118437A (ko) 2021-09-30

Family

ID=68296684

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217026368A KR20210118437A (ko) 2019-01-25 2019-09-27 모션을 선택적으로 묘사한 이미지 디스플레이

Country Status (6)

Country Link
US (2) US10775977B2 (ko)
EP (1) EP3815042B1 (ko)
JP (2) JP7514848B2 (ko)
KR (1) KR20210118437A (ko)
CN (1) CN113348486A (ko)
WO (1) WO2020153999A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024005530A1 (ko) * 2022-06-28 2024-01-04 이상민 실물경제 기반의 메타버스 시스템 및 작동 방법

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9756249B1 (en) * 2016-04-27 2017-09-05 Gopro, Inc. Electronic image stabilization frequency estimator
EP3767543A1 (en) * 2019-07-17 2021-01-20 Robert Bosch GmbH Device and method for operating a neural network
KR102618732B1 (ko) * 2019-08-27 2023-12-27 엘지전자 주식회사 얼굴 인식 활용 단말기 및 얼굴 인식 활용 방법
US11645766B2 (en) * 2020-05-04 2023-05-09 International Business Machines Corporation Dynamic sampling for object recognition
KR102540756B1 (ko) * 2022-01-25 2023-06-08 주식회사 딥브레인에이아이 발화 합성 영상 생성 장치 및 방법
KR102540759B1 (ko) * 2022-02-09 2023-06-08 주식회사 딥브레인에이아이 발화 합성 영상 생성 장치 및 방법
KR102584484B1 (ko) * 2022-02-14 2023-10-04 주식회사 딥브레인에이아이 발화 합성 영상 생성 장치 및 방법
KR102584485B1 (ko) * 2022-02-14 2023-10-04 주식회사 딥브레인에이아이 발화 합성 영상 생성 장치 및 방법
CN114677391B (zh) * 2022-05-26 2022-08-26 青岛大学附属医院 一种脊椎图像分割方法
CN115187783B (zh) * 2022-09-09 2022-12-27 之江实验室 基于联邦学习的多任务混合监督医疗图像分割方法及系统

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08317378A (ja) * 1995-05-19 1996-11-29 Fujitsu General Ltd ビデオカメラ切換装置
JP2000115762A (ja) 1998-10-06 2000-04-21 Hitachi Ltd 監視装置
US6834128B1 (en) 2000-06-16 2004-12-21 Hewlett-Packard Development Company, L.P. Image mosaicing system and method adapted to mass-market hand-held digital cameras
JP2004357054A (ja) 2003-05-29 2004-12-16 Toshiba Corp 映像表示装置及び映像表示方法
JP2006222510A (ja) 2005-02-08 2006-08-24 Seiko Epson Corp 画像再生装置および画像再生プログラム
JP4232113B2 (ja) 2006-02-17 2009-03-04 ソニー株式会社 データ処理装置およびデータ処理方法、並びにプログラム
JP2009048347A (ja) 2007-08-17 2009-03-05 Seiko Epson Corp 画像処理装置、画像処理方法、および、画像処理プログラム
US8195038B2 (en) 2008-10-24 2012-06-05 At&T Intellectual Property I, L.P. Brief and high-interest video summary generation
US8494283B2 (en) 2010-12-21 2013-07-23 Microsoft Corporation Image quality assessment
JP2013015916A (ja) 2011-06-30 2013-01-24 Dainippon Printing Co Ltd 画像管理装置、画像管理方法、画像管理プログラム及び記録媒体
JP2013046259A (ja) 2011-08-24 2013-03-04 Olympus Imaging Corp 映像機器、制御方法およびプログラム
US8873887B2 (en) * 2013-01-24 2014-10-28 Google Inc. Systems and methods for resizing an image
JP2015061236A (ja) 2013-09-19 2015-03-30 カシオ計算機株式会社 画像処理装置、画像処理方法及びプログラム
JP6587610B2 (ja) * 2013-10-11 2019-10-09 マウナ ケア テクノロジーズ 映像医療機器により取得した画像を処理するシステムおよびそのシステムの作動方法
US9628702B2 (en) 2014-05-21 2017-04-18 Google Technology Holdings LLC Enhanced image capture
US9858295B2 (en) 2014-06-24 2018-01-02 Google Llc Ranking and selecting images for display from a set of images
US9646227B2 (en) 2014-07-29 2017-05-09 Microsoft Technology Licensing, Llc Computerized machine learning of interesting video sections
WO2017066593A1 (en) * 2015-10-16 2017-04-20 Canary Connect, Inc. Sensitivity adjustment for computer-vision triggered notifications
US20170161651A1 (en) 2015-12-04 2017-06-08 Nextop Italia Srl Electronic System and Method for Travel Planning, Based On Object-Oriented Technology
JP6517681B2 (ja) 2015-12-17 2019-05-22 日本電信電話株式会社 映像パターン学習装置、方法、及びプログラム
US10002435B2 (en) 2016-01-29 2018-06-19 Google Llc Detecting motion in images
US10909170B2 (en) * 2016-04-06 2021-02-02 Baidu Usa Llc Method for processing and rendering feed-like based images for mobile devices
US9532004B1 (en) 2016-05-12 2016-12-27 Google Inc. Animated user identifiers
WO2017208529A1 (ja) 2016-06-02 2017-12-07 オムロン株式会社 運転者状態推定装置、運転者状態推定システム、運転者状態推定方法、運転者状態推定プログラム、対象者状態推定装置、対象者状態推定方法、対象者状態推定プログラム、および記録媒体
JP2018081404A (ja) 2016-11-15 2018-05-24 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 識別方法、識別装置、識別器生成方法及び識別器生成装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024005530A1 (ko) * 2022-06-28 2024-01-04 이상민 실물경제 기반의 메타버스 시스템 및 작동 방법

Also Published As

Publication number Publication date
US20200241716A1 (en) 2020-07-30
JP2024073439A (ja) 2024-05-29
JP7514848B2 (ja) 2024-07-11
US11231838B2 (en) 2022-01-25
US20200393943A1 (en) 2020-12-17
EP3815042B1 (en) 2023-06-21
WO2020153999A1 (en) 2020-07-30
EP3815042A1 (en) 2021-05-05
US10775977B2 (en) 2020-09-15
JP2022525272A (ja) 2022-05-12
CN113348486A (zh) 2021-09-03

Similar Documents

Publication Publication Date Title
CN112740709B (zh) 一种执行用于视频分析的门控的计算机实现的方法、计算设备及计算机可读介质
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
US20240126810A1 (en) Using interpolation to generate a video from static images
WO2023177415A1 (en) Selective image blurring using machine learning

Legal Events

Date Code Title Description
E902 Notification of reason for refusal