KR102437640B1 - 이미지 선택 제안들 - Google Patents

이미지 선택 제안들 Download PDF

Info

Publication number
KR102437640B1
KR102437640B1 KR1020207015395A KR20207015395A KR102437640B1 KR 102437640 B1 KR102437640 B1 KR 102437640B1 KR 1020207015395 A KR1020207015395 A KR 1020207015395A KR 20207015395 A KR20207015395 A KR 20207015395A KR 102437640 B1 KR102437640 B1 KR 102437640B1
Authority
KR
South Korea
Prior art keywords
images
image
user
user interface
implementations
Prior art date
Application number
KR1020207015395A
Other languages
English (en)
Other versions
KR20200080287A (ko
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 KR20200080287A publication Critical patent/KR20200080287A/ko
Application granted granted Critical
Publication of KR102437640B1 publication Critical patent/KR102437640B1/ko

Links

Images

Classifications

    • 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/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • 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/54Browsing; Visualisation therefor
    • 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/53Querying
    • G06F16/532Query formulation, e.g. graphical querying
    • 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/56Information retrieval; Database structures therefor; File system structures therefor of still image data having vectorial format
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Library & Information Science (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Transforming Light Signals Into Electric Signals (AREA)

Abstract

구현들은 이미지 선택 제안들을 제공하는 것에 관련된다. 일부 구현들에서, 방법은 이미지 라이브러리 내의 하나 이상의 제1 이미지들의 선택을 나타내는 제1 사용자 입력을 수신하는 단계, 및 하나 이상의 제1 이미지들의 하나 이상의 제1 이미지 특징들을 결정하는 단계를 포함한다. 방법은 이미지 라이브러리에서 하나 이상의 제2 이미지들을 식별하는 단계를 더 포함한다. 하나 이상의 제2 이미지들의 각각의 이미지는, 하나 이상의 제1 이미지 특징들 중 적어도 하나와 매칭하는 적어도 하나의 제2 이미지 특징과 연관된다. 방법은 사용자 인터페이스가 디스플레이되게 하는 단계를 더 포함한다. 사용자 인터페이스는 하나 이상의 제2 이미지들을 포함하고, 사용자에 의한 하나 이상의 제2 이미지들의 선택을 가능하게 한다.

Description

이미지 선택 제안들
[001] 본 출원은 명칭이 "Image Selection Suggestions"인 2017년 12월 22일에 출원된 미국 가특허 출원 제62/609,543호를 우선권으로 주장하며, 상기 출원은 그 전체가 인용에 의해 본원에 포함된다.
[002] 디지털 카메라 디바이스들의 인기 및 편리성으로 인해 디지털 사진들 및 비디오들과 같은 시각적 콘텐츠가 유비쿼터스화되었다. 예컨대, 다양한 타입들의 매우 많은 수의 이미지들이 사용자 디바이스들에 의해 캡처, 저장 및 디스플레이될 수 있다. 일부 디바이스들은 사용자의 이미지들 또는 다른 콘텐츠가 콘텐츠 아이템들을 콜렉션으로 포함하는 레이아웃으로 디스플레이될 수 있게 한다. 전형적으로, 콘텐츠 아이템들의 뷰가 스크린 상에 디스플레이되고, 사용자는 콘텐츠 아이템들의 콜렉션의 상이한 부분들이 뷰에 디스플레이되도록 콘텐츠 아이템들이 스크롤되게 할 수 있다. 사용자는 또한 다른 사용자들과의 공유, 픽처 모음(picture collage), 사진 책의 생성 등과 같은 다양한 목적들을 위해 하나 이상의 콘텐츠 아이템들을 선택할 수 있다.
[003] 본원에서 제공되는 배경 설명은 본 개시내용의 맥락을 일반적으로 제시하려는 목적을 위한 것이다. 본 출원에 이름을 둔 발명자들의 연구(work)는, 그 연구가 출원 당시 선행 기술로서 달리 간주하지 않을 수 있는 상세한 설명의 양상들뿐만 아니라 본 배경기술에 설명된 정도까지 본 개시내용에 대한 선행 기술로서 명시적으로든 묵시적으로든 인정되지 않는다.
[004] 본 출원의 구현들은 이미지 선택 제안들에 관련된다. 일부 구현들에서, 컴퓨터-구현 방법은 이미지 라이브러리 내의 하나 이상의 제1 이미지들의 선택을 나타내는 제1 사용자 입력을 수신하는 단계; 하나 이상의 제1 이미지들의 하나 이상의 제1 이미지 특징들을 결정하는 단계; 이미지 라이브러리에서 하나 이상의 제2 이미지들을 식별하는 단계 ― 하나 이상의 제2 이미지들 각각은, 하나 이상의 제1 이미지 특징들 중 적어도 하나와 매칭하는 적어도 하나의 제2 이미지 특징과 연관됨 ― ; 및 사용자 인터페이스가 디스플레이되게 하는 단계를 포함하고, 사용자 인터페이스는 하나 이상의 제2 이미지들을 포함하고, 사용자 인터페이스는 하나 이상의 제2 이미지들의 선택을 가능하게 한다.
[005] 이들 및 다른 구현들 각각은 다음의 특징들: 하나 이상의 제2 이미지들 중 적어도 하나의 선택을 나타내는 제2 사용자 입력을 수신하는 단계; 제2 사용자 입력을 수신하는 것에 대한 응답으로, 하나 이상의 제2 이미지들 중 적어도 하나의 하나 이상의 제2 이미지 특징들을 결정하는 단계; 이미지 라이브러리에서 하나 이상의 제3 이미지들을 식별하는 단계 ― 하나 이상의 제3 이미지들 각각은, 하나 이상의 제1 이미지 특징들 중 적어도 하나 및 하나 이상의 제2 이미지 특징들 중 적어도 하나와 매칭하는 적어도 하나의 제3 이미지 특징과 연관됨 ― ; 및 업데이트된 사용자 인터페이스가 디스플레이되게 하는 단계 중 하나 이상을 선택적으로 포함할 수 있고, 업데이트된 사용자 인터페이스는 하나 이상의 제3 이미지들을 포함하고, 업데이트된 사용자 인터페이스는 하나 이상의 제3 이미지들의 선택을 가능하게 한다.
[006] 이들 및 다른 구현들 각각은 다음의 특징들: 이미지 앨범을 생성하는 단계 ― 이미지 앨범은 하나 이상의 제1 이미지들 및 하나 이상의 제2 이미지들 중 적어도 하나를 포함함 ― ; 하나 이상의 제2 이미지들 중 적어도 하나의 선택을 나타내는 제2 사용자 입력을 수신하는 단계; 및 이미지 모음(image collage)을 생성하는 단계 ― 이미지 모음은 하나 이상의 제1 이미지들 및 하나 이상의 제2 이미지들 중 적어도 하나 이상을 포함함 ― 중 하나 이상을 선택적으로 포함할 수 있으며, 하나 이상의 제1 이미지 특징들을 결정하는 단계는 이미지가 흐릿하다고 결정하는 단계를 포함하고, 하나 이상의 제2 이미지들을 식별하는 단계는, 하나 이상의 제2 이미지들의 흐릿함(blurriness)에 기반하여 하나 이상의 제2 이미지들 각각을 식별하는 단계를 포함한다.
[007] 이들 및 다른 구현들 각각은 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있으며, 하나 이상의 제1 이미지 특징들을 결정하는 단계는, 제1 이미지와 연관된 위치를 결정하는 단계를 포함하고, 하나 이상의 제2 이미지들을 식별하는 단계는, 제1 이미지와 연관된 위치의 임계 거리 내에 있는 개개의 위치와 연관된 이미지들을 이미지 라이브러리로부터 선택하는 단계를 포함하며; 방법은 이미지 선택의 콘텍스트를 결정하는 단계를 더 포함하고, 하나 이상의 제2 이미지들을 식별하는 단계는 이미지 선택의 콘텍스트에 기반한다. 이미지 선택의 콘텍스트는 이미지-기반 창작물의 생성, 및/또는 이미지들을 타겟 소프트웨어 애플리케이션에 제공하는 것일 수 있다. 이미지-기반 창작물은 이미지 앨범, 이미지 모음, 비디오, 또는 출판물(printed publication), 또는 이들 중 임의의 것의 조합 중 적어도 하나를 포함할 수 있다.
[008] 이들 및 다른 구현들 각각은 다음의 특징들: 제1 이미지의 복제물들인 하나 이상의 제2 이미지들 중 적어도 하나의 선택을 나타내는 제2 사용자 입력을 수신하는 단계, 및 하나 이상의 제1 이미지들 및 하나 이상의 제2 이미지들 중 적어도 하나에 기반하여, 제안된 액션 엘리먼트가 사용자 인터페이스에 디스플레이되게 하는 단계 중 하나 이상을 선택적으로 포함할 수 있다. 방법은 제안된 액션 엘리먼트의 사용자 선택을 수신하는 단계; 및 사용자 선택을 수신하는 것에 대한 응답으로, 제안된 액션 엘리먼트와 연관된 액션을 수행하는 단계를 더 포함할 수 있고, 액션은 하나 이상의 제1 이미지들 및 하나 이상의 제2 이미지들 중 적어도 하나를 아카이빙(archive)하는 것, 하나 이상의 제1 이미지들 및 하나 이상의 제2 이미지들 중 적어도 하나를 삭제하는 것, 및/또는 하나 이상의 제1 이미지들 및 하나 이상의 제2 이미지들 중 적어도 하나의 자동 화질 향상(automatic enhancement)을 수행하는 것 중 하나 이상을 포함한다.
[009] 일부 구현들에서, 컴퓨터-구현 방법은 타겟 소프트웨어 애플리케이션을 나타내는 콘텍스트 정보를 결정하는 단계; 콘텍스트 정보에 적어도 부분적으로 기반하여, 이미지 라이브러리에서 하나 이상의 제1 이미지들을 식별하는 단계; 사용자 인터페이스가 디스플레이되게 하는 단계 ― 사용자 인터페이스는 하나 이상의 제1 이미지들을 포함하고, 사용자 인터페이스는 하나 이상의 제1 이미지들의 선택을 가능하게 함 ― ; 하나 이상의 제1 이미지들 중 적어도 하나의 이미지의 선택을 나타내는 제1 사용자 입력을 수신하는 단계; 및 제1 사용자 입력을 수신하는 것에 대한 응답으로, 선택된 적어도 하나의 이미지를 타겟 소프트웨어 애플리케이션에 제공하는 단계를 포함한다.
[0010] 이들 및 다른 구현들 각각은 다음의 특징들: 선택된 적어도 하나의 이미지의 하나 이상의 제1 이미지 특징들을 결정하는 단계; 이미지 라이브러리에서 하나 이상의 제2 이미지들을 식별하는 단계 ― 하나 이상의 제2 이미지들 각각은 하나 이상의 제1 이미지 특징들 중 적어도 하나를 가짐 ― ; 및 업데이트된 사용자 인터페이스가 디스플레이되게 하는 단계 중 하나 이상을 선택적으로 포함할 수 있고, 업데이트된 사용자 인터페이스는 하나 이상의 제2 이미지들을 포함하고, 사용자 인터페이스는 하나 이상의 제2 이미지들의 선택을 가능하게 한다.
[0011] 이들 및 다른 구현들 각각은 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있으며, 콘텍스트 정보를 결정하는 단계는 타겟 소프트웨어 애플리케이션의 애플리케이션 타입을 결정하는 단계를 포함한다. 애플리케이션 타입은 이미지 공유 애플리케이션을 포함할 수 있다. 하나 이상의 제1 이미지들을 식별하는 단계는, 품질 임계치를 충족시키는 하나 이상의 제1 이미지들을 이미지 라이브러리로부터 선택하는 단계를 포함할 수 있다. 애플리케이션 타입은 금융 애플리케이션을 포함할 수 있고, 하나 이상의 제1 이미지들을 식별하는 단계는, 영수증, 문서 또는 스크린샷 중 하나 이상을 포함하는 이미지 라벨과 연관된 하나 이상의 제1 이미지들을 이미지 라이브러리로부터 선택하는 단계를 포함할 수 있다. 애플리케이션 타입은 메시징 애플리케이션을 포함할 수 있고, 콘텍스트 정보를 결정하는 단계는, 메시징 애플리케이션의 메시징 대화의 참여자들의 식별 정보를 수신하는 단계를 더 포함할 수 있고, 하나 이상의 제1 이미지들을 식별하는 단계는, 메시징 대화의 참여자들 중 적어도 한 명을 묘사하는 이미지들을 이미지 라이브러리로부터 선택하는 단계를 포함할 수 있다.
[0012] 이들 및 다른 구현들 각각은 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있으며, 콘텍스트 정보를 결정하는 단계는 타겟 소프트웨어 애플리케이션으로부터 애플리케이션 콘텍스트를 수신하는 단계를 포함하고, 하나 이상의 제1 이미지들을 식별하는 단계는: 애플리케이션 콘텍스트에 기반하여 하나 이상의 시맨틱 개념들(semantic concepts)을 결정하는 단계; 및 하나 이상의 제1 이미지들을 선택하는 단계를 포함하고, 선택된 이미지들 각각의 적어도 하나의 이미지 특징은 시맨틱 개념들 중 적어도 하나와 매칭한다.
[0013] 일부 구현들에서, 비-일시적인 컴퓨터-판독 가능 매체는 명령들을 저장하고, 명령들은, 하나 이상의 하드웨어 프로세서들에 의해 실행될 때, 하나 이상의 하드웨어 프로세서들로 하여금, 동작들을 수행하게 하고, 동작들은 이미지 라이브러리 내의 하나 이상의 제1 이미지들의 선택을 나타내는 제1 사용자 입력을 수신하는 동작; 하나 이상의 제1 이미지들의 하나 이상의 제1 이미지 특징들을 결정하는 동작; 이미지 라이브러리에서 하나 이상의 제2 이미지들을 식별하는 동작 ― 하나 이상의 제2 이미지들 각각은, 하나 이상의 제1 이미지 특징들 중 적어도 하나와 매칭하는 적어도 하나의 제2 이미지 특징과 연관됨 ― ; 및 사용자 인터페이스가 디스플레이되게 하는 동작 ― 사용자 인터페이스는 하나 이상의 제2 이미지들을 포함하고, 사용자 인터페이스는 하나 이상의 제2 이미지들의 선택을 가능하게 함 ― ; 하나 이상의 제2 이미지들 중 적어도 하나의 선택을 나타내는 제2 사용자 입력을 수신하는 동작; 하나 이상의 제1 이미지들 및 하나 이상의 제2 이미지들 중 적어도 하나에 기반하여, 제안된 액션 엘리먼트가 사용자 인터페이스에 디스플레이되게 하는 동작; 및 제안된 액션 엘리먼트의 사용자 선택을 수신하는 것에 대한 응답으로, 제안된 액션 엘리먼트와 연관된 액션을 수행하는 동작을 포함한다. 일부 구현들에서, 액션은 하나 이상의 제1 이미지들 및 하나 이상의 제2 이미지들 중 적어도 하나를 아카이빙하는 것, 하나 이상의 제1 이미지들 및 하나 이상의 제2 이미지들 중 적어도 하나를 삭제하는 것, 하나 이상의 제1 이미지들 및 하나 이상의 제2 이미지들 중 적어도 하나를 포함하는 이미지-기반 창작물을 생성하는 것, 또는 하나 이상의 제1 이미지들 및 하나 이상의 제2 이미지들 중 적어도 하나의 자동 화질 향상을 수행하는 것 중 하나 이상을 포함한다.
[0014] 도 1은 본원에 설명된 하나 이상의 구현들에 대해 사용될 수 있는 예시적인 네트워크 환경의 블록도이다.
[0015] 도 2는 일부 구현들에 따른, 이미지 선택 제안들을 제공하기 위한 예시적인 방법을 예시하는 흐름도이다.
[0016] 도 3은 일부 구현들에 따른, 이미지 선택 제안들을 제공하기 위한 예시적인 방법을 예시하는 흐름도이다.
[0017] 도 4는 일부 구현들에 따른, 이미지 선택 제안들을 포함하는 예시적인 사용자 인터페이스(500)의 개략도이다.
[0018] 도 5a는 일부 구현들에 따른, 이미지 선택 제안들을 포함하는 예시적인 사용자 인터페이스(400)의 개략도이다.
[0019] 도 5b는 일부 구현들에 따른, 이미지 선택 제안들을 포함하는 다른 예시적인 사용자 인터페이스(530)의 개략도이다.
[0020] 도 5c는 일부 구현들에 따른, 이미지 생성 및 이미지 선택 제안들을 포함하는 다른 예시적인 사용자 인터페이스(540)의 개략도이다.
[0021] 도 6은 본원에 설명된 하나 이상의 구현들에 대해 사용될 수 있는 예시적인 디바이스의 블록도이다.
[0022] 하나 이상의 구현들은 사용자들이 이미지들을 선택하는 것을 돕는다. 본원에 설명된 하나 이상의 구현들은 사용자가 선택하기 위한 제안된 이미지들을 제공하는 것을 포함한다. 구현들은, 키워드들 또는 어구들을 사용하여 이미지들을 검색하는 것, 스크롤링에 의해 이미지 라이브러리를 브라우징하는 것 등과 같이 감소된 입력으로 사용자들이 이미지들을 선택하는 것을 가능하게 하는 사용자 인터페이스를 제공함으로써 이익들을 제공한다. 구현들은, 사용자들이 그러한 활동 없이 이미지들을 선택하는 것을 가능하게 하는 사용자 인터페이스를 제공함으로써 사용자 검색 또는 브라우징을 지원하는 데 사용되는 컴퓨팅 자원들을 감소시킬 수 있다.
[0023] 사용자들은 다양한 목적들로, 예컨대, 다른 사용자들과 이미지들을 공유하기 위해, 이미지-기반 창작물들, 이를테면, 이미지 앨범들, 이미지 모음들, 인쇄된 사진 책들, 또는 이미지들을 포함하는 비디오들을 생성하기 위해, 예컨대, 이미지 라이브러리로부터 이미지들을 선택한다. 사용자들은 다수의 이미지들, 예컨대, 수백, 수천 또는 심지어 수백만개의 이미지들을 포함하는 이미지 라이브러리들을 가질 수 있다. 사용자들이 이미지들을 찾고 선택하는 것이 어려울 수 있다. 예컨대, 이미지 라이브러리의 이미지들이 연대순 방식으로 구성되고 디스플레이될 때, 사용자들은 특정 목적을 위해 이미지들을 보고 선택하기 위해 다수의 스크롤 동작들을 수행해야 할 수 있다. 관심있는 이미지들을 찾기 위해 앞뒤로 스크롤하는 것은 번거롭고, 사용자들은 이러한 스크롤링에 대해 불만스러울 수 있다. 또한, 이미지들을 스크롤하는 이러한 사용자 활동은, 컴퓨팅 디바이스가 메모리 또는 저장소로부터 부가적인 이미지들을 리트리브하고 상이한 이미지들을 보여주기 위해 사용자 인터페이스를 리프레시(refresh)하도록 요구하여, 컴퓨팅 디바이스의 컴퓨팅 자원들의 사용을 요구한다.
[0024] 이미지 라이브러리 애플리케이션들은 이미지 검색 특징들을 포함할 수 있다. 예컨대, 사용자는 텍스트 질의를 지정할 수 있고, 이미지 라이브러리 애플리케이션은 검색과 관련된 이미지들을 라이브러리로부터 리턴할 수 있고, 사용자는 리턴된 이미지들로부터 이미지들을 선택할 수 있다. 그러나, 이것은 사용자에게 질의를 정의하도록 요구한다. 또한, 사용자는 선택하기 위해 전체 이미지들의 세트를 획득하기 위해 다수의 상이한 질의들을 지정해야 할 수 있다. 질의들을 통해 이미지들을 검색하고 선택하는 것은 번거롭다. 또한, 사용자 검색 활동은 컴퓨팅 디바이스가, 예컨대, 컴퓨팅 디바이스에 로컬로 저장되거나 네트워크를 통해 원격 서버에 저장되는 이미지 라이브러리에 액세스하고, 사용자-지정 검색 질의와 매칭하는 이미지들을 식별하도록 요구하여, 컴퓨팅 디바이스의 컴퓨팅 자원들의 사용을 요구한다.
[0025] 본 문헌에 설명된 구현들은, 다수의 이미지들을 포함하는 이미지 라이브러리로부터 이미지들을 찾고 선택하는 데 있어서의 문제들 중 일부를 해결한다. 일부 구현들에서, 이미지 라이브러리에서 하나 이상의 제1 이미지들의 선택을 나타내는 제1 사용자 입력이 수신된다. 하나 이상의 제1 이미지들의 하나 이상의 제1 이미지 특징들이 결정된다. 하나 이상의 제1 이미지 특징들 중 적어도 하나와 매칭하는 적어도 하나의 제2 이미지 특징들과 각각 연관되는 하나 이상의 제2 이미지들이 이미지 라이브러리에서 자동으로 식별된다. 하나 이상의 제2 이미지들을 포함하고, 하나 이상의 제2 이미지들의 선택을 가능하게 하는 사용자 인터페이스가 디스플레이된다.
[0026] 사용자 선택들과 매칭하는 이미지들을 자동으로 식별하고 제공함으로써, 본원에 설명된 구현들은, 사용자가 이미지 라이브러리 통해 스크롤할 때 이미지들을 디스플레이하거나 사용자 입력에 의해 지정된 텍스트 검색 질의들을 만족시키는 결과적인 이미지들을 디스플레이할 필요성을 제거한다. 사용자 입력이 이미지들을 선택할 때, 매칭하는 특징들을 가진, 사용자 이미지 라이브러리로부터의 부가적인 이미지들이 자동으로 식별되고 사용자가 선택하도록 제공된다. 이러한 방식으로, 본원에 설명된 기법들은, 이미지들의 저장, 디스플레이 및 선택으로부터 효율적인 리트리벌(retrieval)을 가능하게 하여 이미지들을 쉽게 찾고 선택하는 것을 가능하게 하는 사용자 인터페이스를 제공한다. 스크롤된 이미지의 너무 긴 디스플레이들을 감소시키거나 피하고, 텍스트 검색 질의들로부터의 검색 결과들의 다수의 리트리벌들 및 디스플레이들을 감소시키거나 피함으로써 디바이스 자원들의 감소된 소비가 가능하게 된다.
[0027] 설명된 제안된 이미지 선택들은 사용자 인터페이스에서 이미지들의 더 빠르고 더 효율적인 디스플레이, 및 이미지들을 위치확인하고 선택하기 위해 사용자와 사용자 인터페이스의 더 효율적인 상호작용을 가능하게 할 수 있다. 예컨대, 제안된 이미지 선택들의 디스플레이는 사용자가 이미지를 쉽게 선택하는 것을 가능하게 하고, 선택할 이미지를 결정하기 위해 검색 질의들을 지정하기 위해 텍스트 또는 다른 복잡한 입력을 수동으로 제공할 필요성을 감소시키거나 제거한다. 또한, 제안된 이미지 선택들은 이미지들의 디스플레이를 위한 시간 및 프로세싱을 감소시키고, 이미지를 찾기 위해 수신된 수동으로 지정된 검색들의 수를 감소시킨다. 제안된 이미지 선택들은 또한, 클라이언트 디바이스에 검색들을 위한 쉽거나 간단하거나 임의의 텍스트 입력 기능이 없는 경우에(예컨대, 스마트 워치, 또는 키보드 또는 마이크로폰을 포함하지 않는 다른 웨어러블 디바이스), 유용하다. 이러한 특징들은 감소된 사용자 입력 및 감소된 시간으로 콘텐츠 디스플레이 프로그램과의 상호작용을 허용하고, 따라서 그렇지 않은 경우 사용자 입력을 수신 및 프로세싱하고 결과들을 이러한 프로그램들에서 디스플레이하기 위해 필요할 디바이스 자원들의 소비를 감소시킨다.
[0028] 결과적으로, 하나 이상의 설명된 구현들의 기술적 효과는, 사용자 인터페이스들에서 콘텐츠 데이터 아이템들의 디스플레이가 결과들을 획득하기 위해 소비되는 더 적은 계산 시간 및 더 적은 계산 자원들로 제공된다는 것이다. 예컨대, 설명된 기법들 및 특징들의 기술적 효과는, 설명된 기법들 또는 특징들 중 하나 이상을 제공하지 않는 종래의 시스템과 비교하여, 특정 이미지들을 디스플레이하고 선택하는 데 활용되는 시스템 프로세싱 자원들의 소비 감소이다. 예컨대, 종래의 시스템은 텍스트로서 검색 질의들을 수신하는 종래의 기법들을 사용할 수 있으며, 여기서 선택할 이미지들을 제공하기 위해 어떤 검색 질의들이 관련되는지를 사용자가 결정할 때, 검색 결과들의 반복들을 디스플레이하기 위해 프로세서, 메모리 및 디스플레이 자원들과 같은 부가적인 계산 자원들(대응하는 전력 소비를 가짐)이 필요로 된다.
[0029] 설명된 기법들 및 특징들의 추가적인 기술적 효과는, 설명된 기법들 또는 특징들 중 하나 이상을 제공하지 않는 시스템에 의해 활용되는 디스플레이 및 검색 프로세싱 및 전력 소비와 같은 시스템 프로세싱 자원들의 소비 감소이다. 예컨대, 이러한 종래의 시스템에서, 사용자는 콘텐츠 엘리먼트들의 뷰를 수동으로 스크롤하고, 사용자는 이러한 수동 스크롤링을 통해 원하는 콘텐츠 아이템들을 수동으로 위치확인해야 하고, 이는 (예컨대, 콘텐츠 데이터 아이템들의 반복되는 디스플레이 및 정방향 및 역방향으로의 콘텐츠 데이터 아이템들의 스크롤링, 콘텐츠 아이템들을 디스플레이 및/또는 검색하기 위한 사용자들로부터의 커맨드들의 반복되는 수신 등에 대해) 시스템 자원들의 비효율적인 사용으로 이어진다.
[0030] 본원에서 개시된 특정한 구현들이 사용자들에 관한 개인 정보(예컨대, 사용자 데이터, 사용자의 소셜 네트워크에 관한 정보, 사용자의 위치 및 그 위치에서의 시간, 사용자의 생체인식 정보, 사용자의 활동들 및 인적(demographic) 정보)를 수집 또는 사용할 수 있는 상황들에서, 사용자들에게는, 정보가 수집되는지 여부, 개인 정보가 저장되는지 여부, 개인 정보가 사용되는지 여부, 및 사용자에 관한 정보가 어떻게 수집, 저장 및 사용되는지를 제어하기 위한 하나 이상의 기회들이 제공된다. 즉, 본원에서 논의된 시스템들 및 방법들은 관련이 있는 사용자들로부터 그렇게 하도록 명시적 인가를 수신할 때 특별히 사용자 개인 정보를 수집, 저장 및/또는 사용한다. 예컨대, 프로그램들 또는 특징들이 프로그램 또는 특징에 관련이 있는 다른 사용자들 또는 특정 사용자에 관한 사용자 정보를 수집할지 여부에 대한 제어가 사용자에게 제공된다. 개인 정보가 수집되어야 하는 각각의 사용자에게는, 정보가 수집되는지 여부에 관한 그리고 정보의 어느 부분들이 수집되어야 하는지에 관한 허가 또는 인가를 제공하도록, 그 사용자에 관련이 있는 정보 수집에 대한 제어를 가능하게 하는 하나 이상의 옵션들이 제시된다. 예컨대, 통신 네트워크를 통해 하나 이상의 그러한 제어 옵션들이 사용자들에게 제공될 수 있다. 게다가, 소정의 데이터는 그 소정의 데이터가 저장되거나 사용되기 전에, 개인 식별가능 정보가 제거되도록 하나 이상의 방식들로 처리될 수 있다. 일 예로서, 어떤 개인 식별가능 정보도 결정될 수 없도록, 사용자의 아이덴티티가 처리될 수 있다. 다른 예로서, 사용자 디바이스의 특정 위치가 결정될 수 없도록 사용자의 지리적 위치는 더 큰 구역으로 일반화될 수 있다.
[0031] 본원에서 언급되는 "이미지"는 하나 이상의 픽셀 값들(예컨대, 컬러 값들, 휘도 값들 등)을 갖는 픽셀들을 갖는 디지털 이미지이다. 이미지는 스틸 이미지 또는 단일 이미지일 수 있거나, 또는 일련의 이미지들, 예컨대 비디오 프레임들의 비디오 시퀀스 내의 프레임에 포함된 이미지, 또는 상이한 타입의 시퀀스 또는 애니메이션의 이미지들 내의 이미지일 수 있다. 비디오는 일련의 다수의 이미지들을 포함한다. 예컨대, 본원에 설명된 구현들은 단일 이미지들 또는 정적 이미지들(예컨대, 사진, 이모티콘 또는 다른 이미지), 비디오들 또는 애니메이션 이미지들(예컨대, 시네마그래프들 또는 모션을 포함하는 다른 애니메이션 이미지, 애니메이션 및 오디오를 포함하는 스티커 등)인 콘텐츠 데이터 아이템들에서 사용될 수 있다. 본원에서 언급되는 텍스트는 영숫자 문자들, 이모티콘들, 심볼들 또는 다른 문자들을 포함할 수 있다. 오디오 세그먼트는, 예컨대, 스피커들로부터 사운드를 제공하도록 프로세싱될 수 있는 표준 오디오 포맷으로 제공되는 오디오 데이터를 포함할 수 있다.
[0032] 도 1은 본원에 설명된 일부 구현들에서 사용될 수 있는 예시적인 네트워크 환경(100)의 블록도를 예시한다. 일부 구현들에서, 네트워크 환경(100)은 하나 이상의 서버 시스템들, 예컨대 도 1의 예에서는 서버 시스템(102) 및 제2 서버 시스템(140)을 포함한다. 서버 시스템들(102 및 140)은 예컨대, 네트워크(130)와 통신할 수 있다. 서버 시스템(102)은 서버 디바이스(104) 및 데이터베이스(106) 또는 다른 저장 디바이스를 포함할 수 있다. 일부 구현들에서, 서버 디바이스(104)는 이미지 라이브러리 애플리케이션(156b)을 제공할 수 있다. 제2 서버 시스템(140)은 하나 이상의 애플리케이션들, 예컨대 메시징 애플리케이션 A(144), 이미지 공유 애플리케이션 B(146), 및 금융 애플리케이션 C(148)를 제공하도록 구성된 제2 서버 디바이스(142)를 포함할 수 있다.
[0033] 네트워크 환경(100)은 또한, 하나 이상의 클라이언트 디바이스들, 예컨대 클라이언트 디바이스들(120, 122, 124, 및 126)을 포함할 수 있으며, 그 디바이스들은 네트워크(130)를 통해 서로 그리고/또는 서버 시스템(102)과 그리고/또는 제2 서버 시스템(140)과 통신할 수 있다. 네트워크(130)는 인터넷, 로컬 영역 네트워크들(LAN), 무선 네트워크들, 스위치 또는 허브 연결들 등 중 하나 이상을 포함하는 임의의 타입의 통신 네트워크일 수 있다. 일부 구현들에서, 네트워크(130)는, 예컨대 피어-투-피어 무선 프로토콜들(예컨대, Bluetooth®, Wi-Fi 다이렉트 등) 등을 사용하는 디바이스들 사이에서의 피어-투-피어 통신을 포함할 수 있다. 2개의 클라이언트 디바이스들(120 및 122) 사이에서의 피어-투-피어 통신들의 일 예가 화살표(132)에 의해 도시된다.
[0034] 예시의 용이함을 위해, 도 1은 서버 시스템(102), 서버 디바이스(104), 데이터베이스(106), 제2 서버 시스템(140), 및 제2 서버 디바이스(142)에 대한 하나의 블록을 도시하고, 클라이언트 디바이스들(120, 122, 124, 및 126)에 대한 4개의 블록들을 도시한다. 서버 블록들(102, 104, 106, 140, 및 142)은 다수의 시스템들, 서버 디바이스들, 및 네트워크 데이터베이스들을 표현할 수 있으며, 블록들은 도시된 것과 상이한 구성들로 제공될 수 있다. 예컨대, 서버 시스템(102) 및/또는 제2 서버 시스템(140)은 네트워크(130)를 통해 다른 서버 시스템들과 통신할 수 있는 다수의 서버 시스템들을 표현할 수 있다.
[0035] 일부 구현들에서, 서버 시스템(102) 및/또는 제2 서버 시스템(140)은 예컨대, 클라우드 호스팅 서버들을 포함할 수 있다. 일부 예들에서, 데이터베이스(106) 및/또는 다른 저장 디바이스들은, 서버 디바이스(104)와 별개인 서버 시스템 블록(들)에서 제공될 수 있으며, 네트워크(130)를 통해 서버 디바이스(104) 및 다른 서버 시스템들과 통신할 수 있다. 또한, 임의의 수의 클라이언트 디바이스들이 존재할 수 있다. 각각의 클라이언트 디바이스는 임의의 타입의 전자 디바이스, 예컨대, 데스크톱 컴퓨터, 랩톱 컴퓨터, 휴대용 또는 모바일 디바이스, 셀 폰, 스마트 폰, 태블릿 컴퓨터, 텔레비전, TV 셋탑 박스 또는 엔터테인먼트 디바이스, 웨어러블 디바이스들(예컨대, 디스플레이 안경 또는 고글들, 손목시계, 헤드셋, 암밴드, 장신구(jewelry) 등), PDA(personal digital assistant), 미디어 플레이어, 게임 디바이스 등일 수 있다. 일부 클라이언트 디바이스들은 또한 데이터베이스(106) 또는 다른 저장소와 유사한 로컬 데이터베이스를 가질 수 있다. 일부 구현들에서, 네트워크 환경(100)은 도시된 컴포넌트들 전부를 갖지는 않을 수 있고 그리고/또는 본원에 설명된 것들 대신 또는 그에 부가하여 다른 타입들의 엘리먼트들을 포함하는 다른 엘리먼트들을 가질 수 있다.
[0036] 다양한 구현들에서, 최종-사용자들(U1, U2, U3, 및 U4)은 개개의 클라이언트 디바이스들(120, 122, 124, 및 126)을 사용하여 서버 시스템(102)과 그리고/또는 서로 통신할 수 있다. 일부 예들에서, 사용자들(U1, U2, U3, 및 U4)은, 개개의 클라이언트 디바이스들 및/또는 서버 시스템(102) 또는 제2 서버 시스템(140) 상에서 구동되는 애플리케이션들을 통해 그리고/또는 서버 시스템(102) 또는 제2 서버 시스템(140) 상에서 구현되는 네트워크 서비스, 예컨대, 소셜 네트워크 서비스 또는 다른 타입의 네트워크 서비스를 통해 서로 상호작용할 수 있다. 예컨대, 개개의 클라이언트 디바이스들(120, 122, 124, 및 126)은 하나 이상의 서버 시스템들(예컨대, 시스템(102), 제2 서버 시스템(140))으로 데이터를 통신하고 그리고 그들로부터 데이터를 통신할 수 있다.
[0037] 일부 구현들에서, 서버 시스템(102) 및/또는 제2 서버 시스템(140)은, 각각의 클라이언트 디바이스가 서버 시스템(102) 또는 제2 서버 시스템(140) 및/또는 네트워크 서비스에 업로딩되어 있는 통신된 콘텐츠 또는 공유된 콘텐츠를 수신할 수 있도록 적절한 데이터를 클라이언트 디바이스들에 제공할 수 있다. 일부 예들에서, 사용자들(U1 내지 U4)은 오디오 또는 비디오 회의, 오디오, 비디오, 또는 텍스트 챗(chat), 또는 다른 통신 모드들 또는 애플리케이션들을 통해 상호작용할 수 있다. 서버 시스템(102) 또는 제2 서버 시스템(140)에 의해 구현된 네트워크 서비스는, 사용자들이 다양한 통신들을 수행하게 하고, 링크들 및 연관들을 형성하게 하고, 공유된 콘텐츠, 이를테면 이미지들, 텍스트, 비디오, 오디오, 및 다른 타입들의 콘텐츠를 업로드 및 포스팅하게 하며, 그리고/또는 다른 기능들을 수행하게 시스템을 포함할 수 있다. 예컨대, 클라이언트 디바이스는 수신된 데이터, 이를테면, 클라이언트 디바이스에 전송 또는 스트리밍되고 서버 및/또는 네트워크 서비스를 통해 상이한 클라이언트 디바이스로부터(또는 상이한 클라이언트 디바이스로부터 직접) 발신되거나 또는 서버 시스템 및/또는 네트워크 서비스로부터 발신되는 콘텐츠 포스트들을 디스플레이할 수 있다. 일부 구현들에서, 클라이언트 디바이스들은, 예컨대 위에서 설명된 바와 같이 클라이언트 디바이스들 사이에서 피어-투-피어 통신들을 사용하여 서로 직접 통신할 수 있다. 일부 구현들에서, "사용자"는 하나 이상의 프로그램들 또는 가상 엔티티들, 뿐만 아니라 시스템 또는 네트워크와 인터페이싱하는 사람들을 포함할 수 있다.
[0038] 일부 구현들에서, 클라이언트 디바이스들(120, 122, 124, 및/또는 126) 중 임의의 클라이언트 디바이스는 하나 이상의 애플리케이션들을 제공할 수 있다. 예컨대, 도 1에 도시된 바와 같이, 클라이언트 디바이스(120)는 카메라 애플리케이션(152), 이미지 라이브러리 애플리케이션(156a), 및 하나 이상의 다른 애플리케이션들(154)을 제공할 수 있다. 클라이언트 디바이스들(122 내지 126)은 또한 유사한 애플리케이션들을 제공할 수 있다. 예컨대, 카메라 애플리케이션(152)은, 예컨대, 개개의 클라이언트 디바이스의 카메라를 사용하여 이미지들을 캡처하는 능력을 개개의 클라이언트 디바이스의 사용자들(예컨대, 사용자들(U1-U4))에게 제공할 수 있다. 예컨대, 카메라 애플리케이션(152)은 클라이언트 디바이스(120) 상에서 실행되는 소프트웨어 애플리케이션일 수 있다. 일부 구현들에서, 카메라 애플리케이션(152)은 사용자 인터페이스를 제공할 수 있다.
[0039] 일부 구현들에서, 클라이언트 디바이스(120)는 이미지 라이브러리 애플리케이션(156a)을 포함할 수 있다. 이미지 라이브러리 애플리케이션(156a)은 도 6을 참조하여 설명되는 바와 같이 클라이언트 디바이스(120)의 하드웨어 및/또는 소프트웨어를 사용하여 구현될 수 있다. 상이한 구현들에서, 이미지 라이브러리 애플리케이션(156a)은, 예컨대, 클라이언트 디바이스들(120 내지 124) 중 임의의 클라이언트 디바이스 상에서 실행되는 독립형 이미지 라이브러리 애플리케이션일 수 있거나, 또는 서버 시스템(102) 상에 제공되는 이미지 라이브러리 애플리케이션(156b)과 함께 작동할 수 있다. 이미지 라이브러리 애플리케이션(156a) 및 이미지 라이브러리 애플리케이션(156b)은 이미지 관리 기능들을 제공할 수 있다. 이미지 관리 기능들은 카메라 애플리케이션(152)을 사용하여 캡처된 사진들 및 비디오들을 저장하는 것, 다른 이미지들, 예컨대, 스캔된 이미지들, 스크린샷들 등을 저장하는 것, 이미지 편집 기능들, 이미지 모음, 비디오, 이미지 앨범 또는 출판물(사진 책)과 같은 이미지-기반 창작물들을 생성하기 위한 기능들을 포함할 수 있다. 이미지 라이브러리 애플리케이션(156)은 또한, 하나 이상의 이미지 특징들을 결정하기 위해 이미지들, 예컨대, 이미지 픽셀들 및 이미지 메타데이터를 프로그래밍 방식으로 분석할 수 있다. 이미지 라이브러리 애플리케이션(156)은 이미지 데이터 및 특징들을, 예컨대, 클라이언트 디바이스의 로컬 저장소, 및/또는 네트워크(130)를 통해 통신하는 하나 이상의 다른 디바이스들의 원격 저장소, 예컨대, 서버 시스템(102 및/또는 140)의 데이터베이스(106), 하나 이상의 상이한 클라이언트 디바이스들의 저장소 등에 저장할 수 있다.
[0040] 일부 구현들에서, 클라이언트 디바이스(120)는 하나 이상의 다른 애플리케이션들(154)을 포함할 수 있다. 예컨대, 다른 애플리케이션들(154)은, 다양한 타입들의 기능, 예컨대 캘린더, 주소록, 이메일, 웹 브라우저, 쇼핑, 대중교통(예컨대, 택시, 기차, 비행기 예약들 등), 엔터테인먼트(예컨대, 음악 플레이어, 비디오 플레이어, 게이밍 애플리케이션 등), 소셜 네트워킹(예컨대, 메시징 또는 챗, 오디오/비디오 전화통화(calling), 이미지들/비디오 공유 등) 등을 제공하는 애플리케이션들일 수 있다. 일부 구현들에서, 다른 애플리케이션들(154) 중 하나 이상은 클라이언트 디바이스(120) 상에서 실행되는 독립형 애플리케이션들일 수 있다. 일부 구현들에서, 다른 애플리케이션들(154) 중 하나 이상은 애플리케이션들(154)의 데이터 및/또는 기능을 제공하는 서버 시스템, 예컨대 제2 서버 시스템(140)에 액세스할 수 있다. 예컨대, 제2 서버 시스템(140)에 의해 제공되는 것으로 도시된 애플리케이션들(144, 146, 및 148) 중 임의의 애플리케이션은 데이터 및/또는 커맨드들을 다른 애플리케이션들(154) 중 하나 이상에 제공할 수 있다. 일부 구현들에서, 서버 애플리케이션들(144 내지 148)은, 예컨대 웹-브라우저 또는 다른 클라이언트-측 프로그램을 통하여 클라이언트 디바이스에 의해 액세스되는 독립형 애플리케이션들일 수 있다.
[0041] 클라이언트 디바이스(120, 122, 124, 및/또는 126) 상의 사용자 인터페이스는 이미지들, 비디오, 데이터, 및 다른 콘텐츠뿐만 아니라 통신들, 프라이버시(privacy) 세팅들, 통지들, 및 다른 데이터를 포함하는 사용자 콘텐츠 및 다른 콘텐츠의 디스플레이를 가능하게 할 수 있다. 그러한 사용자 인터페이스는, 클라이언트 디바이스 상의 소프트웨어, 서버 디바이스 상의 소프트웨어, 및/또는 서버 디바이스(104) 및/또는 제2 서버 디바이스(142) 상에서 실행되는 서버 소프트웨어 및 클라이언트 소프트웨어의 조합, 예컨대, 서버 시스템(102) 및/또는 제2 서버 디바이스(142)와 통신하는 클라이언트 소프트웨어 또는 애플리케이션 소프트웨어를 사용하여 디스플레이될 수 있다. 사용자 인터페이스는 클라이언트 디바이스 또는 서버 디바이스의 디스플레이 디바이스, 예컨대 터치스크린 또는 다른 디스플레이 스크린, 프로젝터 등에 의해 디스플레이될 수 있다. 일부 구현들에서, 서버 시스템 상에서 구동되는 애플리케이션 프로그램들은, 클라이언트 디바이스에서 사용자 입력을 수신하고 클라이언트 디바이스에서 데이터, 이를테면 시각 데이터, 오디오 데이터 등을 출력하기 위해, 클라이언트 디바이스와 통신할 수 있다.
[0042] 일부 구현들에서, 서버 시스템(102), 제2 서버 시스템(140), 및/또는 하나 이상의 클라이언트 디바이스들(120 내지 126) 중 임의의 것은 통신 애플리케이션 프로그램을 제공할 수 있다. 통신 프로그램은 시스템(예컨대, 클라이언트 디바이스 또는 서버 시스템)이 다른 디바이스들과 통신하기 위한 옵션들을 제공하게 허용할 수 있다. 통신 프로그램은, 서버 시스템 또는 클라이언트 디바이스와 연관된 디스플레이 디바이스 상에서 디스플레이되는 하나 이상의 연관된 사용자 인터페이스들을 제공할 수 있다. 사용자 인터페이스는, 통신 모드들, 통신할 사용자들 또는 디바이스들 등을 선택하기 위한 다양한 옵션들을 사용자에게 제공할 수 있다. 통신 프로그램은 송신된 콘텐츠 포스트들 및 수신된 콘텐츠 포스트들을, 예컨대 다양한 포맷들 중 임의의 포맷으로 디스플레이하거나 또는 그렇지 않으면 출력할 수 있다.
[0043] 본원에 설명된 특징들의 다른 구현들은 임의의 타입의 시스템 및/또는 서비스를 사용할 수 있다. 예컨대, 다른 네트워킹된 서비스들(예컨대, 인터넷에 연결됨)이 소셜 네트워킹 서비스 대신 또는 그에 부가하여 사용될 수 있다. 임의의 타입의 전자 디바이스가 본원에 설명된 특징들을 이용할 수 있다. 일부 구현들은, 컴퓨터 네트워크들로부터 연결해제되거나 또는 컴퓨터 네트워크들에 간헐적으로 연결되는 하나 이상의 클라이언트 또는 서버 디바이스들 상에, 본원에 설명된 하나 이상의 특징들을 제공할 수 있다. 일부 예들에서, 디스플레이 디바이스를 포함하거나 또는 그에 연결된 클라이언트 디바이스는 클라이언트 디바이스에 로컬인 저장 디바이스들 상에 저장된, 예컨대 통신 네트워크들을 통해 이전에 수신된 이미지들을 디스플레이할 수 있다.
[0044] 도 2는 일부 구현들에 따른, 이미지 선택 제안들을 제공하기 위한 예시적인 방법을 예시하는 흐름도이다. 일부 구현들에서, 방법(200)은, 예컨대 도 1에 도시된 바와 같은 서버 시스템(102) 상에서 구현될 수 있다. 일부 구현들에서, 방법(200)의 일부 또는 전부는 도 1에 도시된 바와 같은 하나 이상의 클라이언트 디바이스들(120, 122, 124, 또는 126) 상에서, 하나 이상의 서버 디바이스들 상에서 그리고/또는 서버 디바이스(들) 및 클라이언트 디바이스(들) 둘 모두 상에서 구현될 수 있다. 설명된 예들에서, 구현 시스템은 하나 이상의 디지털 프로세서들 또는 프로세싱 회로("프로세서들"), 및 하나 이상의 저장 디바이스들(예컨대, 데이터베이스(106) 또는 다른 저장소)을 포함한다. 일부 구현들에서, 하나 이상의 서버들 및/또는 클라이언트들의 상이한 컴포넌트들은 방법(200)의 상이한 블록들 또는 다른 부분들을 수행할 수 있다. 일부 예들에서, 제1 디바이스는 방법(200)의 블록들을 수행하는 것으로 설명된다. 일부 구현들은, 결과들 또는 데이터를 제1 디바이스에 전송할 수 있는 하나 이상의 다른 디바이스들(예컨대, 다른 클라이언트 디바이스들 또는 서버 디바이스들)에 의해 수행되는 방법(200)의 하나 이상의 블록들을 가질 수 있다.
[0045] 일부 구현들에서, 방법(200) 또는 방법의 일부들은 시스템에 의해 자동으로 개시될 수 있다. 일부 구현들에서, 구현 시스템은 제1 디바이스이다. 예컨대, 방법(또는 그의 일부들)은 주기적으로 수행되거나, 또는 하나 이상의 특정 이벤트들 또는 조건들, 예컨대 애플리케이션이 사용자에 의해 개시되는 것, 이미지가 사용자에 의해 선택되는 것, 및/또는 방법에 의해 판독되는 세팅들에서 특정될 수 있는 하나 이상의 다른 조건들이 발생하는 것에 기반하여 수행될 수 있다. 일부 구현들에서, 그러한 조건들은 사용자의 저장된 맞춤 선호도들에서 사용자에 의해 특정될 수 있다.
[0046] 일 예에서, 클라이언트 디바이스는 카메라, 셀 폰, 스마트폰, 태블릿 컴퓨터, 웨어러블 디바이스, 또는 사용자에 의해 클라이언트 디바이스에 대한 (예컨대, 터치 스크린을 사용하여, 제스처들을 사용하여, 마우스 또는 다른 포인팅 디바이스를 사용하여, 키보드 등을 사용하여) 사용자 입력 및 콘텐츠 입력(예컨대, 이미지 캡처)을 수신할 수 있는 다른 클라이언트 디바이스일 수 있고, 방법(200)을 수행할 수 있다. 다른 예에서, 클라이언트 디바이스 또는 서버 디바이스는 방법(200)을 수행할 수 있다. 일부 구현들은 사용자 입력에 기반하여 방법(200)을 개시할 수 있다. 예컨대, 사용자(예컨대, 오퍼레이터 또는 최종-사용자)는 사용자 인터페이스, 예컨대 애플리케이션 사용자 인터페이스 또는 다른 사용자 인터페이스로부터 방법(200)의 개시를 선택할 수 있다. 일부 구현들에서, 방법(200)은 클라이언트 디바이스에 의해 구현될 수 있다. 일부 구현들에서, 방법(200)은 서버 디바이스에 의해 구현될 수 있다.
[0047] 본원에서 언급되는 "이미지"는 하나 이상의 픽셀 값들(예컨대, 컬러 값들, 휘도 값들 등)을 갖는 픽셀들을 갖는 디지털 이미지를 포함할 수 있다. 이미지는 스틸 이미지(예컨대, 스틸 사진들, 단일 프레임을 갖는 이미지들 등), 동적 이미지(예컨대, 애니메이션들, 애니메이트된 GIF들, 이미지의 일부가 모션을 포함하는 반면, 다른 부분들은 정적인 시네마그래프(cinemagraph)들 등) 및 비디오(예컨대, 오디오를 포함할 수 있는 이미지들 또는 이미지 프레임들의 시퀀스)일 수 있다. 본 문헌의 나머지가 이미지를 정적 이미지로서 언급되지만, 본원에 설명되는 기법들이 동적 이미지들, 비디오 등에 적용가능함을 이해할 수 있다. 예컨대, 본원에 설명된 구현들은 정지 이미지들(예컨대, 사진, 이모티콘, 또는 다른 이미지), 비디오들, 또는 동적 이미지들에서 사용될 수 있다. 본원에서 언급되는 텍스트는 영숫자 문자들, 이모티콘들, 심볼들 또는 다른 문자들을 포함할 수 있다.
[0048] 블록(202)에서, 방법(200)의 구현에서 사용자 데이터를 사용하기 위해 사용자 동의(consent)(예컨대, 사용자 허용)가 획득되었는지 여부가 체크된다. 예컨대, 사용자 데이터는, 클라이언트 디바이스들을 사용하여 사용자에 의해 캡처된 이미지들, 예컨대 클라이언트 디바이스를 사용하여 사용자에 의해 저장 또는 액세스된 이미지들, 이미지 메타데이터, 이미지 공유 애플리케이션의 사용에 관련된 사용자 데이터, 메시징 애플리케이션의 사용에 관련된 사용자 데이터, 금융 애플리케이션의 사용에 관련된 사용자 데이터, 소셜 네트워킹 애플리케이션의 사용에 관련된 사용자 데이터, 사용자 선호도들, 사용자 생체인식 정보, 사용자 특징들(아이덴티티, 이름, 나이, 성별, 직업 등), 사용자의 소셜 네트워크 및 연락처들에 관한 정보, 소셜 및 다른 타입들의 액션들 및 활동들, 콘텐츠, 평점들, 및 사용자에 의해 생성 또는 제출된 의견들, 사용자의 현재 위치, 과거 사용자 데이터(historical user data), 사용자에 의해 생성, 수신 및/또는 액세스된 이미지들, 사용자에 의해 뷰잉 또는 공유된 이미지들 등을 포함할 수 있다. 본원에서 설명되는 방법들 중 하나 이상의 블록들은 일부 구현들에서 이러한 사용자 데이터를 사용할 수 있다.
[0049] 사용자 동의가 관련 사용자들(그 사용자들에 대한 사용자 데이터가 방법(200)에서 사용될 수 있음)로부터 획득되었다면, 블록(204)에서, 본원의 방법들의 블록들이 이 블록들에 대해 설명된 바와 같이 사용자 데이터를 가능한 사용하여 구현될 수 있다고 결정되고, 방법은 블록(212)으로 계속된다. 사용자 동의가 획득되지 않았다면, 블록(206)에서, 블록들이 사용자 데이터를 사용하지 않고 구현될 것이라고 결정되고, 방법은 블록(212)으로 계속된다. 일부 구현들에서, 사용자 동의가 획득되지 않았다면, 블록들은 사용자 데이터의 사용 없이 그리고 합성 데이터 및/또는 일반적인 또는 공개적으로-액세스가능한 및 공개적으로-사용가능한 데이터를 이용하여 구현된다. 사용자 동의가 획득되지 않았다면, 방법(200)은 수행되지 않는다.
[0050] 방법(200)의 블록(212)에서, 제1 이미지의 선택이 수신된다. 예컨대, 복수의 이미지들, 예컨대, 사용자의 이미지 라이브러리로부터의 복수의 이미지들이 디바이스의 디스플레이 스크린 상에 디스플레이될 수 있다. 일부 구현들에서, 이미지 썸네일들이 디스플레이될 수 있고, 썸네일의 선택은 대응하는 이미지의 선택에 대응할 수 있다. 예컨대, 이미지들 또는 썸네일들은 그리드 구성, 예컨대, 행 당 3개의 이미지들, 행 당 4개의 이미지들 등으로 디스플레이될 수 있다.
[0051] 일부 구현들에서, 이미지들은 하나 이상의 이미지 특징들에 의해, 예컨대, 대응하는 이미지들과 연관된 날짜 또는 시간에 의해, 대응하는 이미지들과 연관된 위치(예컨대, 지리적 위치)에 의해, 대응하는 이미지들이 속하는 이미지 앨범들 등에 의해 그룹화될 수 있다. 일부 구현들에서, 사용자가 이미지에 묘사된 사람들에 의해 이미지들을 그룹화하는 안면 인식 및/또는 이미지 태깅(image tagging)의 사용을 허용하는 경우, 이미지들은 사람들, 예컨대, "앤드루 및 아니카", "앤드루 및 조이스", "아니카" 등에 의해 그룹화될 수 있다. 일부 구현들에서, 그룹들은 다수의 이미지 특징들 또는 팩터들, 예컨대, "임도(forest trail)에서의 앤드루 및 아니카", "어제 조이스와 함께" 등을 활용할 수 있다.
[0052] 일부 구현들에서, 하나 이상의 제1 이미지들의 선택을 나타내는 제1 사용자 입력이 수신된다. 일부 구현들에서, 사용자 입력을 수신하는 것은 터치스크린 상에 디스플레이된 이미지 상의 탭 또는 누르기 제스처, 음성 입력, 응시 입력을 검출하는 것, 입력 디바이스(마우스, 조이스틱, 트랙패드 등)의 조작을 검출하는 것 등을 포함할 수 있다. 사용자는 스크린 상에 디스플레이된 대응하는 이미지 엘리먼트(예컨대, 이미지 썸네일 또는 다른 이미지 표현, 또는 전체 이미지의 디스플레이)를 선택함으로써 복수의 이미지들 중 하나 이상을 선택할 수 있다. 일부 구현들에서, 이미지들은 스크롤 가능할 수 있거나, 사용자들이 복수의 이미지들의 다양하고 그리고/또는 부가적인 이미지들을 선택할 수 있도록 다수의 페이지들 또는 섹션들로 구성될 수 있다. 하나 이상의 제1 이미지들의 사용자 선택을 수신할 때, 방법은 블록(214)으로 진행한다.
[0053] 블록(214)에서, 선택된 이미지들, 예컨대, 하나 이상의 제1 이미지들의 제1 이미지 특징들이 결정된다. 일부 구현들에서, 제1 이미지 특징들을 결정하는 것은 제1 이미지들과 연관하여 저장된 이미지 메타데이터로부터 이미지 특징들을 리트리브하는 것을 포함할 수 있다. 일부 구현들에서, 제1 이미지 특징들을 결정하는 것은 이미지 데이터베이스로부터, 예컨대, 이미지들 및 이미지 특징들을 데이터베이스에 저장하는 이미지 라이브러리로부터 이미지 특징들을 리트리브하는 것을 포함할 수 있다.
[0054] 일부 구현들에서, 제1 이미지 특징들은 이미지 콘텐츠의 분석(예컨대, 제1 이미지들의 픽셀들의 픽셀 값들) 및/또는 이미지 메타데이터(예컨대, 캡처 날짜, 캡처 위치, 카메라 제조사/모델, 카메라 설정들, 이미지 해상도, 이미지 컬러 심도 등)에 기반하여 결정될 수 있다. 일부 구현들에서, 이미지 콘텐츠의 분석은, 예컨대, 이미지들의 사용자 선택을 수신하기 전에 오프라인으로 수행될 수 있다. 예컨대, 이미지의 이미지 콘텐츠의 분석은, 이미지가 생성될 때(예컨대, 카메라를 사용하여 캡처되고, 스크린샷으로 캡처될 때 등) 또는 라이브러리에 추가될 때(예컨대, 이미지 라이브러리를 갖는 디바이스 상에 다운로드 또는 저장될 때) 수행될 수 있다.
[0055] 일부 구현들에서, 제1 이미지 특징들은 이미지를 프로그래밍 방식으로 분석함으로써 결정될 수 있다. 일부 구현들에서, 제1 이미지 특징들은 이미지와 연관된 하나 이상의 라벨들을 포함할 수 있다. 일부 구현들에서, 하나 이상의 라벨들은 이미지 픽셀 값들 및/또는 이미지 메타데이터에 기반할 수 있다. 일부 구현들에서, 하나 이상의 라벨들은 이미지와 연관된 하나 이상의 시맨틱 개념들을 포함할 수 있다. 일부 구현들에서, 시맨틱 개념들은 개념들의 계층, 예컨대, "음식-> 케이크-> 생일 케이크", "스포츠-> 야구-> 장비-> 배트" 등으로 구성될 수 있고, 여기서 범위 내에서 더 좁은 개념들은 범위 내의 더 넓은 개념 카테고리들에 포함될 수 있다. 이미지와 연관된 임의의 수의 시맨틱 개념들이 존재할 수 있다. 시맨틱 개념들은 이미지에서 하나 이상의 객체들을 검출하는 것, 초점, 조명 레벨, 이미지 구성, 컬러 분포와 같은 이미지 속성들, 위치, 시간과 같은 메타데이터 및 다른 메타데이터, 및 다른 팩터들 중 하나 이상에 기반하여 결정될 수 있다. 일부 구현들에서, 시맨틱 개념들은 이미지들로부터 시맨틱 개념들을 인식하도록 트레이닝된 기계 학습 모델을 사용하여 결정될 수 있다.
[0056] 일부 구현들에서, 이미지 특징들, 예컨대, 하나 이상의 라벨들은 신뢰 스코어와 연관될 수 있다. 신뢰 스코어는, 특정 라벨이 이미지에 적용되는 신뢰도를 나타낼 수 있다. 하나 이상의 라벨들 및 대응하는 신뢰 스코어는 이미지를 프로그래밍 방식으로 분석하는 것에 기반할 수 있다. 일부 구현들에서, 이미지를 프로그래밍 방식으로 분석하는 것은 트레이닝된 기계 학습 모델을 사용하여 수행될 수 있다. 일부 구현들에서, 이미지를 프로그래밍 방식으로 분석하는 것은 객체 검출 및 인식 기법들을 사용하여 수행될 수 있다. 일부 구현들에서, 다양한 이미지 분석 기법들의 조합들이 사용될 수 있다.
[0057] 사용자가 동의를 제공하는 일부 구현들에서, 이미지를 프로그래밍 방식으로 분석하는 것은 이미지 픽셀 데이터로부터 하나 이상의 시맨틱 개념들을 식별하는 것을 포함할 수 있다. 예컨대, 이미지가 실내에서 촬영되었는지 또는 실외에서 촬영되었는지가 결정될 수 있다. 다른 예에서, 기계 학습 모델은, 이미지가 다양한 객체들, 예컨대, 나무들, 꽃들, 건물들, 강 또는 바다, 산들 등 중 하나 이상을 묘사하는지 여부를 결정할 수 있다. 일부 구현들에서, 기계 학습 모델은 묘사되는 객체들의 특정 특징들, 예컨대, "빨간 장미", "12층 건물", "커피 숍", "생일 케이크" 등을 결정할 수 있다.
[0058] 사용자가 동의를 제공하는 일부 구현들에서, 이미지의 하나 이상의 객체들, 예컨대, "타지마할", "야구 배트", "아이스크림" 등이 인식될 수 있다. 사용자가 안면 검출의 사용에 대한 동의를 제공하는 구현들에서, 이미지가 한 명 이상의 사람들을 묘사하는지(예컨대, "이미지가 3명의 사람들을 가짐" 또는 "이미지가 2명의 여성을 묘사함")가 결정될 수 있다. 사용자가 안면 인식 기법들의 사용에 대한 동의를 제공하는 구현들에서, 이미지 내의 사람, 예컨대, "조이스", 앤드루 등이 인식될 수 있다.
[0059] 사용자가 동의를 제공하는 일부 구현들에서, 이미지 특징들은 이미지 메타데이터로부터 결정될 수 있다. 예컨대, 이러한 이미지 특징들은 카메라 제조사/모델, 카메라 설정들(예컨대, 애퍼처, 플래시의 사용, 카메라 모드 등) 이미지 캡처 날짜 및/또는 시간, 이미지 캡처 위치(사용자가 위치 데이터의 사용을 허용하는 경우)를 포함할 수 있다.
[0060] 사용자가 동의를 제공하는 일부 구현들에서, 하나 이상의 시맨틱 개념들은 이미지에서 검출된 객체들 및/또는 이미지 메타데이터에 기반하여 결정될 수 있으며, 예컨대, 플래시가 턴 온된 상태에서 이미지가 캡처될 때, 묘사된 객체들은 식사 테이블 및 음식을 포함하고, 이미지 캡처의 위치 및 시간은, 이미지가 야간에 캡처되었음을 나타내며, 시맨틱 개념들은 "저녁 식사" 및 "실내"일 수 있다. 다른 예에서, 이미지가 물 및 범선을 묘사할 때, "항해(sailing)"의 시맨틱 개념이 이미지와 연관될 수 있다.
[0061] 이미지에서의 객체의 인식 및/또는 이미지에 대응하는 시맨틱 개념들의 결정 시에, 하나 이상의 라벨들이 이미지와 연관될 수 있다. 이미지 특징들, 예컨대, 하나 이상의 라벨들은, 예컨대, 이미지 파일, 데이터베이스 등에 이미지 메타데이터로서 저장될 수 있다. 예컨대, 연관된 라벨들은 "조이스; 저녁 식사; 실내; 집", "등산로; 요세미티 국립 공원" 등이 수 있다.
[0062] 일부 구현들에서, 이미지 특징들은, 이미지들을 프로그래밍 방식으로 분석하는 것에 기반하여 결정된 이미지 타입, 예컨대, "문서", "영수증", "스크린샷", "사진" 등을 포함할 수 있다. 일부 구현들에서, 이미지 특징들은 이미지를 프로그래밍 방식으로 분석하는 것에 기반하여 결정된 이미지 속성들, 예컨대, "흐릿한", "어두운" 등을 포함할 수 있다. 블록(214) 다음에 블록(216)이 이어질 수 있다.
[0063] 블록(216)에서, 이미지 라이브러리에서 하나 이상의 제2 이미지들이 식별된다. 일부 구현들에서, 하나 이상의 제2 이미지들은, 사용자에 의해 선택된 하나 이상의 제1 이미지들의 하나 이상의 제1 이미지 특징들 중 이미지 특징과 동일하거나 유사한 적어도 하나의 이미지 특징을 가질 수 있다. 예컨대, 사용자가 흐릿한 제1 이미지를 선택하면, 흐릿함의 이미지 특징과 각각 연관된 하나 이상의 제2 이미지들이 식별된다.
[0064] 다른 예에서, 사용자가 문서들의 2개의 이미지들(예컨대, 문서인 것으로 결정된 텍스트 또는 시각적 콘텐츠를 묘사하는 이미지)를 선택하면, 이미지 특징 "문서"와 각각 연관된 하나 이상의 제2 이미지들이 식별된다. 다른 예에서, 사용자가 스크린샷들(예컨대, 디바이스의 디스플레이 스크린의 콘텐츠의 캡처들)인 2개의 이미지들을 선택하면, 예컨대, 이미지 특징 "스크린샷"과 연관된 각각의 스크린샷들인 하나 이상의 제2 이미지들이 식별된다. 다른 예에서, 사용자가 2명의 개인들, 예컨대, 조이스 및 앤드루를 묘사하는 이미지를 선택하면, "조이스" 및 "앤드루" 중 적어도 하나에 대한 이미지 라벨들과 각각 연관된 하나 이상의 제2 이미지들이 식별된다.
[0065] 다른 예에서, 제1 이미지들 중 하나 이상이 위치, 예컨대, "타지마할"과 연관된 경우, 동일하거나 유사한 위치, 예컨대, "타지마할, "아그라" 등과 연관된 하나 이상의 제2 이미지들이 선택될 수 있다. 일부 구현들에서, 제2 이미지들과 연관된 위치가 제1 이미지와 연관된 위치의 임계 거리 내에 있도록, 하나 이상의 제2 이미지들이 선택될 수 있다. 예컨대, 임계 거리는 수치 거리, 예컨대, "5 마일"일 수 있다. 일부 구현들에서, 하나 이상의 제2 이미지들은 위치, 예컨대, 도시 이름, 국가 이름 등과의 매칭에 기반하여 선택될 수 있다. 일부 구현들에서, 하나 이상의 제2 이미지들은, 제1 위치, 예컨대, 기념물, 다리, 고층건물들 등에서 제1 이미지에 의해 묘사된 특징과 같은 동일한 특징들 중 하나 이상을 묘사하는 이미지들에 기반하여 선택될 수 있다.
[0066] 일부 구현들에서, 이미지 선택의 콘텍스트가 결정될 수 있다. 예컨대, 사용자가 제1 사용자 입력을 제공하는 사용자 인터페이스가 하나 이상의 디바이스들에 의해 이미지-기반 창작물, 예컨대, 이미지 모음, 이미지 라이브러리의 이미지들에 기반한 비디오, 이미지 앨범, 또는 출판물, 예컨대, 사진 책을 생성하는 것과 연관된다는 것이 결정될 수 있다. 일부 구현들에서, 이미지 선택의 콘텍스트는, 이미지 선택을 위한 사용자 인터페이스가 개시되게 한, 연관된 타겟 소프트웨어 애플리케이션, 예컨대, 메시징 애플리케이션, 이미지 공유 또는 소셜 네트워킹 애플리케이션, 금융 애플리케이션 등일 수 있거나 이에 기반할 수 있다.
[0067] 이미지 선택의 콘텍스트가 결정되는 구현들에서, 하나 이상의 제2 이미지들을 식별하는 것은 콘텍스트에 기반할 수 있다. 예컨대, 콘텍스트는 (예컨대, 블록(216) 이전에) 제2 이미지들을 선택하기 위한 하나 이상의 선택 기준들과 연관될 수 있다. 예컨대, 콘텍스트가 사진 책을 생성하는 것 또는 이미지 공유 애플리케이션을 통해 공유하는 것으로 결정되면, 하나 이상의 제2 이미지들은 그 콘텍스트와 연관된 품질 기준들, 예컨대, 이미지 해상도 기준, 이미지 컬러 깊이 기준, 이미지 초점 기준 등에 기반하여 선택될 수 있다. 일부 예들에서, 이미지 해상도 임계 기준을 충족시키지 않는 이미지들은, 그러한 이미지들이 제1 이미지 특징들과 매칭하는 특징들을 갖더라도, 하나 이상의 제2 이미지들에서 배제될 수 있다. 다른 예에서, 콘텍스트가 금융 애플리케이션으로 결정되면, 특정 특징들, 예컨대, 이미지 타입 "영수증", "인보이스", "재무제표", "문서" 등을 갖는 이미지들이 하나 이상의 제2 이미지들에 포함될 수 있고, 다른 이미지들이 배제될 수 있다.
[0068] 일부 구현들에서, 하나 이상의 제2 이미지들은, 제1 이미지들의 이미지 특징들과 매칭하는 다수의 이미지 특징들에 기반하여 선택되거나 필터링된다. 예컨대, 제1 이미지가 "해변에서의 조이스 및 앤드루"를 묘사하면, 3개의 특징들 "조이스", "앤드루" 및 "해변" 중 얼마나 많은 특징이 제2 이미지들 각각과 연관되는지에 기반하여 제2 이미지들이 선택될 수 있다. 일 예에서, 이미지 라이브러리가 3개의 특징들 모두를 갖는 이미지 A, 이미지 B 및 이미지 C를 포함하고, 3개의 특징들 중 2개의 특징들을 갖는 추가의 이미지들 D, E 및 F를 포함하는 경우, 이미지들 A, B 및 C가 하나 이상의 제2 이미지들로서 선택될 수 있고, 이미지들 D, E, 및 F는 제2 이미지들에서 배제될 수 있다. 일부 구현들에서, 이미지들 A-F는 제2 이미지들에 포함되고, 3개의 특징들 중 하나만을 갖는 이미지들을 포함하는 다른 이미지들은 제2 이미지들에서 배제된다.
[0069] 일부 구현들에서, 하나 이상의 제2 이미지들을 필터링하기 위해 신뢰 임계치가 사용될 수 있다. 예컨대, 제1 이미지가 90 %의 신뢰 스코어를 갖는 특징 "영수증"과 연관되면, 적어도 90 %의 신뢰 스코어를 갖는 특징 "영수증"과 연관된 제2 이미지가 선택될 수 있다. 이 예에서, 더 낮은 신뢰 스코어를 갖는 이미지들은, 이미지들이 특징들 "영수증"과 연관될 때조차 하나 이상의 제2 이미지들에서 배제될 수 있다. 일부 구현들에서, 제1 이미지의 이미지 특징들과 매칭하는 특징들의 수 및 특징들과 연관된 신뢰 스코어들의 조합은 하나 이상의 제2 이미지들을 선택하는 데 사용될 수 있다. 일부 구현들에서, 각각의 이미지 특징들은 하나 이상의 제2 이미지들을 결정하기 위해 가중될 수 있다. 예컨대, 일부 특징들, 예컨대, "타지마할" 또는 "조이스"와 같은 라벨에는 다른 특징들, 예컨대, "야외"보다 더 높은 가중치가 할당될 수 있다.
[0070] 일부 구현들에서, 사용자들이 이미지 선택들 및 사용자에 의해 생성된 이미지-기반 창작물들과 관련된 사용자 데이터의 사용에 대한 동의를 제공할 때, 이러한 데이터는 하나 이상의 제2 이미지들을 선택하는 데 사용될 수 있다. 예컨대, 사용자가 꽃들의 사진들을 포함하는 출판물들, 예컨대, 사진 책들을 이전에 생성한 경우, 꽃들을 묘사하는 하나 이상의 제2 이미지들이 포함될 수 있다. 이 예에서, 예컨대, 사용자가 최근에 캡처된 이미지들을 포함하는 사진 책들을 주기적으로 생성한다는 것을 사용자 데이터가 나타내는 경우, 이전의 사진 책에 포함된 이미지들이 배제될 수 있다.
[0071] 다른 예에서, 사용자가 특정 타입들의 사진들, 예컨대, 사람의 얼굴을 묘사하지 않는 사진들을 선택하라는 제안들을 이전에 무시하였다면, 이러한 이미지들은 하나 이상의 제2 이미지들에서 배제될 수 있다. 다른 예에서, 사용자가 특정 개인들, 예컨대, 가족 맴버들, 애완 동물들 등의 이미지들을 포함하는 픽처 모음을 생성한다는 것을 사용자 데이터가 나타내면, 개인들을 묘사하는 이미지들이 하나 이상의 제2 이미지들에서 선택될 수 있고, 개인들을 묘사하지 않은 이미지들은 배제될 수 있다. 일부 구현들에서, 특정 특징들, 예컨대, 높은 흐릿함을 갖는 이미지들, 어두운 이미지, 낮은 품질의 이미지, 아카이빙된 이미지 등은, 그러한 이미지들이 하나 이상의 제1 이미지들과 매칭하는 특징들을 가질 때조차, 하나 이상의 제2 이미지들에서 배제될 수 있다.
[0072] 일부 구현들에서, 예컨대, 이미지-기반 창작물이 비디오인 것을 사용자 데이터가 나타낼 때, 하나 이상의 제2 이미지들은, 다른 이미지-기반 창작물들, 예컨대, 이미지 모음에 대해 배제될 수 있는 비디오 클립들 또는 모션을 갖는 이미지들을 포함할 수 있다. 일부 구현들에서, 비디오 클립들은 비시각적 파라미터들, 예컨대, 비디오 클립의 길이, 비디오 클립의 오디오 부분에 의해 결정된 시맨틱 개념들 또는 라벨들 등에 기반하여 선택될 수 있다. 블록(216) 다음에 블록(218)이 이어질 수 있다.
[0073] 블록(218)에서, 사용자 인터페이스가 디스플레이되게 된다. 예컨대, 사용자 인터페이스는 클라이언트 디바이스(120 내지 124) 중 임의의 클라이언트 디바이스에 의해 디스플레이될 수 있다. 사용자 인터페이스는 하나 이상의 제2 이미지들을 포함할 수 있다. 예컨대, 사용자 인터페이스는, 예컨대, 이미지들의 그리드의 디스플레이를 포함하는 카드 또는 오버레이로서 디스플레이될 수 있다. 일부 구현들에서, 하나 이상의 제2 이미지들은, 이들 이미지들이, 예컨대, 사용자 인터페이스의 "제안들" 섹션에 디스플레이되는 제안된 선택들이라는 디스플레이된 표시와 함께 디스플레이될 수 있다. 하나 이상의 제2 이미지들은 사용자 선택 가능하다. 일부 구현들에서, 사용자 인터페이스는 또한 사용자 선택 가능한 다른 이미지들, 예컨대, 현재 시간 직전의 특정 시간 기간 내에 캡처되거나 수신되었고, 하나 이상의 제2 이미지들에 포함되지 않은 최근 이미지들을 포함할 수 있다. 일부 구현들에서, 다른 이미지들은 "제안" 섹션, 예컨대, "최근" 섹션과 별개로 사용자 인터페이스의 섹션에서 그룹화될 수 있다. 일부 구현들에서, 현재 선택된 이미지들은 사용자 인터페이스의 섹션, 예컨대, "선택 트레이" 섹션에 디스플레이될 수 있다. "선택 트레이"는, 제1 이미지들 및 사용자에 의한 선택을 위해 이용 가능한 하나 이상의 부가적인 이미지들을 포함하는 사용자 인터페이스의 다른 부분들과 구별될 수 있다. 블록(218) 다음에 블록(220)이 이어질 수 있다.
[0074] 블록(220)에서, 추가의 이미지 선택들이 수신되는지 여부가 결정된다. 예컨대, 추가의 이미지 선택들은 제2 사용자 입력을 통해 수신될 수 있다. 일부 구현들에서, 추가의 이미지 선택들에 의해 표시된 이미지들은 하나 이상의 제2 이미지들 중 적어도 하나를 포함할 수 있다. 일부 구현들에서, 추가의 이미지 선택들에 의해 표시된 이미지들은 하나 이상의 최근 이미지들 중 적어도 하나를 포함할 수 있다. 추가의 이미지 선택들이 수신되면, 방법은 블록(214)으로 진행한다. 일부 구현들에서, 이미지 라이브러리 내의 하나 이상의 제3 이미지들이 식별될 수 있다. 예컨대, 하나 이상의 제3 이미지들은, 추가의 이미지 선택들로부터, 예컨대, 하나 이상의 제2 이미지들로부터 그리고/또는 사용자 인터페이스에 디스플레이된 다른 이미지들로부터 선택된 이미지의 특징들을 결정하는 것에 기반하여 식별될 수 있다.
[0075] 하나 이상의 제3 이미지들은 (제1 사용자 입력에서 선택된) 제1 이미지들 및 제2 사용자 입력을 통해 선택된 이미지들의 특징들을 매칭시킴으로써 식별될 수 있다. 예컨대, 하나 이상의 제3 이미지들은, 제3 이미지들 각각이 선택된 이미지들의 특징, 예컨대, 제1 이미지들 중 하나 이상과 연관되고 제2 이미지들 중 하나 이상과 연관된 적어도 하나의 특징과 매칭하는 적어도 하나의 특징을 갖도록 식별될 수 있다. 예컨대, (제1 사용자 입력에 의해 선택된) 제1 이미지가 "해변에서의 조이스 및 앤드루"를 묘사하고(예컨대, 라벨들 "조이스", "앤드루" 및 "해변"과 연관되고), (제2 사용자 입력에 의해 선택된) 선택된 이미지가 "조이스 및 앤드루"를 묘사하면, 하나 이상의 제3 이미지들은 조이스 및 앤드루 둘 모두 묘사하는 이미지들로서 이미지 라이브러리에서 식별될 수 있다. 이 예에서, "해변" 특징은 제3 이미지들을 식별하는 동안 고려되지 않는다.
[0076] 상이한 구현들에서, 하나 이상의 제3 이미지들은 하나 이상의 제2 이미지들을 선택하는 데 사용된 기법들과 유사한 기법들을 사용하여 선택될 수 있다. 하나 이상의 제3 이미지들이 식별되는 구현들에서, 사용자 인터페이스는 하나 이상의 제3 이미지들을 포함하도록 업데이트될 수 있다. 예컨대, 사용자 인터페이스를 업데이트하는 것은, 하나 이상의 제2 이미지들 대신에 또는 하나 이상의 제2 이미지들에 부가하여 하나 이상의 제3 이미지들을 디스플레이하기 위해 "제안들" 섹션을 업데이트하는 것을 포함할 수 있다. 일부 구현들에서, 하나 이상의 제3 이미지들을 식별할 때, "제안들" 섹션은 사용자 인터페이스의 다른 섹션들(예컨대, "최근")보다 더 높은 우선순위로 디스플레이될 수 있다.
[0077] 일부 구현들에서, 이미지들의 부가적인 선택들을 나타내는 추가의 사용자 입력이 (예컨대, 블록들(214-220)의 반복들을 통해) 수신될 수 있고, 이에 대한 응답으로, 사용자 인터페이스는, 사용자 입력에 의해 선택된 이미지들의 이미지 특징들을 갖는 이미지 라이브러리 내의 이미지들의 매칭하는 이미지 특징들에 기반하여 부가적인 이미지들을 포함하도록 업데이트될 수 있다. 어떠한 추가의 이미지 선택들도 수신되지 않을 때, 블록(220) 다음에 블록(222)이 이어질 수 있다.
[0078] 블록(222)에서, 예컨대, 사용자 인터페이스를 통해 하나 이상의 액션들(예컨대, 동작들)의 사용자 선택들이 수신된다. 사용자-선택 액션들은 사용자 선택 이미지들을 사용하여 수행된다. 예컨대, 선택된 이미지들, 예컨대, 제1 사용자 입력, 제2 사용자 입력, 및 존재하는 경우 후속 사용자 입력들에 의해 표시된 이미지 선택들에 기반하여 이미지-기반 창작물(예컨대, 콘텐츠 창작물)이 생성된다는 것을 사용자가 나타낼 수 있다. 예컨대, 이미지-기반 창작물은 이미지 모음, 선택된 이미지들을 묘사하는 비디오, 예컨대, 짧은 비디오 클립 또는 슬라이드쇼, 선택된 이미지들을 포함하는 이미지 앨범, 또는 선택한 이미지들을 포함하는 출판물, 예컨대, 사진 책을 포함할 수 있다.
[0079] 다른 예에서, 사용자에 의해 선택된 하나 이상의 액션들은 선택된 이미지들을 타겟 소프트웨어 애플리케이션, 예컨대, 메시징 애플리케이션, 이미지 공유 애플리케이션, 소셜 네트워킹 애플리케이션, 금융 애플리케이션 등에 제공하는 것일 수 있다. 이 예에서, 선택된 이미지들은, 예컨대, API(application programming interface)를 통해 타겟 소프트웨어 애플리케이션에 제공된다. 일부 구현들에서, 선택된 이미지들은, 이미지들을 타겟 소프트웨어 애플리케이션에 제공하기 전에 수정될 수 있다(예컨대, 자동 화질 향상, 크로핑(cropping), 파일 크기 감소 등).
[0080] 일부 구현들에서, 사용자에 의해 선택된 하나 이상의 액션들은, 예컨대, 이미지 라이브러리 내의 이미지들에 대한 수정들을 수행하기 위한 이미지 라이브러리 애플리케이션에 대한 액션들일 수 있다. 예컨대, 사용자가 서로 또는 다른 이미지들의 복제물들을 포함하는 이미지들을 선택하는 경우(예컨대, 하나 이상의 다른 선택된 이미지들과 유사한 주제를 모두 묘사하고 유사한 메타데이터와 연관되거나, 라이브러리의 하나 이상의 다른 이미지들에 대해 유사한 주제를 묘사하는 이미지들을 선택하면), 액션은 복제물들을 삭제하는 것일 수 있다. 예컨대, 다른 복제 이미지들의 스코어 미만인 이미지 특징들을 갖는 복제 이미지들은, 예컨대, 흐릿함, 노출, 컬러 노이즈, 이미지 경계들에 대한 객체 포지션 등과 같은 시각적 특징에 기반하여 삭제될 수 있다. 다른 예에서, 사용자가 하나 이상의 공통 특징들(예컨대, "어두운", "화질 향상되지 않은")을 각각 갖는 이미지들을 선택하면, 액션은, 예컨대, 이미지 향상 기법들을 사용하는 픽셀 값들을 수정함으로써, 예컨대, 이미지 필터들을 적용하고, 이미지 향상을 위해 트레이닝된 기계 학습 모델을 사용하여 이미지들을 수정하는 것 등에 의해 선택된 이미지들의 자동 화질 향상을 수행하는 것일 수 있다.
[0081] 일부 구현들에서, 액션은 선택된 이미지들을 아카이빙(archive)하는 것일 수 있고, 이는 선택된 이미지들이 이미지 라이브러리의 이미지들의 하나 이상의 뷰들, 예컨대, 메인 뷰로부터 은닉되게 한다. 예컨대, 선택된 이미지들과 연관된 라벨은, 선택된 이미지들이 아카이빙된다는 것을 표시하도록 업데이트될 수 있다. 아카이빙된 이미지들은, 아카이빙된 이미지들을 보기 위한 커맨드가, 예컨대, 사용자 입력을 통해 수신되면, 디스플레이될 수 있다. 일부 구현들에서, 아카이빙된 이미지들과 연관된 이미지 메타데이터 또는 라벨들은, 이미지가 아카이빙된 것을 나타내도록 업데이트될 수 있다. 이러한 메타데이터 또는 라벨들은, 예컨대, 이미지 라이브러리에서 이미지들의 메인 뷰를 생성할 때, 아카이빙된 이미지들을 메인 뷰에서 배제하는 데 사용될 수 있다.
[0082] 일부 구현들에서, 하나 이상의 액션들은, 사용자 인터페이스에 디스플레이된 제안된 액션 엘리먼트에 대응하는 액션들을 포함할 수 있다. 이러한 구현들에서, 제안된 액션 엘리먼트는 선택된 이미지들, 예컨대, 제1 이미지들 중 하나 이상 및 제2 이미지들 중 하나 이상에 기반하여 결정될 수 있다. 일부 구현들에서, 제안된 액션 엘리먼트와 연관된 액션은 선택된 이미지들을 아카이빙하는 것, 선택된 이미지들을 삭제하는 것(예컨대, 이미지 라이브러리로부터 선택된 이미지들을 제거하는 것, 저장소로부터 이미지들을 삭제하는 것 등), 또는 선택된 이미지들의 자동 화질 향상을 수행하는 것 중 하나 이상을 포함할 수 있다.
[0083] 예컨대, 선택된 이미지들이 "흐릿한"의 이미지 특징을 갖는 것으로 결정될 수 있다. 그 결정에 기반하여, 제안된 액션 엘리먼트, 예컨대, "흐릿한 것 모두를 삭제"가 디스플레이될 수 있다. 사용자가 제안된 액션 엘리먼트를 선택하면, 대응하는 액션은, 예컨대, 디바이스에 의해 수행될 수 있다. 일부 구현들에서, 선택된 이미지들과 매칭하는 부가적인 이미지들, 예컨대, 선택된 이미지들과 동일한 위치에서 또는 근처에서 그리고 선택된 이미지들과 유사한 시간에 촬영된, 라이브러리의 다른 흐릿한 이미지들이 포함될 수 있고, 사용자 선택 이미지들 및 선택된 이미지와 매칭하는 부가적인 이미지들에 대해 선택된 액션이 수행된다.
[0084] 방법(200)이 도 2의 다양한 블록들을 참조하여 설명되었지만, 본 개시내용에서 설명된 기법들이 도 2의 블록들 중 일부를 수행하지 않으면서 수행될 수 있음이 이해될 수 있다. 일부 구현들에서, 도 2에 예시된 블록들 중 하나 이상이 조합될 수 있다. 예컨대, 블록들(214, 216 및 218) 중 2개 이상은 결합될 수 있다. 다양한 구현들에서, 방법(200)의 블록들 중 일부는 병렬로 또는 도 2에 예시된 것과는 상이한 순서로 수행될 수 있다. 일부 구현들에서, 방법(200)은 클라이언트 디바이스, 예컨대, 클라이언트 디바이스들(120-124) 중 하나 이상에 의해 수행된다. 일부 구현들에서, 방법(200)은 서비스 디바이스, 예컨대, 서버 디바이스(104)에 의해 수행된다. 일부 구현들에서, 방법(200)은 클라이언트 및 서버 디바이스들의 결합에 의해 수행된다. 예컨대, 일부 구현들에서, 블록들(202, 204, 206, 212, 218, 및 220)은 클라이언트 디바이스에 의해 수행되고, 블록들(214, 216 및 222)은 서버 디바이스에 의해 수행된다. 예컨대, 이러한 접근법은, 예컨대, 이미지들을 프로그래밍 방식으로 분석함으로써 클라이언트 디바이스(120)가 이미지 특징들을 결정하기 위한 제한된 능력을 갖고, 이미지 데이터를 저장하기 위한 제한된 저장 능력을 갖는 등의 경우에 유용할 수 있다.
[0085] 도 3은 일부 구현들에 따른, 이미지 선택 제안들을 제공하기 위한 방법(300)의 일 예를 예시하는 흐름도이다. 일부 구현들에서, 방법(300)은, 예컨대 도 1에 도시된 바와 같은 서버 시스템(102) 상에서 구현될 수 있다. 일부 구현들에서, 방법(300)의 일부 또는 전부는 도 1에 도시된 바와 같은 하나 이상의 클라이언트 디바이스들(120, 122, 124, 또는 126) 상에서, 하나 이상의 서버 디바이스들 상에서 그리고/또는 서버 디바이스(들) 및 클라이언트 디바이스(들) 둘 모두 상에서 구현될 수 있다. 설명된 예들에서, 구현 시스템은 하나 이상의 디지털 프로세서들 또는 프로세싱 회로("프로세서들"), 및 하나 이상의 저장 디바이스들(예컨대, 데이터베이스(106) 또는 다른 저장소)을 포함한다. 일부 구현들에서, 하나 이상의 서버들 및/또는 클라이언트들의 상이한 컴포넌트들은 방법(300)의 상이한 블록들 또는 다른 부분들을 수행할 수 있다. 일부 예들에서, 제1 디바이스는 방법(300)의 블록들을 수행하는 것으로 설명된다. 일부 구현들은, 결과들 또는 데이터를 제1 디바이스에 전송할 수 있는 하나 이상의 다른 디바이스들(예컨대, 다른 클라이언트 디바이스들 또는 서버 디바이스들)에 의해 수행되는 방법(300)의 하나 이상의 블록들을 가질 수 있다.
[0086] 일부 구현들에서, 방법(300) 또는 방법의 일부들은 시스템에 의해 자동으로 개시될 수 있다. 일부 구현들에서, 구현 시스템은 제1 디바이스이다. 예컨대, 방법(또는 그의 일부들)은 주기적으로 수행되거나, 또는 하나 이상의 특정 이벤트들 또는 조건들, 예컨대 애플리케이션이 사용자에 의해 개시되는 것, 이미지가 사용자에 의해 선택되는 것, 및/또는 방법에 의해 판독되는 세팅들에서 특정될 수 있는 하나 이상의 다른 조건들이 발생하는 것에 기반하여 수행될 수 있다. 일부 구현들에서, 그러한 조건들은 사용자의 저장된 맞춤 선호도들에서 사용자에 의해 특정될 수 있다.
[0087] 일 예에서, 클라이언트 디바이스는 카메라, 셀 폰, 스마트폰, 태블릿 컴퓨터, 웨어러블 디바이스, 또는 다른 클라이언트 디바이스 ― 사용자에 의한 클라이언트 디바이스로의 (예컨대, 터치 스크린, 제스처들, 마우스 또는 다른 포인팅 디바이스, 키보드 등을 사용한) 사용자 입력 및 콘텐츠 입력(예컨대, 이미지 캡처)을 수신할 수 있음 ― 일 수 있고, 방법(300)을 수행할 수 있다. 다른 예에서, 클라이언트 디바이스 또는 서버 디바이스는 방법(300)을 수행할 수 있다. 일부 구현들은 사용자 입력에 기반하여 방법(300)을 개시할 수 있다. 예컨대, 사용자(예컨대, 오퍼레이터 또는 최종-사용자)는 사용자 인터페이스, 예컨대 애플리케이션 사용자 인터페이스 또는 다른 사용자 인터페이스로부터 방법(300)의 개시를 선택할 수 있다. 일부 구현들에서, 방법(300)은 클라이언트 디바이스에 의해 구현될 수 있다. 일부 구현들에서, 방법(300)은 서버 디바이스에 의해 구현될 수 있다.
[0088] 블록(302)에서, 방법(300)의 구현에서 사용자 데이터를 사용하기 위해 사용자 동의(예컨대, 사용자 허락)가 획득되었는지 여부가 체크된다. 예컨대, 사용자 데이터는, 클라이언트 디바이스들을 사용하여 사용자에 의해 캡처된 이미지들, 예컨대 클라이언트 디바이스를 사용하여 사용자에 의해 저장 또는 액세스된 이미지들, 이미지 메타데이터, 이미지 공유 애플리케이션의 사용에 관련된 사용자 데이터, 메시징 애플리케이션의 사용에 관련된 사용자 데이터, 금융 애플리케이션의 사용에 관련된 사용자 데이터, 소셜 네트워크 애플리케이션의 사용에 관련된 사용자 데이터, 사용자 선호도들, 사용자 생체인식 정보, 사용자 특성(아이덴티티, 이름, 나이, 성별, 직업 등), 사용자의 소셜 네트워크 및 연락처들에 관한 정보, 소셜 및 다른 타입들의 액션들 및 활동들, 콘텐츠, 평점들, 및 사용자에 의해 생성 또는 제출된 의견들, 사용자의 현재 위치, 과거 사용자 데이터(historical user data), 사용자에 의해 생성, 수신 및/또는 액세스된 이미지들, 사용자에 의해 뷰잉 또는 공유된 이미지들 등을 포함할 수 있다. 본원에서 설명되는 방법들 중 하나 이상의 블록들은 일부 구현들에서 이러한 사용자 데이터를 사용할 수 있다.
[0089] 사용자 동의가 관련 사용자들(그 사용자들에 대한 사용자 데이터가 방법(300)에서 사용될 수 있음)로부터 획득되었다면, 블록(304)에서, 본원의 방법들의 블록들이 이 블록들에 대해 설명된 바와 같이 사용자 데이터를 가능한 사용하여 구현될 수 있다고 결정되고, 방법은 블록(312)으로 계속된다. 사용자 동의가 획득되지 않았다면, 블록(306)에서, 블록들이 사용자 데이터를 사용하지 않고 구현될 것이라고 결정되고, 방법은 블록(312)으로 계속된다. 일부 구현들에서, 사용자 동의가 획득되지 않았다면, 블록들은 사용자 데이터의 사용 없이 그리고 합성 데이터 및/또는 일반적인 또는 공개적으로-액세스가능한 및 공개적으로-사용가능한 데이터를 이용하여 구현된다. 사용자 동의가 획득되지 않았다면, 방법(300)은 수행되지 않는다.
[0090] 방법(300)의 블록(312)에서, 타겟 소프트웨어 애플리케이션을 나타내는 콘텍스트 정보가 결정된다. 예컨대, 사용자가 이미지-기반 창작물, 예컨대, 이미지 앨범, 이미지 모음, 비디오, 또는 출판물을 생성하는 것을 가능하게 하는 이미지 라이브러리 애플리케이션의 일부로서 방법(300)이 구현되는 경우, 콘텍스트 정보는 이미지 창작물의 타입을 포함할 수 있다.
[0091] 다른 예에서, 방법(300)이, 예컨대, API(application programming interface)를 통해 다른 애플리케이션들과의 상호작용을 지원하는 이미지 라이브러리 애플리케이션의 일부로서 구현될 때, 콘텍스트 정보를 결정하는 것은 이미지 라이브러리 애플리케이션, 예컨대, 이미지 공유 애플리케이션(예컨대, 독립형 이미지 공유 애플리케이션, 소셜 네트워킹 애플리케이션 등), 금융 애플리케이션(예컨대, 비용 관리 애플리케이션, 인보이싱 애플리케이션 등), 메시징 애플리케이션(예컨대, 채팅 또는 인스턴트 메시징 애플리케이션, 이-메일 애플리케이션, 콜래보레이션 애플리케이션 등)을 호출하는 애플리케이션의 애플리케이션 타입을 결정하는 것을 포함할 수 있다. 이 예에서, 이미지 라이브러리 애플리케이션을 호출하는 애플리케이션은 타겟 소프트웨어 애플리케이션으로 지칭된다.
[0092] 또한, 일부 구현들에서, 콘텍스트 정보를 결정하는 것은, 타겟 소프트웨어 애플리케이션으로부터 선택될 다수의 이미지들, 예컨대, 하나의 이미지, 2개의 이미지들 등을 수신하는 것을 포함할 수 있다. 다른 예에서, 이러한 콘텍스트 정보는 선택될 이미지들의 타입, 예컨대, 모션을 갖는 이미지(예컨대, 비디오 클립), 특정 종횡비 및/또는 배향의 이미지들(예컨대, 정사각형, 세로 배향(portrait orientation), 가로 배향(landscape orientation) 등), 정지 이미지들, 동적 이미지들 등을 포함할 수 있다.
[0093] 다른 예에서, 사용자 동의가 획득되었다면, 콘텍스트 정보를 결정하는 것은 메시징 대화에서 참여자들(예컨대, 이-메일 수신자들)의 식별 정보(예컨대, 사용자 이름들, 로그인 ID들 등과 같은 사용자 식별자들), 이미지 공유 애플리케이션을 통해 공유된 이전 이미지들(예컨대, 풍경 이미지들, 음식 이미지들, 셀카들 등)의 특징들 등 수신하는 것을 포함할 수 있다. 다른 예에서, 콘텍스트 정보는 금융 애플리케이션과 같은 타겟 소프트웨어 애플리케이션을 사용하여 수행된 사용자 활동, 예컨대, 비용 보고의 제출, 인보이스의 생성 등을 포함할 수 있다.
[0094] 일부 구현들에서, 타겟 소프트웨어 애플리케이션은 API를 통해 콘텍스트 정보를 제공할 수 있다. 일부 구현들에서, 사용자 동의가 획득되었다면, 콘텍스트 정보는, 사용자의 이미지 라이브러리의 이미지와 연관된 이미지 특징들과 매칭될 수 있는 하나 이상의 이미지 특징들, 예컨대, "셀카," "영수증", "휴가" 등으로서 제공될 수 있다. 이러한 이미지 특징들은, 사용자 동의가 획득되었다면, 이미지 콘텐츠(예컨대, 묘사된 이미지 특징들) 및/또는 이미지 메타데이터(예컨대, 캡처 시간, 캡처 위치, 캡처 카메라의 속성들 및 설정들 등)에 기반할 수 있다. 일부 구현들에서, 콘텍스트 정보는 시맨틱 개념들, 예컨대, "비용 보고", "앤드루와의 채팅 대화" 등으로 제공될 수 있다.
[0095] 사용자가 동의를 제공할 때, 콘텍스트 정보는 타겟 소프트웨어 애플리케이션으로부터의 애플리케이션 콘텍스트를 포함할 수 있다. 예컨대, 애플리케이션 콘텍스트는 메시징 애플리케이션을 통해 수행된 대화와 연관된 대화 또는 시맨틱 개념들의 요약, 금융 애플리케이션에서 준비 중인 비용 보고의 시간 기간 등을 포함할 수 있다. 예컨대, 애플리케이션 콘텍스트는 "이 대화는 발리에서의 휴가에 관한 것", "2017년 11월 비용 보고" 등을 포함할 수 있다. 블록(312) 다음에 블록(314)이 이어질 수 있다.
[0096] 블록(314)에서, 하나 이상의 제1 이미지들은 콘텍스트 정보에 기반하여 식별된다. 예컨대, 제1 이미지들은 콘텍스트 정보와 이미지 라이브러리 내의 이미지들의 이미지 특징들의 매칭에 기반할 수 있다. 일부 구현들에서, 매칭은 타겟 애플리케이션의 애플리케이션 타입에 기반할 수 있다. 예컨대, 특정 이미지 특징들은, 블록(314) 이전에, 특정 타입들의 애플리케이션들과 연관될 수 있다. 예컨대, 애플리케이션 타입이 "금융 애플리케이션"인 경우, 이미지들이 "영수증", "문서", "스크린샷" 등인 것을 나타내는 라벨과 연관된 이미지들은 하나 이상의 제1 이미지들로서 선택될 수 있고, 다른 특징들(예컨대, 라벨들)을 갖는 이미지들, 예컨대, "사진", "비디오" 등은 배제될 수 있다.
[0097] 일부 구현들에서, 제1 이미지들은 콘텍스트 정보에 지정된 이미지 특징들 및/또는 시맨틱 개념들과 이미지 라이브러리 내의 이미지들의 이미지 특징들의 매칭에 기반할 수 있다. 예컨대, 애플리케이션 타입이 메시징 애플리케이션이고 콘텍스트 정보가 메시징 대화의 참여자의 식별 정보를 포함하는 경우, 예컨대, 콘텍스트 정보가, 메시징 애플리케이션에 의해 제공되는 채팅 대화가 사용자들, 앤드루 및 조이스를 수반한다고 명시하는 경우, 앤드루 및 조이스 중 적어도 한 명을 묘사하는 이미지들은 제1 이미지들로서 선택될 수 있다.
[0098] 다른 예에서, 메시징 애플리케이션에 의해 제공되는 채팅 대화가 발리에서의 휴가에 관한 것이라고 애플리케이션 콘텍스트가 지정하면, 하나 이상의 시맨틱 개념들이 애플리케이션 콘텍스트에 기반하여 결정된다. 예컨대, 시맨틱 개념들은 "휴가", "발리", "해변", "인도네시아", "사원" 등을 포함할 수 있다. 애플리케이션 콘텍스트로부터 결정되거나 애플리케이션 콘텍스트에서 지정된 시맨틱 개념들과 연관된 이미지들이 제1 이미지들로서 선택될 수 있다. 다른 예에서, 콘텍스트 정보가 2017년 11월 비용 보고를 지정하면, 2017년 11월에 대응하는 연관된 타임스탬프를 갖는 영수증의 이미지가 제1 이미지로서 선택될 수 있다. 블록(314) 다음에 블록(316)이 이어질 수 있다.
[0099] 블록(316)에서, 제1 이미지들을 포함하는 사용자 인터페이스가 디스플레이된다. 예컨대, 사용자 인터페이스는 클라이언트 디바이스(120 내지 124) 중 임의의 클라이언트 디바이스에 의해 디스플레이될 수 있다. 사용자 인터페이스는, 블록(218)을 참조하여 위에 설명된 사용자 인터페이스와 유사하게, 사용자가 제1 이미지들 중 하나 이상을 선택하는 것을 가능하게 한다. 블록(316) 다음에 블록(318)이 이어질 수 있다.
[0100] 블록(318)에서, 디스플레이된 이미지들(예컨대, 제1 이미지들) 중 하나 이상의 사용자 선택이 수신된다. 예컨대, 블록(318)은 도 2의 블록(212)과 유사할 수 있다. 블록(318) 다음에 블록(320)이 이어질 수 있다.
[0101] 블록(320)에서, 블록(318)에서 선택된 이미지들의 이미지 특징들은, 예컨대, 위에 설명된 블록(214)과 유사한 방식으로 결정된다. 블록(320) 다음에 블록(322)이 이어질 수 있다.
[0102] 블록(322)에서, 하나 이상의 부가적인 이미지들이 식별된다. 일부 구현들에서, 부가적인 이미지들은 블록(320)에서 결정된 이미지 특징들에 기반하여 식별될 수 있다. 예컨대, 사용자 선택이 라벨들 "발리" 및 "앤드루"와 연관된 이미지들에 대응하면, 라벨들 중 적어도 하나를 갖는 부가적인 이미지들이 식별된다. 일부 구현들에서, 부가적인 이미지들을 식별하는 것은 블록(320)에서 결정된 이미지 특징들 및, 예컨대, 위의 블록(314)과 유사한 콘텍스트 정보에 기반한다. 블록(322) 다음에 블록(324)이 이어질 수 있다.
[0103] 블록(324)에서, 사용자 인터페이스는 하나 이상의 부가적인 이미지들을 포함하도록 업데이트된다. 예컨대, 제1 이미지들 대신에 또는 제1 이미지들에 추가하여 하나 이상의 부가적인 이미지들이 디스플레이될 수 있다. 일부 구현들에서, 업데이트된 사용자 인터페이스는, 사용자에 의해 선택된 이미지들을 포함하는 섹션, 예컨대, "선택 트레이" 섹션을 포함할 수 있다. "선택 트레이"는, 제1 이미지들 및 사용자에 의한 선택을 위해 이용 가능한 하나 이상의 부가적인 이미지들을 포함하는 사용자 인터페이스의 다른 부분들과 구별될 수 있다. 도 2의 블록(218)에 대해 설명된 것과 유사하게, 다른 특징들이 제공될 수 있다. 블록(324) 다음에 블록(326)이 이어질 수 있다.
[0104] 블록(326)에서, 추가의 이미지 선택들이 사용자로부터, 예컨대, 업데이트된 사용자 인터페이스에 디스플레이된 이미지들로부터 수신되는지 여부가 결정된다. 추가의 이미지 선택들이 수신되면, 방법은 블록(320)으로 진행하고, 여기서 사용자에 의해 선택된 부가적인 이미지들의 이미지 특징들이 결정된다. 블록들(320-326)은 사용자에게 부가적인 이미지 선택 제안들을 제공하도록 반복될 수 있다. 어떠한 추가의 이미지 선택들도 수신되지 않으면, 방법은 블록(328)으로 진행한다.
[0105] 블록(328)에서, 사용자에 의해 선택된 이미지들은 타겟 소프트웨어 애플리케이션에 제공된다. 예컨대, 타겟 소프트웨어 애플리케이션이 이미지 라이브러리 애플리케이션인 경우, 선택된 이미지들은 이미지-기반 창작물에 활용될 이미지들로서 제공될 수 있다. 다른 예에서, 타겟 소프트웨어 애플리케이션이 이미지 공유 또는 메시징 애플리케이션인 경우, 선택된 이미지들이 이미지 공유 또는 메시징 애플리케이션을 통해 하나 이상의 다른 디바이스들에 (예컨대, 네트워크를 통해) 전송하기 위해 이용 가능하도록 제공될 수 있다. 일부 구현들에서, 선택된 이미지들을 타겟 소프트웨어 애플리케이션에 제공하기 전에, 선택된 이미지들은 프로세싱되는데, 예컨대, 자동으로 화질 향상되고, 크로핑되고, 압축되고, 상이한 포맷으로 변환될 수 있다. 일부 구현들에서, 이미지의 프로세싱은 타겟 소프트웨어 애플리케이션으로부터 수신된 콘텍스트 정보에 기반할 수 있다.
[0106] 방법(300)이 도 3의 다양한 블록들을 참조하여 설명되었지만, 본 개시내용에서 설명된 기법들이 도 3의 블록들 중 일부를 수행하지 않으면서 수행될 수 있음이 이해될 수 있다. 일부 구현들에서, 도 3에 예시된 블록들 중 하나 이상이 조합될 수 있다. 예컨대, 블록들(314, 316 및 318) 중 2개 이상이 결합될 수 있다. 다른 예에서, 블록들(320, 322 및 324) 중 2개 이상이 결합될 수 있다. 다양한 구현들에서, 방법(300)의 블록들 중 일부는 병렬로 또는 도 3에 예시된 것과는 상이한 순서로 수행될 수 있다.
[0107] 일부 구현들에서, 방법(300)은 클라이언트 디바이스, 예컨대, 클라이언트 디바이스들(120-124) 중 하나 이상에 의해 수행된다. 일부 구현들에서, 방법(300)은 서비스 디바이스, 예컨대, 서버 디바이스(104)에 의해 수행된다. 일부 구현들에서, 방법(300)은 클라이언트 및 서버 디바이스들의 결합에 의해 수행된다. 예컨대, 일부 구현들에서, 블록들(302, 304, 306, 312, 318, 326, 및 328)은 클라이언트 디바이스에 의해 수행되고, 블록들(314, 316, 320, 322 및 324)은 서버 디바이스에 의해 수행된다. 예컨대, 이러한 접근법은, 예컨대, 이미지들을 프로그래밍 방식으로 분석함으로써 클라이언트 디바이스(120)가 이미지 특징들을 결정하기 위한 제한된 능력을 갖고, 이미지 데이터를 저장하기 위한 제한된 저장 능력을 갖는 등의 경우에 유용할 수 있다.
[0108] 도 4는 일부 구현들에 따른, 이미지 선택 제안들을 포함하는 예시적인 사용자 인터페이스(400)의 개략도이다. 다양한 구현들에서, 사용자 인터페이스(400)는 디스플레이 디바이스에 의해, 예컨대 일부 구현들에서는 도 1의 클라이언트 디바이스(120, 122, 124, 및/또는 126)의 디스플레이 스크린 또는 서버 시스템(102)에 의해 디스플레이될 수 있다.
[0109] 도 4에 예시된 바와 같이, 사용자의 이미지 라이브러리의 일부가 사용자 인터페이스에 디스플레이된다. 도 4에 예시된 예에서, 이미지 라이브러리로부터의 9개의 이미지들이 도시된다. 도 4가 행 당 3개의 정사각형 이미지들로 3개의 행들의 이미지들을 도시하지만, 이용 가능한 스크린 공간에 기반하여 그리드에서 임의의 수의 행들 및 열들이 사용될 수 있다. 또한, 상이한 구현들은 다른 구성들 또는 어레인지먼트들로 이미지들을 디스플레이할 수 있다. 일부 구현들에서, 라이브러리의 더 많거나 더 적은 이미지들이 도시될 수 있다. 일부 구현들에서, 이미지들은 이미지들과 연관된 타임스탬프에 기반하여 특정 순서, 예컨대, 역연대 순서로 구성될 수 있다.
[0110] 도 4에 예시된 예에서, 사용자는, 이미지 상의 체크 마크(402)로 예시된 바와 같이, 최상부 행의 최좌측 이미지를 선택하였다. 도 4에서 볼 수 있듯이, 사용자에 의해 선택된 이미지(예컨대, 제1 이미지)는 사진 ID("제인 도우")이다. 본원에 설명된 기법들을 사용하여, 사용자 선택 이미지에 기반한 하나 이상의 제안된 이미지 선택들(예컨대, 제2 이미지들)이 사용자 인터페이스에 디스플레이된다. 예컨대, 제안된 이미지 선택들은 사용자 인터페이스에서 3개의 다른 이미지들 상의 대응하는 체크 마크들(404, 406 및 408)로 표시된다. 제안된 이미지 선택은 사진 ID의 이미지("XYZ 기업"의 "존 도우") 및 영수증들의 2개의 이미지들에 대응한다. 이 예에서 제안된 이미지 선택들은 제1 이미지(예컨대, "문서", "아이덴티티 카드")의 이미지 특징들과 이미지 라이브러리의 다른 이미지들의 이미지 특징들의 매칭에 기반한다.
[0111] 사용자 인터페이스(400)는 제안된 액션 엘리먼트(410)를 추가로 도시한다. 도 4에 예시된 예에서, 제안된 액션은 "문서들 및 영수증들의 선택"이다. 사용자가 제안된 액션 엘리먼트(410)를 선택하면, 문서들 및 영수증들인, 사용자의 이미지 라이브러리로부터의 다른 이미지들이 연관된 이미지 특징들에 기반하여 자동으로 선택된다. 예컨대, 자동으로 선택된 이미지들은, 이러한 이미지들이 사용자 인터페이스(400)의 뷰에 디스플레이되도록 사용자 입력을 통해 스크롤되거나 달리 명령을 받는 경우, 체크 마크들(404, 406 및 408)과 유사한 체크 마크들과 함께 디스플레이될 수 있다. 일부 구현들에서, 이러한 자동으로 선택된 이미지들은, 이미지 라이브러리의 이미지들의 디스플레이와 별개인, 사용자 인터페이스의 디스플레이 영역에 디스플레이될 수 있다. 일부 구현들에서, 다른 또는 부가적인 액션들, 예컨대, "선택된 이미지들의 아카이빙", "선택된 이미지들의 자동 화질 향상", "선택된 이미지들의 삭제" 등이 제안된 액션 엘리먼트에 도시될 수 있다.
[0112] 일부 구현들에서, 제안된 액션들은 이미지 특징들에 기반할 수 있고, 예컨대, 상이한 특정 제안된 액션(들)은 개개의 특정 이미지 특징들과 연관될 수 있다. 예컨대, 사용자가 흐릿한 이미지들을 선택한 경우, 제안된 액션은 이미지들을 삭제하는 것일 수 있다. 다른 예에서, 사용자가 어두운 이미지들을 선택한 경우, 제안된 액션은 밝기 또는 콘트라스트 향상을 적용하는 것일 수 있다. 일부 구현들에서, 제안된 액션은 복합적인 액션, 예컨대, "이미지들의 선택, 이미지 필터의 적용 및 메시징 애플리케이션을 통한 이미지들의 공유"일 수 있다. 사용자가 제안된 액션 엘리먼트(410)를 선택하면, 대응하는 액션이 자동으로 수행된다.
[0113] 사용자 인터페이스(400)는 감소된 노력으로 그리고 메모리, 프로세싱 자원들 및 전력을 포함한 디바이스 자원들의 감소된 소비로 사용자가 이미지들을 선택하는 것을 가능하게 한다. 예컨대, 사용자가 디바이스 상에서 많은 스크롤링 및 검색 동작들로 각각의 흐릿한 이미지를 수동으로 선택해야 하는 것 대신에, 사용자 인터페이스는 단순하고 감소된 디바이스 동작들로 사용자가 제공된 제안된 선택들을 승인하는 것을 가능하게 할 수 있다. 또한, 사용자 인터페이스(400)에 디스플레이되지 않지만 사용자 선택 이미지와 매칭하는 특징들을 갖는, 이미지 라이브러리의 다른 이미지들은, 사용자가 이미지들을 스크롤하고 각각의 이미지를 수동으로 선택할 필요없이, 선택될 수 있다.
[0114] 도 5a는 일부 구현들에 따른, 이미지 선택 제안들을 제공하는 예시적인 사용자 인터페이스(500)의 개략도이다. 다양한 구현들에서, 사용자 인터페이스(500)는 디스플레이 디바이스에 의해, 예컨대 일부 구현들에서는 도 1의 클라이언트 디바이스(120, 122, 124, 및/또는 126)의 디스플레이 스크린 또는 서버 시스템(102)에 의해 디스플레이될 수 있다.
[0115] 도 5a에 예시된 바와 같이, 사용자 인터페이스(500)는, 부가적인 이미지들이 선택되어 트레이에 추가될 수 있음을 나타내는 2개의 블랭크 스팟들(blank spots) 및 사용자 선택 이미지(502)를 포함하는 선택 트레이를 포함한다. 사용자 인터페이스(500)는 사용자가 선택할 수 있는 이미지들을 포함한다. 예컨대, 사용자는 사용자 인터페이스의 "최근" 섹션(504)에서 하나 이상의 최근 이미지들을 선택할 수 있다. 일부 구현들에서, "최근" 섹션의 이미지들은, 사용자의 이미지 라이브러리 내의 이미지들과 연관된 캡처 타임스탬프에 기반하여, 시간의 내림차순으로 구성될 수 있다.
[0116] 사용자 인터페이스(500)는 본원에 설명된 기법들을 사용하여 결정된 제안된 이미지 선택들을 포함하는 제안(506)을 더 포함한다. 도 5에 예시된 예에서, 제안된 이미지 선택들은 "최근" 섹션(504) 위에 오버레이된 "제안들" 카드의 형태로 디스플레이된다. 다른 구현들에서, 제안된 이미지 선택들은 사용자 인터페이스의 다른 섹션들에 디스플레이될 수 있고, 제안된 이미지 선택들 등을 나타내기 위해 체크 마크들 또는 다른 시각적 표시자들이 사용될 수 있다. 일부 구현들에서, 제안된 이미지 선택들은 사용자 인터페이스의 우선순위화된 섹션에, 예컨대, 선택 트레이 근처에 디스플레이될 수 있다.
[0117] 도 5a에 예시된 예에서, 사용자는 꽃의 이미지(502)를 선택하였다. 사용자 선택에 기반하여, 이미지(502)의 하나 이상의 특징들과 매칭하는 특징들을 갖는, 사용자의 이미지 라이브러리 내의 다른 이미지들이 제안들(506)에 포함된다. 예컨대, 이미지(502)와 연관된 위치와 유사한 위치에서 캡처된 꽃들의 다른 이미지들, 예컨대, 이미지들(512, 514 및 516)이 디스플레이될 수 있다. 도 5에 도시된 예에서, 매칭 특징들에 기반한 요약, "임도 상의 꽃들"이 제안 카드에서 섹션 헤더(510)로서 도시된다. 헤더 "임도의 친구들(520)"을 갖는 제2 섹션은 부가적인 이미지 제안들, 이미지들(522, 524, 및 526)을 포함한다. 부가적인 이미지 제안들은 연관된 위치가 "임도"인 것에 기반한다. 상이한 구현들에서, 임의의 수의 이미지 제안들이 제공될 수 있다. 사용자 인터페이스(500)는 사용자가 최근 섹션(504) 및/또는 제안 카드(506)로부터 하나 이상의 이미지들을 선택하는 것을 가능하게 한다.
[0118] 일부 구현들에서, 이미지 제안들은, 사용자에 의해 이미 선택된 이미지들, 예컨대, 이미지(502)와의 매치 정도에 기반하여 사용자 인터페이스에서 구성(예컨대, 그룹화)될 수 있다. 예컨대, 이미지들(512-516)은, 이미지들이 선택된 이미지(502)와 유사한 주제를 포함하고 임도에서 캡처되었기 때문에, 제안 카드(506)의 제1 부분에 도시된다. 이미지들(522-526)은, 이미지들이 임도에서 캡처 되었기 때문에 제안 카드(506)의 제2 부분에 도시되어 있지만, 이미지들이 꽃들을 묘사하지 않기 때문에 선택된 이미지(502)와 유사하지 않다.
[0119] 도 5b는 일부 구현들에 따른, 이미지 선택 제안들을 제공하는 예시적인 사용자 인터페이스(530)의 개략도이다. 예컨대, 사용자 인터페이스(530)는 사용자가 사용자 인터페이스(500)를 통해 이미지들(522 및 512)을 선택한 후에 디스플레이될 수 있다. 부가적인 선택된 이미지들이 선택 트레이의 일부로서 도시된다. 이미지들(522 및 512)이 제안 카드들에서 제거된다. 부가적인 이미지(528)는, 예컨대, 이미지 라이브러리 내의 이미지들의 이미지 특징들과 선택된 이미지들(502, 512 및 522)의 매칭에 기반하여 제안 카드에 추가된다.
[0120] 도 5c는 일부 구현들에 따른, 이미지 선택 제안들을 제공하는 예시적인 사용자 인터페이스(540)의 개략도이다. 도 5c에 도시된 바와 같이, 이미지 기반 창작물, 예컨대, 픽처 모음(542)은 사용자에 의해 선택된 이미지들, 예컨대, 이미지들(502, 512 및 522)에 기반하여 생성되었다. 사용자 인터페이스(540)는 하나 이상의 제안된 이미지들을 갖는 제안 카드를 포함한다. 예컨대, 사용자 인터페이스(540)는 사용자가 제안된 이미지들 중 하나 이상을 선택하고, 예컨대, 이미지들을 제안 카드로부터 픽처 모음으로 드래그 앤 드롭함으로써 픽처 모음에 이미지들을 추가하는 것을 가능하게 할 수 있다.
[0121] 도 6은 본원에 설명된 하나 이상의 특징들을 구현하는 데 사용될 수 있는 예시적인 디바이스(600)의 블록도이다. 일 예에서, 디바이스(600)는 클라이언트 디바이스, 예컨대 도 1에 도시된 클라이언트 디바이스들(115) 중 임의의 클라이언트 디바이스를 구현하는 데 사용될 수 있다. 대안적으로, 디바이스(600)는 서버 디바이스, 예컨대 서버(101)를 구현할 수 있다. 일부 구현들에서, 디바이스(600)는 클라이언트 디바이스, 서버 디바이스, 또는 클라이언트 및 서버 디바이스들 둘 모두를 구현하는 데 사용될 수 있다. 위에서 설명된 바와 같이, 디바이스(600)는 임의의 적합한 컴퓨터 시스템, 서버, 또는 다른 전자 또는 하드웨어 디바이스일 수 있다.
[0122] 본원에 설명된 하나 이상의 방법들은, 임의의 타입의 컴퓨팅 디바이스 상에서 실행될 수 있는 독립형 프로그램, 웹 브라우저 상에서 구동되는 프로그램, 모바일 컴퓨팅 디바이스(예컨대, 셀 폰, 스마트 폰, 태블릿 컴퓨터, 웨어러블 디바이스(손목시계, 암밴드, 장신구, 헤드기어, 가상 현실 고글들 또는 안경, 증강 현실 고글들 또는 안경, 머리 장착형 디스플레이 등), 랩톱 컴퓨터 등) 상에서 구동되는 모바일 애플리케이션("앱")에서 구동될 수 있다. 일 예에서, 클라이언트/서버 아키텍처가 사용될 수 있으며, 예컨대, 모바일 컴퓨팅 디바이스는 (클라이언트 디바이스로서) 사용자 입력 데이터를 서버 디바이스에 전송하고, 출력을 위해(예컨대, 디스플레이를 위해) 최종 출력 데이터를 서버로부터 수신한다. 다른 예에서, 모든 계산들이 모바일 컴퓨팅 디바이스 상의 모바일 앱(및/또는 다른 앱들) 내에서 수행될 수 있다. 다른 예에서, 계산들은 모바일 컴퓨팅 디바이스와 하나 이상의 서버 디바이스들 사이에 분할될 수 있다.
[0123] 일부 구현들에서, 디바이스(600)는 프로세서(602), 메모리(604), 및 입력/출력(I/O) 인터페이스(606)를 포함한다. 프로세서(602)는 프로그램 코드를 실행하고 디바이스(600)의 기본 동작들을 제어하기 위한 하나 이상의 프로세서들 및/또는 프로세싱 회로들일 수 있다. "프로세서"는 데이터, 신호들 또는 다른 정보를 프로세싱하는 임의의 적합한 하드웨어 시스템, 메커니즘 또는 컴포넌트를 포함한다. 프로세서는, (예컨대, 단일-코어, 듀얼-코어, 또는 멀티-코어 구성의) 하나 이상의 코어들을 갖는 범용 CPU(central processing unit), (예컨대, 멀티프로세서 구성의) 다수의 프로세싱 유닛들, GPU(graphics processing unit), FPGA(field-programmable gate array), ASIC(application-specific integrated circuit), CPLD(complex programmable logic device), 기능을 달성하기 위한 전용 회로, 뉴럴 네트워크 모델-기반 프로세싱을 구현하기 위한 특수-목적 프로세서, 뉴럴 회로들, 행렬 계산들(예컨대, 행렬 곱셈)을 위해 최적화된 프로세서들을 갖는 시스템, 또는 다른 시스템들을 포함할 수 있다. 일부 구현들에서, 프로세서(602)는 뉴럴-네트워크 프로세싱을 구현하는 하나 이상의 코-프로세서들을 포함할 수 있다. 일부 구현들에서, 프로세서(602)는 확률 출력을 생성하도록 데이터를 프로세싱하는 프로세서일 수 있으며, 예컨대 프로세서(602)에 의해 생성된 출력은 부정확하거나 또는 예상되는 출력으로부터의 범위 내에서 정확할 수 있다. 프로세싱은 특정한 지리적 위치로 제한되거나 또는 시간적 제한들을 가질 필요가 없다. 예컨대, 프로세서는 "실시간"으로, "오프라인"으로, "배치(batch) 모드" 등으로 자신의 기능들을 수행할 수 있다. 프로세싱의 일부들은 상이한(또는 동일한) 프로세싱 시스템들에 의해 상이한 시간들에서 그리고 상이한 위치들에서 수행될 수 있다. 컴퓨터는 메모리와 통신하는 임의의 프로세서일 수 있다.
[0124] 메모리(604)는 통상적으로 프로세서(602)에 의한 액세스를 위해 디바이스(600)에서 제공되며, 프로세서에 의한 실행을 위한 명령들을 저장하기에 적합하고 프로세서(602)와 별개로 로케이팅되거나 그리고/또는 그와 통합되는 임의의 적합한 프로세서-판독가능 저장 매체, 이를테면, RAM(random access memory), ROM(read-only memory), EEPROM(Electrical Erasable Read-only Memory), 플래시 메모리 등일 수 있다. 메모리(604)는 프로세서(602)에 의해 서버 디바이스(600) 상에서 동작되는 소프트웨어를 저장할 수 있으며, 그 소프트웨어는 운영 시스템(608), 기계-학습 애플리케이션(630), 다른 애플리케이션들(612), 및 애플리케이션 데이터(614)를 포함한다. 다른 애플리케이션들(612)은 애플리케이션들, 이를테면 데이터 디스플레이 엔진, 웹 호스팅 엔진, 이미지 디스플레이 엔진, 통지 엔진, 소셜 네트워킹 엔진 등을 포함할 수 있다. 일부 구현들에서, 기계-학습 애플리케이션(630) 및 다른 애플리케이션들(612)은 각각, 프로세서(602)가 본원에서 설명된 기능들, 예컨대, 도 2 및 도 3의 방법들 중 일부 또는 전부를 수행할 수 있게 하는 명령들을 포함할 수 있다.
[0125] 다른 애플리케이션들(612)은, 예컨대 이미지 편집 애플리케이션들, 미디어 디스플레이 애플리케이션들, 통신 애플리케이션들, 웹 호스팅 엔진들 또는 애플리케이션들, 맵핑 애플리케이션들, 미디어 공유 애플리케이션들 등을 포함할 수 있다. 본원에 개시된 하나 이상의 방법들은 수개의 환경들 및 플랫폼들에서, 예컨대 임의의 타입의 컴퓨팅 디바이스 상에서 구동될 수 있는 독립형 컴퓨터 프로그램으로서, 웹 페이지들을 갖는 웹 애플리케이션으로서, 모바일 컴퓨팅 디바이스 상에서 구동되는 모바일 애플리케이션("앱") 등으로서 동작될 수 있다.
[0126] 다양한 구현들에서, 기계-학습 애플리케이션은 베이지안(Bayesian) 분류기들, 지원 벡터 기계들, 뉴럴 네트워크들, 또는 다른 학습 기법들을 이용할 수 있다. 일부 구현들에서, 기계-학습 애플리케이션(630)은 트레이닝된 모델(634), 추론 엔진(636), 및 데이터(632)를 포함할 수 있다. 일부 구현들에서, 데이터(632)는 트레이닝 데이터, 예컨대 트레이닝된 모델(634)을 생성하는 데 사용되는 데이터를 포함할 수 있다. 예컨대, 트레이닝 데이터는 임의의 타입의 데이터, 이를테면 텍스트, 이미지들, 오디오, 비디오 등을 포함할 수 있다. 트레이닝 데이터는 임의의 소스, 예컨대 트레이닝을 위해 구체적으로 마킹된 데이터 아카이빙소, 기계-학습을 위한 트레이닝 데이터로서의 사용을 위한 허가가 제공된 데이터 등으로부터 획득될 수 있다. 하나 이상의 사용자들이 기계-학습 모델, 예컨대 트레이닝된 모델(634)을 트레이닝하기 위해 그들 개개의 사용자 데이터의 사용을 허가한 구현들에서, 트레이닝 데이터는 그러한 사용자 데이터를 포함할 수 있다. 사용자들이 그들 개개의 사용자 데이터의 사용을 허가한 구현들에서, 데이터(632)는 허가된 데이터, 이를테면 이미지들(예컨대, 사진들 또는 다른 사용자-생성된 이미지들), 통신들(예컨대, 이메일; 챗 데이터, 이를테면 텍스트 메시지들, 음성, 비디오 등), 문서들(예컨대, 스프레드시트들, 텍스트 문서들, 프리젠테이션들 등)을 포함할 수 있다.
[0127] 일부 구현들에서, 데이터(632)는 수집된 데이터, 이를테면 맵 데이터, 이미지 데이터(예컨대, 위성 이미저리(imagery), 오버헤드 이미저리 등), 게임 데이터 등을 포함할 수 있다. 일부 구현들에서, 트레이닝 데이터는 트레이닝의 목적을 위해 생성된 합성 데이터, 이를테면 트레이닝되고 있는 콘텍스트에서 사용자 입력 또는 활동에 기반하지 않는 데이터, 예컨대 시뮬레이팅된 대화들로부터 생성된 데이터, 컴퓨터-생성된 이미지들 등을 포함할 수 있다. 일부 구현들에서, 기계-학습 애플리케이션(630)은 데이터(632)를 배제한다. 예컨대, 이들 구현들에서, 트레이닝된 모델(634)은, 예컨대 상이한 디바이스 상에서 생성되고, 기계-학습 애플리케이션(630)의 일부로서 제공될 수 있다. 다양한 구현들에서, 트레이닝된 모델(634)은 모델 구조 또는 형태 및 연관된 가중치들을 포함하는 데이터 파일로서 제공될 수 있다. 추론 엔진(636)은 트레이닝된 모델(634)에 대한 데이터 파일을 판독하며, 트레이닝된 모델(634)에서 특정된 모델 구조 또는 형태에 기반하여 노드 연결, 계층들, 및 가중치들을 이용하여 뉴럴 네트워크를 구현할 수 있다.
[0128] 기계-학습 애플리케이션(630)은 또한 트레이닝된 모델(634)을 포함한다. 일부 구현들에서, 트레이닝된 모델은 하나 이상의 모델 형태들 또는 구조들을 포함할 수 있다. 예컨대, 모델 형태들 또는 구조들은 임의의 타입의 뉴럴-네트워크, 이를테면 선형 네트워크, 복수의 계층들(예컨대, 입력 계층과 출력 계층 사이의 "은닉 계층들"(각각의 계층은 선형 네트워크임))을 구현하는 딥 뉴럴 네트워크, 콘볼루셔널 뉴럴 네트워크(예컨대, 입력 데이터를 다수의 부분들 또는 타일들로 분할 또는 분해하고, 하나 이상의 뉴럴-네트워크 계층들을 사용하여 각각의 타일을 별개로 프로세싱하며, 각각의 타일의 프로세싱으로부터의 결과들을 어그리게이팅하는 네트워크), 시퀀스-시퀀스 뉴럴 네트워크(예컨대, 순차적인 데이터, 이를테면 문장 내의 단어들, 비디오 내의 프레임들 등을 입력으로서 취하고 결과 시퀀스를 출력으로서 생성하는 네트워크) 등을 포함할 수 있다. 모델 형태 또는 구조는 다양한 노드들 사이의 연결 및 노드들의 계층들로의 조직화를 특정할 수 있다. 예컨대, 제1 계층(예컨대, 입력 계층)의 노드들은 데이터를 입력 데이터(632) 또는 애플리케이션 데이터(614)로서 수신할 수 있다. 예컨대, 그러한 데이터는, 예컨대 트레이닝된 모델이 이미지 분석을 위해 사용되는 경우 노드 당 하나 이상의 픽셀들을 포함할 수 있다. 후속 중간 계층들은 모델 형태 또는 구조에서 특정된 연결마다 이전의 계층의 노드들의 출력을 입력으로서 수신할 수 있다. 이들 계층들은 또한 은닉 계층들로 지칭될 수 있다. 최종 계층(예컨대, 출력 계층)은 기계-학습 애플리케이션의 출력을 생성한다. 예컨대, 출력은 특정 트레이닝된 모델에 의존하여, 이미지에 대한 라벨들의 세트, 이미지의 다른 이미지들과의 비교를 허가하는 이미지의 표현(예컨대, 이미지에 대한 특징 벡터), 입력 문장에 대한 응답인 출력 문장, 입력 데이터에 대한 하나 이상의 카테고리들 등일 수 있다. 일부 구현들에서, 모델 형태 또는 구조는 또한 각각의 계층에서 노드들의 수 및/또는 타입을 특정한다.
[0129] 상이한 구현들에서, 트레이닝된 모델(634)은 모델 구조 또는 형태마다 계층들로 배열된 복수의 노드들을 포함할 수 있다. 일부 구현들에서, 노드들은 어떠한 메모리도 갖지 않는 계산 노드들이며, 예컨대 하나의 단위의 출력을 생성하기 위해 하나의 단위의 입력을 프로세싱하도록 구성될 수 있다. 노드에 의해 수행된 계산은, 예컨대 복수의 노드 입력들 각각을 가중치와 곱하는 것, 가중된 합을 획득하는 것, 및 노드 출력을 생성하기 위해 바이어스 또는 인터셉트 값을 이용하여, 가중된 합을 조정하는 것을 포함할 수 있다. 일부 구현들에서, 노드에 의해 수행된 계산은 또한 스텝(step)/활성화 함수를 조정된 가중된 합에 적용하는 것을 포함할 수 있다. 일부 구현들에서, 스텝/활성화 함수는 비-선형 함수일 수 있다. 다양한 구현들에서, 그러한 계산은 행렬 곱셈과 같은 연산들을 포함할 수 있다. 일부 구현들에서, 복수의 노드들에 의한 계산들은 병렬로, 예컨대 멀티코어 프로세서의 다수의 프로세서 코어들을 사용하여, GPU의 개별 프로세싱 유닛들 또는 특수-목적 뉴럴 회로를 사용하여 수행될 수 있다. 일부 구현들에서, 노드들은 메모리를 포함할 수 있으며, 예컨대 후속 입력을 프로세싱할 시에 하나 이상의 이전의 입력들을 저장 및 사용하는 것이 가능할 수 있다. 예컨대, 메모리를 갖는 노드들은 LSTM(long short-term memory) 노드들을 포함할 수 있다. LSTM 노드들은, 노드가 FSM(finite state machine)와 같이 작동하게 허가하는 "상태"를 유지하기 위해 메모리를 사용할 수 있다. 그러한 노드들을 갖는 모델들은 순차적인 데이터, 예컨대 문장 또는 단락 내의 단어들, 비디오 내의 프레임들, 스피치 또는 다른 오디오 등을 프로세싱하는 데 유용할 수 있다.
[0130] 일부 구현들에서, 트레이닝된 모델(634)은 개별 노드들에 대한 임베딩(embedding)들 또는 가중치들을 포함할 수 있다. 예컨대, 모델은 모델 형태 또는 구조에 의해 특정된 바와 같은 계층들로 조직화된 복수의 노드들로서 개시될 수 있다. 초기화 시에, 개개의 가중치는 모델 형태마다 연결되는 노드들, 예컨대 뉴럴 네트워크의 연속적인 계층들 내의 노드들의 각각의 쌍 사이의 연결에 적용될 수 있다. 예컨대, 개개의 가중치들은 랜덤하게 할당되거나 또는 디폴트 값들로 초기화될 수 있다. 이어서, 모델은 결과를 생성하기 위해, 예컨대 데이터(632)를 사용하여 트레이닝될 수 있다.
[0131] 예컨대, 트레이닝은 지도 학습 기법들을 적용하는 것을 포함할 수 있다. 지도 학습에서, 트레이닝 데이터는 복수의 입력들(예컨대, 이미지들의 세트) 및 각각의 입력에 대한 대응하는 예상되는 출력(예컨대, 각각의 이미지에 대한 하나 이상의 라벨들)을 포함할 수 있다. 모델의 출력과 예상되는 출력의 비교에 기반하여, 가중치들의 값들은, 예컨대 유사한 입력을 제공받은 경우 모델이 예상되는 출력을 생성할 확률을 증가시키는 방식으로 자동으로 조정된다.
[0132] 일부 구현들에서, 트레이닝은 비지도 학습 기법들(unsupervised learning techniques)을 적용하는 것을 포함할 수 있다. 비지도 학습에서, 입력 데이터만이 제공될 수 있으며, 모델은 데이터를 구별하기 위해, 예컨대 입력 데이터를 복수의 그룹들로 클러스터화하기 위해 트레이닝될 수 있으며, 여기서 각각의 그룹은 일부 방식으로 유사한 입력 데이터를 포함한다. 예컨대, 모델은, 모델이 자연적인 이미지들(예컨대, 사진들)로부터 추상적인 이미지들(예컨대, 합성 이미지들, 사람이 그린 이미지들 등)을 구별하도록 이미지들을 구별하기 위해 트레이닝될 수 있다. 모델은 이미지 콘텐츠 데이터 및/또는 이미지 메타데이터에 기반하여 하나 이상의 이미지 특징들을 결정하도록 트레이닝될 수 있다. 결정된 이미지 특징들은 이미지 라벨들 및/또는 시맨틱 개념들을 포함할 수 있다.
[0133] 다른 예에서, 비지도 학습을 사용하여 트레이닝된 모델은 입력 문장들 내의 단어들의 사용에 기반하여 단어들을 클러스터화할 수 있다. 일부 구현들에서, 비지도 학습은, 예컨대 기계-학습 애플리케이션(630)에 의해 사용될 수 있는 지식 표현들을 생성하는 데 사용될 수 있다. 다양한 구현들에서, 트레이닝된 모델은 모델 구조에 대응하는 가중치들의 세트 또는 임베딩들을 포함한다. 데이터(632)가 제외되는 구현들에서, 기계-학습 애플리케이션(630)은, 예컨대 기계-학습 애플리케이션(630)의 개발자에 의한, 제3자 등에 의한 이전의 트레이닝에 기반하는 트레이닝된 모델(634)을 포함할 수 있다. 일부 구현들에서, 트레이닝된 모델(634)은 고정된, 예컨대 가중치들을 제공하는 서버로부터 다운로드된 가중치들의 세트를 포함할 수 있다.
[0134] 기계-학습 애플리케이션(630)은 또한 추론 엔진(636)을 포함한다. 추론 엔진(636)은 추론을 제공하기 위해, 트레이닝된 모델(634)을 데이터, 이를테면 애플리케이션 데이터(614)에 적용하도록 구성된다. 일부 구현들에서, 추론 엔진(636)은 프로세서(602)에 의해 실행될 소프트웨어 코드를 포함할 수 있다. 일부 구현들에서, 추론 엔진(636)은 프로세서(602)가 트레이닝된 모델을 적용할 수 있게 하는 (예컨대, 프로그래밍가능 프로세서에 대한, FPGA(field programmable gate array) 등에 대한) 회로 구성을 특정할 수 있다. 일부 구현들에서, 추론 엔진(636)은 소프트웨어 명령들, 하드웨어 명령들, 또는 그 조합을 포함할 수 있다. 일부 구현들에서, 추론 엔진(636)은, 추론 엔진(636)을 인보크시키도록, 예컨대 추론을 생성하기 위해 애플리케이션 데이터(614)에 트레이닝된 모델(634)을 적용하도록 운영 시스템(608) 및/또는 다른 애플리케이션들(612)에 의해 사용될 수 있는 API(application programming interface)를 제공할 수 있다.
[0135] 기계-학습 애플리케이션(630)은 수개의 기술적 장점들을 제공할 수 있다. 예컨대, 트레이닝된 모델(634)이 비지도 학습에 기반하여 생성될 경우, 트레이닝된 모델(634)은 입력 데이터, 예컨대 애플리케이션 데이터(614)로부터 지식 표현들(예컨대, 수치 표현들)을 생성하도록 추론 엔진(636)에 의해 적용될 수 있다. 예컨대, 이미지 분석을 위해 트레이닝된 모델은, 입력 이미지들(예컨대, 10MB)보다 작은 데이터 사이즈(예컨대, 1KB)를 갖는 이미지들의 표현들을 생성할 수 있다. 일부 구현들에서, 그러한 표현들은 출력(예컨대, 라벨, 분류, 이미지를 설명하는 문장 등)을 생성하기 위한 프로세싱 비용(예컨대, 계산 비용, 메모리 이용 등)을 감소시키는 데 도움을 줄 수 있다. 일부 구현들에서, 그러한 표현들은 추론 엔진(636)의 출력으로부터 출력을 생성하는 상이한 기계-학습 애플리케이션에 입력으로서 제공될 수 있다. 일부 구현들에서, 기계-학습 애플리케이션(630)에 의해 생성된 지식 표현들은 추가적인 프로세싱을 수행하는 상이한 디바이스에, 예컨대 네트워크를 통해 제공될 수 있다. 그러한 구현들에서, 이미지들보다는 지식 표현들을 제공하는 것은 기술적 이점을 제공하고, 예컨대 감소된 비용으로 더 빠른 데이터 송신을 가능하게 할 수 있다. 다른 예에서, 문서들을 클러스터화하기 위해 트레이닝된 모델은 입력 문서들로부터 문서 클러스터들을 생성할 수 있다. 문서 클러스터들은 오리지널 문서에 액세스할 필요 없는 추가적인 프로세싱(예컨대, 문서가 토픽(topic)에 관련되는지 여부를 결정하는 것, 문서에 대한 분류 카테고리를 결정하는 것 등)에 적합하며, 따라서 계산 비용을 절약할 수 있다.
[0136] 일부 구현들에서, 기계-학습 애플리케이션(630)은 오프라인 방식으로 구현될 수 있다. 이들 구현들에서, 트레이닝된 모델(634)은 제1 스테이지에서 생성되고, 기계-학습 애플리케이션(630)의 일부로서 제공될 수 있다. 일부 구현들에서, 기계-학습 애플리케이션(630)은 온라인 방식으로 구현될 수 있다. 예컨대, 그러한 구현들에서, 기계-학습 애플리케이션(630)을 인보크시키는 애플리케이션(예컨대, 운영 시스템(608), 다른 애플리케이션들(612) 중 하나 이상)은 기계-학습 애플리케이션(630)에 의해 생성된 추론을 이용하고, 예컨대 추론을 사용자에게 제공할 수 있으며, 시스템 로그들(예컨대, 사용자에 의해 허가되면, 추론에 기반하여 사용자에 의해 취해진 액션; 또는 추가적인 프로세싱을 위해 입력으로서 이용되면, 추가적인 프로세싱의 결과)을 생성할 수 있다. 시스템 로그들은 주기적으로, 예컨대 시간별, 월별, 분기별 등으로 생성될 수 있으며, 트레이닝된 모델(634)을 업데이트하기 위해, 예컨대 트레이닝된 모델(634)에 대한 임베딩들을 업데이트하기 위해 사용자 허가 하에서 사용될 수 있다.
[0137] 일부 구현들에서, 기계-학습 애플리케이션(630)은, 기계-학습 애플리케이션(630)이 실행되는 디바이스(600)의 특정 구성에 적응될 수 있는 방식으로 구현될 수 있다. 예컨대, 기계-학습 애플리케이션(630)은 이용가능한 계산 자원들, 예컨대 프로세서(602)를 이용하는 계산 그래프를 결정할 수 있다. 예컨대, 기계-학습 애플리케이션(630)이 다수의 디바이스들 상의 분산 애플리케이션으로서 구현되면, 기계-학습 애플리케이션(630)은 계산을 최적화하는 방식으로 개별 디바이스들 상에서 수행될 계산들을 결정할 수 있다. 다른 예에서, 기계-학습 애플리케이션(630)은, 프로세서(602)가 특정 수(예컨대, 1000개)의 GPU 코어들을 갖는 GPU를 포함한다고 결정하고, 그에 따라 (예컨대, 1000개의 개별 프로세스들 또는 스레드들로서) 추론 엔진을 구현할 수 있다.
[0138] 일부 구현들에서, 기계-학습 애플리케이션(630)은 트레이닝된 모델들의 앙상블(ensemble)을 구현할 수 있다. 예컨대, 트레이닝된 모델(634)은 동일한 입력 데이터에 각각 적용가능한 복수의 트레이닝된 모델들을 포함할 수 있다. 이들 구현들에서, 기계-학습 애플리케이션(630)은, 예컨대 이용가능한 계산 자원들, 이전의 추론들에 대한 성공률 등에 기반하여 특정 트레이닝된 모델을 선택할 수 있다. 일부 구현들에서, 기계-학습 애플리케이션(630)은, 복수의 트레이닝된 모델들이 적용되도록 추론 엔진(636)을 실행할 수 있다. 이들 구현들에서, 기계-학습 애플리케이션(630)은, 예컨대 각각의 트레이닝된 모델을 적용한 것으로부터의 개별 출력들을 스코어링하는 선출-기법(voting-technique)을 사용하여 또는 하나 이상의 특정 출력들을 선택함으로써, 개별 모델들을 적용한 것으로부터의 출력들을 조합할 수 있다. 추가로, 이들 구현들에서, 기계-학습 애플리케이션은, 개별 트레이닝된 모델들을 적용하기 위한 시간 임계치(예컨대, 0.5ms)를 적용하고, 시간 임계치 내에서 이용가능한 이들 개별 출력들만을 이용할 수 있다. 시간 임계치 내에서 수신되지 않은 출력들은 이용되지 않고, 예컨대 폐기될 수 있다. 예컨대, 그러한 접근법들은, 예컨대 운영 시스템(608) 또는 하나 이상의 애플리케이션들(612)에 의해 기계-학습 애플리케이션을 인보크시키는 동안 특정된 시간 제한이 존재하는 경우 적합할 수 있다.
[0139] 상이한 구현들에서, 기계-학습 애플리케이션(630)은 상이한 타입들의 출력들을 생성할 수 있다. 예컨대, 기계-학습 애플리케이션(630)은 표현들 또는 클러스터들(예컨대, 입력 데이터의 수치 표현들), (예컨대, 이미지들, 문서들 등을 포함하는 입력 데이터에 대한) 라벨들, (예컨대, 이미지 또는 비디오를 설명하거나, 입력 문장에 대한 응답으로서의 사용에 적합하는 등의) 어구들 또는 문장들, (예컨대, 입력에 대한 응답으로 기계-학습 애플리케이션에 의해 생성된) 이미지들, 오디오 또는 비디오(예컨대, 입력 비디오에 대한 응답으로, 트레이닝된 모델(634)이 코믹 북 또는 특정 아티스트로부터의 트레이닝 데이터를 사용하여 트레이닝되는 경우, 기계-학습 애플리케이션(630)은 특정 효과가 적용된, 예컨대 코믹-북 또는 특정 아티스트의 스타일로 렌더링된 출력 비디오를 생성할 수 있음 등)를 제공할 수 있다. 일부 구현들에서, 기계-학습 애플리케이션(630)은 인보크 애플리케이션, 예컨대 운영 시스템(608) 또는 하나 이상의 애플리케이션들(612)에 의해 특정된 포맷에 기반하여 출력을 생성할 수 있다. 일부 구현들에서, 인보크 애플리케이션은 다른 기계-학습 애플리케이션일 수 있다. 예컨대, 그러한 구성들은 생성적 적대 네트워크(generative adversarial network)들에서 사용될 수 있으며, 여기서 인보크 기계-학습 애플리케이션은 기계-학습 애플리케이션(630)으로부터의 출력을 사용하여 트레이닝되고 그 반대의 경우도 마찬가지이다.
[0140] 대안적으로, 메모리(604) 내의 소프트웨어 중 임의의 소프트웨어가 임의의 다른 적합한 저장 위치 또는 컴퓨터-판독가능 매체 상에 저장될 수 있다. 부가적으로, 메모리(604)(및/또는 다른 연결된 저장 디바이스(들))는 하나 이상의 이미지들, 메시지들, 하나 이상의 분류체계(taxonomy)들, 전자 백과사전, 사전들, 시소러스(thesaurus)들, 지식 기반들, 메시지 데이터, 문법들, 사용자 선호도들, 및/또는 본원에 설명된 특징들에서 사용된 다른 명령들 및 데이터를 저장할 수 있다. 메모리(604) 및 임의의 다른 타입의 저장소(자기 디스크, 광학 디스크, 자기 테이프, 또는 다른 유형의(tangible) 미디어들)가 "저장소" 또는 "저장 디바이스들"로 고려될 수 있다.
[0141] I/O 인터페이스(606)는 서버 디바이스(600)를 다른 시스템들 및 디바이스들과 인터페이싱하는 것을 가능하게 하기 위한 기능들을 제공할 수 있다. 인터페이싱된 디바이스들은 디바이스(600)의 일부로서 포함될 수 있거나 또는 별개이고 디바이스(600)와 통신할 수 있다. 예컨대, 네트워크 통신 디바이스들, 저장 디바이스들(예컨대, 메모리 및/또는 데이터베이스(106)), 및 입력/출력 디바이스들은 I/O 인터페이스(606)를 통해 통신할 수 있다. 일부 구현들에서, I/O 인터페이스는, 입력 디바이스들(키보드, 포인팅 디바이스, 터치스크린, 마이크로폰, 카메라, 스캐너, 센서들 등) 및/또는 출력 디바이스들(디스플레이 디바이스들, 스피커 디바이스들, 프린터들, 모터들 등)과 같은 인터페이스 디바이스들에 연결될 수 있다.
[0142] I/O 인터페이스(606)에 연결될 수 있는 인터페이싱된 디바이스들의 일부 예들은 콘텐츠, 예컨대 이미지들, 비디오, 및/또는 본원에 설명된 바와 같은 출력 애플리케이션의 사용자 인터페이스를 디스플레이하는 데 사용될 수 있는 하나 이상의 디스플레이 디바이스들(620)을 포함할 수 있다. 디스플레이 디바이스(620)는 로컬 연결들(예컨대, 디스플레이 버스)을 통해 그리고/또는 네트워킹된 연결들을 통해 디바이스(600)에 연결될 수 있고 임의의 적합한 디스플레이 디바이스일 수 있다. 디스플레이 디바이스(620)는 임의의 적합한 디스플레이 디바이스, 이를테면 LCD, LED, 또는 플라즈마 디스플레이 스크린, CRT, 텔레비전, 모니터, 터치스크린, 3-D 디스플레이 스크린, 또는 다른 시각적 디스플레이 디바이스를 포함할 수 있다. 예컨대, 디스플레이 디바이스(620)는 모바일 디바이스 상에 제공되는 평면 디스플레이 스크린, 고글들 또는 헤드셋 디바이스에 제공되는 다수의 디스플레이 스크린들, 또는 컴퓨터 디바이스에 대한 모니터 스크린일 수 있다.
[0143] I/O 인터페이스(606)는 다른 입력 및 출력 디바이스들에 인터페이싱될 수 있다. 일부 예들은 이미지들을 캡처할 수 있는 하나 이상의 카메라들을 포함한다. 일부 구현들은 (예컨대, 캡처된 이미지들, 음성 커맨드들 등의 일부로서) 사운드를 캡처하기 위한 마이크로폰, 사운드를 출력하기 위한 오디오 스피커 디바이스들, 또는 다른 입력 및 출력 디바이스들을 제공할 수 있다.
[0144] 예시의 용이함을 위해, 도 6은 프로세서(602), 메모리(604), I/O 인터페이스(606), 및 소프트웨어 블록들(608, 612 및 630) 각각에 대한 하나의 블록을 도시한다. 이들 블록들은 하나 이상의 프로세서들 또는 프로세싱 회로들, 운영 시스템들, 메모리들, I/O 인터페이스들, 애플리케이션들, 및/또는 소프트웨어 모듈들을 표현할 수 있다. 다른 구현들에서, 디바이스(600)는 도시된 컴포넌트들 전부를 갖지는 않을 수 있고 그리고/또는 본원에 도시된 것들 대신 또는 그에 부가하여 다른 타입들의 엘리먼트들을 포함하는 다른 엘리먼트들을 가질 수 있다. 일부 컴포넌트들이 본 명세서의 일부 구현들에서 설명된 바와 같이 블록들 및 동작들을 수행하는 것으로 설명되지만, 환경(100), 디바이스(600), 유사한 시스템들의 컴포넌트들 중 임의의 적합한 컴포넌트 또는 그들의 조합, 또는 그러한 시스템과 연관된 임의의 적합한 프로세서 또는 프로세서들이 설명된 블록들 및 동작들을 수행할 수 있다.
[0145] 본원에 설명된 방법들은 컴퓨터 상에서 실행될 수 있는 컴퓨터 프로그램 명령들 또는 코드에 의해 구현될 수 있다. 예컨대, 코드는 하나 이상의 디지털 프로세서들(예컨대, 마이크로프로세서들 또는 다른 프로세싱 회로)에 의해 구현될 수 있으며, 반도체 또는 솔리드 스테이트 메모리, 자기 테이프, 착탈형 컴퓨터 디스켓, RAM(random access memory), ROM(read-only memory), 플래시 메모리, 강성 자기 디스크, 광학 디스크, 솔리드-스테이트 메모리 드라이브 등을 포함하는 비-일시적인 컴퓨터 판독가능 매체(예컨대, 저장 매체), 이를테면 자기, 광학, 전자기, 또는 반도체 저장 매체를 포함하는 컴퓨터 프로그램 제품 상에 저장될 수 있다. 프로그램 명령들은 또한, 예컨대, 서버(예컨대, 분산형 시스템 및/또는 클라우드 컴퓨팅 시스템)로부터 전달된 SaaS(software as a service)의 형태로 전자 신호에 포함될 수 있고, 전자 신호로서 제공될 수 있다. 대안적으로, 하나 이상의 방법들은 하드웨어(로직 게이트들 등)로 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 예시적인 하드웨어는 프로그래밍가능 프로세서들(예컨대, FPGA(Field-Programmable Gate Array), 복합 프로그래밍가능 로직 디바이스), 범용 프로세서들, 그래픽 프로세서들, ASIC(Application Specific Integrated Circuit)들 등일 수 있다. 하나 이상의 방법들은, 시스템 상에서 구동되는 애플리케이션의 일부 또는 컴포넌트로서, 또는 다른 애플리케이션들 및 운영 시스템과 함께 구동되는 애플리케이션 또는 소프트웨어로서 수행될 수 있다.
[0146] 설명이 설명의 특정한 구현들에 관해 설명되었지만, 이들 특정한 구현들은 제한이 아니라 단지 예시적일 뿐이다. 예들에 예시된 개념들은 다른 예들 및 구현들에 적용될 수 있다.
[0147] 본 개시내용에 설명된 기능 블록들, 동작들, 특징들, 방법들, 디바이스들, 및 시스템들은 당업자들에게 알려진 바와 같이, 통합되거나 또는 시스템들, 디바이스들, 및 기능 블록들의 상이한 조합들로 분할될 수 있음을 유의한다. 임의의 적합한 프로그래밍 언어 및 프로그래밍 기법들이 특정한 구현들의 루틴들을 구현하기 위해 사용될 수 있다. 상이한 프로그래밍 기법들, 예컨대, 절차적 또는 객체-지향적인 기법들이 이용될 수 있다. 루틴들은 단일 프로세싱 디바이스 또는 다수의 프로세서들 상에서 실행될 수 있다. 단계들, 동작들, 또는 계산들이 특정 순서로 제시될 수 있지만, 순서는 상이한 특정 구현들에서 변경될 수 있다. 일부 구현들에서, 본 명세서에서 순차적인 것으로 나타낸 다수의 단계들 또는 동작들은 동시에 수행될 수 있다.

Claims (20)

  1. 적어도 하나의 프로세서에 의해 수행되는 방법으로서,
    이미지 라이브러리(image library) 내의 하나 이상의 제1 이미지들의 선택을 나타내는 제1 사용자 입력을 수신하는 단계;
    상기 하나 이상의 제1 이미지들의 하나 이상의 제1 이미지 특징(characteristic)들을 결정하는 단계;
    상기 하나 이상의 제1 이미지들의 이미지 선택의 콘텍스트가 소프트웨어 애플리케이션으로 이미지들을 제공하는 것이라고 결정하는 단계;
    상기 이미지 라이브러리에서 하나 이상의 제2 이미지들을 식별하는 단계 ― 상기 하나 이상의 제2 이미지들 각각은, 상기 하나 이상의 제1 이미지 특징들 중 적어도 하나와 매칭하는 적어도 하나의 제2 이미지 특징 및 상기 소프트웨어 애플리케이션의 콘텍스트와 연관됨 ―; 및
    사용자 인터페이스가 디스플레이되게 하는 단계를 포함하고,
    상기 사용자 인터페이스는 상기 하나 이상의 제2 이미지들을 포함하고, 그리고 상기 사용자 인터페이스는 상기 하나 이상의 제2 이미지들의 선택을 가능하게 하는,
    방법.
  2. 제1항에 있어서,
    상기 하나 이상의 제2 이미지들 중 적어도 하나의 제2 이미지의 선택을 나타내는 제2 사용자 입력을 수신하는 단계;
    상기 제2 사용자 입력을 수신하는 것에 대한 응답으로, 상기 하나 이상의 제2 이미지들 중 상기 적어도 하나의 제2 이미지의 하나 이상의 제2 이미지 특징들을 결정하는 단계;
    상기 이미지 라이브러리에서 하나 이상의 제3 이미지들을 식별하는 단계 ― 상기 하나 이상의 제3 이미지들 각각은, 상기 하나 이상의 제1 이미지 특징들 중 적어도 하나 및 상기 하나 이상의 제2 이미지 특징들 중 적어도 하나와 매칭하는 적어도 하나의 제3 이미지 특징과 연관됨 ―; 및
    업데이트된 사용자 인터페이스가 디스플레이되게 하는 단계를 더 포함하고,
    상기 업데이트된 사용자 인터페이스는 상기 하나 이상의 제3 이미지들을 포함하고, 그리고 상기 업데이트된 사용자 인터페이스는 상기 하나 이상의 제3 이미지들의 선택을 가능하게 하는,
    방법.
  3. 제2항에 있어서,
    이미지 앨범을 생성하는 단계를 더 포함하고,
    상기 이미지 앨범은 상기 하나 이상의 제1 이미지들, 및 상기 하나 이상의 제2 이미지들 중 상기 적어도 하나의 제2 이미지를 포함하는,
    방법.
  4. 제1항에 있어서,
    상기 하나 이상의 제2 이미지들 중 적어도 하나의 제2 이미지의 선택을 나타내는 제2 사용자 입력을 수신하는 단계; 및
    이미지 모음(image collage)을 생성하는 단계를 더 포함하고,
    상기 이미지 모음은 상기 하나 이상의 제1 이미지들, 및 상기 하나 이상의 제2 이미지들 중 상기 적어도 하나의 제2 이미지를 포함하는,
    방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 하나 이상의 제1 이미지 특징들을 결정하는 단계는, 상기 하나 이상의 제1 이미지들 중 적어도 하나가 흐릿하다고 결정하는 단계를 포함하고, 그리고
    상기 하나 이상의 제2 이미지들을 식별하는 단계는, 상기 하나 이상의 제2 이미지들의 흐릿함(blurriness)에 기반하여 상기 하나 이상의 제2 이미지들 각각을 식별하는 단계를 포함하는,
    방법.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 하나 이상의 제1 이미지 특징들을 결정하는 단계는, 상기 하나 이상의 제1 이미지들 중 적어도 하나와 연관된 위치를 결정하는 단계를 포함하고, 그리고
    상기 하나 이상의 제2 이미지들을 식별하는 단계는, 상기 하나 이상의 제1 이미지들 중 적어도 하나와 연관된 위치의 임계 거리 내에 있는 개개의 위치와 연관되는 이미지들을 상기 이미지 라이브러리로부터 선택하는 단계를 포함하는,
    방법.
  7. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 하나 이상의 제2 이미지들은 복수의 제2 이미지들이고,
    상기 사용자 인터페이스가 디스플레이되게 하는 단계는, 상기 복수의 제2 이미지들 중 제1 그룹이 상기 사용자 인터페이스의 제1 부분에 디스플레이되고 상기 복수의 제2 이미지들 중 제2 그룹이 상기 사용자 인터페이스의 제2 부분에 디스플레이되도록 하는 단계를 포함하고,
    상기 제1 그룹은 상기 제2 그룹보다 상기 하나 이상의 제1 이미지들과 더 큰 정도로 매칭되고,
    상기 제1 그룹은 상기 제2 이미지들 중 상기 하나 이상의 제1 이미지들의 특징들을 갖는 적어도 하나의 이미지를 포함하고,
    상기 제2 그룹은 상기 제2 이미지들 중, 상기 하나 이상의 제1 이미지들의 이미지 생김새 특징(image feature characteristic) 또는 위치 특징 중 단 하나와 매칭하는 특징을 갖는 적어도 하나의 이미지를 포함하는,
    방법.
  8. 삭제
  9. 삭제
  10. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 하나 이상의 제2 이미지들은 상기 하나 이상의 제1 이미지들 중 적어도 하나의 제1 이미지의 복제물들인,
    방법.
  11. 적어도 하나의 프로세서에 의해 수행되는 방법으로서,
    이미지 라이브러리 내의 하나 이상의 제1 이미지들의 선택을 나타내는 제1 사용자 입력을 수신하는 단계;
    상기 하나 이상의 제1 이미지들의 하나 이상의 제1 이미지 특징들을 결정하는 단계;
    상기 이미지 라이브러리에서 하나 이상의 제2 이미지들을 식별하는 단계 ― 상기 하나 이상의 제2 이미지들 각각은, 상기 하나 이상의 제1 이미지 특징들 중 적어도 하나와 매칭하는 적어도 하나의 제2 이미지 특징과 연관됨 ―; 및
    사용자 인터페이스가 디스플레이되게 하는 단계 ― 상기 사용자 인터페이스는 상기 하나 이상의 제2 이미지들을 포함하고, 상기 사용자 인터페이스는 상기 하나 이상의 제2 이미지들의 선택을 가능하게 함 ―;
    상기 하나 이상의 제2 이미지들 중 적어도 하나의 제2 이미지의 선택을 나타내는 제2 사용자 입력을 수신하는 단계;
    상기 하나 이상의 제1 이미지들 및 상기 하나 이상의 제2 이미지들 중 상기 적어도 하나의 제2 이미지에 기반하여, 상기 하나 이상의 제1 이미지들 및 상기 하나 이상의 제2 이미지들 중 상기 적어도 하나의 제2 이미지와 연관된 제안된 액션을 결정하고, 대응하는 제안된 액션 엘리먼트가 상기 사용자 인터페이스에 디스플레이되게 하는 단계; 및
    상기 대응하는 제안된 액션 엘리먼트의 사용자 선택에 응답하여, 상기 하나 이상의 제1 이미지들, 상기 하나 이상의 제2 이미지들 중 상기 적어도 하나의 제2 이미지, 및 상기 이미지 라이브러리 중 상기 하나 이상의 제1 이미지 특징들을 갖는 하나 이상의 부가적인 이미지들에 대해 상기 제안된 액션을 실행하는 단계를 포함하는,
    방법.
  12. 제11항에 있어서,
    상기 제안된 액션은, 상기 선택된 이미지들 및 상기 하나 이상의 부가적인 이미지들을 삭제하는 것, 또는 상기 선택된 이미지들 및 상기 하나 이상의 부가적인 이미지들의 자동 화질 향상(automatic enhancement)을 수행하는 것 중 하나 이상을 포함하는,
    방법.
  13. 적어도 하나의 프로세서에 의해 수행되는 방법으로서,
    소프트웨어 애플리케이션을 나타내는 콘텍스트 정보를 결정하는 단계 ― 상기 소프트웨어 애플리케이션으로부터 이미지 선택을 위한 사용자 인터페이스가 개시(initiate)됨 ―;
    상기 콘텍스트 정보에 적어도 부분적으로 기반하여, 이미지 라이브러리에서 하나 이상의 제1 이미지들을 식별하는 단계;
    상기 사용자 인터페이스가 디스플레이되게 하는 단계 ― 상기 사용자 인터페이스는 상기 하나 이상의 제1 이미지들을 포함하고, 그리고 상기 사용자 인터페이스는 상기 하나 이상의 제1 이미지들의 선택을 가능하게 함 ―;
    상기 하나 이상의 제1 이미지들 중 적어도 하나의 이미지의 선택을 나타내는 제1 사용자 입력을 수신하는 단계; 및
    상기 제1 사용자 입력을 수신하는 것에 대한 응답으로, 상기 적어도 하나의 이미지를 상기 소프트웨어 애플리케이션에 제공하는 단계를 포함하는,
    방법.
  14. 제13항에 있어서,
    상기 적어도 하나의 이미지의 하나 이상의 제1 이미지 특징들을 결정하는 단계;
    상기 이미지 라이브러리에서 하나 이상의 제2 이미지들을 식별하는 단계 ― 상기 하나 이상의 제2 이미지들 각각은 상기 하나 이상의 제1 이미지 특징들 중 적어도 하나를 가짐 ―; 및
    업데이트된 사용자 인터페이스가 디스플레이되게 하는 단계를 더 포함하고,
    상기 업데이트된 사용자 인터페이스는 상기 하나 이상의 제2 이미지들을 포함하고, 그리고 상기 사용자 인터페이스는 상기 하나 이상의 제2 이미지들의 선택을 가능하게 하는,
    방법.
  15. 제13항 또는 제14항에 있어서,
    상기 콘텍스트 정보를 결정하는 단계는 상기 소프트웨어 애플리케이션의 애플리케이션 타입을 결정하는 단계를 포함하는,
    방법.
  16. 제15항에 있어서,
    상기 애플리케이션 타입은 이미지 공유 애플리케이션을 포함하고, 그리고
    상기 하나 이상의 제1 이미지들을 식별하는 단계는:
    품질 임계치를 충족시키는 상기 하나 이상의 제1 이미지들을 상기 이미지 라이브러리로부터 선택하는 단계를 포함하는,
    방법.
  17. 제15항에 있어서,
    상기 애플리케이션 타입은 금융 애플리케이션을 포함하고, 그리고
    상기 하나 이상의 제1 이미지들을 식별하는 단계는:
    상기 이미지 라이브러리로부터 상기 하나 이상의 제1 이미지들을 선택하는 단계를 포함하고,
    상기 하나 이상의 제1 이미지들은, 영수증, 문서, 또는 스크린샷 중 하나 이상을 포함하는 이미지 라벨과 연관되는,
    방법.
  18. 제15항에 있어서,
    상기 애플리케이션 타입은 메시징 애플리케이션을 포함하고, 그리고
    상기 콘텍스트 정보를 결정하는 단계는, 상기 메시징 애플리케이션의 메시징 대화의 참여자들의 식별 정보를 수신하는 단계를 더 포함하고, 그리고
    상기 하나 이상의 제1 이미지들을 식별하는 단계는:
    상기 메시징 대화의 상기 참여자들 중 적어도 한 명을 묘사하는 이미지들을 상기 이미지 라이브러리로부터 선택하는 단계를 포함하는,
    방법.
  19. 제13항 또는 제14항에 있어서,
    상기 콘텍스트 정보를 결정하는 단계는 상기 소프트웨어 애플리케이션으로부터 애플리케이션 콘텍스트를 수신하는 단계를 포함하고,
    상기 하나 이상의 제1 이미지들을 식별하는 단계는:
    상기 애플리케이션 콘텍스트에 기반하여 하나 이상의 시맨틱 개념(semantic concept)들을 결정하는 단계; 및
    상기 하나 이상의 제1 이미지들을 선택하는 단계를 포함하고,
    상기 하나 이상의 제1 이미지들 각각의 적어도 하나의 이미지 특징은 상기 하나 이상의 시맨틱 개념들 중 적어도 하나와 매칭하는,
    방법.
  20. 명령들이 저장된 비-일시적인 컴퓨터-판독 가능 매체로서,
    상기 명령들은, 하나 이상의 하드웨어 프로세서들에 의해 실행될 때, 상기 하나 이상의 하드웨어 프로세서들로 하여금, 동작들을 수행하게 하고, 상기 동작들은:
    이미지 라이브러리 내의 하나 이상의 제1 이미지들의 선택을 나타내는 제1 사용자 입력을 수신하는 것;
    상기 하나 이상의 제1 이미지들의 하나 이상의 제1 이미지 특징들을 결정하는 것;
    상기 이미지 라이브러리에서 하나 이상의 제2 이미지들을 식별하는 것 ― 상기 하나 이상의 제2 이미지들 각각은, 상기 하나 이상의 제1 이미지 특징들 중 적어도 하나와 매칭하는 적어도 하나의 제2 이미지 특징과 연관됨 ―;
    사용자 인터페이스가 디스플레이되게 하는 것 ― 상기 사용자 인터페이스는 상기 하나 이상의 제2 이미지들을 포함하고, 그리고 상기 사용자 인터페이스는 상기 하나 이상의 제2 이미지들의 선택을 가능하게 함 ―;
    상기 하나 이상의 제2 이미지들 중 적어도 하나의 제2 이미지의 선택을 나타내는 제2 사용자 입력을 수신하는 것;
    상기 하나 이상의 제1 이미지들, 및 상기 하나 이상의 제2 이미지들 중 상기 적어도 하나의 제2 이미지에 기반하여, 제안된 액션 엘리먼트가 상기 사용자 인터페이스에서 디스플레이되게 하는 것; 및
    상기 제안된 액션 엘리먼트의 사용자 선택을 수신하는 것에 대한 응답으로, 상기 제안된 액션 엘리먼트와 연관된 액션을 수행하는 것을 포함하고,
    상기 액션은 상기 하나 이상의 제1 이미지들, 및 상기 하나 이상의 제2 이미지들 중 상기 적어도 하나의 제2 이미지를 아카이빙하는 것, 상기 하나 이상의 제1 이미지들, 및 상기 하나 이상의 제2 이미지들 중 상기 적어도 하나의 제2 이미지를 삭제하는 것, 상기 하나 이상의 제1 이미지들, 및 상기 하나 이상의 제2 이미지들 중 상기 적어도 하나의 제2 이미지를 포함하는 이미지-기반 창작물을 생성하는 것, 또는 상기 하나 이상의 제1 이미지들, 및 상기 하나 이상의 제2 이미지들 중 상기 적어도 하나의 제2 이미지의 자동 화질 향상을 수행하는 것 중 하나 이상을 포함하는,
    비-일시적인 컴퓨터-판독 가능 매체.
KR1020207015395A 2017-12-22 2018-12-21 이미지 선택 제안들 KR102437640B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762609543P 2017-12-22 2017-12-22
US62/609,543 2017-12-22
PCT/US2018/067242 WO2019126723A1 (en) 2017-12-22 2018-12-21 Image selection suggestions

Publications (2)

Publication Number Publication Date
KR20200080287A KR20200080287A (ko) 2020-07-06
KR102437640B1 true KR102437640B1 (ko) 2022-08-26

Family

ID=65139199

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207015395A KR102437640B1 (ko) 2017-12-22 2018-12-21 이미지 선택 제안들

Country Status (6)

Country Link
US (1) US11775139B2 (ko)
EP (2) EP4239498A3 (ko)
JP (2) JP7158478B2 (ko)
KR (1) KR102437640B1 (ko)
CN (1) CN110678861B (ko)
WO (1) WO2019126723A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6590329B1 (ja) * 2019-06-26 2019-10-16 株式会社ラディウス・ファイブ 画像表示システム及びプログラム
JPWO2022070825A1 (ko) * 2020-09-30 2022-04-07
KR102628773B1 (ko) 2021-06-21 2024-01-23 주식회사 카카오 이모티콘 추천 방법 및 이모티콘 추천을 제공하는 사용자 단말
CN117716353A (zh) * 2021-07-30 2024-03-15 富士胶片株式会社 数据创建装置、存储装置、数据处理系统、数据创建方法及程序
US20230095027A1 (en) * 2021-09-24 2023-03-30 Deep Sentinel Corp. System and method for reducing surveillance detection errors
CN117321586A (zh) * 2022-04-29 2023-12-29 北京小米移动软件有限公司 图像处理方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120020576A1 (en) * 2008-10-03 2012-01-26 Peter Thomas Fry Interactive image selection method
US20140244514A1 (en) * 2013-02-26 2014-08-28 Digimarc Corporation Methods and arrangements for smartphone payments and transactions
US20140372951A1 (en) * 2013-06-13 2014-12-18 Yahoo! Inc. Systems and methods for image-based recommendations
US20150301695A1 (en) * 2014-04-22 2015-10-22 Google Inc. Providing a thumbnail image that follows a main image
US20160042253A1 (en) * 2014-08-05 2016-02-11 Sri International Multi-Dimensional Realization of Visual Content of an Image Collection

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0973530A (ja) * 1995-09-01 1997-03-18 Sharp Corp 画像ファイリング装置
JP2003248699A (ja) * 2002-02-26 2003-09-05 Minolta Co Ltd 画像管理サーバおよびプログラム
JP4279083B2 (ja) * 2003-08-18 2009-06-17 富士フイルム株式会社 画像処理方法および装置、並びに画像処理プログラム
US7860319B2 (en) * 2005-05-11 2010-12-28 Hewlett-Packard Development Company, L.P. Image management
JP4929723B2 (ja) * 2006-01-16 2012-05-09 株式会社ニコン 検索装置及び検索プログラム
US7668867B2 (en) * 2006-03-17 2010-02-23 Microsoft Corporation Array-based discovery of media items
US20150161175A1 (en) * 2008-02-08 2015-06-11 Google Inc. Alternative image queries
US8589402B1 (en) * 2008-08-21 2013-11-19 Adobe Systems Incorporated Generation of smart tags to locate elements of content
JP2010146201A (ja) * 2008-12-17 2010-07-01 Noritsu Koki Co Ltd 画像処理装置、画像形成装置、画像処理方法及び画像処理プログラム
US8422794B2 (en) * 2009-07-30 2013-04-16 Intellectual Ventures Fund 83 Llc System for matching artistic attributes of secondary image and template to a primary image
US9153056B2 (en) 2013-03-07 2015-10-06 Shutterfly, Inc. Adaptive and fast image collage creation
JP5204208B2 (ja) * 2010-12-21 2013-06-05 株式会社富士通マーケティング レシートデータ照合支援装置およびレシートデータ照合支援プログラム
US8909625B1 (en) 2011-06-02 2014-12-09 Google Inc. Image search
US20130125069A1 (en) 2011-09-06 2013-05-16 Lubomir D. Bourdev System and Method for Interactive Labeling of a Collection of Images
JP5485254B2 (ja) * 2011-12-19 2014-05-07 富士フイルム株式会社 画像整理装置および方法ならびにプログラム
JP6101896B2 (ja) * 2012-01-11 2017-03-29 ノーリツプレシジョン株式会社 画像処理プログラムおよび画像処理装置
US20130239063A1 (en) * 2012-03-06 2013-09-12 Apple Inc. Selection of multiple images
US9247309B2 (en) * 2013-03-14 2016-01-26 Google Inc. Methods, systems, and media for presenting mobile content corresponding to media content
CN103338256B (zh) 2013-06-28 2015-09-23 腾讯科技(深圳)有限公司 图片共享方法、装置、服务器及系统
JP2015069277A (ja) * 2013-09-27 2015-04-13 株式会社ニコン 画像選択装置及びプログラム
US9542417B2 (en) * 2013-11-27 2017-01-10 Eagle View Technologies, Inc. Preferred image retrieval
AU2015214298B2 (en) 2014-02-10 2018-05-10 Google Llc Smart camera user interface
US9390472B2 (en) 2014-03-07 2016-07-12 Fractograf, LLC Systems and methods for generating an interactive mosaic comprising user visual content data on a portable terminal and an image sharing platform
US9524540B2 (en) * 2014-07-22 2016-12-20 Adobe Systems Incorporated Techniques for automatically correcting groups of images
JP6149015B2 (ja) * 2014-09-10 2017-06-14 富士フイルム株式会社 画像処理装置、画像処理方法、プログラムおよび記録媒体
WO2016109450A1 (en) 2014-12-29 2016-07-07 Neon Labs Inc. Selecting a high-valence representative image
US20170249339A1 (en) 2016-02-25 2017-08-31 Shutterstock, Inc. Selected image subset based search
US11227017B2 (en) * 2016-05-17 2022-01-18 Google Llc Providing suggestions for interaction with an automated assistant in a multi-user message exchange thread
CN106021455A (zh) 2016-05-17 2016-10-12 乐视控股(北京)有限公司 图像特征关系的匹配方法、装置和系统
CN109952572B (zh) 2016-09-20 2023-11-24 谷歌有限责任公司 基于消息贴纸的建议响应
US10140675B2 (en) 2016-11-28 2018-11-27 Google Llc Image grid with selectively prominent images
US20180164990A1 (en) * 2016-12-14 2018-06-14 Facebook, Inc. Methods and Systems for Editing Content of a Personalized Video
WO2018212822A1 (en) 2017-05-16 2018-11-22 Google Inc. Suggested actions for images
US11163819B2 (en) * 2017-10-23 2021-11-02 Adobe Inc. Image search and retrieval using object attributes
US10891526B2 (en) 2017-12-22 2021-01-12 Google Llc Functional image archiving

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120020576A1 (en) * 2008-10-03 2012-01-26 Peter Thomas Fry Interactive image selection method
US20140244514A1 (en) * 2013-02-26 2014-08-28 Digimarc Corporation Methods and arrangements for smartphone payments and transactions
US20140372951A1 (en) * 2013-06-13 2014-12-18 Yahoo! Inc. Systems and methods for image-based recommendations
US20150301695A1 (en) * 2014-04-22 2015-10-22 Google Inc. Providing a thumbnail image that follows a main image
US20160042253A1 (en) * 2014-08-05 2016-02-11 Sri International Multi-Dimensional Realization of Visual Content of an Image Collection

Also Published As

Publication number Publication date
EP4239498A2 (en) 2023-09-06
CN110678861A (zh) 2020-01-10
JP2023011633A (ja) 2023-01-24
EP3729294A1 (en) 2020-10-28
KR20200080287A (ko) 2020-07-06
US20220091706A1 (en) 2022-03-24
JP2021504803A (ja) 2021-02-15
JP7158478B2 (ja) 2022-10-21
WO2019126723A1 (en) 2019-06-27
EP4239498A3 (en) 2023-10-04
CN110678861B (zh) 2023-12-08
US11775139B2 (en) 2023-10-03

Similar Documents

Publication Publication Date Title
US11209442B2 (en) Image selection suggestions
US11778028B2 (en) Automatic image sharing with designated users over a communication network
US11574470B2 (en) Suggested actions for images
US11113328B2 (en) Interface elements for directed display of content data items
KR102437640B1 (ko) 이미지 선택 제안들
US11829404B2 (en) Functional image archiving
KR102574279B1 (ko) 검색/생성된 디지털 미디어 파일을 기반으로 잠재적 관련성에 대한 주제 예측
US20210271725A1 (en) Systems and methods for managing media feed timelines
EP3948659B1 (en) Automatic generation of people groups and image-based creations

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant