KR20230112744A - Weakly supervised image classifier - Google Patents

Weakly supervised image classifier 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
Korean (ko)
Inventor
토마스 퍼치스
Original Assignee
메모리얼 슬로안 케터링 캔서 센터
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 메모리얼 슬로안 케터링 캔서 센터 filed Critical 메모리얼 슬로안 케터링 캔서 센터
Publication of KR20230112744A publication Critical patent/KR20230112744A/en

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)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Public Health (AREA)
  • Primary Health Care (AREA)
  • Epidemiology (AREA)
  • Radiology & Medical Imaging (AREA)
  • Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Measuring And Recording Apparatus For Diagnosis (AREA)
  • Image Analysis (AREA)
  • Combined Means For Separation Of Solids (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

이미지 분류기를 훈련시키고 사용하기 위한 시스템들 및 방법들이 제공된다. 복수의 포인트는 제1 유형 또는 제2 유형 중 어느 하나라는 주석이 달린 이미지들의 각각의 패치로부터 생성될 수 있다. 제2 유형의 이미지들에 대응하는 포인트들은 2개의 클러스터로 클러스터링될 수 있다. 2개의 클러스터 중 제1 클러스터는, 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들에 더 근접한 것으로 식별될 수 있다. 제1 클러스터의 포인트들은 클래스 포지티브에, 제2 클러스터의 포인트들은 클래스 네거티브에, 그리고 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들은 앵커 클래스에 할당될 수 있다. 복수의 트리플렛은, 다양한 클래스들로부터의 포인트들에 기초하여 생성될 수 있다. 이미지 분류기의 파라미터들은 트리플렛들의 손실 함수에 기초하여 조정될 수 있다.Systems and methods for training and using an image classifier are provided. A plurality of points may be created from each patch of images annotated as being either of the first type or the second type. Points corresponding to the second type of images may be clustered into two clusters. A first of the two clusters can be identified as being closer to points corresponding to images annotated as being of the first type. Points in the first cluster can be assigned class positive, points in the second cluster can be assigned class negative, and points corresponding to images annotated as type 1 can be assigned an anchor class. A plurality of triplets may be generated based on points from various classes. Parameters of the image classifier may be adjusted based on the loss function of the triplets.

Description

약하게 지도된 이미지 분류기{WEAKLY SUPERVISED IMAGE CLASSIFIER}Weakly Supervised Image Classifier {WEAKLY SUPERVISED IMAGE CLASSIFIER}

연관된 출원에 대한 상호참조CROSS REFERENCES TO RELATED APPLICATIONS

본 출원은, 35 U.S.C. §119(e) 하에서 2017년 7월 14일자로 출원되고 발명의 명칭이 "약하게 지도된 이미지 분류기"라는 미국 특허 가출원 번호 제62/532,795호의 우선권을 주장하며, 이들 전체 내용은 본 명세서에 참고로 포함된다.This application, 35 U.S.C. §119(e) claims priority to U.S. Provisional Patent Application No. 62/532,795 entitled "Weakly Directed Image Classifier" filed on July 14, 2017, the entire contents of which are incorporated herein by reference.

기술분야technology field

본 개시는 일반적으로 이미지 분류기를 훈련시키고 사용하기 위한 시스템들 및 방법들에 관한 것이다. 보다 구체적으로, 본 개시는 머신 학습 기법들을 복수의 주석이 달린 이미지에 적용함으로써 약하게 지도된 이미지 분류기를 훈련시키고 사용하기 위한 시스템들 및 방법들에 관한 것이다.This disclosure relates generally to systems and methods for training and using image classifiers. More specifically, the present disclosure relates to systems and methods for training and using a weakly supervised image classifier by applying machine learning techniques to a plurality of annotated images.

이미지 분류는 고비용이고 지루한 프로세스일 수 있다. 군사 또는 의료 분야에 관한 애플리케이션들과 같은 일부 이미지 분류 애플리케이션의 경우, 이미지들에 대한 정확하고 신뢰성 있는 분류는 매우 중요할 수 있고, 전문화된 훈련을 받은 사람에 의해 전형적으로 수행될 수 있다. 특정한 유형의 이미지들을 자동화된 방식으로 정확하고 신뢰성 있게 분류하는 것은 곤란하다.Image classification can be an expensive and tedious process. For some image classification applications, such as applications related to the military or medical field, accurate and reliable classification of images can be very important and is typically performed by specialized trained personnel. It is difficult to accurately and reliably classify certain types of images in an automated manner.

이미지 분류기를 훈련시키는 것에 관한 방법들, 시스템들 및 장치가 제공된다. 컴퓨터의 이미지 분류기 모델들(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)과 대조된다.Methods, systems and apparatus for training an image classifier are provided. Computational image classifier models may have the potential to substantially reduce the work and resources for automated image classification. In general, the term image classification may include determining whether an uncategorized input image is of a first type or a second type, where the first and second types are known. In some implementations, the systems and methods of this disclosure can receive an uncategorized input image having a complex set of features that can be represented in a multi-dimensional space. For example, an image may have multiple pixels (eg, on the order of 10 6 or greater), and each pixel may have an associated value for each of multiple colors, such as red, green, and blue. The systems and methods described further below can learn lower-dimensional embeddings of input images from weak supervision. In some implementations, the images can be divided into multiple patches, and the patches can be automatically partitioned into clusters representing the first type and the second type. This learned embedding makes it possible to solve an overall classification task for an input image by using a simple classifier such as k-nearest neighbors for patches constituting the input image. In general, a weak map may refer to instances of slides in a data set where only the overall slice type (eg, either the first type or the second type) is known. There may be no information about the classification of any individual patch of the image. Thus, the techniques of this disclosure contrast with fully supervised learning, where the label of each patch of an image is known and used to train an image classification model.

일부 구현예에서, 이미지 분류 모델은 유형(예를 들어, 분류)이 알려져 있는 이미지들의 세트에 기초하여 훈련될 수 있다. 이미지들이 패치들로 나뉘고, 패치들의 라이브러리들이 생성될 수 있다. 예를 들어, 하나의 라이브러리는 제1 유형의 이미지들에 대응하는 패치들을 포함할 수 있고, 제2 라이브러리는 제2 유형의 이미지들에 대응하는 패치들을 포함할 수 있다. 이미지 분류 모델을 훈련시키는 것은 반복적인 훈련 프로세스로 완수될 수 있고, 패치들의 서브 세트가 매 훈련 라운드마다 각 라이브러리로부터 샘플링될 수 있다. 주어진 훈련 라운드(given training round)에서, 각 패치는, 예를 들어, 합성곱 신경망(convolutional neural network)일 수 있는 이미지 분류 모델을 사용하여 저차원 임베딩 공간의 포인트(point)로 변환될 수 있다.In some implementations, an image classification model can be trained based on a set of images of known type (eg, classification). Images can be divided into patches, and libraries of patches can be created. For example, one library may contain patches corresponding to images of a first type, and a second library may contain patches corresponding to images of a second type. Training the image classification model can be accomplished in an iterative training process, and a subset of patches can be sampled from each library every training round. In a given training round, each patch can be transformed into a point in a low-dimensional embedding space using an image classification model, which can be, for example, a convolutional neural network.

일부 구현예에서, 하나의 라이브러리로부터 유래되는 포인트들은 클러스터링 알고리즘을 이용하여 2개의 클러스터로 클러스터링될 수 있다. 2개의 클러스터 중에서, 제2 라이브러리로부터 유래되는 포인트들까지 최소 거리를 갖는 클러스터 내에 포함된 포인트들은 클래스 포지티브(class positive)에 할당될 수 있고, 다른 한 클러스터에 포함된 포인트들은 클래스 네거티브(class negative)에 할당될 수 있다. 제2 라이브러리로부터 유래되는 포인트들은 앵커 클래스(anchor class)로서 취급될 수 있다. 앵커, 포지티브, 및 네거티브 클래스로부터의 포인트들이 트리플렛들(triplets)을 생성하도록 샘플링될 수 있고, 각 트리플렛이 하나의 앵커 포인트, 하나의 포지티브 포인트, 및 하나의 네거티브 포인트를 포함한다. 그 후, 트리플렛 마진 손실과 같은, 손실 함수(loss function)가 계산될 수 있다. 일부 구현예에서, 경사 하강 최적화(gradient descent optimization)는 이미지 분류 모델의 파라미터들을 튜닝하여 손실 함수를 최소화하기 위해 사용될 수 있다.In some implementations, points originating from one library can be clustered into two clusters using a clustering algorithm. Among the two clusters, points included in the cluster having the minimum distance to points derived from the second library may be assigned to class positive, and points included in the other cluster may be assigned to class negative. Points derived from the second library can be treated as an anchor class. Points from the Anchor, Positive, and Negative classes can be sampled to generate triplets, each triplet containing one anchor point, one positive point, and one negative point. A loss function can then be calculated, such as the triplet margin loss. In some implementations, gradient descent optimization can be used to tune the parameters of the image classification model to minimize the loss function.

일단 분류기가 훈련되면, 새로운 이미지가 수신되어 복수의 패치로 나뉠 수 있다. 분류기는 패치들의 예측 또는 분류를 행할 수 있다. 이미지의 모든 패치들에 대한 예측(예를 들어, 분류)은 전체 이미지(overall image)를 제1 유형 또는 제2 유형 중 어느 하나로 분류하기 위해 집계될 수 있다. 또한, 아래에 더 설명된 시스템들 및 방법들은, 이미지를 제1 유형 또는 제2 유형 중 어느 하나로 분류하는 것을 담당하는 특징들을 경계 짓기(demarcating) 위해 전제 이미지(whole image)의 패치-단위 분할(patch-wise segmentation)을 제공할 수 있다.Once the classifier is trained, new images can be received and divided into multiple patches. A classifier can make predictions or classifications of patches. Prediction (eg, classification) for all patches of an image may be aggregated to classify the overall image as either a first type or a second type. In addition, the systems and methods described further below may provide patch-wise segmentation of a whole image to demarcat features responsible for classifying an image as either a first type or a second type.

본 개시에 설명된 기법들은 다양한 유용한 애플리케이션들을 갖는다. 일부 구현예에서, 본 명세서에 설명된 이미지 분류 시스템(image classification system)은 의료 진단(medical diagnosis)용으로 사용될 수 있다. 예를 들어, 각 이미지는 환자로부터 취해진 조직 샘플(tissue sample)을 나타내는 병리학 슬라이드((pathology slide)의 이미지일 수 있고, 각 슬라이드는 양성(benign) 또는 종양성(tumorous) 중 어느 하나로 분류될 수 있다. 이들 슬라이드는, 비범주화된 입력 이미지가 양성 또는 종양성 조직(tissue or tumorous tissue)을 나타내는지를 결정할 수 있는 이미지 분류 모델을 훈련시키는 데에 사용될 수 있다. 종양은 종양성으로 범주화된 슬라이드의 작은 부분(small portion)만 전형적으로 나타내기 때문에, 심지어 훈련된 인간이라도 이러한 슬라이드들을 정확하게 분류하는 것은 곤란할 수 있다. 본 개시의 시스템들 및 방법들은, 이러한 분류를 자동화하는 것을 도울 수 있고, 또한 종양성으로 분류된 각 슬라이드의 종양성 부분들이 분명하게 경계 지어지도록, 종량성 슬라이드들에 대응하는 이미지들을 분할(segment)할 수도 있다. 일부 다른 구현예에서, 본 개시의 기법들은 다른 유형의 이미지들에 적용될 수 있다. 예를 들어, 본 명세서에 설명된 시스템들 및 방법들은, 예를 들어, 위성 이미지들일 수 있는 한 세트의 훈련 이미지들에 기초하여, 특정 물체 또는 사람이 입력 이미지에 존재하는지를 자동으로 결정하는 데에 사용될 수 있다.The techniques described in this disclosure have a variety of useful applications. In some implementations, the image classification system described herein can be used for medical diagnosis. For example, each image can be an image of a pathology slide representing a tissue sample taken from a patient, and each slide can be classified as either benign or tumorous. These slides can be used to train an image classification model that can determine whether an uncategorized input image represents tissue or tumorous tissue. A tumor typically represents only a small portion of a slide categorized as neoplastic. Because of this, it can be difficult for even a trained human to accurately classify these slides. The systems and methods of the present disclosure can help automate this classification, and can also segment the images corresponding to the tumorous slides, such that the neoplastic portion of each slide classified as neoplastic is clearly demarcated. In some other implementations, the techniques of the present disclosure can be applied to other types of images. For example, the systems and methods described herein can be satellite images, for example. Based on a set of training images, it can be used to automatically determine if a particular object or person is present in an input image.

본 개시의 일 양상은 이미지 분류기를 훈련시키는 방법에 관한 것이다. 본 방법은, 하나 이상의 프로세서를 포함하는 디바이스에 의해, 제1 유형 또는 제2 유형 중 어느 하나라는 주석이 달린 이미지들로부터 생성된 각각의 패치로부터 복수의 포인트를 생성하는 단계를 포함할 수 있다. 본 방법은, 클러스터링 알고리즘을 사용하는 디바이스에 의해, 제2 유형이라는 주석이 달린 이미지들에 대응하는 포인트들을 2개의 클러스터로 클러스터링하는 단계를 포함할 수 있다. 본 방법은, 디바이스에 의해, 2개의 클러스터 중 제2 클러스터보다, 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들에 더 근접한, 2개의 클러스터 중 제1 클러스터를 식별하는 단계를 포함할 수 있다. 본 방법은, 디바이스에 의해, 제1 클러스터의 포인트들을 클래스 포지티브에, 제2 클러스터의 포인트들을 클래스 네거티브에, 그리고, 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들을 앵커 클래스에 할당하는 단계를 포함할 수 있다. 본 방법은, 디바이스에 의해, 복수의 트리플렛을 생성하는 단계를 포함할 수 있다. 각 트리플렛은 앵커 클래스로부터의 각각의 포인트, 클래스 포지티브로부터의 각각의 포인트, 클래스 네거티브로부터의 각각의 포인트를 포함할 수 있다. 본 방법은, 디바이스에 의해, 복수의 트리플렛의 손실 함수를 계산하는 단계를 포함할 수 있다. 본 방법은, 디바이스에 의해, 손실 함수에 기초하여 이미지 분류기의 파라미터들을 조정하는 단계를 포함할 수 있다.One aspect of the present disclosure relates to a method of training an image classifier. The method may include generating, by a device comprising one or more processors, a plurality of points from respective patches created from images annotated as being either of a first type or a second type. The method may include clustering, by a device using a clustering algorithm, points corresponding to images annotated as being of the second type into two clusters. The method may include identifying, by the device, a first cluster of the two clusters that is closer to points corresponding to images annotated as being of the first type than a second cluster of the two clusters. The method may include assigning, by the device, points in a first cluster to class positive, points in a second cluster to class negative, and points corresponding to images annotated as being of the first type to an anchor class. The method may include generating, by a device, a plurality of triplets. Each triplet may contain each point from the anchor class, each point from the class positive, and each point from the class negative. The method may include calculating, by the device, a loss function of a plurality of triplets. The method may include adjusting, by the device, parameters of the image classifier based on the loss function.

일부 구현예에서, 각 패치는 다차원 공간(multi-dimensional space)의 이미지 데이터로 나타내어질 수 있다. 본 방법은, 이미지 분류기를 사용하여 패치들 각각에 대한 이미지 데이터를 저차원 공간으로 변환함으로써, 디바이스에 의해, 복수의 포인트를 생성하는 단계를 더 포함할 수 있다. 일부 구현예에서, 이미지 분류기는 합성곱 신경망으로서 구현될 수 있다.In some implementations, each patch can be represented by image data in multi-dimensional space. The method may further include generating, by the device, a plurality of points by transforming image data for each of the patches into a low-dimensional space using an image classifier. In some implementations, the image classifier can be implemented as a convolutional neural network.

일부 구현예에서, 각 이미지는 각각의 병리학 슬라이드에 대응할 수 있고, 제1 유형이라는 주석이 달린 이미지들은 양성으로 식별되고, 제2 유형이라는 주석이 달린 이미지들은 종양성으로 식별된다. 일부 다른 구현예에서, 각 이미지는 위성 사진(satellite photograph)에 대응할 수 있다.In some implementations, each image can correspond to a respective pathology slide, images annotated as type 1 identified as benign and images annotated as type 2 identified as neoplastic. In some other implementations, each image may correspond to a satellite photograph.

일부 구현예에서, 본 방법은, 디바이스에 의해, 복수의 이미지에 대응하는 이미지 데이터를 수신하는 단계를 포함할 수 있다. 이미지들의 각각의 패치로부터 복수의 포인트를 생성하는 단계는, 복수의 이미지의 서브 세트에 대해서만 수행될 수 있다. 일부 구현예에서, 복수의 트리플렛의 손실 함수를 계산하는 단계는, 디바이스에 의해, 복수의 트리플렛에 대한 트리플렛 마진 에러(triplet margin error)를 계산하는 단계를 포함할 수 있다.In some implementations, the method can include receiving, by a device, image data corresponding to a plurality of images. Creating a plurality of points from each patch of images may be performed for only a subset of the plurality of images. In some implementations, calculating the loss function of the plurality of triplets can include calculating, by the device, a triplet margin error for the plurality of triplets.

일부 구현예에서, 본 방법은, 디바이스에 의해, 패치들 각각에 대한 불명료도 메트릭(blurriness metric) 또는 광 레벨 메트릭(light level metric) 중 적어도 하나를 결정하는 단계를 더 포함할 수 있다. 본 방법은 또한, 디바이스에 의해, 복수의 포인트를 생성하기 전에, 폐기된 패치들의 서브 세트에서(in the discarded subset of patches) 각 패치에 대한 불명료도 메트릭 또는 광 레벨 메트릭 중 적어도 하나에 기초하여, 패치들의 서브 세트를 폐기하는 단계를 포함할 수 있다. 일부 구현예에서, 본 방법은, 디바이스에 의해, 복수의 포인트를 생성하기 전에, 패치들 중 적어도 하나의 회전(rotation) 또는 색상 정규화(color normalization) 중 적어도 하나를 포함하는 데이터 증강(data augmentation)을 수행하는 단계를 더 포함할 수 있다.In some implementations, the method can further include determining, by the device, at least one of a blurriness metric or a light level metric for each of the patches. The method may also include discarding, by the device, prior to generating the plurality of points, a subset of patches in the discarded subset of patches based on at least one of an obscurity metric or a light level metric for each patch. In some implementations, the method may further include performing, by the device, data augmentation including at least one of rotation or color normalization of at least one of the patches prior to generating the plurality of points.

일부 구현예에서, 2개의 클러스터 중 제2 클러스터보다, 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들에 더 근접한, 2개의 클러스터 중 제1 클러스터를 식별하는 단계는, 디바이스에 의해, 제1 클러스터의 포인트들과 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들 사이의 제1 평균 유클리드 거리(first average Euclidean distance)가 제2 클러스터의 포인트들과 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들 사이의 제2 평균 유클리드 거리(second average Euclidean distance)보다 작다고 결정하는 단계를 더 포함할 수 있다.In some implementations, identifying a first one of the two clusters that is closer than a second cluster to points corresponding to images annotated as being of the first type comprises determining, by the device, a first average Euclidean distance between points in the first cluster and points corresponding to images annotated as being of the first type, a second average Euclidean distance between points in the second cluster and points corresponding to images annotated as being of the first type. (second average Euclidean distance) may be further included.

일부 구현예에서, 본 방법은, 디바이스에 의해, 이미지 분류기의 파라미터들을 조정하는 단계에 후속하여, 비범주화된 입력 이미지를 수신하는 단계를 더 포함할 수 있다. 본 방법은, 디바이스에 의해, 입력 이미지를 복수의 비범주화된 패치로 나누는 단계를 더 포함할 수 있다. 본 방법은, 디바이스에 의해, 이미지 분류기에 기초하여 각각의 비범주화된 패치에 대한 분류를 결정하는 단계를 더 포함할 수 있다.In some implementations, the method may further include receiving, by the device, the uncategorized input image following the adjusting parameters of the image classifier. The method may further include dividing, by the device, the input image into a plurality of uncategorized patches. The method may further include determining, by the device, a classification for each uncategorized patch based on the image classifier.

일부 구현예에서, 본 방법은, 디바이스에 의해, 입력 이미지에 대한 전반적인 분류를 결정하기 위해, 각각의 비범주화된 패치에 대한 분류를 집계하는 단계를 더 포함할 수 있다. 일부 구현예에서, 본 방법은, 디바이스에 의해, 입력 이미지에 대한 패치-단위 분할을 포함하는 출력을 제공하는 단계를 더 포함할 수 있다. 입력 이미지에 대한 패치-단위 분할은, 입력 이미지의 각 패치마다, 패치에 대한 분류 표시를 나타낼 수 있다.In some implementations, the method may further include aggregating, by the device, a classification for each uncategorized patch to determine an overall classification for the input image. In some implementations, the method may further include providing, by the device, an output comprising a patch-by-patch segmentation of the input image. The patch-by-patch segmentation of the input image may indicate a classification mark for the patch for each patch of the input image.

일부 구현예에서, 제1 유형 또는 제2 유형 중 어느 하나라는 주석이 달린 이미지들의 각각의 패치로부터 복수의 포인트를 생성하는 단계는, 복수의 포인트 중 제1 포인트 세트(first set of points)를 식별하는 단계를 더 포함할 수 있다. 클러스터링하는 단계, 제1 클러스터를 식별하는 단계, 포인트들을 할당하는 단계, 복수의 트리플렛을 생성하는 단계, 손실 함수를 계산하는 단계, 및 이미지 분류기의 파라미터들을 조정하는 단계는, 제1 포인트 세트에 기초하여 수행될 수 있다. 본 방법은, 제1 포인트 세트에 기초하여 이미지 분류기의 파라미터들을 조정하는 단계에 응답하여, 클러스터링하는 단계, 제1 클러스터를 식별하는 단계, 포인트들을 할당하는 단계, 복수의 트리플렛을 생성하는 단계, 손실 함수를 계산하는 단계, 및 복수의 포인트 중 제2 포인트 세트를 사용하여 이미지 분류기의 파라미터들을 조정하는 단계를 반복하는 것을 더 포함할 수 있다.In some implementations, generating a plurality of points from each patch of images annotated as being either of the first type or the second type may further include identifying a first set of points of the plurality of points. Clustering, identifying a first cluster, assigning points, generating a plurality of triplets, calculating a loss function, and adjusting parameters of an image classifier may be performed based on the first set of points. The method may further include, in response to adjusting parameters of the image classifier based on the first set of points, repeating clustering, identifying the first cluster, assigning points, generating a plurality of triplets, calculating a loss function, and adjusting parameters of the image classifier using a second set of points of the plurality.

본 개시의 다른 양상은, 이미지 분류용 모델을 훈련시키기 위한 시스템에 관한 것이다. 본 시스템은 하나 이상의 프로세서를 갖는 디바이스를 포함할 수 있다. 본 디바이스는 제1 유형 또는 제2 유형 중 어느 하나라는 주석이 달린 이미지들로부터 생성된 각각의 패치로부터 복수의 포인트를 생성하도록 구성될 수 있다. 본 디바이스는, 클러스터링 알고리즘을 사용하여, 제2 유형이라는 주석이 달린 이미지들에 대응하는 포인트들을 2개의 클러스터로 클러스터링하도록 구성될 수 있다. 본 디바이스는, 2개의 클러스터 중 제2 클러스터보다, 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들에 더 근접한, 2개의 클러스터 중 제1 클러스터를 식별하도록 구성될 수 있다. 본 디바이스는 제1 클러스터의 포인트들을 클래스 포지티브에, 제2 클러스터의 포인트들을 클래스 네거티브에, 그리고 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들을 앵커 클래스에 할당하도록 구성될 수 있다. 본 디바이스는 복수의 트리플렛을 생성하도록 구성될 수 있고, 각 트리플렛은 앵커 클래스로부터의 각각의 포인트, 클래스 포지티브로부터의 각각의 포인트, 및 클래스 네거티브로부터의 각각의 포인트를 포함한다. 본 디바이스는, 복수의 트리플렛의 손실 함수를 계산하도록 구성될 수 있다. 본 디바이스는, 손실 함수에 기초하여 이미지 분류기의 파라미터들을 조정하도록 구성될 수 있다.Another aspect of the present disclosure relates to a system for training a model for image classification. The system may include a device having one or more processors. The device may be configured to generate a plurality of points from each patch created from images annotated as being either of the first type or the second type. The device may be configured to cluster points corresponding to images annotated as being of the second type into two clusters using a clustering algorithm. The device may be configured to identify a first cluster of the two clusters that is closer to points corresponding to images annotated as being of the first type than a second cluster of the two clusters. The device may be configured to assign points of the first cluster to class positive, points of the second cluster to class negative, and points corresponding to images annotated as being of the first type to an anchor class. The device may be configured to generate a plurality of triplets, each triplet including a respective point from an anchor class, a respective point from a class positive, and a respective point from a class negative. The device may be configured to calculate a loss function of a plurality of triplets. The device may be configured to adjust parameters of the image classifier based on the loss function.

일부 구현예에서, 각 패치는 다차원 공간의 이미지 데이터로 나타내어질 수 있다. 본 디바이스는 이미지 분류기를 사용하여 패치들 각각에 대한 이미지 데이터를 저차원 공간으로 변환함으로써 복수의 트리플렛을 생성하도록 더 구성될 수 있다. 일부 구현예에서, 이미지 분류기는 합성곱 신경망으로서 구현될 수 있다.In some implementations, each patch can be represented by image data in a multi-dimensional space. The device may be further configured to generate a plurality of triplets by transforming the image data for each of the patches into a low-dimensional space using an image classifier. In some implementations, the image classifier can be implemented as a convolutional neural network.

일부 구현예에서, 각 이미지는 각각의 병리학 슬라이드에 대응할 수 있다. 제1 유형이라는 주석이 달린 이미지들은 양성으로 식별될 수 있고, 제2 유형이라는 주석이 달린 이미지들은 종양성으로 식별될 수 있다.In some embodiments, each image can correspond to a respective pathology slide. Images annotated as type 1 may be identified as benign, and images annotated as type 2 may be identified as neoplastic.

일부 구현예에서, 본 디바이스는, 복수의 이미지에 대응하는 이미지 데이터를 수신하고, 복수의 이미지의 서브 세트에 대해서만 이미지들의 각각의 패치로부터의 복수의 포인트를 생성하도록 더 구성될 수 있다. 일부 구현예에서, 본 디바이스는 복수의 트리플렛에 대한 트리플렛 마진 에러를 계산함으로써 복수의 포인트의 손실 함수를 계산하도록 더 구성될 수 있다.In some implementations, the device may be further configured to receive image data corresponding to the plurality of images and to generate a plurality of points from each patch of the images only for a subset of the plurality of images. In some implementations, the device may be further configured to calculate a loss function of the plurality of points by calculating a triplet margin error for the plurality of triplets.

본 개시의 다른 양상들은, 본 명세서에 설명된 이미지 분류 시스템을 사용하여 이미지를 분류하기 위한 방법들 및 시스템들에 관한 것이다. 이미지의 분류는 이미지-단위 분류(image-wise classification)일 수 있다. 일부 구현예에서, 이미지의 분류는 패치-단위 분류 또는 분할일 수 있다. 일부 구현예에서, 이미지 분류 시스템은 주어진 이미지(given image)를 수신할 수 있다. 이미지에 주석이 달리지 않을 수 있다(unannotated). 이미지 분류 시스템은, 이미지를 나누거나, 다른 방식으로 이미지로부터 패치들을 도출할(derive) 수 있다. 이미지 분류 시스템은 적어도 패치들의 서브 세트를 더 낮은 임베딩된 포인트들로 변환할 수 있다. 그 후, 이미지 분류 시스템은, 더 낮은 임베딩된 포인트들, 및 훈련된 이미지 분류기를 사용하여 패치들의 서브 세트 각각을 분류할 수 있다. 패치들에 대한 집계식 분류(aggregate classification)가 이미지를 분류하는 데에 사용될 수 있다.Other aspects of the present disclosure relate to methods and systems for classifying images using the image classification system described herein. Classification of images may be image-wise classification. In some implementations, classification of images can be patch-by-patch classification or segmentation. In some implementations, an image classification system can receive a given image. Images may be unannotated. The image classification system may divide the image or otherwise derive patches from the image. The image classification system can transform at least a subset of the patches into lower embedded points. The image classification system can then classify each subset of patches using the lower embedded points and a trained image classifier. Aggregate classification of patches can be used to classify images.

본 개시의 상기한 다른 목적들, 양상들, 특징들 및 이점들은 첨부 도면들과 함께 취해진 다음의 설명을 참조함으로써 더 명백해지고 더 잘 이해될 것이다.
도 1a는 서버 디바이스와 통신하는 클라이언트 디바이스를 포함하는 네트워크 환경의 실시예를 도시하는 블록도이다.
도 1b는 클라우드 서비스 제공자들과 통신하는 클라이언트 디바이스를 포함하는 클라우드 컴퓨팅 환경을 도시하는 블록도이다.
도 1c 및 도 1d는 본 명세서에 설명된 방법들 및 시스템들과 관련되는 유용한 컴퓨팅 디바이스들의 실시예들을 도시하는 블록도들이다.
도 2a는 이미지 분류를 위한 시스템에서의 데이터 흐름을 도시하는 블록도이다.
도 2b는 병리학 슬라이드에 대한 이미지 분류를 위한 시스템에서의 데이터 흐름을 도시하는 블록도이다.
도 3은 이미지 분류 시스템의 구현예의 아키텍처 중 일부를 도시한다.
도 4는 이미지 분류기를 훈련시키는 예시적 방법의 흐름도이다.
도 5는 비범주화된 입력 이미지를 분류하는 예시적 방법의 흐름도이다.
The above and other objects, aspects, features and advantages of the present disclosure will become more apparent and better understood by referring to the following description taken in conjunction with the accompanying drawings.
1A is a block diagram illustrating an embodiment of a network environment including a client device communicating with a server device.
1B is a block diagram illustrating a cloud computing environment including a client device communicating with cloud service providers.
1C and 1D are block diagrams illustrating embodiments of useful computing devices in connection with the methods and systems described herein.
2A is a block diagram illustrating data flow in a system for image classification.
2B is a block diagram illustrating data flow in a system for image classification for pathology slides.
3 shows part of the architecture of an implementation of an image classification system.
4 is a flow diagram of an example method of training an image classifier.
5 is a flow diagram of an exemplary method for classifying uncategorized input images.

아래의 다양한 실시예들의 설명을 판독하기 위해서, 본 명세서의 섹션들 및 그들 각각의 내용에 대한 다음의 설명이 도움이 될 수 있다:To read the description of the various embodiments below, the following description of the sections of this specification and their respective content may be helpful:

섹션 A는 본 명세서에 설명된 실시예들을 실시하는 데에 유용할 수 있는 네트워크 환경 및 컴퓨팅 환경을 설명한다.Section A describes network and computing environments that may be useful in practicing the embodiments described herein.

섹션 B는 이미지들을 분류하기 위한 시스템들 및 방법들의 실시예들을 설명한다.Section B describes embodiments of systems and methods for classifying images.

A. 컴퓨팅 및 네트워크 환경A. Computing and Network Environment

본 해결책의 특정 실시예들에 대해 논의하기 전에, 본 명세서에 설명된 방법들 및 시스템들과 관련하여, 관련 시스템 구성 요소들(예를 들어, 하드웨어 요소들)뿐만 아니라 운영 환경의 양상들을 설명하는 것이 도움이 될 수 있다. 도 1a을 참조하여, 네트워크 환경의 실시예가 도시된다. 간략한 개요에서, 네트워크 환경은, 하나 이상의 서버(106a 내지 106n)(일반적으로 서버(들)(106), 노드(106) 또는 원격 머신(들)(106)로도 지칭됨)과 통신하는 하나 이상의 클라이언트(102a 내지 102n)(일반적으로 로컬 머신(들)(102), 클라이언트(들)(102), 클라이언트 노드(들)(102), 클라이언트 머신(들)(102), 클라이언트 컴퓨터(들)(102), 클라이언트 디바이스(들)(102), 엔드 포인트(들)(102) 또는 엔드 포인트 노드(들)(102)로도 지칭됨)를 포함한다. 일부 구현예에서, 클라이언트(102)는 서버에 의해 제공되는 리소스들에 대한 액세스를 추구하는 클라이언트 노드로서 그리고 다른 클라이언트(102a 내지 102n)에 대한 호스팅된 리소스들에 대한 액세스를 제공하는 서버로서 기능하는 능력을 갖는다.Before discussing specific embodiments of the present solution, it may be helpful to describe aspects of the operating environment, as well as related system components (e.g., hardware elements), in connection with the methods and systems described herein. Referring to Fig. 1A, an embodiment of a network environment is shown. In a brief overview, a network environment includes one or more clients 102a-102n (generally local machine(s) 102, client(s) 102, client node(s) 102, client machine(s) 102 in communication with one or more servers 106a-106n (also commonly referred to as server(s) 106, nodes 106 or remote machine(s) 106), Also referred to as client computer(s) 102, client device(s) 102, endpoint(s) 102 or endpoint node(s) 102). In some implementations, client 102 has the ability to function as a client node seeking access to resources provided by the server and as a server providing access to hosted resources for other clients 102a-102n.

도 1a가 클라이언트(102)들과 서버(106)들 사이의 네트워크(104)를 도시하더라도, 클라이언트(102)들과 서버(106)들은 동일한 네트워크(104) 상에 있을 수 있다. 일부 구현예에서, 클라이언트(102)들과 서버(106)들 사이의 다수의 네트워크(104)가 있다. 이들 실시예 중 하나에서, 네트워크(104')(도시되지 않음)는 비공개 네트워크(private network)일 수 있고, 네트워크(104)는 공개 네트워크(public network)일 수 있다. 이들 실시예 중 다른 하나에서, 네트워크(104)는 비공개 네트워크일 수 있고, 네트워크(104')는 공개 네트워크일 수 있다. 이들 실시예 중 또 다른 하나에서, 네트워크(104 및 104')는 둘 다 비공개 네트워크일 수 있다.Although FIG. 1A depicts a network 104 between clients 102 and servers 106 , clients 102 and servers 106 may be on the same network 104 . In some implementations, there are multiple networks 104 between clients 102 and servers 106 . In either of these embodiments, network 104' (not shown) may be a private network, and network 104 may be a public network. In another of these embodiments, network 104 may be a private network and network 104' may be a public network. In yet another of these embodiments, networks 104 and 104' may both be private networks.

네트워크(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를 사용할 수 있다. 일부 실시예에서, 상이한 유형의 데이터가 상이한 링크 및 표준을 통해 송신될 수 있다. 다른 실시예들에서, 동일한 유형의 데이터가 상이한 링크 및 표준을 통해 송신될 수 있다.Network 104 can be connected via wired links and wireless links. Wired links may include Digital Subscriber Line (DSL), coaxial cable lines or fiber optic lines. Wireless links may include Bluetooth, Wi-Fi, Worldwide Interoperability for Microwave Access (WiMAX), infrared channels or satellite bands. Wireless links may also include any cellular network standard used to communicate between mobile devices including standards qualified as 1G, 2G, 3G or 4G. Network standards may qualify as one or more mobile communication standard generations by meeting specifications or standards, such as those maintained by the International Telecommunication Union (ITU). For example, the 3G standard may correspond to the International Mobile Telecommunications-2000 (IMT-2000) specification, and the 4G standard may correspond to the International Mobile Telecommunications Advanced (IMT-Advanced) specification. Examples of cellular network standards include AMPS, GSM, GPRS, UMTS, LTE, LTE Advanced, Mobile WiMAX and WiMAX-Advanced. Cellular network standards may use various channel access methods, eg FDMA, TDMA, CDMA or SDMA. In some embodiments, different types of data may be transmitted over different links and standards. In other embodiments, the same type of data may be transmitted over different links and standards.

네트워크(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)는 브로드캐스트 네트워크, 통신 네트워크, 데이터 통신 네트워크 또는 컴퓨터 네트워크 유형일 수 있다.Network 104 may be any type and/or type of network. The geographic scope of network 104 can vary widely and network 104 can be a body area network (BAN), a personal area network (PAN), a local-area network (LAN), such as an intranet, a metropolitan area network (MAN), a wide area network (WAN), or the Internet. The topology of network 104 may be of any shape and may include, for example, any of point-to-point, bus, star, ring, mesh, or tree. Network 104 may be an overlay network that is virtual and sits on top of one or more layers of other networks 104'. Network 104 may be any such network topology known to those skilled in the art that may support the operations described herein. Network 104 may utilize a layer or stack of protocols and different techniques, including, for example, an Ethernet protocol, an Internet Protocol Suite (TCP/IP), an Asynchronous Transfer Mode (ATM) technique, a Synchronous Optical Networking (SONET) protocol, or a Synchronous Digital Hierarchy (SDH) protocol. The TCP/IP Internet Protocol Suite may include an application layer, a transport layer, an Internet layer (including, for example, IPv6), or a link layer. Network 104 may be of the type broadcast network, communication network, data communication network, or computer network.

일부 실시예에서, 시스템은 다수의 논리적으로 그룹화된 서버(106)를 포함할 수 있다. 이들 실시예 중 하나에서, 서버들의 논리적 그룹은 서버 팜(server farm)(38)(도시되지 않음) 또는 머신 팜(38)으로 지칭될 수 있다. 이들 실시예들 중 다른 하나에서, 서버(106)들은 지리적으로 분산될 수 있다. 다른 실시예들에서, 머신 팜(38)은 단일 엔티티로서 관리될 수 있다. 또 다른 실시예들에서, 머신 팜(38)은 복수의 머신 팜(38)을 포함한다. 각 머신 팜(38) 내의 서버(106)들은 이종(heterogeneous) - 서버(106)들 또는 머신(106)들 중 하나 이상이 한 유형의 운영 체제 플랫폼(예를 들어, 워싱턴주, 레드몬드의 마이크로소프트사에 의해 제조된 윈도우 NT)에 따라 동작할 수 있고, 반면에 다른 서버(106)들 중 하나 이상이 다른 유형의 운영 체제 플랫폼(예를 들어, Unix, Linux 또는 Mac OS X)에 따라 동작할 수 있음 - 이다.In some embodiments, a system may include multiple logically grouped servers 106. In either of these embodiments, a logical grouping of servers may be referred to as a server farm 38 (not shown) or a machine farm 38 . In other of these embodiments, servers 106 may be geographically dispersed. In other embodiments, machine farm 38 may be managed as a single entity. In yet other embodiments, machine farm 38 includes a plurality of machine farms 38 . The servers 106 within each machine farm 38 are heterogeneous—one or more of the servers 106 or machines 106 may operate in accordance with one type of operating system platform (e.g., Windows NT manufactured by Microsoft Corporation of Redmond, Wash.), while one or more of the other servers 106 may operate in accordance with a different type of operating system platform (e.g., Unix, Linux, or Mac OS X).

일 실시예에서, 머신 팜(38)의 서버(106)들은 관련 저장장치 시스템들과 함께 고밀도 랙 시스템들(high-density rack systems)에 저장될 수 있고, 엔터프라이즈 데이터 센터(enterprise data center)에 위치될 수 있다. 이 실시예에서, 이러한 방식으로 서버(106)들을 통합하는 것은, 국지적인 고성능 네트워크들 상에 서버(106)들 및 고성능 저장장치 시스템들을 위치시킴으로써 시스템 관리성, 데이터 보안성, 시스템의 물리적 보안성, 및 시스템 성능을 향상시킬 수 있다. 서버(106)들 및 저장장치 시스템들을 중앙 집중화하고 그들을 고급 시스템 관리 도구들(advanced system management tools)과 결합함으로써, 서버 리소스들을 더 효율적으로 사용할 수 있다.In one embodiment, servers 106 of machine farm 38 may be stored in high-density rack systems along with associated storage systems and may be located in an enterprise data center. In this embodiment, integrating the servers 106 in this manner may improve system manageability, data security, physical security of the system, and system performance by locating the servers 106 and high-performance storage systems on local high-performance networks. By centralizing servers 106 and storage systems and combining them with advanced system management tools, server resources can be used more efficiently.

각 머신 팜(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를 포함할 수 있다.Servers 106 in each machine farm 38 need not be in physical proximity to other servers 106 within the same machine farm 38 . Accordingly, groups of servers 106 logically grouped into machine farms 38 may be interconnected using wide-area network (WAN) connections or metropolitan-area network (MAN) connections. For example, machine farm 38 may include servers 106 physically located in different continents or continents, countries, states, cities, campuses, or different areas of a room. When the servers 106 are connected using a local area network (LAN) connection or some form of direct connection, data transmission rates between the servers 106 within the machine farm 38 may be increased. Additionally, heterogeneous machine farm 38 may include one or more servers 106 operating according to a type of operating system, while one or more other servers 106 run one or more types of hypervisors rather than operating systems. In these embodiments, hypervisors are used to emulate virtual hardware, separate physical hardware, virtualize physical hardware, and run virtual machines that provide access to a computing environment, allowing multiple operating systems to run concurrently on a host computer. Native hypervisors can run directly on the host computer. Hypervisors include VMware ESX/ESXi manufactured by VMWare, Inc. of Palo Alto, CA; Xen hypervisor, an open source product whose development is overseen by Citrix Systems; HYPER-V hypervisor provided by Microsoft or other vendors. Hosted hypervisors may run within an operating system on a second software level. Examples of hosted hypervisors may include VMware Workstation and VIRTUALBOX.

머신 팜(38)의 관리는 분권화될(de-centralized) 수 있다. 예를 들어, 하나 이상의 서버(106)는 머신 팜(38)에 대한 하나 이상의 관리 서비스를 지원하기 위한 구성 요소, 서브 시스템 및 모듈들을 포함할 수 있다. 이들 실시예 중 하나에서, 하나 이상의 서버(106)는 장애 조치(failover)를 취하고, 데이터 복제(data replication)를 행하고, 머신 팜(38)의 강인성(robustness)을 증가시키기 위한 기법들을 포함하는, 동적 데이터의 관리를 위한 기능을 제공한다. 각 서버(106)는 영구 저장소(persistent store)와 통신할 수 있고, 일부 실시예에서 동적 저장소(dynamic store)와 통신할 수 있다.Management of machine farm 38 may be de-centralized. For example, one or more servers 106 may include components, subsystems, and modules to support one or more management services for machine farm 38 . In either of these embodiments, one or more servers 106 provide functionality for management of dynamic data, including techniques for failover, data replication, and increasing the robustness of machine farm 38. Each server 106 may communicate with a persistent store, and in some embodiments may communicate with a dynamic store.

서버(106)는 파일 서버, 애플리케이션 서버, 웹 서버, 프록시 서버, 기기(appliance), 네트워크 기기, 게이트웨이, 게이트웨이 서버, 가상화 서버, 배치 서버, SSL VPN 서버, 또는 방화벽일 수 있다. 일 실시예에서, 서버(106)는 원격 머신 또는 노드로 지칭될 수 있다. 다른 실시예에서, 복수의 노드(290)는 임의의 2개의 통신 서버 사이의 경로에 있을 수 있다.Server 106 may be a file server, application server, web server, proxy server, appliance, network appliance, gateway, gateway server, virtualization server, deployment server, SSL VPN server, or firewall. In one embodiment, server 106 may be referred to as a remote machine or node. In another embodiment, a plurality of nodes 290 may be in the path between any two communication servers.

도 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), 서버 팜들 또는 데이터 센터들을 포함할 수 있다.Referring to FIG. 1B , a cloud computing environment is illustrated. The cloud computing environment may provide the client 102 with one or more resources provided by the network environment. A cloud computing environment may include one or more clients 102a - 102n that communicate with the cloud 108 over one or more networks 104 . Clients 102 may include, for example, thick clients, thin clients, and zero clients. Each client may provide at least some functionality even when the connection to the cloud 108 or servers 106 is interrupted. A thin client or zero client may rely on a connection to the cloud 108 or server 106 to provide functionality. The zero client may rely on the cloud 108 or other networks 104 or servers 106 to retrieve operating system data for the client device. Cloud 108 may include back end platforms, such as servers 106, storage, server farms, or data centers.

클라우드(108)는 공개(public), 비공개(private) 또는 하이브리드(hybrid)일 수 있다. 공개 클라우드들은, 클라이언트들의 소유자들 또는 클라이언트(102)들에게는 제3 자들에 의해 유지되는 공개 서버(106)들을 포함할 수 있다. 서버(106)들은 전술한 바와 같이 또는 다른 방식으로 원격 지리적 위치들에 떨어져(off-site) 위치될 수 있다. 공개 클라우드들은 공개 네트워크를 통해 서버(106)들에 연결될 수 있다. 비공개 클라우드들은 클라이언트(102)들 또는 클라이언트들의 소유자들에 의해 물리적으로 유지되는 비공개 서버(106)들을 포함할 수 있다. 비공개 클라우드들은 비공개 네트워크(104)를 통해 서버(106)들에 연결될 수 있다. 하이브리드 클라우드(108)들은, 비공개 네트워크 및 공개 네트워크(104), 및 서버(106)들을 포함할 수 있다.Cloud 108 may be public, private, or hybrid. Public clouds may include public servers 106 maintained by owners of clients or third parties to clients 102 . Servers 106 may be located off-site in remote geographic locations, as described above or otherwise. Public clouds may be connected to servers 106 through a public network. Private clouds may include private servers 106 that are physically maintained by the clients 102 or owners of the clients. Private clouds may be connected to servers 106 via a private network 104 . Hybrid clouds 108 may include private and public networks 104 , and servers 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를 포함할 수 있다.The cloud 108 may also include cloud based delivery, e.g., Software as a Service (SaaS) 110, Platform as a Service (PaaS) 112, and Infrastructure as a Service (IaaS) 114. IaaS may refer to a user who leases the use of infrastructure resources required for a specified period of time. IaaS providers provide storage, networking, servers or virtualization resources from a large pool, allowing users to scale quickly by accessing more resources as needed. Examples of IaaS include AMAZON WEB SERVICES provided by Amazon.com, Inc. of Seattle, WA, RACKSPACE CLOUD provided by Rackspace US, Inc. of San Antonio, TX, Google Compute Engine provided by Google, Inc. of Mountain View, CA, or RIGHTSCALE provided by RightScale, Inc. of Santa Barbara, CA. PaaS providers may provide functionality provided by IaaS - including, for example, storage, networking, servers or virtualization - as well as additional resources, such as, for example, an operating system, middleware or runtime resources. Examples of PaaS include WINDOWS AZURE provided by Microsoft Corporation of Redmond, WA, Google App Engine provided by Google Corporation, and HEROKU provided by Heroku Corporation of San Francisco, CA. SaaS providers may offer resources provided by PaaS, including storage, networking, servers, virtualization, operating system, middleware or runtime resources. In some embodiments, SaaS providers may offer additional resources, including, for example, data and application resources. Examples of SaaS include GOOGLE APPS provided by Google Inc., SALESFORCE provided by Salesforce.com Inc. of San Francisco, CA, or Office 365 provided by Microsoft Inc. Examples of SaaS may also include, for example, DROPBOX provided by Dropbox, Inc. of San Francisco, California, Microsoft SKYDRIVE, provided by Microsoft, Google Drive, provided by Google, or Apple ICLOUD, provided by Apple, Inc. of Cupertino, Calif.

클라이언트(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 리소스들에 액세스할 수 있다.Clients 102 may access IaaS resources using one or more IaaS standards, including, for example, Amazon Elastic Compute Cloud (EC2), Open Cloud Computing Interface (OCCI), Cloud Infrastructure Management Interface (CIMI), or OpenStack standards. Some IaaS standards allow clients to access resources over HTTP, and may use Representational State Transfer (REST) protocol or Simple Object Access Protocol (SOAP). Clients 102 may access PaaS resources using different PaaS interfaces. Some PaaS interfaces use HTTP packages, standard Java APIs, JavaMail APIs, Java Data Objects (JDO), Java Persistence APIs (JPA), Python APIs, web integration APIs for different programming languages, including, for example, Rack for Ruby, WSGI for Python, or PSGI for Perl, or other APIs that can be built on top of REST, HTTP, XML, or other protocols. Clients 102 can access SaaS resources through use of a web-based user interface provided by a web browser (e.g., GOOGLE CHROME, Microsoft INTERNET EXPLORER, or Mozilla Firefox provided by the Mozilla Foundation of Mountain View, Calif.). Clients 102 can also access SaaS resources through a smartphone or tablet application, including, for example, the Salesforce Sales Cloud or Google Drive app. Clients 102 may also access SaaS resources through a client operating system, including, for example, a Windows file system for DROPBOX.

일부 실시예에서, IaaS, PaaS 또는 SaaS 리소스들에 대한 액세스가 인증될 수 있다. 예를 들어, 서버 또는 인증 서버는 보안 인증서들, HTTPS 또는 API 키들을 통해 사용자를 인증할 수 있다. API 키들은, 예를 들어, AES(Advanced Encryption Standard)와 같은 다양한 암호화 표준들을 포함할 수 있다. 데이터 리소스들은 TLS(Transport Layer Security) 또는 SSL(Secure Sockets Layer)을 통해 전송될 수 있다.In some embodiments, access to IaaS, PaaS or SaaS resources may be authenticated. For example, the server or authentication server may authenticate the user via security certificates, HTTPS or API keys. API keys may include various encryption standards, such as, for example, Advanced Encryption Standard (AES). Data resources may be transmitted over Transport Layer Security (TLS) or Secure Sockets Layer (SSL).

클라이언트(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)를 포함할 수 있다.Client 102 and server 106 may be deployed on and/or run on any type and form of computing device, e.g., a computer, network device or appliance capable of communicating over any type and form of network and performing the operations described herein. 1C and 1D show block diagrams of a computing device 100 useful for practicing an embodiment of a client 102 or server 106 . As shown in FIGS. 1C and 1D , each computing device 100 includes a central processing unit 121 and a main memory unit 122 . As shown in FIG. 1C , computing device 100 may include storage device 128, installation device 116, network interface 118, I/O controller 123, display devices 124a-124n, keyboard 126, and pointing device 127, such as a mouse. Storage device 128 may include, without limitation, an operating system, software, and software of image classification system 120 . As shown in FIG. 1D , each computing device 100 may also include additional optional elements, such as memory port 103, bridge 170, one or more input/output devices 130a-130n (generally referred to using reference numeral 130), and cache memory 140 in communication with central processing unit 121.

중앙 처리 유닛(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를 포함한다.Central processing unit 121 is any logic circuit that responds to and processes instructions fetched from main memory unit 122 . In many embodiments, central processing unit 121 is a microprocessor unit, such as: those manufactured by Intel Corporation of Mountain View, Calif.; those manufactured by Motorola, Schaumburg, Illinois; ARM processors and TEGRA System-on-Chip (SoC) manufactured by Nvidia of Santa Clara, Calif.; POWER7 processors manufactured by International Business Machines of White Plains, New York; or those manufactured by Advanced Micro Devices of Sunnyvale, California. Computing device 100 may be based on any of these processors or any other processor capable of operating as described herein. Central processing unit 121 may utilize instruction level parallelism, thread level parallelism, different levels of cache, and multi-core processors. A multi-core processor may include two or more processing units on a single computing component. Examples of multi-core processors include AMD PHENOM IIX2, INTEL CORE i5 and 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일 수 있다.Main memory unit 122 may include one or more memory chips capable of storing data and any storage location of which may be directly accessed by microprocessor 121 . Main memory unit 122 may be volatile and may be faster than storage 128 memory. The main memory unit 122 may be Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), Burst SRAM or SynchBurst SRAM (BSRAM), Fast Page Mode DRAM (FPM DRAM), Enhanced DRAM (EDRAM), Extended Data Output RAM (EDO RAM), BEDO Extended Data Output DRAM (Extended Data Output DRAM), Single Data Rate Synchronous DRAM (SDR SDRAM), DDR SD It may be any variants including Double Data Rate SDRAM (RAM), Direct Rambus DRAM (DRDRAM) or Extreme Data Rate DRAM (XDR DRAM). In some embodiments, main memory 122 or storage 128 is non-volatile; For example, non-volatile read access memory (NVRAM), flash memory non-volatile static RAM (nvSRAM), ferroelectric RAM (FeRAM), magnetoresistive RAM (MRAM), phase-change memory (PRAM), conductive-bridging RAM (CBRAM), silicon-oxide-nitride-oxide-silicon (SONOS), resistive RAM (RRAM), Racetrack , NRAM (Nano-RAM) or Millipede memory. Main memory 122 may be based on any one of the foregoing memory chips or any other available memory chips capable of operating as described herein. In the embodiment shown in FIG. 1C, processor 121 communicates with main memory 122 via system bus 150 (described in more detail below). 1D depicts an embodiment of a computing device 100 in which a processor communicates directly with main memory 122 via memory port 103 . For example, in FIG. 1D, main memory 122 may be a 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)와 통신하는 실시예를 도시한다.1D shows an embodiment in which the main processor 121 communicates directly with the cache memory 140 via a secondary bus (sometimes referred to as a backside bus). In other embodiments, main processor 121 communicates with cache memory 140 using system bus 150 . Cache memory 140 typically has a faster response time than main memory 122 and is typically provided by SRAM, BSRAM or EDRAM. In the embodiment shown in FIG. 1D , processor 121 communicates with various I/O devices 130 via local system bus 150 . Various buses may be used to connect central processing unit 121 to any of I/O devices 130, including a PCI bus, a PCI-X bus, or a PCI-Express bus or NuBus. For embodiments where the I/O device is a video display 124, the processor 121 may use an Advanced Graphics Port (AGP) to communicate with the display 124 or with the I/O controller 123 for the display 124. 1D shows an embodiment of computer 100 in which main processor 121 communicates directly with I/O device 130b or other processor 121' via HYPERTRANSPORT, RAPIDIO, or INFINIBAND communication technologies. 1D also illustrates an embodiment where direct communication with local buses is intermixed: processor 121 communicates with I/O device 130a using a local interconnect bus while communicating directly with I/O device 130b.

매우 다양한 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 프린터를 포함할 수 있다.A wide variety of I/O devices 130a - 130n may exist in computing device 100 . Input devices include keyboard, mouse, track pad, track ball, touch pad, touch mouse, multi-touch touch pad and touch mouse, microphone, multi-array microphone, drawing tablet, camera, single-lens reflex camera (SLR), digital SLR (DSLR), CMOS sensor, accelerometer, infrared optical sensor, pressure sensor, magnetometer sensors, angular rate sensors, depth sensors, and proximity sensors ), ambient light sensors, gyroscopic sensors, or other sensors. Output devices may include video displays, graphic displays, speakers, headphones, inkjet printers, laser printers and 3D printers.

디바이스(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 보이스 검색을 포함하는, 음성 인식 및 입력을 제공한다.Devices 130a to 130n may include a combination of multiple input or output devices, including, for example, a Microsoft KINECT, a Nintendo Wiimote for WII, a Nintendo WII U GAMEPAD, or an Apple IPHONE. Some devices 130a through 130n allow gesture recognition input through a combination of some of the inputs and outputs. Some devices 130a - 130n provide facial recognition that can be utilized as an input for different purposes including authentication and other commands. Some devices 130a - 130n provide voice recognition and input, including, for example, Microsoft KINECT, Apple's SIRI for IPHONE, Google Now or Google Voice Search.

추가 디바이스(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 버스 사이의 브리지일 수 있다.Additional devices 130a-130n have both input and output capabilities, including, for example, haptic feedback devices, touch screen displays, or multi-touch displays. A touch screen, multi-touch display, touch pad, touch mouse or other touch sensing device may use different technologies to sense touch - e.g. capacitive, surface capacitive, projected capacitive touch (PCT), in-cell capacitive, resistive, infrared, waveguide, dispersive signal touch (DST), in-cell optical, surface elastic including surface acoustic wave (SAW), bending wave touch (BWT) or force-based sensing techniques. Some multi-touch devices may allow two or more points of contact with a surface, allowing advanced functionality including, for example, pinch, spread, rotate, scroll, or other gestures. Some touch screen devices, including for example Microsoft PIXELSENSE or Multi-Touch Collaboration Walls, may have a larger surface, such as on a table-top or on a wall, and may interact with other electronic devices. Some I/O devices 130a-130n, display devices 124a-124n, or groups of devices may be augmented reality devices. I/O devices may be controlled by I/O controller 123 as shown in FIG. 1C. The I/O controller may control one or more I/O devices, such as, for example, a keyboard 126 and a pointing device 127 (such as a mouse or optical pen, for example). I/O devices may also provide storage and/or installation media 116 for computing device 100 . In yet other embodiments, computing device 100 may provide a USB connection (not shown) to receive a hand held USB storage device. In further embodiments, I/O device 130 may be a bridge between system bus 150 and an external communication bus, such as a USB bus, SCSI bus, FireWire bus, Ethernet bus, Gigabit Ethernet bus, Fiber Channel bus, or Thunderbolt bus.

일부 실시예에서, 디스플레이 디바이스(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 또는 기타 그래픽 라이브러리들에 대한 하드웨어 지원을 갖거나 이를 통해 제어될 수 있다.In some embodiments, display devices 124a - 124n may be coupled to I/O controller 123 . Display devices include, for example, liquid crystal displays (LCDs), thin film transistor LCDs (TFT-LCDs), blue phase LCDs, electronic paper (e-ink) displays, flexible displays, light emitting diode displays (LEDs), digital light processing (DLP) displays, liquid crystal on silicon (LCOS) displays, organic light-emitting diode (OLED) displays, active matrix organic It may include an active-matrix organic light-emitting diode (AMOLED) display, a liquid crystal laser display, a time-multiplexed optical shutter (TMOS) display, or a 3D display. Examples of 3D displays may use, for example, stereoscopy, polarization filters, active shutters, or autostereoscopic. The display devices 124a to 124n may be Head-mounted Displays (HMDs). In some embodiments, display devices 124a - 124n or corresponding I/O controller 123 may have or be controlled through hardware support for OPENGL or DIRECTX APIs or other graphics libraries.

일부 실시예에서, 컴퓨팅 디바이스(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)를 갖도록 구성될 수 있는 다양한 방식들 및 실시예들을 인식하고 이해할 것이다.In some embodiments, computing device 100 may include or be coupled to multiple display devices 124a - 124n , each of which may be the same or of a different type and/or form. As such, any of the I/O devices 130a-130n and/or I/O controller 123 may include any type and/or form of suitable hardware, software, or a combination of hardware and software to support, enable, or provide for the connection and use of multiple display devices 124a-124n by computing device 100. For example, computing device 100 may include any type and/or form of video adapter, video card, driver, and/or library to interface with, communicate with, connect to, or otherwise use display devices 124a-124n. In one embodiment, a video adapter may include multiple connections for interfacing to multiple display devices 124a-124n. In other embodiments, computing device 100 may include multiple video adapters, each video adapter coupled to one or more of display devices 124a-124n. In some embodiments, any portion of the operating system of computing device 100 may be configured to use multiple displays 124a-124n. In another embodiment, one or more of display devices 124a - 124n may be provided by one or more other computing devices 100a or 100b coupled to computing device 100 over network 104 . In some embodiments, software may be designed and configured to use another computer's display device as a secondary display device 124a for computing device 100 . For example, in one embodiment, an Apple iPad can be connected to computing device 100 and use the display of device 100 as an additional display screen that can be used as an extended desktop. Those skilled in the art will recognize and understand the various ways and embodiments in which computing device 100 can be configured to have multiple display devices 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)로부터 실행될 수 있다.Referring back to FIG. 1C , computing device 100 may include storage device 128 (e.g., one or more hard disk drives or redundant arrays of independent disks) for storing an operating system or other related software and for storing application software programs, such as any program related to image classification system software 120. Examples of storage device 128 include, for example, a hard disk drive (HDD); an optical drive including a CD drive, DVD drive or Blu-ray drive; solid-state drives (SSDs); USB flash drive; or any other device suitable for storing data. Some storage devices may include multiple volatile and non-volatile memories including, for example, solid state hybrid drives combining hard disks and solid state caches. Some storage devices 128 may be non-volatile, mutable, or read-only. Some storage device 128 may be internal and connected to computing device 100 via bus 150 . Some storage devices 128 may be external and may be connected to computing device 100 via I/O device 130 providing an external bus. Some storage device 128 may be coupled to computing device 100 via network interface 118 , for example via network 104 including a remote disk for MACBOOK AIR by Apple. Some client devices 100 may not require a non-volatile storage device 128 and may be thin clients or zero clients 102 . Some storage device 128 may also be used as an installation device 116 and may be suitable for installing software and programs. Additionally, the operating system and software may be run from a bootable medium (eg a bootable CD, eg KNOPPIX, a bootable CD for GNU/Linux available as a GNU/Linux distribution from knoppix.net).

클라이언트 디바이스(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)의 사용자는 애플리케이션 배포 플랫폼을 통해 애플리케이션을 선택, 구매 및/또는 다운로드할 수 있다.The client device 100 may also install software or applications from an application distribution platform. Examples of application distribution platforms include App Store for iOS provided by Apple, Mac App Store provided by Apple, GOOGLE PLAY for Android OS provided by Google, Chrome Webstore for CHROME OS provided by Google, and KINDLE FIRE and Amazon Appstore for Android OS provided by Amazon.com. The application distribution platform may facilitate installation of software on the client device 102 . The application distribution platform may include a repository of applications on a server 106 or cloud 108 that clients 102a - 102n can access over the network 104 . The application distribution platform may include applications developed and provided by various developers. A user of the client device 102 may select, purchase, and/or download applications through the application distribution platform.

또한, 컴퓨팅 디바이스(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)를 통신 가능한 임의의 유형의 네트워크에 인터페이싱하기에 적합하고 본 명세서에 설명된 동작들을 수행할 수 있는 임의의 기타 디바이스를 포함할 수 있다.Computing device 100 also includes a standard telephone line LAN or WAN link (e.g., 802.11, T1, T3, Gigabit Ethernet, InfiniBand), a broadband connection (e.g., ISDN, Frame Relay, ATM, Gigabit Ethernet, Ethernet-over-SONET (EoS), ADSL, VDSL, BPON, GPON, optical fiber including FiOS), a wireless connection, or some combination of any or all of the foregoing. It may include, but is not limited to, a network interface 118 for interfacing to the network 104 via various connections. Connections can be established using a variety of communication protocols (e.g., TCP/IP, Ethernet, ARCNET, SONET, SDH, Fiber Distributed Data Interface (FDDI), IEEE 802.11a/b/g/n/ac CDMA, GSM, WiMax, and direct asynchronous connections). In one embodiment, computing device 100 communicates with other computing devices 100′ through any type and/or form of gateway or tunneling protocol, e.g., Secure Socket Layer (SSL) or Transport Layer Security (TLS), or Citrix Gateway Protocol manufactured by Citrix Systems, Inc. of Fort Lauderdale, Florida. Network interface 118 may include a built-in network adapter, network interface card, PCMCIA network card, EXPRESSCARD network card, card bus network adapter, wireless network adapter, USB network adapter, modem, or any other device suitable for interfacing computing device 100 to any type of network capable of communicating with and capable of performing the operations described herein.

도 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를 포함하는 제로 클라이언트 또는 씬 클라이언트 상에서 사용될 수 있다.A computing device 100 of the kind shown in FIGS. 1B and 1C may operate under the control of an operating system that controls scheduling of tasks and access to system resources. Computing device 100 may be any operating system, such as any of any version of the MICROSOFT WINDOWS operating system, different releases of Unix and Linux operating systems, any version of MAC OS for Macintosh computers, any embedded operating system, any real-time operating system, any open source operating system, any proprietary operating system, any operating system for mobile computing devices, or any other operating system capable of running on a computing device and performing the operations described herein. can run Typical operating systems include, among others, WINDOWS 2000, WINDOWS Server 2012, WINDOWS CE, WINDOWS Phone, WINDOWS XP, WINDOWS VISTA and WINDOWS 7, WINDOWS RT and WINDOWS 8 manufactured by Microsoft Corporation of Redmond, Washington; MAC OS and iOS manufactured by Apple Inc. of Cupertino, Calif.; and a freely available operating system, Linux, eg, the Linux Mint distribution ("distro") or Ubuntu, distributed by Canonical Limited, London, England; or Unix or other Unix-like derivative operating systems; and Android designed by Google of Mountain View, CA. Some operating systems including, for example, CHROME OS by Google can be used on zero clients or thin clients, including, for example, CHROMEBOOKS.

컴퓨터 시스템(100)은 임의의 워크스테이션, 전화, 데스크탑 컴퓨터, 랩탑 또는 노트북 컴퓨터, 넷북, ULTRABOOK, 태블릿, 서버, 핸드헬드 컴퓨터, 휴대 전화, 스마트 폰 또는 다른 휴대용 통신 디바이스, 미디어 재생 디바이스, 게임 시스템, 모바일 컴퓨팅 디바이스, 또는 통신할 수 있는 임의의 기타 유형 및/또는 형태의 컴퓨팅, 통신 또는 미디어 디바이스일 수 있다. 컴퓨터 시스템(100)은 본 명세서에 설명된 동작들을 수행하기에 충분한 프로세서 전력 및 메모리 용량을 갖는다. 일부 실시예에서, 컴퓨팅 디바이스(100)는 디바이스와 일치하는 상이한 프로세서, 운영 체제 및 입력 디바이스를 가질 수 있다. 예를 들어, Samsung GALAXY 스마트 폰은, Google사에 의해 개발된 Android 운영 체제의 제어 하에서 동작한다. GALAXY 스마트 폰은, 터치 인터페이스를 통해 입력을 수신한다.Computer system 100 may be any workstation, phone, desktop computer, laptop or notebook computer, netbook, ultrabook, tablet, server, handheld computer, cell phone, smart phone or other portable communication device, media playback device, game system, mobile computing device, or any other type and/or form of computing, communication, or media device capable of communicating. Computer system 100 has sufficient processor power and memory capacity to perform the operations described herein. In some embodiments, computing device 100 may have different processors, operating systems, and input devices consistent with the device. For example, Samsung GALAXY smart phones operate under the control of the Android operating system developed by Google. The GALAXY smart phone receives input through a touch interface.

일부 실시예에서, 컴퓨팅 디바이스(100)는 게임 시스템이다. 예를 들어, 컴퓨터 시스템(100)은, 일본, 도쿄의 Sony사에 의해 제조된, PLAYSTATION 3, 또는 PSP(PERSONAL PLAYSTATION PORTABLE), 또는 PLAYSTATION VITA 디바이스; 일본, 교토의 Nintendo 사에 의해 제조된 NINTENDO DS, NINTENDO 3DS, NINTENDO WII, 또는 NINTENDO WII U 디바이스; 또는 워싱턴주, 레드몬드의 마이크로소프트사에 의해 제조된 XBOX 360 디바이스를 포함할 수 있다.In some embodiments, computing device 100 is a gaming system. For example, computer system 100 may include a PLAYSTATION 3, or Personal PLAYSTATION PORTABLE (PSP), or PLAYSTATION Vita device, manufactured by Sony Corporation of Tokyo, Japan; a NINTENDO DS, NINTENDO 3DS, NINTENDO WII, or NINTENDO WII U device manufactured by Nintendo of Kyoto, Japan; or the XBOX 360 device manufactured by Microsoft Corporation of Redmond, WA.

일부 실시예에서, 컴퓨팅 디바이스(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) 비디오 파일 포맷을 포함하지만 이에 제한되지 않는 파일 포맷을 지원하는 휴대용 미디어 플레이어 또는 디지털 오디오 플레이어이다.In some embodiments, computing device 100 is a digital audio player, such as the Apple IPOD, IPOD Touch and IPOD NANO families of devices manufactured by Apple Computer of Cupertino, California. Some digital audio players may have other functions, including, for example, any functions made available by applications from game systems or digital application distribution platforms. For example, the IPOD Touch can access the Apple App Store. In some embodiments, computing device 100 is a portable media player or digital audio player that supports file formats, including but not limited to MP3, WAV, M4A/AAC, WMA Protected AAC, AIFF, Audible audiobook, Apple Lossless audio file formats, and .mov, .m4v, and .mp4 MPEG-4 (H.264/MPEG-4 AVC) video file formats.

일부 실시예에서, 컴퓨팅 디바이스(100)는 태블릿, 예를 들어, Apple에 의한 IPAD 계열의 디바이스들; Samsung에 의한 GALAXY TAB 제품군의 디바이스들; 또는 워싱턴주, 시애틀의 Amazon.com사에 의한 KINDLE FIRE이다. 다른 실시예들에서, 컴퓨팅 디바이스(100)는 전자책 판독기, 예를 들어, Amazon.com에 의한 KINDLE 제품군의 디바이스들, 또는 뉴욕주, 뉴욕시의 Barnes & Noble사에 의한 NOOK 제품군의 디바이스들이다.In some embodiments, computing device 100 may include a tablet, eg, the IPAD family of devices by Apple; devices of the GALAXY TAB family by Samsung; or KINDLE FIRE by Amazon.com, Inc. of Seattle, WA. In other embodiments, computing device 100 is an e-book reader, for example, devices in the KINDLE family of devices by Amazon.com, or devices in the NOOK family of devices by Barnes & Noble, Inc., New York City, New York.

일부 실시예에서, 통신 디바이스(102)는 디바이스들의 조합(combination of devices), 예를 들어, 디지털 오디오 플레이어 또는 휴대용 미디어 플레이어와 결합된 스마트 폰을 포함한다. 예를 들어, 이들 실시예 중 하나는 스마트 폰, 예를 들어, Apple사에 의해 제조된 IPHONE 제품군의 스마트 폰들; Samsung사에 의해 제조된 삼성 GALAXY 제품군의 스마트 폰들; 또는 모토로라 DROID 제품군의 스마트 폰들이다. 또 다른 실시예에서, 통신 디바이스(102)는 웹 브라우저 및 마이크로폰 및 스피커 시스템, 예를 들어, 전화 헤드셋을 갖춘 랩탑 또는 데스크탑 컴퓨터이다. 이들 실시예에서, 통신 디바이스(102)는 웹-활성화되어(web-enabled) 전화 통화를 수신하고 개시할 수 있다. 일부 실시예에서, 랩탑 또는 데스크탑 컴퓨터에는 또한, 화상 채팅(video chat) 및 화상 통화(video call)를 가능하게 하는 웹캠(webcam) 또는 다른 화상 포착 디바이스(video capture device)가 장착된다.In some embodiments, communication device 102 comprises a combination of devices, for example a smart phone combined with a digital audio player or portable media player. For example, one of these embodiments includes a smart phone, eg, smart phones of the IPHONE family manufactured by Apple Inc.; Smartphones of the Samsung GALAXY family manufactured by Samsung; Or the smartphones of the Motorola DROID family. In another embodiment, communication device 102 is a laptop or desktop computer equipped with a web browser and a microphone and speaker system, eg, a telephone headset. In these embodiments, communication device 102 is web-enabled and capable of receiving and initiating phone calls. In some embodiments, the laptop or desktop computer is also equipped with a webcam or other video capture device that enables video chat and video calls.

일부 실시예에서, 네트워크(104)에서 하나 이상의 머신(102, 106)의 상태는 일반적으로 네트워크 관리 중 일부로서 모니터링된다. 이들 실시예들 중 하나에서, 머신의 상태는 부하 정보(load information)(예를 들어, 머신 상에서의 프로세스 수, CPU 및 메모리 활용)에 대한, 포트 정보(예를 들어, 이용 가능한 통신 포트의 수 및 포트 주소)에 대한, 또는 세션 상태(예를 들어, 프로세스들의 지속기간 및 유형, 프로세스가 액티브(active)인지 아이들(idle)인지)에 대한 식별을 포함할 수 있다. 이들 실시예들 중 다른 하나에서, 이 정보는 복수의 메트릭에 의해 식별될 수 있고, 복수의 메트릭은 본 명세서에 설명된 본 해결법의 동작들의 임의의 양상뿐만 아니라 부하 분산, 네트워크 트래픽 관리 및 네트워크 장애 복구(network failure recovery)에서의 결정에 적어도 부분적으로 적용될 수 있다. 전술한 운영 환경들 및 구성 요소들의 양상은 본 명세서에 개시된 시스템들 및 방법들과 관련하여 명백해질 것이다.In some embodiments, the health of one or more machines 102, 106 in network 104 is typically monitored as part of network management. In either of these embodiments, the state of the machine may include an identification for load information (e.g., number of processes on the machine, CPU and memory utilization), port information (e.g., number of communication ports available and port address), or session status (e.g., duration and type of processes, whether a process is active or idle). In other of these embodiments, this information may be identified by a plurality of metrics, which may be applied at least in part to decisions in load balancing, network traffic management, and network failure recovery, as well as any aspect of the operations of the present solution described herein. Aspects of the foregoing operating environments and components will be apparent in relation to the systems and methods disclosed herein.

B. 이미지들을 분류하기 위한 시스템들 및 방법들B. Systems and Methods for Classifying Images

이미지 분류기를 훈련시키는 것에 관한 방법들, 시스템들 및 장치가 제공된다. 컴퓨터의 이미지 분류기 모델들은 자동화된 이미지 분류에 필요한 작업과 리소스들을 실질적으로 감소시킬 잠재력을 가진다. 일반적으로, 이미지 분류라는 용어는 비범주화된 입력 이미지(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 유형 중 어느 하나)만 알려져 있는 데이터 세트의 슬라이드들의 경우들을 지칭할 수 있다. 이미지의 임의의 개별 패치의 분류에 관한 정보가 없을 수 있다. 따라서, 본 개시의 기법들은, 이미지의 각 패치의 라벨이 이미지 분류 모델을 훈련시키기 위해 사용되는 완전 지도 학습과 대조된다.Methods, systems and apparatus for training an image classifier are provided. Computer image classifier models have the potential to substantially reduce the work and resources required for automated image classification. In general, the term image classification may include determining whether an uncategorized input image is of a first type or a second type, where the first and second types are known. In some implementations, the systems and methods of this disclosure can receive an uncategorized input image having a complex set of features that can be represented in a multi-dimensional space. For example, an image may have multiple pixels (eg, on the order of 10 6 or greater), and each pixel may have an associated value for each of multiple colors, such as red, green, and blue. The systems and methods described further below can learn a lower-dimensional embedding of input images from a weak map. In some implementations, the images can be divided into multiple patches, and the patches can be automatically partitioned into clusters representing the first type and the second type. This learned embedding makes it possible to solve an overall classification task for an input image by using a simple classifier such as k-nearest neighbors for patches constituting the input image. In general, a weak map may refer to instances of slides in a data set where only the overall slide type (eg, either the first type or the second type) is known. There may be no information about the classification of any individual patch of the image. Thus, the techniques of this disclosure contrast with fully supervised learning, where the label of each patch of an image is used to train an image classification model.

일부 구현예에서, 이미지 분류 모델은 유형(예를 들어, 분류)이 알려져 있는 이미지들의 세트에 기초하여 훈련될 수 있다. 이미지들이 패치들로 나뉘고, 패치들의 라이브러리들이 생성될 수 있다. 예를 들어, 하나의 라이브러리는 제1 유형의 이미지들에 대응하는 패치들을 포함할 수 있고, 제2 라이브러리는 제2 유형의 이미지들에 대응하는 패치들을 포함할 수 있다. 이미지 분류 모델을 훈련시키는 것은 반복적인 훈련 프로세스를 통해 완수될 수 있고, 패치들의 서브 세트가 매 훈련 라운드마다 각 라이브러리로부터 샘플링될 수 있다. 주어진 훈련 라운드에서, 각 패치는, 예를 들어, 합성곱 신경망일 수 있는 이미지 분류 모델을 사용하여 저차원 임베딩 공간의 포인트(point)로 변환될 수 있다.In some implementations, an image classification model can be trained based on a set of images of known type (eg, classification). Images can be divided into patches, and libraries of patches can be created. For example, one library may contain patches corresponding to images of a first type, and a second library may contain patches corresponding to images of a second type. Training the image classification model can be accomplished through an iterative training process, and a subset of patches can be sampled from each library every training round. In a given round of training, each patch can be transformed into a point in a low-dimensional embedding space using an image classification model, which can be, for example, a convolutional neural network.

일부 구현예에서, 하나의 라이브러리로부터 유래되는 포인트들은 클러스터링 알고리즘을 이용하여 2개의 클러스터로 클러스터링될 수 있다. 2개의 클러스터 중에서, 제2 라이브러리로부터 유래되는 포인트들까지 최소 거리를 갖는 클러스터는 클래스 포지티브에 할당되고, 다른 한 클러스터는 클래스 네거티브에 할당될 수 있다. 제2 라이브러리로부터 유래되는 포인트들은 앵커 클래스(anchor class)로서 취급될 수 있다. 앵커, 포지티브 및 네거티브 클래스들로부터의 포인트들이 트리플렛을 생성하도록 샘플링될 수 있고, 각 트리플렛은 하나의 앵커 포인트, 하나의 포지티브 포인트 및 하나의 네거티브 포인트로 구성된다. 그 후, 트리플렛 마진 손실과 같은, 손실 함수(loss function)가 계산될 수 있다. 일부 구현예에서, 경사 하강 최적화는 이미지 분류 모델의 파라미터들을 튜닝하여 손실 함수를 최소화하기 위해 사용될 수 있다. 최종적으로, 이미지 상의 모든 패치들에 대한 예측(예를 들어, 분류)은, 전체 이미지를 제1 유형 또는 제2 유형 중 어느 하나로 분류하기 위해, 집계될 수 있다. 또한, 아래에 더 설명된 시스템들 및 방법들은, 이미지를 제1 유형 또는 제2 유형 중 어느 하나로 분류하는 것을 담당하는 특징들을 경계 짓기 위해(demarcating) 전체 이미지의 패치-단위 분할을 제공할 수 있다.In some implementations, points originating from one library can be clustered into two clusters using a clustering algorithm. Among the two clusters, the cluster having the minimum distance to points derived from the second library may be assigned to class positive, and the other cluster may be assigned to class negative. Points derived from the second library can be treated as an anchor class. Points from the Anchor, Positive and Negative classes can be sampled to create a triplet, each triplet consisting of one anchor point, one positive point and one negative point. A loss function can then be calculated, such as the triplet margin loss. In some implementations, gradient descent optimization can be used to tune parameters of an image classification model to minimize a loss function. Finally, the prediction (eg classification) for all patches on the image can be aggregated to classify the entire image as either the first type or the second type. Further, the systems and methods described further below may provide patch-by-patch segmentation of the entire image to demarcating features responsible for classifying the image as either the first type or the second type.

본 개시에 설명된 기법들은 다양한 유용한 애플리케이션들을 갖는다. 일부 구현예에서, 본 명세서에 설명된 이미지 분류 시스템(image classification system)은 의료 진단(medical diagnosis)용으로 사용될 수 있다. 예를 들어, 각 이미지는 환자로부터 취해진 조직 샘플(tissue sample)을 나타내는 병리학 슬라이드의 이미지일 수 있고, 각 슬라이드는 양성(benign) 또는 종양성(tumorous) 중 어느 하나로 분류될 수 있다. 이들 슬라이드는, 비범주화된 입력 이미지가 양성 또는 종양성 조직(tissue or tumorous tissue)을 나타내는지를 결정할 수 있는 이미지 분류 모델을 훈련시키는 데에 사용될 수 있다. 종양은 종양성으로 분류된 슬라이드의 작은 부분(small portion)만 전형적으로 나타내기 때문에, 심지어 훈련된 인간이라도 이러한 슬라이드들을 정확하게 분류하는 것은 곤란할 수 있다. 본 개시의 시스템들 및 방법들은, 이러한 분류를 자동화하는 것을 도울 수 있고, 또한 종양성으로 분류된 각 슬라이드의 종양성 부분들이 분명하게 경계 지어지도록, 종량성 슬라이드들에 대응하는 이미지들을 분할(segment)할 수도 있다. 일부 다른 구현예에서, 본 개시의 기법들은 다른 유형의 이미지들에 적용될 수 있다. 예를 들어, 본 명세서에 설명된 시스템들 및 방법들은, 예를 들어, 위성 이미지들일 수 있는 한 세트의 훈련 이미지들에 기초하여, 특정 물체 또는 사람이 입력 이미지에 존재하는지를 자동으로 결정하는 데에 사용될 수 있다.The techniques described in this disclosure have a variety of useful applications. In some implementations, the image classification system described herein can be used for medical diagnosis. For example, each image may be an image of a pathology slide representing a tissue sample taken from a patient, and each slide may be classified as either benign or tumorous. These slides can be used to train an image classification model that can determine whether an uncategorized input image represents benign or tumorous tissue. Because tumors typically represent only a small portion of slides classified as neoplastic, it can be difficult for even trained humans to accurately classify these slides. The systems and methods of the present disclosure can help automate this classification, and can also segment images corresponding to tumorous slides such that the tumorous portions of each slide classified as neoplastic are clearly demarcated. In some other implementations, the techniques of this disclosure can be applied to other types of images. For example, the systems and methods described herein can be used to automatically determine whether a particular object or person is present in an input image based on a set of training images, which can be, for example, satellite images.

이제 도 2a를 참조하여, 이미지 분류를 위한 시스템(200)에서의 데이터 흐름을 나타내는 블록도가 도시된다. 시스템(200)은, 다양한 주석이 달린 분류되지 않은 이미지들을 수신하고, 이미지 분류 모델을 훈련시키고, 모델을 사용하여 분류되지 않은 이미지를 분류하고 분할하도록 구성된 이미지 분류 시스템(210)을 포함할 수 있다. 보다 구체적으로, 이미지 분류 시스템(210)은 분류되지 않은 이미지(208)뿐만 아니라 주석이 달린 이미지들(205)을 수신한다. 주석이 달린 이미지들(205)은 분류가 이미 알려져 있는 임의의 이미지들을 포함할 수 있고, 주석이 달린 이미지들(205)의 주석은 그들 이미지의 각각의 분류를 나타낼 수 있다. 일반적 예시에서, 주석은 각각의 주석이 달린 이미지(205)가 제1 유형 또는 제2 유형 중 어느 하나로서 분류됨을 나타낼 수 있지만, 제1 유형 및 제2 유형은 실제로 임의의 수의 특정 분류일 수 있음을 이해해야 한다. 예를 들어, 일부 구현예에서, 주석이 달린 이미지들(205)은 슬라이드가 양성 또는 종양성으로 분류되는지를 나타내기 위해 각각 주석이 달린 병리학 슬라이드들이다. 일부 구현예에서, 이미지 분류 시스템(210)은 (예를 들어, 대략 104 이상의) 다수의 주석이 달린 이미지들(205)을 수신할 수 있다. 예를 들어, 이미지 분류 시스템(210)은 수천개 또는 수백만개의 주석이 달린 이미지들(205)을 수신할 수 있다.Referring now to FIG. 2A , a block diagram illustrating data flow in a system 200 for image classification is shown. System 200 may include an image classification system 210 configured to receive various annotated unclassified images, train an image classification model, and use the model to classify and segment the unclassified images. More specifically, image classification system 210 receives unclassified images 208 as well as annotated images 205 . Annotated images 205 can include any images whose classification is already known, and the annotation of annotated images 205 can indicate their respective classification. In a general example, the annotations may indicate that each annotated image 205 is classified as either a first type or a second type, although it should be understood that the first type and the second type may in fact be any number of specific classifications. For example, in some implementations, annotated images 205 are pathology slides each annotated to indicate whether the slide is classified as benign or neoplastic. In some implementations, image classification system 210 may receive multiple annotated images 205 (eg, approximately 10 4 or more). For example, the image classification system 210 may receive thousands or millions of annotated images 205 .

이미지 분류 시스템(210)은 이미지 분류 모델을 훈련시키기 위해 수신된 한 세트의 주석이 달린 이미지들(205)을 사용할 수 있다. 예를 들어, 이미지 분류 시스템(210)은 이미지가 특정 분류를 갖게 하는 각각의 주석이 달린 이미지(205)의 특징들 또는 특정 특성들을 결정할 수 있고, 해당 정보는 이미지 분류 모델에 통합될 수 있다. 일부 구현예에서, 이미지 분류 모델은 합성곱 신경망과 같은 머신 학습 알고리즘을 사용하여 구현될 수 있다. 이미지 분류 모델이 개발되고 개선된 후에, 이미지 분류 시스템(210)은 이미지 분류 모델을 분류되지 않은 이미지(208)에 적용하여 이미지를 자동으로 분류할 수 있다. 일부 구현예에서, 이미지 분류 시스템(210)은 또한, 분류되지 않은 이미지(208)가 주어진 분류에 할당되게 하는 분류되지 않은 이미지(208)의 특정 부분들을 식별하기 위해, 분류되지 않은 이미지(208)를 분할할 수 있다. 다른 방식으로 말하자면, 이미지 분류 시스템(210)은 분류되지 않은 이미지(208)를 복수의 패치로 나눌 수 있고, 이미지 분류 모델을 사용하여 각 패치의 분류를 더 결정할 수 있다. 패치들의 분류에 기초하여, 이미지 분류 시스템(210)은 이미지에 대한 전반적인 분류를 결정할 수 있고, 이미지를 패치-단위 방식으로 분할하여 이미지 분류 및 분할 정보(220)를 생성할 수 있다. 도 2a의 이미지 분류 시스템(210)의 추가 구현 상세내용은, 도 2b 및 도 3과 관련하여 후술된다.Image classification system 210 may use the received set of annotated images 205 to train an image classification model. For example, the image classification system 210 can determine the characteristics or specific characteristics of each annotated image 205 that give the image a particular classification, and that information can be incorporated into an image classification model. In some implementations, image classification models can be implemented using machine learning algorithms such as convolutional neural networks. After the image classification model is developed and refined, the image classification system 210 may automatically classify the image by applying the image classification model to the unclassified image 208 . In some implementations, the image classification system 210 can also segment the unclassified image 208 to identify specific portions of the unclassified image 208 that cause the unclassified image 208 to be assigned to a given classification. Stated another way, the image classification system 210 can divide the unclassified image 208 into a plurality of patches and use the image classification model to further determine the classification of each patch. Based on the classification of the patches, the image classification system 210 may determine an overall classification for the image and may segment the image in a patch-by-patch manner to generate image classification and segmentation information 220 . Additional implementation details of the image classification system 210 of FIG. 2A are described below with respect to FIGS. 2B and 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개를 포함할 수 있다.Referring now to FIG. 2B , a block diagram illustrating data flow in a system 225 for image classification for pathology slides is shown. System 225 may include the same components as system 200 described herein with respect to FIG. 2A. At system 225 , image classification system 210 may receive annotated images 205 to train an image classification model for pathology. Annotated images 205 may include a benign slide set 230A and a neoplastic slide set 230B. Positive slide set 230A may include images of histology slides labeled as having benign tissue. The neoplastic slide set 230B may include images of histology slides labeled as having neoplastic tissue. Upon receiving the annotated images 205 , the image classification system 210 may select or generate a random sample set 232 of a benign slide set 230A and a neoplastic slide set 230B. Sampling of the set of benign slides 230A and tumor slides 230B may be according to simple random sampling, systematic random sampling and compressed sensing, among others. Random sample set 232 may include k samples from benign slide set 230A and k samples from neoplastic slide set 230B. Set 232 may include 2k, which is the total number of samples between the two sets 230A and 230B.

이미지 분류 시스템(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)에 의존할 수 있다.The image classification system 210 may apply the random sample set 232 to the image classification model 234 . In some implementations (such as the illustrated implementation), image classification model 234 can include a convolutional neural network (CNN) and a norm function (eg, Euclidean norm). A CNN can include one or more layers (e.g., a convolutional layer, a pooling layer, a rectified linear unit layer, and a fully connected layer, among others) and filters in each layer. The CNN's filters may include a multiplicative factor to apply to elements of the input, such as the random sample set 232. By training, the image classification system 210 can adjust or set filters in each layer of the CNN. Applying the set of random samples 232 to the CNN and then to the norm function of the image classification model 234, the image classification system 210 can generate an output in a feature map. The output may include a set of anchor points 236A and a set of unknown points 236B. Anchor value set 236A may correspond to data from either the original benign slide set 230A or the neoplastic slide set 230B. The output may include D x k data points from anchor point set 236A, and another D x k data points from unknown point set 236B. The output may include D x 2k data points between the two sets 236A and 236B. D may depend on the number of layers and filters in the CNN of the image classification model 234.

이미지 분류 모델(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과 관련하여 후술된다.Once the output from image classification model 234 is generated, image classification system 210 may apply a clustering algorithm (eg, k-nearest neighbors clustering) to form triplets 238 . Triplets 238 may include an anchor data point set, a positive data point set, and a negative data point set. A set of anchor data points may be numbered D x k. A set of positive data points can be numbered D x m. A set of negative data points can be numbered D x n. A set of positive and negative data points can be determined from applying a clustering algorithm. Using the triplets 238, the image classification system 210 can calculate a loss function (eg, a triplet loss margin). Based on the value of the loss function, the image classification system 210 can adjust the image classification model 234 (e.g., the CNN's filters) to reduce or minimize the loss function between the positive data point set and the anchor data set, while maximizing the difference between the positive and negative data point sets. The image classification system 210 may iterate the application of the image classification model 234, the clustering algorithm, and the computation of the loss function until it is determined that the image classification model 234 has converged. Once the image classification model 234 is trained, the unlabeled pathology slides can be input into the image classification system 210 to generate image classification and segmentation information 220 . Further implementation details of the image classification system 210 of FIG. 2B are described below with respect to FIG. 3 .

도 3은 도 2a에 도시된 이미지 분류 시스템(210)의 구현예의 아키텍처 중 일부를 도시한다. 전술한 바와 같이, 시스템(210)은 다양한 주석이 달린 분류되지 않은 이미지들을 수신하고, 이미지 분류 모델을 훈련시키고, 모델을 사용하여 분류되지 않은 이미지를 분류하고 분할할 수 있다. 일부 구현예에서, 도 3의 시스템(210)의 구성 요소들은 도 1a 내지 도 1d에 관련하여 전술된 시스템들 및 디바이스들을 포함할 수 있거나 이들을 사용하여 구현될 수 있다. 예를 들어, 이미지 분류 시스템(210) 및 그 구성 요소 중 임의의 것은 도 1c 및 도 1d에 도시된 것들과 유사한 컴퓨팅 디바이스들을 사용하여 구현될 수 있고, CPU(121), 메모리(122), I/O 디바이스(130a 내지 130n), 네트워크 인터페이스(118) 등과 같은 그러한 디바이스들의 특징들 중 임의의 것을 포함할 수 있다.FIG. 3 illustrates part of the architecture of an implementation of the image classification system 210 shown in FIG. 2A. As described above, system 210 may receive various annotated unclassified images, train an image classification model, and use the model to classify and segment the unclassified images. In some implementations, the components of system 210 of FIG. 3 may include or be implemented using the systems and devices described above with respect to FIGS. 1A-1D. For example, image classification system 210 and any of its components may be implemented using computing devices similar to those shown in FIGS.

이미지 분류 시스템(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)를 사용하여 하드웨어에 의해 구현될 수 있다. 일부 구현예에서, 이들 컴포넌트는 하드웨어와 소프트웨어의 조합으로서 구현될 수 있다.The image classification system 210 includes, among other things, a patch generator 305, a low-dimensional embedding engine 310, a clustering engine 315, a class assignment engine 320, a triplet generator 325, a model refinement engine 330, an image classification model 335, a classification request manager 340, and a database 345 storing images 350 and patches 355. Together, the components of image classification system 210 may be configured to implement algorithms and other functionality briefly referred to above with respect to FIG. 2A . In some embodiments, the patch generator 305, the low -dimensional embedding engine 310, the clustering engine 315, the class allocation engine 320, the triple plant generator 325, the model improvement engine 330, the image classification model 335, the classification request manager 340, and the database 345 each As described further, it can be implemented as a software command set, computer code or logic that performs functions of each of these components. In some implementations, these components may instead be implemented by hardware, for example using one or more field programmable gate arrays (FPGAs) and/or one or more application specific integrated circuits (ASICs). In some implementations, these components may be implemented as a combination of hardware and software.

일부 구현예에서, 이미지 분류 시스템(210)은 복수의 이미지를 수신할 수 있다. 수신된 이미지들은 도 2a에 도시된 주석이 달린 이미지들(205)과 같은 주석이 달린 이미지들을 포함할 수 있고, 이들은 각 이미지의 분류에 관한 정보를 포함할 수 있다. 일부 구현예에서, 이미지들은 픽셀 데이터로 나타내어진 전자 이미지들(electronic images)일 수 있다. 각 이미지에 대한 주석은, 예를 들어, 각 이미지에 대한 컴퓨터 파일과 연관된 메타 데이터로서 포함될 수 있다. 이미지 분류 시스템(210)은 또한, 도 2a에 도시된 비범주화된 이미지(208)와 같은, 분류 정보가 요구되는(desired) 하나 이상의 비범주화된 이미지를 수신할 수 있다. 일부 구현예에서, 이미지 분류 시스템(210)은 수신된 이미지들 각각을 이미지들(350)로서 데이터베이스(345)에 저장할 수 있다.In some implementations, image classification system 210 may receive multiple images. Received images may include annotated images, such as annotated images 205 shown in FIG. 2A , which may include information regarding the classification of each image. In some implementations, images can be electronic images represented by pixel data. Annotations for each image may be included, for example, as metadata associated with a computer file for each image. Image classification system 210 may also receive one or more uncategorized images for which classification information is desired, such as uncategorized image 208 shown in FIG. 2A . In some implementations, image classification system 210 may store each of the received images as images 350 in database 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)의 수를 감소시킬 수 있다.The patch generator 305 may divide the plurality of images 350 into a plurality of patches. In general, a patch may refer to a portion of an image. For example, each image 350 may be divided into multiple patches. Each patch can be a specific size and shape (eg, square 50 x 50 pixels). In some implementations, patch generator 305 can divide image 350 into multiple patches according to a grid overlay. For example, patch generator 305 may generate 10,000 patches for image 350 by dividing image 350 having a resolution of 1000 pixels by 1000 pixels into patches each representing an adjacent square portion of the image having a resolution of 10 pixels by 10 pixels. In other implementations, patch generator 305 can create patches in a different way. For example, the patch generator 305 can create patches having rectangular or irregular shapes. In some implementations, the patches may not all be of uniform size, and in some implementations, at least some patches may overlap some of the other patches of the same image 350 . Stated another way, some of the images 350 may be included within one or more patches for that image 350 . In some implementations, patch generator 305 can also provide data augmentation and quality control functionality by further processing the generated patches. For example, patch generator 305 may discard patches that are considered low quality. In some implementations, patch generator 305 may determine a patch as low quality if it is too blurry or too dark to process meaningfully. Accordingly, patch generator 305 can determine an obscurity metric or light level metric for each patch, and discard some of the patches based on the respective obscurity metric and light level metric. In some implementations, patch generator 305 can provide data augmentation by applying one or more image processing techniques to some or all of the patches. For example, the patch generator 305 can apply color normalization to some or all of the patches or spatially rotate some or all of the patches. The patch generator 305 may store the generated patches as patches 355 in the database 345 . In some implementations, patch generator 305 may store a subset of generated patches 355 in database 345 and select them for further processing. In some implementations, patch generator 305 may randomly sample or select a subset of generator patches 355 . For example, the patch generator 305 may calculate the number of indices of the patches 355 to be selected using a pseudo-random number generator. In this way, the number of patches 355 analyzed or processed by the image classification system 210 may be reduced.

저차원 임베딩 엔진(310)은 주석이 달린 이미지들의 패치들로부터 복수의 포인트를 생성할 수 있다. 전술한 바와 같이, 각 이미지는 이미지 데이터 세트로 나타내어질 수 있다. 각 이미지에 대한 이미지 데이터는 비교적 복잡할 수 있다. 예를 들어, 단일 이미지는 수천개 또는 수백만개 픽셀에 대응하는 데이터로 나타내어질 수 있고, 각 픽셀은 적색, 녹색 및 청색과 같은 수개의 색상에 대한 값으로 나타내어질 수 있다. 따라서, 이미지는 다차원 공간에 정의된 포인트로 생각될 수 있고, 여기서 차원은 개별 픽셀 위치, 각 픽셀의 색상 값 등에 대응한다. 저차원 임베딩 엔진(310)은 각 패치에 대한 포인트들을 생성할 수 있다. 일부 구현예에서, 저차원 임베딩 엔진(310)은, 전체 이미지를 나타내는 데에 사용되는 동일한 레벨의 입도로 각 패치를 나타냄으로써 이를 완수할 수 있다. 따라서, 패치는 패치 내의 픽셀 위치 및 패치의 각 픽셀의 색상 값에 대응하는 차원을 갖는 다차원 공간에서의 포인트로 나타내어질 수 있다. 일부 다른 구현예에서, 저차원 임베딩 엔진(310)은, 예를 들어, 패치들에 하나 이상의 이미지 변환 기법을 적용함으로써 각 패치의 차원을 감소시킬 수 있다.The low-dimensional embedding engine 310 may generate a plurality of points from patches of annotated images. As described above, each image may be represented by an image data set. Image data for each image can be relatively complex. For example, a single image may be represented by data corresponding to thousands or millions of pixels, and each pixel may be represented by values for several colors such as red, green, and blue. Thus, an image can be thought of as points defined in a multidimensional space, where dimensions correspond to individual pixel locations, color values of each pixel, and the like. The low-dimensional embedding engine 310 may generate points for each patch. In some implementations, the low-dimensional embedding engine 310 can accomplish this by representing each patch at the same level of granularity used to represent the entire image. Thus, a patch can be represented as a point in a multidimensional space having dimensions corresponding to the pixel location within the patch and the color value of each pixel of the patch. In some other implementations, the low-dimensional embedding engine 310 can reduce the dimensionality of each patch by, for example, applying one or more image transformation techniques to the patches.

패치들이 생성되어 포인트들로서 나타내어진 후에, 이미지 분류 시스템(210)은 이미지 분류 모델(335)을 훈련시키기 위해 사용될 패치들의 제1 서브 세트를 선택할 수 있다. 전술한 바와 같이, 수천개 또는 수백만개의 이미지(350)가 있을 수 있고, 각 이미지는 수십개, 수백개, 수천개, 또는 수백만개의 패치로 나뉠 수 있다. 이미지 분류 모델(335)을 훈련시키기 위해 아래에 설명된 반복 단계들은 계산상(computationally) 집약적일 수 있기 때문에, 각각의 반복에서 이용 가능한 패치들의 서브 세트만 처리하는 것이 더 효율적일 수 있다. 일부 구현예에서, 이미지 분류 시스템(210)은 각각의 반복에 대해 사전 결정된 수의 패치를 선택할 수 있고, 이는 바람직한 반복 횟수에 기초하여 이용 가능한 패치들 중 일부(fraction)로 표현될 수 있다. 일부 구현예에서, 이미지 분류 시스템(210)은 (예를 들어, 단순 랜덤 또는 체계적인 랜덤 샘플링 기법들을 사용하여) 사전 결정된 수의 패치를 임의로 선택할 수 있다. 예를 들어, 반복 훈련 프로세스의 100회 반복이 수행될 경우, 이미지 분류 시스템(210)은, 모든 반복이 수행된 후에 패치들 전부가 사용될 수 있도록, 이용 가능한 총 패치 수의 1%와 동일하도록 각 반복에 대한 패치들의 서브 세트를 선택할 수 있다.After patches are created and represented as points, image classification system 210 may select a first subset of patches to be used to train image classification model 335 . As noted above, there may be thousands or millions of images 350, and each image may be divided into dozens, hundreds, thousands, or millions of patches. Because the iterative steps described below to train the image classification model 335 can be computationally intensive, it may be more efficient to process only a subset of the available patches at each iteration. In some implementations, the image classification system 210 may select a predetermined number of patches for each iteration, which may be represented as a fraction of the available patches based on a desired number of iterations. In some implementations, image classification system 210 may randomly select a predetermined number of patches (eg, using simple random or systematic random sampling techniques). For example, if 100 iterations of the iterative training process are performed, the image classification system 210 may select a subset of patches for each iteration equal to 1% of the total number of patches available, such that all of the patches can be used after all iterations have been performed.

전술한 바와 같이, 각각의 주석이 달린 이미지는 제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 포인트 사이의 거리보다 작다고 결정할 수 있다.As mentioned above, each annotated image can be classified as either a first type or a second type. Among the selected subset of patches, clustering engine 315 may cluster points corresponding to patches of images identified as the second type into two clusters. In some implementations, clustering engine 315 can perform this clustering operation using any type of clustering algorithm (e.g., k-means clustering algorithm, mean-shift clustering algorithm, expectation-maximization algorithm, and hierarchical clustering algorithm). After clustering engine 315 clusters points corresponding to patches of images identified as being of the second type, clustering engine 315 may identify a first of the two clusters that is closer to points in images annotated as being of first type than the second cluster. The proximity of each cluster to points in images annotated as being of type 1 can be measured in a variety of ways. In some implementations, clustering engine 315 may determine a distance (eg, straight line, Euclidean or L p norm) from each cluster to points in images annotated as being of the first type. For example, the clustering engine 315 can determine a first point representing the average of all points in a first cluster, a second point representing the average of all points in a second cluster, and a third point representing the average of all points in images annotated as being of the first type. The clustering engine 315 may determine the distance between the first point and the third point, and the distance between the second point and the third point, and finally, the distance between the first point and the third point is smaller than the distance between the second point and the third point.

클래스 할당 엔진(320)은, 각 포인트가 존재하는 클러스터에 기초하여, 포인트들을 다양한 클래스들에 할당할 수 있다. 예를 들어, 클래스 할당 엔진(320)은 제1 유형이라는 주석이 달린 이미지들의 포인트들을 앵커 클래스에 할당할 수 있다. 클래스 할당 엔진(320)은 또한, 제1 클러스터의 포인트들을, 앵커 클래스의 포인트들(예를 들어, 제1 유형이라는 주석이 달린 이미지들의 포인트들)로의 또는 앵커 클래스의 중심(centroid)으로의 그들의 근접성으로 인해, 클래스 포지티브에 할당할 수 있다. 유사하게, 클래스 할당 엔진(320)은 또한, 제2 클러스터의 포인트들을 클래스 네거티브에 할당할 수 있는데, 그 이유는 그들이 클래스 포지티브의 포인트들보다 (평균적으로) 앵커 클래스의 포인트들로부터 더 멀리 있거나 앵커 클래스의 중심으로부터 더 멀리 있을 것으로 예상되기 때문이다.Class assignment engine 320 may assign points to various classes based on the cluster in which each point resides. For example, the class assignment engine 320 may assign points of images annotated as type 1 to an anchor class. Class assignment engine 320 may also assign points of the first cluster to class positive due to their proximity to points of the anchor class (e.g., points in images annotated as being of type 1) or to the centroid of the anchor class. Similarly, the class assignment engine 320 may also assign points in the second cluster to class negatives because they are (on average) further from points in the anchor class or expected to be farther from the center of the anchor class than points in class positive.

트리플렛 생성기(325)는 다양한 포인트들의 복수의 트리플렛을 생성할 수 있다. 일반적으로, 트리플렛은 3개 포인트의 순서화된 세트로 나타내어질 수 있다. 일부 구현예에서, 트리플렛 생성기(325)는, 각 트리플렛이 앵커 클래스로부터의 포인트, 클래스 포지티브로부터의 포인트, 및 클래스 네거티브로부터의 포인트를 포함하도록, 트리플렛들을 생성할 수 있다. 일부 구현예에서, 트리플렛 생성기(325)는 각 클래스로부터 임의로 샘플링하여 트리플렛들을 생성하도록 구성된다. 각 트리플렛을 생성하기 위해, 트리플렛 생성기(325)는 앵커 클래스로부터 제1 포인트를 임의로 선택하고, 클래스 포지티브로부터 제2 포인트를 임의로 선택하고, 클래스 네거티브로부터 제3 포인트를 임의로 선택할 수 있다. 일부 구현예에서, 각 트리플렛의 포인트들에 대한 임의 선택은 독립적일 수 있다. 결과적으로, 트리플렛 생성기(325)는 적어도 하나의 공통 포인트(common point)를 갖는 2개 이상의 트리플렛을 생성할 수 있다. 예를 들어, 클래스 중 하나로부터의 특정 포인트는 생성된 트리플렛보다 더 많이 나타날 수 있다. 일부 다른 구현예에서, 트리플렛 생성기(325)는 생성된 트리플렛들에 걸쳐 어떤 포인트도 반복되지 않도록 보장하는 방식으로 클래스들로부터 샘플링을 행할 수 있다. 일부 구현예에서, 트리플렛 생성기(325)는 트리플렛들을 생성하기 위해 임의의 적합한 선택 알고리즘을 사용하여 각 클래스로부터 포인트들을 선택하도록 구성된다.The triplet generator 325 may generate a plurality of triplets of various points. In general, a triplet can be represented as an ordered set of three points. In some implementations, triplet generator 325 can generate triplets such that each triplet includes a point from an anchor class, a point from class positive, and a point from class negative. In some implementations, triplet generator 325 is configured to randomly sample from each class to generate triplets. To generate each triplet, the triplet generator 325 can randomly select a first point from the anchor class, randomly select a second point from the class positive, and randomly select a third point from the class negative. In some implementations, the random selection for the points of each triplet can be independent. As a result, the triplet generator 325 can generate two or more triplets having at least one common point. For example, a particular point from one of the classes may appear more than triplets generated. In some other implementations, triplet generator 325 can sample from the classes in a way that ensures that no points are repeated across the generated triplets. In some implementations, triplet generator 325 is configured to select points from each class using any suitable selection algorithm to generate triplets.

모델 개선 엔진(330)은 트리플렛 생성기(325)에 의해 생성된 트리플렛들을 사용하여 손실 함수(때때로, 목적 함수(objective function)로 지칭됨)를 계산할 수 있다. 일부 구현예에서, 손실 함수는, 무엇보다도, 트리플렛 마진 에러, 평균 제곱 에러, 베이지안(Bayesian) 예상 손실 및 이차 손실 함수(quadratic loss function)일 수 있다. 일부 다른 구현예에서, 모델 개선 엔진(330)은 트리플렛들에 기초하여 상이한 유형의 손실 함수를 계산할 수 있다. 일부 구현예에서, 모델 개선 엔진(330)은 손실 기능을 최소화하거나 감소시키는 이미지 분류 모델(335)용의 파라미터들을 선택하도록 더 구성될 수 있다. 예를 들어, 일부 구현예에서, 모델 개선 엔진(330)은 계산된 손실 함수에 대해 경사 하강 최적화를 수행하여 손실 함수를 최소화하거나 감소시킬 수 있는 파라미터 세트(set of parameters)를 결정할 수 있다. 일부 다른 구현예에서, 모델 개선 엔진(330)은 상이한 최적화 기법을 사용하여 손실 함수를 최소화하거나 감소시키기 위한 파라미터들을 선택할 수 있다. 그 후, 모델 개선 엔진(330)은 선택된 파라미터들을 이용하여 이미지 분류 모델(335)을 업데이트할 수 있다.Model improvement engine 330 may use the triplets generated by triplet generator 325 to calculate a loss function (sometimes referred to as an objective function). In some implementations, the loss function can be a triplet margin error, mean squared error, Bayesian expected loss, and quadratic loss function, among others. In some other implementations, model improvement engine 330 may calculate different types of loss functions based on triplets. In some implementations, model improvement engine 330 can be further configured to select parameters for image classification model 335 that minimize or reduce the loss function. For example, in some implementations, model improvement engine 330 can perform gradient descent optimization on the computed loss function to determine a set of parameters that can minimize or reduce the loss function. In some other implementations, model improvement engine 330 may select parameters for minimizing or reducing the loss function using different optimization techniques. Then, the model improvement engine 330 may update the image classification model 335 using the selected parameters.

전술한 바와 같이, 일부 구현예에서, 이미지 분류 모델(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)은, 트리플렛들에 의해 생성된 손실 함수가 이미지 분류 모델의 정확도 레벨을 나타내는 사전 결정된 임계값 미만이 될 때까지, 개선될 수 있다.As noted above, in some implementations, the process of training the image classification model 335 can be repeated and performed on multiple subsets of patches of the annotated images. Image classification models 335 include, among others, artificial neural networks (ANNs), convolutional neural networks (CNNs) (e.g., described in detail herein as image classification model 234), support vector machines (SVMs), regression models (e.g., logistic or linear), Bayesian classifiers, Markov chains, and the like. Thus, in some implementations, image classification system 210 can determine whether all patches have been used to train the model. If unused patches remain, the image classification system 210 may select a new subset of patches, and the clustering engine 315, class assignment engine 320, triplet generator 325, and model refinement engine 330 may repeat the above steps to further refine the image classification model 335. These steps may be repeated using additional subsets of the available patches until all available patches are used to improve the image classification model 335, such that the image classification model 335 is finalized. It should be appreciated that the image classification model 335 may be updated as more and more patches are analyzed and processed. In some implementations, the image classification model 335 may be improved until the loss function generated by the triplets is below a predetermined threshold representing the level of accuracy of the image classification model.

이미지 분류 모델(335)이 완성된 후에(예를 들어, 수렴에 도달한 후에), 비범주화된 입력 이미지가 제1 유형 또는 제2 유형인지를 결정하기 위해, 이미지 분류 모델(335)을 사용하여 비범주화된 입력 이미지를 분류하는 데에, 이미지 분류 시스템(210)이 사용될 수 있다. 일부 구현예에서, 분류 요청 관리자(340)는 입력 이미지를 분류하라는 요청을 수신할 수 있다. 요청은 비범주화된 입력 이미지에 대응하는 이미지 데이터를 포함할 수 있다. 일부 구현예에서, 이미지 분류 모델(335)은 비범주화된 입력 이미지를 다른 이미지들(350)과 함께 데이터베이스(345)에 저장할 수 있다.After the image classification model 335 is complete (e.g., after convergence is reached), the image classification system 210 can be used to classify the uncategorized input image using the image classification model 335 to determine whether the uncategorized input image is of the first type or the second type. In some implementations, classification request manager 340 can receive a request to classify an input image. The request may include image data corresponding to the uncategorized input image. In some implementations, image classification model 335 can store the uncategorized input image along with other images 350 in database 345 .

패치 생성기(305)는, 이미지 분류 모델(335)을 훈련시키는 데에 사용되는 주석이 달린 이미지들에 대해, 전술한 바와 같이 입력 이미지를 복수의 패치로 분할할 수 있다. 예를 들어, 입력 이미지는 다수의 패치로 분할될 수 있고, 각 패치는 직사각형, 정사각형 또는 불규칙한 형상일 수 있다. 패치들 중 일부는 입력 이미지의 다른 패치들 중 일부와 중첩될 수 있다. 일부 구현예에서, 패치 생성기(305)는 또한, 예를 들어, 패치들이 너무 흐릿하거나 너무 어두워서 의미있게 처리되지 않는 경우, 저품질로 간주되는 패치들을 폐기할 수 있다. 패치 생성기(305)는 불명료 검출 기법들(blur detection techniques)을 사용하여 패치가 흐릿한지를 결정할 수 있다. 예를 들어, 패치 생성기(305)는 패치에 대한 라플라시안의 분산(variance of a Laplacian)을 계산할 수 있다. 분산이 임계값보다 크면, 패치 생성기(305)는 패치가 너무 흐릿하다고 결정하고 해당 패치를 폐기할 수 있다. 한편, 분산이 임계값보다 낮으면, 패치 생성기(305)는 패치가 너무 흐릿한 것은 아니라고 결정하고 더 사용하기 위해 패치를 저장할 수 있다. 패치 생성기(305)는 명도를 계산함으로써 패치가 어두운지를 결정할 수 있다. 패치 생성기(305)는 패치 상의 적색, 청색 및 녹색 값의 산술 평균에 기초하여 패치의 명도를 계산할 수 있다. 명도가 임계값보다 크면, 패치 생성기(305)는 패치가 어둡지 않다고 판정하고 더 사용하기 위해 패치를 저장할 수 있다. 반대로, 명도가 임계값보다 낮으면, 패치 생성기(305)는 패치가 너무 어둡다고 결정할 수 있고 패치를 폐기할 수 있다. 패치 생성기(305)는 또한, 하나 이상의 이미지 처리 기법을 입력 이미지의 패치들 중 일부 또는 전부에 적용시킴으로써, 예를 들어, 패치들의 색상을 정규화하거나 입력 이미지의 패치들 중 일부를 회전시킴으로써 입력 이미지를 증강시킬 수 있다.The patch generator 305 may divide the input image into a plurality of patches as described above for the annotated images used to train the image classification model 335 . For example, an input image can be divided into multiple patches, and each patch can be rectangular, square or irregular in shape. Some of the patches may overlap some of the other patches in the input image. In some implementations, patch generator 305 may also discard patches deemed low quality, for example, if the patches are too blurry or too dark to be processed meaningfully. The patch generator 305 may use blur detection techniques to determine if a patch is blurry. For example, patch generator 305 can calculate the variance of a Laplacian for a patch. If the variance is greater than the threshold, the patch generator 305 may decide that the patch is too blurry and discard the patch. On the other hand, if the variance is below the threshold, patch generator 305 may determine that the patch is not too blurry and store the patch for further use. The patch generator 305 can determine if a patch is dark by calculating brightness. Patch generator 305 may calculate the lightness of the patch based on the arithmetic mean of the red, blue and green values on the patch. If the lightness is greater than the threshold, the patch generator 305 may determine that the patch is not dark and store the patch for further use. Conversely, if the brightness is below the threshold, patch generator 305 may determine that the patch is too dark and discard the patch. Patch generator 305 may also enhance the input image by applying one or more image processing techniques to some or all of the patches of the input image, for example, by normalizing the color of the patches or rotating some of the patches of the input image.

분류 요청 관리자(340)는 입력 이미지의 패치들 각각에 대한 분류를 결정할 수 있다. 각 패치에 대한 분류는 전체 이미지 분류와 유사한 방식으로 형식화할 수 있다. 예를 들어, 각 패치는 분류가 알려진 주석이 달린 이미지와 비교하여 그 특징들 또는 특성들의 유사성에 기초하여 제1 유형 또는 제2 유형 중 어느 하나인 것으로 분류될 수 있다. 일부 구현예에서, 분류 요청 관리자(340)는, 이미지 분류 모델(335)을 입력 이미지의 각 패치에 적용하여, 패치에 대한 분류를 결정할 수 있다. 따라서, 이미지 분류 모델(335)을 훈련시키는 데에 사용된 주석이 달린 이미지들에 관한 모든 정보는 입력 이미지의 패치들의 분류를 알리는 데에 사용될 수 있다.The classification request manager 340 may determine a classification for each patch of the input image. The classification for each patch can be formatted in a similar way to the overall image classification. For example, each patch may be classified as being of either a first type or a second type based on similarity of its features or characteristics compared to an annotated image for which the classification is known. In some implementations, classification request manager 340 may apply image classification model 335 to each patch of the input image to determine a classification for the patch. Thus, any information about the annotated images used to train the image classification model 335 can be used to inform the classification of patches of the input image.

다음으로 분류 요청 관리자(340)는, 입력 이미지에 대한 전반적인 분류를 결정하기 위해, 입력 이미지의 각 패치의 분류를 집계할 수 있다. 일부 구현예에서, 이미지 분류 모델(335)과 연관된 기법 또는 파라미터가 각 패치의 분류를 집계하는 데에 사용될 수 있다. 예를 들어, 일부 구현예에서, 분류 요청 관리자(340)는, 적어도 입력 이미지의 패치들의 서브 세트가 k-최근접 이웃들 테스트를 만족시키고 여기서 제2 유형으로 분류된 패치의 이웃들이 또한 제2 유형으로 분류될 것으로 결정되는 경우에만, 입력 이미지가 제2 유형으로 분류되어야 한다고 결정할 수 있다. 그렇지 않으면, 입력 이미지가 제1 유형으로 분류될 수 있다. 따라서, 일부 경우에, 입력 이미지는 제1 유형으로서 개별적으로 분류되는 하나 이상의 패치를 가질 수 있고, 반면에 전체로서의 입력 이미지는 제2 유형으로 분류된다. 유사하게, 일부 예에서, 입력 이미지는 제2 유형으로 개별적으로 분류되는 하나 이상의 패치를 가질 수 있고, 반면에 전체로서의 입력 이미지는 제1 유형으로 분류된다.Next, the classification request manager 340 may aggregate the classification of each patch of the input image to determine an overall classification for the input image. In some implementations, techniques or parameters associated with image classification model 335 may be used to aggregate the classification of each patch. For example, in some implementations, classification request manager 340 can determine that an input image should be classified as the second type only if it is determined that at least a subset of the patches of the input image satisfy the k-nearest neighbors test, where it is determined that the patch's neighbors classified as the second type will also be classified as the second type. Otherwise, the input image may be classified as the first type. Thus, in some cases, an input image may have one or more patches individually classified as a first type, while the input image as a whole is classified as a second type. Similarly, in some examples, an input image may have one or more patches individually classified as a second type, while the input image as a whole is classified as a first type.

분류 요청 관리자(340)는 또한, 입력 이미지의 분류뿐만 아니라 입력 이미지의 패치-단위 분할을 포함하는 출력을 제공할 수 있다. 패치-단위 분할은 제2 유형의 각 패치 및 제1 유형의 각 패치의 위치를 나타내는 임의의 형태의 정보를 포함할 수 있다. 따라서, 관찰자는 입력 이미지의 전반적인 분류를 주로 담당하는 입력 이미지의 부분들을 결정할 수 있다.Classification request manager 340 may also provide output that includes a classification of the input image as well as a patch-by-patch segmentation of the input image. The patch-by-patch division may include any type of information indicating the location of each patch of the second type and each patch of the first type. Thus, the viewer can determine the portions of the input image that are primarily responsible for the overall classification of the input image.

일 특정 예시에서, 주석이 달린 이미지들은 양성 또는 종양성 중 어느 하나로 분류된 병리학 슬라이드일 수 있고, 입력 이미지는 피험자(예를 들어, 환자)를 진단하기 위해 분류가 결정되는 비범주화된 병리학 슬라이드일 수 있다. 전술한 단계들을 사용하여, 이미지 분류 모델(335)은 주석이 달린 입력 이미지들에 포함된 정보에 기초하여 이미지들을 양성 또는 종양성 중 어느 하나로 분류하도록 훈련될 수 있다. 그 후, 분류 요청 관리자(340)는, 이미지 분류 모델(335)을 비범주화된 입력 이미지에 적용하여, 입력 이미지가 양성 조직 또는 종양성 조직을 나타내는지를 결정할 수 있다. 또한, 분류 요청 관리자(340)는 개별적으로 종양성으로 결정된 패치들에 기초하여 종양성인 특정 영역들(예를 들어, 패치들에 대응하는 위치들)을 도시하는 입력 이미지의 패치-단위 분할을 제공할 수 있다.In one particular example, the annotated images may be a pathology slide classified as either benign or neoplastic, and the input image may be a non-categorized pathology slide whose classification is determined to diagnose a subject (eg, patient). Using the steps described above, image classification model 335 can be trained to classify images as either benign or neoplastic based on the information contained in the annotated input images. The classification request manager 340 may then apply the image classification model 335 to the uncategorized input image to determine whether the input image represents benign or neoplastic tissue. Classification request manager 340 may also provide a patch-by-patch segmentation of the input image showing specific regions that are neoplastic (eg, locations corresponding to the patches) based on the individually determined patches to be neoplastic.

도 4는 이미지 분류기를 훈련시키는 예시적 방법(400)에 대한 흐름도이다. 간략한 개요에서, 방법(400)은 제1 유형 또는 제2 유형으로 각각 분류된 복수의 주석이 달린 이미지에 대한 이미지 데이터를 수신하는(405) 단계, 복수의 이미지를 복수의 패치로 분할하는(410) 단계, 주석이 달린 이미지들의 패치들로부터 복수의 포인트를 생성하는(415) 단계, 모델을 훈련시키기 위해 패치들의 새로운 서브 세트를 선택하는(420) 단계, 제2 유형이라는 주석이 달린 이미지들의 포인트들을 클러스터링하는(425) 단계, 제2 클러스터보다 제1 유형이라는 주석이 달린 이미지들의 포인트들에 더 근접한 제1 클러스터를 식별하는(430) 단계, 포인트들을 클래스 포지티브, 클래스 네거티브 및 앵커 클래스에 할당하는(435) 단계, 각각이 각 클래스로부터 포인트들을 포함하는 트리플렛들을 생성하는(440) 단계, 트리플렛들의 손실 함수를 계산하는(445) 단계, 및 손실 함수에 기초하여 이미지 분류기의 파라미터들을 조정하는(450) 단계를 포함한다. 단계 455에서, 모델을 훈련시키기 위해 모든 패치가 선택되었다면, 모델이 완성된다(460). 그렇지 않으면, 방법은 단계 420으로 돌아가고, 모델을 훈련시키기 위해 패치들의 새로운 서브 세트가 선택된다.4 is a flow diagram of an example method 400 of training an image classifier. In a brief overview, the method 400 includes receiving (405) image data for a plurality of annotated images classified as a first type or a second type, respectively, dividing (410) the plurality of images into a plurality of patches, generating (415) a plurality of points from the patches of the annotated images, selecting (420) a new subset of patches to train a model, clustering (425) the points of the annotated images of the second type, identifying (430) a first cluster that is closer to points in the images annotated as being of the first type than the second cluster, assigning (435) the points to class positive, class negative and anchor classes, generating (440) triplets each containing points from each class, computing (445) a loss function of the triplets, and adjusting (450) parameters of the image classifier based on the loss function. In step 455, if all patches have been selected to train the model, the model is complete (460). Otherwise, the method returns to step 420 and a new subset of patches is selected to train the model.

다시 도 4를 참조하여, 더 상세하게, 방법(400)은 제1 유형 또는 제2 유형으로 각각 분류된 복수의 주석이 달린 이미지에 대한 이미지 데이터를 수신하는(405) 단계를 포함한다. 일부 구현예에서, 이는 이미지 분류 시스템(210)과 같은 이미지 분류 시스템에 의해 수행될 수 있다. 일부 구현예에서, 이미지들은 픽셀 데이터로 나타내어진 전자 이미지들(electronic images)일 수 있다. 각 이미지에 대한 주석은, 예를 들어, 각 이미지에 대한 컴퓨터 파일과 연관된 메타 데이터로서 포함될 수 있다. 일부 구현예에서, 이미지 분류 시스템(210)은 수신된 이미지들 각각을 데이터베이스에 저장할 수 있다.Referring again to FIG. 4 and in more detail, the method 400 includes receiving 405 image data for a plurality of annotated images each classified as a first type or a second type. In some implementations, this may be performed by an image classification system, such as image classification system 210 . In some implementations, images can be electronic images represented by pixel data. Annotations for each image may be included, for example, as metadata associated with a computer file for each image. In some implementations, image classification system 210 may store each of the received images in a database.

방법(400)은 또한, 복수의 이미지를 복수의 패치로 분할하는(410) 단계를 포함한다. 일부 구현예에서, 이는 도 3에 도시된 패치 생성기(305)와 같은 패치 생성기에 의해 수행될 수 있다. 일반적으로, 패치는 이미지 중 일부를 지칭할 수 있다. 예를 들어, 각 이미지는 다수의 패치로 나뉠 수 있다. 일부 구현예에서, 패치 생성기는 그리드 오버레이에 따라 이미지를 복수의 패치로 나눌 수 있다. 예를 들어, 패치 생성기는 1000 픽셀 x 1000 픽셀의 해상도를 갖는 이미지를 각각이 10 픽셀 x 10 픽셀의 해상도를 갖는 이미지의 인접한 정사각형 부분을 나타내는 패치들로 나눔으로써, 이미지에 대해 10,000개의 패치를 생성할 수 있다. 다른 구현들에서, 패치 생성기(305)는 상이한 방식으로 패치들을 생성할 수 있다. 예를 들어, 패치 생성기는 직사각형 또는 불규칙한 형상을 갖는 패치들을 생성할 수 있다. 일부 구현예에서, 패치들은 모두 균일한 크기를 갖지 않을 수 있고, 일부 구현예에서, 적어도 일부 패치는 동일한 이미지의 다른 패치들 중 일부와 중첩될 수 있다. 다른 방식으로 말하자면, 이미지(350) 중 일부는 해당 이미지에 대한 하나 이상의 패치 내에 포함될 수 있다.Method 400 also includes segmenting 410 the plurality of images into a plurality of patches. In some implementations, this may be performed by a patch generator such as patch generator 305 shown in FIG. 3 . In general, a patch may refer to a portion of an image. For example, each image can be divided into multiple patches. In some implementations, the patch generator may divide the image into multiple patches according to the grid overlay. For example, a patch generator can create 10,000 patches for an image by dividing an image with a resolution of 1000 pixels by 1000 pixels into patches each representing an adjacent square portion of the image with a resolution of 10 pixels by 10 pixels. In other implementations, patch generator 305 can create patches in a different way. For example, the patch generator can create patches with rectangular or irregular shapes. In some implementations, the patches may not all be of uniform size, and in some implementations, at least some patches may overlap some of the other patches of the same image. Stated another way, some of the images 350 may be included within one or more patches for that image.

일부 구현예에서, 패치 생성기는 또한, 생성된 패치들을 더 처리함으로써 데이터 증강 및 품질 제어 기능을 제공할 수 있다. 예를 들어, 패치 생성기는 저품질로 간주되는 패치들을 폐기할 수 있다. 일부 구현예에서, 패치가 너무 흐릿하거나 너무 어두워서 의미있게 처리되지 않는 경우, 패치 생성기는 해당 패치를 저품질로 결정할 수 있다. 따라서, 패치 생성기는 각 패치에 대한 불명료도 메트릭 또는 광 레벨 메트릭을 결정할 수 있고, 각각의 불명료도 메트릭 및 광 레벨 메트릭에 기초하여 패치들 중 일부를 폐기할 수 있다. 일부 구현예에서, 패치 생성기는 하나 이상의 이미지 처리 기법을 패치들 중 일부 또는 전부에 적용함으로써 데이터 증강을 제공할 수 있다. 예를 들어, 패치 생성기는, 패치들 중 일부 또는 전부에 색상 정규화를 적용하거나, 패치들 중 일부 또는 전부를 공간적으로 회전시킬 수 있다.In some implementations, the patch generator can also provide data augmentation and quality control functionality by further processing the generated patches. For example, a patch generator may discard patches deemed low quality. In some implementations, if a patch is too blurry or too dark to be meaningfully processed, the patch generator may determine that the patch is low quality. Thus, the patch generator can determine an obscurity metric or light level metric for each patch, and discard some of the patches based on the respective obscurity metric and light level metric. In some implementations, the patch generator can provide data augmentation by applying one or more image processing techniques to some or all of the patches. For example, the patch generator can apply color normalization to some or all of the patches or spatially rotate some or all of the patches.

방법(400)은 또한, 주석이 달린 이미지들의 패치들로부터 복수의 포인트를 생성하는(415) 단계를 포함한다. 일부 구현예에서, 이는 도 3에 도시된 저차원 임베딩 엔진(310)과 같은 저차원 임베딩 엔진에 의해 수행될 수 있다. 전술한 바와 같이, 각 이미지는 이미지 데이터 세트로 나타내어질 수 있다. 예를 들어, 각 이미지에 대한 이미지 데이터는 수천개 또는 수백만개 픽셀에 대응하는 복소수 데이터(complex data)로 나타내어질 수 있고, 각 픽셀은 적색, 녹색 및 청색과 같은 수개의 색상에 대한 값으로 나타내어질 수 있다. 따라서, 이미지는 다차원 공간에 정의된 포인트로 나타내어질 수 있고, 여기서 차원은 개별 픽셀 위치, 각 픽셀에 대한 색상 값 등에 대응한다. 저차원 임베딩 엔진은 각 패치에 대한 포인트들을 생성할 수 있다. 일부 구현예에서, 저차원 임베딩 엔진은 전체 이미지를 표현하는 데에 사용되는 동일한 레벨의 입도로 각 패치를 표현함으로써 이를 완수할 수 있다. 따라서, 패치는 패치 내의 픽셀 위치 및 패치의 각 픽셀의 색상 값에 대응하는 차원을 갖는 다차원 공간에서의 포인트로 나타내어질 수 있다. 일부 다른 구현예에서, 저차원 임베딩 엔진은, 예를 들어, 패치들에 하나 이상의 이미지 변환 기법을 적용함으로써, 각 패치의 차원을 감소시킬 수 있다.The method 400 also includes generating 415 a plurality of points from the patches of the annotated images. In some implementations, this may be performed by a low-dimensional embedding engine, such as low-dimensional embedding engine 310 shown in FIG. 3 . As described above, each image may be represented by an image data set. For example, image data for each image may be represented by complex data corresponding to thousands or millions of pixels, and each pixel may be represented by a value for several colors such as red, green, and blue. Thus, an image can be represented by points defined in a multidimensional space, where dimensions correspond to individual pixel locations, color values for each pixel, and the like. A low-dimensional embedding engine can generate points for each patch. In some implementations, the low-dimensional embedding engine can accomplish this by representing each patch at the same level of granularity used to represent the entire image. Thus, a patch can be represented as a point in a multidimensional space having dimensions corresponding to the pixel location within the patch and the color value of each pixel of the patch. In some other implementations, the low-dimensional embedding engine can reduce the dimensionality of each patch, for example by applying one or more image transformation techniques to the patches.

방법(400)은 또한, 모델을 훈련시키기 위한 패치들의 새로운 서브 세트를 선택하는(420) 단계를 포함한다. 이미지 분류 시스템은 모델을 훈련시키는 데에 사용될 패치들의 새로운 서브 세트를 선택할 수 있고, 이는 도 3에 도시된 이미지 분류 모델 이미지 분류 모델(335)에 대응할 수 있다. 전술한 바와 같이, 수천개 또는 수백만개의 이미지가 있을 수 있고, 각 이미지는 수십개, 수백개, 수천개 또는 수백만의 패치로 나뉠 수 있다. 이미지 분류 모델을 훈련시키기 위해 아래에 설명된 반복 단계들은, 계산상 집약적일 수 있기 때문에, 각각의 반복에서 이용 가능한 패치들의 서브 세트만을 처리하는 것이 더 효율적일 수 있다. 일부 구현예에서, 이미지 분류 시스템은 각각의 반복에 대해 사전 결정된 수의 패치를 선택할 수 있고, 이는 바람직한 반복 횟수에 기초하여 이용 가능한 패치들 중 일부로 표현될 수 있다.The method 400 also includes selecting 420 a new subset of patches for training the model. The image classification system may select a new subset of patches to be used to train the model, which may correspond to the image classification model image classification model 335 shown in FIG. 3 . As mentioned above, there may be thousands or millions of images, and each image may be divided into tens, hundreds, thousands or millions of patches. Because the iterative steps described below to train an image classification model can be computationally intensive, it may be more efficient to process only a subset of the available patches at each iteration. In some implementations, the image classification system can select a predetermined number of patches for each iteration, which can be represented as a fraction of the available patches based on the desired number of iterations.

방법(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 포인트 사이의 거리보다 작다고 결정할 수 있다.The method 400 also includes clustering 425 points derived from the images annotated as being of the second type. In some implementations, this may be performed by a clustering engine, such as clustering engine 315 shown in FIG. 3 . The clustering engine can perform this clustering operation using any type of clustering algorithm. After the clustering engine clusters points corresponding to patches of images identified as the second type, the clustering engine may identify a first of the two clusters that is closer to points in the images annotated as being of the first type than the second cluster (430). The proximity of each cluster to points in images annotated as being of type 1 can be measured in a variety of ways. In some implementations, the clustering engine can determine a Euclidean distance from each cluster to points in the images annotated as being of the first type. For example, the clustering engine may determine a first point representing the average of all points in a first cluster, a second point representing the average of all points in a second cluster, and a third point representing the average of all points in images annotated as being of the first type. Then, the clustering engine determines the Euclidean distance between the first point and the third point and the Euclidean distance between the second point and the third point, and determines that the distance between the first point and the third point is smaller than the distance between the second point and the third point.

방법(400)은 또한, 포인트들을 클래스 포지티브, 클래스 네거티브 및 앵커 클래스에 할당하는(435) 단계를 포함한다. 일부 구현예에서, 이는 도 3에 도시된 클래스 할당 엔진(320)과 같은 클래스 할당 엔진에 의해 수행될 수 있다. 클래스 할당 엔진은, 각 포인트가 존재하는 클러스터에 기초하여, 포인트들을 다양한 클래스들에 할당할 수 있다. 예를 들어, 클래스 할당 엔진은 제1 유형이라는 주석이 달린 이미지들의 포인트들을 앵커 클래스에 할당할 수 있다. 클래스 할당 엔진은 또한, 앵커 클래스의 포인트들(예를 들어, 제1 유형이라는 주석이 달린 이미지들의 포인트들)로의 근접성으로 인해, 제1 클러스터의 포인트들을 클래스 포지티브에 할당할 수 있다. 유사하게, 클래스 할당 엔진은 제2 클러스터의 포인트들을 클래스 네거티브에 할당할 수 있는데, 그 이유는 그들이 클래스 포지티브의 포인트들보다 (평균적으로) 앵커 클래스의 포인트들로부터 더 멀리 있을 것으로 예상되기 때문이다.The method 400 also includes assigning 435 the points to class positive, class negative, and anchor classes. In some implementations, this may be performed by a class assignment engine, such as class assignment engine 320 shown in FIG. 3 . The class assignment engine can assign points to various classes based on the cluster in which each point resides. For example, the class assignment engine may assign points of images annotated as being of type 1 to an anchor class. The class assignment engine may also assign points of the first cluster to class positive due to proximity to points of the anchor class (eg, points in images annotated as being of first type). Similarly, the class assignment engine can assign points in the second cluster to class negative because they are expected to be (on average) farther from points in the anchor class than points in class positive.

방법(400)은 또한, 각각이 각 클래스로부터 포인트들을 포함하는, 트리플렛들을 생성하는(440) 단계를 포함한다. 일부 구현예에서, 이 단계는 도 3에 도시된 트리플렛 생성기(325)와 같은 트리플렛 생성기에 의해 수행될 수 있다. 일반적으로, 트리플렛은 3개 포인트의 순서화된 세트로 표현될 수 있다. 일부 구현예에서, 트리플렛 생성기는, 각 트리플렛이 앵커 클래스로부터의 포인트, 클래스 포지티브로부터의 포인트, 및 클래스 네거티브로부터의 포인트를 포함하도록, 트리플렛들을 생성할 수 있다. 일부 구현예에서, 트리플렛 생성기는 각 클래스로부터 임의로 샘플링하여 트리플렛들을 생성하도록 구성된다. 즉, 각 트리플렛을 생성하기 위해, 트리플렛 생성기는 앵커 클래스로부터 제1 포인트를 임의로 선택하고, 클래스 포지티브로부터 제2 포인트를 임의로 선택하고, 클래스 네거티브로부터 제3 포인트를 임의로 선택할 수 있다. 일부 구현예에서, 각 트리플렛의 포인트들에 대한 임의 선택은 독립적일 수 있다. 결과적으로, 트리플렛 생성기는 적어도 하나의 공통 포인트를 갖는 2개 이상의 트리플렛을 생성할 수 있다. 예를 들어, 클래스 중 하나로부터의 특정 포인트는 생성된 트리플렛보다 더 많이 나타날 수 있다. 일부 다른 구현예에서, 트리플렛 생성기는 생성된 트리플렛들에 걸쳐 어떤 포인트도 반복되지 않도록 보장하는 방식으로 클래스들로부터 샘플링을 행할 수 있다.Method 400 also includes generating 440 triplets, each containing points from each class. In some implementations, this step can be performed by a triplet generator, such as triplet generator 325 shown in FIG. 3 . In general, a triplet can be represented as an ordered set of three points. In some implementations, the triplet generator can generate triplets such that each triplet contains a point from an anchor class, a point from class positive, and a point from class negative. In some implementations, the triplet generator is configured to randomly sample from each class to generate triplets. That is, to generate each triplet, the triplet generator can randomly select a first point from the anchor class, a second point from the class positive, and a third point from the class negative. In some implementations, the random selection for the points of each triplet can be independent. As a result, the triplet generator can generate two or more triplets that have at least one point in common. For example, a particular point from one of the classes may appear more than triplets generated. In some other implementations, the triplet generator can sample from the classes in a way that ensures that no points are repeated across the generated triplets.

방법(400)은 또한, 트리플렛들의 손실 함수를 계산하는(445) 단계를 포함한다. 일부 구현예에서, 이는 도 3에 도시된 모델 개선 엔진(330)과 같은 모델 개선 엔진에 의해 수행될 수 있다. 일부 구현예에서, 손실 함수는 트리플렛 마진 에러일 수 있다. 일부 다른 구현예에서, 모델 개선 엔진은 트리플렛들에 기초하여 상이한 유형의 손실 함수를 계산할 수 있다. 일부 구현예에서, 모델 개선 엔진은 손실 함수를 최소화하거나 감소시키는 이미지 분류 모델용의 파라미터들을 선택하도록 더 구성될 수 있다. 예를 들어, 일부 구현예에서, 모델 개선 엔진은, 손실 함수를 최소화하거나 감소시킬 수 있는 파라미터 세트를 결정하기 위해, 계산된 손실 함수에 대해 경사 하강 최적화를 수행할 수 있다. 일부 다른 구현예에서, 모델 개선 엔진은 상이한 최적화 기법을 사용하여 손실 함수를 최소화하거나 감소시키기 위한 파라미터들을 선택할 수 있다. 그 후, 모델 개선 엔진은 손실 함수에 기초하여 선택된 파라미터들을 이용하여 이미지 분류 모델의 파라미터들을 조정함으로써 이미지 분류 모델을 업데이트할(450) 수 있다.The method 400 also includes calculating 445 the loss function of the triplets. In some implementations, this may be performed by a model refinement engine, such as model refinement engine 330 shown in FIG. 3 . In some implementations, the loss function can be a triplet margin error. In some other implementations, the model improvement engine may compute different types of loss functions based on triplets. In some implementations, the model improvement engine can be further configured to select parameters for the image classification model that minimize or reduce the loss function. For example, in some implementations, the model improvement engine can perform gradient descent optimization on the computed loss function to determine a set of parameters that can minimize or reduce the loss function. In some other implementations, the model improvement engine may select parameters for minimizing or reducing the loss function using different optimization techniques. The model improvement engine may then update 450 the image classification model by adjusting parameters of the image classification model using the selected parameters based on the loss function.

단계 455에서, 모델을 훈련시키기 위해 모든 패치가 선택되었다면, 모델이 완성된다(460). 그렇지 않으면, 방법(400)은 단계 420으로 돌아가고 모델을 훈련시키기 위해 패치들의 새로운 서브 세트가 선택된다. 따라서, 단계 420, 425, 430, 435, 440, 445, 450 및 455는, 모든 패치들이 이미지 분류 모델을 훈련시키는 데에 사용되고 모델이 완성될 때까지, 반복된다. In step 455, if all patches have been selected to train the model, the model is complete (460). Otherwise, the method 400 returns to step 420 and a new subset of patches is selected to train the model. Accordingly, steps 420, 425, 430, 435, 440, 445, 450 and 455 are repeated until all patches have been used to train the image classification model and the model is complete.

도 5는 비범주화된 입력 이미지를 분류하는 예시적 방법(500)에 대한 흐름도이다. 간략한 개요에서, 방법(500)은 비범주화된 입력 이미지에 대응하는 이미지 데이터를 수신하는 단계(505), 입력 이미지를 복수의 비범주화된 패치로 나누는 단계(510), 각각의 비범주화된 패치에 대한 분류를 결정하는 단계(515), 입력 이미지에 대한 전반적인 분류를 결정하기 위해 각 패치의 분류를 집계하는 단계(520), 및 입력 이미지의 패치-단위 분할을 포함하는 출력을 제공하는 단계(525)를 포함한다.5 is a flow diagram of an exemplary method 500 for classifying uncategorized input images. In brief overview, method 500 includes receiving image data corresponding to an uncategorized input image (505), dividing the input image into a plurality of uncategorized patches (510), determining a classification for each uncategorized patch (515), aggregating the classification of each patch to determine an overall classification for the input image (520), and providing an output comprising a patch-by-patch division of the input image (525).

다시 도 5를 참조하여, 더 상세하게, 방법(500)은 비범주화된 입력 이미지에 대응하는 이미지 데이터를 수신하는 단계(505)를 포함한다. 일부 구현예에서, 이는 도 3에 도시된 분류 요청 관리자(340)와 같은 분류 요청 관리자에 의해 수행될 수 있다. 방법(500)은 또한, 입력 이미지를 복수의 비범주화된 패치로 나누는 단계(510)를 포함한다. 예를 들어, 입력 이미지는 다수의 패치로 분할될 수 있고, 각 패치는 직사각형, 정사각형 또는 불규칙한 형상일 수 있다. 패치들은 도 3에 도시된 패치 생성기(305)와 같은 패치 생성기에 의해 생성될 수 있다. 패치들 중 일부는 입력 이미지의 다른 패치들 중 일부와 중첩될 수 있다. 일부 구현예에서, 패치 생성기는 또한, 예를 들어, 패치들이 너무 흐릿하거나 너무 어두워서 의미있게 처리될 수 없는 경우, 저품질로 간주되는 패치들을 폐기할 수 있다. 패치 생성기는 또한, 하나 이상의 이미지 처리 기법을 입력 이미지의 패치들 중 일부 또는 전부에 적용함으로써, 예를 들어, 패치들의 색상을 정규화하거나 입력 이미지의 패치들 중 일부를 회전시킴으로써 입력 이미지를 증강시킬 수 있다.Referring again to FIG. 5 and in more detail, the method 500 includes receiving 505 image data corresponding to the uncategorized input image. In some implementations, this may be performed by a classification request manager, such as classification request manager 340 shown in FIG. 3 . The method 500 also includes a step 510 of dividing the input image into a plurality of uncategorized patches. For example, an input image can be divided into multiple patches, and each patch can be rectangular, square or irregular in shape. Patches may be created by a patch generator such as patch generator 305 shown in FIG. 3 . Some of the patches may overlap some of the other patches of the input image. In some implementations, the patch generator may also discard patches deemed low quality, for example, if the patches are too blurry or too dark to be processed meaningfully. The patch generator may also augment the input image by applying one or more image processing techniques to some or all of the patches of the input image, such as normalizing the color of the patches or rotating some of the patches of the input image.

방법(500)은 각각의 비범주화된 패치에 대한 분류를 결정하는 단계(515)를 포함한다. 각 패치에 대한 분류는 전체 이미지 분류와 유사한 방식으로 형식화할 수 있다. 예를 들어, 각 패치는 분류가 알려진 주석이 달린 이미지들과 비교하여 그 특징들 또는 특성들의 유사성에 기초하여 제1 유형 또는 제2 유형 중 어느 하나인 것으로 분류될 수 있다. 일부 구현예에서, 분류 요청 관리자는, 이미지 분류 모델을 입력 이미지의 각 패치에 적용하여, 패치에 대한 분류를 결정할 수 있다. 따라서, 이미지 분류 모델을 훈련시키는 데에 사용된 주석이 달린 이미지들에 관한 모든 정보는, 입력 이미지의 패치들에 대한 분류를 알리는 데에 사용될 수 있다.Method 500 includes a step 515 of determining a classification for each uncategorized patch. The classification for each patch can be formatted in a similar way to the overall image classification. For example, each patch may be classified as being of either a first type or a second type based on similarity of its features or characteristics compared to annotated images for which the classification is known. In some implementations, a classification request manager may apply an image classification model to each patch of an input image to determine a classification for the patch. Thus, any information about the annotated images used to train the image classification model can be used to inform the classification of patches of the input image.

방법(500)은 입력 이미지의 전반적인 분류를 결정하기 위해 각 패치의 분류를 집계하는(520) 단계를 포함한다. 일부 구현예에서, 이미지 분류 모델과 연관된 기법 또는 파라미터가 각 패치의 분류를 집계하는 데에 사용될 수 있다. 예를 들어, 일부 구현예에서, 분류 요청 관리자는, 입력 이미지의 패치들의 적어도 서브 세트가 k-최근접 이웃들 테스트를 만족시키고 여기서 제2 유형으로 분류된 패치의 이웃들이 또한 제2 유형으로 분류될 것으로 결정되는 경우에만, 입력 이미지가 제2 유형으로 분류되어야 한다고 결정할 수 있다. 그렇지 않으면, 입력 이미지가 제1 유형으로 분류될 수 있다. 따라서, 일부 경우에, 입력 이미지는 제1 유형으로서 개별적으로 분류되는 하나 이상의 패치를 가질 수 있고, 반면에 전체로서의 입력 이미지는 제2 유형으로 분류된다. 유사하게, 일부 예에서, 입력 이미지는 제2 유형으로 개별적으로 분류되는 하나 이상의 패치를 가질 수 있고, 반면에 전체로서의 입력 이미지는 제1 유형으로 분류된다.The method 500 includes a step of aggregating 520 the classification of each patch to determine the overall classification of the input image. In some implementations, techniques or parameters associated with the image classification model may be used to aggregate the classification of each patch. For example, in some implementations, a classification request manager can determine that an input image should be classified as the second type only if it is determined that at least a subset of the patches of the input image satisfy the k-nearest neighbors test, where it is determined that the patch's neighbors classified as the second type will also be classified as the second type. Otherwise, the input image may be classified as the first type. Thus, in some cases, an input image may have one or more patches individually classified as a first type, while the input image as a whole is classified as a second type. Similarly, in some examples, an input image may have one or more patches individually classified as a second type, while the input image as a whole is classified as a first type.

방법(500)은 입력 이미지의 패치-단위 분할을 포함하는 출력을 제공하는 단계(525)를 포함한다. 일부 구현예에서, 이는 분류 요청 관리자에 의해 수행될 수 있다. 패치-단위 분할은 제2 유형의 각 패치 및 제1 유형의 각 패치의 위치를 나타내는 임의의 형태의 정보를 포함할 수 있다. 따라서, 관찰자는 입력 이미지의 전반적인 분류를 주로 담당하는 입력 이미지의 부분들을 결정할 수 있다.Method 500 includes a step 525 of providing output comprising a patch-by-patch segmentation of an input image. In some implementations, this may be performed by a classification request manager. The patch-by-patch division may include any type of information indicating the location of each patch of the second type and each patch of the first type. Thus, the viewer can determine the portions of the input image that are primarily responsible for the overall classification of the input image.

전술한 시스템들은 이들 구성 요소 중 임의의 하나 또는 각각의 구성 요소 중 다수를 제공할 수 있고, 이들 구성 요소는 독립형 머신, 또는 일부 실시예에서는, 분산 시스템의 다수의 머신에 제공될 수 있음을 이해해야 한다. 전술한 시스템들 및 방법들은, 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합을 생성하기 위한 프로그래밍 및/또는 엔지니어링 기법들을 사용하는 방법, 장치 또는 제조 물품으로서 구현될 수 있다. 또한, 전술한 시스템들 및 방법들은 하나 이상의 제조 물품 상에 또는 내에 구체화된 하나 이상의 컴퓨터- 판독 가능 프로그램으로서 제공될 수 있다. 본 명세서에 사용된 용어 "제조 물품"은 하나 이상의 컴퓨터-판독 가능 디바이스, 펌웨어, 프로그램 가능 로직, 메모리 디바이스들(예를 들어, 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)로서 저장될 수 있다.It should be understood that the systems described above may provide any one or multiple of each of these components, and that these components may be provided on stand-alone machines or, in some embodiments, on multiple machines in a distributed system. The systems and methods described above may be implemented as a method, apparatus, or article of manufacture using programming and/or engineering techniques to create software, firmware, hardware, or any combination thereof. Additionally, the systems and methods described above may be provided as one or more computer-readable programs embodied on or in one or more articles of manufacture. As used herein, the term “article of manufacture” refers to one or more computer-readable devices, firmware, programmable logic, memory devices (e.g., EEPROM, ROM, PROM, RAM, SRAM, etc.), hardware (e.g., integrated circuit chip, field programmable gate array (FPGA), application specific integrated circuit (ASIC), etc.), electronic devices, computer-readable non-volatile storage units (e.g., CD-ROM, floppy disk, hard disk drive, etc.) embedded in and is intended to encompass any code or logic accessible therefrom. An article of manufacture may be accessed from a file server that provides access to computer-readable programs via network transmission lines, wireless transmission media, signals propagating through space, radio waves, infrared signals, and the like. The article of manufacture may be a flash memory card or magnetic tape. An article of manufacture includes hardware logic as well as software or programmable code embedded in a computer-readable medium for execution by a processor. Generally, computer-readable programs may be implemented in any programming language such as LISP, PERL, C, C++, C#, PROLOG or any byte code language such as JAVA. Software programs may be stored on one or more articles of manufacture or as object code.

방법들 및 시스템들의 다양한 실시예가 설명되었지만, 이들 실시예는 예시적이고, 어떤 방식으로든 설명된 방법들 또는 시스템들의 범주를 제한하는 것은 아니다. 관련 기술분야의 통상의 기술자들은 설명된 방법들 및 시스템들의 가장 광범위한 범주를 벗어남 없이 설명된 방법들 및 시스템들의 형태 및 상세에 대한 변경을 행할 수 있다. 따라서, 본 명세서에 설명된 방법들 및 시스템들의 범주는 임의의 예시적 실시예들에 의해 제한되는 것은 아니고, 첨부된 청구 범위 및 그 등가물에 따라 정의되어야 한다.Although various embodiments of methods and systems have been described, these embodiments are illustrative and do not limit the scope of the described methods or systems in any way. Persons skilled in the art may make changes to the form and detail of the described methods and systems without departing from the broadest scope of the described methods and systems. Accordingly, the scope of the methods and systems described herein should not be limited by any exemplary embodiments, but should be defined in accordance with the appended claims and their equivalents.

Claims (1)

이미지 분류기(image classifier)를 훈련시키는 방법으로서,
하나 이상의 프로세서를 포함하는 디바이스에 의해, 제1 유형 또는 제2 유형 중 어느 하나라는 주석이 달린 이미지들로부터 생성된 각각의 패치로부터 복수의 포인트를 생성하는 단계;
클러스터링 알고리즘을 사용하여 상기 디바이스에 의해, 상기 제2 유형이라는 주석이 달린 이미지들에 대응하는 포인트들을 2개의 클러스터로 클러스터링하는(clustering) 단계;
상기 디바이스에 의해, 상기 2개의 클러스터 중 제2 클러스터보다, 상기 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들에 더 근접한, 상기 2개의 클러스터 중 제1 클러스터를 식별하는 단계;
상기 디바이스에 의해, 상기 제1 클러스터의 포인트들을 클래스 포지티브(class positive)에, 상기 제2 클러스터의 포인트들을 클래스 네거티브(class negative)에, 그리고 상기 제1 유형이라는 주석이 달린 이미지들에 대응하는 포인트들을 앵커 클래스(anchor class)에 할당하는 단계;
상기 디바이스에 의해, 각 트리플렛이 상기 앵커 클래스로부터의 각각의 포인트, 상기 클래스 포지티브로부터의 각각의 포인트, 및 상기 클래스 네거티브로부터의 각각의 포인트를 포함하는, 복수의 트리플렛을 생성하는 단계;
상기 디바이스에 의해, 상기 복수의 트리플렛의 손실 함수(loss function)를 계산하는 단계; 및
상기 디바이스에 의해, 상기 손실 함수에 기초하여 이미지 분류기의 파라미터들을 조정하는 단계를 포함하는, 방법.
As a method of training an image classifier,
generating, by a device comprising one or more processors, a plurality of points from each patch created from images annotated as either a first type or a second type;
clustering, by the device, points corresponding to images annotated as the second type into two clusters using a clustering algorithm;
identifying, by the device, a first cluster of the two clusters that is closer to points corresponding to images annotated as being of the first type than a second cluster of the two clusters;
assigning, by the device, points of the first cluster to class positive, points of the second cluster to class negative, and points corresponding to images annotated as the first type to an anchor class;
generating, by the device, a plurality of triplets, each triplet including a respective point from the anchor class, a respective point from the class positive, and a respective point from the class negative;
calculating, by the device, a loss function of the plurality of triplets; and
adjusting, by the device, parameters of an image classifier based on the loss function.
KR1020237024437A 2017-07-14 2018-07-13 Weakly supervised image classifier KR20230112744A (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762532795P 2017-07-14 2017-07-14
US62/532,795 2017-07-14
PCT/US2018/042178 WO2019014649A1 (en) 2017-07-14 2018-07-13 Weakly supervised image classifier
KR1020207004289A KR102557985B1 (en) 2017-07-14 2018-07-13 Weakly Supervised Image Classifier

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207004289A Division KR102557985B1 (en) 2017-07-14 2018-07-13 Weakly Supervised Image Classifier

Publications (1)

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

Family

ID=65001825

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020207004289A KR102557985B1 (en) 2017-07-14 2018-07-13 Weakly Supervised Image Classifier
KR1020237024437A KR20230112744A (en) 2017-07-14 2018-07-13 Weakly supervised image classifier

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020207004289A KR102557985B1 (en) 2017-07-14 2018-07-13 Weakly Supervised Image Classifier

Country Status (7)

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

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 (en) * 2020-04-09 2021-10-21 キヤノン株式会社 Imaging apparatus, control method of the same, program, and storage medium
CN111563897B (en) * 2020-04-13 2024-01-05 北京理工大学 Breast nuclear magnetic image tumor segmentation method and device based on weak supervision learning
CN111723229B (en) * 2020-06-24 2023-05-30 重庆紫光华山智安科技有限公司 Data comparison method, device, computer readable storage medium and electronic equipment
US11603119B2 (en) * 2020-10-12 2023-03-14 Great Wall Motor Company Limited Method and apparatus for out-of-distribution detection
TWI821715B (en) * 2021-07-20 2023-11-11 和碩聯合科技股份有限公司 Training method of generator network model and electronic device for execution thereof
US11922702B2 (en) * 2021-08-19 2024-03-05 Ford Global Technologies, Llc Enhanced object detection
CN114092489B (en) * 2021-11-02 2023-08-29 清华大学 Porous medium seepage channel extraction and model training method, device and equipment
CN113743543B (en) * 2021-11-05 2022-02-08 武汉大学 Image classification training method and device, server and storage medium
CN115713501B (en) * 2022-11-10 2023-06-16 深圳市探鸽智能科技有限公司 Detection processing method and system suitable for blurred pictures of camera

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BRPI0602471A (en) * 2006-05-15 2008-03-25 Marcos Thompson system and method for performing network search activated by digital and / or analog signals
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 (en) * 2012-12-21 2017-05-24 本田技研工业株式会社 3d Human Models Applied To Pedestrian Pose Classification
CN104751198B (en) * 2013-12-27 2018-04-27 华为技术有限公司 The recognition methods of object in image and device
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 (en) * 2017-01-16 2020-03-10 华侨大学 Hash image retrieval method based on deep learning and local feature fusion

Also Published As

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

Similar Documents

Publication Publication Date Title
KR102557985B1 (en) Weakly Supervised Image Classifier
WO2019046774A1 (en) Systems and methods for generating 3d medical images by scanning a whole tissue block
US11776235B2 (en) System, method and computer-accessible medium for quantification of blur in digital images
US20200302230A1 (en) Method of incremental learning for object detection
US10990810B2 (en) Automated facial recognition detection
US11276164B2 (en) Classifier trained with data of different granularity
CN114787857A (en) Deep multi-magnification network for multi-class image segmentation
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
US11216659B2 (en) Converting table data into component parts
US20150127325A1 (en) Methods and systems for natural language composition correction
US11853395B2 (en) Augmentation loss function for image classification
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
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 (en) Object detection considering tendency of object location
WO2021162983A1 (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