KR20230021144A - 사용자 선호도를 반영한 기계 학습 기반 이미지 압축 세팅 - Google Patents

사용자 선호도를 반영한 기계 학습 기반 이미지 압축 세팅 Download PDF

Info

Publication number
KR20230021144A
KR20230021144A KR1020237001053A KR20237001053A KR20230021144A KR 20230021144 A KR20230021144 A KR 20230021144A KR 1020237001053 A KR1020237001053 A KR 1020237001053A KR 20237001053 A KR20237001053 A KR 20237001053A KR 20230021144 A KR20230021144 A KR 20230021144A
Authority
KR
South Korea
Prior art keywords
user
machine learning
learning model
image
input image
Prior art date
Application number
KR1020237001053A
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 KR20230021144A publication Critical patent/KR20230021144A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/774Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/002Image coding using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/778Active pattern-learning, e.g. online learning of image or video features
    • G06V10/7784Active pattern-learning, e.g. online learning of image or video features based on feedback from supervisors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/778Active pattern-learning, e.g. online learning of image or video features
    • G06V10/7784Active pattern-learning, e.g. online learning of image or video features based on feedback from supervisors
    • G06V10/7788Active pattern-learning, e.g. online learning of image or video features based on feedback from supervisors the supervisor being a human, e.g. interactive learning with a human teacher
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/162User input
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/58Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/583Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/766Arrangements for image or video recognition or understanding using pattern recognition or machine learning using regression, e.g. by projecting features on hyperplanes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Medical Informatics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Signal Processing (AREA)
  • Library & Information Science (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Image Analysis (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 명세서에 설명된 실시예는 압축 세팅을 결정하기 위한 방법, 장치, 및 컴퓨터 판독가능 매체에 관한 것이다. 입력 이미지가 사용자 계정과 연관되는 경우 입력 이미지가 획득될 수 있다. 입력 이미지의 하나 이상의 특징은 특징-검출 기계 학습 모델을 사용하여 결정될 수 있다. 입력 이미지에 대한 압축 세팅은 입력 이미지의 하나 이상의 특징에 기초하여 사용자 계정에 개인화된 사용자-특정 기계 학습 모델을 사용하여 결정될 수 있다. 압축 세팅에 기초하여 입력 이미지가 압축될 수 있다.

Description

사용자 선호도를 반영한 기계 학습 기반 이미지 압축 세팅
본 명세서는 사용자 선호도를 반영한 기계 학습 기반 이미지 압축 세팅에 관한 것이다.
스마트폰 및 기타 휴대용 카메라의 인기가 높아짐에 따라 사용자는 점점 더 많은 수의 이미지를 캡처하고 있다. 그러나 클라우드 또는 서버 스토리지뿐만 아니라 온디바이스도 유한한 리소스이다. 이미지 압축은 이미지를 저장하는 데 필요한 저장 공간을 줄이는 효과적인 방법이다. 그러나 손실 압축으로 인해 압축된 이미지의 품질이 현저히 낮아져 사용자 경험이 최적화되지 않을 수 있다.
본 명세서에 제공된 배경 설명은 본 개시내용의 컨텍스트를 일반적으로 제시하기 위한 것이다. 이 배경 섹션에 설명된 범위 내에서 현재 명명된 발명자의 워크뿐만 아니라 출원 당시 선행 기술로 인정되지 않을 수 있는 설명의 양태는 명시적으로나 묵시적으로 선행 기술로 인정되지 않는다.
본 명세서에 설명된 실시예는 압축 세팅을 생성하기 위한 방법, 장치, 및 컴퓨터 판독가능 매체에 관한 것이다. 방법은 입력 이미지를 획득하는 단계 -상기 입력 이미지는 사용자 계정과 연관됨-; 특징-검출 기계 학습 모델을 사용하여, 상기 입력 이미지의 하나 이상의 특징들을 결정하는 단계; 상기 사용자 계정에 개인화된 사용자-특정 기계 학습 모델을 사용하여, 상기 입력 이미지의 하나 이상의 특징들에 기초하여 상기 입력 이미지에 대한 압축 세팅을 결정하는 단계; 그리고 상기 압축 세팅에 기초하여 상기 입력 이미지를 압축하는 단계를 포함한다.
일부 실시양태에서, 상기 특징-검출 기계 학습 모델은, 디지털 이미지들 및 해당 특징들의 트레이닝 세트를 획득하고, 그리고 상기 트레이닝 세트 및 상기 해당 특징들을 기반으로 상기 특징-검출 기계 학습 모델을 트레이닝함으로써, 생성되며, 트레이닝 후에, 상기 특징-검출 기계 학습 모델은 상기 특징-검출 기계 학습 모델에 제공된 상기 입력 이미지에서 이미지 특징들을 식별할 수 있다. 일부 실시양태에서, 상기 특징-검출 기계 학습 모델은 복수의 네트워크 계층들을 갖는 CNN(convolutional neural network)을 포함하고, 각각의 네트워크 계층은 서로 다른 추상화 레벨들에서 상기 하나 이상의 이미지 특징들을 추출한다. 일부 실시양태에서, 상기 사용자-특정 기계 학습 모델은, 사용자와 연관된 사용자-특정 특징들의 트레이닝 세트를 획득하고 -상기 사용자-특정 특징들은 하나 이상의 이전 이미지들을 참조하여 사용자 액션을 나타냄-, 그리고 상기 사용자-특정 특징들 및 상기 하나 이상의 이전 이미지들을 기반으로 사용자-특정 기계 학습 모델을 트레이닝함으로써, 생성되며, 트레이닝 후, 상기 사용자-특정 기계 학습 모델은 상기 사용자-특정 기계 학습 모델에 제공된 상기 입력 이미지에 대한 레이팅(rating)을 결정한다. 일부 실시예에서, 하나 이상의 이전 이미지의 각각의 이미지 특징은 특징-검출 기계 학습 모델을 하나 이상의 이전 이미지에 적용함으로써 획득된다.
일부 실시양태에서, 상기 방법은, 각각 다른 압축 세팅으로 압축된 샘플 이미지의 둘 이상의 버전들로 상기 사용자 계정과 연관된 사용자에게 제1 사용자 인터페이스를 제공하는 단계; 상기 샘플 이미지의 특정 버전을 식별하는 사용자 입력을 사용자로부터 획득하는 단계; 그리고 상기 샘플 이미지의 상기 특정 버전과 연관된 압축 세팅을 상기 사용자 계정에 대한 베이스라인 압축 세팅으로 선택하는 단계를 더 포함한다. 일부 실시양태에서, 상기 압축 세팅을 결정하는 단계는, 상기 사용자-특정 기계 학습 모델에 의해, 상기 입력 이미지에 대한 레이팅을 결정하는 단계; 그리고 상기 레이팅을 상기 압축 세팅에 매핑하는 단계를 포함하며, 상기 매핑은 상기 베이스라인 압축 세팅에 기초한다.
일부 실시양태에서, 상기 방법은, 상기 입력 이미지에 대한 상기 레이팅이 중요도 임계값을 충족한다고 결정하는 단계; 그리고 상기 레이팅이 상기 중요도 임계값을 충족한다는 결정에 응답하여, 단계들 중 하나 이상을 수행하는 단계를 더 포함하며, 상기 단계들은, 상기 사용자가 상기 입력 이미지를 공유하도록 하는 제안을 제공하는 단계, 상기 중요도 임계값을 충족하지 않는 상기 사용자 계정과 연관된 다른 이미지들의 백업보다 상기 입력 이미지의 백업을 우선순위화하는 단계, 또는 후속 이미지에 묘사된 장면이 상기 입력 이미지의 하나 이상의 특징들 중 적어도 하나를 갖는 경우, 상기 후속 이미지의 캡처를 위한 명령어를 포함하는 제2 사용자 인터페이스를 제공하는 단계를 포함한다.
일부 실시예는 컴퓨팅 장치로서, 컴퓨팅 장치는, 프로세서; 그리고 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금 동작들을 수행하게 하는 명령어가 저장된 메모리를 포함하며, 상기 동작들은, 입력 이미지를 획득하는 동작 -상기 입력 이미지는 사용자 계정과 연관됨-; 특징-검출 기계 학습 모델을 사용하여, 상기 입력 이미지의 하나 이상의 특징들을 결정하는 동작; 상기 사용자 계정에 개인화된 사용자-특정 기계 학습 모델을 사용하여, 상기 입력 이미지의 하나 이상의 특징들에 기초하여 상기 입력 이미지에 대한 압축 세팅을 결정하는 동작; 그리고 상기 압축 세팅에 기초하여 상기 입력 이미지를 압축하는 동작을 포함한다.
일부 실시양태에서, 상기 특징-검출 기계 학습 모델은, 디지털 이미지들 및 해당 특징들의 트레이닝 세트를 획득하고, 그리고 상기 트레이닝 세트 및 상기 해당 특징들을 기반으로 상기 특징-검출 기계 학습 모델을 트레이닝함으로써, 생성되며, 트레이닝 후에, 상기 특징-검출 기계 학습 모델은 상기 특징-검출 기계 학습 모델에 제공된 상기 입력 이미지에서 이미지 특징들을 식별할 수 있다. 일부 실시양태에서, 상기 사용자-특정 기계 학습 모델은, 사용자와 연관된 사용자-특정 특징들의 트레이닝 세트를 획득하고 -상기 사용자-특정 특징들은 하나 이상의 이전 이미지들을 참조하여 사용자 액션을 나타냄-, 그리고 상기 사용자-특정 특징들 및 상기 하나 이상의 이전 이미지들을 기반으로 사용자-특정 기계 학습 모델을 트레이닝함으로써, 생성되며, 트레이닝 후, 상기 사용자-특정 기계 학습 모델은 상기 사용자-특정 기계 학습 모델에 제공된 상기 입력 이미지에 대한 레이팅(rating)을 결정한다.
일부 실시양태에서, 상기 메모리는, 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금 추가 동작들을 수행하게 하는 명령어를 더 포함하며, 상기 추가 동작들은, 각각 다른 압축 세팅으로 압축된 샘플 이미지의 둘 이상의 버전들로 상기 사용자 계정과 연관된 사용자에게 제1 사용자 인터페이스를 제공하는 동작; 상기 샘플 이미지의 특정 버전을 식별하는 사용자 입력을 사용자로부터 획득하는 동작; 그리고 상기 샘플 이미지의 상기 특정 버전과 연관된 압축 세팅을 상기 사용자 계정에 대한 베이스라인 압축 세팅으로 선택하는 동작을 포함한다.
일부 실시양태에서, 상기 압축 세팅을 결정하는 동작은, 상기 사용자-특정 기계 학습 모델에 의해, 상기 입력 이미지에 대한 레이팅을 결정하는 동작; 그리고 상기 레이팅을 상기 압축 세팅에 매핑하는 동작을 포함하며, 상기 매핑은 상기 베이스라인 압축 세팅에 기초한다.
일부 실시예는 하나 이상의 컴퓨터에 의해 실행될 때 상기 하나 이상의 컴퓨터로 하여금 동작들을 수행하게 하는 명령어가 저장된 비일시적 컴퓨터 판독 가능 매체로서, 상기 동작들은, 입력 이미지를 획득하는 동작 -상기 입력 이미지는 사용자 계정과 연관됨-; 특징-검출 기계 학습 모델을 사용하여, 상기 입력 이미지의 하나 이상의 특징들을 결정하는 동작; 상기 사용자 계정에 개인화된 사용자-특정 기계 학습 모델을 사용하여, 상기 입력 이미지의 하나 이상의 특징들에 기초하여 상기 입력 이미지에 대한 압축 세팅을 결정하는 동작; 그리고 상기 압축 세팅에 기초하여 상기 입력 이미지를 압축하는 동작을 포함한다.
일부 실시양태에서, 상기 특징-검출 기계 학습 모델은, 디지털 이미지들 및 해당 특징들의 트레이닝 세트를 획득하고, 그리고 상기 트레이닝 세트 및 상기 해당 특징들을 기반으로 상기 특징-검출 기계 학습 모델을 트레이닝함으로써, 생성되며, 트레이닝 후에, 상기 특징-검출 기계 학습 모델은 상기 특징-검출 기계 학습 모델에 제공된 상기 입력 이미지에서 이미지 특징들을 식별할 수 있다.
일부 실시예에서, 상기 사용자-특정 기계 학습 모델은, 사용자와 연관된 사용자-특정 특징들의 트레이닝 세트를 획득하고 -상기 사용자-특정 특징들은 하나 이상의 이전 이미지들을 참조하여 사용자 액션을 나타냄-, 그리고 상기 사용자-특정 특징들 및 상기 하나 이상의 이전 이미지들을 기반으로 사용자-특정 기계 학습 모델을 트레이닝함으로써, 생성되며, 트레이닝 후, 상기 사용자-특정 기계 학습 모델은 상기 사용자-특정 기계 학습 모델에 제공된 상기 입력 이미지에 대한 레이팅(rating)을 결정한다. 일부 실시예에서, 상기 트레이닝 세트는 상기 하나 이상의 이전 이미지들의 각각의 이미지 특징들을 더 포함한다.
일부 실시양태에서, 상기 동작들은, 각각 다른 압축 세팅으로 압축된 샘플 이미지의 둘 이상의 버전들로 상기 사용자 계정과 연관된 사용자에게 제1 사용자 인터페이스를 제공하는 동작; 상기 샘플 이미지의 특정 버전을 식별하는 사용자 입력을 사용자로부터 획득하는 동작; 그리고 상기 샘플 이미지의 상기 특정 버전과 연관된 압축 세팅을 상기 사용자 계정에 대한 베이스라인 압축 세팅으로 선택하는 동작을 더 포함한다. 일부 실시예에서, 상기 압축 세팅을 결정하는 동작은, 상기 사용자-특정 기계 학습 모델에 의해, 상기 입력 이미지에 대한 레이팅을 결정하는 동작; 그리고 상기 레이팅을 상기 압축 세팅에 매핑하는 동작을 포함하며, 상기 매핑은 상기 베이스라인 압축 세팅에 기초한다.
도 1은 여기에 설명된 하나 이상의 실시예에 사용될 수 있는 예시적인 네트워크 환경의 블록도이다.
도 2는 여기에 설명된 하나 이상의 실시예에 사용될 수 있는 예시적인 장치의 블록도이다.
도 3은 입력 이미지에서 하나 이상의 특징을 식별하기 위해 특징-검출 기계 학습 모델을 사용하고 그리고 일부 실시예에 따라, 이미지의 하나 이상의 특징으로부터 압축 세팅을 결정하기 위해 사용자-특정 기계 학습 모델을 사용하는 예시적인 방법을 예시하는 흐름도이다.
도 4는 일부 실시예에 따른 트레이닝된 모델을 생성하기 위한 예시적인 방법을 예시하는 흐름도이다.
도 5는 일부 실시예에 따른 입력 이미지에 모델을 적용하기 위한 예시적인 방법을 도시하는 흐름도이다.
사용자는 스마트폰이나 기타 장치를 통해 카메라를 사용하여 이미지를 캡처한다. 예를 들어, 이미지는 정적 이미지, 시네마그래프/모션 이미지 또는 비디오의 이미지 프레임을 포함할 수 있다. 사용자는 클라이언트 장치 또는 서버, 예를 들어 이미지 호스팅 서비스를 제공하는 서버에 이미지를 저장할 수 있다. 애플리케이션은 사용자의 클라이언트 장치 및/또는 사용자가 이미지를 관리(예를 들어, 이미지 보기 및/또는 편집; 슬라이드쇼, 콜라주 등과 같은 이미지 기반 창작물 생성; 이미지 공유; 다른 사용자가 이미지를 좋아하거나 이미지에 커밍하는 것과 같이 이미지에 대한 승인 표시를 제공하는 소셜 네트워크 또는 채팅 애플리케이션에 이미지를 게시하는 행위 등)할 수 있도록 하는 서버를 통해 제공될 수 있다.
클라이언트 장치 또는 서버의 저장 공간은 유한하다. 이미지를 삭제하지 않고 추가 저장 공간을 확보하는 한 가지 방법은 이미지 압축을 사용하여 이미지의 파일 크기를 줄이는 것이다. 그러나 손실 압축(lossy compression)은 이미지 품질을 저하시켜 사용자와 연관된 모든 이미지가 이미지 압축을 받을 때 최적이 아닌 사용자 경험을 초래할 수 있다.
사용자 계정에 이미지가 많은 경우, 이러한 이미지의 서브세트는 사용자가 특히 좋아하는 이미지일 가능성이 높다. 예를 들어, 일부 사용자는 풍경 사진을 인화하는 것을 좋아하기 때문에 풍경 사진의 품질에 대해서만 강하게 느낄 수 있다. 다른 사람들은 인물 사진을 가족과 공유하는 것을 즐기거나 사진 사업을 운영할 수 있기 때문에 고해상도 인물 사진에 대해 강하게 느낄 수 있다. 영수증, 스크린샷 또는 기타 기능적 이미지(예: 밈 이미지, 명함 사진, 신문 기사 등)의 이미지 품질은 그다지 중요하지 않을 수 있다. 따라서 이미지 압축으로 인한 손실에 대한 사용자 인식은 이미지 유형 및 이미지와 연결된 사용자 계정에 따라 달라질 수 있다. 따라서 어떤 이미지가 사용자에게 중요할 것인지 식별하는 것이 유리하다. 일부 실시예에서, 이미지 관리 애플리케이션은 제1 이미지의 특징을 식별하는 특징-검출 기계 학습 모델을 생성하고 활용한다. 이미지 관리 애플리케이션은 사용자 계정에 개인화된(personalized) 사용자-특정 기계 학습 모델을 생성할 수도 있다. 이미지 관리 애플리케이션은 사용자-특정 기계 학습 모델을 사용하여 제1 이미지에 대한 압축 세팅(compression setting)을 결정할 수 있다. 이미지 관리 애플리케이션은 압축 세팅에 기초하여 제1 이미지를 압축할 수 있으며, 압축된 결과 이미지가 원본 이미지보다 파일 크기가 작기 때문에 저장 공간을 확보할 수 있다.
도면은 유사한 요소를 식별하기 위해 유사한 참조 번호를 사용한다. "103a"와 같이 참조 번호 뒤의 문자는 텍스트가 해당 특정 참조 번호를 갖는 요소를 구체적으로 참조함을 나타낸다. "103"과 같이 뒤따르는 문자가 없는 텍스트의 참조 번호는 해당 참조 번호를 포함하는 도면의 일부 또는 모든 요소를 나타낸다(예: 텍스트에서 "103"은 도면에서 참조 번호 "103a" 및/또는 "103b"를 나타냄).
네트워크 환경(100)의 예
도 1은 본 명세서에 설명된 일부 실시예에서 사용될 수 있는 예시적인 네트워크 환경(100)의 블록도를 도시한다. 일부 실시예에서, 네트워크 환경(100)은 하나 이상의 서버 시스템, 예를 들어 도 1의 예에서 서버 시스템(101)을 포함한다. 서버 시스템(101)은 예를 들어 네트워크(105)와 통신할 수 있다. 서버 시스템(101)은 서버 장치(104) 및 데이터베이스(199) 또는 다른 저장 장치를 포함할 수 있다. 데이터베이스(199)는 하나 이상의 이미지 및/또는 비디오 및 하나 이상의 이미지 및/또는 비디오와 연관된 메타데이터를 저장할 수 있다. 일부 실시예에서, 서버 장치(104)는 이미지 관리 애플리케이션(103a)을 제공할 수 있다. 이미지 관리 애플리케이션(103a)은 데이터베이스(199)에 저장된 이미지에 액세스할 수 있다.
네트워크 환경(100)은 또한 네트워크(105)를 통해 서로 및/또는 서버 시스템(101)과 통신할 수 있는 하나 이상의 클라이언트 장치, 예를 들어 클라이언트 장치(115a, 115n)를 포함할 수 있다. 네트워크(105)는 인터넷, 근거리 통신망(LAN), 무선 네트워크, 스위치 또는 허브 연결 중 하나 이상을 포함하는 임의의 유형의 통신 네트워크일 수 있다. 일부 실시양태에서, 네트워크(105)는 예를 들어, 피어-투-피어 무선 프로토콜(예를 들어, 블루투스®, Wi-Fi 다이렉트, 울트라와이드밴드 등) 등을 사용하여 디바이스들 간의 피어-투-피어 통신을 포함할 수 있다. 2개의 클라이언트 장치(115a, 115b) 사이의 피어 투 피어 통신의 일례가 화살표(132)로 도시되어 있다.
설명의 편의를 위해, 도 1은 서버 시스템(101), 서버 장치(104) 및 데이터베이스(199)에 대한 하나의 블록을 나타내고 클라이언트 장치(115a 및 115n)에 대한 두 개의 블록을 나타낸다. 서버 블록(101, 104, 199)은 다중 시스템, 서버 장치 및 네트워크 데이터베이스를 나타낼 수 있으며 블록은 도시된 것과 다른 구성으로 제공될 수 있다. 예를 들어, 서버 시스템(101)은 네트워크(105)를 통해 다른 서버 시스템과 통신할 수 있는 복수의 서버 시스템을 나타낼 수 있다. 일부 실시예에서, 서버 시스템(101)은 예를 들어 클라우드 호스팅 서버를 포함할 수 있다. 일부 예에서, 데이터베이스(199) 및/또는 다른 저장 장치는 서버 장치(104)와 별개이고 네트워크(105)를 통해 서버 장치(104) 및 다른 서버 시스템과 통신할 수 있는 서버 시스템 블록(들)에 제공될 수 있다.
임의의 수의 클라이언트 장치(115)가 있을 수 있다. 각 클라이언트 장치는 데스크톱 컴퓨터, 랩톱 컴퓨터, 휴대용 또는 모바일 장치, 휴대폰, 스마트폰, 태블릿 컴퓨터, 카메라, 스마트 디스플레이, 텔레비전, TV 셋톱 박스 또는 엔터테인먼트 장치, 웨어러블 기기(예: 디스플레이 안경 또는 고글, 손목시계, 헤드셋, 완장, 보석 등), PDA(personal digital assistant), 미디어 플계층, 게임 장치 등과 같은 모든 유형의 전자 장치일 수 있다. 일부 클라이언트 장치는 데이터베이스(199) 또는 기타 저장소와 유사한 로컬 데이터베이스를 포함할 수도 있다. 일부 실시예에서, 네트워크 환경(100)은 도시된 컴포넌트 모두를 갖지 않을 수 있고/있거나 여기에 설명된 컴포넌트 대신에 또는 이에 추가하여 다른 유형의 컴포넌트를 포함하는 다른 컴포넌트를 가질 수 있다.
다양한 실시예에서, 사용자(125)는 각각의 클라이언트 장치(115a, 115n)를 사용하여 서버 시스템(101) 및/또는 서로 통신할 수 있다. 일부 예에서, 사용자(125)는 네트워크 서비스, 예를 들어, 소셜 네트워크 서비스, 이미지 호스팅 서비스, 또는 서버 시스템(101)에서 구현되는 다른 유형의 네트워크 서비스를 통해 각각의 클라이언트 장치 및/또는 서버 시스템(101)에서 실행되는 애플리케이션을 통해 서로 상호작용할 수 있다. 예를 들어, 각각의 클라이언트 장치(115a, 115n)는 하나 이상의 서버 시스템, 예를 들어 서버 시스템(101)과 데이터를 주고받을 수 있다.
일부 실시양태에서, 서버 시스템(101)은 각 클라이언트 장치(115)가 서버 시스템(101) 및/또는 네트워크 서비스에 업로드된 통신 콘텐츠 또는 공유 콘텐츠를 수신할 수 있도록 적절한 데이터를 클라이언트 장치(115a, 115n)에 제공할 수 있다. 일부 예에서, 사용자(125)는 오디오 또는 비디오 회의, 오디오, 비디오 또는 텍스트 채팅, 또는 다른 통신 모드 또는 애플리케이션을 통해 상호작용할 수 있다. 서버 시스템(101)에 의해 구현된 네트워크 서비스는 사용자(125)가 다양한 통신을 수행하고, 링크 및 연결을 형성하고, 이미지, 텍스트, 비디오, 오디오 및 기타 유형의 콘텐츠와 같은 공유 콘텐츠를 업로드 및 게시하고, 및/또는 다른 기능을 수행할 수 있게 하는 시스템을 포함할 수 있다. 예를 들어, 클라이언트 장치(115)는 클라이언트 장치(115)로 전송되거나 스트리밍되고 서버 및/또는 네트워크 서비스를 통해 다른 클라이언트 장치(115)로부터 발생하거나 서버 시스템(101) 및/또는 네트워크 서비스로부터 발생하는 콘텐츠 게시물(content posts)과 같은 (또는 다른 클라이언트 장치(115)로부터 직접) 수신된 데이터를 표시할 수 있다. 일부 실시예들에서, 클라이언트 장치(디바이스)들(115a, 115n)은 예를 들어, 위에서 설명된 바와 같이 클라이언트 장치들(115, 115n) 사이의 피어-투-피어 통신을 사용하여 서로 직접 통신할 수 있다. 일부 실시예에서, "사용자"는 하나 이상의 프로그램 또는 가상 엔티티, 뿐만 아니라 시스템 또는 네트워크(105)와 인터페이스하는 사람을 포함할 수 있다.
일부 실시양태에서, 클라이언트 장치(115a, 115n) 중 임의의 것은 하나 이상의 애플리케이션을 제공할 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 클라이언트 장치(115a)는 카메라 애플리케이션(152) 및 이미지 관리 애플리케이션(103b)을 제공할 수 있다. 클라이언트 장치(115n)는 또한 유사한 애플리케이션을 제공할 수 있다. 카메라 애플리케이션(152)은 각자의 클라이언트 장치(115a)의 카메라를 사용하여 이미지를 캡처하는 능력을 각자의 클라이언트 장치(115a)의 사용자(125a)에게 제공할 수 있다. 예를 들어, 카메라 애플리케이션(152)은 클라이언트 장치(115a) 상에서 실행되는 소프트웨어 애플리케이션일 수 있다.
일부 실시예에서, 카메라 애플리케이션(152)은 사용자 인터페이스를 제공할 수 있다. 예를 들어, 사용자 인터페이스는 클라이언트 장치(115a)의 사용자가 이미지 캡처 모드(예: 정적 이미지(또는 사진) 모드, 버스트 모드(예: 짧은 시간에 연속적인 수의 이미지 캡처), 동영상 모드, 비디오 모드, HDR(High Dynamic Range) 모드, 해상도 세팅 등)를 선택하는 것을 가능하게 할 수 있다. 예를 들어, 비디오 모드는 복수의 프레임을 포함하는 비디오의 캡처에 대응할 수 있고 임의의 길이일 수 있다. 또한, 비디오 모드는 다른 프레임 속도, 예를 들어 25fps(초당 프레임), 30fps, 50fps, 60fps 등을 지원할 수 있다. 이미지 캡처의 하나 이상의 파라미터는 이미지 또는 비디오를 캡처하는 동안 변경될 수 있다. 예를 들어, 사용자는 비디오를 캡처하는 동안 장면을 확대하거나 축소하기 위해 클라이언트 장치(115a)를 사용할 수 있다.
일부 실시양태에서, 카메라 애플리케이션(152)은 도 3 및 도 4a 내지 도 4b를 참조하여 본 명세서에 설명된 방법을 (예를 들어, 부분적으로 또는 전체적으로) 구현할 수 있다. 일부 실시양태에서, 이미지 관리 애플리케이션(103a) 및/또는 이미지 관리 애플리케이션(103b)은 도 3 및 4A-4B를 참조하여 본 명세서에 설명된 방법을 (예를 들어, 부분적으로 또는 전체적으로) 구현할 수 있다.
카메라 애플리케이션(152) 및 이미지 관리 애플리케이션(103b)은 클라이언트 장치(115a)의 하드웨어 및/또는 소프트웨어를 사용하여 구현될 수 있다. 다른 실시예에서, 이미지 관리 애플리케이션(103b)은 예를 들어 클라이언트 장치(115a, 115n) 중 임의의 것에서 실행되는 독립형 애플리케이션일 수 있거나 서버 시스템(101)에 제공된 이미지 관리 애플리케이션(103a)과 함께 작동할 수 있다.
사용자 권한으로, 이미지 관리 애플리케이션(103)은 이미지 또는 비디오를 (예를 들어, 서버 시스템(101)의 데이터베이스(199)에) 저장(예를 들어, 백업)하고, 이미지 또는 비디오를 향상시키고, 이미지 또는 비디오를 안정화하고, 이미지에서 하나 이상의 특징(예를 들어 얼굴, 신체, 물체 유형, 움직임 유형)을 인식하고, 이미지를 압축하는 등과 같은 하나 이상의 자동 기능을 수행할 수 있다. 일부 예들에서, 이미지 또는 비디오 안정화는 가속도계, 자이로스코프, 또는 클라이언트 장치(115a)의 다른 센서들로부터의 입력에 기초하여, 및/또는 모션 이미지 또는 비디오의 복수의 프레임들의 비교에 기초하여 수행될 수 있다.
이미지 관리 애플리케이션(103)은 또한 사용자 인터페이스에 이미지 및/또는 비디오를 표시하는 것(예: 단일 이미지를 포함하는 단일 보기에서, 여러 이미지를 포함하는 격자 보기에서 등), 이미지 또는 비디오를 편집하는 것(예: 이미지 설정 조정, 필터 적용, 이미지 초점 변경, 동영상 또는 비디오의 하나 이상의 프레임 제거), (예를 들어, 클라이언트 장치(115a, 115n)의) 다른 사용자와 이미지를 공유하는 것, 이미지를 보관하는 것(예: 기본 사용자 인터페이스에 나타나지 않도록 이미지 저장), 이미지 기반 창작물(생성물)을 생성하는 것(예: 콜라주, 사진첩, 애니메이션, 스토리, 비디오 루프 등과 같은 모션 기반 인공물) 등과 같은 이미지 관리 기능을 제공할 수 있다. 일부 실시예에서, 이미지 기반 생성물을 생성하기 위해, 이미지 관리 애플리케이션(103)은 이미지 또는 비디오와 연관된 하나 이상의 라벨을 이용할 수 있다.
일부 실시예에서, 이미지 관리 애플리케이션(103)은 이미지의 하나 이상의 특징을 결정하고 이미지의 하나 이상의 특징에 기초하여 이미지에 대한 압축 세팅(compression setting)을 결정할 수 있다. 일부 실시예에서, 이미지 관리 애플리케이션(103)은 이미지 또는 비디오 및 압축된 이미지 또는 비디오와 연관된 압축 세팅을 데이터베이스(199) 및/또는 클라이언트 장치(115)(미도시) 상의 로컬 데이터베이스에 저장할 수 있다. 일부 실시예에서, 이미지 관리 애플리케이션(103)은 원본 이미지를 즉시 삭제하고, 원본 이미지를 저장하고 사용자가 삭제를 확인하게 하거나, 원본 이미지를 특정 일 수 동안 저장한 다음 원본 이미지를 삭제한다.
클라이언트 장치(115) 상의 사용자 인터페이스는 이미지, 비디오, 데이터 및 기타 콘텐츠뿐만 아니라 통신, 프라이버시 설정(세팅), 알림 및 기타 데이터를 포함하는 사용자 콘텐츠 및 기타 콘텐츠의 표시를 가능하게 할 수 있다. 그러한 사용자 인터페이스는 클라이언트 장치(115) 상의 소프트웨어, 서버 장치(104) 상의 소프트웨어, 및/또는 서버 장치(104) 상에서 실행되는 클라이언트 소프트웨어와 서버 소프트웨어의 조합(예를 들어, 서버 시스템(101)과 통신하는 애플리케이션 소프트웨어 또는 클라이언트 소프트웨어)을 사용하여 디스플레이될 수 있다. 사용자 인터페이스는 클라이언트 장치(115) 또는 서버 장치(104)의 디스플레이 장치, 예를 들어 터치스크린 또는 다른 디스플레이 스크린, 프로젝터 등에 의해 디스플레이될 수 있다. 일부 실시양태에서, 서버 시스템(101)에서 실행되는 애플리케이션 프로그램은 클라이언트 장치(115)에서 사용자 입력을 수신하고 클라이언트 장치(115)에서 시각 데이터, 오디오 데이터 등과 같은 데이터를 출력하기 위해 클라이언트 장치(115)와 통신할 수 있다.
일부 실시양태에서, 서버 시스템(101) 및/또는 하나 이상의 클라이언트 장치(115a, 115n) 중 임의의 것은 통신 애플리케이션 프로그램을 제공할 수 있다. 통신 프로그램은 시스템(예를 들어, 클라이언트 장치(115) 또는 서버 시스템(101))이 다른 장치와 통신하기 위한 옵션을 제공하도록 할 수 있다. 통신 프로그램은 서버 시스템(101) 또는 클라이언트 장치(115)와 연관된 디스플레이 장치 상에 디스플레이되는 하나 이상의 연관된 사용자 인터페이스를 제공할 수 있다. 사용자 인터페이스는 통신 모드, 사용자 또는 통신할 장치 등을 선택하기 위해 사용자에게 다양한 옵션을 제공할 수 있다. 일부 예에서, 통신 프로그램은 콘텐츠 게시물을 예를 들어 방송 영역으로 보내거나 방송하는 옵션을 제공할 수 있고/있거나, 콘텐츠 게시물이 장치에 의해 수신되었으며, 예를 들어 장치가 게시물에 대해 정의된 방송 영역에 있음을 나타내는 알림을 출력할 수 있다. 통신 프로그램은 전송된 콘텐츠 게시물 및 수신된 콘텐츠 게시물을 예를 들어 다양한 형식 중 하나로 표시하거나 달리 출력할 수 있다. 콘텐츠 게시물에는 예를 들어 다른 사용자와 공유한 이미지가 포함될 수 있다.
여기에 설명된 특징의 다른 실시예는 임의의 유형의 시스템 및/또는 서비스를 사용할 수 있다. 예를 들어, 소셜 네트워킹 서비스 대신에 또는 소셜 네트워킹 서비스에 추가하여 다른 네트워크 서비스(예: 인터넷에 연결됨)를 사용할 수 있다. 모든 유형의 전자 장치는 여기에 설명된 기능을 사용할 수 있다. 일부 실시예는 컴퓨터 네트워크로부터 연결 해제되거나 컴퓨터 네트워크에 간헐적으로 연결된 하나 이상의 클라이언트 또는 서버 장치에서 여기에 설명된 하나 이상의 기능을 제공할 수 있다. 일부 예에서, 디스플레이 장치를 포함하거나 디스플레이 장치에 연결된 클라이언트 장치(115)는 클라이언트 장치(115)에 로컬인 저장 장치에 저장된, 예를 들어, 통신 네트워크를 통해 이전에 수신된 데이터(예를 들어, 콘텐츠)를 디스플레이할 수 있다.
예시 장치(디바이스)(200)
도 2는 여기에 설명된 하나 이상의 특징을 구현하는 데 사용될 수 있는 예시적인 장치(200)의 블록도이다. 한 예에서, 장치(200)는 클라이언트 장치(115), 예를 들어 도 1에 도시된 클라이언트 장치(115a, 115n) 중 임의의 것을 구현하는 데 사용될 수 있다. 대안적으로, 장치(200)는 서버 장치, 예를 들어 도 1에 도시된 서버 장치(104)를 구현할 수 있다. 일부 실시예에서, 장치(200)는 클라이언트 장치, 서버 장치, 또는 클라이언트와 서버 장치 모두를 구현하는 데 사용될 수 있다. 장치(200)는 임의의 적절한 컴퓨터 시스템, 서버, 또는 전술한 바와 같은 다른 전자 또는 하드웨어 장치일 수 있다.
여기에 설명된 하나 이상의 방법은 임의의 유형의 컴퓨팅 장치에서 실행될 수 있는 독립 실행형 프로그램, 웹 브라우저에서 실행되는 프로그램, 모바일 컴퓨팅 장치(예: 휴대폰, 스마트폰, 스마트 디스플레이, 태블릿 컴퓨터, 웨어러블 장치(손목시계, 완장, 보석, 모자, 가상 현실 고글 또는 안경, 증강 현실 고글 또는 안경, 헤드 마운트 디스플레이 등), 노트북 컴퓨터 등)에서 실행되는 모바일 애플리케이션("앱")에서 실행될 수 있다. 한 예에서, 클라이언트/서버 아키텍처가 사용될 수 있다. 예를 들어, 모바일 컴퓨팅 장치(클라이언트 장치로서)는 사용자 입력 데이터를 서버 장치로 보내고 서버로부터 출력(예: 디스플레이용)을 위한 최종 출력 데이터를 수신한다. 다른 예에서, 모든 계산은 모바일 컴퓨팅 장치 상의 모바일 애플리케이션(및/또는 다른 애플리케이션) 내에서 수행될 수 있다. 다른 예에서, 계산은 모바일 컴퓨팅 장치와 하나 이상의 서버 장치 사이에서 분할될 수 있다.
일부 실시예에서, 장치(200)는 프로세서(202), 메모리(204), 입/출력(I/O) 인터페이스(206), 카메라(208), 및 디스플레이 장치(210)를 포함한다. 프로세서(202)는 프로그램 코드를 실행하고 장치(200)의 기본 동작을 제어하기 위한 하나 이상의 프로세서 및/또는 처리 회로일 수 있다. "프로세서"에는 데이터, 신호 또는 기타 정보를 처리하는 적절한 하드웨어 시스템, 메커니즘 또는 컴포넌트가 포함된다. 프로세서는 하나 이상의 코어(예: 단일 코어, 듀얼 코어 또는 멀티 코어 구성)가 있는 범용 중앙 처리 장치(CPU), 다중 처리 장치(예: 다중 프로세서 구성), 그래픽 처리 장치(GPU), FPGA(Field-Programmable Gate Array), ASIC(주문형 집적 회로), 복잡한 프로그래밍 가능 논리 장치(CPLD), 기능을 구현하기 위한 전용 회로, 신경망 모델 기반 처리를 구현하는 특수 목적 프로세서, 신경 회로, 행렬 계산(예: 행렬 곱셈) 또는 기타 시스템에 최적화된 프로세서를 갖는 시스템을 포함할 수 있다. 일부 실시양태에서, 프로세서(202)는 신경망 처리를 구현하는 하나 이상의 코프로세서를 포함할 수 있다. 일부 실시양태에서, 프로세서(202)는 확률적 출력을 생성하기 위해 데이터를 처리하는 프로세서일 수 있으며, 예를 들어 프로세서(202)에 의해 생성된 출력은 부정확할 수 있거나 예상된 출력으로부터의 범위 내에서 정확할 수 있다. 처리(프로세싱)가 특정 지리적 위치에 제한되거나 시간적 제한이 있을 필요는 없다. 예를 들어, 프로세서는 실시간, 오프라인, 배치 모드 등에서 기능을 수행할 수 있다. 처리의 일부는 다른(또는 동일한) 처리 시스템에 의해 다른 시간 및 다른 위치에서 수행될 수 있다. 컴퓨터는 메모리와 통신하는 모든 프로세서일 수 있다.
메모리(204)는 일반적으로 프로세서(202)에 의한 액세스를 위해 장치(200)에 제공되며, 예를 들어 프로세서 또는 프로세서 세트에 의한 실행을 위한 명령어를 저장하기에 적합하고 프로세서(202)와 분리되어 위치하거나 그와 통합된, RAM(Random Access Memory), ROM(Read-Only Memory), EEPROM(Electrical Erasable Read-only Memory), 플래시 메모리와 같은 임의의 적절한 프로세서 판독 가능 저장 매체일 수 있다. 메모리(204)는 운영 체제(212), 다른 애플리케이션(214), 애플리케이션 데이터(216), 및 이미지 관리 애플리케이션(103)을 포함하는 프로세서(202)에 의해 서버 장치(200) 상에서 동작하는 소프트웨어를 저장할 수 있다.
다른 애플리케이션(214)은 카메라 애플리케이션, 이미지 갤러리 또는 이미지 라이브러리 애플리케이션, 이미지 관리 애플리케이션, 데이터 디스플레이 엔진, 웹 호스팅 엔진 또는 애플리케이션, 이미지 디스플레이 엔진 또는 애플리케이션, 미디어 디스플레이 애플리케이션, 통신 엔진, 알림 엔진, 소셜 네트워킹 엔진, 미디어 공유 애플리케이션, 매핑 애플리케이션 등을 포함할 수 있다. 여기에 개시된 하나 이상의 방법은 여러 환경 및 플랫폼에서, 예를 들어, 임의의 유형의 컴퓨팅 장치에서 실행할 수 있는 독립 실행형 컴퓨터 프로그램, 웹 페이지를 갖는 웹 애플리케이션, 모바일 컴퓨팅 장치 등에서 실행되는 모바일 애플리케이션("앱")으로 작동할 수 있다. 일부 실시예에서, 다른 애플리케이션(214)은 프로세서(202)가 여기에서 설명된 기능, 예를 들어, 도 3 및 4a-4b의 방법 중 일부 또는 전부를 수행할 수 있게 하는 명령어를 각각 포함할 수 있다.
애플리케이션 데이터(216)는 다른 애플리케이션(214)에 의해 생성된 데이터 또는 장치(200)용 하드웨어일 수 있다. 예를 들어, 애플리케이션 데이터(216)는 카메라(208)에 의해 캡처된 이미지, 다른 애플리케이션(214)(예를 들어, 소셜 네트워킹 애플리케이션)에 의해 식별된 사용자 액션 등을 포함할 수 있다.
I/O 인터페이스(206)는 장치(200)를 다른 시스템 및 장치와 인터페이싱하는 것을 가능하게 하는 기능을 제공할 수 있다. 인터페이스된 장치는 장치(200)의 일부로 포함될 수 있거나 분리되어 장치(200)와 통신할 수 있다. 예를 들어, 네트워크 통신 장치, 저장 장치(예: 메모리 및/또는 데이터베이스(199)), 및 입력/출력 장치는 I/O 인터페이스(206)를 통해 통신할 수 있다. 일부 실시양태에서, I/O 인터페이스는 입력 장치(키보드, 포인팅 장치, 터치 스크린, 마이크, 카메라, 스캐너, 센서 등) 및/또는 출력 장치(디스플레이 장치, 스피커 장치, 프린터, 모터 등)와 같은 인터페이스 장치에 연결할 수 있다.
I/O 인터페이스(206)에 연결할 수 있는 인터페이스된 장치의 일부 예는 콘텐츠, 예를 들어, 이미지, 비디오, 및/또는 여기에 설명된 출력 애플리케이션의 사용자 인터페이스를 표시하는 데 사용될 수 있는 하나 이상의 디스플레이 장치(210)를 포함할 수 있다. 디스플레이 장치(210)는 로컬 연결(예를 들어, 디스플레이 버스)을 통해 및/또는 네트워크 연결을 통해 장치(200)에 연결될 수 있고 임의의 적절한 디스플레이 장치일 수 있다. 디스플레이 장치(210)는 액정 디스플레이(LCD), 발광 다이오드(LED), 플라즈마 디스플레이 스크린, 음극선관(CRT), 텔레비전, 모니터, 터치스크린, 3차원 디스플레이 스크린 또는 기타 시각적 디스플레이 장치를 포함할 수 있다. 예를 들어, 디스플레이 장치(210)는 모바일 장치 상에 제공된 평면 디스플레이 스크린, 안경 폼 팩터 또는 헤드셋 장치에 내장된 다중 디스플레이 스크린, 또는 컴퓨터 장치용 모니터 스크린일 수 있다.
I/O 인터페이스(206)는 다른 입력 및 출력 장치에 인터페이스할 수 있다. 일부 예는 이미지를 캡처할 수 있는 카메라(208)와 같은 하나 이상의 카메라를 포함한다. 일부 실시예는 사운드를 캡처하기 위한 마이크로폰(예를 들어, 캡처된 이미지, 음성 명령 등의 일부로서), 사운드를 출력하기 위한 오디오 스피커 장치, 또는 다른 입력 및 출력 장치를 제공할 수 있다.
카메라(208)는 복수의 프레임을 포함하는 비디오를 캡처할 수 있는 임의의 유형의 카메라일 수 있다. 여기에 사용된 카메라는 임의의 이미지 캡처 장치를 포함할 수 있다. 일부 실시예에서, 카메라(208)는 상이한 능력, 예를 들어 전면 대 후면, 상이한 줌 레벨, 캡처된 이미지의 이미지 해상도 등을 갖는 복수의 렌즈를 포함할 수 있다. 일부 실시예에서, 장치(200)는 깊이 센서, 가속도계, 위치 센서(예를 들어, GPS(Global Positioning System)), 자이로스코프 등과 같은 하나 이상의 센서를 포함할 수 있다. 일부 실시예에서, 하나 이상의 센서는 카메라(208)를 사용하여 캡처된 비디오의 상이한 프레임에 대응하는 센서 판독치를 획득하기 위해 카메라(208)와 함께 작동될 수 있다.
이미지 관리 애플리케이션(103)의 예
이미지 관리 애플리케이션(103)은 특징-검출(feature-detection) 기계 학습 모듈(218), 사용자-특정(user-specific) 기계 학습 모듈(220), 압축 모듈(222), 및 사용자 인터페이스 모듈(224)을 포함할 수 있다.
일부 실시양태에서, 특징-검출 기계 학습 모듈(218)은 이미지로부터 특징을 식별하기 위해 특징-검출 기계 학습 모델을 생성한다. 예를 들어, 특징은 다차원 특징 공간(임베딩)의 벡터일 수 있다. 유사한 특징을 가진 이미지는 유사한 특징 벡터를 가질 수 있다. 예를 들어, 그러한 이미지의 특징 벡터 사이의 벡터 거리는 유사하지 않은 이미지 사이의 벡터 거리보다 낮을 수 있다. 특징 공간은 이미지의 다양한 요소의 함수일 수 있다(예를 들어 묘사된 주제(이미지에서 검출된 객체), 이미지의 구성, 색상 정보, 이미지 방향, 이미지 메타데이터, 이미지에서 인식된 특정 개체(예: 사용자 허가, 알려진 얼굴) 등).
사용자-특정 기계 학습 모듈(220)은 사용자와 연관된 사용자 계정에 개인화되는 사용자-특정 기계 학습 모델을 생성할 수 있다. 사용자-특정 기계 학습 모듈(220)은 이미지의 특징에 기초하여 이미지에 대한 압축 세팅을 결정하기 위해 사용자-특정 기계 학습 모델을 사용할 수 있다. 이는 유리하게는 사용자가 관심을 갖는 것에 기반하여 이미지를 가능한 한 높은 품질로 유지하면서 저장 공간을 보존한다. 예를 들어, 사용자-특정 기계 학습 모델은 일몰 이미지를 높은 압축률로 압축한다는 표시를 출력할 수 있다. 예를 들어, 그러한 표시는 특징-검출 기계 학습 모듈(218)에 의해 검출된 특징을 포함하는 이미지를 분석하는 사용자-특정 기계 학습 모델에 기초하여 결정될 수 있다. 이미지가 사용자에게 중요하지 않다고 결정하는 기능과 연결되지 않은 경우 이미지에 일몰이 포함되어 있으므로 압축 세팅은 이미지에 대한 최고 압축 수준이어야 한다.
특징-검출 기계 학습 모듈(218)의 예
특징-검출 기계 학습 모듈(218)은 입력 이미지의 하나 이상의 특징을 결정하는 특징-검출 기계 학습 모델을 생성한다. 일부 실시예에서, 특징-검출 기계 학습 모듈(218)은 특징-검출 기계 학습 모델을 생성하기 위해 프로세서(202)에 의해 실행가능한 명령어 세트를 포함한다. 일부 실시예에서, 특징-검출 기계 학습 모듈(218)은 장치(200)의 메모리(204)에 저장되고 프로세서(202)에 의해 액세스 및 실행될 수 있다.
일부 실시양태에서, 특징-검출 기계 학습 모듈(218)은 트레이닝 데이터(training data)를 사용하여 트레이닝된 모델, 구체적으로 특징-검출 기계 학습 모델을 생성할 수 있다. 예를 들어, 트레이닝 데이터는 이미지(예: 정적 이미지, 시네마그래프/모션 이미지, 비디오의 이미지 프레임 등) 및 선택적으로 해당 특징(예: 이미지의 개체를 식별하는 각 이미지와 연결된 레이블 또는 태그)과 같은 모든 유형의 데이터를 포함할 수 있다.
예를 들어, 트레이닝 데이터는 복수의 디지털 이미지 및 대응하는 특징을 포함하는 트레이닝 세트를 포함할 수 있다. 일부 실시양태에서, 트레이닝 데이터는 회전될 수 있거나 비정상적인 특성(예: 이미지를 캡처하는 데 사용된 카메라의 아티팩트(artifacts))을 가질 수 있는 사용자 사진이 제공될 때 모델에 불변성을 제공하기 위해 회전(rotations), 광 이동(light shifts) 및 색상 이동과 같은 증강(augmentations)을 갖는 이미지를 포함할 수 있다. 트레이닝 데이터는 예를 들어 트레이닝용으로 특별히 표시된 데이터 저장소, 기계 학습을 위한 트레이닝 데이터로 사용하도록 허가된 데이터 등과 같은 모든 소스에서 얻을 수 있다. 한 명 이상의 사용자가 기계 학습 모델을 트레이닝하기 위해 각자의 사용자 데이터를 사용하는 것을 허용하는 실시예에서, 트레이닝 데이터는 이러한 사용자 데이터를 포함할 수 있다. 사용자가 각자의 사용자 데이터 사용을 허용하는 실시예에서, 데이터에는 이미지/비디오 또는 이미지/비디오 메타데이터(예: 이미지, 수동 태그 또는 라벨을 제공하는 사용자로부터 발생할 수 있는 해당 특징 등), 통신(예: 소셜 네트워크의 메시지, 이메일, 문자 메시지, 음성, 비디오 등의 채팅 데이터), 문서(예: 스프레드시트, 텍스트 문서, 프레젠테이션 등) 등과 같은 허용된 데이터가 포함될 수 있다.
일부 실시예에서, 트레이닝 데이터는 트레이닝을 목적으로 생성된 합성 데이터를 포함할 수 있으며, 예를 들어, 트레이닝 중인 컨텍스트의 사용자 입력 또는 활동을 기반으로 하지 않는 데이터(예: 시뮬레이션 또는 컴퓨터 생성 이미지/비디오 등에서 생성된 데이터)를 포함할 수 있다. 일부 실시예에서, 특징-검출 기계 학습 모듈(218)은 다른 애플리케이션에서 가져오고 편집되지 않은/전송되는 가중치를 사용한다. 예를 들어, 이들 실시예에서, 트레이닝된 모델은 예를 들어, 다른 장치에서 생성될 수 있고, 이미지 관리 애플리케이션(103)의 일부로서 제공될 수 있다. 다양한 실시예에서, 트레이닝된 모델은 모델 구조 또는 형태(예: 신경망 노드의 수와 유형, 노드 간 연결성 및 노드를 복수의 계층로 구성), 및 연관된 가중치를 포함하는 데이터 파일로서 제공될 수 있다. 특징-검출 기계 학습 모듈(218)은 트레이닝된 모델에 대한 데이터 파일을 읽고 트레이닝된 모델에 지정된 모델 구조 또는 형태에 기초하여 노드 연결성, 계층 및 가중치를 갖는 신경망을 구현할 수 있다.
특징-검출 기계 학습 모듈(218)은 본 명세서에서 특징-검출 기계 학습 모델로 지칭되는 트레이닝된 모델을 생성한다. 일부 실시양태에서, 특징-검출 기계 학습 모듈(218)은 특징-검출 기계 학습 모델을 애플리케이션 데이터(216)(예를 들어, 입력 이미지)와 같은 데이터에 적용하여 입력 이미지에서 하나 이상의 특징을 식별하고 이미지를 나타내는 특징 벡터(임베딩)를 생성하도록 구성된다. 일부 실시예에서, 특징-검출 기계 학습 모듈(218)은 프로세서(202)에 의해 실행될 소프트웨어 코드를 포함할 수 있다. 일부 실시양태에서, 특징-검출 기계 학습 모듈(218)은 프로세서(202)가 특징-검출 기계 학습 모델을 적용할 수 있게 하는 회로 구성(예를 들어, 프로그래머블 프로세서용, FPGA(field programmable gate array) 등)을 지정할 수 있다. 일부 실시예에서, 특징-검출 기계 학습 모듈(218)은 소프트웨어 명령어, 하드웨어 명령어, 또는 이들 조합을 포함할 수 있다. 일부 실시양태에서, 특징-검출 기계 학습 모듈(218)은 특징-검출 기계 학습 모듈(218)을 호출하기 위해 운영 체제(212) 및/또는 다른 애플리케이션(214)에 의해 사용될 수 있는 애플리케이션 프로그래밍 인터페이스(API)를 제공할 수 있고, 예를 들어, 특징-검출 기계 학습 모델을 애플리케이션 데이터(216)에 적용하여 입력 이미지의 하나 이상의 특징을 결정한다.
일부 실시예에서, 특징-검출 기계 학습 모델은 하나 이상의 모델 형태 또는 구조를 포함할 수 있다. 일부 실시예에서, 특징-검출 기계 학습 모델은 지원 벡터 기계를 사용할 수 있지만, 일부 실시예에서는 컨볼루션 신경망(CNN: convolutional neural network)이 바람직하다. 예를 들어, 모델 형태 또는 구조는 선형 네트워크, 복수의 계층(예: 입력층과 출력층 사이의 "음닉층", 각 계층은 선형 네트워크임)을 구현하는 심층 신경망, CNN(컨볼루션 신경망)(예: 입력 데이터를 여러 부분 또는 타일로 파티션하거나 분할하고, 하나 이상의 신경망 계층을 사용하여 각 타일을 개별적으로 처리(프로세싱)하고, 각 타일 처리의 결과를 집계하는 네트워크), 시퀀스 대 시퀀스 신경망(예: 문장의 단어, 비디오의 프레임 등과 같은 순차적 데이터를 입력으로 받아 결과 시퀀스를 출력으로 생성하는 네트워크) 등과 같은 모든 유형의 신경망을 포함할 수 있다.
모델 형태 또는 구조는 다양한 노드 간의 연결과 노드를 계층으로 구성하는 것을 지정할 수 있다. 예를 들어, 제1 계층(예를 들어, 입력층)의 노드는 데이터를 입력 데이터 또는 애플리케이션 데이터(216)로서 수신할 수 있다. 그러한 데이터는, 예를 들어, 특징-검출 기계 학습 모델이 분석을 위해 사용될 때, 예를 들어, 사용자 계정과 연관된 제1 이미지와 같은 입력 이미지와 같이, 노드당 하나 이상의 픽셀을 포함할 수 있다. 후속 중간 계층은 모델 형식 또는 구조에 지정된 연결에 따라 이전 계층 노드의 출력을 입력으로 받을 수 있다. 이러한 계층은 은닉층이라고도 한다. 최종 계층(예: 출력층)은 기계 학습 애플리케이션의 출력을 생성한다. 예를 들어, 출력은 입력 이미지와 연관된 이미지 특징일 수 있다. 일부 실시예에서, 모델 형태 또는 구조는 또한 각 계층에서 노드의 수 및/또는 유형을 지정한다.
특징-검출 기계 학습 모듈(218)에 의해 출력된 특징은 주제(예를 들어, 일몰 대 특정 사람); 이미지에 존재하는 색상(녹색 언덕 대 푸른 호수); 색의 균형; 광원, 각도 및 강도; 이미지에서 물체의 위치(예: 3분의 1의 법칙 준수); 서로에 대한 물체의 위치(예: 피사계 심도), 샷의 위치; 초점(전경 대 배경); 또는 쉐도우(shadows)를 포함할 수 있다. 위의 특징은 인간이 이해할 수 있지만, 특징 출력은 이미지를 나타내고 사람이 분석할 수 없는 임베딩 또는 기타 수학적 값일 수 있음을 이해해야 하며(예: 존재하는 색상, 개체 위치 등과 같은 특정 특징에 개별 특징 값이 일치하지 않을 수 있음); 트레이닝된 모델은 유사한 이미지에 대해 유사한 특징이 출력되고, 상당한 차이가 있는 이미지는 그에 따라 다른 특징을 갖는다.
일부 실시예에서, 모델 형태는 각각의 네트워크 계층이 상이한 추상화 레벨에서 이미지 특징을 추출하는 네트워크 계층을 갖는 CNN이다. 이미지의 특징을 식별하는 데 사용되는 CNN을 이미지 분류에 사용할 수 있다. 일부 실시양태에서, CNN은 이미지의 특징을 식별하는 데 사용될 수 있으며, 분류 계층, 더 구체적으로 설명하면 완전히 연결된 피드포워드(feed-forward) 신경망 출력층을 사용자-특정 기계 학습 모델로 교체하여 전이 학습을 적용할 수 있다. 일부 실시예에서, CNN은 VGGnet, ResNet, AlexNet, Inception 네트워크, 또는 이미지 처리 애플리케이션으로 간주되는 임의의 다른 최첨단 신경망이고 ImageNet과 같은 디지털 이미지의 트레이닝 세트를 사용하여 트레이닝된다. 모델 아키텍처는 다차원 컨볼루션, 평균 풀링, 최대 풀링, 활성화 함수, 정규화, 정규화 및 응용 심층 신경망에 실제로 사용되는 기타 계층 및 모듈로 구성된 계층의 조합 및 순서를 포함할 수 있다.
상이한 실시예에서, 특징-검출 기계 학습 모델은 하나 이상의 모델을 포함할 수 있다. 하나 이상의 모델은 복수의 노드를 포함할 수 있으며, CNN의 경우 모델 구조 또는 형태당 계층으로 배열된 필터 뱅크를 포함할 수 있다. 일부 실시예에서, 노드는 메모리가 없는 계산 노드일 수 있으며, 예를 들어 하나의 입력 유닛을 처리하여 하나의 출력 유닛을 생성하도록 구성될 수 있다. 노드에 의해 수행되는 계산은, 예를 들어, 복수의 노드 입력들 각각에 가중치를 곱하고, 가중 합을 획득하고, 가중 합을 바이어스 또는 절편 값(intercept value)으로 조정하여 노드 출력을 생성하는 것을 포함할 수 있다.
일부 실시예에서, 노드에 의해 수행되는 계산은 또한 조정된 가중 합에 스텝/활성화 함수를 적용하는 것을 포함할 수 있다. 일부 실시예에서, 스텝/활성화 함수는 비선형 함수일 수 있다. 다양한 실시예에서, 그러한 계산은 행렬 곱셈과 같은 연산을 포함할 수 있다. 일부 실시예에서, 복수의 노드에 의한 계산은, 예를 들어, 다중 코어 프로세서의 다중 프로세서 코어를 사용하여, GPU의 개별 처리 유닛을 사용하여, 또는 특수 목적 신경 회로를 사용하여 병렬로 수행될 수 있다. 일부 실시예에서, 노드는 메모리를 포함할 수 있으며, 예를 들어 후속 입력을 처리할 때 하나 이상의 이전 입력을 저장하고 사용할 수 있다. 예를 들어, 메모리가 있는 노드는 LSTM(long short-term memory) 노드를 포함할 수 있다. LSTM 노드는 메모리를 사용하여 노드가 FSM(finite state machine)처럼 작동하도록 허용하는 상태를 유지할 수 있다. 이러한 노드가 있는 모델은 순차적 데이터(예: 문장 또는 단락의 단어, 일련의 이미지, 비디오의 프레임, 음성 또는 기타 오디오 등)를 처리하는 데 유용할 수 있다. 예를 들어, 게이팅 모델에서 사용되는 휴리스틱 기반 모델은 이전 이미지에 대응하는 하나 이상의 이전에 생성된 특징을 저장할 수 있다.
일부 실시예에서, 특징-검출 기계 학습 모델은 개별 노드에 대한 임베딩 또는 가중치를 포함할 수 있다. 예를 들어, 특징-검출 기계 학습 모델은 모델 형태 또는 구조에 의해 특정된 바와 같이 계층으로 구성된 복수의 노드로서 개시될 수 있다. 초기화 시, 모델 형태에 따라 연결된 노드의 각 쌍, 예를 들어 신경망의 연속적인 계층에 있는 노드 사이의 연결에 각각의 가중치가 적용될 수 있다. 예를 들어, 각각의 가중치는 무작위로 할당되거나 디폴트 값으로 초기화될 수 있다. 특징-검출 기계 학습 모델은 결과를 생성하기 위해 예를 들어 디지털 이미지의 트레이닝 세트를 사용하여 트레이닝될 수 있다. 일부 실시예에서, 전체 아키텍처의 서브세트는 사전 트레이닝된 가중치를 활용하기 위해 전이 학습 접근법으로서 다른 기계 학습 애플리케이션으로부터 재사용될 수 있다.
예를 들어, 트레이닝에는 지도(supervised) 학습 기술을 적용하는 것이 포함될 수 있다. 지도 학습에서, 트레이닝 데이터는 복수의 입력(예를 들어, 디지털 이미지의 세트) 및 각 입력에 대한 대응하는 예상 출력(예를 들어, 각 이미지에 대한 하나 이상의 특징)을 포함할 수 있다. 특징-검출 기계 학습 모델의 출력과 예상 출력을 비교한 결과, 가중치의 값은 예를 들어 유사한 입력이 제공될 때 특징-검출 기계 학습 모델이 예상 출력을 생성할 확률을 높이는 방식으로 자동으로 조정된다.
일부 실시예에서, 트레이닝은 비지도(unsupervised) 학습 기술을 적용하는 것을 포함할 수 있다. 비지도 학습에서, 입력 데이터(예: 레이블이 지정된 특징이 있는 이미지)만 제공될 수 있으며, 특징-검출 기계 학습 모델은 데이터를 구별하도록, 예를 들어 이미지의 특징을 복수의 그룹으로 클러스터링하도록 트레이닝될 수 있으며, 여기서 각 그룹은 어떤 방식으로 유사한 특징을 갖는 이미지를 포함한다.
다양한 실시예에서, 트레이닝된 모델은 모델 구조에 대응하는 가중치 세트를 포함한다. 디지털 이미지의 트레이닝 세트가 생략된 실시예에서, 특징-검출 기계 학습 모듈(218)은 예를 들어, 제3자 등에 의한 특징-검출 기계 학습 모듈(218)의 개발자에 의한 사전 트레이닝에 기초한 특징-검출 기계 학습 모델을 생성할 수 있다. 일부 실시예에서, 특징-검출 기계 학습 모델은 예를 들어 가중치를 제공하는 서버로부터 다운로드되는 고정된 가중치 세트를 포함할 수 있다.
일부 실시예에서, 특징-검출 기계 학습 모듈(218)은 오프라인 방식으로 구현될 수 있다. 이러한 실시예에서, 특징-검출 기계 학습 모델은 제1 단계(first stage)에서 생성될 수 있고, 특징-검출 기계 학습 모듈(218)의 일부로서 제공될 수 있다. 일부 실시예에서, 특징-검출 기계 학습 모델의 소규모 업데이트는 온라인 방식으로 구현될 수 있다. 그러한 실시예에서, 특징-검출 기계 학습 모듈(218)을 호출하는 애플리케이션(예를 들어, 운영 체제(212), 하나 이상의 다른 애플리케이션(214) 등)은 특징-검출 기계 학습 모듈(218)에 의해 생성된 특징 검출을 활용할 수 있고, 예를 들어, 특징-검출를 사용자-특정 기계 학습 모듈(220)에 제공하고 시스템 로그(예: 사용자가 허용한 경우 특징 검출을 기반으로 사용자가 취한 액션, 또는 추가 처리를 위한 입력으로 활용되는 경우 추가 처리의 결과)를 생성할 수 있다. 시스템 로그는 주기적으로 생성될 수 있고(예: 시간별, 월별, 분기별 등), 그리고 예를 들어 특징-검출 기계 학습 모델에 대한 임베딩을 업데이트하기 위해 사용자 권한으로 특징-검출 기계 학습 모델을 업데이트하는 데 사용할 수 있다.
일부 실시예에서, 특징-검출 기계 학습 모듈(218)은 특징-검출 기계 학습 모듈(218)이 실행되는 장치(200)의 특정 구성에 적응할 수 있는 방식으로 구현될 수 있다. 예를 들어, 특징-검출 기계 학습 모듈(218)은 이용 가능한 계산 자원, 예를 들어 프로세서(202)를 활용하는 계산 그래프를 결정할 수 있다. 예를 들어, 특징-검출 기계 학습 모듈(218)이 여러 장치에서 분산 애플리케이션으로 구현되는 경우, 특징-검출 기계 학습 모듈(218)은 계산을 최적화하는 방식으로 개별 장치에서 수행될 계산을 결정할 수 있다. 다른 예에서, 특징-검출 기계 학습 모듈(218)은 프로세서(202)가 특정 수의 GPU 코어(예를 들어, 1000)를 갖는 GPU를 포함하고 그리고 그에 따라 (예를 들어, 1000개의 개별 프로세스 또는 스레드로서) 특징-검출 기계 학습 모듈(218)을 구현할 수 있다고 결정할 수 있다.
일부 실시예에서, 특징-검출 기계 학습 모듈(218)은 트레이닝된 모델의 앙상블을 구현할 수 있다. 예를 들어, 특징-검출 기계 학습 모델은 동일한 입력 데이터에 각각 적용 가능한 복수의 트레이닝된 모델을 포함할 수 있다. 이러한 실시예에서, 특징-검출 기계 학습 모듈(218)은 예를 들어, 이용 가능한 계산 자원, 사전 추론을 통한 성공률 등에 기초하여 특정 트레이닝된 모델을 선택할 수 있다.
일부 실시예에서, 특징-검출 기계 학습 모듈(218)은 복수의 트레이닝된 모델을 실행할 수 있다. 이러한 실시예에서, 특징-검출 기계 학습 모듈(218)은 예를 들어, 각각의 트레이닝된 모델을 적용하여 개별 출력에 점수를 매기는 투표 기술을 사용하거나, 하나 이상의 특정 출력을 선택함으로써 개별 모델을 적용함으로써 출력을 결합할 수 있다. 일부 실시예에서, 그러한 선택기는 모델 자체의 일부이고 트레이닝된 모델 사이에서 연결된 계층으로서 기능하다. 또한, 이들 실시예에서, 특징-검출 기계 학습 모듈(218)은 개별 트레이닝된 모델을 적용하기 위한 시간 임계값(예를 들어, 0.5ms)을 적용하고 시간 임계값 내에서 이용 가능한 개별 출력만을 활용할 수 있다. 시간 임계값 내에 수신되지 않은 출력은 활용되지 않을 수 있다(예: 폐기됨). 예를 들어, 이러한 접근 방식은 예를 들어 운영 체제(212) 또는 하나 이상의 애플리케이션(612)에 의해 특징-검출 기계 학습 모듈(218)을 호출하는 동안 지정된 시간 제한이 있을 때 적합할 수 있다.
사용자-특정 기계 학습 모듈(200)의 예
사용자-특정 기계 학습 모듈(220)은 특징-검출 기계 학습 모듈(218)에 의해 분석된 동일한 입력 이미지에 대한 압축 세팅을 결정하는 사용자-특정 기계 학습 모델을 생성한다. 일부 실시예에서, 사용자-특정 기계 학습 모듈(220)은 사용자-특정 기계 학습 모델을 생성하기 위해 프로세서(202)에 의해 실행 가능한 명령어 세트를 포함한다. 일부 실시예에서, 사용자-특정 기계 학습 모듈(220)은 장치(200)의 메모리(204)에 저장되고 프로세서(202)에 의해 액세스 및 실행될 수 있다.
일부 실시예에서, 사용자-특정 기계 학습 모듈(220)은 트레이닝 데이터를 사용하여 트레이닝된 모델, 구체적으로 사용자-특정 기계 학습 모델을 생성할 수 있다. 트레이닝 데이터는 특징-검출 기계 학습 모델에 대한 하나 이상의 이전 이미지를 참조하여 사용자 액션을 나타내는 사용자 특정 특징과 같은 임의의 유형의 데이터를 포함할 수 있다. 예를 들어, 사용자 고유의 특징은 사용자가 이미지에 관심을 갖는 정도를 나타낼 수 있다. 이미지가 즐겨찾기임을 나타내는 것(예: 명시적 사용자 입력을 통해 즐겨찾기로 표시됨)은 압축해서는 안 되는 중요한 이미지로 볼 수 있다. 사용자-특정 특징들의 다른 예는 이미지에서 다른 사용자를 태그; 이미지를 공유; 사진 앨범 또는 기타 이미지 기반 창작물을 생성; 이미지에 댓글 달기; 이미지가 중요한 위치에서 캡처되었음을 나타내는 지리적 위치 데이터와 같이 사용자에게 중요한 메타데이터; 이미지를 다운로드, 이미지를 편집, 이미지 인쇄를 주문; 이미지를 편집; 사용자가 이미지를 좋아하는지 명시적으로 묻는 데이터 등과 같은 사용자 액션을 포함할 수 있다. 일부 실시양태에서, 사용자 액션은 다른 사용자의 이미지에 대한 댓글의 감정을 이미지에 대한 관심 신호로 결정하기 위해 자연어 처리를 사용, 다른 사용자의 이미지에 대한 승인(예: 좋아요) 표시, 다른 사용자의 이미지 저장, 다른 사용자의 이미지 다운로드 등과 같은 다른 사용자의 이미지에 대한 액션을 포함할 수 있다. 이러한 사용자 액션은 이미지 값의 신호이며 모델에 대한 입력으로 사용될 수 있다.
트레이닝 데이터는 예를 들어 트레이닝용으로 특별히 표시된 데이터 저장소, 기계 학습을 위한 트레이닝 데이터로 사용하도록 허가된 데이터 등과 같은 모든 소스에서 얻을 수 있다. 한 명 이상의 사용자가 기계 학습 모델을 트레이닝하기 위해 각자의 사용자 데이터를 사용하는 것을 허용하는 실시예에서, 트레이닝 데이터는 이러한 사용자 데이터를 포함할 수 있다. 사용자가 각자의 사용자 데이터 사용을 허용하는 실시예에서, 데이터에는 이미지/비디오 또는 이미지/비디오 메타데이터(예: 이미지, 이미지에 대한 해당 특징, 사용자와 연관된 사용자-특정 특징들, 사용자-특정 특징들이 하나 이상의 이전 이미지를 참조하여 사용자 액션을 나타내는 방법에 대한 설명 등), 통신(예: 소셜 네트워크의 메시지, 이메일, 문자 메시지, 음성, 비디오 등의 채팅 데이터), 문서(예: 스프레드시트, 텍스트 문서, 프레젠테이션 등) 등과 같은 허용된 데이터가 포함될 수 있다. 일부 실시양태에서, 하나 이상의 특징을 식별하는 방법에 대한 특징-검출 기계 학습 모델을 생성하기 위해 특징-검출 기계 학습 모듈(218)에 의해 사용된 이전 이미지는 사용자 액션을 나타내는 사용자-특정 특징 및 이전 이미지의 개별 이미지 특징에 기초하여 압축 설정을 결정하도록 사용자-특정 기계 학습 모델을 생성하기 위해 사용자-특정 기계 학습 모델(220)에 의해 사용된다.
예를 들어, 트레이닝된 모델(trained model)은 예를 들어 다른 장치에서 생성될 수 있고 이미지 관리 애플리케이션(103)의 일부로 제공될 수 있다. 다양한 실시예에서, 트레이닝된 모델은 모델 구조 또는 형태(예: 신경망 노드의 수와 유형, 노드 간 연결성 및 노드를 복수의 계층로 구성), 및 연관된 가중치를 포함하는 데이터 파일로서 제공될 수 있다. 사용자-특정 기계 학습 모듈(220)은 트레이닝된 모델에 대한 데이터 파일을 읽고 트레이닝된 모델에 지정된 모델 구조 또는 형태를 기반으로 노드 연결성, 계층 및 가중치를 갖는 신경망을 구현할 수 있다.
사용자-특정 기계 학습 모듈(220)은 여기에서 사용자-특정 기계 학습 모델이라고 하는 트레이닝된 모델을 생성한다. 일부 실시예에서, 사용자-특정 기계 학습 모듈(220)은 입력 이미지에 대한 압축 세팅을 식별하기 위해 압축 모듈(222)에 대한 데이터와 같은 데이터에 사용자-특정 기계 학습 모델을 적용하도록 구성된다. 일부 실시예에서, 사용자-특정 기계 학습 모듈(220)은 프로세서(202)에 의해 실행될 소프트웨어 코드를 포함할 수 있다. 일부 실시예에서, 사용자-특정 기계 학습 모듈(220)은 프로세서(202)가 사용자-특정 기계 학습 모델을 적용할 수 있게 하는 회로 구성(예: 프로그래머블 프로세서, FPGA(field programmable gate array) 등)을 지정할 수 있다. 일부 실시예에서, 사용자-특정 기계 학습 모듈(220)은 소프트웨어 명령어, 하드웨어 명령어, 또는 이를 조합을 포함할 수 있다.
일부 실시예에서, 사용자-특정 기계 학습 모델은 하나 이상의 모델 형태 또는 구조를 포함할 수 있다. 예를 들어, 모델 형태 또는 구조는 위에서 더 자세히 설명한 바와 같이, 선형 네트워크, 심층 신경망(예: 다층 피드포워드 완전 연결된 신경망, CNN 또는 시퀀스 대 시퀀스 신경망)과 같은 모든 유형의 신경망을 포함할 수 있다.
모델 형태 또는 구조는 다양한 노드 간의 연결과 노드를 계층으로 구성하는 것을 지정할 수 있다. 예를 들어, 제1 계층(예를 들어, 입력층)의 노드는 데이터를 입력 데이터 또는 애플리케이션 데이터(216)로서 수신할 수 있다. 그러한 데이터는, 예를 들어, 특징-검출 기계 학습 모델이 이미지와 연관된 사용자 액션을 나타내는 사용자-특정 특징의 분석을 위해 사용될 때, 노드당 하나 이상의 사용자-특정 특징을 포함할 수 있다. 후속 중간 계층은 모델 형식 또는 구조에 지정된 연결에 따라 이전 계층 노드의 출력을 입력으로 받을 수 있다. 이러한 계층은 은닉층이라고도 한다. 최종 계층(예: 출력층)은 기계 학습 애플리케이션의 출력을 생성한다. 예를 들어, 출력은 사용자-특정 특징들을 기반으로 하는 이미지에 대한 압축 세팅일 수 있다. 더 구체적으로, 출력은 사용자-특정 기계 학습 모듈(220)이 압축 세팅에 매핑하는 이미지에 대한 레이팅(rating)에 대응하는 이미지에 대한 사용자의 관심 정도의 결정일 수 있다. 일부 실시예에서, 모델 형태 또는 구조는 또한 각 계층에서 노드의 수 및/또는 유형을 지정(specify)한다.
사용자-특정 기계 학습 모델은 사용자-특정 기계 학습 모델에 공급하는 입력 이미지로부터 특징을 식별하기 위해 특징-검출 기계 학습 모듈(218)로부터 입력을 수신한다. 입력을 통해 특징-검출 기계 학습 모델은 입력 이미지에서 특징을 식별하고 입력 이미지가 사용자에게 흥미로운지 여부를 결정할 수 있다. 사용자-특정 기계 학습 모델은 사진 공유, 사진 보기 등과 같은 신호를 기반으로 사용자가 관심을 갖는 이미지의 특징을 식별하기 위해 사용자 액션을 나타내는 사용자-특정 특징에 대해 트레이닝(훈련)된다. 일부 실시예에서, 신호는 사용자에 대한 상대적 중요성을 명시적으로 추정하기 위한 레이블(예를 들어, 사용자 순위, 사진의 별, 적어도 하나의 공유, x 조회수 등)이다. 일부 실시예에서, 이들은 클러스터를 생성하기 위해 스택 랭크(stack rank)에 배치될 수 있다. 클러스터 내에서 사용자-특정 기계 학습 모델은 특징 검출 알고리즘을 사용하여 유사성 메트릭을 생성한 다음 유사성 메트릭을 사용하여 사용자에 대한 상대적 중요도를 추정한다.
사용 가능한 사용자-특정 특징들이 없는 일부 실시예에서 사용자-특정 기계 학습 모델은 베이스라인 압축 세팅(baseline compression setting)을 생성할 수 있다. 예를 들어, 베이스라인 압축 세팅은 다른 사용자로부터의 사용자 입력으로부터 생성될 수 있으며, 여기서 입력은 블러(blurriness) 또는 덜 흥미로운 이미지의 다른 유형의 표시자(indicator)를 기반으로 하는 이미지의 순위이다. 이 예에서 사용자-특정 기계 학습 모델은 이러한 유형의 이미지와 특정 유형의 이미지(예: 영수증)에 더 높은 압축 비율을 적용할 수 있다.
사용자-특정 기계 학습 모델의 출력은 1-5, 1-10 등의 스케일을 사용하는 것과 같이 사용자의 관심 레벨을 식별하는 레이팅(rating) 또는 회귀 출력(아날로그 값)(예: 7.83790)일 수 있다. 사용자-특정 기계 학습 모델은 레이팅을 압축 비율과 같은 압축 세팅에 매핑할 수 있다. 아래는 레이팅이 압축 비율에 매핑되는 방법의 예이다. 이 표1에서, 레이팅이 1인 경우, 압축된 이미지는 원본 이미지의 원래 해상도의 0.2를 차지한다.
레이팅 압축(original_size : new_size)
1 1 : 0.2
2 1 : 0.3
3 1 : 0.5
4 1 : 0.8
5 1 : 1
위의 예는 압축 비율에 매핑된 레이팅을 포함하는 압축 세팅을 설명하지만 압축 세팅의 다른 예도 가능하다. 예를 들어, 사용자-특정 기계 학습 모델은 압축 기술, 이미지 형식(예: JPEG, WebP, HEIF 등 사용), 최적화(예: 동적 범위(다이내믹 레인지), 이미지 해상도, 색상, 압축이 점진적인지 여부)를 위해 선택된 파라미터 등을 결정할 수 있다. 다른 예에서, 압축 세팅은 이미지에서 하나 이상의 관심 영역을 결정하는 것과 같이, 이미지의 하나 이상의 특징을 고해상도로 유지하고 이미지의 나머지 부분을 압축하는 결정일 수 있다. 다른 예에서, 이미지의 다양한 특징에 대한 레이팅을 결정하는 사용자-특정 기계 학습 모델에 추가하여, 사용자-특정 기계 학습 모델은 특정 유형의 이미지에 대해 품질 트레이드오프가 고려된다고 결정할 수도 있다. 예를 들어, 다이내믹 레인지는 일몰 이미지에 중요할 수 있고 해상도는 클로즈업에 더 중요할 수 있다.
또 다른 예에서, 사용자-특정 기계 학습 모델은 동일한 이미지에 다른 특징이 포함된 경우 레이팅을 적용하는 방법을 나타낼 수도 있다. 예를 들어, 이미지가 일몰을 포함하는 경우 일반적으로 5개의 레이팅을 갖지만 음식이 포함된 경우 2개의 레이팅을 갖는 경우, 사용자-특정 기계 학습 모델은 가장 흥미로운 것을 나타내는 레이팅, 즉 5개의 레이팅을 적용할 수 있다. 다른 실시예에서, 사용자-특정 기계 학습 모델은 이미지에 대한 특정 사용자의 반응이 복수의 특징에 대한 레이팅을 평균화해야 하고, 특정 특징은 더 높은 가중치와 연관되어야 함을 시사한다고 결정할 수 있다.
일부 실시양태에서, 사용자-특정 기계 학습 모델은 입력 이미지에 대한 레이팅이 중요도 임계값을 충족한다고 결정하고, 그리고 중요도 임계값을 충족하는 레이팅에 대한 응답으로 사용자-특정 기계 학습 모델은 사용자가 입력 이미지를 공유하도록 제안한다. 다른 실시예에서, 중요도 임계값을 충족하는 레이팅에 대한 응답으로, 사용자-특정 기계 학습 모델은 중요도 임계값을 충족하지 않는 사용자 계정과 연관된 다른 이미지보다 입력 이미지의 백업을 우선순위화한다. 예를 들어, 클라이언트 장치(115)가 인터넷 액세스가 제한된 지역에 위치하는 경우, 사용자-특정 기계 학습 모델은 저장을 위해 서버 시스템(101)에 전송될 최고 레이팅(또는 레이팅에 따라 내림차순으로 정렬)의 이미지를 전송하도록 클라이언트 장치(115)에 지시할 수 있다. 다른 실시예에서, 중요도 임계값을 충족하는 레이팅에 응답하여, 사용자-특정 기계 학습 모델은 후속 이미지에 묘사된 장면이 입력 이미지의 하나 이상의 특징 중 적어도 하나를 갖는 경우, 사용자 인터페이스 모듈(220)에 후속 이미지 캡처를 위한 명령어를 포함하는 사용자 인터페이스를 제공하도록 지시한다. 예를 들어, 사용자가 식물 사진을 찍는 데 관심이 있는 경우, 사용자 인터페이스는 사진의 물방울이 꽃잎을 흐리게 할 수 있음을 사용자에게 알릴 수 있다. 다른 예에서, 이미지에서 관심 특징이 관찰되면 카메라는 관심 특징에 자동으로 초점을 고정할 수 있다(사용자가 탭으로 초점을 변경할 수 있음).
다른 실시예에서, 사용자-특정 기계 학습 모델은 하나 이상의 모델을 포함할 수 있다. 하나 이상의 모델은 모델 구조 또는 형태당 계층로 배열된 복수의 노드를 포함할 수 있다. 일부 실시예에서, 노드는 메모리가 없는 계산 노드일 수 있으며, 예를 들어 하나의 입력 유닛을 처리하여 하나의 출력 유닛을 생성하도록 구성될 수 있다. 노드에 의해 수행되는 계산은, 예를 들어, 복수의 노드 입력들 각각에 가중치를 곱하고, 가중 합을 획득하고, 가중 합을 바이어스 또는 절편 값으로 조정하여 노드 출력을 생성하는 것을 포함할 수 있다. 일부 실시예에서, 노드에 의해 수행되는 계산은 또한 조정된 가중 합에 스텝/활성화 함수를 적용하는 것을 포함할 수 있다. 일부 실시예에서, 스텝/활성화 함수는 비선형 함수일 수 있다.
다양한 실시예에서, 그러한 계산은 행렬 곱셈과 같은 연산을 포함할 수 있다. 일부 실시예에서, 복수의 노드에 의한 계산은, 예를 들어, 다중 코어 프로세서의 다중 프로세서 코어를 사용하여, GPU의 개별 처리 유닛을 사용하여, 또는 특수 목적 신경 회로를 사용하여 병렬로 수행될 수 있다. 일부 실시예에서, 노드는 메모리를 포함할 수 있으며, 예를 들어 후속 입력을 처리할 때 하나 이상의 이전 입력을 저장하고 사용할 수 있다. 예를 들어, 메모리가 있는 노드에는 LSTM 노드가 포함될 수 있다. LSTM 노드는 노드가 FSM처럼 작동하도록 허용하는 상태를 유지하기 위해 메모리를 사용할 수 있다.
일부 실시예에서, 사용자-특정 기계 학습 모델은 개별 노드에 대한 임베딩 또는 가중치를 포함할 수 있다. 예를 들어, 사용자-특정 기계 학습 모델은 모델 형태 또는 구조에 의해 지정된 계층로 구성된 복수의 노드로 시작될 수 있다. 초기화 시, 모델 형태에 따라 연결된 노드의 각 쌍, 예를 들어 신경망의 연속적인 계층에 있는 노드 사이의 연결에 각각의 가중치가 적용될 수 있다. 예를 들어, 각각의 가중치는 무작위로 할당되거나 디폴트 값으로 초기화될 수 있다. 사용자-특정 기계 학습 모델은 결과를 생성하기 위해 예를 들어 사용자-특정 트레이닝 세트를 사용하여 트레이닝될 수 있다.
트레이닝에는 지도 학습 기법을 적용하는 것이 포함될 수 있다. 지도 학습에서, 트레이닝 데이터는 복수의 입력(예: 다양한 유형의 이미지에 부여된 레이팅)과 각 입력(예: 압축 세팅)에 대한 대응하는 예상 출력을 포함할 수 있다. 특징-검출 기계 학습 모델의 출력(예: 예측 레이팅)과 예상 출력(예: 사용자가 제공한 레이팅)의 비교를 기반으로, 가중치 값은 예를 들어 유사한 입력이 제공될 때 사용자-특정 기계 학습 모델이 예상 출력을 생성할 확률을 높이는 방식으로 자동 조정된다. 사용자와 연관된 다양한 유형의 이미지 카테고리에 대해 사용자가 제공한 레이팅의 한 예가 아래 표2에 포함되어 있다. 이 예에서 가장 낮은 레이팅은 가장 덜 중요한 것과 연관되고 가장 높은 레이팅은 가장 중요한 것과 연관된다.
카테고리 레이팅
영수증 1
스크린샷 1
음식 2
자동차 3
고양이 4
일몰 5
풍경 5
다양한 실시예에서, 트레이닝된 모델은 모델 구조에 대응하는 가중치 또는 임베딩의 세트를 포함한다. 디지털 이미지의 트레이닝 세트가 생략된 실시예에서, 사용자-특정 기계 학습 모듈(220)은 예를 들어 제3자 등에 의한 사용자-특정 기계 학습 모듈(220)의 개발자에 의한 사전 트레이닝(훈련)에 기반한 사용자-특정 기계 학습 모델을 생성할 수 있다. 일부 실시예에서, 사용자-특정 기계 학습 모델은 고정된 가중치 세트를 포함할 수 있으며, 예를 들어 가중치를 제공하는 서버로부터 다운로드된다.
사용자-특정 기계 학습 모듈(220)은 오프라인 방식으로 및/또는 트레이닝된 모델의 앙상블로서 그리고 상이한 포맷으로 구현될 수 있다. 이는 특징-검출 기계 학습 모듈(218)을 참조하여 위에서 설명하였기 때문에, 동일한 설명이 사용자-특정 기계 학습 모듈(220)에 적용될 수 있음을 이해해야 한다. 결과적으로 설명은 다시 반복되지 않는다.
압축 모듈(222)의 예
압축 모듈(222)은 사용자-특정 기계 학습 모듈(220)에 의해 결정된 압축 세팅에 기초하여 입력 이미지를 압축한다. 일부 실시예에서, 압축 모듈(222)은 입력 이미지를 압축하기 위해 프로세서(202)에 의해 실행가능한 명령어 세트를 포함한다. 일부 실시예에서, 압축 모듈(222)은 장치(200)의 메모리(204)에 저장되고 프로세서(202)에 의해 액세스 및 실행될 수 있다.
압축 모듈(222)은 특징-검출 기계 학습 모듈(218)로부터 입력 이미지를 수신하고, 사용자-특정 기계 학습 모듈(220)로부터 압축 세팅을 수신할 수 있다. 압축 모듈(222)은 압축 세팅을 입력 이미지에 적용한다. 압축 모듈(222)은 메모리(204) 및/또는 이미지가 저장될 저장 장치를 보다 효율적으로 사용하기 위해 파일 크기를 줄이기 위해 원본 입력 이미지를 압축된 입력 이미지로 대체할 수 있다. 일부 실시예에서, 압축 모듈(222)은 압축된 입력 이미지를 저장을 위해 다른 위치로 전송할 수 있다. 예를 들어, 이미지 관리 애플리케이션(103b)이 클라이언트 장치(115a)의 일부인 경우, 압축 모듈(222)은 압축된 입력 이미지를 저장을 위해 서버 시스템(101)에 전송할 수 있다.
사용자 인터페이스 모듈(224)의 예
사용자 인터페이스 모듈(224)은 사용자로부터 입력을 수신하는 사용자 인터페이스를 생성한다. 일부 실시예에서, 사용자 인터페이스 모듈(224)은 입력 이미지를 압축하기 위해 프로세서(202)에 의해 실행가능한 명령어 세트를 포함한다. 일부 실시예에서, 사용자 인터페이스 모듈(224)은 장치(200)의 메모리(204)에 저장되고 프로세서(202)에 의해 액세스 및 실행될 수 있다.
일부 실시예에서, 사용자 인터페이스 모듈(224)은 이미지 관리 애플리케이션(103)과 연관된 상이한 설정을 변경하기 위한 사용자 인터페이스를 생성한다. 일부 실시예에서, 사용자 인터페이스 모듈(224)은 사용자 인터페이스를 생성하고 베이스라인 압축 세팅을 결정하기 위해 사용자 입력을 수신한다. 예를 들어, 사용자 인터페이스 모듈(224)은 사용자 계정과 연관된 사용자가 볼 수 있는 사용자 인터페이스를 생성할 수 있다.
사용자 인터페이스는 각각의 이미지가 다른 압축 세팅으로 압축된 샘플 이미지의 두 개 이상의 버전을 포함할 수 있다. 사용자 인터페이스는 샘플 이미지의 특정 버전을 사용자 계정에 대한 베이스라인 압축 세팅으로 식별하도록 사용자에게 묻는 프롬프트를 포함할 수 있다. 예를 들어 베이스라인 압축 세팅은 사용자 계정과 연결된 이미지에 대해 사용자가 수락하는 가장 낮은 압축 세팅을 나타낼 수 있다. 사용자 인터페이스 모듈(224)은 베이스라인 압축 세팅의 정확성을 확인하기 위해 베이스라인 압축 세팅에 관한 사용자 입력을 여러 번 요청할 수 있다. 예를 들어, 사용자 인터페이스 모듈(224)은 서로 다른 특징을 가진 이미지를 제공하거나, 주기적으로(일주일에 한 번, 한 달에 한 번, 이미지 관리 애플리케이션(103)에 대한 소프트웨어 업데이트가 있을 때마다) 사용자 인터페이스를 표시할 수 있다.
일부 실시예에서, 사용자 인터페이스 모듈(224)은 사용자의 선택에 응답하여 경고를 생성할 수 있다. 예를 들어, 사용자가 고해상도 압축 세팅을 선택하거나 압축 세팅을 전혀 선택하지 않으면, 사용자 인터페이스 모듈(224)은 저장 공간이 특정 일 수 또는 특정 수의 추가 이미지가 캡처된 후에 소진될 것임을 사용자에게 경고할 수 있다. 이 추정은 사용자가 지난 x일 동안 업로드한 사진 크기의 평균을 기반으로 할 수 있다.
사용자 인터페이스 모듈(224)은 입력 이미지에 대한 압축 세팅을 결정하는 데 사용하기 위해 사용자-특정 기계 학습 모듈(220)에 사용자 선택의 결과를 전송할 수 있다. 기계 학습 모듈(220)은 그 다음 베이스라인 압축 세팅에 기초하여 압축 세팅에 레이팅을 매핑할 수 있다.
메모리(204) 내의 임의의 소프트웨어는 대안적으로 임의의 다른 적절한 저장 위치 또는 컴퓨터 판독가능 매체에 저장될 수 있다. 또한, 메모리(204)(및/또는 다른 연결된 저장 장치(들))는 하나 이상의 메시지, 하나 이상의 분류(taxonomies), 전자 백과사전, 사전, 동의어 사전, 지식 기반, 메시지 데이터, 문법 및/또는 여기에 설명된 특징에 사용된 기타 명령어 및 데이터를 저장활 수 있다. 메모리(204) 및 임의의 다른 유형의 저장 장치(자기 디스크, 광 디스크, 자기 테이프 또는 기타 유형의 매체)는 "스토리지" 또는 "저장 장치"로 간주될 수 있다.
설명의 편의를 위해, 도 2는 프로세서(202), 메모리(204), I/O 인터페이스(206), 카메라(208), 디스플레이 장치(210), 및 소프트웨어 블록(103, 218, 220, 220, 222, 224) 각각에 대한 하나의 블록을 도시한다. 이러한 블록은 하나 이상의 프로세서 또는 처리 회로, 운영 체제, 메모리, I/O 인터페이스, 애플리케이션 및/또는 소프트웨어 모듈을 나타낼 수 있다. 다른 실시예에서, 장치(200)는 도시된 컴포넌트 모두를 갖지 않을 수 있고/있거나 여기에 도시된 컴포넌트 대신에 또는 이에 추가하여 다른 유형의 컴포넌트를 포함하는 다른 컴포넌트를 가질 수 있다. 일부 컴포넌트는 본 명세서의 일부 실시예에서 설명된 블록 및 동작을 수행하는 것으로 설명되지만, 환경(100), 장치(200), 유사한 시스템의 임의의 적절한 컴포넌트 또는 컴포넌트의 조합, 또는 이러한 시스템과 연관된 임의의 적절한 프로세서 또는 프로세서는 설명된 블록 및 동작을 수행할 수 있다.
여기에 설명된 방법은 컴퓨터에서 실행될 수 있는 컴퓨터 프로그램 명령어 또는 코드에 의해 구현될 수 있다. 예를 들어, 코드는 하나 이상의 디지털 프로세서(예: 마이크로프로세서 또는 기타 처리 회로)에 의해 구현될 수 있으며, 반도체 또는 솔리드 스테이트 메모리, 자기 테이프, 이동식 컴퓨터 디스켓, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 플래시 메모리를 포함한 자기, 광학, 전자기 또는 반도체 저장 매체, 강성 자기 디스크, 광 디스크, 솔리드 스테이트 메모리 드라이브 등과 같은 비일시적 컴퓨터 판독 가능 매체(예: 저장 매체)를 포함하는 컴퓨터 프로그램 제품에 저장될 수 있다. 프로그램 명령어는 예를 들어 서버(예: 분산 시스템 및/또는 클라우드 컴퓨팅 시스템)에서 제공되는 SaaS(Software as a Service) 형태의 전자 신호에 포함되어 제공될 수도 있다. 대안적으로, 하나 이상의 방법은 하드웨어(논리 게이트 등)에서, 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 예시적인 하드웨어는 프로그래머블 프로세서(예를 들어, FPGA(Field-Programmable Gate Array), 복합 프로그래머블 로직 디바이스), 범용 프로세서, 그래픽 프로세서, ASIC(Application Specific Integrated Circuits) 등일 수 있다. 하나 이상의 방법은 시스템에서 실행되는 애플리케이션의 일부 또는 컴포넌트로 수행되거나 다른 애플리케이션 및 운영 체제와 함께 실행되는 애플리케이션 또는 소프트웨어로 수행될 수 있다.
예시 방법
도 3은 입력 이미지(302)에서 하나 이상의 특징(306)을 식별하기 위해 특징-검출 기계 학습 모델(304)을 사용하고 그리고 일부 실시예에 따라, 이미지의 하나 이상의 특징으로부터 압축 세팅(310)을 결정하기 위해 사용자-특정 기계-학습 모델(308)을 사용하는 예시적인 방법(300)을 나타내는 흐름도이다.
특징-검출 기계 학습 모델(304)은 픽셀들로부터 더 추상적인 객체들로 구축되는 층들의 세트를 갖는 CNN(convolutional neural network)과 같은 심층 신경망을 포함할 수 있다. 일부 구현에서, CNN의 이전 계층은 에지를 검출하고 그리고 계층의 깊이가 증가함에 따라 특징의 인간 정의 의미가 증가한다. 예를 들어, 중간 단계 계층(middle stage layers)은 객체의 컴포넌트를 검출할 수 있고, 나중 단계 계층은 객체(또는 얼굴) 자체를 검출할 수 있다.
입력 이미지(302)는 특징-검출 기계 학습 모델(304)에 대한 입력으로서 제공된다. 입력 이미지(302)는 사용자 계정과 연관된 사용자로부터 온 것이다. 입력 이미지(302)는 계층 세트의 입력층에 의해 수신될 수 있다. 입력층은 계층 세트의 두 번째 계층에 연결될 수 있다. 일부 실시예에서, 하나 이상의 추가 계층은 각각 이전 계층의 출력을 입력으로 수신하고 다음 계층에 입력을 제공한다. 특징-검출 기계 학습 모델(304)은 입력 이미지(302)에 기초하여 하나 이상의 특징(306)을 생성한다. 계층 세트의 마지막 계층은 출력층일 수 있다. 이 예를 계속하면, 출력층은 하나 이상의 특징(306)을 출력할 수 있다.
일부 실시예에서, 출력은 각각의 특징이 이미지에서 정확하게 식별되었다는 대응하는 확률을 포함할 수 있다. 특징-검출 기계 학습 모델(304)의 출력은 숫자의 벡터, 확률 값, 또는 확률 값의 세트(예: 비디오 프레임의 특정 스택에 각각 해당)일 수 있다. 특징-검출 기계 학습 모델(304)의 출력은 사용자-특정 기계 학습 모델(308)에 대한 입력으로서 제공된다.
사용자-특정 기계 학습 모델(308)은 또한 CNN과 같은 심층 신경망을 포함할 수 있다. 일부 실시양태에서, 사용자-특정 기계 학습 모델(308)은 특징-검출 기계 학습 모델(304)의 분류 계층을 사용자와 연관된 사용자 특정 특징으로 트레이닝된 컴포넌트로 대체함으로써 전이 학습을 사용하여 생성될 수 있고, 여기서 사용자-특정 특징은 이전 이미지를 참조한 사용자 액션을 나타낸다. 일부 실시예에서, 이전 이미지는 또한 특징-검출 기계 학습 모델(304)을 트레이닝하는 데 사용된다.
사용자-특정 기계 학습 모델(308)은 입력층을 통해 하나 이상의 특징(306)을 수신할 수 있다. 입력층은 복수의 계층 중 제2 계층와 연결될 수 있다. 일부 실시예에서, 각각 이전 계층의 출력을 입력으로 수신하고 다음 계층에 입력을 제공하는 하나 이상의 추가 계층이 사용자-특정 기계 학습 모델(308)에 포함될 수 있다. 사용자-특정 기계 학습 모델(308)의 마지막 계층은 출력층일 수 있다. 일부 구현에서, 모델(308)은 압축 세팅(310)을 직접 출력하는 단일 입력층을 가질 수 있다.
사용자-특정 기계 학습 모델(308)은 압축 세팅(310)(예측(310)) 및 선택적으로 압축 세팅(310)과 연관된 확률을 출력으로서 생성할 수 있다. 일부 실시예에서, 압축 세팅(310)은 입력 이미지(302)의 하나 이상의 특징에 대한 하나 이상의 레이팅을 포함할 수 있다. 확률은 확률 값, 확률 값의 세트(예를 들어, 각각은 입력 이미지(302)의 특정 특징에 대한 레이팅에 대응함), 또는 사용자-특정 기계 학습 모델(308)의 출력층에 의해 생성된 벡터 표현을 포함할 수 있다.
일부 실시예에서, 방법(300)은 예를 들어 이미지 관리 애플리케이션(103b)의 일부로서 클라이언트 장치(115a, 115n) 중 하나 이상에서 구현될 수 있다. 일부 실시예에서, 방법(300)은 예를 들어, 이미지 관리 애플리케이션(103a)의 일부로서 서버 장치(104) 상에서 구현될 수 있다. 일부 실시예에서, 방법(300)은 서버 장치(104) 및 클라이언트 장치(115a, 115n) 중 하나 이상에서 구현될 수 있다.
일부 실시예에서, 방법(300)은 범용 프로세서, 예를 들어 장치의 중앙 처리 장치(CPU) 상에서 실행가능한 소프트웨어로서 구현될 수 있다. 일부 실시양태에서, 방법(300)은 특수 목적 프로세서, 예를 들어, 그래픽 처리 장치(GPU), 현장 프로그램 가능 게이트 어레이(FPGA), 기계 학습 프로세서 등에서 실행 가능한 소프트웨어로서 구현될 수 있다. 일부 실시예에서, 방법(300)은 전용 하드웨어, 예를 들어 ASIC(application specific integrated circuit)로서 구현될 수 있다.
도 4는 일부 실시예에 따른 트레이닝된 모델을 생성하기 위한 예시적인 방법(400)을 도시하는 흐름도이다.
방법(400)은 블록(402)에서 시작할 수 있다. 블록 402에서, 사용자 데이터 사용에 대한 사용자 동의가 획득되었는지 여부가 결정된다. 예를 들어, 사용자 인터페이스 모듈(224)은 특징-검출 기계 학습 모델 및/또는 사용자-특정 기계 학습 모델의 생성에서 사용자 데이터를 사용하기 위해 사용자로부터 허가를 요청하는 사용자 인터페이스를 생성할 수 있다. 사용자 동의가 획득되지 않은 경우, 블록(404)에서 특징-검출 기계 학습 모델 및/또는 사용자-특정 기계 학습 모델 대신 베이스라인 모델이 사용된다.
사용자 동의가 획득된 경우, 방법(400)은 디지털 이미지 및 대응하는 특징의 트레이닝 세트가 획득되는 블록(406)으로 진행할 수 있다. 블록(406) 다음에 블록(408)이 올 수 있다. 블록(408)에서, 특징-검출 기계 학습 모델은 트레이닝 세트 및 대응하는 특징에 기초하여 트레이닝되고, 여기서, 트레이닝 후, 특징-검출 기계 학습 모델은 특징-검출 기계 학습 모델에 제공된 입력 이미지에서 이미지 특징을 식별할 수 있다. 블록(408) 다음에 블록(410)이 올 수 있다.
블록(410)에서, 사용자와 연관된 사용자-특정 특징의 트레이닝 세트가 획득되고, 여기서 사용자-특정 특징은 하나 이상의 이전 이미지를 참조하여 사용자 액션을 나타낸다. 일부 실시예에서, 이전 이미지는 디지털 이미지 세트와 동일하다. 블록(410) 다음에 블록(412)이 올 수 있다. 블록(412)에서, 사용자-특정 기계 학습 모델은 사용자-특정 특징 및 하나 이상의 이전 이미지에 기초하여 트레이닝되고, 트레이닝 후 사용자-특정 기계 학습 모델은 사용자-특정 기계 학습 모델에 제공된 입력 이미지에 대한 레이팅을 결정한다.
도 5는 일부 실시예에 따른 입력 이미지에 모델을 적용하기 위한 예시적인 방법(500)을 도시하는 흐름도이다.
블록(502)에서, 사용자 계정과 연관된 입력 이미지가 획득된다. 블록(502) 다음에 블록(504)이 올 수 있다. 블록(504)에서, 입력 이미지의 하나 이상의 특징이 특징-검출 기계 학습 모델을 사용하여 결정된다. 블록(504) 다음에 블록(506)이 올 수 있다. 블록(506)에서, 입력 이미지에 대한 압축 세팅은 입력 이미지의 하나 이상의 특징에 기초하여 사용자 계정에 개인화된 사용자-특정 기계 학습 모델을 사용하여 결정된다. 블록(506) 다음에 블록(508)이 올 수 있다. 블록(508)에서, 입력 이미지는 압축 세팅에 기초하여 압축된다.
트레이닝에 앞서, 각 노드에 초기 가중치가 할당되고 신경망의 서로 다른 계층의 노드 간의 연결이 초기화될 수 있다. 트레이닝은 하나 이상의 노드의 가중치 및/또는 노드의 하나 또는 쌍 간의 연결을 조정하는 것을 포함할 수 있다.
일부 실시예에서, 트레이닝 세트의 서브세트는 초기 트레이닝 단계에서 제외될 수 있다. 이 서브세트는 초기 트레이닝 단계 이후에 제공될 수 있고 예측의 정확도(비디오를 분석할지 여부에 대한 표시)가 결정될 수 있다. 정확도가 임계값 미만인 경우, 모델이 출력을 올바르게 예측할 때까지 모델 파라미터를 조정하기 위해 트레이닝 세트에서 각각 추가 디지털 이미지 또는 사용자-특정 특징으로 추가 트레이닝을 수행할 수 있다.
추가 트레이닝(두 번째 단계)은 예를 들어 모델이 충족스러운 수준(satisfactory level)의 정확도를 달성할 때까지 여러 번 반복될 수 있다. 일부 실시예에서, 트레이닝된 모델은 예를 들어 압축(더 적은 수의 노드 또는 계층 사용), 변환(예: 다른 유형의 하드웨어에서 사용 가능) 등으로 추가로 수정될 수 있다. 일부 실시예에서, 모델의 다른 버전이 제공될 수 있으며, 예를 들어 모델의 클라이언트 버전은 크기에 대해 최적화되고 계산 복잡성이 감소될 수 있는 반면, 모델의 서버 버전은 정확성을 위해 최적화될 수 있다.
방법(400, 500)이 도 4 및 5의 다양한 블록을 참조하여 설명되었지만, 본 개시에서 설명된 기술은 도 4 및 5의 블록 중 일부를 수행하지 않고 수행될 수 있음을 이해할 수 있다. 일부 실시예에서, 도 4 및 5에 예시된 블록 중 하나 이상이 결합될 수 있다.
또한, 트레이닝 세트를 참조하여 트레이닝을 설명하였지만, 특징-검출 기계 학습 모델 및 사용자-특정 기계 학습 모델은 동작 중에 트레이닝될 수 있다. 예를 들어, 사용자가 특정 압축 세팅을 사용하여 이미지를 압축하도록 요청하는 경우, 특징-검출 기계 학습 모델 및 사용자-특정 기계 학습 모델은 사용자 정보를 포함하도록 업데이트될 수 있다. 일부 실시예에서, 사용자는 수동으로 주석을 제공할 수 있으며, 예를 들어 기능 목록 및 해당 기능에 대한 레이팅을 제공할 수 있다. 사용자 허가로, 일부 실시예는 특징-검출 기계 학습 모델 및 사용자-특정 기계 학습 모델을 트레이닝하기 위해 이러한 주석을 활용할 수 있다.
설명이 이의 특정 실시예와 관련하여 설명되었지만, 이러한 특정 실시예는 단지 예시적이며 제한적이지 않는다. 실시예에 예시된 개념은 다른 실시예 및 실시예에 적용될 수 있다.
여기에 설명된 특정 실시예가 사용자에 대한 개인 정보(예: 사용자 데이터, 사용자의 소셜 네트워크에 대한 정보, 사용자의 위치 및 해당 위치에서의 시간, 사용자의 생체 정보, 사용자의 활동 및 인구 통계 정보)를 수집하거나 사용할 수 있는 상황에서, 사용자에게는 정보 수집 여부, 개인 정보 저장 여부, 개인 정보 사용 여부, 사용자에 대한 정보 수집, 저장 및 사용 방법을 제어할 수 있는 하나 이상의 기회가 제공된다. 즉, 여기에 설명된 시스템 및 방법은 관련 사용자로부터 명시적인 승인을 받은 경우 사용자 개인 정보를 수집, 저장 및/또는 사용한다. 사용자는 이러한 모델을 영구적으로 삭제할 수 있다.
예를 들어, 사용자는 프로그램 또는 기능이 해당 특정 사용자 또는 프로그램 또는 기능과 연관된 다른 사용자에 대한 사용자 정보를 수집하는지 여부를 제어할 수 있다. 개인 정보를 수집해야 하는 각 사용자에게는 해당 사용자와 연관된 정보 수집을 제어할 수 있는 하나 이상의 옵션이 제공되어 정보가 수집되는지 여부와 정보의 어느 부분이 수집되어야 하는지에 대한 허가 또는 승인을 제공한다. 예를 들어, 사용자는 통신 네트워크를 통해 하나 이상의 이러한 제어 옵션을 제공받을 수 있다. 또한 특정 데이터는 저장 또는 사용되기 전에 하나 이상의 방식으로 처리되어 개인 식별 정보가 제거될 수 있다. 예를 들어, 사용자의 신원은 개인 식별 정보를 확인할 수 없도록 처리될 수 있다. 다른 예로서, 클라이언트 장치의 지리적 위치는 사용자의 특정 위치가 결정될 수 없도록 더 큰 지역으로 일반화될 수 있다.
본 개시에서 설명된 기능 블록, 동작, 특징, 방법, 장치 및 시스템은 당업자에게 공지된 바와 같이 시스템, 장치 및 기능 블록의 상이한 조합으로 통합되거나 분할될 수 있음을 유의한다. 특정 실시예의 루틴을 구현하기 위해 임의의 적절한 프로그래밍 언어 및 프로그래밍 기술이 사용될 수 있다. 다른 프로그래밍 기술, 예를 들어 절차 또는 객체 지향이 사용될 수 있다. 루틴은 단일 처리 장치 또는 다중 프로세서에서 실행할 수 있다. 단계, 동작 또는 계산이 특정 순서로 제시될 수 있지만, 그 순서는 다른 특정 실시예에서 변경될 수 있다. 일부 실시예에서, 본 명세서에서 순차적으로 도시된 복수의 단계 또는 동작이 동시에 수행될 수 있다.

Claims (20)

  1. 컴퓨터로 구현되는 방법으로서,
    입력 이미지를 획득하는 단계 -상기 입력 이미지는 사용자 계정과 연관됨-;
    특징-검출 기계 학습 모델을 사용하여, 상기 입력 이미지의 하나 이상의 특징들을 결정하는 단계;
    상기 사용자 계정에 개인화된 사용자-특정 기계 학습 모델을 사용하여, 상기 입력 이미지의 하나 이상의 특징들에 기초하여 상기 입력 이미지에 대한 압축 세팅을 결정하는 단계; 그리고
    상기 압축 세팅에 기초하여 상기 입력 이미지를 압축하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  2. 제1항에 있어서, 상기 특징-검출 기계 학습 모델은,
    디지털 이미지들 및 해당 특징들의 트레이닝 세트를 획득하고, 그리고 상기 트레이닝 세트 및 상기 해당 특징들을 기반으로 상기 특징-검출 기계 학습 모델을 트레이닝함으로써, 생성되며,
    트레이닝 후에, 상기 특징-검출 기계 학습 모델은 상기 특징-검출 기계 학습 모델에 제공된 상기 입력 이미지에서 이미지 특징들을 식별할 수 있는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  3. 제2항에 있어서, 상기 특징-검출 기계 학습 모델은 복수의 네트워크 계층들을 갖는 CNN(convolutional neural network)을 포함하고, 각각의 네트워크 계층은 서로 다른 추상화 레벨들에서 상기 하나 이상의 이미지 특징들을 추출하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  4. 제2항에 있어서, 상기 사용자-특정 기계 학습 모델은,
    사용자와 연관된 사용자-특정 특징들의 트레이닝 세트를 획득하고 -상기 사용자-특정 특징들은 하나 이상의 이전 이미지들을 참조하여 사용자 액션을 나타냄-, 그리고 상기 사용자-특정 특징들 및 상기 하나 이상의 이전 이미지들을 기반으로 사용자-특정 기계 학습 모델을 트레이닝함으로써, 생성되며,
    트레이닝 후, 상기 사용자-특정 기계 학습 모델은 상기 사용자-특정 기계 학습 모델에 제공된 상기 입력 이미지에 대한 레이팅(rating)을 결정하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  5. 제4항에 있어서, 상기 트레이닝 세트는 상기 하나 이상의 이전 이미지들의 각각의 이미지 특징들을 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  6. 제5항에 있어서, 상기 하나 이상의 이전 이미지들의 각각의 이미지 특징들은 상기 특징-검출 기계 학습 모델을 상기 하나 이상의 이전 이미지들에 적용함으로써 획득되는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  7. 제1항에 있어서, 상기 방법은,
    각각 다른 압축 세팅으로 압축된 샘플 이미지의 둘 이상의 버전들로 상기 사용자 계정과 연관된 사용자에게 제1 사용자 인터페이스를 제공하는 단계;
    상기 샘플 이미지의 특정 버전을 식별하는 사용자 입력을 사용자로부터 획득하는 단계; 그리고
    상기 샘플 이미지의 상기 특정 버전과 연관된 압축 세팅을 상기 사용자 계정에 대한 베이스라인 압축 세팅으로 선택하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  8. 제7항에 있어서, 상기 압축 세팅을 결정하는 단계는,
    상기 사용자-특정 기계 학습 모델에 의해, 상기 입력 이미지에 대한 레이팅을 결정하는 단계; 그리고
    상기 레이팅을 상기 압축 세팅에 매핑하는 단계를 포함하며, 상기 매핑은 상기 베이스라인 압축 세팅에 기초하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  9. 제8항에 있어서, 상기 방법은,
    상기 입력 이미지에 대한 상기 레이팅이 중요도 임계값을 충족한다고 결정하는 단계; 그리고
    상기 레이팅이 상기 중요도 임계값을 충족한다는 결정에 응답하여, 단계들 중 하나 이상을 수행하는 단계를 더 포함하며, 상기 단계들은,
    상기 사용자가 상기 입력 이미지를 공유하도록 하는 제안을 제공하는 단계,
    상기 중요도 임계값을 충족하지 않는 상기 사용자 계정과 연관된 다른 이미지들의 백업보다 상기 입력 이미지의 백업을 우선순위화하는 단계, 또는
    후속 이미지에 묘사된 장면이 상기 입력 이미지의 하나 이상의 특징들 중 적어도 하나를 갖는 경우, 상기 후속 이미지의 캡처를 위한 명령어를 포함하는 제2 사용자 인터페이스를 제공하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  10. 컴퓨팅 장치로서,
    프로세서; 그리고
    상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금 동작들을 수행하게 하는 명령어가 저장된 메모리를 포함하며, 상기 동작들은,
    입력 이미지를 획득하는 동작 -상기 입력 이미지는 사용자 계정과 연관됨-;
    특징-검출 기계 학습 모델을 사용하여, 상기 입력 이미지의 하나 이상의 특징들을 결정하는 동작;
    상기 사용자 계정에 개인화된 사용자-특정 기계 학습 모델을 사용하여, 상기 입력 이미지의 하나 이상의 특징들에 기초하여 상기 입력 이미지에 대한 압축 세팅을 결정하는 동작; 그리고
    상기 압축 세팅에 기초하여 상기 입력 이미지를 압축하는 동작을 포함하는 것을 특징으로 하는 컴퓨팅 장치.
  11. 제10항에 있어서, 상기 특징-검출 기계 학습 모델은,
    디지털 이미지들 및 해당 특징들의 트레이닝 세트를 획득하고, 그리고 상기 트레이닝 세트 및 상기 해당 특징들을 기반으로 상기 특징-검출 기계 학습 모델을 트레이닝함으로써, 생성되며,
    트레이닝 후에, 상기 특징-검출 기계 학습 모델은 상기 특징-검출 기계 학습 모델에 제공된 상기 입력 이미지에서 이미지 특징들을 식별할 수 있는 것을 특징으로 하는 컴퓨팅 장치.
  12. 제11항에 있어서, 상기 사용자-특정 기계 학습 모델은,
    사용자와 연관된 사용자-특정 특징들의 트레이닝 세트를 획득하고 -상기 사용자-특정 특징들은 하나 이상의 이전 이미지들을 참조하여 사용자 액션을 나타냄-, 그리고 상기 사용자-특정 특징들 및 상기 하나 이상의 이전 이미지들을 기반으로 사용자-특정 기계 학습 모델을 트레이닝함으로써, 생성되며,
    트레이닝 후, 상기 사용자-특정 기계 학습 모델은 상기 사용자-특정 기계 학습 모델에 제공된 상기 입력 이미지에 대한 레이팅(rating)을 결정하는 것을 특징으로 하는 컴퓨팅 장치.
  13. 제10항에 있어서, 상기 메모리는, 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금 추가 동작들을 수행하게 하는 명령어를 더 포함하며, 상기 추가 동작들은,
    각각 다른 압축 세팅으로 압축된 샘플 이미지의 둘 이상의 버전들로 상기 사용자 계정과 연관된 사용자에게 제1 사용자 인터페이스를 제공하는 동작;
    상기 샘플 이미지의 특정 버전을 식별하는 사용자 입력을 사용자로부터 획득하는 동작; 그리고
    상기 샘플 이미지의 상기 특정 버전과 연관된 압축 세팅을 상기 사용자 계정에 대한 베이스라인 압축 세팅으로 선택하는 동작을 포함하는 것을 특징으로 하는 컴퓨팅 장치.
  14. 제13항에 있어서, 상기 압축 세팅을 결정하는 동작은,
    상기 사용자-특정 기계 학습 모델에 의해, 상기 입력 이미지에 대한 레이팅을 결정하는 동작; 그리고
    상기 레이팅을 상기 압축 세팅에 매핑하는 동작을 포함하며, 상기 매핑은 상기 베이스라인 압축 세팅에 기초하는 것을 특징으로 하는 컴퓨팅 장치.
  15. 하나 이상의 컴퓨터에 의해 실행될 때 상기 하나 이상의 컴퓨터로 하여금 동작들을 수행하게 하는 명령어가 저장된 비일시적 컴퓨터 판독 가능 매체로서, 상기 동작들은,
    입력 이미지를 획득하는 동작 -상기 입력 이미지는 사용자 계정과 연관됨-;
    특징-검출 기계 학습 모델을 사용하여, 상기 입력 이미지의 하나 이상의 특징들을 결정하는 동작;
    상기 사용자 계정에 개인화된 사용자-특정 기계 학습 모델을 사용하여, 상기 입력 이미지의 하나 이상의 특징들에 기초하여 상기 입력 이미지에 대한 압축 세팅을 결정하는 동작; 그리고
    상기 압축 세팅에 기초하여 상기 입력 이미지를 압축하는 동작을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 매체.
  16. 제15항에 있어서, 상기 특징-검출 기계 학습 모델은,
    디지털 이미지들 및 해당 특징들의 트레이닝 세트를 획득하고, 그리고 상기 트레이닝 세트 및 상기 해당 특징들을 기반으로 상기 특징-검출 기계 학습 모델을 트레이닝함으로써, 생성되며,
    트레이닝 후에, 상기 특징-검출 기계 학습 모델은 상기 특징-검출 기계 학습 모델에 제공된 상기 입력 이미지에서 이미지 특징들을 식별할 수 있는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 매체.
  17. 제16항에 있어서, 상기 사용자-특정 기계 학습 모델은,
    사용자와 연관된 사용자-특정 특징들의 트레이닝 세트를 획득하고 -상기 사용자-특정 특징들은 하나 이상의 이전 이미지들을 참조하여 사용자 액션을 나타냄-, 그리고 상기 사용자-특정 특징들 및 상기 하나 이상의 이전 이미지들을 기반으로 사용자-특정 기계 학습 모델을 트레이닝함으로써, 생성되며,
    트레이닝 후, 상기 사용자-특정 기계 학습 모델은 상기 사용자-특정 기계 학습 모델에 제공된 상기 입력 이미지에 대한 레이팅(rating)을 결정하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 매체.
  18. 제17항에 있어서, 상기 트레이닝 세트는 상기 하나 이상의 이전 이미지들의 각각의 이미지 특징들을 더 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 매체.
  19. 제15항에 있어서, 상기 동작들은,
    각각 다른 압축 세팅으로 압축된 샘플 이미지의 둘 이상의 버전들로 상기 사용자 계정과 연관된 사용자에게 제1 사용자 인터페이스를 제공하는 동작;
    상기 샘플 이미지의 특정 버전을 식별하는 사용자 입력을 사용자로부터 획득하는 동작; 그리고
    상기 샘플 이미지의 상기 특정 버전과 연관된 압축 세팅을 상기 사용자 계정에 대한 베이스라인 압축 세팅으로 선택하는 동작을 더 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 매체.
  20. 제15항에 있어서, 상기 압축 세팅을 결정하는 동작은,
    상기 사용자-특정 기계 학습 모델에 의해, 상기 입력 이미지에 대한 레이팅을 결정하는 동작; 그리고
    상기 레이팅을 상기 압축 세팅에 매핑하는 동작을 포함하며, 상기 매핑은 상기 베이스라인 압축 세팅에 기초하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 매체.
KR1020237001053A 2020-06-13 2020-06-13 사용자 선호도를 반영한 기계 학습 기반 이미지 압축 세팅 KR20230021144A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2020/037646 WO2021251988A1 (en) 2020-06-13 2020-06-13 Machine learning-based image compression setting reflecting user preferences

Publications (1)

Publication Number Publication Date
KR20230021144A true KR20230021144A (ko) 2023-02-13

Family

ID=71452760

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237001053A KR20230021144A (ko) 2020-06-13 2020-06-13 사용자 선호도를 반영한 기계 학습 기반 이미지 압축 세팅

Country Status (6)

Country Link
US (1) US20220053195A1 (ko)
EP (1) EP3942467A1 (ko)
JP (1) JP2023529380A (ko)
KR (1) KR20230021144A (ko)
CN (1) CN114080615A (ko)
WO (1) WO2021251988A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11449771B2 (en) * 2018-09-21 2022-09-20 Woven Planet North America, Inc. Systems and methods for processing vehicle data
US11625806B2 (en) * 2019-01-23 2023-04-11 Qualcomm Incorporated Methods and apparatus for standardized APIs for split rendering
JP6800453B1 (ja) * 2020-05-07 2020-12-16 株式会社 情報システムエンジニアリング 情報処理装置及び情報処理方法
US11729387B1 (en) * 2020-12-03 2023-08-15 Amazon Technologies, Inc. Automatic configuration of settings for a video encoder
EP4017003A1 (en) * 2020-12-17 2022-06-22 Palantir Technologies Inc. Approaches for lossy compression using machine learning
JP7504315B1 (ja) 2023-05-30 2024-06-21 三菱電機株式会社 状態推定装置、プログラム、状態推定システム及び状態推定方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008099012A (ja) * 2006-10-12 2008-04-24 Mitsubishi Electric Corp コンテンツ再生システム及びコンテンツ蓄積システム
US9361666B2 (en) * 2013-10-07 2016-06-07 Adobe Systems Incorporated Learning user preferences for photo adjustments
US9536045B1 (en) * 2015-03-16 2017-01-03 D.R. Systems, Inc. Dynamic digital image compression based on digital image characteristics
CN105513100B (zh) * 2015-12-03 2018-07-17 广州一刻影像科技有限公司 一种自动选择图片压缩质量并压缩图片的方法
KR101704775B1 (ko) * 2016-02-03 2017-02-08 (주)비상정보통신 다중해상도 영상 처리 장치 및 영상 처리 방법
US11496769B2 (en) * 2019-09-27 2022-11-08 Apple Inc. Neural network based image set compression

Also Published As

Publication number Publication date
CN114080615A (zh) 2022-02-22
US20220053195A1 (en) 2022-02-17
JP2023529380A (ja) 2023-07-10
WO2021251988A1 (en) 2021-12-16
EP3942467A1 (en) 2022-01-26

Similar Documents

Publication Publication Date Title
US11778028B2 (en) Automatic image sharing with designated users over a communication network
CN112740709B (zh) 一种执行用于视频分析的门控的计算机实现的方法、计算设备及计算机可读介质
US11829404B2 (en) Functional image archiving
US11231838B2 (en) Image display with selective depiction of motion
KR20230021144A (ko) 사용자 선호도를 반영한 기계 학습 기반 이미지 압축 세팅
US20200150832A1 (en) Image selection suggestions
CN110678861B (zh) 图像选择建议
KR102647336B1 (ko) 동적 깊이 이미지를 캡처 및 편집하는 기술
US20240126810A1 (en) Using interpolation to generate a video from static images
US12056929B2 (en) Automatic generation of events using a machine-learning model
CN114127779A (zh) 人物组和基于图像的创作的自动生成
WO2022240443A1 (en) Automatic generation of events using a machine-learning model