KR20220009456A - 기계 학습을 사용하여 이미지 컬러화 - Google Patents

기계 학습을 사용하여 이미지 컬러화 Download PDF

Info

Publication number
KR20220009456A
KR20220009456A KR1020217041492A KR20217041492A KR20220009456A KR 20220009456 A KR20220009456 A KR 20220009456A KR 1020217041492 A KR1020217041492 A KR 1020217041492A KR 20217041492 A KR20217041492 A KR 20217041492A KR 20220009456 A KR20220009456 A KR 20220009456A
Authority
KR
South Korea
Prior art keywords
image
grayscale
implementations
colored
colored image
Prior art date
Application number
KR1020217041492A
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 KR20220009456A publication Critical patent/KR20220009456A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • 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/217Validation; Performance evaluation; Active pattern learning techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • G06F18/24137Distances to cluster centroïds
    • G06F18/2414Smoothing the distance, e.g. radial basis function networks [RBFN]
    • 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
    • G06N3/0454
    • 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/047Probabilistic or stochastic networks
    • G06N3/0472
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/194Segmentation; Edge detection involving foreground-background segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/90Determination of colour characteristics
    • 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/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • 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/776Validation; Performance evaluation
    • 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
    • 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/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Human Computer Interaction (AREA)
  • Probability & Statistics with Applications (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

본 명세서에 기술된 구현예는 사람을 도시하는 그레이스케일 이미지를 컬러화하기 위해 기계 학습 모델을 트레이닝하고 사용하기 위한 방법, 시스템 및 컴퓨터 판독가능 매체에 관한 것이다. 일부 구현예에서, 컴퓨터로 구현되는 방법은 그레이스케일 이미지를 수신하는 단계를 포함한다. 방법은 트레이닝된 CNN에 입력으로서 그레이스케일 이미지를 제공함으로써 그레이스케일 이미지에 기초하여 컬러화된 이미지를 트레이닝된 CNN(Convolutional Neural Network)의 출력으로서 생성하는 단계를 더 포함한다. 일부 구현예에서, 트레이닝된 CNN은 부분 세그먼트화를 수행하여 사람의 하나 이상의 부분을 검출하고 그레이스케일 이미지를 컬러화한다.

Description

기계 학습을 사용하여 이미지 컬러화
카메라가 처음 등장한 이후로, 사용자들은 추억을 보존하기 위해 사진을 찍어왔다. 사진 초창기에 촬영된 사진은 카메라 기술의 한계, 컬러 사진을 찍는 것의 높은 비용 등으로 인해 흑백 이미지였다. 이후, 컬러 사진이 사용가능해지고 저렴해짐에 따라, 사용자들은 컬러 사진을 찍고 저장했다.
최신 이미지 애플리케이션들을 통해 사용자는 사진을 저장하고, 보고, 편집할 수 있다. 많은 사용자들이 최근에 찍은 컬러 사진과 함께 라이브러리에 있는 오래된 흑백 사진의 스캔본을 가지고 있다. 그것들이 컬러 사진으로 렌더링되면, 사용자는 오래된 흑백 사진을 즐길 수 있다.
기계 학습 기반 기법을 비롯한 이미지 컬러화 기법을 사용하여 흑백 이미지를 컬러화할 수 있지만, 이러한 기법을 오래된 흑백 사진, 특히 하나 이상의 사람을 도시하는 사진에 적용하는 경우 좋은 출력의 컬러 이미지를 얻기 어렵다. 예를 들어, 피부 영역이 일관되지 않은 피부 톤 색상을 가져오는 것과 같은 오류; 한 피부 영역, 예를 들어 얼굴이 색을 띠고 있는 반면 다른 영역, 예를 들어 손이 색을 띠지 않는 등은 컬러화된 사진을 불만족스럽게 만들 수 있다.
게다가, 현재의 이미지 컬러화 기법은 오래된 흑백 사진에 도시된 사람들이 종종 새로운 컬러 사진의 사람들과 다른 옷 스타일을 입었다는 사실을 고려하지 않는다. 현재의 이미지 컬러화 기법은 한 명 이상의 사람을 도시하는 흑백 사진에 색상을 추가할 때 이러한 차이를 고려하지 못한다. 이것은 도메인 적응 문제이다.
본 명세서에 제공된 배경기술은 본 발명의 컨텍스트를 일반적으로 제시하기 위한 목적이다. 본 배경기술 섹션에서 기술되는 범위까지 현재 명명된 발명자들의 성과 뿐만 아니라 출원 시점에 선행기술로서 인정되지 않는 기술의 양태들은 본 발명에 대한 선행기술로서 명시적으로 또는 묵시적으로도 인정되지 않는다.
본 명세서에 기술된 구현예는 한 명 이상의 사람을 도시하는 그레이스케일 이미지를 컬러화하기 위해 기계 학습 모델을 트레이닝하고 사용하기 위한 방법, 시스템 및 컴퓨터 판독가능 매체에 관한 것이다.
일부 구현예에서, 컴퓨터로 구현되는 방법은 사람을 포함하는 그레이스케일 이미지를 수신하는 단계를 포함한다. 방법은 트레이닝된 CNN에 입력으로서 그레이스케일 이미지를 제공함으로써 그레이스케일 이미지에 기초하여 컬러화된 이미지를 트레이닝된 CNN(Convolutional Neural Network)의 출력으로서 생성하는 단계를 더 포함한다. 일부 구현예에서, 트레이닝된 CNN은 부분 세그먼트화를 수행하여 사람의 하나 이상의 부분을 검출하고 그레이스케일 이미지를 컬러화한다.
일부 구현예들에서, 상기 컬러화된 이미지를 생성하는 단계는 상기 트레이닝된 CNN의 잠재 레이어의 출력으로서 중간 컬러화된 이미지를 획득하는 단계, 상기 트레이닝된 CNN의 출력 레이어의 출력으로서 네트워크 출력 이미지를 획득하는 단계, 및 상기 컬러화된 이미지를 획득하기 위해 상기 중간 컬러화된 이미지와 상기 네트워크 출력 이미지를 결합하는 단계를 포함한다. 일부 구현예에서, 중간 컬러화된 이미지는 네트워크 출력 이미지보다 낮은 해상도를 갖는다. 이러한 구현예에서, 방법은 상기 결합 전에 상기 중간 컬러화된 이미지를 상기 네트워크 출력 이미지와 동일한 해상도로 업샘플링하는 단계를 포함할 수 있다.
일부 구현예에서, 상기 방법은 상기 트레이닝된 CNN에 대한 입력으로서 상기 그레이스케일 이미지를 제공하기 전에 상기 그레이스케일 이미지를 다운샘플링하는 단계를 더 포함할 수 있다.
일부 구현예에서, 컬러화된 이미지는 그레이스케일 이미지보다 낮은 해상도를 갖는다. 이러한 구현예에서, 상기 방법은 상기 컬러화된 이미지를 상기 그레이스케일 이미지와 동일한 해상도로 업샘플링하는 단계 및 출력 이미지를 획득하기 위해 상기 컬러화된 이미지와 상기 그레이스케일 이미지를 결합하는 단계를 더 포함할 수 있다. 일부 구현예에서, 상기 컬러화된 이미지는 sRGB 이미지일 수 있다.
일부 구현예에서, 그레이스케일 이미지를 컬러화하기 위해 컨벌루션 신경 네트워크를 트레이닝하는 컴퓨터로 구현되는 방법은 하나 이상의 사람을 각각 도시하는 복수의 트레이닝 컬러 이미지들, 대응하는 그레이스케일 트레이닝 이미지들 및 각 트레이닝 컬러 이미지에서 하나 이상의 사람에 대한 부분 주석들을 포함하는 트레이닝 데이터를 제공하는 단계를 포함한다. 상기 방법은 각 그레이스케일 트레이닝 이미지에 대해, 상기 컨볼루션 신경 네트워크의 출력으로서, 상기 그레이스케일 트레이닝 이미지 및 상기 그레이스케일 트레이닝 이미지에서 하나 이상의 사람에 대한 부분 주석들에 기초하여 컬러화된 이미지를 기술하는 출력 피처 벡터를 획득하는 단계를 더 포함한다. 상기 방법은 각 그레이스케일 트레이닝 이미지에 대해, 상기 컬러화된 이미지가 원래 컬러 이미지인지 또는 예측된 컬러 이미지인지 여부의 라벨 예측에 기초하여 픽셀 판별기로부터 지각 손실 값(perceptual loss value)을 획득하는 단계를 더 포함한다. 상기 방법은 각 그레이스케일 트레이닝 이미지에 대해, 상기 지각 손실 값에 기초하여 상기 컨볼루션 신경 네트워크의 파라미터를 수정하는 단계를 더 포함한다.
일부 구현예에서, 컨벌루션 신경 네트워크를 트레이닝하는 방법은 각 그레이스케일 트레이닝 이미지에 대해, 상기 컨볼루션 신경 네트워크의 잠재 레이어로부터, 상기 그레이스케일 트레이닝 이미지 및 상기 그레이스케일 트레이닝 이미지에서 하나 이상의 사람에 대한 중간 부분 주석들에 기초하여 중간 컬러화된 이미지를 기술하는 중간 출력 피처 벡터를 획득하는 단계를 더 포함할 수 있다. 상기 방법은 각 그레이스케일 트레이닝 이미지에 대해, 피처 판별기에 의해, 상기 중간 컬러화된 이미지에 대응하는 실제(groundtruth) 컬러 이미지가 존재하는지 여부의 예측에 기초하여 피처 판별기로부터 피처 손실 값을 획득하는 단계를 더 포함할 수 있다. 이러한 구현예에서, 상기 중간 피처 벡터는 상기 피처 판별기에 대한 입력으로서 제공된다. 상기 방법은 상기 컨볼루션 신경 네트워크의 파라미터를 수정하는 단계는 상기 피처 손실 값에 더 기초하는 것을 더 포함할 수 있다. 일부 구현예에서, 상기 방법은, 상기 중간 컬러화된 이미지를 리사이징하는 단계, 상기 컨볼루션 신경 네트워크의 출력 레이어로부터 네트워크 출력 이미지를 획득하는 단계, 및 상기 컬러화된 이미지를 획득하기 위해 상기 중간 컬러화된 이미지와 상기 네트워크 출력 이미지를 결합하는 단계를 더 포함할 수 있다.
일부 구현예에서, 컨벌루션 신경 네트워크를 트레이닝하는 방법은 각 그레이스케일 트레이닝 이미지에 대해, 채도 인핸서로부터 채도 손실을 획득하는 단계를 더 포함할 수 있다. 이러한 구현예에서, 상기 컨볼루션 신경 네트워크의 파라미터를 수정하는 단계는 상기 채도 손실에 더 기초한다. 일부 구현예에서, 상기 채도 손실을 획득하는 단계는 상기 부분 주석들에 기초하여 상기 컬러화된 이미지의 하나 이상의 배경 영역을 식별하는 단계 및 상기 배경 영역에 있는 것으로 식별된 픽셀들에 대해, 상기 컬러화된 이미지의 채도 및 상기 컬러화된 이미지의 밝기 값에 기초하여 상기 채도 손실을 계산하는 단계를 포함할 수 있다.
일부 구현예에서, 컨벌루션 신경 네트워크를 트레이닝하는 방법은 각 그레이스케일 트레이닝 이미지에 대해, 피부 톤 인핸서로부터 피부 톤 손실을 획득하는 단계를 더 포함할 수 있다. 이러한 구현예에서, 상기 컨볼루션 신경 네트워크의 파라미터를 수정하는 단계는 상기 피부 톤 손실에 더 기초한다. 일부 구현예에서, 상기 피부 톤 손실을 획득하는 단계는 상기 부분 주석들에 기초하여 상기 컬러화된 이미지에서 하나 이상의 실루엣을 식별하는 단계 및 상기 컬러화된 이미지의 색조(hue) 및 상기 픽셀이 상기 컬러화된 이미지의 하나 이상의 실루엣 중 적어도 하나에 있는지 여부에 기초하여 상기 컬러화된 이미지의 각 픽셀에 대한 피부 톤 손실을 계산하는 단계를 포함할 수 있다.
일부 구현예에서, 시스템은 복수의 레이어를 갖는 컨볼루션 신경 네트워크를 구현하는 하나 이상의 프로세서를 포함한다. 컨벌루션 신경 네트워크는 한 명 이상의 사람을 도시하는 그레이스케일 이미지를 수신하고 그레이스케일 이미지에 기초하여 컬러화된 이미지를 생성하는 것을 포함하는 동작을 수행하도록 구성된다. 컬러화된 이미지는 그레이스케일 이미지의 한 명 이상의 사람에 대한 부분 주석들을 포함한다. 하나 이상의 프로세서는 픽셀 판별기를 추가로 구현한다. 픽셀 판별기는 컬러화된 이미지를 수신하고 컬러화된 이미지가 원래 컬러 이미지인지 또는 예측된 컬러 이미지인지 여부를 나타내는 라벨 예측을 생성하는 것을 포함하는 동작을 수행하도록 구성된다.
일부 구현예에서, 컨벌루션 신경 네트워크는 컨벌루션 신경 네트워크의 잠재 레이어에서, 그레이스케일 이미지에 기초하여 중간 컬러화된 이미지를 생성하는 것을 포함할 수 있는 추가 동작을 수행하도록 구성된다. 중간 컬러화된 이미지는 그레이스케일 이미지에서 한 명 이상의 사람에 대한 중간 부분 주석들을 포함한다. 이러한 구현예에서, 하나 이상의 프로세서는 픽셀 판별기를 추가로 구현한다. 픽셀 판별기는 중간 컬러화된 이미지를 수신하고 그레이스케일 이미지에 대응하는 실제 컬러 이미지가 존재하는지 여부를 나타내는 예측을 생성하는 것을 포함하는 동작을 수행하도록 구성된다.
일부 구현예에서, 중간 컬러화된 이미지는 그레이스케일 이미지의 해상도보다 낮은 해상도를 갖는다. 이러한 구현예에서, 컬러화된 이미지를 생성하는 것은 중간 컬러화된 이미지를 그레이스케일 이미지의 해상도로 리사이징하고, 리사이징한 후에 중간 컬러화된 이미지와 컨벌루션 신경 네트워크의 출력 레이어의 네트워크 출력 이미지를 결합하여 컬러화된 이미지를 획득하는 것을 더 포함할 수 있다.
일부 구현예에서, 상기 피처 판별기의 예측은 상기 컨벌루션 신경 네트워크의 하나 이상의 파라미터를 조정함으로써 상기 컨벌루션 신경 네트워크를 트레이닝하는데 사용될 수 있다.
일부 구현예에서, 상기 픽셀 판별기는 상기 이미지들이 실제 컬러 이미지들임을 나타내는 연관된 실제 라벨들을 갖는 복수의 실제 컬러 이미지들을 입력으로서 제공하고, 각 입력 이미지에 대한 라벨 예측과 실제 라벨들 간의 차이에 기초하는 손실을 사용하여 상기 픽셀 판별기의 하나 이상의 파라미터들을 조정함으로써 트레이닝될 수 있다.
일부 구현예에서, 상기 픽셀 판별기는 상기 컬러화된 이미지가 원래 컬러 이미지인지 또는 상기 예측된 컬러 이미지인지 여부를 나타내는 실제 라벨과 상기 라벨 예측을 비교하는 손실에 기초하여 트레이닝될 수 있다.
일부 구현예에서, 상기 픽셀 판별기의 라벨 예측은 상기 컨벌루션 신경 네트워크의 하나 이상의 파라미터를 조정함으로써 상기 컨벌루션 신경 네트워크를 트레이닝하는데 사용될 수 있다.
도 1은 본 명세서에 기술된 하나 이상의 구현예에 대해 사용될 수 있는 예시적 네트워크 환경의 블록도이다.
도 2는 이미지를 컬러화하기 위해 기계 학습 모델을 트레이닝하기 위한 예시적인 GAN(Generative Adversarial Network) 구성(200)을 도시하는 블록도이다.
도 3은 일부 구현예에 따라, 피처 판별기를 트레이닝하기 위한 예시적 방법을 도시하는 흐름도이다.
도 4는 일부 구현예에 따라, 픽셀 판별기를 트레이닝하기 위한 예시적 방법을 도시하는 흐름도이다.
도 5는 일부 구현예에 따라, 컬러라이저를 트레이닝하기 위한 예시적 방법을 도시하는 흐름도이다.
도 6은 일부 구현예에 따라, 트레이닝된 컨볼루션 신경 네트워크를 사용하여 이미지를 컬러화하는 예시적 방법을 도시하는 흐름도이다.
도 7은 본 명세서에 기술된 하나 이상의 구현예에 대해 사용될 수 있는 예시적 디바이스의 블록도이다.
본 명세서에 기술된 구현예는 트레이닝된 기계 학습 모델을 사용하여 그레이스케일 이미지로부터 컬러 이미지를 생성할 수 있다. 기계 학습 모델은 그레이스케일 이미지에 도시된 사람의 하나 이상의 부분을 검출하고 그레이스케일 이미지를 컬러화하기 위해 부분 세그먼트화를 수행하도록 트레이닝될 수 있다.
본 명세서에 기술된 일부 구현예는 부분 세그먼트화 및 이미지 컬러화를 수행할 수 있는 생성 모델을 트레이닝하는데 사용할 수 있는 생성적 대립 네트워크(GAN) 구성에 관한 것이다. GAN 구성은 생성 모델, 예를 들어, 컨볼루션 신경 네트워크과 2개의 대립 모델을 포함할 수 있다. 일부 구현예에서, 생성 모델은 그레이스케일 이미지로부터 컬러화된 이미지를 생성하도록 트레이닝될 수 있다. 제1 대립 모델은 컬러화된 이미지가 실제 컬러 이미지가 존재하는 이미지인지 여부를 결정하기 위해 트레이닝될 수 있다. 일부 구현예에서, 제1 대립 모델은 컨볼루션 신경 네트워크를 사용하여 구현된 생성 모델의 잠재 레이어에서 생성된 중간 컬러화된 이미지를 수신할 수 있다. 일부 구현예에서, 제2 대립 모델은 컬러화된 이미지가 실제 컬러화된 이미지인지 또는 예를 들어 컨볼루션 신경 네트워크의 출력 레이어로부터 생성 모델의 출력으로서 생성된 이미지인지를 결정하도록 트레이닝될 수 있다.
일부 구현예에서, 제1 대립 모델 및 제2 대립 모델에 의해 생성된 손실 값은 생성 모델에 대한 트레이닝 입력으로서 제공된다. 일부 구현예에서, 추가 손실 값은 (예를 들어, 이미지의 배경 영역의) 이미지 채도 및 피부 톤(예를 들어, 이미지에 도시된 한 명 이상의 사람에 대한)과 관련된 휴리스틱에 기초하여 획득될 수 있고, 생성 모델을 트레이닝하는데 사용될 수 있다.
본 명세서에 기술된 일부 구현예는 트레이닝되고 입력 그레이스케일 이미지로부터 컬러 이미지를 생성할 수 있는 생성 기계 학습 모델에 관한 것이다. 기계 학습 모델은 입력 이미지에 도시된 사람의 하나 이상의 부분에 주석을 달고 입력 이미지를 컬러화하기 위해 부분 세그먼트화를 수행하도록 트레이닝될 수 있다. 일부 구현예에서, 기계 학습 모델은 컨벌루션 신경 네트워크(CNN)를 사용하여 구현된다. 일부 구현예에서, 컬러 이미지는 CNN의 잠재 레이어로부터 획득된 중간 컬러화된 이미지를 CNN의 출력 레이어로부터 획득된 네트워크 출력 이미지와 결합함으로써 획득된다.
도 1은 본 명세서에 기술된 일부 구현예에 대해 사용될 수 있는 예시적 네트워크 환경(100)의 블록도를 도시한다. 일부 구현예에서, 네트워크 환경(100)은 하나 이상의 서버 시스템, 예를 들어, 도 1의 예에서 서버 시스템(102) 및 제2 서버 시스템(140)을 포함한다. 서버 시스템(102, 140)은 예를 들어 네트워크(130)와 통신할 수 있다. 서버 시스템(102)은 서버 디바이스(104) 및 데이터베이스(106) 또는 다른 저장 디바이스를 포함할 수 있다. 일부 구현예에서, 서버 디바이스(104)는 이미지 애플리케이션(156b) 및/또는 트레이닝 애플리케이션(158)을 제공할 수 있다. 제2 서버 시스템(140)은 하나 이상의 애플리케이션 예를 들어, 애플리케이션 A(144), 애플리케이션 B(146), 및 애플리케이션 C(148)를 제공하도록 구성된 제2 서버 디바이스(142)를 포함할 수 있다. 도 1 및 나머지 도면에서, 참조 번호 뒤의 문자, 예를 들어 "156a"는 특정한 참조 번호를 갖는 엘리먼트에 대한 참조를 나타낸다. 뒤에 문자가 없는 텍스트 내의 참조 번호, 예를 들어 "156"는 그 참조 번호를 갖는 요소의 실시예에 대한 일반적인 참조를 나타낸다.
네트워크 환경(100)은 또한 네트워크(130)를 통해 서로 및/또는 서버 시스템(102) 및/또는 제2 서버 시스템(140)과 통신할 수 있는 하나 이상의 클라이언트 디바이스, 예를 들어 클라이언트 디바이스(120, 122, 124, 126)를 포함할 수 있다. 네트워크(130)는 인터넷, 근거리 통신망(LAN), 무선 네트워크, 스위치 또는 허브 연결 중 하나 이상을 포함하는 임의의 유형의 통신 네트워크일 수 있다. 일부 구현예에서, 네트워크(130)는 예를 들어, 피어 투 피어 무선 프로토콜(예를 들어, Bluetooth®Wi-Fi Direct 등)을 사용하는 디바이스들 간의 피어 투 피어 통신을 포함할 수 있다. 두 클라이언트 디바이스(120 및 122) 간의 피어 투 피어 통신의 일 예가 화살표(132)에 의해 도시된다.
설명의 편의를 위해, 도 1은 서버 시스템(102), 서버 디바이스(104), 데이터베이스(106), 제2 서버 시스템(140) 및 제2 서버 디바이스(142)에 대한 하나의 블록을 나타내고, 클라이언트 디바이스(120, 122, 124, 126)에 대한 네 개의 블록을 나타낸다. 서버 블록(102, 104, 106, 140, 142)은 다수의 시스템, 서버 디바이스 및 네트워크 데이터베이스를 나타낼 수 있으며 블록들은 도시된 것과 다른 구성으로 제공될 수 있다. 예를 들어, 서버 시스템(102) 및/또는 제2 서버 시스템(140)은 네트워크(130)를 통해 다른 서버 시스템과 통신할 수 있는 다수의 서버 시스템을 나타낼 수 있다. 일부 구현예에서, 서버 시스템(102) 및/또는 제2 서버 시스템(140)은 예를 들어 클라우드 호스팅 서버를 포함할 수 있다. 일부 예에서, 데이터베이스(106) 및/또는 다른 저장 디바이스는 서버 디바이스(104)와 별개이고 네트워크(130)를 통해 서버 디바이스(104) 및 다른 서버 시스템과 통신할 수 있는 서버 시스템 블록(들)에 제공될 수 있다.
또한 임의의 수의 클라이언트 디바이스가 있을 수 있다. 각 클라이언트 디바이스는 데스크톱 컴퓨터, 랩톱 컴퓨터, 휴대용 또는 모바일 디바이스, 셀폰, 스마트폰, 태블릿 컴퓨터, 텔레비전, TV 셋톱 박스 또는 엔터테인먼트 디바이스, 웨어러블 디바이스(예: 디스플레이 안경 또는 고글, 손목시계, 헤드셋, 팔목밴드, 보석 등)), 개인 휴대 정보 단말기(PDA), 미디어 플레이어, 게임 디바이스 등과 같은 임의의 유형의 전자 디바이스일 수 있다. 일부 클라이언트 디바이스들은 또한 데이터베이스(106) 또는 기타 저장소와 유사한 로컬 데이터베이스를 가질 수 있다. 일부 구현예에서, 네트워크 환경(100)은 설명된 컴포넌트들 모두를 갖지 않을 수 있고 및/또는 여기에 도시된 것들 대신에 또는 이에 추가하여 다른 유형의 엘리먼트들을 포함하는 다른 엘리먼트들을 가질 수 있다.
다양한 구현예에서, 최종 사용자(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))과 데이터를 주고받을 수 있다.
일부 구현예에서, 서버 시스템(102) 및/또는 제2 서버 시스템(140)은 클라이언트 디바이스에 적절한 데이터를 제공하여, 각 클라이언트 디바이스가 서버 시스템(102) 또는 제2 서버 시스템(140) 및/또는 네트워크 서비스에 업로드된 통신 콘텐츠 또는 공유 콘텐츠를 수신할 수 있도록 한다. 일부 예에서, 사용자(U1-U4)는 오디오 또는 비디오 회의, 오디오, 비디오 또는 텍스트 채팅 또는 다른 통신 모드 또는 애플리케이션을 통해 인터렉션할 수 있다.
서버 시스템(102) 또는 제2 서버 시스템(140)에 의해 구현된 네트워크 서비스는 사용자가 다양한 통신을 수행하고, 링크 및 연관을 형성하고, 이미지, 텍스트, 비디오, 오디오 및 기타 유형의 콘텐츠와 같은 공유 콘텐츠를 업로드하고 게시할 수 있도록 하는 시스템을 포함할 수 있다. 예를 들어, 클라이언트 디바이스는 서버 및/또는 네트워크 서비스를 통해(또는 다른 클라이언트 디바이스로부터 직접) 다른 클라이언트 디바이스에서 발생하거나 서버 시스템 및/또는 네트워크 서비스로부터 발생한 클라이언트 디바이스로 전송되거나 스트리밍된 콘텐츠 게시물과 같은 수신 데이터를 디스플레이할 수 있다. 일부 구현예에서, 클라이언트 디바이스는 예를 들어, 위에서 설명된 바와 같이 클라이언트 디바이스들 사이의 피어-투-피어 통신을 사용하여 서로 직접 통신할 수 있다. 일부 구현예에서, "사용자"는 시스템 또는 네트워크와 인터페이스하는 사람뿐만 아니라 하나 이상의 프로그램 또는 가상 엔터티를 포함할 수 있다.
일부 구현예에서, 클라이언트 디바이스들(120, 122, 124, 및/또는 126) 중 임의의 것은 하나 이상의 애플리케이션을 제공할 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 클라이언트 디바이스(120)는 이미지 애플리케이션(156a) 및 하나 이상의 다른 애플리케이션(154)을 제공할 수 있다. 클라이언트 디바이스(122-126)도 유사한 애플리케이션을 제공할 수 있다. 이미지 애플리케이션(156a)은 클라이언트 디바이스(120)의 하드웨어 및/또는 소프트웨어를 사용하여 구현될 수 있다. 상이한 구현예에서, 이미지 애플리케이션(156a)은 예를 들어, 클라이언트 디바이스들(120-124) 중 임의의 것에서 실행되는 독립형 클라이언트 애플리케이션일 수 있거나, 서버 시스템(102) 상에 제공된 이미지 애플리케이션(156b)과 함께 작동할 수 있다. 이미지 애플리케이션(156a) 및 이미지 애플리케이션(156b)은 이미지와 관련된 다양한 기능을 제공할 수 있다. 예를 들어, 이러한 기능은 카메라를 사용하여 이미지를 캡처하고, 하나 이상의 태그를 연관시키기 위해 이미지를 분석하고, 이미지를 수정하고, 이미지를 스캔하고, 그레이스케일 이미지를 컬러화하는 것 중 하나 이상을 포함할 수 있다.
일부 구현예에서, 이미지 애플리케이션(156)은 트레이닝된 기계 학습 모델을 포함할 수 있다. 예를 들어, 컬러라이저라고도 하는 트레이닝된 기계 학습 모델은 그레이스케일 이미지를 컬러화하도록 트레이닝될 수 있다. 일부 구현예에서, 서버 디바이스(104)은 또한 모델 트레이닝 애플리케이션(158)을 포함할 수 있다. 일부 구현예에서, 이미지 애플리케이션(156) 및/또는 모델 트레이닝 애플리케이션(158)은 컬러라이저의 트레이닝을 수행할 수 있다. 일부 구현예에서, 트레이닝은 하나 이상의 추가 기계 학습 모델, 예를 들어 판별기를 사용하여 수행될 수 있다. 예를 들어, 컬러라이저 및 하나 이상의 판별기는 트레이닝을 위해 생성적 대립 네트워크 구성으로 구성될 수 있다.
일부 구현예에서, 클라이언트 디바이스(120)(또는 다른 클라이언트 디바이스(122-126) 중 임의의 것)는 이미지 애플리케이션(156a) 및/또는 다른 애플리케이션(154)의 일부로서 컬러라이저(예를 들어, 그레이스케일 이미지를 컬러화하도록 트레이닝된 기계 학습 모델)를 포함할 수 있다. 일부 구현예에서, 클라이언트 디바이스(120)(또는 다른 클라이언트 디바이스(122-126) 중 임의의 것)는 또한 다른 기계 학습 모델(예를 들어, 판별기) 및 트레이닝 명령어를 포함할 수 있다. 일부 구현예에서, 클라이언트 디바이스(120-126)는 서버 디바이스(104)로부터 트레이닝된 모델을 수신할 수 있고, 트레이닝 명령어 및 다른 기계 학습 모델을 포함하지 않을 수 있다.
일부 구현예에서, 트레이닝 명령어 및 판별기는 서버 디바이스(104) 상에서 실행되는 별도의 애플리케이션, 예를 들어 모델 트레이닝 애플리케이션(158)으로서 제공될 수 있다. 이들 구현예에서, 서버 디바이스(106)는 컬러라이저 및 하나 이상의 판별기를 포함하는 생성적 대립 네트워크 구성을 획득하고 트레이닝을 수행하기 위해 트레이닝 명령어를 실행할 수 있다. 트레이닝이 완료되면, 모델 트레이닝 애플리케이션(158)은 이미지 애플리케이션(156)에서 사용하기 위해 트레이닝된 컬러라이저를 제공할 수 있다.
일부 구현예에서, 클라이언트 디바이스(120)는 하나 이상의 다른 애플리케이션(154)을 포함할 수 있다. 예를 들어, 다른 애플리케이션(154)은 다양한 유형의 기능, 예를 들어 캘린더, 주소록, 이메일, 웹 브라우저, 쇼핑, 교통(예: 택시, 기차, 항공편 예약 등), 엔터테인먼트(예: 음악 플레이어, 비디오 플레이어, 게임 애플리케이션 등), 소셜 네트워킹(예: 메시징 또는 채팅, 오디오/비디오 통화, 이미지/비디오 공유 등) 등을 제공하는 애플리케이션들일 수 있다. 일부 구현예에서, 다른 애플리케이션(154) 중 하나 이상은 클라이언트 디바이스(120)에서 실행되는 독립형 애플리케이션일 수 있다. 일부 구현예에서, 다른 애플리케이션(154) 중 하나 이상은 다른 애플리케이션(154)의 데이터 및/또는 기능을 제공하는 서버 시스템, 예를 들어 서버 시스템(102) 및/또는 제2 서버 시스템(140)에 액세스할 수 있다. 예를 들어, 제2 서버 시스템(140)에 의해 제공되는 것으로 도시된 애플리케이션(144, 146, 148) 중 임의의 애플리케이션은 다른 애플리케이션(154) 중 하나 이상에 데이터 및/또는 명령을 제공할 수 있다. 일부 구현예에서, 서버 애플리케이션(144-148)은 예를 들어 웹 브라우저 또는 다른 클라이언트-사이드 프로그램을 통해 클라이언트 디바이스에 의해 액세스되는 독립형 애플리케이션일 수 있다.
클라이언트 디바이스(120, 122, 124, 및/또는 126)의 사용자 인터페이스는 이미지, 비디오, 데이터 및 기타 콘텐츠는 물론 통신, 개인 정보 설정, 알림 및 기타 데이터를 포함하는 사용자 콘텐츠 및 기타 콘텐츠를 디스플레이하게 한다. 이러한 사용자 인터페이스는 클라이언트 디바이스의 소프트웨어, 서버 디바이스의 소프트웨어 및/또는 서버 디바이스(104) 및/또는 제2 서버 디바이스(142)에서 실행되는 클라이언트 소프트웨어와 서버 소프트웨어의 조합, 예를 들어 서버 시스템(102) 및/또는 제2 서버 디바이스(142)와 통신하는 애플리케이션 소프트웨어 또는 클라이언트 소프트웨어를 사용하여 디스플레이될 수 있다. 사용자 인터페이스는 클라이언트 디바이스 또는 서버 디바이스의 디스플레이 디바이스, 예를 들어 터치스크린 또는 다른 디스플레이 스크린, 프로젝터 등에 의해 디스플레이될 수 있다. 일부 구현예에서, 서버 시스템에서 실행되는 애플리케이션 프로그램은 클라이언트 디바이스와 통신하여 클라이언트 디바이스에서의 사용자 입력 및 클라이언트 디바이스에서의 시각 데이터, 오디오 데이터 등과 같은 데이터를 출력한다.
본 명세서에 기술된 구성의 다른 구현예는 임의의 유형의 시스템 및/또는 서비스를 사용할 수 있다. 예를 들어, 다른 네트워크 서비스(예를 들어, 인터넷에 연결됨)가 소셜 네트워킹 서비스 대신에 또는 소셜 네트워킹 서비스에 추가로 사용될 수 있다. 임의의 유형의 전자 디바이스는 본 명세서에 기술된 구성을 사용할 수 있다. 일부 구현예는 컴퓨터 네트워크에서 연결 해제되거나 간헐적으로 연결된 하나 이상의 클라이언트 또는 서버 디바이스에서 본 명세서에 기술된 하나 이상의 구성을 제공할 수 있다. 일부 예시에서, 디스플레이 디바이스를 포함하거나 이에 연결된 클라이언트 디바이스는 예를 들어, 통신 네트워크들을 통해 이전에 수신된, 클라이언트 디바이스에 로컬적인 저장 디바이스들 상에 저장된 콘텐츠 게시물들을 디스플레이할 수 있다.
본 명세서에서 언급되는 이미지는 하나 이상의 픽셀 값(예를 들어, 색상 값, 밝기 값 등)을 갖는 픽셀을 갖는 디지털 이미지를 포함할 수 있다. 이미지는 정지 이미지(예: 정지 사진, 단일 프레임이 있는 이미지 등), 동적 이미지(예: 애니메이션, 애니메이션 GIF, 이미지의 일부가 모션을 포함하고 다른 부분은 정적인 시네마그래프 등) 또는 비디오(예: 오디오를 포함할 수 있는 이미지 또는 이미지 프레임의 시퀀스)일 수 있다. 이 문서의 나머지 부분은 이미지를 정적 이미지로 언급하지만, 본 명세서에 기술된 기법은 동적 이미지, 비디오 등에 적용할 수 있음이 이해될 수 있다. 예를 들어, 본 명세서에 기술된 구현예는 정지 이미지(예: 사진 또는 기타 이미지), 비디오 또는 동적 이미지와 함께 사용될 수 있다.
도 2는 이미지를 컬러화하기 위해 기계 학습 모델을 트레이닝하기 위한 예시적인 GAN(Generative Adversarial Network) 구성(200)을 도시하는 블록도이다. GAN 구성은 소프트웨어 명령어와 함께 하나 이상의 프로세서와 메모리를 포함하는 컴퓨터에서 구현될 수 있다. 일부 구현예에서, 하나 이상의 프로세서는 범용 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 기계 학습 프로세서, 예를 들어, TensorFlow Processing Unit(TPU) 또는 다른 프로세서), ASIC(application-specific integrated circuit), FPGA(field-programmable gate array) 또는 기타 유형의 프로세서 중 하나 이상을 포함할 수 있다.
GAN 구성(200)은 복수의 기계 학습 모델들을 포함할 수 있다. 일부 구현예에서, GAN 구성(200)은 컬러라이저 CNN(Convolutional Neural Network)(210), 결합기(216), 피처 판별기(218), 리사이저(220) 및 픽셀 판별기(222)를 포함할 수 있다. 일부 구현예에서, GAN 구성(200)은 채도 인핸서(224) 및/또는 피부 톤 인핸서(226)를 더 포함할 수 있다.
도 2에 도시된 바와 같이, 진정한 그레이스케일 이미지(202) 및 트레이닝 그레이스케일 이미지(204)를 포함하는 그레이스케일 이미지가 컬러라이저 CNN(210)에 대한 입력으로서 제공된다. 진정한 그레이스케일 이미지(202)는 컬러 데이터를 이용할 수 없는 이미지일 수 있다. 예를 들어, 그러한 이미지는 예를 들어 흑백 필름을 사용하여 찍은 오래된 사진 또는 기타 흑백 이미지를 포함할 수 있다. 트레이닝 그레이스케일 이미지(204)는 컬러 정보를 제거하도록 수정된 이미지를 포함할 수 있다. 예를 들어, 트레이닝 그레이스케일 이미지(204)는 실제 컬러 이미지(206)로부터 컬러 정보를 제거함으로써 획득될 수 있다. 예를 들어, 실제 컬러 이미지는 컬러 사진, 예를 들어 컬러 필름, 디지털 컬러 카메라를 사용하여 찍은 사진 또는 컬러 정보를 기록하는 다른 이미지 캡처 기법을 사용하여 찍은 컬러 사진을 포함할 수 있다. 실제 컬러 이미지는 이미지가 실제 컬러 이미지(색상이 지정되지 않음)임을 나타내는 연관된 실제 라벨(groundtruth label)이 있을 수 있다.
일부 구현예에서, 컬러라이저 CNN(210)은 래더 네트워크 또는 U-Net 모델일 수 있다. 일부 구현예에서, 컬러라이저 CNN(210)은 완전 컨볼루션 CNN 모델, 예를 들어 자동 인코더 플러스 스킵 연결일 수 있다. 컬러라이저 CNN(210)은 복수의 레이어들로 구성될 수 있다. 각 레이어는 복수의 신경 네트워크 노드들을 포함할 수 있다. 일부 구현예에서, 각 레이어는 3개의 컨볼루션 노드들(잔여 컨볼루션 노드들)을 포함할 수 있다. 일부 구현예에서, 특정한 레이어의 하나 이상의 노드들은 바로 이전 레이어의 노드들 및 바로 다음 레이어의 노드들에 연결될 수 있다. 일부 구현예에서, 비연속적인 레이어들 사이에 하나 이상의 노드들을 연결하는 스킵 연결이 사용될 수 있다. 컬러라이저 CNN(210)의 제1 레이어(입력 레이어로 지칭됨)는 입력으로서 진정한 그레이스케일 이미지(202) 및 트레이닝 그레이스케일 이미지(210)(함께 입력 그레이스케일 이미지로 지칭됨)를 수신할 수 있다.
또한, 진정한(true) 그레이스케일 이미지(202) 및 실제(groundtruth) 컬러 이미지(206)는 각각 한 명 이상의 사람을 도시할 수 있다. 컬러라이저 CNN(210)에 대한 트레이닝 단계 동안, 한 명 이상의 사람 각각에 대한 실제 부분 주석들이 트레이닝 입력으로서 제공될 수 있다. 실제 부분 주석들은 예를 들어 임의의 적절한 부분 세그먼트화 기법을 사용하여 자동으로 생성되거나, 예를 들어 사람 주석가에 의해 수동으로 생성될 수 있다. 실제 부분 세그먼트화의 생성은 이미지의 색상과 무관하기 때문에, 실제 부분 주석들은 진정한 그레이스케일 이미지(예: 과거 흑백 사진)와 트레이닝 그레이스케일 또는 컬러 이미지(예: 현대 사진) 모두에 대해 생성될 수 있다.
CNN(210)은 트레이닝 입력으로서 제공된 실제 부분 주석들과 일치하는 부분 주석들을 예측하도록 트레이닝될 수 있다. 따라서, 트레이닝된 컬러라이저 CNN(210)은 입력 이미지의 픽셀에 대해 예측된 컬러 값과 입력 이미지에 도시된 한 명 이상의 사람에 대한 부분 주석들을 모두 포함하는 네트워크 출력 이미지를 생성한다.
컬러라이저 CNN(210)은 입력 그레이스케일 이미지의 하나 이상의 피처들을 검출하기 위해 입력 그레이스케일 이미지를 분석하도록 트레이닝된다. 구체적으로, 컬러라이저 CNN(210)은 입력 그레이스케일 이미지에 도시된 사람의 하나 이상의 부분을 검출하기 위해 부분 세그먼트화를 수행할 수 있다. 일부 구현예에서, 검출되는 하나 이상의 부분은 얼굴, 몸통, 오른팔, 왼팔, 왼다리 및 오른다리를 포함할 수 있다. 일부 구현예에서, 검출되는 하나 이상의 부분은 얼굴, 몸통, 오른쪽 위팔, 오른쪽 아래팔, 왼쪽 위팔, 왼쪽 아래팔, 오른손, 왼손, 오른쪽 위 다리, 오른쪽 아래 다리, 왼쪽 위 다리, 왼쪽 아래 다리, 왼쪽 발, 오른쪽 발을 포함할 수 있다. 또 다른 구현예는 더 많은 부분 또는 더 적은 부분을 검출할 수 있다.
일부 구현예에서, 하나 이상의 부분의 검출은 부분 주석들을 생성하는 것을 포함할 수 있다. 예를 들어, 부분 주석들은 이미지의 픽셀이 특정한 사람의 특정한 부분에 속하는지 또는 픽셀이 이미지에 도시된 사람의 일부가 아닌지 여부를 나타낼 수 있다. 입력 이미지에 복수의 사람들이 도시된 경우, 입력 이미지에 도시된 인물별로 부분들이 검출되도록 부분 검출이 수행될 수 있다.
컬러라이저 CNN(210)은 또한 입력 이미지의 각 픽셀에 대한 컬러(크로마) 값을 생성하도록 트레이닝된다. 컬러라이저 CNN(210)의 레이어는 컬러화된 이미지에 대응하는 피처 벡터가 컬러라이저 CNN(210)의 다수의 레이어에 의해 생성되도록 배열될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 잠재 레이어(212) 및 출력 레이어(214)는 각각 입력 그레이스케일 이미지로부터 컬러화된 이미지를 생성할 수 있다.
도 2에 도시된 바와 같이, 잠재 레이어(212)의 출력은 중간 컬러화된 이미지(230)를 포함할 수 있다. 일부 구현예에서, 중간 컬러화된 이미지들(230)은 중간 피처 벡터들로서 잠재 레이어(212)에 의해 출력될 수 있다. 일부 구현예에서, 중간 컬러화된 이미지(230)의 이미지 해상도는 입력 그레이스케일 이미지의 해상도보다 낮을 수 있다.
또한, 출력 레이어(214)는 네트워크 출력 이미지(232)를 생성할 수 있다. 일부 구현예에서, 잔여 네트워크는 출력 레이어(214)로서 사용될 수 있다. 잔여 네트워크를 사용하면 컬러라이저 CNN(210)의 트레이닝 속도를 높일 수 있다. 일부 구현예에서, 네트워크 출력 이미지들(232)의 이미지 해상도는 입력 그레이스케일 이미지들의 해상도와 동일한 해상도일 수 있다. 일부 구현예에서, 네트워크 출력 이미지들(232)은 피처 벡터들로서 출력 레이어(214)에 의해 출력될 수 있다.
도 2는 컬러라이저 CNN을 도시하지만, 임의의 다른 유형의 기계 학습 모델 생성, 예를 들어 자동 인코더, 변형 자동 인코더, 또는 다른 유형의 모델 등이 입력 그레이스케일 이미지를 컬러화하는데 사용될 수 있음을 이해할 것이다.
일부 구현예에서, GAN 구성(200)은 또한 피처 판별기(218)를 포함할 수 있다. 피처 판별기(218)는 임의의 유형의 기계 학습 모델, 예를 들어 분류기 신경 네트워크를 사용하여 구현될 수 있다. 일부 구현예에서는 기울기 반전 레이어가 사용될 수 있다. 예를 들어, 기울기 반전 레이어는 피처 판별기로부터의 피드백, 예를 들어 피처 판별기의 출력에 기초한 손실 값을 컬러라이저 CNN(210)에 제공할 수 있다. 일부 구현예에서, 중간 컬러화된 이미지(230)는 피처 판별기(218)에 대한 입력으로서 제공된다.
피처 판별기(218)는 입력 이미지, 예를 들어 임의의 중간 컬러화된 이미지가 실제 컬러 이미지가 이용 가능한 이미지인지 여부를 결정하도록 트레이닝될 수 있다. 예를 들어, 피처 판별기(218)는 이러한 결정을 내리기 위해 입력 이미지의 피처 벡터를 분석할 수 있다. 피처 판별기(218)는 그 출력으로서 라벨 예측(250)을 생성할 수 있다. 일부 구현예에서, 라벨 예측(250)은 입력 이미지가 대응하는 실제 컬러 이미지를 갖는지("예") 그렇지 않은지("아니오") 여부를 나타내는 이진 값일 수 있다. 일부 구현예에서, 라벨 예측(250)은 입력 이미지가 대응하는 실제 컬러 이미지, 예를 들어 0과 1 사이의 확률 값을 가질 가능성일 수 있다. 일부 구현예에서, 라벨 예측(250)는 Wasserstein Metric일 수 있다.
일부 구현예에서, GAN 구성(200)은 또한 리사이저(220)를 포함할 수 있다. 리사이저(220)는 입력으로서 중간 컬러화된 이미지(230)를 수신하고 출력으로서 생성된 리사이징된 중간 이미지(234)를 수신할 수 있다. 예를 들어, 리사이저(220)는 중간 컬러화된 이미지를 저해상도에서 더 높은 해상도, 예를 들어 실제 컬러 이미지와 동일한 해상도로 업샘플링할 수 있다. 리사이저(220)는 기계 학습 기법, 이미지 업스케일링 알고리즘 등을 포함하는 임의의 유형의 이미지 업스케일링 기법을 사용하여 구현될 수 있다.
일부 구현예에서, GAN 구성(200)은 결합기(216)를 포함할 수 있다. 결합기(216)는 컬러라이저 CNN(210)의 출력 레이어(214)에 의해 출력된 네트워크 출력 이미지(232), 및 리사이징된 중간 이미지(234)를 입력으로서 수신할 수 있고, 컬러화된 이미지(236)를 출력으로서 생성할 수 있다. 일부 구현예에서, 네트워크 출력 이미지(232), 리사이징된 중간 이미지(234), 및 컬러화된 이미지(236) 각각은 이미지(픽셀 위치 및 색상 값 포함) 및 부분 주석을 나타내는 대응하는 피처 벡터로서 표현될 수 있다.
일부 구현예에서, GAN 구성(200)은 픽셀 판별기(222)를 더 포함할 수 있다. 픽셀 판별기(222)는 임의의 유형의 기계 학습 모델, 예를 들어 분류기 신경 네트워크를 사용하여 구현될 수 있다. 예를 들어, 픽셀 판별기(222)는 컬러화된 이미지로부터 피처들을 추출하고 진정한 컬러 이미지 또는 예측된 컬러 이미지에 속하는 피처를 분류하는 컨볼루션 신경 네트워크를 사용하여 구현될 수 있다. 1차원 출력, 예를 들어 라벨 예측을 생성하는 출력 컨볼루션 레이어가 사용될 수 있다.
픽셀 판별기(222)는 더 작은 수용 필드를 갖도록 구현될 수 있고 이미지 텍스처를 해석할 수 있다. 이미지 텍스처는 실제 컬러 이미지(예: 컬러로 찍은 현대 컬러 사진)와 컬러화된 이미지(예: 그레이스케일 과거 사진에서 생성됨) 모두 유사하다. 일부 구현예에서, 컬러화된 이미지(236) 및/또는 실제 컬러 이미지(206)는 피처 판별기(218)에 대한 입력으로서 제공된다.
픽셀 판별기(222)는 입력 이미지, 예를 들어, 컬러화된 이미지(222) 및/또는 실제 컬러 이미지(206) 중 임의의 것을 분석하여 이미지가 진정한 컬러 이미지, 예를 들어, 실제 컬러 이미지들(206) 중 하나 또는 예측된 컬러 이미지 예를 들어 컬러화된 이미지(222) 중 하나인지 여부를 결정하도록 트레이닝될 수 있다. 예를 들어, 픽셀 판별기(222)는 이러한 결정을 내리기 위해 입력 이미지의 피처 벡터를 분석할 수 있다. 픽셀 판별기(222)는 그 출력으로서 라벨 예측(260)을 생성할 수 있다. 일부 구현예에서, 라벨 예측(260)은 입력 이미지가 진정한 컬러 이미지인지("예") 그렇지 않은지("아니오") 여부를 나타내는 이진 값일 수 있다. 일부 구현예에서, 라벨 예측(260)은 입력 이미지가 진정한 컬러 이미지일 가능성 예를 들어, 0과 1 사이의 확률 값일 수 있다.
GAN 구성(200)은 대립 네트워크로서 피처 판별기(218) 및 픽셀 판별기(220)를 사용하여 컬러라이저 CNN(210)(생성기 네트워크)을 트레이닝하는데 사용된다. 컬러라이저 CNN(210)의 하나 이상의 파라미터는 피처 판별기(218)에 의한 라벨 예측(250) 및 픽셀 판별기(222)에 의한 라벨 예측(260)에 기초하여 조정된다. 예를 들어, 하나 이상의 파라미터는 컬러라이저 CNN(210)의 하나 이상의 레이어의 하나 이상의 노드의 가중치 및/또는 컬러라이저 CNN(210)의 노드의 하나 이상의 쌍 사이의 연결을 포함할 수 있다. 피처 손실 값은 라벨 예측(250)에 기초하여 결정되고 컬러라이저 CNN(210)에 트레이닝 입력으로서 제공될 수 있다. 또한, 지각 손실 값은 픽셀 판별기에 의해 결정되고 컬러라이저 CNN(210)에 트레이닝 입력으로서 제공될 수 있다.
컬러라이저 CNN(210)에 대한 하나의 목표는 예를 들어 라벨 예측(250)이 부정확하게 되도록 피처 판별기(218)가 실패하게 하는 중간 컬러화된 이미지를 생성하는 것이다. 달리 말하면, 트레이닝된 컬러라이저 CNN(210)은 트레이닝 그레이스케일 이미지로부터 중간 컬러화된 이미지(중간 피처 벡터)로부터 피처 판별기(218)에 의해 구별할 수 없는 진정한 그레이스케일 입력 이미지로부터 중간 컬러화된 이미지(중간 피처 벡터)를 생성하도록 구성된다.
컬러라이저 CNN(210)에 대한 또 다른 목표는 리사이징된 중간 이미지와 결합될 때, 예를 들어 라벨 예측(260)이 부정확하게 되도록 픽셀 판별기가 실패하게 하는 컬러화된 이미지를 생성하는 네트워크 출력 이미지를 생성하는 것이다. 달리 말하면, 트레이닝된 컬러라이저 CNN(210)은 실제 컬러 이미지로부터 픽셀 판별기(222)에 의해 구별할 수 없는 진정한 그레이스케일 입력 이미지로부터 컬러화된 이미지(피처 벡터)를 생성하도록 구성된다.
GAN 구성(200)은 또한 피처 판별기(218)를 트레이닝하는데 사용된다. 트레이닝 동안, 컬러라이저 CNN(210)으로부터의 중간 컬러화된 이미지(230)가 피처 판별기(218)에 대한 입력으로서 제공되고 라벨 예측(250)의 정확도가 평가된다. 예를 들어, 라벨 예측(250)은 중간 색상 이미지가 트레이닝 그레이스케일 이미지(204) 중 하나로부터 생성된 경우에만 중간 컬러화된 이미지에 대해 실제 색상을 사용할 수 있음을 나타내거나 또는 동등하게, 중간 컬러화된 이미지가 진정한 그레이스케일 이미지(202) 중 하나에서 생성된 경우에만 중간 컬러화된 이미지에 대해 실제 색상을 사용할 수 없음을 표시하는 경우 정확하다.
GAN 구성(200)은 또한 픽셀 판별기(222)를 트레이닝하는데 사용된다. 트레이닝 동안, 컬러라이저 CNN(210)으로부터의 컬러화된 이미지(236) 및 실제 컬러 이미지(206)가 픽셀 판별기(222)에 대한 입력으로서 제공되고 라벨 예측(260)의 정확도가 평가된다. 예를 들어, 라벨 예측(260)은 입력 이미지가 실제 색상 이미지(206) 중 하나인 경우에만 입력 이미지의 이미지 색상이 실제임을 나타내거나 또는 동등하게, 입력 이미지가 컬러라이저 CNN(210)에 의해 생성된 컬러화된 이미지(236) 중 하나인 경우에만 이미지 색상이 실제가 아님을 표시하는 경우 입력 이미지에 대해 정확하다.
일부 구현예에서, GAN 구성(200)은 채도 인핸서(224)를 포함할 수 있다. 결합기(216)로부터 획득된 컬러화된 이미지는 채도 인핸서(224)에 대한 입력으로서 제공될 수 있다.
채도 인핸서(224)는 컬러라이저 CNN(210)을 트레이닝하는데 사용되는 채도 손실(260)을 생성하도록 구성될 수 있다. 그레이스케일 이미지를 컬러화할 때, 한 가지 기술적인 문제는 결과 이미지가 종종 채도가 낮아 보인다는 것이다. 많은 사용자는 채도가 높은 이미지, 예를 들어 컬러 필름 카메라, 디지털 카메라 등으로 찍은 최신 이미지를 선호한다. 채도 손실(260)을 사용하여 컬러라이저 CNN(210)을 트레이닝시키면 트레이닝된 컬러라이저 CNN(210)에 의해 생성된 컬러 이미지가 충분한 양의 채도를 갖는 것을 보장한다.
일부 구현예에서, 채도 인핸서(224)는 HSV(색조, 채도, 값) 색공간의 낮은 채도가 불이익을 받도록 채도 손실(260)을 계산하도록 구성될 수 있다. 채도 손실(260)은 컬러라이저 CNN을 트레이닝하는데 사용되는 휴리스틱 손실일 수 있다. 컬러라이저 CNN(210)에 의해 생성된 컬러화된 이미지(236)는 채도 인핸서(224)에 대한 입력으로서 제공된다. 예를 들어, 컬러화된 이미지(236)는 sRGB 포맷(표준 레드, 그린, 블루)일 수 있고, 컬러화된 이미지의 각 픽셀에 대한 예측된 컬러 값을 포함할 수 있다. 채도 인핸서(224)는 아래 공식에 예시된 바와 같이 RGB에서 HSV로의 변환 함수 RGB_to_HSV를 사용하여 픽셀 값을 HSV 색공간으로 변환하도록 구성된다:
(색조, 채도, 값) = RGB_to_HSV(predicted_color)
일부 구현예에서, 채도 인핸서(224)는 다음 공식을 사용하여 (위의 공식을 사용하여 획득된) 컬러화된 이미지의 각 픽셀에 대한 "채도" 및 "값"으로부터 채도 손실(260)을 계산할 수 있다:
채도 손실 = (1-채도) x pow(값, 가중치)
여기서 pow는 거듭제곱 함수를 나타내고, 값은 밑수이며, 가중치는 지수이다. pow 함수는 값에 기초하여 다양한 양의 패널티를 다른 픽셀에 적용할 수 있다. 예를 들어 이미지의 밝은 픽셀보다 이미지의 어두운 픽셀에 패널티를 적용한다.
일부 구현예에서, 값은 컬러화된 이미지의 밝기를 나타낼 수 있다. 일부 구현예에서 가중치는 0.5로 설정될 수 있다. 일부 구현예에서, 가중치는 값의 밝기에 기초하여 조정될 수 있다. 가중치는 값의 밝기에 대한 계산된 채도 손실의 감도를 제어한다.
일부 구현예에서, 채도 인핸서(224)는 컬러화된 이미지의 픽셀들의 서브세트에 대한 채도 손실(260)을 계산할 수 있다. 예를 들어, 채도 손실(260)은 컬러화된 이미지의 배경 영역에 대해서만 계산될 수 있다. 이러한 구현예에서, 컬러라이저 CNN(210)에 의해 생성된 부분 주석들은 배경 영역, 예를 들어, 컬러화된 이미지의 전경 영역 및 배경 영역을 식별하는 이미지 마스크를 식별하는데 사용될 수 있다. 예를 들어, 배경 영역은 이미지에 도시된 사람의 일부인 주석이 아닌 컬러화된 이미지의 픽셀에 대응할 수 있다. 달리 말하면, 채도 손실(260)을 계산할 때 이미지에서 사람 도시의 일부인 컬러화된 이미지의 픽셀이 제외될 수 있다.
채도 인핸서(224)에 의해 생성된 채도 손실(260)에 기초하여 컬러라이저 CNN(210)의 하나 이상의 파라미터가 조정된다. 예를 들어, 하나 이상의 파라미터는 컬러라이저 CNN(210)의 하나 이상의 레이어의 하나 이상의 노드의 가중치 및/또는 컬러라이저 CNN(210)의 노드의 하나 이상의 쌍 사이의 연결을 포함할 수 있다.
일부 구현예에서, GAN 구성(200)은 피부 톤 인핸서(224)를 포함할 수 있다. 결합기(216)로부터 획득된 컬러화된 이미지는 피부 톤 인핸서(226)에 대한 입력으로서 제공될 수 있다. 그레이스케일 이미지로부터 생성된 컬러 이미지의 문제점은 컬러 이미지의 피부 픽셀이 사람의 피부색에 대응하는 값의 범위가 아닌 색상이 할당되는 경우가 있다는 것이다. 예를 들어, 컬러화된 이미지들은 종종 색상이 보라색이거나 따뜻한 피부 톤이 아닌 피부 픽셀을 포함할 수 있다. 이러한 컬러화된 이미지는 피부 픽셀에 할당된 색상이 정확하지 않기 때문에 불만족스러운 것으로 간주될 수 있다.
일부 구현예에서, 피부 톤 인핸서(226)는 컬러라이저 CNN(210)에 의해 생성된 컬러화된 이미지가 잘못되거나 부적합한 컬러를 갖는 피부 픽셀을 갖는 경우를 제거하거나 감소시키기 위해 컬러라이저 CNN(210)을 트레이닝하는데 사용되는 피부 톤 손실(270)을 계산하도록 구성될 수 있다. 피부 톤 손실(270)은 컬러라이저 CNN을 트레이닝하는데 사용되는 휴리스틱 손실일 수 있다. 일부 구현예에서, 특정 색조 값, 예를 들어 색조=20이 디폴트 피부 톤 값으로 설정될 수 있다. 피부 톤 손실(270)은 그 다음 이 값에 기초하여 계산된다.
먼저, 채도 인핸서(224)를 참조하여 위에서 설명된 바와 같이, 컬러라이저 CNN(210)에 의해 생성된 컬러화된 이미지(236)는 HSV 색공간으로 변환될 수 있다. 피부 톤 손실(270)은 다음 공식을 사용하여 컬러화된 이미지의 각 픽셀에 대해 계산될 수 있다:
피부 톤 손실 = (색조-20) / 20 x 실루엣 x is_gray
여기서, 색조는 컬러화된 이미지의 픽셀의 색조를 나타내고, 실루엣은 픽셀이 사람을 도시하는지 여부를 나타내는 이진 값이며, is_gray는 컬러화된 이미지의 원본 이미지가 트레이닝 그레이스케일 이미지(예: 트레이닝 그레이스케일 이미지들(204) 중 임의의 것)인지 여부를 나타낸다. 이러한 방식으로 피부 톤 손실을 계산하면 예측된 색상, 예를 들어 컬러라이저 CNN(210)에 의해 생성된 픽셀의 색상 값과 실제 컬러 이미지들(206)로부터 대응하는 실제 컬러 이미지로부터 획득된 픽셀들의 실제 컬러 값들의 비교에 의해 지도된 방식으로 컬러라이저 CNN(210)을 트레이닝할 수 있다.
실루엣 값들은 컬러라이저 CNN(210)에 의해 생성된 부분 주석들을 사용하여 얻을 수 있다. 예를 들어, 사람의 일부인 것으로 주석이 달린 컬러화된 이미지의 픽셀들(예: 머리, 몸통, 팔, 다리 등)은 실루엣 내에 있는 것(실루엣=1)으로 식별될 수 있고, 다른 픽셀들은 실루엣 외부에 있는 것(실루엣=0)으로 식별될 수 있다. 달리 말하면, 피부 톤 손실(270)을 계산할 때 이미지에서 사람 도시의 일부인 컬러화된 이미지의 픽셀들이 포함될 수 있고 다른 픽셀들은 제외될 수 있다.
피부 톤 인핸서(226)에 의해 생성된 피부 톤 손실(270)에 기초하여 컬러라이저 CNN(210)의 하나 이상의 파라미터가 조정된다. 예를 들어, 하나 이상의 파라미터는 컬러라이저 CNN(210)의 하나 이상의 레이어의 하나 이상의 노드의 가중치 및/또는 컬러라이저 CNN(210)의 노드의 하나 이상의 쌍 사이의 연결을 포함할 수 있다.
피처 판별기(218), 픽셀 판별기(222), 및 컬러라이저 CNN(210)을 트레이닝하기 위한 예시적 방법이 각각 도 3, 4 및 5를 참조하여 설명된다.
도 3은 일부 구현예에 따라 피처 판별기, 예를 들어, 피처 판별기(218)를 트레이닝하기 위한 예시적 방법(300)을 도시하는 흐름도이다. 일부 구현예에서, 방법(300)은 예를 들어 도 1에 도시된 바와 같은 서버 시스템(102)에서 구현될 수 있다. 일부 구현예에서, 방법(300)의 일부 또는 전부는 도 1에 도시된 바와 같이 하나 이상의 클라이언트 디바이스(120, 122, 124 또는 126), 하나 이상의 서버 디바이스, 및/또는 서버 디바이스(들) 및 클라이언트 디바이스(들) 둘 모두에서 구현될 수 있다. 설명된 예에서, 구현 시스템은 하나 이상의 디지털 프로세서 또는 프로세싱 회로("프로세서") 및 하나 이상의 저장 디바이스(예를 들어, 데이터베이스(106) 또는 다른 저장 디바이스)를 포함한다. 일부 구현예에서, 하나 이상의 서버 및/또는 클라이언트의 상이한 컴포넌트는 방법(300)의 상이한 블록 또는 다른 부분을 수행할 수 있다. 일부 예에서, 제1 디바이스는 방법(300)의 블록들을 수행하는 것으로 설명된다. 일부 구현예는 결과 또는 데이터를 제1 디바이스로 전송할 수 있는 하나 이상의 다른 디바이스(예를 들어, 다른 클라이언트 디바이스 또는 서버 디바이스)에 의해 수행되는 방법(300)의 하나 이상의 블록을 가질 수 있다.
일부 구현예에서, 방법(300) 또는 방법의 일부는 시스템에 의해 자동으로 개시될 수 있다. 일부 구현예에서, 상기 구현 시스템은 제1 디바이스이다. 예를 들어, 방법(또는 그 일부)은 주기적으로 수행되거나 하나 이상의 특정 이벤트 또는 조건, 예를 들어 임계치 아래로 떨어지는 라벨 예측의 정확도, 방법(300)의 마지막 수행 이후 만료된 미리 결정된 기간 및/또는 방법에 의해 판독된 설정에서 특정될 수 있는 발생하는 하나 이상의 다른 조건에 기초하여 수행될 수 있다.
방법(300)은 블록(302)에서 시작할 수 있다. 블록(302)에서, 컬러화된 이미지, 예를 들어, 컬러화된 이미지를 나타내는 피처 벡터가 획득된다. 예를 들어, 중간 컬러화된 이미지(230)는 컬러라이저 CNN(210)으로부터 획득되어 입력으로서 제공될 수 있다. 블록(302) 다음에 블록(304)이 올 수 있다.
블록(304)에서, 피처 판별기, 예를 들어, 피처 판별기(218)는 라벨 예측들, 예를 들어, 라벨 예측들(250)을 생성하기 위해 적용된다. 블록(304) 다음에 블록(306)이 올 수 있다.
블록(306)에서, 라벨 예측들이 평가된다. 예를 들어, 라벨 예측의 정확도는 각각의 중간 컬러화된 이미지에 대해 결정된다. 예를 들어, 피처 판별기가 예를 들어 트레이닝 그레이스케일 이미지(204)로부터 생성된, 실제 컬러를 사용할 수 있는 중간 컬러화된 이미지와 예를 들어 진정한 그레이스케일 이미지들(202)로부터 생성된 실제 컬러를 사용할 수 없는 중간 컬러화된 이미지를 성공적으로 구별했는지 여부가 평가된다. 라벨 예측의 정확도에 따라 손실 값이 결정된다. 블록(306) 다음에 블록(308)이 올 수 있다.
블록(308)에서, 손실 값은 피처 판별기의 하나 이상의 파라미터들을 조정하기 위해 활용된다. 예를 들어, 피처 판별기가 신경 네트워크를 사용하여 구현되는 경우, 신경 네트워크의 하나 이상의 노드들과 연관된 가중치 및/또는 신경 네트워크의 하나 이상의 노드 쌍 간의 연결은 손실 값에 기초하여 조정될 수 있다.
방법(300) 또는 그 일부는 추가 입력을 사용하여 여러 번 반복될 수 있다. 예를 들어, 방법(300)은 라벨 예측 정확도의 임계 레벨에 도달할 때까지 반복될 수 있다.
도 4은 일부 구현예에 따라 픽셀 판별기, 예를 들어, 픽셀 판별기(222)를 트레이닝하기 위한 예시적 방법(400)을 도시하는 흐름도이다. 일부 구현예에서, 방법(400)은 예를 들어 도 1에 도시된 바와 같은 서버 시스템(102)에서 구현될 수 있다. 일부 구현예에서, 방법(400)의 일부 또는 전부는 도 1에 도시된 바와 같이 하나 이상의 클라이언트 디바이스(120, 122, 124 또는 126), 하나 이상의 서버 디바이스, 및/또는 서버 디바이스(들) 및 클라이언트 디바이스(들) 둘 모두에서 구현될 수 있다. 설명된 예에서, 구현 시스템은 하나 이상의 디지털 프로세서 또는 프로세싱 회로("프로세서") 및 하나 이상의 저장 디바이스(예를 들어, 데이터베이스(106) 또는 다른 저장 디바이스)를 포함한다. 일부 구현예에서, 하나 이상의 서버 및/또는 클라이언트의 상이한 컴포넌트는 방법(400)의 상이한 블록 또는 다른 부분을 수행할 수 있다. 일부 예에서, 제1 디바이스는 방법(400)의 블록들을 수행하는 것으로 설명된다. 일부 구현예는 결과 또는 데이터를 제1 디바이스로 전송할 수 있는 하나 이상의 다른 디바이스(예를 들어, 다른 클라이언트 디바이스 또는 서버 디바이스)에 의해 수행되는 방법(400)의 하나 이상의 블록을 가질 수 있다.
일부 구현예에서, 방법(400) 또는 방법의 일부는 시스템에 의해 자동으로 개시될 수 있다. 일부 구현예에서, 상기 구현 시스템은 제1 디바이스이다. 예를 들어, 방법(또는 그 일부)은 주기적으로 수행되거나 하나 이상의 특정 이벤트 또는 조건, 예를 들어 임계치 아래로 떨어지는 라벨 예측의 정확도, 방법(400)의 마지막 수행 이후 만료된 미리 결정된 기간 및/또는 방법에 의해 판독된 설정에서 특정될 수 있는 발생하는 하나 이상의 다른 조건에 기초하여 수행될 수 있다.
방법(400)은 블록(402)에서 시작할 수 있다. 블록(402)에서, 실제 컬러 이미지들이 픽셀 판별기, 예를 들어, 픽셀 판별기(222)에 대한 입력으로서 제공된다. 블록(402) 다음에 블록(404)이 올 수 있다.
블록(404)에서, 실제 컬러 이미지들의 피처들이 학습된다. 예를 들어, 픽셀 판별기는 실제 색상 이미지들로부터 결정된 분포 또는 패턴을 나타내는 임베딩, 예를 들어 숫자 값 세트를 학습할 수 있다. 블록(404) 다음에 블록(406)이 올 수 있다.
블록(406)에서, 컬러화된 이미지가 획득된다. 예를 들어, 실제 컬러 이미지들(206) 및/또는 컬러라이저 CNN(210)에 의해 생성된 컬러화된 이미지들(236)로부터 추가 이미지들이 획득될 수 있다. 블록(406) 다음에 블록(408)이 올 수 있다.
블록(408)에서, 픽셀 판별기는 컬러화된 이미지들에 적용되어 컬러화된 이미지들의 각 이미지가 리얼 컬러(예를 들어, 이미지가 실제 컬러 이미지인지) 또는 예측된 컬러(예를 들어, 이미지가 컬러화된 이미지인지)를 갖는지 여부를 나타내는 라벨 예측들을 생성한다. 일부 구현예에서, 입력으로서 제공된 컬러화된 이미지는 sRGB(Standard Reg, Green, Blue) 이미지들, 예를 들어 3개의 채널을 갖는 이미지들일 수 있다.
일부 구현예에서, 컬러화된 이미지에서 검출된 하나 이상의 얼굴에 기초한 히트맵은 픽셀 판별기에 대한 입력으로서 제공될 수 있다. 예를 들어, 히트맵은 사람의 얼굴(상체 또는 신체의 다른 부분을 포함하거나 제외)의 일부인 컬러화된 이미지의 픽셀을 나타내는 단일 채널일 수 있다. 예를 들어, 히트맵은 얼굴 검출 기법을 사용하여 생성된 다음 컬러화된 이미지에서 각 검출된 얼굴에 대한 가우스 히트맵을 생성할 수 있다. 일부 구현예에서, 픽셀 판별기는 컬러화된 이미지(sRGB) 및 히트맵에 기초하여 세그먼트화 마스크를 생성할 수 있다. 세그먼트화 마스크는 이미지에 도시된 한 명 이상의 사람을 포함할 수 있으며, 예를 들어 이미지의 배경 영역과 이미지의 인체(실루엣)를 구별할 수 있다. 블록(408) 다음에 블록(410)이 올 수 있다.
블록(410)에서, 라벨 예측들이 평가된다. 예를 들어, 라벨 예측의 정확도는 각 컬러화된 이미지에 대해 결정된다. 예를 들어, 픽셀 판별기가 컬러화된 이미지(예: 컬러라이저 CNN(210)에 의해 생성됨)와 실제 컬러 이미지(예: 실제 컬러 이미지(206))를 성공적으로 구별했는지 여부가 평가된다. 라벨 예측의 정확도에 따라 손실 값이 결정된다. 블록(410) 다음에 블록(412)이 올 수 있다.
블록(412)에서, 손실 값은 픽셀 판별기의 하나 이상의 파라미터들을 조정하기 위해 활용된다. 예를 들어, 픽셀 판별기가 신경 네트워크를 사용하여 구현되는 경우, 신경 네트워크의 하나 이상의 노드들과 연관된 가중치 및/또는 신경 네트워크의 하나 이상의 노드 쌍 간의 연결은 손실 값에 기초하여 조정될 수 있다.
일부 구현예에서, 하나 이상의 추가 입력이 픽셀 판별기에 제공될 수 있다. 예를 들어, 입력 그레이스케일 이미지에 기초하여 생성된 피처 벡터는 이미지 분류기를 이용하여 생성될 수 있다. 일부 구현예에서, 분류기는 기계 학습 분류기일 수 있다. 일부 구현예에서, 피처 벡터는 이미지에 특정한 숫자, 예를 들어 부동 소수점 숫자의 세트일 수 있다. 이미지에 대한 피처 벡터는 하나 이상의 다른 이미지에 대한 이미지의 유사성을 나타낼 수 있다. 예를 들어, 분류기는 의미적으로 및/또는 시각적으로 유사한 이미지가 서로 가까운 세트에 할당되도록 피처 벡터(예를 들어, 숫자 세트)를 생성할 수 있다. 따라서 피처 벡터는 이미지와 유사한 이미지를 식별하는데 사용할 수 있다.
방법(400) 또는 그 일부는 추가 입력을 사용하여 여러 번 반복될 수 있다. 예를 들어, 블록(402 및 404)은 다수의 실제 컬러 이미지 세트로 반복될 수 있다. 다른 예에서, 블록(406-412)은 추가적 실제 이미지 및/또는 추가적 컬러화된 이미지로 반복될 수 있다. 방법(400)은 라벨 예측 정확도의 임계 레벨에 도달할 때까지 반복될 수 있다.
도 5은 일부 구현예에 따라 컬러라이저, 예를 들어, 컬러라이저 CNN(210)을 트레이닝하기 위한 예시적 방법(500)을 도시하는 흐름도이다. 일부 구현예에서, 방법(500)은 예를 들어 도 1에 도시된 바와 같은 서버 시스템(102)에서 구현될 수 있다. 일부 구현예에서, 방법(500)의 일부 또는 전부는 도 1에 도시된 바와 같이 하나 이상의 클라이언트 디바이스(120, 122, 124 또는 126), 하나 이상의 서버 디바이스, 및/또는 서버 디바이스(들) 및 클라이언트 디바이스(들) 둘 모두에서 구현될 수 있다. 설명된 예에서, 구현 시스템은 하나 이상의 디지털 프로세서 또는 프로세싱 회로("프로세서") 및 하나 이상의 저장 디바이스(예를 들어, 데이터베이스(106) 또는 다른 저장 디바이스)를 포함한다. 일부 구현예에서, 하나 이상의 서버 및/또는 클라이언트의 상이한 컴포넌트는 방법(500)의 상이한 블록 또는 다른 부분을 수행할 수 있다. 일부 예에서, 제1 디바이스는 방법(500)의 블록들을 수행하는 것으로 설명된다. 일부 구현예는 결과 또는 데이터를 제1 디바이스로 전송할 수 있는 하나 이상의 다른 디바이스(예를 들어, 다른 클라이언트 디바이스 또는 서버 디바이스)에 의해 수행되는 방법(500)의 하나 이상의 블록을 가질 수 있다.
일부 구현예에서, 방법(500) 또는 방법의 일부는 시스템에 의해 자동으로 개시될 수 있다. 일부 구현예에서, 상기 구현 시스템은 제1 디바이스이다. 예를 들어, 방법(또는 그 일부)은 주기적으로 수행되거나 하나 이상의 특정 이벤트 또는 조건, 예를 들어 임계치 아래로 떨어지는 라벨 예측의 정확도, 방법(500)의 마지막 수행 이후 만료된 미리 결정된 기간 및/또는 방법에 의해 판독된 설정에서 특정될 수 있는 발생하는 하나 이상의 다른 조건에 기초하여 수행될 수 있다.
방법(500)은 블록(502)에서 시작할 수 있다. 블록(502)에서, 그레이스케일 이미지는 컬러라이저, 예를 들어 컬러라이저 CNN(210)에 대한 입력으로서 제공된다. 그레이스케일 이미지들은 진정한 그레이스케일 이미지들(202) 및/또는 트레이닝 그레이스케일 이미지들(204)을 포함할 수 있다. 그레이스케일 이미지들은 한 명 이상의 사람을 도시하는 이미지들을 포함할 수 있다. 블록(502) 다음에 블록(504)이 올 수 있다.
블록(504)에서, 중간 컬러화된 이미지 및 대응하는 부분 주석들이 생성된다. 일부 구현예에서, 중간 컬러화된 이미지들 및 대응하는 부분 주석들은 잠재 레이어, 예를 들어, 컬러라이저 CNN(210)의 잠재 레이어(212)에 의해 생성된 중간 피처 벡터에 의해 표현될 수 있다. 부분 주석들은 그레이스케일 이미지들에 도시된 한 명 이상의 사람의 부분 세그먼트화를 나타낼 수 있다. 예를 들어 입력 이미지의 각 픽셀을 사람을 도시하지 않는 것 또는 사람의 특정 부분(예: 머리, 몸통, 팔, 다리 등)을 도시하는 것으로 분류한다. 중간 피처 벡터는 피처 판별기(예: 피처 판별기(218))에 대한 입력으로 제공된다. 블록(504) 다음에 블록(506)이 올 수 있다.
블록(506)에서, 네트워크 출력 컬러화된 이미지들 및 대응하는 부분 주석들이 생성된다. 일부 구현예에서, 네트워크 출력 컬러화된 이미지들 및 대응하는 부분 주석들은 출력 레이어, 예를 들어, 컬러라이저 CNN(210)의 출력 레이어(214)에 의해 생성된 피처 벡터에 의해 표현될 수 있다. 블록(506) 다음에 블록(508)이 올 수 있다.
블록(508)에서, 블록(506)에서 생성된 중간 컬러화된 이미지가 리사이징된다. 예를 들어, 블록(506)에서 생성된 중간 컬러화된 이미지는 블록(508)에서 생성된 네트워크 출력 이미지와 동일한 해상도를 갖는 리사이징된 중간 컬러화된 이미지를 획득하기 위해 업샘플링(또는 업컨버팅)될 수 있다. 일부 구현예에서, 리사이징된 중간 컬러화된 이미지 및 네트워크 출력 이미지의 해상도는 실제 컬러 이미지의 해상도와 동일할 수 있다. 블록(508) 다음에 블록(510)이 올 수 있다.
블록(510)에서, 리사이징된 중간 컬러화된 이미지 및 네트워크 출력 이미지가 결합되어 컬러화된 이미지를 획득한다. 블록(510) 다음에 블록(512)이 올 수 있다.
블록(512)에서, 블록(510)에서 획득된 컬러화된 이미지 및 대응하는 부분 주석이 픽셀 판별기, 예를 들어, 픽셀 판별기(222)에 대한 입력으로서 제공된다. 블록(512) 다음에 블록(514)이 올 수 있다.
블록(514)에서, 피처 판별기 및 픽셀 판별기로부터 라벨 예측이 획득된다. 일부 구현예에서, 각각의 라벨 예측에 기초하여 피처 판별기 및 픽셀 판별기로부터 각각의 손실 값이 획득될 수 있다. 예를 들어, 피처 판별기로부터 피처 손실 값이 획득될 수 있고, 픽셀 판별기로부터 지각 손실 값이 획득될 수 있다.
일부 구현예에서는 기울기 반전 레이어가 사용될 수 있다. 예를 들어, 기울기 반전 레이어는 피처 판별기로부터의 피드백을 컬러라이저 CNN(210)에 제공할 수 있다. 일부 구현예에서, 피처 판별기에 의해 출력된 손실 값은 기울기 반전 레이어를 통해 컬러라이저 CNN에 제공될 수 있다.
일부 구현예에서, 지각 손실 값은 실제 컬러 이미지와 컬러라이저 CNN(210)에 의해 생성된 대응하는 컬러화된 이미지 간의 차이에 기초할 수 있다. 지각 손실은 이미지 쌍의 비교에 기초하여 지각 손실을 결정하는 트레이닝된 신경 네트워크를 사용하여 획득될 수 있다. 일부 구현예에서, 예를 들어, 픽셀 판별기가 멀티 레이어 신경 네트워크를 사용하여 구현되는 경우, 픽셀 판별기의 출력 레이어는 실제 이미지와 컬러라이저 CNN(210)에 의해 생성된 대응하는 컬러화된 이미지 사이의 L2 손실로서 지각 손실 값을 생성할 수 있다. 일부 구현예에서, 픽셀 판별기는 지각 손실 값에 기초하여 라벨 예측을 생성할 수 있다.
라벨 예측 또는 손실 값은 컬러라이저, 예를 들어 컬러라이저 CNN(210)을 트레이닝하는데 사용된다. 일부 구현예에서, 손실 값은 L1 손실 값일 수 있다. 예를 들어, 컬러라이저가 래더 CNN k로서 구현되는 경우, 신경 네트워크의 하나 이상의 노드들과 연관된 가중치 및/또는 신경 네트워크의 하나 이상의 노드 또는 레이어 쌍 간의 연결은 손실 값에 기초하여 조정될 수 있다.
일부 구현예에서, 예를 들어, 네트워크 출력 이미지들(232) 및/또는 컬러화된 이미지들(236)로부터의 역전파는 잠재 레이어(212)에게로 직접 전송될 수 있다. 이러한 역전파는 컬러라이저 CNN 210의 트레이닝 속도를 높일 수 있다.
방법(500) 또는 그 일부는, 예를 들어, 트레이닝 중인 컬러라이저가 피처 판별기 및/또는 픽셀 판별기에 의한 라벨 예측이 부정확성의 임계 수준을 충족하게 하는 컬러화된 이미지를 생성할 때까지 임의의 횟수로 반복될 수 있다.
따라서 입력으로 그레이스케일 이미지를 취하고 그레이스케일 이미지에 컬러(크로마)를 추가하고 그레이스케일 이미지에 도시된 한 명 이상의 사람에 대한 주석을 추가하는 컬러화된 이미지를 출력으로서 생성할 수 있는 방법(500)을 사용하여 트레이닝된 컬러라이저가 획득된다. 트레이닝에 피처 판별기를 사용하면 트레이닝된 컬러라이저에 의해 생성된 컬러화된 이미지가 실제 컬러 이미지와 유사한 구조를 갖도록 보장할 수 있다. 컬러라이저의 잠재 레이어의 출력을 입력으로 사용하는 피처 판별기를 사용하면 컬러라이저가 진정한 그레이스케일 이미지와 트레이닝 그레이스케일 이미지 모두에 대해 유사한 피처 벡터를 생성하도록 할 수 있다. 예를 들어, 진정한 그레이스케일 이미지는 사용 가능한 컬러 데이터가 없는 과거 흑백 사진을 포함할 수 있다. 또한, 트레이닝에 픽셀 판별기를 사용하면 트레이닝된 컬러라이저에 의해 생성된 컬러화된 이미지가 실제 컬러 이미지와 유사한 텍스처를 갖도록 보장할 수 있다.
전술한 바와 같은 방법(500)을 사용하여 트레이닝된 컬러라이저 CNN(210)은 이미지를 컬러화하기 위해 활용될 수 있는 트레이닝된 기계 학습 모델에 제공될 수 있다. 따라서, 트레이닝된 컬러라이저 CNN(210)은 도 2를 참조하여 설명된 다른 블록, 예를 들어 결합기(216), 피처 판별기(218), 리사이저(220) 및/또는 픽셀 판별기(222) 없이 제공될 수 있다. 예를 들어, 트레이닝된 컬러라이저 CNN(210)은 이미지 컬러화가 임의의 디바이스에서 수행될 수 있도록 제공될 수 있다. 예를 들어, 트레이닝된 컬러라이저 CNN(210)은 클라이언트 디바이스(120-126)의 운영 체제의 일부로서 다른 애플리케이션(154)의 일부로서 이미지 애플리케이션(156a)의 일부로서 클라이언트 디바이스(120-126) 중 임의의 것에 제공될 수 있다.
일부 구현예에서, 예를 들어, 컬러라이저 CNN(210)의 온-디바이스 트레이닝(또는 재트레이닝)이 수행될 때, GAN 구성(200)의 하나 이상의 추가 블록들 또는 GAN 구성(200)의 전체가 디바이스 상에 제공될 수 있다. 예를 들어, 서버 디바이스(104)는 이미지 애플리케이션(156b) 및/또는 모델 트레이닝 애플리케이션(158)에서 GAN 구성(200)을 구현할 수 있다.
도 6은 일부 구현예에 따라, 트레이닝된 컨볼루션 신경 네트워크를 사용하여 이미지를 컬러화하는 예시적 방법(600)을 도시하는 흐름도이다. 예를 들어, 트레이닝된 컨볼루션 신경 네트워크는 도 5를 참조하여 위에서 설명된 기법을 사용하여 트레이닝 후에 획득된 컬러라이저 CNN(210)일 수 있다.
일부 구현예에서, 방법(600)은 예를 들어 도 1에 도시된 바와 같은 서버 시스템(102)에서 구현될 수 있다. 일부 구현예에서, 방법(600)의 일부 또는 전부는 도 1에 도시된 바와 같이 하나 이상의 클라이언트 디바이스(120, 122, 124 또는 126), 하나 이상의 서버 디바이스, 및/또는 서버 디바이스(들) 및 클라이언트 디바이스(들) 둘 모두에서 구현될 수 있다. 설명된 예에서, 구현 시스템은 하나 이상의 디지털 프로세서 또는 프로세싱 회로("프로세서") 및 하나 이상의 저장 디바이스(예를 들어, 데이터베이스(106) 또는 다른 저장 디바이스)를 포함한다. 일부 구현예에서, 하나 이상의 서버 및/또는 클라이언트의 상이한 컴포넌트는 방법(600)의 상이한 블록 또는 다른 부분을 수행할 수 있다. 일부 예에서, 제1 디바이스는 방법(600)의 블록들을 수행하는 것으로 설명된다. 일부 구현예는 결과 또는 데이터를 제1 디바이스로 전송할 수 있는 하나 이상의 다른 디바이스(예를 들어, 다른 클라이언트 디바이스 또는 서버 디바이스)에 의해 수행되는 방법(600)의 하나 이상의 블록을 가질 수 있다.
일부 구현예에서, 방법(600) 또는 방법의 일부는 시스템에 의해 자동으로 개시될 수 있다. 일부 구현예에서, 상기 구현 시스템은 제1 디바이스이다. 예를 들어, 방법(또는 그 일부)은 주기적으로 수행되거나 하나 이상의 특정 이벤트 또는 조건, 예를 들어 임계치 아래로 떨어지는 라벨 예측의 정확도, 방법(400)의 마지막 수행 이후 만료된 미리 결정된 기간 및/또는 방법에 의해 판독된 설정에서 특정될 수 있는 발생하는 하나 이상의 다른 조건에 기초하여 수행될 수 있다.
방법(600)은 블록(602)에서 시작할 수 있다. 블록(602)에서, 그레이스케일 이미지가 수신된다. 예를 들어, 그레이스케일 이미지는 한 명 이상의 사람을 도시하는 오래된 흑백 사진, 예를 들어 스캔된 사진일 수 있다. 예를 들어, 그레이스케일 이미지는 예를 들어 사용자가 소프트웨어 애플리케이션의 이미지 컬러화 기능을 활성화할 때, 예를 들어 사용자 인터페이스에 디스플레이된 사용자 인터페이스 옵션을 선택함으로써 사용자 입력으로서 수신될 수 있다. 예를 들어, 사용자는 사용자 인터페이스를 클릭하거나 탭하거나 음성 명령 등을 통해 사용자 인터페이스 옵션을 활성화할 수 있다.
다른 예에서, 예를 들어, 컬러화 구성이 API(응용 프로그래밍 인터페이스)를 통해 제공되거나 그렇지 않으면 서비스로서 제공되는 경우, 그레이스케일 이미지는 API에 대한 프로그램 호출, 이미지 컬러화 서비스로의 업로드 등을 통해 수신될 수 있다. API는 예를 들어 스마트폰, 디지털 카메라, 태블릿 또는 이미지 캡처 기능이 있는 임의의 다른 디바이스를 위한 운영 체제 API로서 제공될 수 있다. API는 예를 들어 이미지를 컬러화하기 위한 요청을 하기 위해 디바이스에서 실행하는 애플리케이션에 의해 활용될 수 있다.
일부 구현예에서, 그레이스케일 이미지는 디지털 카메라를 사용하여 캡처된 이미지일 수 있다. 예를 들어, 디지털 카메라는 캡처되는 장면이 어두울 때 그레이스케일 이미지를 캡처할 수 있다. 이러한 캡처는 예를 들어 장면을 적외선으로 조명하고 적외선 지원 센서로 이미지를 캡처함으로써 수행될 수 있다. 이러한 유형의 캡처에서, 카메라를 작동하는 사람과 장면에 있는 사람은 조명이 가시광선 범위 밖에 있기 때문에(적외선) 볼 수 없지만, 디지털 카메라의 적외선 가능 이미징 센서는 흑백 사진을 캡처할 수 있다. 예를 들어, 디지털 카메라는 스마트폰 카메라일 수 있다. 다른 예에서, 디지털 카메라는 적외선 방출기 및 적외선 가능 센서를 갖는 보안 카메라일 수 있다.
전술한 설명이 그레이스케일 이미지의 특정 예를 언급하지만, 임의의 그레이스케일 이미지, 예를 들어 크로마 또는 색상 정보가 없는 디지털 이미지가 활용될 수 있다는 것이 이해될 것이다. 블록(602) 다음에 블록(604)이 올 수 있다.
블록(604)에서, 그레이스케일 이미지가 다운샘플링된다. 그레이스케일 이미지를 다운샘플링하는 것은 이미지 해상도를 줄이는 것을 포함할 수 있다. 예를 들어, 이미지 해상도는 256x256 픽셀, 352x352 픽, 또는 다른 적절한 해상도로 변경될 수 있는 반면, 수신된 그레이스케일 이미지는 더 높은 해상도, 예를 들어, 1024x1024 픽셀, 2048x2048 픽셀 또는 임의의 다른 해상도일 수 있다. 이미지를 다운샘플링하면 이미지를 컬러화하는 계산 복잡성을 줄일 수 있다. 예를 들어, 다운샘플링된 이미지를 컬러화하면 더 낮은 프로세서 리소스, 더 낮은 메모리 등이 필요할 수 있다. 계산 부하의 감소는 또한 상대적으로 낮은 계산 용량을 가진 디바이스 예를 들어, 스마트폰, 태블릿, 디지털 카메라 등에서 컬러화가 수행될 수 있게 한다. 일부 구현예에서, 다운샘플링 후에 달성되는 목표 해상도는 이미지를 컬러화하는데 사용되는 컬러라이저 컨볼루션 신경 네트워크(예를 들어, 컬러라이저 CNN(210))의 구성에 기초하여 선택될 수 있다. 블록(604) 다음에 블록(606)이 올 수 있다.
블록(606)에서, 그레이스케일 이미지에 기초한 중간 컬러화된 이미지는 예를 들어, 도 5를 참조하여 위에서 설명된 바와 같이 그레이스케일 이미지를 컬러화하도록 트레이닝된 컬러라이저 CNN, 예를 들어 컬러라이저 CNN(210)의 잠재 레이어로부터 획득된다. 일부 구현예에서, 중간 컬러화된 이미지의 해상도는 입력 그레이스케일 이미지 또는 다운샘플링된 그레이스케일 이미지의 해상도보다 낮을 수 있다. 예를 들어, 중간 컬러화된 이미지는 16x16 픽셀, 32x32 픽셀, 64x64 픽셀 등의 해상도를 가질 수 있다. 일부 구현예에서, 중간 컬러화된 이미지의 해상도는 중간 컬러화된 이미지가 획득되는 컬러라이저 CNN의 특정한 잠재 레이어에 기초할 수 있다. 블록(606) 다음에 블록(608)이 올 수 있다.
블록(608)에서, 중간 컬러화된 이미지가 리사이징된다. 예를 들어, 중간 컬러화된 이미지는 그레이스케일 이미지 또는 다운샘플링된 그레이스케일 이미지와 동일한 해상도로 리사이징(업샘플링)될 수 있다. 블록(608) 다음에 블록(610)이 올 수 있다.
블록(610)에서, 그레이스케일 이미지에 기초한 네트워크 출력 이미지는 컬러라이저 CNN, 예를 들어 컬러라이저 CNN(210)의 출력 레이어로부터 획득된다. 일부 구현예에서, 네트워크 출력 이미지의 해상도는 그레이스케일 이미지 또는 다운샘플링된 그레이스케일 이미지와 동일할 수 있다. 블록(610) 다음에 블록(612)이 올 수 있다.
블록(612)에서, 리사이징된 중간 컬러화된 이미지와 네트워크 출력 이미지가 결합되어 컬러화된 이미지를 획득한다. 블록(612) 다음에 블록(614)이 올 수 있다.
블록(614)에서, 컬러화된 이미지가 업샘플링된다. 예를 들어, 컬러화된 이미지는 그레이스케일 이미지와 동일한 크기로 업샘플링될 수 있다. 또한, 컬러화된 이미지는 그레이스케일 이미지, 예를 들어 그레이스케일 이미지 또는 다운샘플링된 그레이스케일 이미지와 결합된다. 조합의 결과로서 출력 이미지가 획득된다. 출력 이미지는 블록(602)에서 수신된 그레이스케일 이미지와 동일한 해상도를 가질 수 있다.
방법(600)을 사용하여 임의의 그레이스케일 이미지를 컬러화하는데 사용될 수 있다. 예를 들어, 방법(600)은 한 명 이상의 사람을 도시하는 그레이스케일 이미지를 컬러화하는데 사용될 수 있다. 예를 들어, 방법(600)은 흑백 사진, 예를 들어 디지털화된 카메라를 사용하여 캡처된 사진을 컬러화하는데 사용될 수 있다. 일부 구현예에서, 출력 이미지를 포함하는 사용자 인터페이스가 디스플레이될 수 있다. 일부 구현예에서, 사용자 인터페이스는 사용자가 출력 이미지를 보고 편집 예를 들어 채도, 밝기, 화이트 밸런스 등을 조정하게 할 수 있다. 일부 구현예에서, 사용자 인터페이스는 출력 이미지 및 입력 그레이스케일 이미지를 예를 들어, 나란히 또는 다른 구성으로 보여줄 수 있다. 일부 구현예에서, 사용자 인터페이스는 사용자가 출력 이미지 및 입력 그레이스케일 이미지의 디스플레이를 토글; 출력 이미지를 저장소에 저장; 출력 이미지를 인쇄; 출력 이미지를 이미지 라이브러리 또는 이미지 공유 서비스에 업로드; 출력 이미지를 메시징 애플리케이션을 통해 다른 사용자에게 전송하게 하는 옵션을 포함할 수 있다.
방법(600)은 임의의 수의 그레이스케일 이미지에 대해 반복될 수 있다. 일부 구현예에서, 방법(600)의 하나 이상의 블록은 생략되거나 다른 블록과 결합될 수 있다. 예를 들어, 일부 구현예에서, 블록(604)은, 예를 들어, 컬러라이저 CNN이 그레이스케일 이미지를 직접 프로세싱할 수 있는 경우(예를 들어, 방법(600)이 높은 계산 용량을 갖는 컴퓨팅 디바이스, 예를 들어 서버에서 구현되는 경우; CNN은 고해상도 입력 등을 받아들일 수 있는 경우 등) 생략될 수 있다. 일부 구현예에서, 블록(614)은 예를 들어, 컬러라이저 CNN에 의해 생성된 컬러화된 이미지가 그레이스케일 이미지와 동일하거나 유사한 해상도인 경우, 컬러화된 이미지를 먼저 업샘플링하지 않고 컬러화된 이미지와 그레이스케일 이미지를 결합하도록 수행될 수 있다.
일부 구현예에서, 트레이닝된 모델, 예를 들어, 컬러라이저 CNN(210), 피처 판별기(218), 또는 픽셀 판별기(222)는 예를 들어 추가 트레이닝 데이터의 사용에 기초하여 업데이트될 수 있다. 추가 트레이닝은 모델의 정확도 및/또는 속도를 개선하는데 도움이 될 수 있다. 일부 구현예에서, 예를 들어, 사용자가 트레이닝된 모델을 업데이트하기 위해 사용자 데이터를 사용하는 것에 동의하는 경우, 트레이닝된 모델은 사용자 활동 또는 응답에 기초하여 예를 들어 특정 클라이언트 디바이스에서 로컬적으로 업데이트될 수 있다. 예를 들어, 이러한 사용자 데이터는 하나 이상의 이미지, 예를 들어, 컬러 이미지 또는 그레이스케일 이미지를 포함할 수 있다. 이러한 구현예에서 사용자 데이터는 전송되거나 공유되지 않는다. 또한, 사용자가 동의를 제공하면, 트레이닝된 모델에 대한 업데이트가 네트워크(130)를 통해 예를 들어 서버 디바이스(104) 또는 하나 이상의 다른 클라이언트 디바이스에 제공될 수 있다.
일부 구현예에서, 트레이닝된 모델은 디바이스(예를 들어, 클라이언트 디바이스(120-124))에 기초하여 맞춤화될 수 있다. 예를 들어, 서로 다른 클라이언트 디바이스는 사용 가능한 하드웨어, 예를 들어 단일 코어 프로세서, 멀티코어 프로세서, 하나 이상의 병렬 프로세서, 다수의 GPU(그래픽 프로세싱 유닛)를 가지는 그래픽 프로세서, 재구성 가능한 프로세서(예: FPGA), 신경 네트워크 프로세서 등에 기초하여 상이한 프로세싱 능력을 가질 수 있다. 또한, 상이한 클라이언트 디바이스는 메모리, 배터리 용량, 네트워크 대역폭 등과 같은 다른 리소스의 다른 가용성 수준을 가질 수 있다.
예를 들어, 상대적으로 더 높은 복잡성을 갖는 트레이닝된 모델은 예를 들어, 추론 엔진이 활용하는 병렬 프로세싱에 최적화된 GPU 또는 신경 네트워크 프로세서를 갖는 디바이스(예: 클라이언트 디바이스(120-124) 또는 서버 디바이스(104) 중 임의의 것)에 제공될 수 있다. 이 예에서, 클라이언트 디바이스의 더 큰 처리 능력을 사용하여 트레이닝된 모델을 구현한다.
다른 예에서, 단순화된 트레이닝된 모델(예: 더 적은 신경 네트워크 노드들 또는 레이어들을 갖는)이 더 큰 리소스 제약을 갖는 클라이언트 디바이스, 예를 들어 제한된 능력을 갖는 단일 코어 프로세서에 제공될 수 있다. 일부 구현예에서, 다수의 트레이닝된 모델이 클라이언트 디바이스에 제공될 수 있다. 호출 시, 예를 들어 이미지를 컬러화하기 위해, 로컬 분류기를 적용하면, 예를 들어 네트워크 연결, 사용 가능한 배터리 용량, 사용 가능한 메모리 등과 같은 컨텍스트 요인에 따라 적절한 트레이닝된 모델이 활용될 수 있다.
그레이스케일 이미지를 자동으로 컬러화할 때 한 가지 문제는 생성된 출력 이미지에서 올바른 화이트 밸런스를 달성하기 어렵다는 것이다. 본 명세서에 기술된 구현예는 적절한 화이트 밸런스로 이미지를 컬러화할 수 있다. 실제 컬러 이미지들로 트레이닝된 컬러라이저 컨볼루션 신경 네트워크는 적절한 화이트 밸런스를 가진 픽셀 값을 갖는 컬러화된 이미지를 생성할 수 있다.
그레이스케일 이미지를 자동으로 컬러화할 때의 또 다른 문제는 컬러화된 이미지가 적절하고 다양한 색상을 갖도록 하는 것이다. 예를 들어, 그레이스케일 이미지가 여러 사람을 도시하는 흑백 사진인 경우 비슷한 색상(예: 모두 비슷한 색조의 옷을 입고 있음)으로 상이한 사람을 도시하지 않는 것이 좋다. 설명된 기법은 입력 그레이 픽셀의 픽셀 값과 컬러화된 이미지의 픽셀 값 사이에 1:1 일치가 없음을 보장함으로써 다양한 색상을 생성할 수 있다.
또 다른 문제는 그레이스케일 이미지가 한 명 이상의 사람을 도시하는 오래된 이미지(예: 이전 시대에 캡처된 이미지, 다른 문화의 대상 등)인 경우 발생한다. 이러한 상황에서, 유사한 시대 또는 문화로부터의 실제 트레이닝 이미지가 없을 수 있다. 현대 사진이나 다른 문화권의 사진으로 트레이닝된 기계 학습 모델은 이러한 이미지에 적응하지 못할 수 있다. 이전 시대의 사람들은 일반적으로 현대 사진의 사람들과 다른 의복 스타일과 다른 색조를 입었다. 이러한 시대의 트레이닝 이미지가 충분하지 않기 때문에, 이러한 기계 학습 모델에서 생성된 컬러화된 이미지에는 다양한 유형의 오류가 발생할 수 있다. 예를 들어, 피부 영역의 일관성 없는 착색과 같은 오류, 예를 들어 얼굴 영역이 손과 다르게 컬러화됨; 피부 영역은 의복과 동일한 색상으로 할당되는 등의 오류가 발생할 수 있다. 이것은 도메인 적응 문제라고 할 수 있다.
본 명세서에 기술된 일부 구현예는 이러한 기술적 문제를 해결하고 우수한 화이트 밸런스 및 색상 다양성을 갖는 컬러화된 이미지를 생성할 수 있으며 입력 이미지의 상이한 도메인에 적응할 수 있다. 특히, 본 명세서에 설명된 바와 같이 부분 세그먼트화 및 컬러화 모두 수행하도록 기계 학습 모델을 트레이닝하는 것은 설명된 문제를 극복하는 트레이닝된 모델을 제공할 수 있다. 또한, 본 명세서에 기술된 구현예는 상이한 라벨 예측 및/또는 손실 값을 생성하는 2개의 대립 판별기 네트워크를 포함하는 생성적 대립 네트워크(GAN) 구성을 사용한다. 두 개의 손실 값들로 기계 학습 모델을 트레이닝하면 기계 학습 모델이 다양한 유형의 그레이스케일 입력 이미지에 강건함을 보장하고 이미지 구조와 이미지 텍스처 모두에 기초하여 컬러화된 이미지를 생성할 수 있다.
부분 세그먼트화 및 이미지 컬러화 모두 수행하도록 트레이닝된 기계 학습 모델을 사용하면 몇 가지 기술적 이점이 있다. 예를 들어, 트레이닝된 모델에 의해 생성된 부분 세그먼트화 정보는 입력 이미지에 도시된 한 명 이상의 사람이 착용한 의복에 대응하는 입력 이미지의 부분을 식별하고, 모델은 모델을 트레이닝하는데 사용되는 컬러 이미지들에 기초하여 의복에 대한 색상을 생성한다.
또 다른 이점은 트레이닝된 모델이 부분 주석들에 기초하여 피부 영역을 보다 정확하게 식별할 수 있다는 것이며, 이를 통해 입력 이미지에 도시된 사람의 모든 피부 영역이 컬러화되도록 할 수 있다. 피부 톤 손실을 사용하면 피부 영역이 피부색이 아닌 색상을 가지지 않도록 할 수 있다.
더욱이, 채도 손실을 사용하면 충분한 양의 채도를 갖는 출력 이미지를 생성할 수 있다. 또한, 일부 구현예에서, 채도 손실의 사용은 사람에 대응하지 않는 영역, 예를 들어 부분 주석에서 식별되지 않은 입력 이미지의 영역으로 제한될 수 있다. 이러한 방식으로 채도 손실의 사용을 제한하면 입력 이미지에 도시된 사람의 피부 영역에서 색상이 과포화되는 것을 방지할 수 있다.
앞의 설명은 부분 세그먼트화 및 컬러화를 수행하는 컬러라이저 CNN을 참조하지만, 다른 모델도 사람을 도시하는 이미지를 컬러화하도록 트레이닝될 수 있다. 예를 들어, 모델은 이미지에 도시된 사람의 포즈를 검출하고 컬러화를 수행하도록 트레이닝될 수 있다. 포즈 검출은 예를 들어, 사람의 복수의 키포인트를 검출하는 것을 포함할 수 있다. 예를 들어, 키포인트는 이미지에 도시된 사람의 머리, 어깨, 팔꿈치, 손목, 엉덩이, 무릎 및 발목 중 하나 이상에 대응하는 이미지 픽셀을 포함할 수 있다. 포즈 검출은 또한 이러한 점들 사이의 연결, 예를 들어 골격 연결을 검출하는 것을 포함할 수 있다.
또한, 다른 데이터 세트가 다른 분포를 가질 때(예: 모자와 같은 특정 유형의 헤드기어를 착용한 사람의 도시 빈도), 데이터세트 분류기를 사용하여 컬러화된 이미지를 생성하는 컬러라이저 CNN이 입력 데이터 세트의 특정 피처에 기초하여 이미지를 컬러화하지 않거나 입력 이미지에서 발생하지 않는 트레이닝 데이터세트로부터 피처를 학습하지 않도록 보장한다. 예를 들어, 판별기(예: 픽셀 판별기)는 데이터세트 유형을 입력으로 수신할 수 있으며, 생성 모델이 이러한 기능을 학습할 가능성을 줄이는 트레이닝 피드백을 생성함으로써 생성 모델에 페널티를 부여하는데 사용할 수 있다.
또한, 지각 손실 값에 대한 대안으로서 또는 이에 더하여, 평균 제곱 오차의 픽셀당 계산에 기초하여 컬러화된 이미지의 하나 이상의 픽셀에 대해 이웃 색 손실 또는 크로마 손실이 계산될 수 있다. 예를 들어, 이웃 색 손실이 계산되는 각 픽셀에 대해, 유사한 픽셀 색상을 갖는 이미지의 다른 픽셀, 예를 들어 이웃 픽셀을 식별하기 위해 마스크가 생성될 수 있다. 마스크는 컬러라이저 CNN에 의해 생성된 컬러화된 이미지와 실제 컬러 이미지 모두에 대해 생성될 수 있다. 각 마스크의 평균 제곱 오차를 비교하여 이웃 색 손실을 얻을 수 있다. 이웃 색 손실은 컬러라이저 CNN에 대한 피드백으로 제공될 수 있으며 컬러라이저 CNN에 의해 출력된 컬러 이미지가 적절한 화이트 밸런스 및 색상 다양성을 갖도록 보장할 수 있다.
도 7은 본 명세서에 기술된 하나 이상의 구성들을 구현하기 위해 사용될 수 있는 예시적 디바이스(700)의 블록도이다. 일 예에서, 디바이스(700)는 클라이언트 디바이스, 예를 들어 도 1에 도시된 클라이언트 디바이스들(115) 중 임의의 것을 구현하는데 사용될 수 있다. 대안적으로, 디바이스(700)는 서버 디바이스, 예를 들어 서버(101)를 구현할 수 있다. 일부 구현예에서, 디바이스(700)는 클라이언트 디바이스, 서버 디바이스 또는 클라이언트 및 서버 디바이스 둘 모두를 구현하는데 사용될 수 있다. 디바이스(700)는 임의의 적절한 컴퓨터 시스템, 서버 또는 전술한 바와 같은 기타 전자 또는 하드웨어 디바이스일 수 있다.
본 명세서에 기술된 하나 이상의 방법은 임의의 유형의 컴퓨팅 디바이스에서 실행될 수 있는 독립 실행형 프로그램, 웹 브라우저에서 실행되는 프로그램, 모바일 컴퓨팅 디바이스(예: 셀폰, 스마트폰, 태블릿 컴퓨터, 웨어러블 디바이스(손목시계, 팔목밴드, 보석, 모자, 가상 현실 고글 또는 안경, 증강 현실 고글 또는 안경, 헤드 마운트 디스플레이 등), 노트북 컴퓨터 등)에서 실행되는 모바일 어플리케이션("앱")에서 실행될 수 있다. 일 예시에서, 클라이언트/서버 아키텍처가 사용될 수 있어서, 예를 들어, 모바일 컴퓨팅 디바이스(클라이언트 디바이스로서)는 사용자 입력 데이터를 서버 디바이스로 보내고, 서버로부터 출력(예를 들어, 디스플레이용)을 위한 최종 출력 데이터를 수신한다. 다른 예시에서, 모든 계산은 모바일 컴퓨팅 디바이스의 모바일 앱(및/또는 다른 앱) 내에서 수행될 수 있다. 다른 예에서, 계산은 모바일 컴퓨팅 디바이스와 하나 이상의 서버 디바이스 사이에서 분할될 수 있다.
일부 구현예에서, 디바이스(700)는 프로세서(702), 메모리(704), 및 입/출력(I/O) 인터페이스(706)를 포함한다. 프로세서(702)는 프로그램 코드를 실행하고 디바이스(700)의 기본 동작을 제어하기 위한 하나 이상의 프로세서 및/또는 프로세싱 회로일 수 있다. "프로세서"는 데이터, 신호 또는 기타 정보를 프로세싱하는 임의의 적절한 하드웨어 시스템, 메커니즘 또는 컴포넌트를 포함한다. 프로세서는 하나 이상의 코어(예: 단일 코어, 듀얼 코어 또는 다중 코어 구성)를 갖는 범용 CPU, 다중 프로세싱 유닛(예: 멀티프로세서 구성), 그래픽 프로세싱 유닛(GPU), FPGA(Field-Programmable Gate Array), ASIC(Application-Specific Integrated Circuit), CPLD(Complex Programmable Logic Device), 기능을 구현하기 위한 전용 회로, 신경 네트워크 기반 프로세싱을 구현하는 특수-목적 프로세서, 신경 회로, 행렬 계산(예: 행렬 곱셈)에 최적화된 프로세서 또는 기타 시스템을 포함하는 시스템을 포함할 수 있다. 일부 구현예에서, 프로세서(702)는 신경 네트워크 프로세싱을 구현하는 하나 이상의 코-프로세서를 포함할 수 있다. 일부 구현예에서, 프로세서(702)는 확률적 출력을 생성하기 위해 데이터를 프로세싱하는 프로세서일 수 있으며, 예를 들어, 프로세서(702)에 의해 생성된 출력은 부정확할 수 있거나 예상된 출력으로부터의 범위 내에서 정확할 수 있다. 프로세싱은 특정한 지리적 위치로 제한되거나 시간적 제한이 있을 필요가 없다. 예를 들어, 프로세서는 "실시간", "오프라인", "배치 모드" 등에서 그 기능을 수행할 수 있다. 프로세싱의 일부는 상이한(또는 동일한) 프로세싱 시스템에 의해 상이한 시간 및 상이한 위치에서 수행될 수 있다. 컴퓨터는 메모리와 통신하는 임의의 프로세서일 수 있다.
메모리(704)는 일반적으로 프로세서(702)에 의한 액세스를 위해 디바이스(700)에 제공되며, 프로세서에 의한 실행을 위한 명령어 저장에 적합하고 프로세서(702)와 분리되어 위치되거나 및/또는 그와 통합된 임의의 적절한 프로세서 판독 가능 저장 매체, 예를 들어 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 전기적 소거 가능 읽기 전용 메모리(EEPROM), 플래시 메모리 등일 수 있다. 메모리(704)는 운영 체제(708), 기계 학습 애플리케이션(730), 다른 애플리케이션(712) 및 애플리케이션 데이터(714)를 포함하는 프로세서(702)에 의해 서버 디바이스(700) 상에서 동작하는 소프트웨어를 저장할 수 있다. 다른 애플리케이션(712)은 데이터 디스플레이 엔진, 웹 호스팅 엔진, 이미지 디스플레이 엔진, 알림 엔진, 소셜 네트워킹 엔진 등과 같은 애플리케이션을 포함할 수 있다. 일부 구현예에서, 기계 학습 애플리케이션(730) 및 다른 애플리케이션(712)은 프로세서(702)로 하여금 본 명세서에 기술된 기능 예를 들어, 도 2, 3, 4 및 7의 방법의 일부 또는 전부를 수행하게 하는 명령어를 각각 포함할 수 있다.
다른 애플리케이션(712)은 예를 들어, 이미지 편집 애플리케이션, 미디어 디스플레이 애플리케이션, 통신 애플리케이션, 웹 호스팅 엔진 또는 애플리케이션, 매핑 애플리케이션, 미디어 공유 애플리케이션 등을 포함할 수 있다. 본 명세서에 개시된 하나 이상의 방법은 여러 환경 및 플랫폼에서, 예를 들어, 임의의 유형의 컴퓨팅 디바이스에서 실행할 수 있는 독립 실행형 컴퓨터 프로그램, 웹페이지를 갖는 웹 애플리케이션, 모바일 컴퓨팅 디바이스에서 실행되는 모바일 애플리케이션("앱")으로 동작할 수 있다.
다양한 구현예에서, 기계 학습 애플리케이션은 베이지안 분류기, 지원 벡터 기계, 신경 네트워크 또는 기타 학습 기법을 활용할 수 있다. 일부 구현예에서, 기계 학습 애플리케이션(730)은 트레이닝된 모델(734), 추론 엔진(736) 및 데이터(732)를 포함할 수 있다. 일부 구현예에서, 데이터(732)는 트레이닝 데이터, 예를 들어 트레이닝된 모델(734)을 생성하는데 사용되는 데이터를 포함할 수 있다. 예를 들어, 트레이닝 데이터는 텍스트, 이미지, 오디오, 비디오 등과 같은 임의의 유형의 데이터를 포함할 수 있다. 트레이닝된 모델(734)이 컬러라이저, 예를 들어 컬러라이저 CNN(210) 또는 다른 유형의 컬러라이저 모델인 경우, 트레이닝 데이터는 실제 컬러 이미지(206)를 포함할 수 있다.
트레이닝 데이터는 임의의 소스, 예를 들어 트레이닝용으로 특별히 표시된 데이터 저장소, 기계 학습을 위한 트레이닝 데이터로 사용하도록 허가된 데이터 등으로부터 획득될 수 있다. 하나 이상의 사용자가 각각의 사용자 데이터를 기계 학습 모델(예: 트레이닝 모델(734)을 트레이닝하는데 사용하는 것을 허용하는 구현예에서, 트레이닝 데이터는 그러한 사용자 데이터를 포함할 수 있다. 사용자가 각자의 사용자 데이터의 사용을 허용하는 구현예에서, 데이터(732)는 이미지(예를 들어, 사진 또는 다른 사용자 생성 이미지)와 같은 허용된 데이터를 포함할 수 있다.
일부 구현예에서, 트레이닝 데이터는 트레이닝을 목적으로 생성된 합성 데이터, 예를 들어 트레이닝 중인 컨텍스트에서 사용자 입력 또는 활동에 기초하지 않는 데이터, 예를 들어 시뮬레이션된 사진 또는 기타 컴퓨터 생성 이미지로부터 생성된 데이터를 포함할 수 있다. 일부 구현예에서, 기계 학습 애플리케이션(730)은 데이터(732)를 제외한다. 예를 들어, 이러한 구현예에서, 트레이닝된 모델(734)은 예를 들어, 상이한 디바이스 상에서 생성될 수 있고, 기계 학습 애플리케이션(730)의 일부로서 제공될 수 있다. 다양한 구현예에서, 트레이닝된 모델(734)은 모델 구조 또는 형태 및 연관된 가중치를 포함하는 데이터 파일로서 제공될 수 있다. 추론 엔진(736)은 트레이닝된 모델(734)에 대한 데이터 파일을 읽고 트레이닝된 모델(734)에 특정된 모델 구조 또는 형태에 기초하여 노드 연결성, 레이어 및 가중치를 갖는 신경 네트워크를 구현할 수 있다.
일부 구현예에서, 트레이닝된 모델(734)은 하나 이상의 모델 형태 또는 구조를 포함할 수 있다. 예를 들어, 모델 형태 또는 구조는 선형 네트워크, 복수의 레이어(예: 각 레이어가 선형 네트워크인 입력 레이어와 출력 레이어 사이의 "히든 레이어")를 구현하는 심층 신경 네트워크, 컨벌루션 신경 네트워크(예: 입력 데이터를 다수의 부분 또는 타일로 분할 또는 파티셔닝하는 네트워크가 하나 이상의 신경 네트워크 레이어들을 개별적으로 사용하여 각 타일을 프로세싱하고, 각 타일의 프로세싱으로부터의 결과를 집계), 시퀀스-투-시퀀스 신경 네트워크(예: 문장 내 단어, 비디오 내 프레임 등과 같은 순차적 데이터를 입력으로서 취하고, 결과 시퀀스를 출력으로서 생성하는 네트워크) 등과 같은 임의의 유형의 신경 네트워크를 포함할 수 있다. 모델 형태 또는 구조는 다양한 노드 간의 연결 및 노드의 레이어로의 조직을 특정한다.
예를 들어, 제1 레이어(예: 입력 레이어)의 노드는 데이터를 입력 데이터(732) 또는 애플리케이션 데이터(714)로서 수신할 수 있다. 예를 들어, 트레이닝된 모델(734)이 컬러라이저인 경우, 입력 데이터는 그레이스케일 이미지, 예를 들어, 진정한 그레이스케일 이미지(202) 및/또는 트레이닝 그레이스케일 이미지(204)를 포함할 수 있다. 이러한 데이터는 예를 들어, 트레이닝된 모델이 이미지 분석 또는 이미지 생성을 위해 사용될 때, 예를 들어 노드 당 하나 이상의 픽셀을 포함할 수 있다. 후속 중간 레이어는 모델 형태 또는 구조에서 특정된 연결성에 따라 이전 레이어의 노드의 입력 출력으로 수신될 수 있다. 이러한 레이어는 히든 레이어 또는 잠재 레이어라고 지칭될 수 있다.
최종 레이어(예를 들어, 출력 레이어)는 기계 학습 애플리케이션의 출력을 생성한다. 예를 들어, 출력은 이미지에 도시된 사람의 하나 이상의 부분을 식별하는 부분 주석이 있는 컬러 이미지일 수 있다. 일부 구현예에서, 모델 형태 또는 구조는 또한 각각의 레이어에서 노드의 수 및/또는 유형을 특정한다.
다른 구현예에서, 트레이닝된 모델(734)은 모델 구조 또는 형태에 따라 레이어로 배열된 복수의 노드를 포함할 수 있다. 일부 구현예에서, 노드는 예를 들어 하나의 입력 유닛을 프로세싱하여 하나의 출력 유닛을 생성하도록 구성된 메모리가 없는 계산 노드일 수 있다. 노드에 의해 수행되는 계산은, 예를 들어, 복수의 노드 입력들 각각에 가중치를 곱하고, 가중화된 합을 획득하고, 가중화된 합을 바이어스 또는 인터셉트 값으로 조정하여 노드 출력을 생성하는 것을 포함할 수 있다. 일부 구현예에서, 노드에 의해 수행되는 계산은 또한 단계/활성화 함수를 조정된 가중화된 합에 적용하는 것을 포함할 수 있다. 일부 구현예에서, 단계/활성화 함수는 비선형 함수일 수 있다. 다양한 구현예에서, 이러한 계산은 행렬 곱셈과 같은 연산을 포함할 수 있다. 일부 구현예에서, 복수의 노드들에 의한 계산은, 예를 들어, GPU 또는 특수 목적 신경 회로의 개별 프로세싱 유닛들을 사용하여 멀티 코어 프로세서의 다중 프로세서 코어들을 사용하여 병렬로 수행될 수 있다. 일부 구현예에서, 노드는 메모리를 포함할 수 있으며, 예를 들어, 후속 입력을 프로세싱할 때 하나 이상의 이전 입력을 저장하고 사용할 수 있다. 예를 들어, 메모리가 있는 노드는 LSTM(long short-term memory) 노드를 포함할 수 있다. LSTM 노드는 메모리를 사용하여 노드가 FSM(Finite State Machine)처럼 작동할 수 있는 "상태"를 유지할 수 있다. 이러한 노드를 갖는 모델은 순차적 데이터(예: 문장 또는 단락의 단어들, 비디오의 프레임들, 음성 또는 기타 오디오 등)를 프로세싱하는데 유용할 수 있다.
일부 구현예에서, 트레이닝된 모델(734)은 개별 노드에 대한 임베딩 또는 가중치를 포함할 수 있다. 예를 들어, 모델은 모델 형태 또는 구조에 의해 특정된 바와 같이 레이어들로 구성된 복수의 노드로서 개시될 수 있다. 초기화시, 각각의 가중치는 모델 형태에 따라 연결되는 각 쌍의 노드, 예를 들어 신경 네트워크의 연속 레이어의 노드 사이의 연결에 적용될 수 있다. 예를 들어, 각각의 가중치는 랜덤하게 할당되거나 디폴트 값으로 초기화될 수 있다. 모델은 결과를 생성하기 위해, 예를 들어 데이터(732)를 사용하여 트레이닝될 수 있다.
예를 들어, 트레이닝은 지도 학습 기법을 적용하는 것을 포함할 수 있다. 지도 학습에서, 트레이닝 데이터는 복수의 입력(예를 들어, 그레이스케일 이미지의 세트) 및 각 입력에 대한 대응하는 예상 출력(예를 들어, 그레이스케일 이미지 또는 다른 컬러 이미지에 대응하는 실제 이미지의 세트)을 포함할 수 있다. 모델의 출력과 예상 출력의 비교에 기초하여, 가중치 값은 예를 들어 유사한 입력이 제공된 경우 모델이 예상 출력을 생성할 확률을 증가시키는 방식으로 자동으로 조정된다.
일부 구현예에서, 트레이닝은 비지도 학습 기법을 적용하는 것을 포함할 수 있다. 비지도 학습에서, 입력 데이터만이 제공될 수 있고, 모델은 데이터를 구별하기 위해, 예를 들어, 입력 데이터를 복수의 그룹으로 클러스터링하기 위해 트레이닝될 수 있으며, 여기서 각 그룹은 어떤 방식으로 유사한 입력 데이터를 포함한다. 예를 들어, 모델은 입력 그레이스케일 이미지와 실제 컬러 이미지, 예를 들어 컬러 사진으로부터 컬러라이저를 사용하여 생성된, 컬러 이미지를 모델이 구별하도록 이미지를 구별하도록 트레이닝될 수 있다. 피처 판별기(218) 및/또는 픽셀 판별기(222)는 도 2, 3 및 4를 참조하여 위에서 설명된 바와 같이, 데이터를 구별하도록 트레이닝될 수 있다.
일부 구현예에서, 비지도 학습은 예를 들어 기계 학습 애플리케이션(730)에 의해 사용될 수 있는 지식 표현을 생성하는데 사용될 수 있다. 예를 들어, 비지도 학습은 도 2 및 도 4를 참조하여 위에서 설명된 바와 같이 픽셀 판별기(222)에 의해 활용되는 임베딩을 생성하기 위해 사용될 수 있다. 다양한 구현예에서, 트레이닝된 모델은 모델 구조에 대응하는 가중치 또는 임베딩 세트를 포함한다. 데이터(732)가 생략된 구현예에서, 기계 학습 애플리케이션(730)은 예를 들어, 기계 학습 애플리케이션(730)의 개발자, 서드파티 등에 의한 사전 트레이닝에 기초한 트레이닝된 모델(734)을 포함할 수 있다. 일부 구현예에서, 트레이닝된 모델(734)은 고정된, 예를 들어 가중치를 제공하는 서버로부터 다운로드되는 가중치 세트를 포함할 수 있다.
기계 학습 애플리케이션(730)은 또한 추론 엔진(736)을 포함한다. 추론 엔진(736)은 학습된 모델(734)을 애플리케이션 데이터(714)와 같은 데이터에 적용하여 추론을 제공하도록 구성된다. 일부 구현예에서, 추론 엔진(736)은 프로세서(702)에 의해 실행될 소프트웨어 코드를 포함할 수 있다. 일부 구현예에서, 추론 엔진(736)은 프로세서(702)가 트레이닝된 모델을 적용할 수 있게 하는 회로 구성(예를 들어, 프로그래머블 프로세서에 대해, FPGA(field programmable gate array)에 대해 등)을 특정할 수 있다. 일부 구현예에서, 추론 엔진(736)은 소프트웨어 명령어, 하드웨어 명령어 또는 조합을 포함할 수 있다. 일부 구현예에서, 추론 엔진(736)은 운영 체제(708) 및/또는 다른 애플리케이션(712)에 의해 사용될 수 있는 애플리케이션 프로그래밍 인터페이스(API)를 제공하여 추론 엔진(736)을 호출 예를 들어, 트레이닝된 모델(734)을 애플리케이션 데이터(714)에 적용하여 추론을 생성한다. 예를 들어, 컬러라이저 모델에 대한 추론은 컬러화된 이미지일 수 있고, 피처 판별기 또는 픽셀 판별기에 대한 추론은 도 2-5를 참조하여 위에서 설명된 바와 같이 라벨 예측일 수 있다.
기계 학습 애플리케이션(730)은 몇 가지 기술적 이점을 제공할 수 있다. 예를 들어, 트레이닝된 모델(734)이 비지도 학습에 기초하여 생성될 때, 트레이닝된 모델(734)은 입력 데이터, 예를 들어, 애플리케이션 데이터(714)로부터 지식 표현(예를 들어, 숫자 표현)을 생성하기 위해 추론 엔진(736)에 의해 적용될 수 있다. 예를 들어, 이미지 분석을 위해 트레이닝된 모델은 입력 이미지(예: 10MB)보다 작은 데이터 크기(예: 1KB)를 갖는 이미지 표현을 생성할 수 있다. 일부 구현예에서, 이러한 표현은 출력(예를 들어, 라벨, 분류, 이미지를 설명하는 문장, 그레이스케일 이미지로부터 컬러화된 이미지 등)을 생성하기 위한 프로세싱 비용(예: 계산 비용, 메모리 사용 등)을 감소시키는데 도움이 될 수 있다.
일부 구현예에서, 그러한 표현은 추론 엔진(736)의 출력으로부터 출력을 생성하는 상이한 기계 학습 애플리케이션에 대한 입력으로서 제공될 수 있다. 일부 구현예에서, 기계 학습 애플리케이션(730)에 의해 생성된 지식 표현은 예를 들어 네트워크를 통해 추가 프로세싱을 수행하는 상이한 디바이스에 제공될 수 있다. 그러한 구현예에서, 이미지가 아닌 지식 표현을 제공하는 것은 기술적 이점을 제공할 수 있으며, 예를 들어 감소된 비용으로 더 빠른 데이터 전송을 가능하게 할 수 있다. 다른 예에서, 문서 클러스터링을 위해 트레이닝된 모델은 입력 문서로부터 문서 클러스터를 생성할 수 있다. 문서 클러스터는 원본 문서에 액세스할 필요 없이 추가 프로세싱(예: 문서가 주제와 관련이 있는지 여부 결정, 문서에 대한 분류 카테고리 결정 등)에 적합할 수 있으므로 계산 비용을 절약할 수 있다.
일부 구현예에서, 기계 학습 애플리케이션(730)은 오프라인 방식으로 구현될 수 있다. 이러한 구현예에서, 트레이닝된 모델(734)은 제1 단계에서 생성될 수 있고, 기계 학습 애플리케이션(730)의 일부로서 제공될 수 있다. 일부 구현예에서, 기계 학습 애플리케이션(730)은 온라인 방식으로 구현될 수 있다. 예를 들어, 이러한 구현예에서, 기계 학습 애플리케이션(730)을 호출하는 애플리케이션(예를 들어, 운영 체제(708), 다른 애플리케이션(712) 중 하나 이상)은 기계 학습 애플리케이션(730)에 의해 생성된 추론을 활용 예를 들어, 추론을 사용자에게 제공할 수 있고, 시스템 로그를 생성할 수 있다(예: 사용자가 허용한 경우, 추론에 기초하여 사용자가 취한 액션 또는 추가 프로세싱을 위한 입력으로 활용되는 경우 추가 프로세싱의 결과). 시스템 로그는 주기적으로, 예를 들어, 매시간, 매월, 분기별로 생성될 수 있고, 트레이닝된 모델(734)을 업데이트하기 위해, 예를 들어 트레이닝된 모델(734)에 대한 임베딩을 업데이트하기 위해 사용자 허가 하에 사용될 수 있다.
일부 구현예에서, 기계 학습 애플리케이션(730)은 기계 학습 애플리케이션(730)이 실행되는 디바이스(700)의 특정한 구성에 적응할 수 있는 방식으로 구현될 수 있다. 예를 들어, 기계 학습 애플리케이션(730)은 사용가능한 계산 리소스, 예를 들어 프로세서(702)를 활용하는 계산 그래프를 결정할 수 있다. 예를 들어, 기계 학습 애플리케이션(730)이 다수의 디바이스에 분산된 애플리케이션으로 구현되는 경우, 기계 학습 애플리케이션(730)은 계산을 최적화하는 방식으로 개별 디바이스에서 수행될 계산을 결정할 수 있다. 다른 예에서, 기계 학습 애플리케이션(730)은 프로세서(702)가 특정 수의 GPU 코어(예를 들어, 1000)를 갖는 GPU를 포함하고 그에 따라 (예를 들어, 1000 개별 프로세스 또는 스레드로서) 추론 엔진을 구현할 수 있다고 결정할 수 있다.
일부 구현예에서, 기계 학습 모델(730)은 트레이닝된 모델의 앙상블을 구현할 수 있다. 예를 들어, 트레이닝된 모델(734)은 동일한 입력 데이터에 각각 적용가능한 복수의 트레이닝된 모델을 포함할 수 있다. 이러한 구현예에서, 기계 학습 애플리케이션(730)은 예를 들어, 사용 가능한 계산 리소스, 사전 추론을 통한 성공률 등에 기초하여 특정한 트레이닝된 모델을 선택할 수 있다. 일부 구현예에서, 기계 학습 애플리케이션(730)은 복수가 트레이닝된 모델이 적용되도록 추론 엔진(736)을 실행할 수 있다. 이러한 구현에서, 기계 학습 애플리케이션(730)은 예를 들어, 각각의 트레이닝된 모델을 적용함으로써 개별 출력에 점수를 매기는 투표 기법을 사용하거나, 하나 이상의 특정한 출력을 선택함으로써 개별 모델을 적용하여 출력을 결합할 수 있다. 또한, 이러한 구현예에서, 기계 학습 애플리케이션은 개별 트레이닝된 모델(예: 0.5ms)을 적용하기 위한 시간 임계치를 적용하고 시간 임계치 내에서 사용 가능한 개별 출력만을 활용할 수 있다. 시간 임계치 내에 수신되지 않은 출력은 활용되지 않을 수 있다(예: 폐기됨). 예를 들어, 이러한 접근법은 예를 들어 운영 체제(708) 또는 하나 이상의 애플리케이션(712)에 의해 기계 학습 애플리케이션을 호출하는 동안 특정된 시간 제한이 있는 경우 적합할 수 있다.
다른 구현예에서, 기계 학습 애플리케이션(730)은 다른 유형의 출력을 생성할 수 있다. 예를 들면, 기계 학습 애플리케이션(730)은 표현들 또는 클러스터들(예: 입력 데이터의 숫자 표현), 라벨들(예: 이미지들, 문서들 등을 포함하는 입력 데이터에 대한), 문구들 또는 문장들(예: 이미지 또는 비디오를 설명하는, 입력 문장에 대한 응답으로 사용하기에 적절한 등), 이미지(예: 입력 이미지들 예를 들어 흑백 이미지들에 응답하여 기계 학습 애플리케이션에 의해 생성된 컬러화된 또는 스타일링된 이미지들), 오디오 또는 비디오(예: 입력 비디오에 대한 응답으로, 트레이닝된 모델(734)이 만화책 또는 특정한 아티스트로부터의 트레이닝 데이터를 사용하여 트레이닝된 경우, 기계 학습 애플리케이션(730)은 특정한 효과가 적용된 예를 들어 만화책 또는 특정한 아티스트의 스타일로 렌더링된 출력 비디오를 생성할 수 있음)를 제공할 수 있다. 일부 구현예에서, 기계 학습 애플리케이션(730)은 호출 애플리케이션 예를 들어 운영 체제(708) 또는 하나 이상의 애플리케이션들(712)에 의해 특정된 포맷에 기초하여 출력을 생산할 수 있다. 일부 구현예에서, 호출 애플리케이션은 또 다른 기계 학습 애플리케이션일 수 있다. 예를 들어, 이러한 구성은 생성적 대립 네트워크에서 사용될 수 있으며, 여기서 기계 학습 애플리케이션을 호출하는 것은 기계 학습 애플리케이션(730)의 출력을 사용하여 트레이닝되고 그 반대도 마찬가지이다.
메모리(704)의 임의의 소프트웨어는 대안적으로 임의의 다른 적절한 저장 위치 또는 컴퓨터 판독가능 매체에 저장될 수 있다. 또한, 메모리(704)(및/또는 기타 연결된 저장 디바이스(들))는 하나 이상의 메시지, 하나 이상의 분류법, 전자 백과사전, 사전, 동의어 사전, 지식 기반, 메시지 데이터, 문법, 사용자 선호도 및/또는 본 명세서에 기술된 구성에 사용된 기타 지침 및 데이터를 저장할 수 있다. 메모리(704) 및 임의의 다른 유형의 스토리지(자기 디스크, 광 디스크, 자기 테이프 또는 기타 유형적 매체)는 "스토리지" 또는 "저장 디바이스"로 간주될 수 있다.
I/O 인터페이스(706)는 서버 디바이스(700)를 다른 시스템 및 디바이스와 인터페이스할 수 있게 하는 기능을 제공할 수 있다. 인터페이싱된 디바이스는 디바이스(700)의 일부로서 포함될 수 있거나 분리되어 디바이스(700)와 통신할 수 있다. 예를 들어, 네트워크 통신 디바이스, 저장 디바이스(예: 메모리 및/또는 데이터베이스(106)) 및 입력/출력 디바이스는 I/O 인터페이스(706)를 통해 통신할 수 있다. 일부 구현예에서 I/O 인터페이스는 입력 디바이스(키보드, 포인팅 디바이스, 터치스크린, 마이크로폰, 카메라, 스캐너, 센서 등) 및/또는 출력 디바이스(디스플레이 디바이스, 스피커 디바이스, 프린터, 모터 등)와 같은 인터페이스 디바이스에 연결할 수 있다.
I/O 인터페이스(706)에 연결할 수 있는 인터페이싱된 디바이스의 일부 예는 콘텐츠, 예를 들어, 이미지, 비디오 및/또는 본 명세서에 기술된 출력 애플리케이션의 사용자 인터페이스를 디바이스하는데 사용될 수 있는 하나 이상의 디스플레이 디바이스(720)를 포함할 수 있다. 디스플레이 디바이스(720)는 로컬 연결(예를 들어, 디스플레이 버스) 및/또는 네트워크 연결을 통해 디바이스(700)에 연결될 수 있고 임의의 적절한 디스플레이 디바이스일 수 있다. 디스플레이 디바이스(720)는 LCD, LED, 또는 플라즈마 디스플레이 스크린, CRT, 텔레비전, 모니터, 터치스크린, 3-D 디스플레이 스크린 또는 다른 시각적 디스플레이 디바이스와 같은 임의의 적절한 디스플레이 디바이스를 포함할 수 있다. 예를 들어, 디스플레이 디바이스(720)는 모바일 디바이스에 제공된 평면 디스플레이 스크린, 고글 또는 헤드셋 디바이스에 제공된 다수의 디스플레이 스크린 또는 컴퓨터 디바이스용 모니터 스크린일 수 있다.
I/O 인터페이스(706)는 다른 입력 및 출력 디바이스와 인터페이싱할 수 있다. 일부 예는 이미지를 캡처할 수 있는 하나 이상의 카메라를 포함한다. 일부 구현예는 (예를 들어, 캡처된 이미지, 음성 명령 등의 일부로서) 사운드를 캡처하기 위한 마이크로폰, 사운드를 출력하기 위한 오디오 스피커 디바이스 또는 다른 입력 및 출력 디바이스를 제공할 수 있다.
예시의 편의를 위해, 도 7은 프로세서(702), 메모리(704), I/O 인터페이스(706), 및 소프트웨어 블록(708, 712 및 730) 각각에 대한 하나의 블록을 도시한다. 이러한 블록은 하나 이상의 프로세서 또는 프로세싱 회로, 운영 체제, 메모리, I/O 인터페이스, 애플리케이션 및/또는 소프트웨어 모듈을 나타낼 수 있다. 다른 구현예에서, 디바이스(700)는 도시된 컴포넌트들 모두를 갖지 않을 수 있고 및/또는 여기에 도시된 것들 대신에 또는 이에 추가하여 다른 유형의 엘리먼트들을 포함하는 다른 엘리먼트들을 가질 수 있다. 일부 컴포넌트는 본 명세서의 일부 구현예에서 설명된 바와 같이 블록 및 동작을 수행하는 것으로 설명되지만, 환경(100), 디바이스(700), 유사한 시스템의 컴포넌트의 임의의 적절한 컴포넌트 또는 조합, 또는 이러한 시스템과 연관된 임의의 적절한 프로세서 또는 프로세서들이 블록 및 설명된 동작을 수행할 수 있다.
본 명세서에 기술된 방법은 컴퓨터에서 실행될 수 있는 컴퓨터 프로그램 명령어 또는 코드에 의해 구현될 수 있다. 예를 들어, 코드는 하나 이상의 디지털 프로세서(예를 들어, 마이크로프로세서 또는 기타 프로세싱 회로)에 의해 구현될 수 있고, 자기적, 광학적, 전자기적 또는 반도체 또는 솔리드 스테이트 메모리, 자기 테이프, 이동식 컴퓨터 디스켓, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 플래시 메모리, 강성 자기 디스크, 광 디스크, 솔리드 스테이트 메모리 드라이브 등을 포함하는 반도체 저장 매체와 같은 비일시적 컴퓨터 판독 가능 매체(예를 들어, 저장 매체)를 포함하는 컴퓨터 프로그램 물에 저장될 수 있다. 프로그램 명령어는 또한 예를 들어 서버(예를 들어, 분산 시스템 및/또는 클라우드 컴퓨팅 시스템)로부터 전달되는 서비스형 소프트웨어(SaaS)의 형태로 전자 신호에 포함되어 제공될 수 있다. 대안적으로, 하나 이상의 방법은 하드웨어(논리 게이트 등)에서, 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 예시적 하드웨어는 프로그래머블 프로세서(예를 들어, FPGA(Field-Programmable Gate Array), 복합 프로그래머블 로직 디바이스), 범용 프로세서, 그래픽 프로세서, ASIC(Application Specific Integrated Circuits) 등일 수 있다. 하나 이상의 방법은 시스템에서 실행되는 애플리케이션의 일부 또는 컴포넌트로 수행되거나 다른 애플리케이션 및 운영 체제와 함께 실행되는 애플리케이션 또는 소프트웨어로 수행될 수 있다.
설명이 그것의 특정한 구현예와 관련하여 기술되었지만, 이러한 특정 구현예는 단지 예시적이며 제한적이지 않다. 예시들에서 예시된 개념은 다른 예시 및 구현예에 적용될 수 있다.
본 명세서에서 논의된 특정 구현예들이 사용자에 관한 개인 정보(예를 들어, 사용자 데이터, 사용자의 소셜 네트워크에 관한 정보, 사용자의 위치 및 상기 위치에서의 시간, 사용자의 생체 정보, 사용자의 활동 및 인구통계적 정보)를 수집하거나 사용하는 상황들에서, 사용자에게 정보가 수집될지 여부, 개인정보가 저장될지 여부, 개인 정보가 사용될지 여부 및 사용자에 관한 정보가 어떻게 수집되고 저장되고 사용될지를 제어하기 위한 하나 이상의 기회들이 제공된다. 즉, 본 명세서에서 논의된 시스템 및 방법은 관련된 사용자로부터 명시적 허가를 수신함에 따라서만 사용자 개인 정보를 수집하고 저장 및/또는 사용한다. 예를 들면, 프로그램 또는 구성이 그 특정한 사용자 또는 프로그램 또는 구성과 관련된 다른 사용자에 관한 사용자 정보를 수집할지 여부에 관한 제어권이 사용자에게 제공된다. 개인정보가 수집될 각 사용자에게 그 사용자에 관한 정보 수집에 대해 제어하게 하고, 정보가 수집될지 여부에 관한 그리고 정보의 어떤 부분이 수집될지 허가 또는 인가를 제공하기 위한 하나 이상의 옵션들이 제시된다. 예를 들면, 통신 네트워크를 통해 사용자들에게 하나 이상의 상기 제어 옵션들이 제공될 수 있다. 추가로, 특정 데이터는 그것이 저장되거나 사용되기 전에 하나 이상의 다양한 방식들로 취급되어, 개인적으로 식별가능한 정보는 제거된다. 일 예시로서, 사용자의 신원은 개인적으로 식별가능한 정보가 결정될 수 없도록 취급될 수 있다. 다른 예시로서, 사용자 디바이스의 지리적 위치는 넓은 지역으로 일반화되어 사용자의 특정한 위치가 결정될 수 없도록 한다.
본 개시에서 설명된 기능 블록, 동작, 구성, 방법, 디바이스 및 시스템은 통상의 기술자에게 공지된 바와 같이 시스템, 디바이스 및 기능 블록의 상이한 조합으로 통합되거나 분할될 수 있음을 유의한다. 임의의 적절한 프로그래밍 언어 및 프로그래밍 기법이 특정한 구현예의 루틴을 구현하는데 사용될 수 있다. 상이한 프로그래밍 기법, 예를 들어 절차적 또는 객체 지향이 사용될 수 있다. 루틴은 단일 프로세싱 디바이스 또는 다중 프로세서에서 실행할 수 있다. 단계, 동작 또는 계산이 특정 순서로 제시될 수 있지만 다른 특정한 구현예에서 순서가 변경될 수 있다. 일부 구현예에서, 본 명세서에서 순차적으로 도시된 다수의 단계 또는 동작이 동시에 수행될 수 있다.

Claims (20)

  1. 사람을 도시하는 그레이스케일 이미지를 컬러화하기 위한 컴퓨터로 구현되는 방법으로서,
    상기 그레이스케일 이미지를 수신하는 단계; 및
    트레이닝된 CNN(Convolutional Neural Network)에 대한 입력으로서 상기 그레이스케일 이미지를 제공함으로써 상기 그레이스케일 이미지에 기초하여 트레이닝된 CNN의 출력으로서 컬러화된 이미지를 생성하는 단계를 포함하며, 상기 트레이닝된 CNN은 부분 세그먼트화를 수행하여 사람의 하나 이상의 부분을 검출하고, 상기 그레이스케일 이미지를 컬러화하는, 컴퓨터로 구현되는 방법.
  2. 청구항 1에 있어서, 상기 컬러화된 이미지를 생성하는 단계는:
    상기 트레이닝된 CNN의 잠재 레이어의 출력으로서 중간 컬러화된 이미지를 획득하는 단계;
    상기 트레이닝된 CNN의 출력 레이어의 출력으로서 네트워크 출력 이미지를 획득하는 단계; 및
    상기 컬러화된 이미지를 획득하기 위해 상기 중간 컬러화된 이미지와 상기 네트워크 출력 이미지를 결합하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  3. 청구항 2에 있어서, 상기 중간 컬러화된 이미지는 상기 네트워크 출력 이미지보다 낮은 해상도를 갖고, 상기 방법은 상기 결합 이전에, 상기 중간 컬러화된 이미지를 상기 네트워크 출력 이미지와 동일한 해상도로 업샘플링하는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
  4. 청구항 1에 있어서, 상기 트레이닝된 CNN에 대한 입력으로서 상기 그레이스케일 이미지를 제공하기 전에 상기 그레이스케일 이미지를 다운샘플링하는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
  5. 청구항 1에 있어서, 상기 컬러화된 이미지는 상기 그레이스케일 이미지보다 낮은 해상도를 가지며, 상기 방법은:
    상기 컬러화된 이미지를 상기 그레이스케일 이미지와 동일한 해상도로 업샘플링하는 단계; 및
    출력 이미지를 획득하기 위해 상기 컬러화된 이미지와 상기 그레이스케일 이미지를 결합하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  6. 청구항 1에 있어서, 상기 컬러화된 이미지는 sRGB 이미지인, 컴퓨터로 구현되는 방법.
  7. 그레이스케일 이미지를 컬러화하기 위해 컨벌루션 신경 네트워크를 트레이닝하는 컴퓨터로 구현되는 방법에 있어서,
    하나 이상의 사람을 각각 도시하는 복수의 트레이닝 컬러 이미지들, 대응하는 그레이스케일 트레이닝 이미지들 및 각 트레이닝 컬러 이미지에서 하나 이상의 사람에 대한 부분 주석들을 포함하는 트레이닝 데이터를 제공하는 단계; 및
    각 그레이스케일 트레이닝 이미지에 대해,
    상기 컨볼루션 신경 네트워크의 출력으로서, 상기 그레이스케일 트레이닝 이미지 및 상기 그레이스케일 트레이닝 이미지에서 하나 이상의 사람에 대한 부분 주석들에 기초하여 컬러화된 이미지를 기술하는 출력 피처 벡터를 획득하는 단계;
    픽셀 판별기에 의해, 상기 컬러화된 이미지가 원래 컬러 이미지인지 또는 예측된 컬러 이미지인지 여부의 라벨 예측에 기초하여 픽셀 판별기로부터 지각 손실 값(perceptual loss value)을 획득하는 단계; 및
    상기 지각 손실 값에 기초하여 상기 컨볼루션 신경 네트워크의 파라미터를 수정하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  8. 청구항 7에 있어서,
    각 그레이스케일 트레이닝 이미지에 대해:
    상기 컨볼루션 신경 네트워크의 잠재 레이어로부터, 상기 그레이스케일 트레이닝 이미지 및 상기 그레이스케일 트레이닝 이미지에서 하나 이상의 사람에 대한 중간 부분 주석들에 기초하여 중간 컬러화된 이미지를 기술하는 중간 출력 피처 벡터를 획득하는 단계; 및
    피처 판별기에 의해, 상기 중간 컬러화된 이미지에 대응하는 실제(groundtruth) 컬러 이미지가 존재하는지 여부의 예측에 기초하여 피처 판별기로부터 피처 손실 값을 획득하는 단계를 더 포함하며, 상기 중간 피처 벡터는 상기 피처 판별기에 대한 입력으로서 제공되며; 및
    상기 컨볼루션 신경 네트워크의 파라미터를 수정하는 단계는 상기 피처 손실 값에 더 기초하는, 컴퓨터로 구현되는 방법.
  9. 청구항 8에 있어서,
    상기 중간 컬러화된 이미지를 리사이징하는 단계;
    상기 컨볼루션 신경 네트워크의 출력 레이어로부터 네트워크 출력 이미지를 획득하는 단계; 및
    상기 컬러화된 이미지를 획득하기 위해 상기 중간 컬러화된 이미지와 상기 네트워크 출력 이미지를 결합하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  10. 청구항 7에 있어서, 각 그레이스케일 트레이닝 이미지에 대해, 채도 인핸서로부터 채도 손실(saturation loss)을 획득하는 단계를 더 포함하고, 상기 컨볼루션 신경 네트워크의 파라미터를 수정하는 단계는 상기 채도 손실에 더 기초하는, 컴퓨터로 구현되는 방법.
  11. 청구항 10에 있어서, 상기 채도 손실을 획득하는 단계는:
    상기 부분 주석들에 기초하여 상기 컬러화된 이미지의 하나 이상의 배경 영역을 식별하는 단계; 및
    상기 배경 영역에 있는 것으로 식별된 픽셀들에 대해, 상기 컬러화된 이미지의 채도 및 상기 컬러화된 이미지의 밝기 값에 기초하여 상기 채도 손실을 계산하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  12. 청구항 7에 있어서, 각 그레이스케일 트레이닝 이미지에 대해, 피부 톤 인핸서로부터 피부 톤 손실을 획득하는 단계를 더 포함하고, 상기 컨볼루션 신경 네트워크의 파라미터를 수정하는 단계는 상기 피부 톤 손실에 더 기초하는, 컴퓨터로 구현되는 방법.
  13. 청구항 12에 있어서, 상기 피부 톤 손실을 획득하는 단계는:
    상기 부분 주석들에 기초하여 상기 컬러화된 이미지에서 하나 이상의 실루엣을 식별하는 단계; 및
    상기 컬러화된 이미지의 색조(hue) 및 상기 픽셀이 상기 컬러화된 이미지의 하나 이상의 실루엣 중 적어도 하나에 있는지 여부에 기초하여 상기 컬러화된 이미지의 각 픽셀에 대한 피부 톤 손실을 계산하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  14. 시스템으로서,
    하나 이상의 프로세서에 의해 구현되는 컨볼루션 신경 네트워크, 상기 컨벌루션 신경 네트워크는 복수의 레이어들을 갖고 동작들을 수행하도록 구성되며, 상기 동작들은:
    하나 이상의 사람을 도시하는 그레이스케일 이미지를 수신하는 동작; 및
    상기 그레이스케일 이미지에 기초하여 컬러화된 이미지를 생성하는 동작, 상기 컬러화된 이미지는 상기 그레이스케일 이미지에서 상기 하나 이상의 사람에 대한 부분 주석들을 포함하며; 및
    상기 하나 이상의 프로세서에 의해 구현되는 픽셀 판별기를 포함하며, 상기 픽셀 판별기는 동작들을 수행하도록 구성되며, 상기 동작들은:
    상기 컬러화된 이미지를 수신하는 동작; 및
    상기 컬러화된 이미지가 원래 컬러 이미지인지 또는 예측된 컬러 이미지인지 여부를 나타내는 라벨 예측을 생성하는 동작을 포함하는, 시스템.
  15. 청구항 14에 있어서, 상기 컨벌루션 신경 네트워크에 의해 수행되는 동작들은:
    상기 컨벌루션 신경 네트워크의 잠재 레이어에서, 상기 그레이스케일 이미지에 기초하여 중간 컬러화된 이미지를 생성하는 동작을 더 포함하며, 상기 중간 컬러화된 이미지는 상기 그레이스케일 이미지에서 상기 하나 이상의 사람에 대한 중간 부분 주석들을 포함하며,
    상기 시스템은:
    상기 하나 이상의 프로세서에 의해 구현되는 피처 판별기를 더 포함하며, 상기 피처 판별기는 동작들을 수행하도록 구성되며, 상기 동작들은:
    상기 중간 컬러화된 이미지를 수신하는 동작; 및
    상기 그레이스케일 이미지에 대응하는 실제 컬러 이미지가 존재하는지 여부를 표시하는 예측을 생성하는 동작을 포함하는, 시스템.
  16. 청구항 15에 있어서, 상기 중간 컬러화된 이미지는 상기 그레이스케일 이미지의 해상도보다 낮은 해상도를 가지며, 상기 컬러화된 이미지를 생성하는 동작은:
    상기 중간 컬러화된 이미지를 상기 그레이스케일 이미지의 해상도로 리사이징하는 동작; 및
    리사이징 후, 상기 컬러화된 이미지를 획득하기 위해 상기 중간 컬러화된 이미지와 상기 컨볼루션 신경 네트워크의 출력 레이어의 네트워크 출력 이미지를 결합하는 동작을 포함하는, 시스템.
  17. 청구항 15에 있어서, 상기 피처 판별기의 예측은 상기 컨벌루션 신경 네트워크의 하나 이상의 파라미터를 조정함으로써 상기 컨벌루션 신경 네트워크를 트레이닝하는데 사용되는, 시스템.
  18. 청구항 14에 있어서, 상기 픽셀 판별기는 상기 이미지들이 실제 컬러 이미지들임을 나타내는 연관된 실제 라벨들을 갖는 복수의 실제 컬러 이미지들을 입력으로서 제공하고, 각 입력 이미지에 대한 라벨 예측과 실제 라벨들 간의 차이에 기초하는 손실을 사용하여 상기 픽셀 판별기의 하나 이상의 파라미터들을 조정함으로써 트레이닝되는, 시스템.
  19. 청구항 14에 있어서, 상기 픽셀 판별기는 상기 컬러화된 이미지가 원래 컬러 이미지인지 또는 상기 예측된 컬러 이미지인지 여부를 나타내는 실제 라벨과 상기 라벨 예측을 비교하는 손실에 기초하여 트레이닝되는, 시스템.
  20. 청구항 14에 있어서, 상기 픽셀 판별기의 라벨 예측은 상기 컨벌루션 신경 네트워크의 하나 이상의 파라미터를 조정함으로써 상기 컨벌루션 신경 네트워크를 트레이닝하는데 사용되는, 시스템.
KR1020217041492A 2019-09-11 2019-09-11 기계 학습을 사용하여 이미지 컬러화 KR20220009456A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2019/050527 WO2021050055A1 (en) 2019-09-11 2019-09-11 Image colorization using machine learning

Publications (1)

Publication Number Publication Date
KR20220009456A true KR20220009456A (ko) 2022-01-24

Family

ID=68051982

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217041492A KR20220009456A (ko) 2019-09-11 2019-09-11 기계 학습을 사용하여 이미지 컬러화

Country Status (6)

Country Link
US (1) US20220301227A1 (ko)
EP (1) EP3818472A1 (ko)
JP (1) JP7490004B2 (ko)
KR (1) KR20220009456A (ko)
CN (1) CN113994384A (ko)
WO (1) WO2021050055A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102580931B1 (ko) * 2023-03-06 2023-09-20 숭실대학교 산학협력단 시맨틱 분할을 위한 회색조 이미지를 컬러 이미지로 변환하는 방법 및 그 장치

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102216749B1 (ko) * 2019-03-05 2021-02-17 네이버웹툰 유한회사 타겟 이미지의 채색 완성 방법, 장치 및 컴퓨터 프로그램
CN113906468A (zh) * 2019-05-07 2022-01-07 谷歌有限责任公司 用于训练图像着色模型的系统和方法
US20210158147A1 (en) * 2019-11-26 2021-05-27 International Business Machines Corporation Training approach determination for large deep learning models
JP7446903B2 (ja) * 2020-04-23 2024-03-11 株式会社日立製作所 画像処理装置、画像処理方法及び画像処理システム
US11613275B2 (en) * 2020-04-27 2023-03-28 Baidu Usa Llc Grayscale-based camera perception
CN112991493B (zh) * 2021-04-09 2023-07-18 华南理工大学 基于vae-gan和混合密度网络的灰度图像着色方法
CN113191970B (zh) * 2021-04-24 2022-10-21 北京理工大学 一种正交色彩传递网络及方法
KR20220159104A (ko) * 2021-05-25 2022-12-02 삼성에스디에스 주식회사 딥페이크 이미지 판별 장치 및 그 학습 방법
CN113822951B (zh) * 2021-06-25 2023-05-30 腾讯科技(深圳)有限公司 图像处理方法、装置、电子设备及存储介质
CN113556526B (zh) * 2021-07-18 2022-11-15 北京理工大学 一种基于rgbw滤光阵列的彩色夜视设备色彩增强方法
US11989916B2 (en) * 2021-10-11 2024-05-21 Kyocera Document Solutions Inc. Retro-to-modern grayscale image translation for preprocessing and data preparation of colorization
US20230156169A1 (en) * 2021-11-18 2023-05-18 Capital One Services, Llc Reduced bandwidth image transfer
US11935154B2 (en) * 2022-03-02 2024-03-19 Microsoft Technology Licensing, Llc Image transformation infrastructure
CN114913272B (zh) * 2022-05-19 2024-07-02 北京航空航天大学 一种基于参考图像和用户导引的灰度图像精准上色方法
CN114757856B (zh) * 2022-06-16 2022-09-20 深圳深知未来智能有限公司 一种基于无监督深度学习的自动白平衡算法及系统
CN116645569B (zh) * 2022-12-27 2024-09-27 长春理工大学 一种基于生成对抗网络的红外图像彩色化方法和系统
CN116137043B (zh) * 2023-02-21 2024-09-27 长春理工大学 一种基于卷积和Transformer的红外图像彩色化方法
CN116433508B (zh) * 2023-03-16 2023-10-27 湖北大学 一种基于Swin-Unet的灰度图像着色校正方法
CN116882033B (zh) * 2023-09-05 2023-11-28 中建五局第三建设有限公司 一种多网络生成模型确定方法、装置、设备及存储介质
CN116934308B (zh) * 2023-09-15 2023-12-15 浙江恒逸石化有限公司 丝路巡检设备的控制方法、装置、设备以及存储介质
CN117037159B (zh) * 2023-10-09 2024-03-19 网思科技股份有限公司 基于卷积神经网络的油画真伪鉴别方法、装置及存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5615088B2 (ja) * 2010-08-18 2014-10-29 キヤノン株式会社 画像処理装置及びその方法、プログラム、並びに撮像装置
US11087504B2 (en) * 2017-05-19 2021-08-10 Google Llc Transforming grayscale images into color images using deep neural networks
CN107403200A (zh) * 2017-08-10 2017-11-28 北京亚鸿世纪科技发展有限公司 改进图像分割算法结合深度学习的多重不良图片分类方法
JP6986438B2 (ja) * 2017-12-27 2021-12-22 日本放送協会 カラー情報推定モデル生成装置、画像カラー化装置およびそれらのプログラム
US10140544B1 (en) * 2018-04-02 2018-11-27 12 Sigma Technologies Enhanced convolutional neural network for image segmentation
CN108830912B (zh) * 2018-05-04 2021-04-16 北京航空航天大学 一种深度特征对抗式学习的交互式灰度图像着色方法
CN108921932B (zh) * 2018-06-28 2022-09-23 福州大学 基于卷积神经网络的黑白人物图片生成多种合理着色方法
CN109376661A (zh) * 2018-10-29 2019-02-22 百度在线网络技术(北京)有限公司 用于输出信息的方法和装置
CN109949353A (zh) * 2019-03-25 2019-06-28 北京理工大学 一种低照度图像自然感彩色化方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102580931B1 (ko) * 2023-03-06 2023-09-20 숭실대학교 산학협력단 시맨틱 분할을 위한 회색조 이미지를 컬러 이미지로 변환하는 방법 및 그 장치

Also Published As

Publication number Publication date
US20220301227A1 (en) 2022-09-22
EP3818472A1 (en) 2021-05-12
JP2022547769A (ja) 2022-11-16
JP7490004B2 (ja) 2024-05-24
CN113994384A (zh) 2022-01-28
WO2021050055A1 (en) 2021-03-18

Similar Documents

Publication Publication Date Title
JP7490004B2 (ja) 機械学習を用いた画像カラー化
US11062494B2 (en) Electronic messaging utilizing animatable 3D models
EP3815042B1 (en) Image display with selective depiction of motion
EP4341904A1 (en) Realistic personalized style transfer in image processing
WO2022089166A1 (zh) 人脸图像的处理方法、显示方法、装置及设备
US11736717B2 (en) Video compression system
KR102454421B1 (ko) 개인화된 자동 비디오 자르기
KR20240090286A (ko) 의도 추정을 갖는 음성 인식
KR20240052043A (ko) 대화 안내 증강 현실 경험
US11893056B2 (en) Using interpolation to generate a video from static images
KR20240141833A (ko) 감정-기반 텍스트 대 스피치
US20240193731A1 (en) Face region based automatic white balance in images
US20240087286A1 (en) Clustering videos using a self-supervised dnn
US20240297957A1 (en) Aspect ratio conversion for automated image generation
US20240295953A1 (en) Prompt modification for automated image generation
US20240296535A1 (en) Automatic image quality evaluation
KR20230136109A (ko) 기계 학습을 사용한 선택적 이미지 블러링
US20240087266A1 (en) Deforming real-world object using image warping
US20240296606A1 (en) Automatic image generation in an interaction system
US20240355063A1 (en) Embeddings representing visual augmentations
US20240356871A1 (en) Group chat with a chatbot
WO2024058966A1 (en) Deforming real-world object using image warping

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal