KR20230112744A - 약하게 지도된 이미지 분류기 - Google Patents

약하게 지도된 이미지 분류기 Download PDF

Info

Publication number
KR20230112744A
KR20230112744A KR1020237024437A KR20237024437A KR20230112744A KR 20230112744 A KR20230112744 A KR 20230112744A KR 1020237024437 A KR1020237024437 A KR 1020237024437A KR 20237024437 A KR20237024437 A KR 20237024437A KR 20230112744 A KR20230112744 A KR 20230112744A
Authority
KR
South Korea
Prior art keywords
image
patches
patch
images
points
Prior art date
Application number
KR1020237024437A
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 KR20230112744A publication Critical patent/KR20230112744A/ko

Links

Classifications

    • 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
    • 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
    • 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/211Selection of the most significant subset of features
    • G06F18/2115Selection of the most significant subset of features by evaluating different subsets according to an optimisation criterion, e.g. class separability, forward selection or backward elimination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • G06F18/232Non-hierarchical techniques
    • G06F18/2321Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
    • G06F18/23213Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/0895Weakly supervised learning, e.g. semi-supervised or self-supervised learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/50Extraction of image or video features by performing operations within image blocks; by using histograms, e.g. histogram of oriented gradients [HoG]; by summing image-intensity values; Projection analysis
    • 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/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/75Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
    • G06V10/757Matching configurations of points or 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/762Arrangements for image or video recognition or understanding using pattern recognition or machine learning using clustering, e.g. of similar faces in social networks
    • 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/762Arrangements for image or video recognition or understanding using pattern recognition or machine learning using clustering, e.g. of similar faces in social networks
    • G06V10/763Non-hierarchical techniques, e.g. based on statistics of modelling distributions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/774Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V2201/00Indexing scheme relating to image or video recognition or understanding
    • G06V2201/03Recognition of patterns in medical or anatomical images
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16HHEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
    • G16H30/00ICT specially adapted for the handling or processing of medical images
    • G16H30/40ICT specially adapted for the handling or processing of medical images for processing medical images, e.g. editing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Epidemiology (AREA)
  • Radiology & Medical Imaging (AREA)
  • Primary Health Care (AREA)
  • Public Health (AREA)
  • Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Measuring And Recording Apparatus For Diagnosis (AREA)
  • Combined Means For Separation Of Solids (AREA)
  • Image Analysis (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

이미지 분류기를 훈련시키고 사용하기 위한 시스템들 및 방법들이 제공된다. 복수의 포인트는 제1 유형 또는 제2 유형 중 어느 하나라는 주석이 달린 이미지들의 각각의 패치로부터 생성될 수 있다. 제2 유형의 이미지들에 대응하는 포인트들은 2개의 클러스터로 클러스터링될 수 있다. 2개의 클러스터 중 제1 클러스터는, 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들에 더 근접한 것으로 식별될 수 있다. 제1 클러스터의 포인트들은 클래스 포지티브에, 제2 클러스터의 포인트들은 클래스 네거티브에, 그리고 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들은 앵커 클래스에 할당될 수 있다. 복수의 트리플렛은, 다양한 클래스들로부터의 포인트들에 기초하여 생성될 수 있다. 이미지 분류기의 파라미터들은 트리플렛들의 손실 함수에 기초하여 조정될 수 있다.

Description

약하게 지도된 이미지 분류기{WEAKLY SUPERVISED IMAGE CLASSIFIER}
연관된 출원에 대한 상호참조
본 출원은, 35 U.S.C. §119(e) 하에서 2017년 7월 14일자로 출원되고 발명의 명칭이 "약하게 지도된 이미지 분류기"라는 미국 특허 가출원 번호 제62/532,795호의 우선권을 주장하며, 이들 전체 내용은 본 명세서에 참고로 포함된다.
기술분야
본 개시는 일반적으로 이미지 분류기를 훈련시키고 사용하기 위한 시스템들 및 방법들에 관한 것이다. 보다 구체적으로, 본 개시는 머신 학습 기법들을 복수의 주석이 달린 이미지에 적용함으로써 약하게 지도된 이미지 분류기를 훈련시키고 사용하기 위한 시스템들 및 방법들에 관한 것이다.
이미지 분류는 고비용이고 지루한 프로세스일 수 있다. 군사 또는 의료 분야에 관한 애플리케이션들과 같은 일부 이미지 분류 애플리케이션의 경우, 이미지들에 대한 정확하고 신뢰성 있는 분류는 매우 중요할 수 있고, 전문화된 훈련을 받은 사람에 의해 전형적으로 수행될 수 있다. 특정한 유형의 이미지들을 자동화된 방식으로 정확하고 신뢰성 있게 분류하는 것은 곤란하다.
이미지 분류기를 훈련시키는 것에 관한 방법들, 시스템들 및 장치가 제공된다. 컴퓨터의 이미지 분류기 모델들(Computational image classifier models)은 자동화된 이미지 분류를 위한 작업 및 리소스들을 실질적으로 감소시킬 잠재력(potential)을 가질 수 있다. 일반적으로, 이미지 분류라는 용어는 비범주화된 입력 이미지(uncategorized input image)가 제1 유형 또는 제2 유형인지를 결정하는 것을 포함할 수 있고, 여기서 제1 및 제2 유형은 알려져(known) 있다. 일부 구현예에서, 본 개시의 시스템들 및 방법들은 다차원 공간으로 나타내어질 수 있는 특징들의 복소 세트(a complex set of features)를 갖는 비범주화된 입력 이미지를 수신할 수 있다. 예를 들어, 이미지는 (예를 들어, 대략 106 이상의) 다수의 픽셀을 가질 수 있고, 각 픽셀은 적색, 녹색 및 청색과 같은 복수의 색상 각각에 대한 관련 값을 가질 수 있다. 아래에 더 설명된 시스템들 및 방법들은 약한 지도(weak supervision)로부터 입력 이미지들의 저차원 임베딩(lower-dimensional embedding)을 학습할 수 있다. 일부 구현예에서, 이미지들이 복수의 패치로 나뉠(divided) 수 있고, 패치들이 제1 유형 및 제2 유형을 나타내는 클러스터들로 자동적으로 구분될(partitioned) 수 있다. 이러한 학습된 임베딩은 입력 이미지를 구성하는 패치들에 대해 k-최근접 이웃들(k-nearest neighbors)과 같은 단순 분류기(simple classifier)를 이용하여 입력 이미지에 대한 전반적인 분류 태스크(overall classification task)를 해결할 수 있게 한다. 일반적으로, 약한 지도는 전반적인 슬라이드 유형(overall slice type)(예를 들어, 제1 유형 또는 제2 유형 중 어느 하나)만 알려져 있는 데이터 세트의 슬라이드들의 경우들을 지칭할 수 있다. 이미지의 임의의 개별 패치의 분류에 관한 정보가 없을 수 있다. 따라서, 본 개시의 기법들은, 이미지의 각 패치의 라벨이 알려져 있고 이미지 분류 모델을 훈련시키기 위해 사용되는, 완전 지도 학습(fully supervised learning)과 대조된다.
일부 구현예에서, 이미지 분류 모델은 유형(예를 들어, 분류)이 알려져 있는 이미지들의 세트에 기초하여 훈련될 수 있다. 이미지들이 패치들로 나뉘고, 패치들의 라이브러리들이 생성될 수 있다. 예를 들어, 하나의 라이브러리는 제1 유형의 이미지들에 대응하는 패치들을 포함할 수 있고, 제2 라이브러리는 제2 유형의 이미지들에 대응하는 패치들을 포함할 수 있다. 이미지 분류 모델을 훈련시키는 것은 반복적인 훈련 프로세스로 완수될 수 있고, 패치들의 서브 세트가 매 훈련 라운드마다 각 라이브러리로부터 샘플링될 수 있다. 주어진 훈련 라운드(given training round)에서, 각 패치는, 예를 들어, 합성곱 신경망(convolutional neural network)일 수 있는 이미지 분류 모델을 사용하여 저차원 임베딩 공간의 포인트(point)로 변환될 수 있다.
일부 구현예에서, 하나의 라이브러리로부터 유래되는 포인트들은 클러스터링 알고리즘을 이용하여 2개의 클러스터로 클러스터링될 수 있다. 2개의 클러스터 중에서, 제2 라이브러리로부터 유래되는 포인트들까지 최소 거리를 갖는 클러스터 내에 포함된 포인트들은 클래스 포지티브(class positive)에 할당될 수 있고, 다른 한 클러스터에 포함된 포인트들은 클래스 네거티브(class negative)에 할당될 수 있다. 제2 라이브러리로부터 유래되는 포인트들은 앵커 클래스(anchor class)로서 취급될 수 있다. 앵커, 포지티브, 및 네거티브 클래스로부터의 포인트들이 트리플렛들(triplets)을 생성하도록 샘플링될 수 있고, 각 트리플렛이 하나의 앵커 포인트, 하나의 포지티브 포인트, 및 하나의 네거티브 포인트를 포함한다. 그 후, 트리플렛 마진 손실과 같은, 손실 함수(loss function)가 계산될 수 있다. 일부 구현예에서, 경사 하강 최적화(gradient descent optimization)는 이미지 분류 모델의 파라미터들을 튜닝하여 손실 함수를 최소화하기 위해 사용될 수 있다.
일단 분류기가 훈련되면, 새로운 이미지가 수신되어 복수의 패치로 나뉠 수 있다. 분류기는 패치들의 예측 또는 분류를 행할 수 있다. 이미지의 모든 패치들에 대한 예측(예를 들어, 분류)은 전체 이미지(overall image)를 제1 유형 또는 제2 유형 중 어느 하나로 분류하기 위해 집계될 수 있다. 또한, 아래에 더 설명된 시스템들 및 방법들은, 이미지를 제1 유형 또는 제2 유형 중 어느 하나로 분류하는 것을 담당하는 특징들을 경계 짓기(demarcating) 위해 전제 이미지(whole image)의 패치-단위 분할(patch-wise segmentation)을 제공할 수 있다.
본 개시에 설명된 기법들은 다양한 유용한 애플리케이션들을 갖는다. 일부 구현예에서, 본 명세서에 설명된 이미지 분류 시스템(image classification system)은 의료 진단(medical diagnosis)용으로 사용될 수 있다. 예를 들어, 각 이미지는 환자로부터 취해진 조직 샘플(tissue sample)을 나타내는 병리학 슬라이드((pathology slide)의 이미지일 수 있고, 각 슬라이드는 양성(benign) 또는 종양성(tumorous) 중 어느 하나로 분류될 수 있다. 이들 슬라이드는, 비범주화된 입력 이미지가 양성 또는 종양성 조직(tissue or tumorous tissue)을 나타내는지를 결정할 수 있는 이미지 분류 모델을 훈련시키는 데에 사용될 수 있다. 종양은 종양성으로 범주화된 슬라이드의 작은 부분(small portion)만 전형적으로 나타내기 때문에, 심지어 훈련된 인간이라도 이러한 슬라이드들을 정확하게 분류하는 것은 곤란할 수 있다. 본 개시의 시스템들 및 방법들은, 이러한 분류를 자동화하는 것을 도울 수 있고, 또한 종양성으로 분류된 각 슬라이드의 종양성 부분들이 분명하게 경계 지어지도록, 종량성 슬라이드들에 대응하는 이미지들을 분할(segment)할 수도 있다. 일부 다른 구현예에서, 본 개시의 기법들은 다른 유형의 이미지들에 적용될 수 있다. 예를 들어, 본 명세서에 설명된 시스템들 및 방법들은, 예를 들어, 위성 이미지들일 수 있는 한 세트의 훈련 이미지들에 기초하여, 특정 물체 또는 사람이 입력 이미지에 존재하는지를 자동으로 결정하는 데에 사용될 수 있다.
본 개시의 일 양상은 이미지 분류기를 훈련시키는 방법에 관한 것이다. 본 방법은, 하나 이상의 프로세서를 포함하는 디바이스에 의해, 제1 유형 또는 제2 유형 중 어느 하나라는 주석이 달린 이미지들로부터 생성된 각각의 패치로부터 복수의 포인트를 생성하는 단계를 포함할 수 있다. 본 방법은, 클러스터링 알고리즘을 사용하는 디바이스에 의해, 제2 유형이라는 주석이 달린 이미지들에 대응하는 포인트들을 2개의 클러스터로 클러스터링하는 단계를 포함할 수 있다. 본 방법은, 디바이스에 의해, 2개의 클러스터 중 제2 클러스터보다, 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들에 더 근접한, 2개의 클러스터 중 제1 클러스터를 식별하는 단계를 포함할 수 있다. 본 방법은, 디바이스에 의해, 제1 클러스터의 포인트들을 클래스 포지티브에, 제2 클러스터의 포인트들을 클래스 네거티브에, 그리고, 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들을 앵커 클래스에 할당하는 단계를 포함할 수 있다. 본 방법은, 디바이스에 의해, 복수의 트리플렛을 생성하는 단계를 포함할 수 있다. 각 트리플렛은 앵커 클래스로부터의 각각의 포인트, 클래스 포지티브로부터의 각각의 포인트, 클래스 네거티브로부터의 각각의 포인트를 포함할 수 있다. 본 방법은, 디바이스에 의해, 복수의 트리플렛의 손실 함수를 계산하는 단계를 포함할 수 있다. 본 방법은, 디바이스에 의해, 손실 함수에 기초하여 이미지 분류기의 파라미터들을 조정하는 단계를 포함할 수 있다.
일부 구현예에서, 각 패치는 다차원 공간(multi-dimensional space)의 이미지 데이터로 나타내어질 수 있다. 본 방법은, 이미지 분류기를 사용하여 패치들 각각에 대한 이미지 데이터를 저차원 공간으로 변환함으로써, 디바이스에 의해, 복수의 포인트를 생성하는 단계를 더 포함할 수 있다. 일부 구현예에서, 이미지 분류기는 합성곱 신경망으로서 구현될 수 있다.
일부 구현예에서, 각 이미지는 각각의 병리학 슬라이드에 대응할 수 있고, 제1 유형이라는 주석이 달린 이미지들은 양성으로 식별되고, 제2 유형이라는 주석이 달린 이미지들은 종양성으로 식별된다. 일부 다른 구현예에서, 각 이미지는 위성 사진(satellite photograph)에 대응할 수 있다.
일부 구현예에서, 본 방법은, 디바이스에 의해, 복수의 이미지에 대응하는 이미지 데이터를 수신하는 단계를 포함할 수 있다. 이미지들의 각각의 패치로부터 복수의 포인트를 생성하는 단계는, 복수의 이미지의 서브 세트에 대해서만 수행될 수 있다. 일부 구현예에서, 복수의 트리플렛의 손실 함수를 계산하는 단계는, 디바이스에 의해, 복수의 트리플렛에 대한 트리플렛 마진 에러(triplet margin error)를 계산하는 단계를 포함할 수 있다.
일부 구현예에서, 본 방법은, 디바이스에 의해, 패치들 각각에 대한 불명료도 메트릭(blurriness metric) 또는 광 레벨 메트릭(light level metric) 중 적어도 하나를 결정하는 단계를 더 포함할 수 있다. 본 방법은 또한, 디바이스에 의해, 복수의 포인트를 생성하기 전에, 폐기된 패치들의 서브 세트에서(in the discarded subset of patches) 각 패치에 대한 불명료도 메트릭 또는 광 레벨 메트릭 중 적어도 하나에 기초하여, 패치들의 서브 세트를 폐기하는 단계를 포함할 수 있다. 일부 구현예에서, 본 방법은, 디바이스에 의해, 복수의 포인트를 생성하기 전에, 패치들 중 적어도 하나의 회전(rotation) 또는 색상 정규화(color normalization) 중 적어도 하나를 포함하는 데이터 증강(data augmentation)을 수행하는 단계를 더 포함할 수 있다.
일부 구현예에서, 2개의 클러스터 중 제2 클러스터보다, 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들에 더 근접한, 2개의 클러스터 중 제1 클러스터를 식별하는 단계는, 디바이스에 의해, 제1 클러스터의 포인트들과 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들 사이의 제1 평균 유클리드 거리(first average Euclidean distance)가 제2 클러스터의 포인트들과 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들 사이의 제2 평균 유클리드 거리(second average Euclidean distance)보다 작다고 결정하는 단계를 더 포함할 수 있다.
일부 구현예에서, 본 방법은, 디바이스에 의해, 이미지 분류기의 파라미터들을 조정하는 단계에 후속하여, 비범주화된 입력 이미지를 수신하는 단계를 더 포함할 수 있다. 본 방법은, 디바이스에 의해, 입력 이미지를 복수의 비범주화된 패치로 나누는 단계를 더 포함할 수 있다. 본 방법은, 디바이스에 의해, 이미지 분류기에 기초하여 각각의 비범주화된 패치에 대한 분류를 결정하는 단계를 더 포함할 수 있다.
일부 구현예에서, 본 방법은, 디바이스에 의해, 입력 이미지에 대한 전반적인 분류를 결정하기 위해, 각각의 비범주화된 패치에 대한 분류를 집계하는 단계를 더 포함할 수 있다. 일부 구현예에서, 본 방법은, 디바이스에 의해, 입력 이미지에 대한 패치-단위 분할을 포함하는 출력을 제공하는 단계를 더 포함할 수 있다. 입력 이미지에 대한 패치-단위 분할은, 입력 이미지의 각 패치마다, 패치에 대한 분류 표시를 나타낼 수 있다.
일부 구현예에서, 제1 유형 또는 제2 유형 중 어느 하나라는 주석이 달린 이미지들의 각각의 패치로부터 복수의 포인트를 생성하는 단계는, 복수의 포인트 중 제1 포인트 세트(first set of points)를 식별하는 단계를 더 포함할 수 있다. 클러스터링하는 단계, 제1 클러스터를 식별하는 단계, 포인트들을 할당하는 단계, 복수의 트리플렛을 생성하는 단계, 손실 함수를 계산하는 단계, 및 이미지 분류기의 파라미터들을 조정하는 단계는, 제1 포인트 세트에 기초하여 수행될 수 있다. 본 방법은, 제1 포인트 세트에 기초하여 이미지 분류기의 파라미터들을 조정하는 단계에 응답하여, 클러스터링하는 단계, 제1 클러스터를 식별하는 단계, 포인트들을 할당하는 단계, 복수의 트리플렛을 생성하는 단계, 손실 함수를 계산하는 단계, 및 복수의 포인트 중 제2 포인트 세트를 사용하여 이미지 분류기의 파라미터들을 조정하는 단계를 반복하는 것을 더 포함할 수 있다.
본 개시의 다른 양상은, 이미지 분류용 모델을 훈련시키기 위한 시스템에 관한 것이다. 본 시스템은 하나 이상의 프로세서를 갖는 디바이스를 포함할 수 있다. 본 디바이스는 제1 유형 또는 제2 유형 중 어느 하나라는 주석이 달린 이미지들로부터 생성된 각각의 패치로부터 복수의 포인트를 생성하도록 구성될 수 있다. 본 디바이스는, 클러스터링 알고리즘을 사용하여, 제2 유형이라는 주석이 달린 이미지들에 대응하는 포인트들을 2개의 클러스터로 클러스터링하도록 구성될 수 있다. 본 디바이스는, 2개의 클러스터 중 제2 클러스터보다, 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들에 더 근접한, 2개의 클러스터 중 제1 클러스터를 식별하도록 구성될 수 있다. 본 디바이스는 제1 클러스터의 포인트들을 클래스 포지티브에, 제2 클러스터의 포인트들을 클래스 네거티브에, 그리고 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들을 앵커 클래스에 할당하도록 구성될 수 있다. 본 디바이스는 복수의 트리플렛을 생성하도록 구성될 수 있고, 각 트리플렛은 앵커 클래스로부터의 각각의 포인트, 클래스 포지티브로부터의 각각의 포인트, 및 클래스 네거티브로부터의 각각의 포인트를 포함한다. 본 디바이스는, 복수의 트리플렛의 손실 함수를 계산하도록 구성될 수 있다. 본 디바이스는, 손실 함수에 기초하여 이미지 분류기의 파라미터들을 조정하도록 구성될 수 있다.
일부 구현예에서, 각 패치는 다차원 공간의 이미지 데이터로 나타내어질 수 있다. 본 디바이스는 이미지 분류기를 사용하여 패치들 각각에 대한 이미지 데이터를 저차원 공간으로 변환함으로써 복수의 트리플렛을 생성하도록 더 구성될 수 있다. 일부 구현예에서, 이미지 분류기는 합성곱 신경망으로서 구현될 수 있다.
일부 구현예에서, 각 이미지는 각각의 병리학 슬라이드에 대응할 수 있다. 제1 유형이라는 주석이 달린 이미지들은 양성으로 식별될 수 있고, 제2 유형이라는 주석이 달린 이미지들은 종양성으로 식별될 수 있다.
일부 구현예에서, 본 디바이스는, 복수의 이미지에 대응하는 이미지 데이터를 수신하고, 복수의 이미지의 서브 세트에 대해서만 이미지들의 각각의 패치로부터의 복수의 포인트를 생성하도록 더 구성될 수 있다. 일부 구현예에서, 본 디바이스는 복수의 트리플렛에 대한 트리플렛 마진 에러를 계산함으로써 복수의 포인트의 손실 함수를 계산하도록 더 구성될 수 있다.
본 개시의 다른 양상들은, 본 명세서에 설명된 이미지 분류 시스템을 사용하여 이미지를 분류하기 위한 방법들 및 시스템들에 관한 것이다. 이미지의 분류는 이미지-단위 분류(image-wise classification)일 수 있다. 일부 구현예에서, 이미지의 분류는 패치-단위 분류 또는 분할일 수 있다. 일부 구현예에서, 이미지 분류 시스템은 주어진 이미지(given image)를 수신할 수 있다. 이미지에 주석이 달리지 않을 수 있다(unannotated). 이미지 분류 시스템은, 이미지를 나누거나, 다른 방식으로 이미지로부터 패치들을 도출할(derive) 수 있다. 이미지 분류 시스템은 적어도 패치들의 서브 세트를 더 낮은 임베딩된 포인트들로 변환할 수 있다. 그 후, 이미지 분류 시스템은, 더 낮은 임베딩된 포인트들, 및 훈련된 이미지 분류기를 사용하여 패치들의 서브 세트 각각을 분류할 수 있다. 패치들에 대한 집계식 분류(aggregate classification)가 이미지를 분류하는 데에 사용될 수 있다.
본 개시의 상기한 다른 목적들, 양상들, 특징들 및 이점들은 첨부 도면들과 함께 취해진 다음의 설명을 참조함으로써 더 명백해지고 더 잘 이해될 것이다.
도 1a는 서버 디바이스와 통신하는 클라이언트 디바이스를 포함하는 네트워크 환경의 실시예를 도시하는 블록도이다.
도 1b는 클라우드 서비스 제공자들과 통신하는 클라이언트 디바이스를 포함하는 클라우드 컴퓨팅 환경을 도시하는 블록도이다.
도 1c 및 도 1d는 본 명세서에 설명된 방법들 및 시스템들과 관련되는 유용한 컴퓨팅 디바이스들의 실시예들을 도시하는 블록도들이다.
도 2a는 이미지 분류를 위한 시스템에서의 데이터 흐름을 도시하는 블록도이다.
도 2b는 병리학 슬라이드에 대한 이미지 분류를 위한 시스템에서의 데이터 흐름을 도시하는 블록도이다.
도 3은 이미지 분류 시스템의 구현예의 아키텍처 중 일부를 도시한다.
도 4는 이미지 분류기를 훈련시키는 예시적 방법의 흐름도이다.
도 5는 비범주화된 입력 이미지를 분류하는 예시적 방법의 흐름도이다.
아래의 다양한 실시예들의 설명을 판독하기 위해서, 본 명세서의 섹션들 및 그들 각각의 내용에 대한 다음의 설명이 도움이 될 수 있다:
섹션 A는 본 명세서에 설명된 실시예들을 실시하는 데에 유용할 수 있는 네트워크 환경 및 컴퓨팅 환경을 설명한다.
섹션 B는 이미지들을 분류하기 위한 시스템들 및 방법들의 실시예들을 설명한다.
A. 컴퓨팅 및 네트워크 환경
본 해결책의 특정 실시예들에 대해 논의하기 전에, 본 명세서에 설명된 방법들 및 시스템들과 관련하여, 관련 시스템 구성 요소들(예를 들어, 하드웨어 요소들)뿐만 아니라 운영 환경의 양상들을 설명하는 것이 도움이 될 수 있다. 도 1a을 참조하여, 네트워크 환경의 실시예가 도시된다. 간략한 개요에서, 네트워크 환경은, 하나 이상의 서버(106a 내지 106n)(일반적으로 서버(들)(106), 노드(106) 또는 원격 머신(들)(106)로도 지칭됨)과 통신하는 하나 이상의 클라이언트(102a 내지 102n)(일반적으로 로컬 머신(들)(102), 클라이언트(들)(102), 클라이언트 노드(들)(102), 클라이언트 머신(들)(102), 클라이언트 컴퓨터(들)(102), 클라이언트 디바이스(들)(102), 엔드 포인트(들)(102) 또는 엔드 포인트 노드(들)(102)로도 지칭됨)를 포함한다. 일부 구현예에서, 클라이언트(102)는 서버에 의해 제공되는 리소스들에 대한 액세스를 추구하는 클라이언트 노드로서 그리고 다른 클라이언트(102a 내지 102n)에 대한 호스팅된 리소스들에 대한 액세스를 제공하는 서버로서 기능하는 능력을 갖는다.
도 1a가 클라이언트(102)들과 서버(106)들 사이의 네트워크(104)를 도시하더라도, 클라이언트(102)들과 서버(106)들은 동일한 네트워크(104) 상에 있을 수 있다. 일부 구현예에서, 클라이언트(102)들과 서버(106)들 사이의 다수의 네트워크(104)가 있다. 이들 실시예 중 하나에서, 네트워크(104')(도시되지 않음)는 비공개 네트워크(private network)일 수 있고, 네트워크(104)는 공개 네트워크(public network)일 수 있다. 이들 실시예 중 다른 하나에서, 네트워크(104)는 비공개 네트워크일 수 있고, 네트워크(104')는 공개 네트워크일 수 있다. 이들 실시예 중 또 다른 하나에서, 네트워크(104 및 104')는 둘 다 비공개 네트워크일 수 있다.
네트워크(104)는 유선 링크 및 무선 링크를 통해 연결될 수 있다. 유선 링크들은 디지털 가입자 라인(Digital Subscriber Line)(DSL), 동축 케이블 라인 또는 광섬유 라인을 포함할 수 있다. 무선 링크들은 블루투스, Wi-Fi, WiMAX(Worldwide Interoperability for Microwave Access), 적외선 채널 또는 위성 대역을 포함할 수 있다. 무선 링크들은 또한, 1G, 2G, 3G 또는 4G로서의 자격을 얻은 표준들을 포함하는 모바일 디바이스들 사이에서 통신하기 위해 사용되는 임의의 셀룰러 네트워크 표준을 포함할 수 있다. 네트워크 표준들은 국제전기통신연합(International Telecommunication Union)(ITU)에 의해 유지되는 사양과 같은 사양 또는 표준을 충족시킴으로써 하나 이상의 모바일 통신 표준 세대로서 자격을 얻을 수 있다. 예를 들어, 3G 표준은 IMT-2000(International Mobile Telecommunications-2000) 사양에 대응할 수 있고, 4G 표준은 IMT-Advanced(International Mobile Telecommunications Advanced) 사양에 대응할 수 있다. 셀룰러 네트워크 표준의 예로는 AMPS, GSM, GPRS, UMTS, LTE, LTE Advanced, Mobile WiMAX 및 WiMAX-Advanced를 포함한다. 셀룰러 네트워크 표준들은 다양한 채널 액세스 방법들, 예를 들어, FDMA, TDMA, CDMA 또는 SDMA를 사용할 수 있다. 일부 실시예에서, 상이한 유형의 데이터가 상이한 링크 및 표준을 통해 송신될 수 있다. 다른 실시예들에서, 동일한 유형의 데이터가 상이한 링크 및 표준을 통해 송신될 수 있다.
네트워크(104)는 임의의 유형 및/또는 형태의 네트워크일 수 있다. 네트워크(104)의 지리적 범위(geographical scope)는 광범위하게 가변될 수 있고 네트워크(104)는 인체 영역 통신망(body area network)(BAN), 개인 영역 네트워크(personal area network)(PAN), 근거리 네트워크(local-area network)(LAN), 예를 들어, 인트라넷, 도시권 통신망(metropolitan area network)(MAN), 광역 네트워크(wide area network)(WAN), 또는 인터넷일 수 있다. 네트워크(104)의 토폴로지는 임의의 형태일 수 있고, 예를 들어, 포인트-투-포인트, 버스, 스타, 링, 메시 또는 트리 중 임의의 것을 포함할 수 있다. 네트워크(104)는 가상이고 다른 네트워크(104')의 하나 이상의 계층 위에 위치되는 오버레이 네트워크(overlay network)일 수 있다. 네트워크(104)는 본 명세서에 설명된 동작들을 지원할 수 있는 본 기술분야의 통상의 기술자에게 알려진 임의의 그러한 네트워크 토폴로지일 수 있다. 네트워크(104)는 예를 들어, 이더넷 프로토콜, 인터넷 프로토콜 슈트(TCP/IP), 비동기식 전송 모드(Asynchronous Transfer Mode)(ATM) 기법, 동기식 광 네트워킹(Synchronous Optical Networking)(SONET) 프로토콜, 또는 동기식 디지털 계층(Synchronous Digital Hierarchy)(SDH) 프로토콜을 포함하는, 프로토콜들의 계층 또는 스택 및 상이한 기법들을 활용할 수 있다. TCP/IP 인터넷 프로토콜 슈트는 애플리케이션 계층, 전송 계층, 인터넷 계층(예를 들어, IPv6를 포함함) 또는 링크 계층을 포함할 수 있다. 네트워크(104)는 브로드캐스트 네트워크, 통신 네트워크, 데이터 통신 네트워크 또는 컴퓨터 네트워크 유형일 수 있다.
일부 실시예에서, 시스템은 다수의 논리적으로 그룹화된 서버(106)를 포함할 수 있다. 이들 실시예 중 하나에서, 서버들의 논리적 그룹은 서버 팜(server farm)(38)(도시되지 않음) 또는 머신 팜(38)으로 지칭될 수 있다. 이들 실시예들 중 다른 하나에서, 서버(106)들은 지리적으로 분산될 수 있다. 다른 실시예들에서, 머신 팜(38)은 단일 엔티티로서 관리될 수 있다. 또 다른 실시예들에서, 머신 팜(38)은 복수의 머신 팜(38)을 포함한다. 각 머신 팜(38) 내의 서버(106)들은 이종(heterogeneous) - 서버(106)들 또는 머신(106)들 중 하나 이상이 한 유형의 운영 체제 플랫폼(예를 들어, 워싱턴주, 레드몬드의 마이크로소프트사에 의해 제조된 윈도우 NT)에 따라 동작할 수 있고, 반면에 다른 서버(106)들 중 하나 이상이 다른 유형의 운영 체제 플랫폼(예를 들어, Unix, Linux 또는 Mac OS X)에 따라 동작할 수 있음 - 이다.
일 실시예에서, 머신 팜(38)의 서버(106)들은 관련 저장장치 시스템들과 함께 고밀도 랙 시스템들(high-density rack systems)에 저장될 수 있고, 엔터프라이즈 데이터 센터(enterprise data center)에 위치될 수 있다. 이 실시예에서, 이러한 방식으로 서버(106)들을 통합하는 것은, 국지적인 고성능 네트워크들 상에 서버(106)들 및 고성능 저장장치 시스템들을 위치시킴으로써 시스템 관리성, 데이터 보안성, 시스템의 물리적 보안성, 및 시스템 성능을 향상시킬 수 있다. 서버(106)들 및 저장장치 시스템들을 중앙 집중화하고 그들을 고급 시스템 관리 도구들(advanced system management tools)과 결합함으로써, 서버 리소스들을 더 효율적으로 사용할 수 있다.
각 머신 팜(38)의 서버(106)들은 동일한 머신 팜(38) 내의 다른 서버(106)에 물리적으로 근접해 있을 필요는 없다. 따라서, 머신 팜(38)으로 논리적으로 그룹화된 서버 그룹(group of servers)(106)은 WAN(wide-area network) 연결 또는 MAN(metropolitan-area network) 연결을 사용하여 상호 연결될 수 있다. 예를 들어, 머신 팜(38)은 상이한 대륙 또는 대륙, 국가, 주, 도시, 캠퍼스 또는 방의 상이한 영역에 물리적으로 위치된 서버(106)들을 포함할 수 있다. 서버(106)들이 근거리 통신망(LAN) 연결 또는 어떤 형태의 직접 연결을 사용하여 연결된 경우, 머신 팜(38) 내의 서버(106)들 사이의 데이터 송신 속도가 증가될 수 있다. 추가적으로, 이종 머신 팜(38)은 운영 체제의 유형에 따라 운영되는 하나 이상의 서버(106)를 포함할 수 있고, 반면에 하나 이상의 다른 서버(106)는 운영 체제보다는 하나 이상 유형의 하이퍼바이저를 실행한다. 이들 실시예에서, 하이퍼바이저들은, 가상 하드웨어를 에뮬레이트하고(emulate), 물리적 하드웨어를 구분하고, 물리적 하드웨어를 가상화하고(virtualize), 컴퓨팅 환경에의 액세스를 제공하는 가상 머신들을 실행하는 데에 사용되어, 다수의 운영 체제가 호스트 컴퓨터 상에서 동시에 실행될 수 있게 한다. 네이티브 하이퍼바이저들(native hypervisors)은 호스트 컴퓨터 상에서 직접 실행될 수 있다. 하이퍼바이저들은 캘리포니아주, 팔로 알토의 VMWare사에 의해 제조된 VMware ESX/ESXi; Citrix Systems 사에 의해 개발이 감독된 오픈 소스 제품인 Xen 하이퍼바이저; 마이크로소프트 또는 기타 업체에 의해 제공된 HYPER-V 하이퍼바이저를 포함할 수 있다. 호스팅된 하이퍼바이저들은 제2 소프트웨어 레벨 상의 운영 체제 내에서 실행될 수 있다. 호스팅된 하이퍼바이저들의 예시는 VMware Workstation 및 VIRTUALBOX를 포함할 수 있다.
머신 팜(38)의 관리는 분권화될(de-centralized) 수 있다. 예를 들어, 하나 이상의 서버(106)는 머신 팜(38)에 대한 하나 이상의 관리 서비스를 지원하기 위한 구성 요소, 서브 시스템 및 모듈들을 포함할 수 있다. 이들 실시예 중 하나에서, 하나 이상의 서버(106)는 장애 조치(failover)를 취하고, 데이터 복제(data replication)를 행하고, 머신 팜(38)의 강인성(robustness)을 증가시키기 위한 기법들을 포함하는, 동적 데이터의 관리를 위한 기능을 제공한다. 각 서버(106)는 영구 저장소(persistent store)와 통신할 수 있고, 일부 실시예에서 동적 저장소(dynamic store)와 통신할 수 있다.
서버(106)는 파일 서버, 애플리케이션 서버, 웹 서버, 프록시 서버, 기기(appliance), 네트워크 기기, 게이트웨이, 게이트웨이 서버, 가상화 서버, 배치 서버, SSL VPN 서버, 또는 방화벽일 수 있다. 일 실시예에서, 서버(106)는 원격 머신 또는 노드로 지칭될 수 있다. 다른 실시예에서, 복수의 노드(290)는 임의의 2개의 통신 서버 사이의 경로에 있을 수 있다.
도 1b를 참조하여, 클라우드 컴퓨팅 환경이 도시된다. 클라우드 컴퓨팅 환경은 네트워크 환경에 의해 제공되는 하나 이상의 리소스를 클라이언트(102)에게 제공할 수 있다. 클라우드 컴퓨팅 환경은 하나 이상의 네트워크(104)를 통해 클라우드(108)와 통신하는 하나 이상의 클라이언트(102a 내지 102n)를 포함할 수 있다. 클라이언트(102)들은, 예를 들어, 씩 클라이언트들(thick clients), 씬 클라이언트들(thin clients) 및 제로 클라이언트들(zero clients)을 포함할 수 있다. 씩 클라이언트는, 클라우드(108) 또는 서버(106)들과의 연결이 중단된 경우에도 적어도 일부 기능을 제공할 수 있다. 씬 클라이언트 또는 제로 클라이언트는 기능을 제공하기 위해서는 클라우드(108) 또는 서버(106)로의 연결에 의존할 수 있다. 제로 클라이언트는, 클라이언트 디바이스용 운영 체제 데이터를 검색하기 위해, 클라우드(108) 또는 다른 네트워크(104)들 또는 서버(106)들에 의존할 수 있다. 클라우드(108)는 백 엔드 플랫폼들(back end platforms), 예를 들어, 서버(106)들, 저장장치(storage), 서버 팜들 또는 데이터 센터들을 포함할 수 있다.
클라우드(108)는 공개(public), 비공개(private) 또는 하이브리드(hybrid)일 수 있다. 공개 클라우드들은, 클라이언트들의 소유자들 또는 클라이언트(102)들에게는 제3 자들에 의해 유지되는 공개 서버(106)들을 포함할 수 있다. 서버(106)들은 전술한 바와 같이 또는 다른 방식으로 원격 지리적 위치들에 떨어져(off-site) 위치될 수 있다. 공개 클라우드들은 공개 네트워크를 통해 서버(106)들에 연결될 수 있다. 비공개 클라우드들은 클라이언트(102)들 또는 클라이언트들의 소유자들에 의해 물리적으로 유지되는 비공개 서버(106)들을 포함할 수 있다. 비공개 클라우드들은 비공개 네트워크(104)를 통해 서버(106)들에 연결될 수 있다. 하이브리드 클라우드(108)들은, 비공개 네트워크 및 공개 네트워크(104), 및 서버(106)들을 포함할 수 있다.
클라우드(108)는 또한, 클라우드 기반 전달(cloud based delivery), 예를 들어, SaaS(Software as a Service)(110), PaaS(Platform as a Service)(112) 및 IaaS(Infrastructure as a Service)(114)를 포함할 수 있다. IaaS는 지정된 기간 동안 필요로 되는 기반 구조 리소스들(infrastructure resources)의 사용을 임대하는 사용자를 지칭할 수 있다. IaaS 제공자들은, 큰 풀(large pool)로부터 저장장치, 네트워킹, 서버들 또는 가상화 리소스들을 제공하여, 사용자들이 필요에 따라 더 많은 리소스들에 액세스함으로써 신속하게 확장할 수 있게 한다. IaaS의 예시는, 워싱턴 주, 시애틀의 Amazon.com사에 의해 제공된 AMAZON WEB SERVICES, 텍사스주, 산 안토니오의 Rackspace US사에 의해 제공된 RACKSPACE CLOUD, 캘리포니아주, 마운틴 뷰의 Google사에 의해 제공된 Google Compute Engine, 또는 캘리포니아주, 산타 바바라의 RightScale사에 의해 제공된 RIGHTSCALE을 포함한다. PaaS 제공자들은, IaaS에 의해 제공되는 기능 - 예를 들어, 저장장치, 네트워킹, 서버들 또는 가상화를 포함함 - 뿐만 아니라, 예를 들어, 운영 체제, 미들웨어 또는 런타임 리소스들과 같은 추가 리소스들을 제공할 수 있다. PaaS의 예시는, 워싱턴주, 레드몬드의 마이크로소프트사에 의해 제공되는 WINDOWS AZURE, Google사에 의해 제공되는 Google App Engine, 및 캘리포니아주, 샌프란시스코의 Heroku사에 의해 제공되는 HEROKU를 포함한다. SaaS 제공자들은, 저장장치, 네트워킹, 서버들, 가상화, 운영 체제, 미들웨어 또는 런타임 리소스들을 포함하는, PaaS가 제공하는 리소스들을 제공할 수 있다. 일부 실시예에서, SaaS 제공자들은, 예를 들어, 데이터 및 애플리케이션 리소스들을 포함하는, 추가 리소스들을 제공할 수 있다. SaaS의 예시는, Google사에 의해 제공되는 GOOGLE APPS, 캘리포니아주, 샌프란시스코의 Salesforce.com사에 의해 제공되는 SALESFORCE, 또는 마이크로소프트사에 의해 제공되는 오피스 365를 포함한다. SaaS의 예시는 또한, 예를 들어, 캘리포니아주, 샌프란시스코의 Dropbox사에 의해 제공되는 DROPBOX, 마이크로소프트사에 의해 제공되는 Microsoft SKYDRIVE, Google사에 의해 제공되는 Google Drive, 또는 캘리포니아주, 쿠퍼티노의 Apple사에 의해 제공되는 Apple ICLOUD를 포함할 수 있다.
클라이언트(102)들은, 예를 들어, Amazon Elastic Compute Cloud(EC2), OCCI(Open Cloud Computing Interface), CIMI(Cloud Infrastructure Management Interface) 또는 OpenStack 표준을 포함하는, 하나 이상의 IaaS 표준을 이용하여 IaaS 리소스들에 액세스할 수 있다. 일부 IaaS 표준은, 클라이언트들이 HTTP를 통해 리소스들에 액세스할 수 있게 하고, REST(Representational State Transfer) 프로토콜 또는 SOAP(Simple Object Access Protocol)를 사용할 수 있다. 클라이언트(102)들은, 상이한 PaaS 인터페이스들을 이용하여 PaaS 리소스들에 액세스할 수 있다. 일부 PaaS 인터페이스들은, HTTP 패키지, 표준 Java API, JavaMail API, JDO(Java Data Objects), JPA(Java Persistence API), Python API, 상이한 프로그래밍 언어들에 대한 웹 통합 API - 예를 들어, Ruby용 Rack, Python용 WSGI, 또는 Perl용 PSGI를 포함함-, 또는 REST, HTTP, XML 또는 기타 프로토콜들 상에 구축될 수 있는 기타 API들을 사용한다. 클라이언트(102)들은, 웹 브라우저(예를 들어, GOOGLE CHROME, 마이크로소프트 INTERNET EXPLORER, 또는 캘리포니아주, 마운틴 뷰의 Mozilla Foundation에 의해 제공되는 Mozilla Firefox)에 의해 제공되는 웹 기반 사용자 인터페이스의 사용을 통해 SaaS 리소스들에 액세스할 수 있다. 클라이언트(102)들은 또한, 예를 들어, Salesforce Sales Cloud 또는 Google Drive 앱을 포함하는, 스마트 폰 또는 태블릿 애플리케이션을 통해 SaaS 리소스들에 액세스할 수 있다. 클라이언트(102)들은 또한, 예를 들어, DROPBOX용 윈도우 파일 시스템을 포함하는, 클라이언트 운영 체제를 통해 SaaS 리소스들에 액세스할 수 있다.
일부 실시예에서, IaaS, PaaS 또는 SaaS 리소스들에 대한 액세스가 인증될 수 있다. 예를 들어, 서버 또는 인증 서버는 보안 인증서들, HTTPS 또는 API 키들을 통해 사용자를 인증할 수 있다. API 키들은, 예를 들어, AES(Advanced Encryption Standard)와 같은 다양한 암호화 표준들을 포함할 수 있다. 데이터 리소스들은 TLS(Transport Layer Security) 또는 SSL(Secure Sockets Layer)을 통해 전송될 수 있다.
클라이언트(102) 및 서버(106)는, 임의의 유형 및 형태의 컴퓨팅 디바이스, 예를 들어, 임의의 유형 및 형태의 네트워크 상에서 통신할 수 있고 본 명세서에 설명된 동작들을 수행할 수 있는, 컴퓨터, 네트워크 디바이스 또는 기기상에 배치되고/되거나 실행될 수 있다. 도 1c 및 1d는 클라이언트(102) 또는 서버(106)의 실시예를 실시하는 데에 유용한 컴퓨팅 디바이스(100)의 블록도를 도시한다. 도 1c 및 도 1d에 도시된 바와 같이, 각 컴퓨팅 디바이스(100)는 중앙 처리 유닛(121) 및 메인 메모리 유닛(122)을 포함한다. 도 1c에 도시된 바와 같이, 컴퓨팅 디바이스(100)는, 저장 디바이스(128), 설치 디바이스(116), 네트워크 인터페이스(118), I/O 제어기(123), 디스플레이 디바이스(124a 내지 124n), 키보드(126) 및 포인팅 디바이스(127), 예를 들어, 마우스를 포함할 수 있다. 저장 디바이스(128)는, 운영 체제, 소프트웨어, 및 이미지 분류 시스템(120)의 소프트웨어를, 제한 없이, 포함할 수 있다. 도 1d에 도시된 바와 같이, 각 컴퓨팅 디바이스(100)는 또한, 추가 선택적 요소들(additional optional elements), 예를 들어, 메모리 포트(103), 브리지(170), 하나 이상의 입력/출력 디바이스(130a 내지 130n)(일반적으로 참조 번호(130)를 사용하여 지칭됨), 및 중앙 처리 유닛(121)과 통신하는 캐시 메모리(140)를 포함할 수 있다.
중앙 처리 유닛(121)은 메인 메모리 유닛(122)으로부터 페치된(fetched) 명령어들에 응답하고 이들을 처리하는 임의의 로직 회로이다. 많은 실시예들에서, 중앙 처리 유닛(121)은, 마이크로 프로세서 유닛, 예를 들어: 캘리포니아주, 마운틴 뷰의 Intel사에 의해 제조된 것들; 일리노이주, 샴 버그의 Motorola사에 의해 제조된 것들; 캘리포니아주, 산타 클라라의 Nvidia에 의해 제조된 ARM 프로세서 및 TEGRA 시스템 온 칩(SoC); POWER7 프로세서, 뉴욕주, 화이트 플레인즈의 International Business Machines에 의해 제조된 것들; 또는 캘리포니아주, 서니베일의 Advanced Micro Devices에 의해 제조된 것들에 의해 제공된다. 컴퓨팅 디바이스(100)는 이들 프로세서 중 임의의 것 또는 본 명세서에 설명된 바와 같이 동작할 수 있는 임의의 다른 프로세서에 기초할 수 있다. 중앙 처리 유닛(121)은 명령어 레벨 병렬성(instruction level parallelism), 스레드 레벨 병렬성, 상이한 레벨의 캐시, 및 멀티-코어 프로세서들을 활용할 수 있다. 멀티-코어 프로세서는 단일 컴퓨팅 구성 요소 상의 2개 이상의 처리 유닛을 포함할 수 있다. 멀티-코어 프로세서의 예시는 AMD PHENOM IIX2, INTEL CORE i5 및 INTEL CORE i7를 포함한다.
메인 메모리 유닛(122)은 데이터를 저장할 수 있고 임의의 저장 위치가 마이크로프로세서(121)에 의해 직접 액세스될 수 있는 하나 이상의 메모리 칩을 포함할 수 있다. 메인 메모리 유닛(122)은 휘발성일 수 있고, 저장장치(128) 메모리보다 빠를 수 있다. 메인 메모리 유닛(122)은 DRAM(Dynamic Random Access Memory)일 수 있거나, SRAM(Static Random Access Memory), Burst SRAM 또는 BSRAM(SynchBurst SRAM), FPM DRAM(Fast Page Mode DRAM), EDRAM(Enhanced DRAM), EDO RAM(Extended Data Output RAM), BEDO DRAM(Extended Data Output DRAM), SDR SDRAM(Single Data Rate Synchronous DRAM), DDR SDRAM(Double Data Rate SDRAM), DRDRAM(Direct Rambus DRAM) 또는 XDR DRAM(Extreme Data Rate DRAM)을 포함하는 임의의 변형(any variants)일 수 있다. 일부 실시예에서, 메인 메모리(122) 또는 저장소(128)는 비휘발성; 예를 들어, NVRAM(non-volatile read access memory), nvSRAM(flash memory non-volatile static RAM), FeRAM(Ferroelectric RAM), MRAM(Magnetoresistive RAM), 상변화 메모리(Phase-change memory)(PRAM), CBRAM(conductive-bridging RAM), SONOS(Silicon-Oxide-Nitride-Oxide-Silicon), RRAM(Resistive RAM), 레이스트랙(Racetrack), NRAM(Nano-RAM) 또는 밀리피드 메모리(Millipede memory)일 수 있다. 메인 메모리(122)는 전술한 메모리 칩들 중 임의의 하나 또는 본 명세서에 설명된 바와 같이 동작할 수 있는 임의의 다른 이용 가능한 메모리 칩들에 기초할 수 있다. 도 1c에 도시된 실시예에서, 프로세서(121)는 시스템 버스(150)를 통해 메인 메모리(122)와 통신한다(이하에 더 상세히 설명됨). 도 1d는 프로세서가 메모리 포트(103)를 통해 메인 메모리(122)와 직접 통신하는 컴퓨팅 디바이스(100)의 실시예를 도시한다. 예를 들어, 도 1d에서, 메인 메모리(122)는 DRDRAM일 수 있다.
도 1d는 메인 프로세서(121)가 이차 버스(secondary bus)(때때로 후면 버스(backside bus)로도 지칭됨)를 통해 캐시 메모리(140)와 직접 통신하는 실시예를 도시한다. 다른 실시예들에서, 메인 프로세서(121)는 시스템 버스(150)를 사용하여 캐시 메모리(140)와 통신한다. 캐시 메모리(140)는 전형적으로 메인 메모리(122)보다 빠른 응답 시간을 가지며, SRAM, BSRAM 또는 EDRAM에 의해 전형적으로 제공된다. 도 1d에 도시된 실시예에서, 프로세서(121)는 로컬 시스템 버스(150)를 통해 다양한 I/O 디바이스들(130)과 통신한다. PCI 버스, PCI-X 버스, 또는 PCI-Express 버스 또는 NuBus를 포함하는 다양한 버스들이, 중앙 처리 유닛(121)을 I/O 디바이스들(130) 중 임의의 것에 연결하기 위해, 사용될 수 있다. I/O 디바이스가 비디오 디스플레이(124)인 실시예들의 경우, 프로세서(121)는, 디스플레이(124)와 통신하거나 디스플레이(124)용 I/O 제어기(123)와 통신하기 위해, AGP(Advanced Graphics Port)를 사용할 수 있다. 도 1d는, 메인 프로세서(121)가 HYPERTRANSPORT, RAPIDIO, 또는 INFINIBAND 통신 기술을 통해 I/O 디바이스(130b) 또는 다른 프로세서(121')와 직접 통신하는, 컴퓨터(100)의 실시예를 도시한다. 도 1d는 또한, 로컬 버스들과 직접 통신이 혼재되는: 프로세서(121)가, I/O 디바이스(130b)와 직접 통신하면서, 로컬 상호연결 버스를 사용하여 I/O 디바이스(130a)와 통신하는 실시예를 도시한다.
매우 다양한 I/O 디바이스(130a 내지 130n)가 컴퓨팅 디바이스(100)에 존재할 수 있다. 입력 디바이스들은, 키보드, 마우스, 트랙 패드, 트랙 볼, 터치 패드, 터치 마우스, 멀티-터치 터치 패드 및 터치 마우스, 마이크로폰, 멀티-어레이 마이크로폰, 드로잉 태블릿, 카메라, 일안 리플렉스 카메라(single-lens reflex camera)(SLR), DSLR(digital SLR), CMOS 센서, 가속도계, 적외선 광학 센서, 압력 센서, 자력계 센서(magnetometer sensors), 각속도 센서(angular rate sensors), 깊이 센서(depth sensors), 근접 센서(proximity sensors), 주변 광 센서(ambient light sensors), 자이로스코프 센서(gyroscopic sensors) 또는 기타 센서를 포함할 수 있다. 출력 디바이스들은 비디오 디스플레이, 그래픽 디스플레이, 스피커, 헤드폰, 잉크젯 프린터, 레이저 프린터 및 3D 프린터를 포함할 수 있다.
디바이스(130a 내지 130n)는, 예를 들어, 마이크로소프트 KINECT, WII용 닌텐도 Wiimote, 닌텐도 WII U GAMEPAD 또는 애플 IPHONE을 포함하는, 다중 입력 또는 출력 디바이스들의 조합(combination of multiple input or output devices)을 포함할 수 있다. 일부 디바이스(130a 내지 130n)는 입력 및 출력 중 일부를 결합하는 것을 통해 제스처 인식 입력을 허용한다. 일부 디바이스(130a 내지 130n)는 인증 및 다른 명령들을 포함하는 상이한 목적을 위한 입력으로서 활용될 수 있는 얼굴 인식을 제공한다. 일부 디바이스(130a 내지 130n)는, 예를 들어, 마이크로소프트 KINECT, 애플에 의한 IPHONE용 SIRI, Google Now 또는 Google 보이스 검색을 포함하는, 음성 인식 및 입력을 제공한다.
추가 디바이스(130a 내지 130n)는, 예를 들어, 햅틱 피드백 디바이스, 터치 스크린 디스플레이 또는 멀티-터치 디스플레이를 포함하는, 입력 및 출력 능력 둘 다를 갖는다. 터치 스크린, 멀티-터치 디스플레이, 터치 패드, 터치 마우스 또는 기타 터치 감지 디바이스는, 터치를 감지하기 위해 상이한 기술들 - 예를 들어, 정전식(capacitive), 표면 정전식(surface capacitive), PCT(Projected Capacitive Touch), 셀-내 정전식(in-cell capacitive), 저항식(resistive), 적외선, 도파관, 분산 신호 터치(dispersive signal touch)(DST), 셀-내 광학식(in-cell optical), 표면 탄성파(surface acoustic wave)(SAW), 굽힘파 터치(bending wave touch)(BWT) 또는 힘-기반 감지 기술들을 포함함 - 을 사용할 수 있다. 일부 멀티-터치 디바이스는, 표면과의 2개 이상의 접촉 포인트를 허용하여, 예를 들어, 꼬집기(pinch), 펼치기(spread), 회전, 스크롤 또는 기타 제스처를 포함하는 고급 기능을 허용할 수 있다. 예를 들어, 마이크로소프트 PIXELSENSE 또는 Multi-Touch Collaboration Wall을 포함하는 일부 터치 스크린 디바이스는 탁상(table-top) 또는 벽 위와 같이 더 큰 표면을 가질 수 있고, 기타 전자 디바이스들과 상호 작용할 수도 있다. 일부 I/O 디바이스(130a 내지 130n), 디스플레이 디바이스(124a 내지 124n) 또는 디바이스 그룹(group of devices)은 증강 현실 디바이스(augment reality devices)일 수 있다. I/O 디바이스들은, 도 1c에 도시된 바와 같이 I/O 제어기(123)에 의해 제어될 수 있다. I/O 제어기는, 예를 들어, 키보드(126) 및 (예를 들어, 마우스 또는 광학 펜과 같은) 포인팅 디바이스(127)와 같은 하나 이상의 I/O 디바이스를 제어할 수 있다. 또한, I/O 디바이스는 컴퓨팅 디바이스(100)를 위한 저장 및/또는 설치 매체(116)를 제공할 수도 있다. 또 다른 실시예들에서, 컴퓨팅 디바이스(100)는 핸드 헬드 USB 저장 디바이스를 수신하기 위해 USB 연결(도시되지 않음)을 제공할 수 있다. 추가 실시예들에서, I/O 디바이스(130)는 시스템 버스(150)와 외부 통신 버스, 예를 들어, USB 버스, SCSI 버스, FireWire 버스, 이더넷 버스, 기가비트 이더넷 버스, 파이버 채널 버스 또는 Thunderbolt 버스 사이의 브리지일 수 있다.
일부 실시예에서, 디스플레이 디바이스(124a 내지 124n)는 I/O 제어기(123)에 연결될 수 있다. 디스플레이 디바이스는, 예를 들어, 액정 디스플레이(liquid crystal displays)(LCD), 박막 트랜지스터 LCD(thin film transistor LCD)(TFT-LCD), 블루 위상(blue phase) LCD, 전자 종이(e-잉크) 디스플레이, 가요성 디스플레이, 발광 다이오드 디스플레이(LED), 디지털 광 처리(digital light processing)(DLP) 디스플레이, 액정 온 실리콘(liquid crystal on silicon)(LCOS) 디스플레이, 유기 발광 다이오드(organic light-emitting diode)(OLED) 디스플레이, 능동 매트릭스 유기 발광 다이오드(active-matrix organic light-emitting diode)(AMOLED) 디스플레이, 액정 레이저 디스플레이, 시간 다중화 광학 셔터(time-multiplexed optical shutter)(TMOS) 디스플레이 또는 3D 디스플레이를 포함할 수 있다. 3D 디스플레이의 예시는, 예를 들어, 입체영상(stereoscopy), 편광 필터(polarization filters), 능동 셔터 또는 무안경(autostereoscopic)을 사용할 수 있다. 디스플레이 디바이스(124a 내지 124n)는 HMD(Head-mounted Display)일 수도 있다. 일부 실시예에서, 디스플레이 디바이스(124a 내지 124n) 또는 대응하는 I/O 제어기(123)는 OPENGL 또는 DIRECTX API 또는 기타 그래픽 라이브러리들에 대한 하드웨어 지원을 갖거나 이를 통해 제어될 수 있다.
일부 실시예에서, 컴퓨팅 디바이스(100)는, 각각이 동일하거나 상이한 유형 및/또는 형태일 수 있는 복수의 디스플레이 디바이스(124a 내지 124n)를 포함하거나 이에 연결될 수 있다. 이와 같이, 임의의 I/O 디바이스(130a 내지 130n) 및/또는 I/O 제어기(123)는, 컴퓨팅 디바이스(100)에 의한 다수의 디스플레이 디바이스(124a 내지 124n)의 연결 및 사용을 지원, 활성화, 또는 제공하기 위해, 임의의 유형 및/또는 형태의 적합한 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합을 포함할 수 있다. 예를 들어, 컴퓨팅 디바이스(100)는, 디스플레이 디바이스(124a 내지 124n)와 인터페이싱하거나, 통신하거나, 연결하거나, 다른 방식으로 이를 사용하기 위해, 임의의 유형 및/또는 형태의 비디오 어댑터, 비디오 카드, 드라이버, 및/또는 라이브러리를 포함할 수 있다. 일 실시예에서, 비디오 어댑터는 다수의 디스플레이 디바이스(124a 내지 124n)에 인터페이싱하기 위한 다수의 연결부를 포함할 수 있다. 다른 실시예들에서, 컴퓨팅 디바이스(100)는 다수의 비디오 어댑터를 포함할 수 있고, 각각의 비디오 어댑터는 디스플레이 디바이스(124a 내지 124n) 중 하나 이상에 연결되어 있다. 일부 실시예에서, 컴퓨팅 디바이스(100)의 운영 체제의 임의의 부분은 다수의 디스플레이(124a 내지 124n)를 사용하도록 구성될 수 있다. 다른 실시예에서, 디스플레이 디바이스(124a 내지 124n) 중 하나 이상이 네트워크(104)를 통해 컴퓨팅 디바이스(100)에 연결된 하나 이상의 다른 컴퓨팅 디바이스(100a 또는 100b)에 의해 제공될 수 있다. 일부 실시예에서, 소프트웨어는 다른 컴퓨터의 디스플레이 디바이스를 컴퓨팅 디바이스(100)를 위한 제2 디스플레이 디바이스(124a)로서 사용하도록 설계되고 구성될 수 있다. 예를 들어, 일 실시예에서, 애플 iPad는, 컴퓨팅 디바이스(100)에 연결될 수 있고, 확장된 데스크탑(extended desktop)으로서 사용될 수 있는 추가 디스플레이 스크린으로서 디바이스(100)의 디스플레이를 사용할 수 있다. 본 기술분야의 통상의 기술자는, 컴퓨팅 디바이스(100)가 다수의 디스플레이 디바이스(124a 내지 124n)를 갖도록 구성될 수 있는 다양한 방식들 및 실시예들을 인식하고 이해할 것이다.
다시 도 1c를 참조하여, 컴퓨팅 디바이스(100)는, 운영 체제 또는 기타 관련 소프트웨어를 저장하기 위한, 그리고 이미지 분류 시스템 소프트웨어(120)에 관련된 임의의 프로그램과 같은 애플리케이션 소프트웨어 프로그램들을 저장하기 위한, 저장 디바이스(128)(예를 들어, 하나 이상의 하드 디스크 드라이브 또는 복수 배열 독립 디스크(redundant arrays of independent disks))를 포함할 수 있다. 저장 디바이스(128)의 예시는, 예를 들어, 하드 디스크 드라이브(HDD); CD 드라이브, DVD 드라이브 또는 블루-레이(BLU-RAY) 드라이브를 포함하는 광학 드라이브; 고상(solid-state) 드라이브(SSD); USB 플래시 드라이브; 또는 데이터를 저장하기에 적합한 임의의 기타 디바이스를 포함한다. 일부 저장 디바이스는, 예를 들어, 하드 디스크들과 고상 캐시(solid state cache)를 결합한 고상 하이브리드 드라이브들(solid state hybrid drives)을 포함하는 다수의 휘발성 및 비휘발성 메모리를 포함할 수 있다. 일부 저장 디바이스(128)는 비휘발성, 이변형(mutable) 또는 판독-전용(read-only)일 수 있다. 일부 저장 디바이스(128)는 내부에 있을 수 있고 버스(150)를 통해 컴퓨팅 디바이스(100)에 연결될 수 있다. 일부 저장 디바이스(128)는, 외부에 있을 수 있고, 외부 버스를 제공하는 I/O 디바이스(130)를 통해 컴퓨팅 디바이스(100)에 연결될 수 있다. 일부 저장 디바이스(128)는, 예를 들어, 애플에 의한 MACBOOK AIR용 원격 디스크를 포함하는 네트워크(104)를 통하여, 네트워크 인터페이스(118)를 통해 컴퓨팅 디바이스(100)에 연결될 수 있다. 일부 클라이언트 디바이스(100)는, 비휘발성 저장 디바이스(128)를 필요로 하지 않을 수 있고, 씬 클라이언트 또는 제로 클라이언트(102)일 수 있다. 일부 저장 디바이스(128)는 또한, 설치 디바이스(116)로서 사용될 수 있고, 소프트웨어 및 프로그램들을 설치하기에 적합할 수 있다. 추가적으로, 운영 체제와 소프트웨어는 부팅 가능한 매체(예를 들어, 부팅 가능한 CD, 예를 들어, knoppix.net으로부터의 GNU/Linux 배포판으로 이용 가능한 GNU/Linux용 부팅 가능한 CD인 KNOPPIX)로부터 실행될 수 있다.
클라이언트 디바이스(100)는 또한, 애플리케이션 배포 플랫폼으로부터 소프트웨어 또는 애플리케이션을 설치할 수 있다. 애플리케이션 배포 플랫폼의 예시는, Apple사에 의해 제공되는 iOS용 App Store, Apple사에의해 제공되는 Mac App Store, Google사에 의해 제공되는 Android OS용 GOOGLE PLAY, Google사에 의해 제공되는 CHROME OS용 Chrome Webstore, 및 Amazon.com사에 의해 제공되는 KINDLE FIRE 및 Android OS용 Amazon Appstore를 포함한다. 애플리케이션 배포 플랫폼은 클라이언트 디바이스(102) 상에 소프트웨어의 설치를 용이하게 할 수 있다. 애플리케이션 배포 플랫폼은, 클라이언트(102a 내지 102n)가 네트워크(104)를 통해서 액세스할 수 있는, 서버(106) 또는 클라우드(108) 상의 애플리케이션들의 보관소(repository)를 포함할 수 있다. 애플리케이션 배포 플랫폼은 다양한 개발자들에 의해 개발 및 제공되는 애플리케이션을 포함할 수 있다. 클라이언트 디바이스(102)의 사용자는 애플리케이션 배포 플랫폼을 통해 애플리케이션을 선택, 구매 및/또는 다운로드할 수 있다.
또한, 컴퓨팅 디바이스(100)는, 표준 전화선 LAN 또는 WAN 링크(예를 들어, 802.11, T1, T3, 기가비트 이더넷, 인피니밴드), 광대역 연결(예를 들어, ISDN, 프레임 릴레이, ATM, 기가비트 이더넷, EoS(Ethernet-over-SONET), ADSL, VDSL, BPON, GPON, FiOS를 포함한 광섬유), 무선 연결, 또는 상기의 것들 중 임의의 또는 전부 중 일부 조합을 포함하지만 이에 제한되지 않는 다양한 연결들을 통해 네트워크(104)에 인터페이싱하기 위한 네트워크 인터페이스(118)를 포함할 수 있다. 연결은, 다양한 통신 프로토콜들(예를 들어, TCP/IP, 이더넷, ARCNET, SONET, SDH, FDDI(Fiber Distributed Data Interface), IEEE 802.11a/b/g/n/ac CDMA, GSM, WiMax 및 직접 비동기 연결)을 사용하여 확립될 수 있다. 일 실시예에서, 컴퓨팅 디바이스(100)는 임의의 유형 및/또는 형태의 게이트웨이 또는 터널링 프로토콜, 예를 들어, SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security), 또는 플로리다주, 포트 로더데일의 Citrix Systems사에 의해 제조된 Citrix Gateway Protocol을 통해 기타 컴퓨팅 디바이스(100')와 통신한다. 네트워크 인터페이스(118)는 내장(built-in) 네트워크 어댑터, 네트워크 인터페이스 카드, PCMCIA 네트워크 카드, EXPRESSCARD 네트워크 카드, 카드 버스 네트워크 어댑터, 무선 네트워크 어댑터, USB 네트워크 어댑터, 모뎀, 또는 컴퓨팅 디바이스(100)를 통신 가능한 임의의 유형의 네트워크에 인터페이싱하기에 적합하고 본 명세서에 설명된 동작들을 수행할 수 있는 임의의 기타 디바이스를 포함할 수 있다.
도 1b 및 도 1c에 도시된 종류의 컴퓨팅 디바이스(100)는, 태스크들의 스케줄링 및 시스템 리소스들에 대한 액세스를 제어하는 운영 체제의 제어 하에서 동작할 수 있다. 컴퓨팅 디바이스(100)는 임의의 버전의 MICROSOFT WINDOWS 운영 체제, 상이한 릴리즈의 Unix 및 Linux 운영 체제, Macintosh 컴퓨터용의 임의의 버전의 MAC OS, 임의의 임베디드 운영 체제, 임의의 실시간 운영 체제, 임의의 오픈 소스 운영 체제, 임의의 독점 운영 체제(proprietary operating system), 모바일 컴퓨팅 디바이스용의 임의의 운영 체제, 또는 컴퓨팅 디바이스 상에서 실행될 수 있고 본 명세서에 설명한 동작들을 수행할 수 있는 임의의 기타 운영 체제 중 임의의 것과 같은 임의의 운영 체제를 실행할 수 있다. 전형적인 운영 체제는, 무엇보다도, 워싱턴주, 레드몬드의 마이크로소프트사에 의해 제조된 WINDOWS 2000, WINDOWS Server 2012, WINDOWS CE, WINDOWS Phone, WINDOWS XP, WINDOWS VISTA 및 WINDOWS 7, WINDOWS RT 및 WINDOWS 8; 캘리포니아주, 쿠퍼티노의 Apple사에 의해 제조된 MAC OS 및 iOS; 및 영국, 런던의 Canonical 유한회사에 의해 배포된, 무료로 이용 가능한 운영 체제, Linux, 예를 들어, Linux Mint 배포판("디스트로(distro)") 또는 Ubuntu; 또는 유닉스(Unix) 또는 기타 유닉스-유사 파생(Unix-like derivative) 운영 체제; 및 캘리포니아주, 마운틴 뷰의 Google에 의해 설계된 Android를 포함하지만 이에 제한되지 않는다. 예를 들어, Google에 의한 CHROME OS를 포함하는 일부 운영 체제는, 예를 들어, CHROMEBOOKS를 포함하는 제로 클라이언트 또는 씬 클라이언트 상에서 사용될 수 있다.
컴퓨터 시스템(100)은 임의의 워크스테이션, 전화, 데스크탑 컴퓨터, 랩탑 또는 노트북 컴퓨터, 넷북, ULTRABOOK, 태블릿, 서버, 핸드헬드 컴퓨터, 휴대 전화, 스마트 폰 또는 다른 휴대용 통신 디바이스, 미디어 재생 디바이스, 게임 시스템, 모바일 컴퓨팅 디바이스, 또는 통신할 수 있는 임의의 기타 유형 및/또는 형태의 컴퓨팅, 통신 또는 미디어 디바이스일 수 있다. 컴퓨터 시스템(100)은 본 명세서에 설명된 동작들을 수행하기에 충분한 프로세서 전력 및 메모리 용량을 갖는다. 일부 실시예에서, 컴퓨팅 디바이스(100)는 디바이스와 일치하는 상이한 프로세서, 운영 체제 및 입력 디바이스를 가질 수 있다. 예를 들어, Samsung GALAXY 스마트 폰은, Google사에 의해 개발된 Android 운영 체제의 제어 하에서 동작한다. GALAXY 스마트 폰은, 터치 인터페이스를 통해 입력을 수신한다.
일부 실시예에서, 컴퓨팅 디바이스(100)는 게임 시스템이다. 예를 들어, 컴퓨터 시스템(100)은, 일본, 도쿄의 Sony사에 의해 제조된, PLAYSTATION 3, 또는 PSP(PERSONAL PLAYSTATION PORTABLE), 또는 PLAYSTATION VITA 디바이스; 일본, 교토의 Nintendo 사에 의해 제조된 NINTENDO DS, NINTENDO 3DS, NINTENDO WII, 또는 NINTENDO WII U 디바이스; 또는 워싱턴주, 레드몬드의 마이크로소프트사에 의해 제조된 XBOX 360 디바이스를 포함할 수 있다.
일부 실시예에서, 컴퓨팅 디바이스(100)는, 캘리포니아주, 쿠퍼티노의 Apple Computer에 의해 제조된 Apple IPOD, IPOD Touch 및 IPOD NANO 계열의 디바이스들과 같은 디지털 오디오 플레이어이다. 일부 디지털 오디오 플레이어는, 예를 들어, 게임 시스템 또는 디지털 애플리케이션 배포 플랫폼으로부터 애플리케이션에 의해 이용 가능하게 된 임의의 기능을 포함하는 기타 기능을 가질 수 있다. 예를 들어, IPOD Touch는 Apple App Store에 액세스할 수 있다. 일부 실시예에서, 컴퓨팅 디바이스(100)는 MP3, WAV, M4A/AAC, WMA 보호된 AAC(WMA Protected AAC), AIFF, 가청 오디오 북(Audible audiobook), Apple Lossless 오디오 파일 포맷 및 .mov, .m4v 및 .mp4 MPEG-4(H.264/MPEG-4 AVC) 비디오 파일 포맷을 포함하지만 이에 제한되지 않는 파일 포맷을 지원하는 휴대용 미디어 플레이어 또는 디지털 오디오 플레이어이다.
일부 실시예에서, 컴퓨팅 디바이스(100)는 태블릿, 예를 들어, Apple에 의한 IPAD 계열의 디바이스들; Samsung에 의한 GALAXY TAB 제품군의 디바이스들; 또는 워싱턴주, 시애틀의 Amazon.com사에 의한 KINDLE FIRE이다. 다른 실시예들에서, 컴퓨팅 디바이스(100)는 전자책 판독기, 예를 들어, Amazon.com에 의한 KINDLE 제품군의 디바이스들, 또는 뉴욕주, 뉴욕시의 Barnes & Noble사에 의한 NOOK 제품군의 디바이스들이다.
일부 실시예에서, 통신 디바이스(102)는 디바이스들의 조합(combination of devices), 예를 들어, 디지털 오디오 플레이어 또는 휴대용 미디어 플레이어와 결합된 스마트 폰을 포함한다. 예를 들어, 이들 실시예 중 하나는 스마트 폰, 예를 들어, Apple사에 의해 제조된 IPHONE 제품군의 스마트 폰들; Samsung사에 의해 제조된 삼성 GALAXY 제품군의 스마트 폰들; 또는 모토로라 DROID 제품군의 스마트 폰들이다. 또 다른 실시예에서, 통신 디바이스(102)는 웹 브라우저 및 마이크로폰 및 스피커 시스템, 예를 들어, 전화 헤드셋을 갖춘 랩탑 또는 데스크탑 컴퓨터이다. 이들 실시예에서, 통신 디바이스(102)는 웹-활성화되어(web-enabled) 전화 통화를 수신하고 개시할 수 있다. 일부 실시예에서, 랩탑 또는 데스크탑 컴퓨터에는 또한, 화상 채팅(video chat) 및 화상 통화(video call)를 가능하게 하는 웹캠(webcam) 또는 다른 화상 포착 디바이스(video capture device)가 장착된다.
일부 실시예에서, 네트워크(104)에서 하나 이상의 머신(102, 106)의 상태는 일반적으로 네트워크 관리 중 일부로서 모니터링된다. 이들 실시예들 중 하나에서, 머신의 상태는 부하 정보(load information)(예를 들어, 머신 상에서의 프로세스 수, CPU 및 메모리 활용)에 대한, 포트 정보(예를 들어, 이용 가능한 통신 포트의 수 및 포트 주소)에 대한, 또는 세션 상태(예를 들어, 프로세스들의 지속기간 및 유형, 프로세스가 액티브(active)인지 아이들(idle)인지)에 대한 식별을 포함할 수 있다. 이들 실시예들 중 다른 하나에서, 이 정보는 복수의 메트릭에 의해 식별될 수 있고, 복수의 메트릭은 본 명세서에 설명된 본 해결법의 동작들의 임의의 양상뿐만 아니라 부하 분산, 네트워크 트래픽 관리 및 네트워크 장애 복구(network failure recovery)에서의 결정에 적어도 부분적으로 적용될 수 있다. 전술한 운영 환경들 및 구성 요소들의 양상은 본 명세서에 개시된 시스템들 및 방법들과 관련하여 명백해질 것이다.
B. 이미지들을 분류하기 위한 시스템들 및 방법들
이미지 분류기를 훈련시키는 것에 관한 방법들, 시스템들 및 장치가 제공된다. 컴퓨터의 이미지 분류기 모델들은 자동화된 이미지 분류에 필요한 작업과 리소스들을 실질적으로 감소시킬 잠재력을 가진다. 일반적으로, 이미지 분류라는 용어는 비범주화된 입력 이미지(uncategorized input image)가 제1 유형 또는 제2 유형인지를 결정하는 것을 포함할 수 있고, 여기서 제1 및 제2 유형은 알려져(known) 있다. 일부 구현예에서, 본 개시의 시스템들 및 방법들은 다차원 공간에 나타내어질 수 있는 특징들의 복소 세트(a complex set of features)를 갖는 비범주화된 입력 이미지를 수신할 수 있다. 예를 들어, 이미지는 (예를 들어, 대략 106 이상의) 다수의 픽셀을 가질 수 있고, 각 픽셀은 적색, 녹색 및 청색과 같은 복수의 색상 각각에 대한 관련 값을 가질 수 있다. 아래에 더 설명된 시스템들 및 방법들은 약한 지도로부터 입력 이미지들의 저차원 임베딩(lower-dimensional embedding)을 학습할 수 있다. 일부 구현예에서, 이미지들이 복수의 패치로 나뉠(divided) 수 있고, 패치들이 제1 유형 및 제2 유형을 나타내는 클러스터들로 자동적으로 구분될(partitioned) 수 있다. 이러한 학습된 임베딩은 입력 이미지를 구성하는 패치들에 대해 k-최근접 이웃들(k-nearest neighbors)과 같은 단순 분류기를 이용하여 입력 이미지에 대한 전반적인 분류 태스크(overall classification task)를 해결할 수 있게 한다. 일반적으로, 약한 지도는 전반적인 슬라이드 유형(예를 들어, 제1 유형 또는 제2 유형 중 어느 하나)만 알려져 있는 데이터 세트의 슬라이드들의 경우들을 지칭할 수 있다. 이미지의 임의의 개별 패치의 분류에 관한 정보가 없을 수 있다. 따라서, 본 개시의 기법들은, 이미지의 각 패치의 라벨이 이미지 분류 모델을 훈련시키기 위해 사용되는 완전 지도 학습과 대조된다.
일부 구현예에서, 이미지 분류 모델은 유형(예를 들어, 분류)이 알려져 있는 이미지들의 세트에 기초하여 훈련될 수 있다. 이미지들이 패치들로 나뉘고, 패치들의 라이브러리들이 생성될 수 있다. 예를 들어, 하나의 라이브러리는 제1 유형의 이미지들에 대응하는 패치들을 포함할 수 있고, 제2 라이브러리는 제2 유형의 이미지들에 대응하는 패치들을 포함할 수 있다. 이미지 분류 모델을 훈련시키는 것은 반복적인 훈련 프로세스를 통해 완수될 수 있고, 패치들의 서브 세트가 매 훈련 라운드마다 각 라이브러리로부터 샘플링될 수 있다. 주어진 훈련 라운드에서, 각 패치는, 예를 들어, 합성곱 신경망일 수 있는 이미지 분류 모델을 사용하여 저차원 임베딩 공간의 포인트(point)로 변환될 수 있다.
일부 구현예에서, 하나의 라이브러리로부터 유래되는 포인트들은 클러스터링 알고리즘을 이용하여 2개의 클러스터로 클러스터링될 수 있다. 2개의 클러스터 중에서, 제2 라이브러리로부터 유래되는 포인트들까지 최소 거리를 갖는 클러스터는 클래스 포지티브에 할당되고, 다른 한 클러스터는 클래스 네거티브에 할당될 수 있다. 제2 라이브러리로부터 유래되는 포인트들은 앵커 클래스(anchor class)로서 취급될 수 있다. 앵커, 포지티브 및 네거티브 클래스들로부터의 포인트들이 트리플렛을 생성하도록 샘플링될 수 있고, 각 트리플렛은 하나의 앵커 포인트, 하나의 포지티브 포인트 및 하나의 네거티브 포인트로 구성된다. 그 후, 트리플렛 마진 손실과 같은, 손실 함수(loss function)가 계산될 수 있다. 일부 구현예에서, 경사 하강 최적화는 이미지 분류 모델의 파라미터들을 튜닝하여 손실 함수를 최소화하기 위해 사용될 수 있다. 최종적으로, 이미지 상의 모든 패치들에 대한 예측(예를 들어, 분류)은, 전체 이미지를 제1 유형 또는 제2 유형 중 어느 하나로 분류하기 위해, 집계될 수 있다. 또한, 아래에 더 설명된 시스템들 및 방법들은, 이미지를 제1 유형 또는 제2 유형 중 어느 하나로 분류하는 것을 담당하는 특징들을 경계 짓기 위해(demarcating) 전체 이미지의 패치-단위 분할을 제공할 수 있다.
본 개시에 설명된 기법들은 다양한 유용한 애플리케이션들을 갖는다. 일부 구현예에서, 본 명세서에 설명된 이미지 분류 시스템(image classification system)은 의료 진단(medical diagnosis)용으로 사용될 수 있다. 예를 들어, 각 이미지는 환자로부터 취해진 조직 샘플(tissue sample)을 나타내는 병리학 슬라이드의 이미지일 수 있고, 각 슬라이드는 양성(benign) 또는 종양성(tumorous) 중 어느 하나로 분류될 수 있다. 이들 슬라이드는, 비범주화된 입력 이미지가 양성 또는 종양성 조직(tissue or tumorous tissue)을 나타내는지를 결정할 수 있는 이미지 분류 모델을 훈련시키는 데에 사용될 수 있다. 종양은 종양성으로 분류된 슬라이드의 작은 부분(small portion)만 전형적으로 나타내기 때문에, 심지어 훈련된 인간이라도 이러한 슬라이드들을 정확하게 분류하는 것은 곤란할 수 있다. 본 개시의 시스템들 및 방법들은, 이러한 분류를 자동화하는 것을 도울 수 있고, 또한 종양성으로 분류된 각 슬라이드의 종양성 부분들이 분명하게 경계 지어지도록, 종량성 슬라이드들에 대응하는 이미지들을 분할(segment)할 수도 있다. 일부 다른 구현예에서, 본 개시의 기법들은 다른 유형의 이미지들에 적용될 수 있다. 예를 들어, 본 명세서에 설명된 시스템들 및 방법들은, 예를 들어, 위성 이미지들일 수 있는 한 세트의 훈련 이미지들에 기초하여, 특정 물체 또는 사람이 입력 이미지에 존재하는지를 자동으로 결정하는 데에 사용될 수 있다.
이제 도 2a를 참조하여, 이미지 분류를 위한 시스템(200)에서의 데이터 흐름을 나타내는 블록도가 도시된다. 시스템(200)은, 다양한 주석이 달린 분류되지 않은 이미지들을 수신하고, 이미지 분류 모델을 훈련시키고, 모델을 사용하여 분류되지 않은 이미지를 분류하고 분할하도록 구성된 이미지 분류 시스템(210)을 포함할 수 있다. 보다 구체적으로, 이미지 분류 시스템(210)은 분류되지 않은 이미지(208)뿐만 아니라 주석이 달린 이미지들(205)을 수신한다. 주석이 달린 이미지들(205)은 분류가 이미 알려져 있는 임의의 이미지들을 포함할 수 있고, 주석이 달린 이미지들(205)의 주석은 그들 이미지의 각각의 분류를 나타낼 수 있다. 일반적 예시에서, 주석은 각각의 주석이 달린 이미지(205)가 제1 유형 또는 제2 유형 중 어느 하나로서 분류됨을 나타낼 수 있지만, 제1 유형 및 제2 유형은 실제로 임의의 수의 특정 분류일 수 있음을 이해해야 한다. 예를 들어, 일부 구현예에서, 주석이 달린 이미지들(205)은 슬라이드가 양성 또는 종양성으로 분류되는지를 나타내기 위해 각각 주석이 달린 병리학 슬라이드들이다. 일부 구현예에서, 이미지 분류 시스템(210)은 (예를 들어, 대략 104 이상의) 다수의 주석이 달린 이미지들(205)을 수신할 수 있다. 예를 들어, 이미지 분류 시스템(210)은 수천개 또는 수백만개의 주석이 달린 이미지들(205)을 수신할 수 있다.
이미지 분류 시스템(210)은 이미지 분류 모델을 훈련시키기 위해 수신된 한 세트의 주석이 달린 이미지들(205)을 사용할 수 있다. 예를 들어, 이미지 분류 시스템(210)은 이미지가 특정 분류를 갖게 하는 각각의 주석이 달린 이미지(205)의 특징들 또는 특정 특성들을 결정할 수 있고, 해당 정보는 이미지 분류 모델에 통합될 수 있다. 일부 구현예에서, 이미지 분류 모델은 합성곱 신경망과 같은 머신 학습 알고리즘을 사용하여 구현될 수 있다. 이미지 분류 모델이 개발되고 개선된 후에, 이미지 분류 시스템(210)은 이미지 분류 모델을 분류되지 않은 이미지(208)에 적용하여 이미지를 자동으로 분류할 수 있다. 일부 구현예에서, 이미지 분류 시스템(210)은 또한, 분류되지 않은 이미지(208)가 주어진 분류에 할당되게 하는 분류되지 않은 이미지(208)의 특정 부분들을 식별하기 위해, 분류되지 않은 이미지(208)를 분할할 수 있다. 다른 방식으로 말하자면, 이미지 분류 시스템(210)은 분류되지 않은 이미지(208)를 복수의 패치로 나눌 수 있고, 이미지 분류 모델을 사용하여 각 패치의 분류를 더 결정할 수 있다. 패치들의 분류에 기초하여, 이미지 분류 시스템(210)은 이미지에 대한 전반적인 분류를 결정할 수 있고, 이미지를 패치-단위 방식으로 분할하여 이미지 분류 및 분할 정보(220)를 생성할 수 있다. 도 2a의 이미지 분류 시스템(210)의 추가 구현 상세내용은, 도 2b 및 도 3과 관련하여 후술된다.
이제 도 2b를 참조하여, 병리학 슬라이드들을 위한 이미지 분류를 위한 시스템(225)에서의 데이터 흐름을 나타내는 블록도가 도시된다. 시스템(225)은 도 2a와 관련하여 본 명세서에 설명된 시스템(200)과 동일한 구성 요소들을 포함할 수 있다. 시스템(225)에서, 이미지 분류 시스템(210)은 병리학을 위한 이미지 분류 모델을 훈련시키기 위해 주석이 달린 이미지들(205)을 수신할 수 있다. 주석이 달린 이미지들(205)은 양성 슬라이드 세트(230A) 및 종양성 슬라이드 세트(230B)를 포함할 수 있다. 양성 슬라이드 세트(230A)는 양성 조직을 갖는 것으로 라벨링된 조직학 슬라이드(histology slides)의 이미지를 포함할 수 있다. 종양성 슬라이드 세트(230B)는 종양성 조직을 갖는 것으로 라벨링된 조직학 슬라이드의 이미지를 포함할 수 있다. 주석이 달린 이미지들(205)을 수신하면, 이미지 분류 시스템(210)은 양성 슬라이드 세트(230A) 및 종양성 슬라이드 세트(230B)의 랜덤 샘플 세트(232)를 선택하거나 생성할 수 있다. 양성 슬라이드(230A)와 종양 슬라이드(230B) 세트의 샘플링은, 무엇보다도, 단순 랜덤 샘플링(simple random sampling), 체계적인 랜덤 샘플링(systematic random sampling) 및 압축된 감지(compressed sensing)에 따를 수 있다. 랜덤 샘플 세트(232)는, 양성 슬라이드 세트(230A)로부터의 k개의 샘플, 및 종양성 슬라이드 세트(230B)로부터의 k개의 샘플을 포함할 수 있다. 세트(232)는 2개의 세트(230A 및 230B) 사이의 총 샘플 수인 2k개를 포함할 수 있다.
이미지 분류 시스템(210)은 랜덤 샘플 세트(232)를 이미지 분류 모델(234)에 적용할 수 있다. (도시된 구현예와 같은) 일부 구현예에서, 이미지 분류 모델(234)은 합성곱 신경망(CNN) 및 놈 함수(norm function)(예를 들어, 유클리드 놈)을 포함할 수 있다. CNN은 하나 이상의 층(예를 들어, 무엇보다도, 합성곱 층(convolutional layer), 풀링 층(pooling layer), 조정된 선형 유닛 층(rectified linear unit layer), 및 완전 연결 층(fully connected layer)) 및 각 층에서 필터들을 포함할 수 있다. CNN의 필터들은 랜덤 샘플 세트(232)와 같은 입력의 요소에 적용하기 위한 곱셈 계수(multiplicative factor)를 포함할 수 있다. 훈련에 의해, 이미지 분류 시스템(210)은 CNN의 각 계층에서 필터들을 조정하거나 설정할 수 있다. 랜덤 샘플 세트(232)를 CNN에 적용하고 그 후 이미지 분류 모델(234)의 놈 기능에 적용하면, 이미지 분류 시스템(210)은 특징 맵(feature map)에서 출력을 생성할 수 있다. 출력은 앵커 포인트 세트(236A) 및 미지의 포인트(unknown points) 세트(236B)를 포함할 수 있다. 앵커 값 세트(236A)는 원래 양성 슬라이드 세트(230A) 및 종양성 슬라이드 세트(230B) 중 어느 하나로부터의 데이터에 대응할 수 있다. 출력은 앵커 포인트 세트(236A)로부터의 D x k 개의 데이터 포인트, 및 미지의 포인트 세트(236B)로부터의 다른 D x k 개의 데이터 포인트를 포함할 수 있다. 출력은 2개의 세트(236A 및 236B) 사이에 D x 2k개의 데이터 포인트를 포함할 수 있다. D 개는 이미지 분류 모델(234)의 CNN에서 계층 및 필터 수(number of layers and filters)에 의존할 수 있다.
이미지 분류 모델(234)로부터의 출력이 생성되면, 이미지 분류 시스템(210)은 클러스터링 알고리즘(예를 들어, k-최근접 이웃들 클러스터링)을 적용하여 트리플렛들(238)을 형성할 수 있다. 트리플렛들(238)은 앵커 데이터 포인트 세트, 포지티브 데이터 포인트 세트, 및 네거티브 데이터 포인트 세트를 포함할 수 있다. 앵커 데이터 포인트 세트는 D x k 로 번호를 매길 수 있다. 포지티브 데이터 포인트 세트는 D x m 로 번호를 매길 수 있다. 네거티브 데이터 포인트 세트는 D x n 으로 번호를 매길 수 있다. 포지티브 데이터 포인트와 네거티브 데이터 포인트 세트는 클러스터링 알고리즘을 적용하는 것으로부터 결정될 수 있다. 트리플렛들(238)을 사용하여, 이미지 분류 시스템(210)은 손실 함수(예를 들어, 트리플렛 손실 마진)를 계산할 수 있다. 손실 함수의 값에 기초하여, 이미지 분류 시스템(210)은, 포지티브 데이터 포인트 세트와 네거티브 데이터 포인트 세트 사이의 차이를 최대화하면서, 이미지 분류 모델(234)(예를 들어, CNN의 필터들)을 조정하여 포지티브 데이터 포인트 세트와 앵커 데이터 세트 사이의 손실 함수를 감소시키거나 최소화할 수 있다. 이미지 분류 시스템(210)은, 이미지 분류 모델(234)이 수렴된 것으로 결정될 때까지, 이미지 분류 모델(234)의 적용, 클러스터링 알고리즘, 및 손실 함수의 계산을 반복할 수 있다. 일단 이미지 분류 모델(234)이 훈련되면, 라벨링되지 않은 병리학 슬라이드들이 이미지 분류 시스템(210)에 입력되어 이미지 분류 및 분할 정보(220)를 생성할 수 있다. 도 2b의 이미지 분류 시스템(210)의 추가 구현 상세는 도 3과 관련하여 후술된다.
도 3은 도 2a에 도시된 이미지 분류 시스템(210)의 구현예의 아키텍처 중 일부를 도시한다. 전술한 바와 같이, 시스템(210)은 다양한 주석이 달린 분류되지 않은 이미지들을 수신하고, 이미지 분류 모델을 훈련시키고, 모델을 사용하여 분류되지 않은 이미지를 분류하고 분할할 수 있다. 일부 구현예에서, 도 3의 시스템(210)의 구성 요소들은 도 1a 내지 도 1d에 관련하여 전술된 시스템들 및 디바이스들을 포함할 수 있거나 이들을 사용하여 구현될 수 있다. 예를 들어, 이미지 분류 시스템(210) 및 그 구성 요소 중 임의의 것은 도 1c 및 도 1d에 도시된 것들과 유사한 컴퓨팅 디바이스들을 사용하여 구현될 수 있고, CPU(121), 메모리(122), I/O 디바이스(130a 내지 130n), 네트워크 인터페이스(118) 등과 같은 그러한 디바이스들의 특징들 중 임의의 것을 포함할 수 있다.
이미지 분류 시스템(210)은, 무엇보다도, 패치 생성기(305), 저차원 임베딩 엔진(310), 클러스터링 엔진(315), 클래스 할당 엔진(320), 트리플렛 생성기(325), 모델 개선 엔진(330), 이미지 분류 모델(335), 분류 요청 관리자(340), 및 이미지들(350) 및 패치들(355)을 저장하는 데이터베이스(345)를 포함한다. 이미지 분류 시스템(210)의 구성 요소들은, 다함께, 도 2a와 관련하여 위에서 간략하게 지칭된 알고리즘들 및 기타 기능을 구현하도록 구성될 수 있다. 일부 구현예에서, 패치 생성기(305), 저차원 임베딩 엔진(310), 클러스터링 엔진(315), 클래스 할당 엔진(320), 트리플렛 생성기(325), 모델 개선 엔진(330), 이미지 분류 모델(335), 분류 요청 관리자(340), 및 데이터베이스(345)는, 각각, 아래에 더 설명되는 바와 같이 이들 구성 요소 각각의 기능을 수행하는 소프트웨어 명령어 세트, 컴퓨터 코드 또는 로직으로서 구현될 수 있다. 일부 구현예에서, 이들 컴포넌트는 대신에, 예를 들어, 하나 이상의 필드 프로그램 가능 게이트 어레이(FPGA) 및/또는 하나 이상의 주문형 집적 회로(ASIC)를 사용하여 하드웨어에 의해 구현될 수 있다. 일부 구현예에서, 이들 컴포넌트는 하드웨어와 소프트웨어의 조합으로서 구현될 수 있다.
일부 구현예에서, 이미지 분류 시스템(210)은 복수의 이미지를 수신할 수 있다. 수신된 이미지들은 도 2a에 도시된 주석이 달린 이미지들(205)과 같은 주석이 달린 이미지들을 포함할 수 있고, 이들은 각 이미지의 분류에 관한 정보를 포함할 수 있다. 일부 구현예에서, 이미지들은 픽셀 데이터로 나타내어진 전자 이미지들(electronic images)일 수 있다. 각 이미지에 대한 주석은, 예를 들어, 각 이미지에 대한 컴퓨터 파일과 연관된 메타 데이터로서 포함될 수 있다. 이미지 분류 시스템(210)은 또한, 도 2a에 도시된 비범주화된 이미지(208)와 같은, 분류 정보가 요구되는(desired) 하나 이상의 비범주화된 이미지를 수신할 수 있다. 일부 구현예에서, 이미지 분류 시스템(210)은 수신된 이미지들 각각을 이미지들(350)로서 데이터베이스(345)에 저장할 수 있다.
패치 생성기(305)는 복수의 이미지(350)를 복수의 패치로 나눌 수 있다. 일반적으로, 패치는 이미지 중 일부를 지칭할 수 있다. 예를 들어, 각 이미지(350)는 다수의 패치로 나뉠 수 있다. 각 패치는 특정한 크기 및 형상(예를 들어, 사각형의 50 x 50 픽셀)일 수 있다. 일부 구현예에서, 패치 생성기(305)는 그리드 오버레이(grid overlay)에 따라 이미지(350)를 복수의 패치로 분할할 수 있다. 예를 들어, 패치 생성기(305)는, 1000 픽셀 x 1000 픽셀의 해상도를 갖는 이미지(350)를 각각이 10 픽셀 x 10 픽셀의 해상도를 갖는 이미지의 인접한 정사각형 부분(adjacent square portion)을 나타내는 패치들로 나눔으로써, 이미지(350)에 대해 10,000개의 패치를 생성할 수 있다. 다른 구현들에서, 패치 생성기(305)는 상이한 방식으로 패치들을 생성할 수 있다. 예를 들어, 패치 생성기(305)는 직사각형 또는 불규칙한 형상을 갖는 패치들을 생성할 수 있다. 일부 구현예에서, 패치들은 모두 균일한 크기를 갖지 않을 수 있고, 일부 구현예에서, 적어도 일부 패치는 동일한 이미지(350)의 다른 패치들 중 일부와 중첩될 수 있다. 다른 방식으로 말하자면, 이미지(350) 중 일부는 해당 이미지(350)에 대한 하나 이상의 패치 내에 포함될 수 있다. 일부 구현예에서, 패치 생성기(305)는 또한, 생성된 패치들을 더 처리함으로써 데이터 증강 및 품질 제어 기능을 제공할 수 있다. 예를 들어, 패치 생성기(305)는 저품질로 간주되는 패치들을 폐기할 수 있다. 일부 구현예에서, 패치 생성기(305)는, 패치가 너무 흐릿하거나 너무 어두워서 의미있게 처리되지 않는 경우, 해당 패치를 저품질로 결정할 수 있다. 따라서, 패치 생성기(305)는 각 패치에 대한 불명료도 메트릭 또는 광 레벨 메트릭을 결정할 수 있고, 각각의 불명료도 메트릭 및 광 레벨 메트릭에 기초하여 패치들 중 일부를 폐기할 수 있다. 일부 구현예에서, 패치 생성기(305)는 하나 이상의 이미지 처리 기법을 패치들 중 일부 또는 전부에 적용함으로써 데이터 증강을 제공할 수 있다. 예를 들어, 패치 생성기(305)는 패치들 중 일부 또는 전부에 색상 정규화를 적용하거나, 패치들 중 일부 또는 전부를 공간적으로 회전시킬 수 있다. 패치 생성기(305)는 생성된 패치들을 데이터베이스(345)에 패치들(355)로서 저장할 수 있다. 일부 구현예에서, 패치 생성기(305)는 생성된 패치들(355)의 서브 세트를 데이터베이스(345)에 저장하고 더 처리하기 위해서 선택할 수 있다. 일부 구현예에서, 패치 생성기(305)는 생성기 패치(355)의 서브 세트를 임의로 샘플링하거나 선택할 수 있다. 예를 들어, 패치 생성기(305)는 의사-난수 생성기(pseudo-random number generator)를 사용하여 선택할 패치들(355)의 인덱스 수를 계산할 수 있다. 이 방식으로, 이미지 분류 시스템(210)에 의해 분석되거나 처리되는 패치들(355)의 수를 감소시킬 수 있다.
저차원 임베딩 엔진(310)은 주석이 달린 이미지들의 패치들로부터 복수의 포인트를 생성할 수 있다. 전술한 바와 같이, 각 이미지는 이미지 데이터 세트로 나타내어질 수 있다. 각 이미지에 대한 이미지 데이터는 비교적 복잡할 수 있다. 예를 들어, 단일 이미지는 수천개 또는 수백만개 픽셀에 대응하는 데이터로 나타내어질 수 있고, 각 픽셀은 적색, 녹색 및 청색과 같은 수개의 색상에 대한 값으로 나타내어질 수 있다. 따라서, 이미지는 다차원 공간에 정의된 포인트로 생각될 수 있고, 여기서 차원은 개별 픽셀 위치, 각 픽셀의 색상 값 등에 대응한다. 저차원 임베딩 엔진(310)은 각 패치에 대한 포인트들을 생성할 수 있다. 일부 구현예에서, 저차원 임베딩 엔진(310)은, 전체 이미지를 나타내는 데에 사용되는 동일한 레벨의 입도로 각 패치를 나타냄으로써 이를 완수할 수 있다. 따라서, 패치는 패치 내의 픽셀 위치 및 패치의 각 픽셀의 색상 값에 대응하는 차원을 갖는 다차원 공간에서의 포인트로 나타내어질 수 있다. 일부 다른 구현예에서, 저차원 임베딩 엔진(310)은, 예를 들어, 패치들에 하나 이상의 이미지 변환 기법을 적용함으로써 각 패치의 차원을 감소시킬 수 있다.
패치들이 생성되어 포인트들로서 나타내어진 후에, 이미지 분류 시스템(210)은 이미지 분류 모델(335)을 훈련시키기 위해 사용될 패치들의 제1 서브 세트를 선택할 수 있다. 전술한 바와 같이, 수천개 또는 수백만개의 이미지(350)가 있을 수 있고, 각 이미지는 수십개, 수백개, 수천개, 또는 수백만개의 패치로 나뉠 수 있다. 이미지 분류 모델(335)을 훈련시키기 위해 아래에 설명된 반복 단계들은 계산상(computationally) 집약적일 수 있기 때문에, 각각의 반복에서 이용 가능한 패치들의 서브 세트만 처리하는 것이 더 효율적일 수 있다. 일부 구현예에서, 이미지 분류 시스템(210)은 각각의 반복에 대해 사전 결정된 수의 패치를 선택할 수 있고, 이는 바람직한 반복 횟수에 기초하여 이용 가능한 패치들 중 일부(fraction)로 표현될 수 있다. 일부 구현예에서, 이미지 분류 시스템(210)은 (예를 들어, 단순 랜덤 또는 체계적인 랜덤 샘플링 기법들을 사용하여) 사전 결정된 수의 패치를 임의로 선택할 수 있다. 예를 들어, 반복 훈련 프로세스의 100회 반복이 수행될 경우, 이미지 분류 시스템(210)은, 모든 반복이 수행된 후에 패치들 전부가 사용될 수 있도록, 이용 가능한 총 패치 수의 1%와 동일하도록 각 반복에 대한 패치들의 서브 세트를 선택할 수 있다.
전술한 바와 같이, 각각의 주석이 달린 이미지는 제1 유형 또는 제2 유형 중 어느 하나로 분류될 수 있다. 패치들의 선택된 서브 세트 중에서, 클러스터링 엔진(315)은 제2 유형으로 식별된 이미지들의 패치들에 대응하는 포인트들을 2개의 클러스터로 클러스터링할 수 있다. 일부 구현예에서, 클러스터링 엔진(315)은 임의의 유형의 클러스터링 알고리즘(예를 들어, k-평균 클러스터링 알고리즘, 평균-이동 클러스터링 알고리즘(mean-shift clustering algorithm), 기대-최대화 알고리즘(expectation-maximization algorithm), 및 계층적 클러스터링 알고리즘)을 사용하여 이 클러스터링 동작을 수행할 수 있다. 클러스터링 엔진(315)이 제2 유형으로 식별된 이미지들의 패치들에 대응하는 포인트들을 클러스터링한 후에, 해당 클러스터링 엔진(315)은, 제2 클러스터보다 제1 유형이라는 주석이 달린 이미지들의 포인트들에 더 근접한, 2개의 클러스터 중 제1 클러스터를 식별할 수 있다. 제1 유형이라는 주석이 달린 이미지들의 포인트들에 대한 각 클러스터의 근접성은 다양한 방식으로 측정될 수 있다. 일부 구현예에서, 클러스터링 엔진(315)은 각 클러스터로부터 제1 유형이라는 주석이 달린 이미지들의 포인트들까지의 거리(예를 들어, 직선, 유클리드 또는 Lp 놈)를 결정할 수 있다. 예를 들어, 클러스터링 엔진(315)은 제1 클러스터의 모든 포인트들의 평균을 나타내는 제1 포인트, 제2 클러스터의 모든 포인트들의 평균을 나타내는 제2 포인트, 및 제1 유형이라는 주석이 달린 이미지들의 모든 포인트들의 평균을 나타내는 제3 포인트를 결정할 수 있다. 클러스터링 엔진(315)은 제1 포인트와 제3 포인트 사이의 거리, 및 제2 포인트와 제3 포인트 사이의 거리를 결정할 수 있고, 최종적으로 제1 포인트와 제3 포인트 사이의 거리가 제2 포인트와 제3 포인트 사이의 거리보다 작다고 결정할 수 있다.
클래스 할당 엔진(320)은, 각 포인트가 존재하는 클러스터에 기초하여, 포인트들을 다양한 클래스들에 할당할 수 있다. 예를 들어, 클래스 할당 엔진(320)은 제1 유형이라는 주석이 달린 이미지들의 포인트들을 앵커 클래스에 할당할 수 있다. 클래스 할당 엔진(320)은 또한, 제1 클러스터의 포인트들을, 앵커 클래스의 포인트들(예를 들어, 제1 유형이라는 주석이 달린 이미지들의 포인트들)로의 또는 앵커 클래스의 중심(centroid)으로의 그들의 근접성으로 인해, 클래스 포지티브에 할당할 수 있다. 유사하게, 클래스 할당 엔진(320)은 또한, 제2 클러스터의 포인트들을 클래스 네거티브에 할당할 수 있는데, 그 이유는 그들이 클래스 포지티브의 포인트들보다 (평균적으로) 앵커 클래스의 포인트들로부터 더 멀리 있거나 앵커 클래스의 중심으로부터 더 멀리 있을 것으로 예상되기 때문이다.
트리플렛 생성기(325)는 다양한 포인트들의 복수의 트리플렛을 생성할 수 있다. 일반적으로, 트리플렛은 3개 포인트의 순서화된 세트로 나타내어질 수 있다. 일부 구현예에서, 트리플렛 생성기(325)는, 각 트리플렛이 앵커 클래스로부터의 포인트, 클래스 포지티브로부터의 포인트, 및 클래스 네거티브로부터의 포인트를 포함하도록, 트리플렛들을 생성할 수 있다. 일부 구현예에서, 트리플렛 생성기(325)는 각 클래스로부터 임의로 샘플링하여 트리플렛들을 생성하도록 구성된다. 각 트리플렛을 생성하기 위해, 트리플렛 생성기(325)는 앵커 클래스로부터 제1 포인트를 임의로 선택하고, 클래스 포지티브로부터 제2 포인트를 임의로 선택하고, 클래스 네거티브로부터 제3 포인트를 임의로 선택할 수 있다. 일부 구현예에서, 각 트리플렛의 포인트들에 대한 임의 선택은 독립적일 수 있다. 결과적으로, 트리플렛 생성기(325)는 적어도 하나의 공통 포인트(common point)를 갖는 2개 이상의 트리플렛을 생성할 수 있다. 예를 들어, 클래스 중 하나로부터의 특정 포인트는 생성된 트리플렛보다 더 많이 나타날 수 있다. 일부 다른 구현예에서, 트리플렛 생성기(325)는 생성된 트리플렛들에 걸쳐 어떤 포인트도 반복되지 않도록 보장하는 방식으로 클래스들로부터 샘플링을 행할 수 있다. 일부 구현예에서, 트리플렛 생성기(325)는 트리플렛들을 생성하기 위해 임의의 적합한 선택 알고리즘을 사용하여 각 클래스로부터 포인트들을 선택하도록 구성된다.
모델 개선 엔진(330)은 트리플렛 생성기(325)에 의해 생성된 트리플렛들을 사용하여 손실 함수(때때로, 목적 함수(objective function)로 지칭됨)를 계산할 수 있다. 일부 구현예에서, 손실 함수는, 무엇보다도, 트리플렛 마진 에러, 평균 제곱 에러, 베이지안(Bayesian) 예상 손실 및 이차 손실 함수(quadratic loss function)일 수 있다. 일부 다른 구현예에서, 모델 개선 엔진(330)은 트리플렛들에 기초하여 상이한 유형의 손실 함수를 계산할 수 있다. 일부 구현예에서, 모델 개선 엔진(330)은 손실 기능을 최소화하거나 감소시키는 이미지 분류 모델(335)용의 파라미터들을 선택하도록 더 구성될 수 있다. 예를 들어, 일부 구현예에서, 모델 개선 엔진(330)은 계산된 손실 함수에 대해 경사 하강 최적화를 수행하여 손실 함수를 최소화하거나 감소시킬 수 있는 파라미터 세트(set of parameters)를 결정할 수 있다. 일부 다른 구현예에서, 모델 개선 엔진(330)은 상이한 최적화 기법을 사용하여 손실 함수를 최소화하거나 감소시키기 위한 파라미터들을 선택할 수 있다. 그 후, 모델 개선 엔진(330)은 선택된 파라미터들을 이용하여 이미지 분류 모델(335)을 업데이트할 수 있다.
전술한 바와 같이, 일부 구현예에서, 이미지 분류 모델(335)을 훈련시키는 프로세스는, 반복될 수 있고, 주석이 달린 이미지들의 패치들의 복수의 서브 세트에 대해 수행될 수 있다. 이미지 분류 모델(335)은, 무엇보다도, 인공 신경망(ANN), 합성곱 신경망(CNN)(예를 들어, 이미지 분류 모델(234)로 본 명세서에 상세히 설명됨), 지원 벡터 머신(SVM), 회귀 모델(regression model)(예를 들어, 기호 논리학(logistic) 또는 선형), 베이지안 분류기((Bayesian classifier)) 및 마르코프 체인(Markov chain) 등이 있다. 따라서, 일부 구현예에서, 이미지 분류 시스템(210)은 모든 패치들이 모델을 훈련시키기 위해 사용되었는지 여부를 결정할 수 있다. 미사용의 패치들이 남아 있으면, 이미지 분류 시스템(210)은 패치들의 새로운 서브 세트(new subset of patches)를 선택할 수 있고, 클러스터링 엔진(315), 클래스 할당 엔진(320), 트리플렛 생성기(325) 및 모델 개선 엔진(330)은 전술한 단계들을 반복하여 이미지 분류 모델(335)을 더 개선할 수 있다. 이미지 분류 모델(335)이 완성되도록(finalized), 이용 가능한 모든 패치가 이미지 분류 모델(335)을 개선하는 데에 사용될 때까지, 이용 가능한 패치들의 추가 서브 세트를 이용하여 이들 단계를 반복할 수 있다. 이미지 분류 모델(335)은, 점점 더 많은 패치가 분석되고 처리됨에 따라 업데이트될 수 있음을 이해해야 한다. 일부 구현예에서, 이미지 분류 모델(335)은, 트리플렛들에 의해 생성된 손실 함수가 이미지 분류 모델의 정확도 레벨을 나타내는 사전 결정된 임계값 미만이 될 때까지, 개선될 수 있다.
이미지 분류 모델(335)이 완성된 후에(예를 들어, 수렴에 도달한 후에), 비범주화된 입력 이미지가 제1 유형 또는 제2 유형인지를 결정하기 위해, 이미지 분류 모델(335)을 사용하여 비범주화된 입력 이미지를 분류하는 데에, 이미지 분류 시스템(210)이 사용될 수 있다. 일부 구현예에서, 분류 요청 관리자(340)는 입력 이미지를 분류하라는 요청을 수신할 수 있다. 요청은 비범주화된 입력 이미지에 대응하는 이미지 데이터를 포함할 수 있다. 일부 구현예에서, 이미지 분류 모델(335)은 비범주화된 입력 이미지를 다른 이미지들(350)과 함께 데이터베이스(345)에 저장할 수 있다.
패치 생성기(305)는, 이미지 분류 모델(335)을 훈련시키는 데에 사용되는 주석이 달린 이미지들에 대해, 전술한 바와 같이 입력 이미지를 복수의 패치로 분할할 수 있다. 예를 들어, 입력 이미지는 다수의 패치로 분할될 수 있고, 각 패치는 직사각형, 정사각형 또는 불규칙한 형상일 수 있다. 패치들 중 일부는 입력 이미지의 다른 패치들 중 일부와 중첩될 수 있다. 일부 구현예에서, 패치 생성기(305)는 또한, 예를 들어, 패치들이 너무 흐릿하거나 너무 어두워서 의미있게 처리되지 않는 경우, 저품질로 간주되는 패치들을 폐기할 수 있다. 패치 생성기(305)는 불명료 검출 기법들(blur detection techniques)을 사용하여 패치가 흐릿한지를 결정할 수 있다. 예를 들어, 패치 생성기(305)는 패치에 대한 라플라시안의 분산(variance of a Laplacian)을 계산할 수 있다. 분산이 임계값보다 크면, 패치 생성기(305)는 패치가 너무 흐릿하다고 결정하고 해당 패치를 폐기할 수 있다. 한편, 분산이 임계값보다 낮으면, 패치 생성기(305)는 패치가 너무 흐릿한 것은 아니라고 결정하고 더 사용하기 위해 패치를 저장할 수 있다. 패치 생성기(305)는 명도를 계산함으로써 패치가 어두운지를 결정할 수 있다. 패치 생성기(305)는 패치 상의 적색, 청색 및 녹색 값의 산술 평균에 기초하여 패치의 명도를 계산할 수 있다. 명도가 임계값보다 크면, 패치 생성기(305)는 패치가 어둡지 않다고 판정하고 더 사용하기 위해 패치를 저장할 수 있다. 반대로, 명도가 임계값보다 낮으면, 패치 생성기(305)는 패치가 너무 어둡다고 결정할 수 있고 패치를 폐기할 수 있다. 패치 생성기(305)는 또한, 하나 이상의 이미지 처리 기법을 입력 이미지의 패치들 중 일부 또는 전부에 적용시킴으로써, 예를 들어, 패치들의 색상을 정규화하거나 입력 이미지의 패치들 중 일부를 회전시킴으로써 입력 이미지를 증강시킬 수 있다.
분류 요청 관리자(340)는 입력 이미지의 패치들 각각에 대한 분류를 결정할 수 있다. 각 패치에 대한 분류는 전체 이미지 분류와 유사한 방식으로 형식화할 수 있다. 예를 들어, 각 패치는 분류가 알려진 주석이 달린 이미지와 비교하여 그 특징들 또는 특성들의 유사성에 기초하여 제1 유형 또는 제2 유형 중 어느 하나인 것으로 분류될 수 있다. 일부 구현예에서, 분류 요청 관리자(340)는, 이미지 분류 모델(335)을 입력 이미지의 각 패치에 적용하여, 패치에 대한 분류를 결정할 수 있다. 따라서, 이미지 분류 모델(335)을 훈련시키는 데에 사용된 주석이 달린 이미지들에 관한 모든 정보는 입력 이미지의 패치들의 분류를 알리는 데에 사용될 수 있다.
다음으로 분류 요청 관리자(340)는, 입력 이미지에 대한 전반적인 분류를 결정하기 위해, 입력 이미지의 각 패치의 분류를 집계할 수 있다. 일부 구현예에서, 이미지 분류 모델(335)과 연관된 기법 또는 파라미터가 각 패치의 분류를 집계하는 데에 사용될 수 있다. 예를 들어, 일부 구현예에서, 분류 요청 관리자(340)는, 적어도 입력 이미지의 패치들의 서브 세트가 k-최근접 이웃들 테스트를 만족시키고 여기서 제2 유형으로 분류된 패치의 이웃들이 또한 제2 유형으로 분류될 것으로 결정되는 경우에만, 입력 이미지가 제2 유형으로 분류되어야 한다고 결정할 수 있다. 그렇지 않으면, 입력 이미지가 제1 유형으로 분류될 수 있다. 따라서, 일부 경우에, 입력 이미지는 제1 유형으로서 개별적으로 분류되는 하나 이상의 패치를 가질 수 있고, 반면에 전체로서의 입력 이미지는 제2 유형으로 분류된다. 유사하게, 일부 예에서, 입력 이미지는 제2 유형으로 개별적으로 분류되는 하나 이상의 패치를 가질 수 있고, 반면에 전체로서의 입력 이미지는 제1 유형으로 분류된다.
분류 요청 관리자(340)는 또한, 입력 이미지의 분류뿐만 아니라 입력 이미지의 패치-단위 분할을 포함하는 출력을 제공할 수 있다. 패치-단위 분할은 제2 유형의 각 패치 및 제1 유형의 각 패치의 위치를 나타내는 임의의 형태의 정보를 포함할 수 있다. 따라서, 관찰자는 입력 이미지의 전반적인 분류를 주로 담당하는 입력 이미지의 부분들을 결정할 수 있다.
일 특정 예시에서, 주석이 달린 이미지들은 양성 또는 종양성 중 어느 하나로 분류된 병리학 슬라이드일 수 있고, 입력 이미지는 피험자(예를 들어, 환자)를 진단하기 위해 분류가 결정되는 비범주화된 병리학 슬라이드일 수 있다. 전술한 단계들을 사용하여, 이미지 분류 모델(335)은 주석이 달린 입력 이미지들에 포함된 정보에 기초하여 이미지들을 양성 또는 종양성 중 어느 하나로 분류하도록 훈련될 수 있다. 그 후, 분류 요청 관리자(340)는, 이미지 분류 모델(335)을 비범주화된 입력 이미지에 적용하여, 입력 이미지가 양성 조직 또는 종양성 조직을 나타내는지를 결정할 수 있다. 또한, 분류 요청 관리자(340)는 개별적으로 종양성으로 결정된 패치들에 기초하여 종양성인 특정 영역들(예를 들어, 패치들에 대응하는 위치들)을 도시하는 입력 이미지의 패치-단위 분할을 제공할 수 있다.
도 4는 이미지 분류기를 훈련시키는 예시적 방법(400)에 대한 흐름도이다. 간략한 개요에서, 방법(400)은 제1 유형 또는 제2 유형으로 각각 분류된 복수의 주석이 달린 이미지에 대한 이미지 데이터를 수신하는(405) 단계, 복수의 이미지를 복수의 패치로 분할하는(410) 단계, 주석이 달린 이미지들의 패치들로부터 복수의 포인트를 생성하는(415) 단계, 모델을 훈련시키기 위해 패치들의 새로운 서브 세트를 선택하는(420) 단계, 제2 유형이라는 주석이 달린 이미지들의 포인트들을 클러스터링하는(425) 단계, 제2 클러스터보다 제1 유형이라는 주석이 달린 이미지들의 포인트들에 더 근접한 제1 클러스터를 식별하는(430) 단계, 포인트들을 클래스 포지티브, 클래스 네거티브 및 앵커 클래스에 할당하는(435) 단계, 각각이 각 클래스로부터 포인트들을 포함하는 트리플렛들을 생성하는(440) 단계, 트리플렛들의 손실 함수를 계산하는(445) 단계, 및 손실 함수에 기초하여 이미지 분류기의 파라미터들을 조정하는(450) 단계를 포함한다. 단계 455에서, 모델을 훈련시키기 위해 모든 패치가 선택되었다면, 모델이 완성된다(460). 그렇지 않으면, 방법은 단계 420으로 돌아가고, 모델을 훈련시키기 위해 패치들의 새로운 서브 세트가 선택된다.
다시 도 4를 참조하여, 더 상세하게, 방법(400)은 제1 유형 또는 제2 유형으로 각각 분류된 복수의 주석이 달린 이미지에 대한 이미지 데이터를 수신하는(405) 단계를 포함한다. 일부 구현예에서, 이는 이미지 분류 시스템(210)과 같은 이미지 분류 시스템에 의해 수행될 수 있다. 일부 구현예에서, 이미지들은 픽셀 데이터로 나타내어진 전자 이미지들(electronic images)일 수 있다. 각 이미지에 대한 주석은, 예를 들어, 각 이미지에 대한 컴퓨터 파일과 연관된 메타 데이터로서 포함될 수 있다. 일부 구현예에서, 이미지 분류 시스템(210)은 수신된 이미지들 각각을 데이터베이스에 저장할 수 있다.
방법(400)은 또한, 복수의 이미지를 복수의 패치로 분할하는(410) 단계를 포함한다. 일부 구현예에서, 이는 도 3에 도시된 패치 생성기(305)와 같은 패치 생성기에 의해 수행될 수 있다. 일반적으로, 패치는 이미지 중 일부를 지칭할 수 있다. 예를 들어, 각 이미지는 다수의 패치로 나뉠 수 있다. 일부 구현예에서, 패치 생성기는 그리드 오버레이에 따라 이미지를 복수의 패치로 나눌 수 있다. 예를 들어, 패치 생성기는 1000 픽셀 x 1000 픽셀의 해상도를 갖는 이미지를 각각이 10 픽셀 x 10 픽셀의 해상도를 갖는 이미지의 인접한 정사각형 부분을 나타내는 패치들로 나눔으로써, 이미지에 대해 10,000개의 패치를 생성할 수 있다. 다른 구현들에서, 패치 생성기(305)는 상이한 방식으로 패치들을 생성할 수 있다. 예를 들어, 패치 생성기는 직사각형 또는 불규칙한 형상을 갖는 패치들을 생성할 수 있다. 일부 구현예에서, 패치들은 모두 균일한 크기를 갖지 않을 수 있고, 일부 구현예에서, 적어도 일부 패치는 동일한 이미지의 다른 패치들 중 일부와 중첩될 수 있다. 다른 방식으로 말하자면, 이미지(350) 중 일부는 해당 이미지에 대한 하나 이상의 패치 내에 포함될 수 있다.
일부 구현예에서, 패치 생성기는 또한, 생성된 패치들을 더 처리함으로써 데이터 증강 및 품질 제어 기능을 제공할 수 있다. 예를 들어, 패치 생성기는 저품질로 간주되는 패치들을 폐기할 수 있다. 일부 구현예에서, 패치가 너무 흐릿하거나 너무 어두워서 의미있게 처리되지 않는 경우, 패치 생성기는 해당 패치를 저품질로 결정할 수 있다. 따라서, 패치 생성기는 각 패치에 대한 불명료도 메트릭 또는 광 레벨 메트릭을 결정할 수 있고, 각각의 불명료도 메트릭 및 광 레벨 메트릭에 기초하여 패치들 중 일부를 폐기할 수 있다. 일부 구현예에서, 패치 생성기는 하나 이상의 이미지 처리 기법을 패치들 중 일부 또는 전부에 적용함으로써 데이터 증강을 제공할 수 있다. 예를 들어, 패치 생성기는, 패치들 중 일부 또는 전부에 색상 정규화를 적용하거나, 패치들 중 일부 또는 전부를 공간적으로 회전시킬 수 있다.
방법(400)은 또한, 주석이 달린 이미지들의 패치들로부터 복수의 포인트를 생성하는(415) 단계를 포함한다. 일부 구현예에서, 이는 도 3에 도시된 저차원 임베딩 엔진(310)과 같은 저차원 임베딩 엔진에 의해 수행될 수 있다. 전술한 바와 같이, 각 이미지는 이미지 데이터 세트로 나타내어질 수 있다. 예를 들어, 각 이미지에 대한 이미지 데이터는 수천개 또는 수백만개 픽셀에 대응하는 복소수 데이터(complex data)로 나타내어질 수 있고, 각 픽셀은 적색, 녹색 및 청색과 같은 수개의 색상에 대한 값으로 나타내어질 수 있다. 따라서, 이미지는 다차원 공간에 정의된 포인트로 나타내어질 수 있고, 여기서 차원은 개별 픽셀 위치, 각 픽셀에 대한 색상 값 등에 대응한다. 저차원 임베딩 엔진은 각 패치에 대한 포인트들을 생성할 수 있다. 일부 구현예에서, 저차원 임베딩 엔진은 전체 이미지를 표현하는 데에 사용되는 동일한 레벨의 입도로 각 패치를 표현함으로써 이를 완수할 수 있다. 따라서, 패치는 패치 내의 픽셀 위치 및 패치의 각 픽셀의 색상 값에 대응하는 차원을 갖는 다차원 공간에서의 포인트로 나타내어질 수 있다. 일부 다른 구현예에서, 저차원 임베딩 엔진은, 예를 들어, 패치들에 하나 이상의 이미지 변환 기법을 적용함으로써, 각 패치의 차원을 감소시킬 수 있다.
방법(400)은 또한, 모델을 훈련시키기 위한 패치들의 새로운 서브 세트를 선택하는(420) 단계를 포함한다. 이미지 분류 시스템은 모델을 훈련시키는 데에 사용될 패치들의 새로운 서브 세트를 선택할 수 있고, 이는 도 3에 도시된 이미지 분류 모델 이미지 분류 모델(335)에 대응할 수 있다. 전술한 바와 같이, 수천개 또는 수백만개의 이미지가 있을 수 있고, 각 이미지는 수십개, 수백개, 수천개 또는 수백만의 패치로 나뉠 수 있다. 이미지 분류 모델을 훈련시키기 위해 아래에 설명된 반복 단계들은, 계산상 집약적일 수 있기 때문에, 각각의 반복에서 이용 가능한 패치들의 서브 세트만을 처리하는 것이 더 효율적일 수 있다. 일부 구현예에서, 이미지 분류 시스템은 각각의 반복에 대해 사전 결정된 수의 패치를 선택할 수 있고, 이는 바람직한 반복 횟수에 기초하여 이용 가능한 패치들 중 일부로 표현될 수 있다.
방법(400)은 또한, 제2 유형이라는 주석이 달린 이미지들로부터 도출된 포인트들을 클러스터링하는(425) 단계를 포함한다. 일부 구현예에서, 이는 도 3에 도시된 클러스터링 엔진(315)과 같은 클러스터링 엔진에 의해 수행될 수 있다. 클러스터링 엔진은 임의의 유형의 클러스터링 알고리즘을 사용하여 이 클러스터링 동작을 수행할 수 있다. 클러스터링 엔진이 제2 유형으로 식별된 이미지들의 패치들에 대응하는 포인트들을 클러스터링한 후에, 해당 클러스터링 엔진은, 제2 클러스터보다 제1 유형이라는 주석이 달린 이미지들의 포인트들에 더 근접한, 2개의 클러스터 중 제1 클러스터를 식별할 수 있다(430). 제1 유형이라는 주석이 달린 이미지들의 포인트들에 대한 각 클러스터의 근접성은 다양한 방식으로 측정될 수 있다. 일부 구현예에서, 클러스터링 엔진은 각 클러스터로부터 제1 유형이라는 주석이 달린 이미지들의 포인트들까지의 유클리드 거리를 결정할 수 있다. 예를 들어, 클러스터링 엔진은 제1 클러스터의 모든 포인트들의 평균을 나타내는 제1 포인트, 제2 클러스터의 모든 포인트들의 평균을 나타내는 제2 포인트, 및 제1 유형이라는 주석이 달린 이미지들의 모든 포인트들의 평균을 나타내는 제3 포인트를 결정할 수 있다. 그 후, 클러스터링 엔진은, 제1 포인트와 제3 포인트 사이의 유클리드 거리와 제2 포인트와 제3 포인트 사이의 유클리드 거리를 결정하고, 제1 포인트와 제3 포인트 사이의 거리가 제2 포인트와 제3 포인트 사이의 거리보다 작다고 결정할 수 있다.
방법(400)은 또한, 포인트들을 클래스 포지티브, 클래스 네거티브 및 앵커 클래스에 할당하는(435) 단계를 포함한다. 일부 구현예에서, 이는 도 3에 도시된 클래스 할당 엔진(320)과 같은 클래스 할당 엔진에 의해 수행될 수 있다. 클래스 할당 엔진은, 각 포인트가 존재하는 클러스터에 기초하여, 포인트들을 다양한 클래스들에 할당할 수 있다. 예를 들어, 클래스 할당 엔진은 제1 유형이라는 주석이 달린 이미지들의 포인트들을 앵커 클래스에 할당할 수 있다. 클래스 할당 엔진은 또한, 앵커 클래스의 포인트들(예를 들어, 제1 유형이라는 주석이 달린 이미지들의 포인트들)로의 근접성으로 인해, 제1 클러스터의 포인트들을 클래스 포지티브에 할당할 수 있다. 유사하게, 클래스 할당 엔진은 제2 클러스터의 포인트들을 클래스 네거티브에 할당할 수 있는데, 그 이유는 그들이 클래스 포지티브의 포인트들보다 (평균적으로) 앵커 클래스의 포인트들로부터 더 멀리 있을 것으로 예상되기 때문이다.
방법(400)은 또한, 각각이 각 클래스로부터 포인트들을 포함하는, 트리플렛들을 생성하는(440) 단계를 포함한다. 일부 구현예에서, 이 단계는 도 3에 도시된 트리플렛 생성기(325)와 같은 트리플렛 생성기에 의해 수행될 수 있다. 일반적으로, 트리플렛은 3개 포인트의 순서화된 세트로 표현될 수 있다. 일부 구현예에서, 트리플렛 생성기는, 각 트리플렛이 앵커 클래스로부터의 포인트, 클래스 포지티브로부터의 포인트, 및 클래스 네거티브로부터의 포인트를 포함하도록, 트리플렛들을 생성할 수 있다. 일부 구현예에서, 트리플렛 생성기는 각 클래스로부터 임의로 샘플링하여 트리플렛들을 생성하도록 구성된다. 즉, 각 트리플렛을 생성하기 위해, 트리플렛 생성기는 앵커 클래스로부터 제1 포인트를 임의로 선택하고, 클래스 포지티브로부터 제2 포인트를 임의로 선택하고, 클래스 네거티브로부터 제3 포인트를 임의로 선택할 수 있다. 일부 구현예에서, 각 트리플렛의 포인트들에 대한 임의 선택은 독립적일 수 있다. 결과적으로, 트리플렛 생성기는 적어도 하나의 공통 포인트를 갖는 2개 이상의 트리플렛을 생성할 수 있다. 예를 들어, 클래스 중 하나로부터의 특정 포인트는 생성된 트리플렛보다 더 많이 나타날 수 있다. 일부 다른 구현예에서, 트리플렛 생성기는 생성된 트리플렛들에 걸쳐 어떤 포인트도 반복되지 않도록 보장하는 방식으로 클래스들로부터 샘플링을 행할 수 있다.
방법(400)은 또한, 트리플렛들의 손실 함수를 계산하는(445) 단계를 포함한다. 일부 구현예에서, 이는 도 3에 도시된 모델 개선 엔진(330)과 같은 모델 개선 엔진에 의해 수행될 수 있다. 일부 구현예에서, 손실 함수는 트리플렛 마진 에러일 수 있다. 일부 다른 구현예에서, 모델 개선 엔진은 트리플렛들에 기초하여 상이한 유형의 손실 함수를 계산할 수 있다. 일부 구현예에서, 모델 개선 엔진은 손실 함수를 최소화하거나 감소시키는 이미지 분류 모델용의 파라미터들을 선택하도록 더 구성될 수 있다. 예를 들어, 일부 구현예에서, 모델 개선 엔진은, 손실 함수를 최소화하거나 감소시킬 수 있는 파라미터 세트를 결정하기 위해, 계산된 손실 함수에 대해 경사 하강 최적화를 수행할 수 있다. 일부 다른 구현예에서, 모델 개선 엔진은 상이한 최적화 기법을 사용하여 손실 함수를 최소화하거나 감소시키기 위한 파라미터들을 선택할 수 있다. 그 후, 모델 개선 엔진은 손실 함수에 기초하여 선택된 파라미터들을 이용하여 이미지 분류 모델의 파라미터들을 조정함으로써 이미지 분류 모델을 업데이트할(450) 수 있다.
단계 455에서, 모델을 훈련시키기 위해 모든 패치가 선택되었다면, 모델이 완성된다(460). 그렇지 않으면, 방법(400)은 단계 420으로 돌아가고 모델을 훈련시키기 위해 패치들의 새로운 서브 세트가 선택된다. 따라서, 단계 420, 425, 430, 435, 440, 445, 450 및 455는, 모든 패치들이 이미지 분류 모델을 훈련시키는 데에 사용되고 모델이 완성될 때까지, 반복된다.
도 5는 비범주화된 입력 이미지를 분류하는 예시적 방법(500)에 대한 흐름도이다. 간략한 개요에서, 방법(500)은 비범주화된 입력 이미지에 대응하는 이미지 데이터를 수신하는 단계(505), 입력 이미지를 복수의 비범주화된 패치로 나누는 단계(510), 각각의 비범주화된 패치에 대한 분류를 결정하는 단계(515), 입력 이미지에 대한 전반적인 분류를 결정하기 위해 각 패치의 분류를 집계하는 단계(520), 및 입력 이미지의 패치-단위 분할을 포함하는 출력을 제공하는 단계(525)를 포함한다.
다시 도 5를 참조하여, 더 상세하게, 방법(500)은 비범주화된 입력 이미지에 대응하는 이미지 데이터를 수신하는 단계(505)를 포함한다. 일부 구현예에서, 이는 도 3에 도시된 분류 요청 관리자(340)와 같은 분류 요청 관리자에 의해 수행될 수 있다. 방법(500)은 또한, 입력 이미지를 복수의 비범주화된 패치로 나누는 단계(510)를 포함한다. 예를 들어, 입력 이미지는 다수의 패치로 분할될 수 있고, 각 패치는 직사각형, 정사각형 또는 불규칙한 형상일 수 있다. 패치들은 도 3에 도시된 패치 생성기(305)와 같은 패치 생성기에 의해 생성될 수 있다. 패치들 중 일부는 입력 이미지의 다른 패치들 중 일부와 중첩될 수 있다. 일부 구현예에서, 패치 생성기는 또한, 예를 들어, 패치들이 너무 흐릿하거나 너무 어두워서 의미있게 처리될 수 없는 경우, 저품질로 간주되는 패치들을 폐기할 수 있다. 패치 생성기는 또한, 하나 이상의 이미지 처리 기법을 입력 이미지의 패치들 중 일부 또는 전부에 적용함으로써, 예를 들어, 패치들의 색상을 정규화하거나 입력 이미지의 패치들 중 일부를 회전시킴으로써 입력 이미지를 증강시킬 수 있다.
방법(500)은 각각의 비범주화된 패치에 대한 분류를 결정하는 단계(515)를 포함한다. 각 패치에 대한 분류는 전체 이미지 분류와 유사한 방식으로 형식화할 수 있다. 예를 들어, 각 패치는 분류가 알려진 주석이 달린 이미지들과 비교하여 그 특징들 또는 특성들의 유사성에 기초하여 제1 유형 또는 제2 유형 중 어느 하나인 것으로 분류될 수 있다. 일부 구현예에서, 분류 요청 관리자는, 이미지 분류 모델을 입력 이미지의 각 패치에 적용하여, 패치에 대한 분류를 결정할 수 있다. 따라서, 이미지 분류 모델을 훈련시키는 데에 사용된 주석이 달린 이미지들에 관한 모든 정보는, 입력 이미지의 패치들에 대한 분류를 알리는 데에 사용될 수 있다.
방법(500)은 입력 이미지의 전반적인 분류를 결정하기 위해 각 패치의 분류를 집계하는(520) 단계를 포함한다. 일부 구현예에서, 이미지 분류 모델과 연관된 기법 또는 파라미터가 각 패치의 분류를 집계하는 데에 사용될 수 있다. 예를 들어, 일부 구현예에서, 분류 요청 관리자는, 입력 이미지의 패치들의 적어도 서브 세트가 k-최근접 이웃들 테스트를 만족시키고 여기서 제2 유형으로 분류된 패치의 이웃들이 또한 제2 유형으로 분류될 것으로 결정되는 경우에만, 입력 이미지가 제2 유형으로 분류되어야 한다고 결정할 수 있다. 그렇지 않으면, 입력 이미지가 제1 유형으로 분류될 수 있다. 따라서, 일부 경우에, 입력 이미지는 제1 유형으로서 개별적으로 분류되는 하나 이상의 패치를 가질 수 있고, 반면에 전체로서의 입력 이미지는 제2 유형으로 분류된다. 유사하게, 일부 예에서, 입력 이미지는 제2 유형으로 개별적으로 분류되는 하나 이상의 패치를 가질 수 있고, 반면에 전체로서의 입력 이미지는 제1 유형으로 분류된다.
방법(500)은 입력 이미지의 패치-단위 분할을 포함하는 출력을 제공하는 단계(525)를 포함한다. 일부 구현예에서, 이는 분류 요청 관리자에 의해 수행될 수 있다. 패치-단위 분할은 제2 유형의 각 패치 및 제1 유형의 각 패치의 위치를 나타내는 임의의 형태의 정보를 포함할 수 있다. 따라서, 관찰자는 입력 이미지의 전반적인 분류를 주로 담당하는 입력 이미지의 부분들을 결정할 수 있다.
전술한 시스템들은 이들 구성 요소 중 임의의 하나 또는 각각의 구성 요소 중 다수를 제공할 수 있고, 이들 구성 요소는 독립형 머신, 또는 일부 실시예에서는, 분산 시스템의 다수의 머신에 제공될 수 있음을 이해해야 한다. 전술한 시스템들 및 방법들은, 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합을 생성하기 위한 프로그래밍 및/또는 엔지니어링 기법들을 사용하는 방법, 장치 또는 제조 물품으로서 구현될 수 있다. 또한, 전술한 시스템들 및 방법들은 하나 이상의 제조 물품 상에 또는 내에 구체화된 하나 이상의 컴퓨터- 판독 가능 프로그램으로서 제공될 수 있다. 본 명세서에 사용된 용어 "제조 물품"은 하나 이상의 컴퓨터-판독 가능 디바이스, 펌웨어, 프로그램 가능 로직, 메모리 디바이스들(예를 들어, EEPROM, ROM, PROM, RAM, SRAM 등), 하드웨어(예를 들어, 집적 회로 칩, FPGA(Field Programmable Gate Array), ASIC(Application Specific Integrated Circuit) 등), 전자 디바이스들, 컴퓨터-판독 가능 비휘발성 저장 유닛(예를 들어, CD-ROM, 플로피 디스크, 하드 디스크 드라이브 등)에 임베딩되고 그로부터 액세스 가능한 코드 또는 로직을 포괄하도록 의도된다. 제조 물품은 네트워크 전송 라인, 무선 전송 매체, 공간을 통해 전파되는 신호, 무선 파, 적외선 신호 등을 통해 컴퓨터-판독 가능 프로그램들에의 액세스를 제공하는 파일 서버로부터 액세스될 수 있다. 제조 물품은 플래시 메모리 카드 또는 자기 테이프일 수 있다. 제조 물품은 하드웨어 로직뿐만 아니라 프로세서에 의해 실행되는 컴퓨터-판독 가능 매체에 임베딩된 소프트웨어 또는 프로그램 가능 코드를 포함한다. 일반적으로, 컴퓨터-판독 가능 프로그램들은, LISP, PERL, C, C++, C#, PROLOG와 같은 임의의 프로그래밍 언어 또는 JAVA와 같은 임의의 바이트 코드 언어로 구현될 수 있다. 소프트웨어 프로그램들은 하나 이상의 제조 물품 상에 또는 객체 코드(object code)로서 저장될 수 있다.
방법들 및 시스템들의 다양한 실시예가 설명되었지만, 이들 실시예는 예시적이고, 어떤 방식으로든 설명된 방법들 또는 시스템들의 범주를 제한하는 것은 아니다. 관련 기술분야의 통상의 기술자들은 설명된 방법들 및 시스템들의 가장 광범위한 범주를 벗어남 없이 설명된 방법들 및 시스템들의 형태 및 상세에 대한 변경을 행할 수 있다. 따라서, 본 명세서에 설명된 방법들 및 시스템들의 범주는 임의의 예시적 실시예들에 의해 제한되는 것은 아니고, 첨부된 청구 범위 및 그 등가물에 따라 정의되어야 한다.

Claims (1)

  1. 이미지 분류기(image classifier)를 훈련시키는 방법으로서,
    하나 이상의 프로세서를 포함하는 디바이스에 의해, 제1 유형 또는 제2 유형 중 어느 하나라는 주석이 달린 이미지들로부터 생성된 각각의 패치로부터 복수의 포인트를 생성하는 단계;
    클러스터링 알고리즘을 사용하여 상기 디바이스에 의해, 상기 제2 유형이라는 주석이 달린 이미지들에 대응하는 포인트들을 2개의 클러스터로 클러스터링하는(clustering) 단계;
    상기 디바이스에 의해, 상기 2개의 클러스터 중 제2 클러스터보다, 상기 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들에 더 근접한, 상기 2개의 클러스터 중 제1 클러스터를 식별하는 단계;
    상기 디바이스에 의해, 상기 제1 클러스터의 포인트들을 클래스 포지티브(class positive)에, 상기 제2 클러스터의 포인트들을 클래스 네거티브(class negative)에, 그리고 상기 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들을 앵커 클래스(anchor class)에 할당하는 단계;
    상기 디바이스에 의해, 각 트리플렛이 상기 앵커 클래스로부터의 각각의 포인트, 상기 클래스 포지티브로부터의 각각의 포인트, 및 상기 클래스 네거티브로부터의 각각의 포인트를 포함하는, 복수의 트리플렛을 생성하는 단계;
    상기 디바이스에 의해, 상기 복수의 트리플렛의 손실 함수(loss function)를 계산하는 단계; 및
    상기 디바이스에 의해, 상기 손실 함수에 기초하여 이미지 분류기의 파라미터들을 조정하는 단계를 포함하는, 방법.
KR1020237024437A 2017-07-14 2018-07-13 약하게 지도된 이미지 분류기 KR20230112744A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762532795P 2017-07-14 2017-07-14
US62/532,795 2017-07-14
KR1020207004289A KR102557985B1 (ko) 2017-07-14 2018-07-13 약하게 지도된 이미지 분류기
PCT/US2018/042178 WO2019014649A1 (en) 2017-07-14 2018-07-13 LOW SUPERVISED IMAGE CLASSIFIER

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207004289A Division KR102557985B1 (ko) 2017-07-14 2018-07-13 약하게 지도된 이미지 분류기

Publications (1)

Publication Number Publication Date
KR20230112744A true KR20230112744A (ko) 2023-07-27

Family

ID=65001825

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020237024437A KR20230112744A (ko) 2017-07-14 2018-07-13 약하게 지도된 이미지 분류기
KR1020207004289A KR102557985B1 (ko) 2017-07-14 2018-07-13 약하게 지도된 이미지 분류기

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020207004289A KR102557985B1 (ko) 2017-07-14 2018-07-13 약하게 지도된 이미지 분류기

Country Status (7)

Country Link
US (1) US10685255B2 (ko)
EP (1) EP3652675A4 (ko)
KR (2) KR20230112744A (ko)
CN (2) CN111417961B (ko)
AU (1) AU2018301706B2 (ko)
CA (1) CA3074107A1 (ko)
WO (1) WO2019014649A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3493120A1 (en) * 2017-12-01 2019-06-05 Koninklijke Philips N.V. Training a neural network model
US10789696B2 (en) * 2018-05-24 2020-09-29 Tfi Digital Media Limited Patch selection for neural network based no-reference image quality assessment
US10635979B2 (en) * 2018-07-20 2020-04-28 Google Llc Category learning neural networks
EP3660731B1 (en) * 2018-11-28 2024-05-22 Tata Consultancy Services Limited Digitization of industrial inspection sheets by inferring visual relations
US11689507B2 (en) * 2019-11-26 2023-06-27 Adobe Inc. Privacy preserving document analysis
US11482335B2 (en) * 2019-12-18 2022-10-25 Pathomiq Inc. Systems and methods for predicting patient outcome to cancer therapy
US11687778B2 (en) 2020-01-06 2023-06-27 The Research Foundation For The State University Of New York Fakecatcher: detection of synthetic portrait videos using biological signals
US11694810B2 (en) * 2020-02-12 2023-07-04 MDI Health Technologies Ltd Systems and methods for computing risk of predicted medical outcomes in patients treated with multiple medications
JP2021168436A (ja) * 2020-04-09 2021-10-21 キヤノン株式会社 撮像装置及びその制御方法、プログラム、記憶媒体
CN111563897B (zh) * 2020-04-13 2024-01-05 北京理工大学 基于弱监督学习的乳腺核磁影像肿瘤分割的方法及装置
CN111723229B (zh) * 2020-06-24 2023-05-30 重庆紫光华山智安科技有限公司 数据比对方法、装置、计算机可读存储介质和电子设备
US11603119B2 (en) * 2020-10-12 2023-03-14 Great Wall Motor Company Limited Method and apparatus for out-of-distribution detection
TWI821715B (zh) * 2021-07-20 2023-11-11 和碩聯合科技股份有限公司 生成器網路模型的訓練方法及其執行的電子裝置
US11922702B2 (en) * 2021-08-19 2024-03-05 Ford Global Technologies, Llc Enhanced object detection
CN114092489B (zh) * 2021-11-02 2023-08-29 清华大学 多孔介质渗流通道提取、模型训练方法、装置及设备
CN113743543B (zh) * 2021-11-05 2022-02-08 武汉大学 一种图像分类训练方法、装置、服务器及存储介质
CN115713501B (zh) * 2022-11-10 2023-06-16 深圳市探鸽智能科技有限公司 适用于摄像头模糊画面的检测处理方法及系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BRPI0602471A (pt) * 2006-05-15 2008-03-25 Marcos Thompson sistema e método para realização de busca em redes ativada por sinais digitais e/ou analógicos
US8712930B1 (en) * 2010-08-09 2014-04-29 Google Inc. Encoding digital content based on models for predicting similarity between exemplars
US9495591B2 (en) * 2012-04-13 2016-11-15 Qualcomm Incorporated Object recognition using multi-modal matching scheme
CN103886315B (zh) * 2012-12-21 2017-05-24 本田技研工业株式会社 应用于行人姿势分类的3d人体模型
CN104751198B (zh) * 2013-12-27 2018-04-27 华为技术有限公司 图像中的目标物的识别方法及装置
US9836641B2 (en) * 2014-12-17 2017-12-05 Google Inc. Generating numeric embeddings of images
US10839510B2 (en) * 2015-08-19 2020-11-17 Colorado Seminary, Which Owns And Operates The University Of Denver Methods and systems for human tissue analysis using shearlet transforms
CN106682233B (zh) * 2017-01-16 2020-03-10 华侨大学 一种基于深度学习与局部特征融合的哈希图像检索方法

Also Published As

Publication number Publication date
CA3074107A1 (en) 2019-01-17
CN111417961A (zh) 2020-07-14
CN117975109A (zh) 2024-05-03
KR102557985B1 (ko) 2023-07-21
KR20200040240A (ko) 2020-04-17
EP3652675A4 (en) 2021-03-24
CN111417961B (zh) 2024-01-12
US10685255B2 (en) 2020-06-16
AU2018301706B2 (en) 2023-01-12
AU2018301706A1 (en) 2020-02-27
WO2019014649A1 (en) 2019-01-17
EP3652675A1 (en) 2020-05-20
US20190286936A1 (en) 2019-09-19

Similar Documents

Publication Publication Date Title
KR102557985B1 (ko) 약하게 지도된 이미지 분류기
US11080558B2 (en) System and method of incremental learning for object detection
WO2019046774A1 (en) SYSTEMS AND METHODS FOR GENERATING 3D MEDICAL IMAGES BY SCANNING A WHOLE TISSUE BLOCK
US20210295111A1 (en) System, method and computer-accessible medium for quantification of blur in digital images
US10990810B2 (en) Automated facial recognition detection
CN114787857A (zh) 用于多类图像分割的深度多放大率网络
US11366683B2 (en) Images deployment system across multiple architectures
US20190108355A1 (en) Systems and methods for identifying potential misuse or exfiltration of data
US20220058451A1 (en) Identifying a type of object in a digital image based on overlapping areas of sub-images
US20200065961A1 (en) Training classifier with data of different granularity
US20200026962A1 (en) Modeling post-lithography stochastic critical dimension variation with multi-task neural networks
US11853395B2 (en) Augmentation loss function for image classification
WO2015069994A1 (en) Methods and systems for natural language composition correction
US11216659B2 (en) Converting table data into component parts
US20180082392A1 (en) Systems and methods for selecting communication channels to improve student outcomes
WO2021011581A1 (en) Image-based predictive model for lung cancer
US20210252310A1 (en) Methods and systems for automatic radiotherapy treatment planning
US10909136B1 (en) Systems and methods for automatically linking data analytics to storage
US20220107965A1 (en) Systems and methods for asset fingerprinting
US11664129B2 (en) Mini-batch top-k-medoids for extracting specific patterns from CGM data
AU2021355460A1 (en) System and method for assessing operational states of a computer environment
WO2023055859A1 (en) Systems and methods for anonymization of image data
TW202324196A (zh) 考量物件位置之趨勢之物件偵測
EP4094249A1 (en) Video-based 3d hand pose and mesh estimation based on temporal-aware self-supervised learning
WO2023122198A1 (en) Systems and methods for data abstraction for transmission cross-reference to related applications

Legal Events

Date Code Title Description
A107 Divisional application of patent