KR20210024242A - 이미지 내의 객체 검출을 위한 신경망 - Google Patents

이미지 내의 객체 검출을 위한 신경망 Download PDF

Info

Publication number
KR20210024242A
KR20210024242A KR1020217005760A KR20217005760A KR20210024242A KR 20210024242 A KR20210024242 A KR 20210024242A KR 1020217005760 A KR1020217005760 A KR 1020217005760A KR 20217005760 A KR20217005760 A KR 20217005760A KR 20210024242 A KR20210024242 A KR 20210024242A
Authority
KR
South Korea
Prior art keywords
resolution
bounding box
image
training
interest
Prior art date
Application number
KR1020217005760A
Other languages
English (en)
Other versions
KR102365569B1 (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 KR20210024242A publication Critical patent/KR20210024242A/ko
Application granted granted Critical
Publication of KR102365569B1 publication Critical patent/KR102365569B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • G06K9/6267
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06K9/4604
    • G06K9/4671
    • G06K9/52
    • G06K9/6256
    • G06K9/66
    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/40Scaling the whole image or part thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/25Determination of region of interest [ROI] or a volume of interest [VOI]
    • 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/42Global feature extraction by analysis of the whole pattern, e.g. using frequency domain transformations or autocorrelation
    • 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/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • 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/46Descriptors for shape, contour or point-related descriptors, e.g. scale invariant feature transform [SIFT] or bags of words [BoW]; Salient regional features
    • G06V10/462Salient features, e.g. scale invariant feature transforms [SIFT]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/774Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/192Recognition using electronic means using simultaneous comparisons or correlations of the image signals with a plurality of references
    • G06V30/194References adjustable by an adaptive method, e.g. learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • 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/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]

Landscapes

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

Abstract

이미지들의 세트 내의 객체들을 식별하고 범주별로 레이블링하기 위한 시스템들, 디바이스들, 매체, 및 방법들이 제시된다. 시스템들 및 방법들은 관심 객체를 묘사하는 이미지를 수신하는 단계(310), 다층 객체 모델을 사용하여 이미지 내의 관심 객체의 적어도 부분을 검출하는 단계(330), 컨텍스트 정보를 결정하는 단계(340), 및 2개 이상의 바운딩 박스에 포함된 관심 객체를 식별하는 단계(350)를 포함한다.

Description

이미지 내의 객체 검출을 위한 신경망{NEURAL NETWORK FOR OBJECT DETECTION IN IMAGES}
우선권 주장
본 출원은, 그 전체 내용이 참조로 본 명세서에 포함되는 2016년 11월 1일 출원된 미국 특허 출원 제15/340,675호의 우선권의 이익을 주장한다.
기술분야
본 개시내용의 실시예들은 일반적으로 이미지들의 자동화된 처리에 관한 것이다. 제한으로서가 아니라, 더 구체적으로는, 본 개시내용은, 이미지들의 세트 내의 객체들을 검출하고 식별하기 위한 시스템들 및 방법들을 다룬다.
통신 애플리케이션 및 디바이스는, 텍스트, 이미지, 사운드 녹음, 및/또는 비디오 녹화 등의 다양한 매체를 이용하여 복수의 사용자 사이에서 통신을 제공할 수 있다. 예를 들어, 화상 회의는, 2명 이상의 개인이 소프트웨어 애플리케이션, 통신 디바이스, 및 통신 네트워크의 조합을 이용하여 서로 통신하는 것을 허용한다. 통신 디바이스는 또한, 비디오 스트림을 녹화하여 통신 네트워크를 통해 메시지로서 전송할 수 있다.
현재, 객체 검출 처리는 종종 바운딩 박스들(bounding boxes)없이, 그리고 약하게 레이블링된 분류 데이터를 사용하여, 이미지 레벨 예측을 위해 분류 모델을 훈련함으로써 2-단계 접근법을 사용한다. 다음으로, 프로세스는 그 훈련된 분류 모델을 사용하여, 로컬라이제이션을 고려하여 이미지들을 분류한다. 그러나, 이러한 프로세스들은 종종 모델 파라미터들의 최적이 아닌 활용을 초래하고, 분류 동작들과 로컬라이제이션 문제 사이의 다양한 불일치에 기반한 지식 전달에서의 어려움을 나타낸다.
첨부된 도면들 중 다양한 도면들은 본 개시내용의 예시적인 실시예를 나타낼 뿐이고 그 범위를 제한하는 것으로서 간주되어서는 안된다.
도 1은 일부 예시적인 실시예에 따른 네트워킹된 시스템을 나타내는 블록도이다.
도 2는 일부 예시적인 실시예에 따른 객체 검출 시스템을 나타내는 도면이다.
도 3은, 일부 예시적인 실시예에 따른, 이미지 내의 객체들을 검출하고 식별하기 위한 예시적인 방법을 나타내는 흐름도이다.
도 4는, 일부 예시적인 실시예에 따른, 이미지 내의 객체들을 검출하고 식별하기 위한 예시적인 방법을 나타내는 흐름도이다.
도 5는, 일부 예시적인 실시예에 따른, 이미지 내의 객체들을 검출하고 식별하기 위한 예시적인 방법을 나타내는 흐름도이다.
도 6은, 일부 예시적인 실시예에 따른, 이미지 내의 객체들을 검출하고 식별하기 위한 예시적인 방법을 나타내는 흐름도이다.
도 7은, 일부 예시적인 실시예에 따른, 이미지 내의 객체들을 검출하고 식별하기 위한 예시적인 방법을 나타내는 흐름도이다.
도 8은, 일부 예시적인 실시예에 따른, 이미지 내의 객체들을 검출하고 식별하기 위한 예시적인 방법을 나타내는 흐름도이다.
도 9는 일부 예시적인 실시예에 따른 예시적인 모바일 디바이스 및 모바일 운영 체제 인터페이스를 도시한 사용자 인터페이스 도면이다.
도 10은 일부 예시적인 실시예에 따른 머신 상에 설치될 수 있는 소프트웨어 아키텍처의 예를 나타내는 블록도이다.
도 11은 예시적인 실시예에 따른 머신으로 하여금 본 명세서에서 논의된 방법들 중 임의의 것을 수행하게 하기 위한 명령어들의 세트가 실행될 수 있는 컴퓨터 시스템의 형태의 머신의 개략적 표현을 도시하는 블록도이다.
본 명세서에서 제공된 서두는 단지 편의를 위한 것이며 사용된 용어들의 범위 또는 의미에 반드시 영향을 주는 것은 아니다.
이하의 설명은 본 개시내용의 실시예들을 나타내는 시스템, 방법, 기술, 명령어 시퀀스, 및 컴퓨팅 머신 프로그램 제품을 포함한다. 이하의 설명에서, 설명의 목적을 위해, 많은 구체적인 상세사항이 본 발명의 주제의 다양한 실시예에 대한 이해를 제공하기 위해 개시된다. 그러나, 본 기술분야의 통상의 기술자에게는, 본 발명의 주제의 실시예들은 이러한 구체적인 상세사항 없이도 실시될 수 있다는 것이 명백할 것이다. 일반적으로, 널리 공지된 명령어 인스턴스, 프로토콜, 구조 및 기술은 반드시 상세하게 도시되지는 않는다.
일반 객체 검출 시스템들은 범주화된 레이블들을 사용하여 객체들을 분류하고 입력 이미지들 내에 존재하는 객체들을 로컬라이제이션한다. 객체 검출은 로컬라이제이션 및 분류의 품질을 고려한 메트릭인 평균 정밀도(mean average precision)에 의해 수행되고 평가된다. 따라서, 본 기술분야에서는, 사용자 상호작용 없이 또는 최소한의 사용자 상호작용으로, 이미지들 내의 객체들의 식별, 모델링, 해석, 및 인식을 향상시킬 필요가 여전히 존재한다. 또한, 객체 모델들의 생성, 및 객체 상에서 직접 식별되는 특성들이 아닌, 객체에 관한 해석되거나 추론된 양태들 또는 컨텍스트들의 인식을 개선할 필요가 여전히 존재한다. 본 개시내용은 통합된 심층 신경망 모델을 이용하여 객체를 검출하고 식별하기 위해 복수의 계층 모델의 파라미터 전부를 훈련하는 통합된 모델을 설명한다. 통합된 모델은 복수의 속성 인식 작업에 대한 공유 표현을 가능하게 할 수 있다. 본 명세서에 설명된 바와 같이, 초기 선택의 단일 사용자 상호작용을 사용하여 이미지 내의 객체들을 검출하고 식별하기 위한 방법들 및 시스템들이 제시된다.
본 명세서에 설명된 바와 같이, 본 개시내용은 객체 검출 및 식별을 위해 심층 신경망들(deep neural networks)(DNN)이 사용될 수 있음을 기술한다. DNN들은 모델들의 복수의 계층으로 구성된 머신 학습 시스템들이다. 하위 레벨 계층들의 출력들은 상위 레벨 계층들의 입력으로서 기능할 수 있다. 일부 실시예들에서, 컨볼루션 신경망들(convolutional neural networks)(CNN)이 사용될 수 있다. CNN들은 DNN의 한 유형으로서, 여기서 입력들은 이미지와 유사한 구조를 가진 것으로 가정된다. CNN들은 또한 이미지들이라고 가정되는 입력들을 가질 수 있다. 각각의 뉴런은 이미지 상의 제한된 공간 범위에 연결된다. 일부 경우들에서, 다층 객체 모델을 훈련 하고 이미지 내의 객체들을 검출 및 식별하기 위해, 신경망 학습을 위한 최적화 알고리즘으로서 기울기 하강(gradient descent)이 사용될 수 있다. 손실 함수가 정의될 수 있고, 기울기 하강 알고리즘을 사용하여 모델 파라미터들을 반복적으로 조절하기 위해 훈련 데이터가 제공될 수 있다. 모델 파라미터들의 반복적 조절은 관심 객체들을 식별하는 데에 있어서 더 높은 신뢰 레벨들을 가능하게 하도록 훈련 데이터에 대한 손실 함수를 최소화할 수 있다. 일부 경우들에서, 기울기 하강은 역방향 전파(back propagation)를 포함할 수 있다. 역방향 전파는 다층 객체 모델에 대한 기울기 하강을 계산하기 위해 사용될 수 있다.
본 개시내용의 실시예들은 일반적으로 이미지 내의 객체들을 검출하고 식별하기 위한 자동화된 이미지 세그먼트화 및 이미지들의 신경망 처리에 관련될 수 있다. 일 실시예에서, 객체 검출 시스템은 식별될 하나 이상의 관심 객체를 묘사하는 이미지들에 액세스하거나 그것들을 수신한다. 객체 검출 시스템은 이미지 내에 바운딩 박스들의 세트를 생성할 수 있다. 객체 검출 시스템은 이미지 내에 생성된 바운딩 박스들 내에서 관심 객체들을 검출하고, 관심 객체에 대한 컨텍스트 정보를 결정한다. 다음으로, 객체 검출 시스템은 바운딩 박스들 내에서 검출된 관심 객체의 부분들로부터 관심 객체를 식별할 수 있다.
일부 실시예들에서, 객체 검출 시스템은 심층 신경망 또는 컨볼루션 신경망의 시야 및 스트라이드(stride)를 제한하는 설계 원리를 사용한다. 일부 실시예들에서, 컨볼루션 신경망은 복수의 컨볼루션 계층을 이용한다. 컨볼루션 계층들은 각각 필터 크기를 가질 수 있다. 일부 경우들에서, 1보다 큰 크기를 갖는 컨볼루션 레벨들의 필터들은 객체 검출 시스템에 의해 나중에 사용되는 계층들의 시야를 증가시킨다. 컨볼루션 신경망의 각각의 컨볼루션 계층 또는 풀링 계층(pooling layer)은 스트라이드를 가질 수 있다. 스트라이드가 1보다 큰 경우, 컨볼루션 계층 또는 풀링 계층은 후속 층에 대해 스트라이드를 증가시킬 수 있다. 일부 실시예들에서, 시야는 모델의 표현이 고정된 스케일로 집중될 수 있도록 제어된다. 시야의 제어는 다층 객체 모델을 훈련하는 동안 또는 다층 객체 모델을 사용하여 관심 객체들을 검출하는 동안 중 하나 이상에서 정밀한 로컬라이제이션을 가능하게 하기 위해 고정된 크기 증가 또는 고정된 크기 스트라이드들을 유지할 수 있다.
다층 객체 모델의 사전 훈련에 사용되는 데이터는 번역을 학습하고 모델 내의 특정 피처들 또는 파라미터들을 스케일링하기 위해 모델을 제약하도록 제어될 수 있다. 다층 객체 모델의 사전 훈련은 바운딩 박스 레이블들의 사용을 포함할 수 있거나, 바운딩 박스 레이블들의 사용을 무시할 수 있다. 일부 실시예들에서, 바운딩 박스 레이블들이 이용가능할 때, 객체 검출 시스템은 객체들을 중심으로 해서 잘라내기하고(center crop) 객체를 고정된 이미지 해상도로 리스케일링할 수 있다. 배경 이미지 패치들이 또한 샘플링될 수 있다. 고정된 이미지 해상도 객체들과 배경 이미지 패치들의 조합은 훈련에 사용된 모든 객체가 동일한 스케일로 보여지도록 다층 객체 모델을 훈련하는 데 사용될 수 있다. 바운딩 박스 레이블들이 이용가능하지 않은 경우, 다층 객체 모델은 높은 해상도를 갖는 이미지들을 사용하여 훈련될 수 있다. 모델의 부분들(예를 들어, 다층 객체 모델의 하나 이상의 계층)은 훈련 이미지들보다 작은 시야각(예를 들어, 낮은 해상도)로 제한될 수 있다. 일부 경우들에서, 다층 객체 모델의 마지막 하나 이상의 계층은 훈련 프로세스에서 높은 해상도들 및 시야들을 이용할 수 있다. 일부 실시예들에서, 다층 객체 모델은 약하게 감독되는 세팅(weakly supervised setting)에서 훈련될 수 있다. 약하게 감독된 세팅을 사용하면, 다층 객체 모델은 단일 이미지의 복수의 복사본에 적용될 수 있고, 여기서 각각의 복사본은 상이한 해상도를 갖는다.
일부 실시예들에서, 다층 객체 모델은 컨볼루션 계층들의 용량에 대해 제어된다. 이러한 실시예들에서, 다층 객체 모델은 1×1 컨볼루션들(one by one convolutions)을 갖는다. 1×1 컨볼루션들의 사용은 시야 또는 스트라이드들을 변경하지 않고서도 모델 용량을 증가시킨다.
상기의 내용은 하나의 구체적인 예이다. 본 개시내용의 다양한 실시예들은 이미지 또는 비디오 스트림 내의 관심 객체에 대한 자동화된 추론들을 모델링하고 도출하기 위한 디바이스들 및 디바이스의 하나 이상의 프로세서에 의한 명령어들에 관한 것이다. 일부 경우들에서, 관심 객체는 비디오 스트림이 캡처(예를 들어, 실시간으로 비디오 스트림을 수정)되고 있는 동안 디바이스에 의해 또 다른 디바이스에 전송되는 이미지 또는 비디오 스트림 내의 얼굴이다. 일부 경우들에서, 관심 객체를 포함하는 이미지 또는 비디오 스트림은 자동차(예를 들어, 충돌 회피를 위한 객체 검출을 수행함), 비행기, 증강 현실 헤드셋, 모바일 디바이스, 또는 임의의 다른 적합한 머신과 같은 머신 내에서 수신되고 처리될 수 있다. 이미지 내의 또는 비디오 스트림에 걸친 및 비디오 스트림을 포함하는 이미지들의 세트를 통해 관심 객체 및 영역을 식별하고 추론들을 생성하는 객체 검출 시스템이 설명된다. 다양한 예시적인 실시예에서, 객체 검출 시스템은, 비디오 스트림 또는 이미지 내에 묘사된 하나 이상의 얼굴 부위를 식별하고 추적하며, 하나 이상의 얼굴 부위 및 2개 이상의 얼굴 부위 사이의 상호관계에 관하여 이미지 인식, 얼굴 인식, 및 얼굴 처리 기능을 수행한다. 얼굴 부위들 및 얼굴들에 대하여 설명되었지만, 객체 검출 시스템의 예시적인 실시예들은 또한 네비게이션 및 충돌 회피를 위해 자동차, 비행기 및 배에 의해; 이미지 캡처 파라미터 조절을 위해 카메라들에 의해; 충돌 회피 및 자동화된 건물 또는 잔해 제거를 위해 건설 장비에 의해; 실세계 객체들을 게임 요소들로 변환하기 위해 증강 현실 디바이스들에 의해; 또는 임의의 다른 적합한 디바이스, 시스템 또는 머신에 의해 검출된 관심 객체들에 대한 추론들을 식별, 추적 및 생성한다.
도 1은, 일 실시예에 따른, 네트워크를 통해 데이터를 교환하도록 구성된 클라이언트-서버 아키텍처를 갖는 네트워크 시스템(100)을 도시하는 네트워크 도면이다. 예를 들어, 네트워크 시스템(100)은 클라이언트들이 네트워크 시스템(100) 내에서 통신하고 데이터를 교환하는 메시징 시스템일 수 있다. 데이터는 네트워크 시스템(100) 및 그 사용자들과 연관된 다양한 기능(예를 들어, 텍스트 및 미디어 통신신호의 전송 및 수신, 지리위치의 결정 등) 및 양태(예를 들어, 통신 데이터의 전송, 통신 세션의 표시의 수신 및 전송 등)에 관련될 수 있다. 여기서는 네트워크 시스템(100)이 클라이언트-서버 아키텍처로 예시되었지만, 다른 실시예들은 피어-투-피어 또는 분산 네트워크 환경 등의 다른 네트워크 아키텍처를 포함할 수 있다. 추가로, 일부 실시예들은 단일 클라이언트 디바이스 내에서 동작할 수 있고, 객체 검출 시스템(160)은 네트워크(104)를 통한 임의의 사용 또는 통신 없이 디바이스의 이미지 센서에 의해 캡처된 이미지들을 처리한다. 다른 실시예들에서, 이미지들은 네트워크(104)를 통해 클라이언트 디바이스(110)에서 수신될 수 있고, 또는 객체 검출 시스템의 다양한 동작들은 네트워크(104)를 통해 다른 디바이스들과 통신할 수 있다.
도 1에 도시된 바와 같이, 네트워크 시스템(100)은 소셜 메시징 시스템(130)을 포함한다. 소셜 메시징 시스템(130)은 일반적으로, 인터페이스 계층(124), 애플리케이션 로직 계층(126), 및 데이터 계층(128)으로 구성된 3-계층 아키텍처에 기초한다. 관련된 컴퓨터 및 인터넷 관련 분야의 통상의 기술자에 의해 이해되는 바와 같이, 도 1에 도시된 각각의 컴포넌트 또는 엔진은, 명령어들을 실행하고, 하드웨어-구현된 컴포넌트 또는 엔진을 형성하며, 명령어들의 실행시, 특정한 세트의 기능들을 실행하도록 구성된 특별 목적 머신으로 작용하기 위한 한 세트의 실행가능한 소프트웨어 명령어들 및 대응하는 하드웨어(예를 들어, 메모리 및 프로세서)를 나타낸다. 불필요한 상세사항으로 본 발명의 주제를 모호하게 하는 것을 피하기 위해, 본 발명의 주제에 대한 이해를 전달하는 것과 밀접하지 않은 다양한 기능 컴포넌트들 및 엔진은 도 1에서 생략되었다. 물론, 본 명세서에서 구체적으로 설명되지 않은 추가적인 기능을 용이화하기 위해, 도 1에 나타낸 것 등의 추가적인 기능 컴포넌트 및 엔진이 소셜 메시징 시스템과 함께 이용될 수 있다. 또한, 도 1에 도시된 다양한 기능 컴포넌트들 및 엔진들은 단일의 서버 컴퓨터 또는 클라이언트 디바이스 상에 존재하거나, 다양한 배열로 수 개의 서버 컴퓨터들 또는 클라이언트 디바이스들에 걸쳐 분산될 수 있다. 또한, 소셜 메시징 시스템(130)이 도 1에서는 3-계층 아키텍처로서 도시되어 있지만, 본 발명의 주제는 결코 이러한 아키텍처로 제한되지 않는다.
도 1에 도시된 바와 같이, 인터페이스 계층(124)은, 클라이언트 애플리케이션(들)(112)을 실행하는 클라이언트 디바이스(110) 및 제3자 애플리케이션(들)(122)을 실행하는 제3자 서버(들)(120) 등의, 다양한 클라이언트 컴퓨팅 디바이스 및 서버로부터 요청을 수신하는 인터페이스 컴포넌트(들)(예를 들어, 웹 서버)(140)로 구성된다. 수신된 요청에 응답하여, 인터페이스 컴포넌트(140)는 적절한 응답을 네트워크(104)를 통해 요청 디바이스들에 전달한다. 예를 들어, 인터페이스 컴포넌트(140)는, HTTP(Hypertext Transfer Protocol) 요청, 또는 기타의 웹 기반 API(Application Programming Interface) 요청 등의 요청을 수신할 수 있다.
클라이언트 디바이스들(110)은, 다양한 모바일 컴퓨팅 디바이스들 중 임의의 것 및 모바일-특유의 운영 체제(예를 들어, IOS™, ANDROID™, WINDOWS® PHONE)를 포함하는 특정한 플랫폼을 위해 개발된 종래의 웹 브라우저 애플리케이션 또는 애플리케이션들(또한 "앱"이라고도 함)을 실행할 수 있다. 또한, 일부 예시적인 실시예에서, 클라이언트 디바이스들(110)은, 객체 검출 시스템(160)의 컴포넌트들이 객체 검출 시스템(160)의 동작들에 관한 특정한 세트의 기능들을 수행하게끔 클라이언트 디바이스(110)를 구성하도록 객체 검출 시스템(160)의 전부 또는 일부를 형성한다.
일례에서, 클라이언트 디바이스(110)는 클라이언트 애플리케이션(들)(112)을 실행하고 있다. 클라이언트 애플리케이션(들)(112)은, 사용자(106)에게 정보를 프리젠팅하고 네트워크(104)를 통해 전달하여 소셜 메시징 시스템(130)과 정보를 교환하는 기능을 제공할 수 있다. 또한, 일부 예에서, 클라이언트 디바이스(110)는 객체 검출 시스템(160)의 기능을 실행하여 비디오 스트림의 캡처 동안에 비디오 스트림의 이미지들을 세그먼트화하고, (예를 들어, 비디오 스트림의 세그먼트화된 이미지들에 기초하여 수정된 이미지 데이터와 함께) 비디오 스트림을 전송한다.
클라이언트 디바이스들(110) 각각은, 적어도 디스플레이, 및 소셜 메시징 시스템(130), 다른 클라이언트 디바이스들, 및 제3자 서버들(120)에 액세스하기 위한 네트워크(104)와의 통신 능력을 포함하는 컴퓨팅 디바이스를 포함할 수 있다. 클라이언트 디바이스들(110)은, 원격 디바이스, 워크스테이션, 컴퓨터, 범용 컴퓨터, 인터넷 어플라이언스, 핸드헬드 디바이스, 무선 디바이스, 휴대형 디바이스, 착용형 컴퓨터, 셀룰러 또는 모바일 전화, 개인 휴대 정보 단말기(PDA), 스마트폰, 태블릿, 울트라북, 넷북, 랩탑, 데스크탑, 멀티-프로세서 시스템, 마이크로프로세서 기반의 또는 프로그래밍가능한 가전제품, 게임 콘솔, 셋톱박스, 네트워크 PC, 미니 컴퓨터 등을 포함하지만, 이것으로 제한되는 것은 아니다. 사용자(106)는, 사람, 머신, 또는 클라이언트 디바이스들(110)과 상호작용하는 기타의 수단일 수 있다. 일부 실시예들에서, 사용자(106)는 클라이언트 디바이스들(110)을 통해 소셜 메시징 시스템(130)과 상호작용한다. 사용자(106)는 네트워킹된 환경의 일부가 아닐 수 있지만, 클라이언트 디바이스들(110)에 연관될 수 있다.
도 1에 도시된 바와 같이, 데이터 계층(128)은 정보 저장소들 또는 데이터베이스들(134)로의 액세스를 용이화하는 데이터베이스 서버들(132)을 갖는다. 데이터베이스들(134)은, 멤버 프로파일 데이터, 소셜 그래프 데이터[예를 들어, 소셜 메시징 시스템(130)의 멤버들 사이의 관계], 이미지 수정 선호도 데이터, 및 액세스가능성 데이터, 및 기타의 사용자 데이터 등의 데이터를 저장하는 저장 디바이스이다.
개인은 소셜 메시징 시스템(130)에 등록하여 소셜 메시징 시스템(130)의 멤버가 될 수 있다. 일단 등록되고 나면, 멤버는 소셜 메시징 시스템(130) 상에서 소셜 네트워크 관계(예를 들어, 친구, 팔로워, 또는 연락처)를 형성할 수 있고, 소셜 메시징 시스템(130)에 의해 제공되는 광범위한 애플리케이션과 상호작용할 수 있다.
애플리케이션 로직 계층(126)은 다양한 애플리케이션 로직 컴포넌트(150)를 포함하며, 애플리케이션 로직 컴포넌트(150)는, 인터페이스 컴포넌트들(140)과 연계하여, 데이터 계층(128)내의 다양한 데이터 소스 또는 데이터 서비스로부터 회수된 데이터를 갖춘 다양한 사용자 인터페이스를 생성한다. 개개의 애플리케이션 로직 컴포넌트(150)는, 소셜 메시징 시스템(130)의 다양한 애플리케이션, 서비스 및 피처들과 연관된 기능을 구현하는 데 이용될 수 있다. 예를 들어, 소셜 메시징 애플리케이션은 하나 이상의 애플리케이션 로직 컴포넌트(150)로 구현될 수 있다. 소셜 메시징 애플리케이션은, 클라이언트 디바이스들(110)의 사용자가 텍스트와 사진 및 비디오 등의 미디어 콘텐츠를 포함하는 메시지를 송수신하기 위한 메시징 메커니즘을 제공한다. 클라이언트 디바이스들(110)은 (예를 들어, 제한된 또는 무제한의) 지정된 기간 동안 소셜 메시징 애플리케이션으로부터의 메시지를 액세스하고 볼 수 있다. 예에서, 특정한 메시지는, 특정한 메시지가 처음 액세스될 때 시작하는 (예를 들어, 메시지 전송자에 의해 지정된) 미리 정의된 지속기간 동안 메시지 수신자에게 액세스가능할 수 있다. 미리 정의된 지속기간이 경과한 후에, 메시지는 삭제되고 더 이상 메시지 수신자에게 액세스가능하지 않을 수 있다. 물론, 다른 애플리케이션 및 서비스들은 그들 자신의 애플리케이션 로직 컴포넌트(150)에서 별개로 구현될 수 있다.
도 1에 나타낸 바와 같이, 소셜 메시징 시스템(130)은, 클라이언트 디바이스(110)에 의한 비디오 데이터의 캡처 동안 이미지, 이미지들의 세트, 또는 비디오 데이터 내의 프레임들의 세트 내의 관심 객체를 검출하고 식별할 수 있는 객체 검출 시스템(160)의 적어도 일부를 포함할 수 있다. 유사하게, 클라이언트 디바이스(110)는, 전술된 바와 같이, 객체 검출 시스템(160)의 일부를 포함한다. 다른 예들에서, 클라이언트 디바이스(110)는 전체 객체 검출 시스템(160)을 포함할 수 있다. 클라이언트 디바이스(110)가 객체 검출 시스템(160)의 일부(또는 전부)를 포함하는 경우, 클라이언트 디바이스(110)는 단독으로 또는 소셜 메시징 시스템(130)과 협력하여 본 명세서에 설명된 객체 검출 시스템(160)의 기능을 제공할 수 있다.
일부 실시예들에서, 소셜 메시징 시스템(130)은, 콘텐츠(예를 들어, 비디오 클립 또는 이미지)가 시청 시간 또는 시청 완료 등의 삭제 트리거 이벤트 후에 삭제되는 단기 통신을 가능케 하는 단기 메시지 시스템일 수 있다. 이러한 실시예에서, 디바이스는, 단기 메시지를 생성, 전송, 수신 또는 그 양태를 디스플레이하는 것 중의 임의의 상황 내에서 본 명세서에서 설명된 다양한 컴포넌트들을 이용한다. 예를 들어, 객체 검출 시스템(160)을 구현하는 디바이스는, 비디오 클립에 묘사된 얼굴의 피부를 나타내는 픽셀 등의 관심 객체를 식별하고, 추적하고, 수정할 수 있다. 디바이스는, 단기 메시지에 대한 콘텐츠의 생성의 일부로서 비디오 클립을 캡처한 후에 이미지 처리없이 비디오 클립의 캡처 동안 관심 객체를 수정할 수 있다. 다른 예시적인 실시예에서, 객체 검출 시스템(160)을 구현하는 디바이스는 디바이스에 의해 구현되는 하나 이상의 다른 시스템의 자동화된 동작들을 식별, 추적 및 야기할 수 있다. 예를 들어, 디바이스가 자율 주행 차량인 경우, 자율 주행 차량의 객체 검출 시스템(160)은 차량에 대한 미리 결정된 근접도 내에서 객체들을 식별하고 추적할 수 있다. 지정된 객체 클래스의 관심 객체를 검출하면, 객체 검출 시스템(160)은 자율 주행 차량으로 하여금 승객들에게 경고를 발행하거나, 제동을 개시하거나, 방향 전환을 개시하거나, 또는 검출된 관심 객체에 임의의 다른 적절한 응답을 하게 할 수 있다.
도 2에서, 다양한 실시예에서, 객체 검출 시스템(160)은 독립형 시스템으로서 구현되거나 클라이언트 디바이스(110)와 연계하여 구현될 수 있고, 반드시 소셜 메시징 시스템(130)에 포함되는 것은 아니다. 객체 검출 시스템(160)은, 액세스 컴포넌트(210), 바운딩 컴포넌트(220), 검출 컴포넌트(230), 컨텍스트 컴포넌트(240), 식별 컴포넌트(250), 및 훈련 컴포넌트(260)를 포함하는 것으로 도시되어 있다. 컴포넌트들(210 내지 260)의 전부 또는 일부는, 예를 들어, 네트워크 결합, 공유된 메모리 등을 통해 서로 통신한다. 컴포넌트들(210 내지 260)의 각각의 컴포넌트는 단일 컴포넌트로서 구현되거나, 다른 컴포넌트들 내에 결합되거나, 또는 복수의 컴포넌트들로 더 세분될 수 있다. 예시적인 실시예들과 관련이 없는 다른 컴포넌트들도 역시 포함될 수 있지만, 도시되지는 않는다.
액세스 컴포넌트(210)는 관심 객체들을 묘사하는 이미지들에 액세스하거나 그것들을 기타의 방식으로 회수한다. 일부 경우들에서, 액세스 컴포넌트(210)는 데이터베이스 또는 데이터 구조로부터의 이미지들에 액세스한다. 액세스 컴포넌트(210)는 또한 이미지 캡처 디바이스로부터의 이미지 또는 이미지들의 세트(예를 들어, 비디오 스트림의 하나 이상의 프레임)에 액세스하거나 그것을 수신할 수 있다. 일부 실시예들에서, 액세스 컴포넌트(210)는 클라이언트 디바이스(110)의 이미지 캡처 디바이스로 하여금 클라이언트 디바이스(110)의 디스플레이 디바이스 상에 프리젠팅된 사용자 인터페이스와의 사용자 상호작용에 기초하여 이미지들을 캡처하게 하도록 구성된 이미지 캡처 컴포넌트의 일부 또는 전부를 포함한다. 액세스 컴포넌트(210)는 이미지들 또는 이미지들의 일부를 객체 검출 시스템(160)의 하나 이상의 다른 컴포넌트에 전달할 수 있다.
바운딩 컴포넌트(220)는 이미지 내의 또는 이미지 또는 이미지들의 세트에 연관된 바운딩 박스들의 세트를 생성하거나 그것들에 액세스한다. 바운딩 컴포넌트(220)는 다층 객체 모델을 사용하여 바운딩 박스들의 세트를 생성할 수 있다. 일부 실시예들에서, 바운딩 컴포넌트(220)는 이미지들 내의 좌표들의 세트를 식별하고, 바운딩 박스들의 세트에 대한 크기들 및 종횡비들의 세트를 결정하고, 이미지 내의 바운딩 박스들의 세트의 분포를 결정한다. 바운딩 박스들의 세트의 분포는 이미지 또는 이미지들의 세트를 포함하는 좌표들의 세트를 포괄하도록 이미지 또는 이미지들의 세트에 걸쳐 균일할 수 있다.
검출 컴포넌트(230)는 바운딩 박스들 내의 이미지 내에서 관심 객체들의 적어도 부분을 검출한다. 일부 실시예들에서, 검출 컴포넌트(230)는 다층 객체 모델의 검출 계층들을 사용하여 관심 객체들을 검출한다. 검출 컴포넌트(230)는 각각의 바운딩 박스에 대해 상이한 계층들을 사용하여 관심 객체의 부분들을 검출할 수 있다. 검출 계층들은 바운딩 박스들 내에 묘사된 객체들의 종횡비들, 크기들, 및 유형들을 포함하는 지정된 특성들의 바운딩 박스들에 연관될 수 있다.
컨텍스트 컴포넌트(240)는 검출 계층들 사이에서 계층 출력들을 전달함으로써 컨텍스트 정보를 결정한다. 컨텍스트 컴포넌트(240)는 계층 출력을, 그 계층 출력이 전달된 검출 계층의 계층 출력에 통합할 수 있다. 컨텍스트 컴포넌트(240)는 단독으로 또는 하나 이상의 다른 컴포넌트와 함께, 관심 객체 주위의 이미지의 배경으로부터의 정보를 식별할 수 있다.
식별 컴포넌트(250)는 바운딩 박스들의 세트 내에 포함된 관심 객체의 부분들로부터 관심 객체들을 식별한다. 식별 컴포넌트(250)는 다층 객체 모델의 이미지 표현 계층들을 사용하여 관심 객체들을 식별할 수 있다. 일부 경우들에서, 식별 컴포넌트(250)는 클래스, 유형, 또는 다른 식별 특성 또는 범주 내의 관심 객체를 식별할 수 있다. 식별 컴포넌트(250)는 관심 객체들을 식별하기 위해 하나 이상의 알고리즘, 기능 또는 동작을 사용할 수 있다.
훈련 컴포넌트(260)는 모델 파라미터들을 반복적으로 조절하여 다층 객체 모델의 계층들을 훈련한다. 일부 실시예들에서, 훈련 컴포넌트(260)는 가우시안 분포를 사용하여 하나 이상의 모델 파라미터를 초기화한다. 모델 파라미터들은 단일 방식으로 초기화되거나 관련 그룹들에서 초기화될 수 있다. 훈련 컴포넌트(260)는 모델 파라미터들을 조절하여 평균 손실 함수 값들을 생성할 수 있다.
도 3은 이미지, 이미지들의 세트, 또는 비디오 스트림 내의 프레임들 내의 객체들을 검출하고 식별하기 위한 예시적인 방법(300)을 나타내는 흐름도를 도시한다. 방법(300)의 동작들은 객체 검출 시스템(160)의 컴포넌트들에 의해 수행될 수 있으며, 설명의 목적으로 이하에서 설명된다.
동작(310)에서, 액세스 컴포넌트(210)는 시야 내의 관심 객체 및 배경을 묘사하는 이미지에 액세스하거나 그렇지 않으면 그러한 이미지를 수신한다. 일부 경우들에서, 액세스 컴포넌트(210)는 데이터베이스 상의 또는 데이터 구조 내의 이미지에 액세스한다. 데이터베이스 또는 데이터 구조는 클라이언트 디바이스(110)에 결합되거나 그렇지 않으면 그에 의해 액세스가능할 수 있다. 예를 들어, 액세스 컴포넌트(210)는 클라이언트 디바이스(110) 또는 제3자 시스템의 컴퓨터 판독가능한 저장 디바이스(예를 들어, 메모리 컴포넌트)에 저장된 이미지에 액세스할 수 있다. 이러한 경우들에서, 액세스 컴포넌트(210)는 클라이언트 디바이스(110)와 제3자 시스템 사이의 네트워크 연결을 통해 제3자 시스템에 액세스할 수 있다.
일부 실시예들에서, 액세스 컴포넌트(210)는 클라이언트 디바이스(110)에 연관된 이미지 캡처 디바이스에 의해 캡처된 단일 이미지, 이미지들의 세트로서, 또는 비디오 스트림의 프레임들 내에서 이미지를 수신한다. 일부 경우들에서, 이미지, 이미지들의 세트, 또는 비디오 스트림이 객체 검출 애플리케이션의 사용자 인터페이스 상에 프리젠팅된다. 액세스 컴포넌트(210)는 이미지 캡처 디바이스를 액세스 컴포넌트(210)를 포함하는 하드웨어의 일부로서 포함할 수 있다. 이러한 실시예들에서, 액세스 컴포넌트(210)는 이미지 캡처 디바이스에 의해 캡처된 이미지, 이미지들의 세트 또는 비디오 스트림을 직접 수신한다. 일부 경우들에서, 액세스 컴포넌트(210)는 아래에 더 상세하게 설명되는 바와 같이, 객체 검출 시스템(160)의 하나 이상의 컴포넌트에 이미지, 이미지들의 세트, 또는 비디오 스트림(예를 들어, 비디오 스트림을 구성하는 이미지들의 세트)의 전부 또는 일부를 전달한다.
일부 예시적인 실시예들에서, 액세스 컴포넌트(210)는 비디오 스트림 내의 복수의 프레임 내의 이미지에 액세스한다. 액세스 컴포넌트(210)는 비디오 스트림의 하나 이상의 프레임으로부터 이미지를 선택할 수 있다. 이미지의 선택은 수동 선택(예를 들어, 이미지의 사용자 선택)에 응답하여 액세스 컴포넌트(210)에 의해 수행될 수 있다. 일부 경우들에서, 액세스 컴포넌트(210)는 클라이언트 디바이스의 사용자로부터의 입력 없이 자동적으로 비디오 스트림의 프레임들로부터 이미지를 선택한다. 액세스 컴포넌트(210)는 이미지 내의 객체의 초기 검출을 수행하기 위해, 이하에서 상세히 설명되는 하나 이상의 이미지 검출 동작을 수행함으로써 프레임들로부터 이미지를 선택할 수 있다. 일단 객체가 초기에 검출되면, 액세스 컴포넌트(210)는 이하의 방법들에서 설명된 동작들 중 하나 이상을 사용하여 관심 객체의 추가 검출 및 식별을 위해 객체 검출 시스템(160)의 하나 이상의 다른 컴포넌트에 이미지 또는 이미지들의 세트를 전달할 수 있다.
동작(320)에서, 바운딩 컴포넌트(220)는 이미지 내의 바운딩 박스들의 세트를 생성한다. 일부 예시적인 실시예에서, 바운딩 컴포넌트(220)는 다층 객체 모델을 사용하여 바운딩 박스들의 세트를 생성한다. 바운딩 박스들의 세트의 각각의 바운딩 박스는 좌표 데이터의 세트 및 레이블로서 생성될 수 있다. 좌표 데이터의 세트는 바운딩 박스의 위치, 크기 또는 스케일, 및 종횡비를 나타낼 수 있다. 레이블은 바운딩 박스를 구성하는 좌표들의 세트 내에 묘사된 객체의 지정, 표현, 클래스 또는 다른 식별 디스크립션을 수신하도록 구성될 수 있다. 일부 실시예들에서, 바운딩 박스는 좌표 요소들의 튜플들 및 클래스 레이블로서 표현된다. 예를 들어, 바운딩 박스는 <xmin, xmax, ymin, ymax, obj_cls>에 의해 표현될 수 있다. 이 예에서, 이미지 내에서, xmin 및 xmax는 x축 좌표를 나타내고, ymin 및 ymax는 y축 좌표를 나타낸다. x 및 y축 좌표는 바운딩 박스의 좌측 상부 및 우측 하부를 나타낼 수 있다. 클래스 레이블은 초기에 값 없이 생성될 수 있다. 예를 들어, 클래스 레이블은 초기에 값 없이, 널 값을 갖고서, 또는 다른 플레이스홀더 값을 갖고서 생성될 수 있다. 이러한 실시예들에서, 클래스 레이블은 바운딩 박스 내에서 객체를 검출하거나 분류할 때 값으로 채워지거나, 수정되거나, 또는 다르게 공급될 수 있다. 객체 검출 시스템(160)이 바운딩 박스 내에서 검출된 객체를 식별하면, 객체 검출 시스템(160)의 하나 이상의 컴포넌트가 협력하여 관심 객체에 대한 식별을 나타내는 클래스 레이블 내의 값을 포함하도록 바운딩 박스를 수정할 수 있다.
일부 실시예들에서는, 바운딩 박스들의 세트 중 두 개 이상의 바운딩 박스가 중첩된다. 바운딩 박스들의 세트는 일부 바운딩 박스가 상이한 크기들, 종횡비들, 좌표들, 및 다른 파라미터들을 갖도록 생성될 수 있다. 아래에서 더 상세히 설명하는 바와 같이, 이미지에 대해 생성된 바운딩 박스들은 적어도 하나의 바운딩 박스 내의 이미지 내의 각각의 좌표를 포함하도록 이미지에 걸쳐 분포될 수 있다. 2개 이상의 바운딩 박스와 관련하여 설명되었지만, 일부 경우들에서, 시스템은 단일 바운딩 박스를 출력할 수 있다.
동작(330)에서, 검출 컴포넌트(230)는 적어도, 바운딩 박스들의 세트 중 2개 이상의 바운딩 박스의 이미지 내의 관심 객체의 적어도 부분을 검출한다. 일부 예시적인 실시예들에서, 검출 컴포넌트(230)는 다층 객체 모델의 검출 계층들의 세트를 사용하여 관심 객체를 검출한다. 일부 실시예들에서, 검출 컴포넌트(230)는 2개 이상의 바운딩 박스 각각에 대해 구별되는 검출 계층들을 사용하여 관심 객체의 부분을 검출한다. 예를 들어, 각각의 검출 계층은 바운딩 박스들의 세트 중의 단일 바운딩 박스 또는 부분에 연관될 수 있다. 일부 경우들에서, 검출 컴포넌트(230)는 2개 이상의 바운딩 박스 중 특정 바운딩 박스들에 대해 구별되는 검출 계층들을 이용한다. 예를 들어, 검출 계층들의 세트의 각각의 검출 계층은 지정된 파라미터에 연관될 수 있고, 그에 의해, 검출 계층은 지정된 파라미터를 갖는 2개 이상의 바운딩 박스의 바운딩 박스들에 대해 검출 동작들을 수행한다. 검출 계층들은 이미지 세그먼트화, 블롭 분석(blob analysis), 에지 매칭 또는 에지 검출, 기울기 매칭, 계조 매칭, 또는 임의의 다른 적절한 객체 검출 방법과 같은 하나 이상의 객체 검출 방법을 사용하여 바운딩 박스들 내의 관심 객체 또는 관심 객체의 적어도 일부를 검출할 수 있다. 일부 실시예들에서, 검출 계층들은 선택된 객체 검출 방법의 모든 부분을 사용하지 않고, 위에 언급된 객체 검출들의 하나 이상의 선택된 양태를 사용한다. 또한, 일부 경우들에서, 검출 계층들은 머신 학습 모델로부터 도출된 또는 머신 학습 모델 내에 포함된, 위에서 설명된 객체 검출 방법들 중 하나 이상에 대해 기능 또는 결과 면에서 유사한 동작들을 이용한다. 머신 학습 모델은 본 개시내용에서 설명된 머신 학습 기술들 중 하나 이상에 의해 생성될 수 있다.
동작(340)에서, 컨텍스트 컴포넌트(240)는 제1 검출 계층에 제2 검출 계층의 계층 출력을 전달함으로써 컨텍스트 정보를 결정한다. 일부 예시적인 실시예들에서, 컨텍스트 컴포넌트(240)는 제2 계층의 계층 출력을 제1 검출 계층의 계층 출력에 통합한다. 컨텍스트 컴포넌트(240)는 2개 이상의 바운딩 박스 중 적어도 하나 내의 작은 크기의 관심 객체들의 표시를 수신할 수 있다. 컨텍스트 컴포넌트(240)또는 검출 컴포넌트(230)는 미리 결정된 크기, 좌표 세트, 픽셀 카운트, 또는 다른 측정값 미만인 이미지 또는 바운딩 박스의 부분을 점유하는 관심 객체들 또는 전체 관심 객체의 하나 이상의 양태에 기초하여, 관심 객체들이 작은 크기를 갖는 것으로 결정할 수 있다. 일부 경우들에서, 컨텍스트 컴포넌트(240)는 바운딩 박스 내의 배경, 또는 관심 객체의 일부가 아닌 바운딩 박스 내의 객체로부터의 정보를 식별한다. 정보는 위에서 설명된 하나 이상의 이미지 표현 방법 또는 객체 검출 방법을 통해 획득될 수 있다.
일부 예시적인 실시예들에서, 제2 검출 계층의 계층 출력은 다층 객체 모델의 디컨볼루션 계층(deconvolution layer)을 이용하여 제1 검출 계층에 전달된다. 컨텍스트 컴포넌트(240)는 컨볼루션 신경망 내의 컨볼루션 계층들로서 이미지 표현 계층들을 사용하여 이미지 표현 계층들의 출력을 컨볼루션 신경망 내의 디컨볼루션 계층들에 전달한다. 이러한 실시예들에서, 각각의 이미지 표현 계층은 출력을 생성할 수 있고, 그 출력을 초기의 디컨볼루션 계층으로 역방향으로 전달할 수 있다. 디컨볼루션 계층은 학습가능한 파라미터들로서 출력을 수신할 수 있다. 디컨볼루션 계층은 정보가 전달된 이미지 표현 계층의 출력과 결합되는 출력을 생성할 수 있다. 일부 실시예들에서, 디컨볼루션 계층의 출력은 동일한 레벨의 대응하는 컨볼루션 계층보다 더 큰 이미지 크기 또는 바운딩 박스 크기에 대한 이미지 디스크립션을 포함할 수 있다. 디컨볼루션 계층의 출력과 동일한 크기의 출력을 생성하는 초기 컨볼루션 계층에 전달될 때, 컨텍스트 컴포넌트(240)는 이미지 표현 계층 및 디컨볼루션 계층으로부터의 출력들을 요소별 합산(element-wise sum)하여 결합된 계층 출력으로 한다. 이러한 실시예들에서, 컨텍스트 컴포넌트(240)는 컨볼루션 신경망의 복수의 계층 및 디컨볼루션 계층들이, 컨텍스트 정보에 액세스하고 컴팩트한 피처 치수들을 유지하면서 2개 이상의 바운딩 박스 내의 관심 객체를 식별하는 검출기들로서 기능하도록 결합될 수 있게 한다. 요소별 합산은 컨볼루션 계층의 출력들 및 디컨볼루션 계층에 의해 공급된 대응하는 출력에 상보적일 수 있다. 일부 경우들에서, 요소별 합산은 바운딩 박스 내의 객체를 식별하는 신뢰도 점수를 재확인한다. 요소별 합산은 또한 바운딩 박스 내의 객체들에 대한 거짓 긍정 식별들(false positive identifications)을 정정할 수 있다.
일부 경우들에서, 요소별 합산은 하나 이상의 바운딩 박스에 대해 결정된 신뢰도 점수와 객체 클래스 중 하나 이상을 비교한다. 객체 클래스는 하나 이상의 컨볼루션 계층 및 하나 이상의 디컨볼루션 계층에 의해 공급될 수 있다. 객체 클래스들이 유사하거나 동일하다고 결정되는 경우, 요소별 합산은 상보적일 수 있다. 2개의 바운딩 박스의 객체 클래스들이 상이한 일부 경우들에서, 컨텍스트 컴포넌트(240)는 출력들 각각에 대한 신뢰도 점수들을 비교할 수 있다. 컨텍스트 컴포넌트(240)는 더 낮은 신뢰도 점수 또는 더 작은 바운딩 박스에 연관된 더 높은 신뢰도 점수에 비해, 더 큰 바운딩 박스에 연관된 더 높은 신뢰도 점수를 가중할 수 있다.
동작(350)에서, 식별 컴포넌트(250)는 2개 이상의 바운딩 박스 내에 포함된 관심 객체의 부분들로부터 관심 객체를 식별한다. 식별 컴포넌트(250)는 다층 객체 모델의 이미지 표현 계층들의 세트를 사용하여 관심 객체를 식별한다. 일부 예시적인 실시예들에서, 동작(350)은 관심 객체의 부분을 검출하고[예를 들어, 동작(330)] 컨텍스트 정보를 결정하는[예를 들어, 동작(340)] 것에 기초하여 수행된다. 일부 실시예들에서, 이미지 표현 계층들의 세트는 피처 기반 객체 검출, Viola-Jones 객체 검출, 지향성 기울기 피처들(oriented gradient features)의 히스토그램을 갖는 지원 벡터 머신 분류, 해석 트리(interpretation trees), 포즈 클러스터링(pose clustering), 스케일-불변 피처 변환(scale-invariant feature transform), 가속된 견고한 피처들(speeded up robust features), 유전 알고리즘(genetic algorithms), 또는 임의의 다른 적합한 객체 식별 방법을 이용하여 관심 객체를 식별할 수 있다. 이미지 표현 계층들의 세트의 각각의 이미지 표현 계층은 2개 이상의 바운딩 박스의 지정된 바운딩 박스 상에서 객체 식별 방법 또는 방법들을 수행할 수 있다. 일부 실시예들에서, 각각의 이미지 표현 계층은 단일 바운딩 박스, 또는 공통 파라미터를 공유하는 하나 이상의 바운딩 박스 상에서 하나 이상의 객체 식별 방법을 수행할 수 있다. 위에서 설명된 바와 같이, 이미지 표현 계층들은 컨텍스트를 사용하여 2개의 바운딩 박스로부터 관심 객체를 식별하기 위해 검출 컴포넌트(230)의 계층들 및 컨텍스트 컴포넌트(240)의 디컨볼루션 계층들의 출력들을 통합할 수 있다. 일부 실시예들에서, 이미지 표현 계층들은 선택된 객체 검출 방법의 모든 부분을 사용하지 않고, 위에서 언급된 객체 검출 방법들의 하나 이상의 선택된 양태를 사용한다. 또한, 일부 경우들에서, 이미지 표현 계층들은 머신 학습 모델로부터 도출되거나 머신 학습 모델 내에 포함된, 위에서 설명된 객체 검출 방법들 중 하나 이상과 기능 또는 결과 면에서 유사한 동작들을 사용한다. 머신 학습 모델은 본 개시내용에서 설명된 머신 학습 기술들 중 하나 이상에 의해 생성될 수 있다.
도 4는 이미지, 이미지들의 세트, 또는 비디오 스트림 내의 프레임들 내의 객체들을 검출하고 식별하기 위한 예시적인 방법(400)을 나타내는 흐름도를 도시한다. 방법(400)의 동작들은 객체 검출 시스템(160)의 컴포넌트들에 의해 수행될 수 있다. 일부 경우들에서, 방법(400)의 특정 동작들은 아래에 더 상세하게 설명되는 바와 같이, 방법(300)의 하나 이상의 동작을 이용하여, 또는 방법(300)의 하나 이상의 동작의 하위 동작들로서 수행될 수 있다. 예를 들어, 도 4에 도시된 바와 같이, 방법(400)의 동작들은 동작(320)의 일부 또는 하위 동작들일 수 있다.
동작(410)에서, 바운딩 컴포넌트(220)는 이미지 내의 좌표들의 세트를 식별한다. 좌표들의 세트는 이미지에 대한 하나 이상의 경계의 표시를 포함한다. 일부 실시예들에서, 위에서 설명된 바와 같이, 좌표들의 세트는 튜플들에 의해 표현될 수 있다. 위에서 설명된 바와 같이, 튜플들은 xmin, xmax, ymin 및 ymax 와 같은 좌표들을 포함할 수 있다. 최소와 최대는 이미지의 경계들 및 그 안의 포인트들을 기술하는 좌표들의 세트 내의 바운딩 박스의 좌측 상부 및 우측 하부을 표현한다. 튜플들의 세트로서 설명되었지만, 좌표들의 세트는 박스의 경계들을 이미지 내의 식별가능한 위치로서 나타내는 좌표들의 임의의 세트일 수 있다. 일부 경우들에서, 좌표들의 세트는 바운딩 박스에 대한 종횡비, 크기, 다수의 또는 다른 레이블, 및 임의의 다른 적절한 식별 정보를 나타낼 수 있다.
동작(420)에서, 바운딩 컴포넌트(220)는 바운딩 박스들의 세트에 대한 크기들의 세트 및 종횡비들의 세트를 결정한다. 크기들의 세트 및 종횡비들의 세트는 바운딩 박스들의 세트에 대해 미리 결정될 수 있거나 동적으로 결정될 수 있다. 일부 경우들에서, 바운딩 컴포넌트(220)는 이미지의 차원들에 기초하여 크기들의 세트 및 종횡비들의 세트를 결정한다. 예를 들어, 종횡비들의 세트는 수직 방향 및 수평 방향의 이미지의 종횡비와 일치하는 종횡비들을 포함할 수 있다. 종횡비들의 세트는 이미지의 종횡비들과는 다른 종횡비들을 포함할 수 있다. 크기들의 세트는 이미지의 픽셀 치수보다 작은 픽셀 치수들을 포함할 수 있다. 일부 실시예들에서, 크기들의 세트는 이미지의 치수들보다 작고 미리 결정된 최소 크기보다 큰 복수의 픽셀 치수를 포함한다. 이러한 경우들에서, 복수의 픽셀 치수는 지정된 간격만큼 떨어져서 설정된 2 이상의 이산 픽셀 치수를 포함할 수 있다. 예를 들어, 크기들의 세트는 최소 크기(예를 들어, 최소 픽셀 치수), 최대 크기(예를 들어, 이미지의 픽셀 치수들과 일치하거나 그보다 작은 최대 픽셀 치수), 및 최소 크기와 최대 크기 사이의 크기의 하나 이상의 픽셀 치수를 포함할 수 있다. 최소와 최대 크기 사이의 하나 이상의 픽셀 치수는 미리 결정된 임계 또는 간격(예를 들어, 10%, 25%, 50% 등)으로 크기가 증가할 수 있다.
일부 실시예들에서, 크기들의 세트 및 종횡비들의 세트는 이미지와 관련하여 액세스된 정보에 기초하여 결정될 수 있다. 이미지는 디스크립션 데이터, 이미지 캡처 데이터(예를 들어, 이미지 캡처 파라미터들), 디바이스 데이터(예를 들어, 이미지를 캡처하는 디바이스를 설명하는 정보), 및 임의의 다른 적합한 데이터를 포함하거나 그에 연관될 수 있다. 이미지 캡처 데이터가 매크로 촬영 세팅, 작은 초점 면적 세팅(예를 들어, 미리 결정된 임계 미만의 면적을 갖는 이미지 내의 초점 면적), 또는 비교적 작은 관심 영역들을 나타내는 이미지 선택을 나타내는 경우, 이미지 내의 작은 또는 세부 객체들의 검출에 적합한 크기들 및 비율들을 갖는 크기들의 세트 및 종횡비들의 세트가 결정될 수 있다. 예를 들어, 크기들의 세트의 부분은 이미지의 관심 객체 또는 영역의 더 작은 부분들 또는 양태들에 중점을 두도록 이미지에 대한 최소 크기에 가까울 수 있고, 크기들의 세트의 부분은 작은 관심 객체들과 배경 또는 컨텍스트 이미지 정보의 부분들을 포괄하도록, 최소 크기와 최대 크기 사이의 중간 크기일 수 있다. 또한, 종횡비들의 세트는 달라질 수 있고, 작은 관심 객체들 주위의 배경 또는 컨텍스트 이미지 정보의 부분들을 캡처하도록 구성될 수 있다. 작은 관심 영역들 또는 관심 객체들에 대해 설명되었지만, 이미지 내의 잠재적인 관심 객체들의 예상되는 객체 유형들, 크기들, 또는 다른 특성들에 대해 크기들의 세트 및 종횡비들의 세트를 맞춤화하기 위해, 이미지, 이미지 캡처 모드, 또는 디바이스에 연관된 정보를 사용하여, 크기들의 세트 및 종횡비들의 세트가 결정될 수 있다는 것을 이해해야 한다.
동작(430)에서, 바운딩 컴포넌트(220)는 바운딩 박스들의 세트의 적어도 하나의 바운딩 박스 내에 좌표들의 세트의 각각의 좌표를 포괄하도록 바운딩 박스들의 분포를 결정한다. 일부 실시예들에서, 바운딩 박스들은 슬라이딩 윈도우 방식으로 분포된다. 일부 실시예들에서, 바운딩 박스들의 세트의 슬라이딩 윈도우 분포는 이미지의 제1 코너(예를 들어, 좌측 상부)에서 시작하여 조직될 수 있고, 제1 코너로부터 제2 코너(예를 들어, 우측 하부)까지의 이미지의 좌표들 전부를 반복적으로 포괄한다. 일부 실시예들에서, 바운딩 박스들의 세트는 미리 결정된 패턴으로, 동적 패턴(예를 들어, 이미지의 하나 이상의 파라미터에 기초하여 생성됨)으로, 무작위로, 또는 임의의 적절한 방식으로 분포될 수 있다. 일부 경우들에서, 바운딩 박스들의 세트는 미리 결정된 수의 바운딩 박스들이 이미지에 걸쳐 고르게 분포되도록, 미리 결정된 오프셋을 갖고서 분포될 수 있다. 일부 실시예들에서, 바운딩 박스들의 세트는 약 7,000개의 바운딩 박스를 포함한다.
동작(440)에서, 바운딩 컴포넌트(220)는 바운딩 박스들의 세트를 이미지에 걸쳐 균일하게 분포시키도록 바운딩 박스들의 세트를 생성한다. 일부 예시적인 실시예들에서, 바운딩 박스들의 세트의 각각의 바운딩 박스는 크기들의 세트에 포함된 크기 및 종횡비들의 세트에 포함된 종횡비로 생성된다. 일부 실시예들에서, 각각의 바운딩 박스는, 각각의 바운딩 박스가 이미지 내의 포인트, 포인트들의 세트, 픽셀, 픽셀들의 세트, 좌표 또는 좌표들의 세트에 연관되도록 분산된 포맷으로 생성된다. 일부 실시예들에서, 바운딩 박스들의 세트는 오버레이 또는 오버레이 요소들의 세트로서 생성되고 분포된다. 일부 경우들에서, 바운딩 박스들의 세트는 바운딩 박스들의 세트의 각각의 바운딩 박스가 이미지 내에서의 위치(예를 들어, 하나 이상의 포인트, 좌표, 또는 픽셀)에 연관되도록 데이터 구조 내에서 생성되고 분포된다. 일단 바운딩 박스들이 데이터 구조 내에 생성되어 분포되고 나면, 바운딩 컴포넌트(220)는 검출 컴포넌트(230)가 동작(330)에 관련하여 설명된 바와 같이, 바운딩 박스들의 세트의 2개 이상의 바운딩 박스 내의 이미지 내에서 관심 객체의 적어도 부분을 검출하는 것을 가능하게 하기 위해, 그 데이터 구조, 또는 바운딩 박스들 및 이미지 내에서의 위치들을 식별하는 정보를 검출 컴포넌트(230)에 전달할 수 있다.
일부 예시적인 실시예들에서, 바운딩 박스들의 세트는 제1 크기 및 제1 종횡비를 갖는 적어도 하나의 바운딩 박스를 포함한다. 일부 실시예들에서, 바운딩 박스들의 세트는 또한 제2 크기 및 제2 종횡비를 갖는 적어도 하나의 바운딩 박스를 포함한다. 제2 크기는 제1 크기로부터 구별될 수 있다. 일부 경우들에서, 제1 종횡비는 제2 종횡비로부터 구별된다. 이러한 경우들에서, 바운딩 박스들의 세트 내의 바운딩 박스들은 상이한 크기들, 형상들, 유형들, 및 세부 레벨들의 객체들의 검출을 가능하게 하도록 구성될 수 있다. 일부 실시예들에서, 검출 컴포넌트(230)는 검출 컴포넌트(230)가 2개 이상의 바운딩 박스(예를 들어, 제1 크기 및 종횡비의 적어도 하나의 바운딩 박스 및 제2 크기 및 종횡비의 적어도 하나의 바운딩 박스) 내에서 관심 객체를 검출할 때까지 하나 이상의 바운딩 박스 내에서 객체들을 검출하려고 시도한다. 검출 컴포넌트(230)는 바운딩 박스들(예를 들어, 2개 이상의 바운딩 박스) 각각에 대해 검출 컴포넌트(230)에 의해 생성되는 신뢰도의 표시가 신뢰도 임계를 초과하는 경우, 2개 이상의 바운딩 박스 내에서의 관심 객체의 검출을 결정할 수 있다.
도 5는 이미지, 이미지들의 세트, 또는 비디오 스트림 내의 프레임들 내에서 객체들을 검출하고 식별하기 위한 예시적인 방법(500)을 나타내는 흐름도를 도시한다. 방법(500)의 동작들은 객체 검출 시스템(160)의 컴포넌트들에 의해 수행될 수 있다. 일부 경우들에서, 방법(500)의 특정 동작들은 아래에 더 상세하게 설명되는 바와 같이, 방법들(300 또는 400)의 하나 이상의 동작을 사용하여, 설명된 실시예들 중 하나 이상에서, 또는 방법들(300 또는 400)의 하나 이상의 동작의 하위 동작들로서 수행될 수 있다. 예를 들어, 일부 실시예들에서, 방법(500)의 동작들은 동작(330)의 일부 또는 하위 동작들로서 수행될 수 있다.
동작(510)에서, 검출 컴포넌트(230)는 제1 검출 계층을 이용하여 2개 이상의 바운딩 박스의 제1 바운딩 박스 내에서 관심 객체의 부분의 일부를 검출한다. 제1 검출 계층은 제1 스케일에 연관될 수 있다. 제1 스케일은 제1 바운딩 박스에 대응할 수 있다. 일부 예시적인 실시예들에서, 제1 검출 계층은 제1 신뢰도 점수, 및 좌표들의 제1 세트를 생성한다. 좌표들의 제1 세트는 제1 바운딩 박스 내에 묘사된 관심 객체의 일부에 대한 위치를 표현할 수 있다.
일부 경우들에서, 검출 컴포넌트(230)는 검출 컴포넌트(230)가 바운딩 박스 내의 객체(예를 들어, 관심 객체)의 식별가능한 일부 또는 전부를 검출할 때까지 일련의 바운딩 박스들 상에서 제1 검출 계층을 이용한다. 제1 검출 계층을 사용할 때, 검출 컴포넌트(230)는 객체 또는 식별가능한 객체가 바운딩 박스 내에서 검출되었다는 신뢰도의 레벨을 나타내는 신뢰도 점수를 일련의 바운딩 박스들 각각에 대해 생성할 수 있다. 바운딩 박스 내에서 관심 객체 또는 관심 객체의 식별가능한 부분을 검출한 때, 바운딩 박스는 제1 바운딩 박스로서 식별될 수 있다.
동작(520)에서, 검출 컴포넌트(230)는 2개 이상의 바운딩 박스의 제2 바운딩 박스 내에서 관심 객체의 부분의 일부를 검출한다. 검출 컴포넌트(230)는 제2 바운딩 박스 내에서 관심 객체의 부분을 검출하기 위해 제2 검출 계층을 사용할 수 있다. 제2 검출 계층은 제2 스케일에 연관될 수 있다. 제2 스케일은 제2 바운딩 박스에 대응할 수 있다. 일부 예시적인 실시예에서, 제2 검출 계층은 제2 신뢰도 점수 및 좌표들의 제2 세트를 생성한다. 좌표들의 제2 세트는 제2 바운딩 박스 내에 묘사된 관심 객체의 일부를 표현할 수 있다. 동작(510)에 대해 설명된 것과 유사하거나 동일한 방식으로 제2 바운딩 박스가 식별되고 제2 바운딩 박스 내에서 관심 객체가 검출될 수 있다.
제1 바운딩 박스 및 제2 바운딩 박스에 대하여 설명되지만, 검출 컴포넌트(230)는 임의의 적합한 개수의 바운딩 박스들 내에서 관심 객체를 검출할 수 있다는 것을 이해해야 한다. 일부 경우들에서, 검출 컴포넌트(230)는 검출 컴포넌트(230)가 이미지 내에 묘사된 관심 객체의 전부가 바운딩 박스들의 서브세트 내에 포함된 것으로서 검출될 때까지 바운딩 박스들의 세트의 후속 바운딩 박스들 내에서 관심 객체의 부분들을 계속 결정한다. 바운딩 박스들의 서브세트는 관심 객체의 적어도 부분들을 포함하는, 바운딩 박스들의 세트로부터 선택된 다수의 바운딩 박스일 수 있다.
일부 실시예들에서, 검출 컴포넌트(230)는 관심 객체가 바운딩 박스들의 세트 내의 임의의 단일 바운딩 박스 내에 포함된 것이 아니라 복수의 바운딩 박스에 걸쳐 포함된다는 것을 결정한다. 관심 객체가 단일 바운딩 박스가 아니라 복수의 바운딩 박스 내에서 검출되는 것에 응답하여, 검출 컴포넌트(230)는 바운딩 컴포넌트(220)에 표시를 전달할 수 있다. 표시를 수신하는 것에 응답하여, 바운딩 컴포넌트(220)는 관심 객체를 포괄하는 하나 이상의 새로운 바운딩 박스를 생성할 수 있다. 하나 이상의 새로운 바운딩 박스 각각은 묘사된 관심 객체 전부를 포함할 수 있다. 관심 객체는 또한 바운딩 박스들의 세트의 단일 바운딩 박스 내에 포함될 수 있다. 검출 컴포넌트(230)가 관심 객체가 단일 바운딩 박스 내에 포함된다고 결정하는 경우, 검출 컴포넌트(230)는 관심 객체를 포함하지만 앞에서 식별된 단일 바운딩 박스의 크기 및 종횡비와는 다른 크기 및 종횡비 중 하나 이상을 갖는 적어도 하나의 추가의 바운딩 박스를 생성하기 위해, 바운딩 컴포넌트(220)에 표시를 전달할 수 있다.
도 6은 이미지, 이미지들의 세트, 또는 비디오 스트림 내의 프레임들 내에서 객체들을 검출하고 식별하기 위한 예시적인 방법(600)을 나타내는 흐름도를 도시한다. 방법(600)의 동작들은 객체 검출 시스템(160)의 컴포넌트들에 의해 수행될 수 있다. 일부 경우들에서, 방법(600)의 특정 동작들은 아래에 더 상세하게 설명되는 바와 같이, 방법(300, 400 또는 500)의 하나 이상의 동작을 사용하여, 또는 방법(300, 400 또는 500)의 하나 이상의 동작의 하위 동작들 또는 프리커서 동작들로서 수행될 수 있다. 일부 실시예들에서, 방법(600)은 다층 객체 모델을 훈련한다. 다층 객체 모델을 훈련할 때, 방법(600)은 번역/스케일 특정 피처들을 학습하기 위해 다층 객체 모델을 미리 훈련할 수 있다.
동작(610)에서, 액세스 컴포넌트(210)는 훈련 이미지들의 세트에 액세스한다. 각각의 훈련 이미지는 알려진 관심 객체를 묘사한다. 일부 예시적인 실시예들에서, 액세스 컴포넌트(210)는 데이터 구조 내의, 또는 이미지 캡처 디바이스로부터 수신되고 있는 비디오 스트림의 이미지들의 세트 또는 프레임들의 세트로서 훈련 이미지들의 세트에 액세스한다. 예를 들어, 액세스 컴포넌트(210)는 클라이언트 디바이스(110) 또는 제3자 시스템의 컴퓨터-판독가능한 저장 디바이스(예를 들어, 메모리 컴포넌트)에 저장된 훈련 이미지들의 세트에 액세스할 수 있다. 다른 예로서, 액세스 컴포넌트(210)는 이미지 캡처 디바이스에 의해 캡처되는 비디오 스트림의 프레임들의 세트 내에서 훈련 이미지들의 세트에 액세스할 수 있다. 훈련 이미지들의 세트는 알려진 관심 객체를 포함할 수 있다. 일부 실시예들에서, 훈련 이미지들의 세트의 각각의 이미지는 훈련 이미지들의 세트 내에 묘사된 관심 객체, 또는 복수의 관심 객체에 대한 신원, 클래스, 유형, 또는 다른 식별 정보를 나타내는 데이터(예를 들어, 메타데이터)에 연관될 수 있거나 데이터를 포함할 수 있다. 식별 정보에 더하여, 일부 경우들에서, 훈련 이미지들의 세트의 각각의 훈련 이미지는 그 훈련 이미지 내의 관심 객체의 적어도 부분의 위치를 식별하는 위치 데이터를 포함한다.
동작(620)에서, 바운딩 컴포넌트(220)는 훈련 이미지들의 세트 내에서 바운딩 박스들의 세트를 식별한다. 각각의 바운딩 박스는 훈련 이미지 내에서의 위치를 식별하는 좌표들의 세트, 해상도 및 레이블을 가질 수 있다. 일부 실시예들에서, 바운딩 컴포넌트(220)는 동작들(320, 410-440 또는 510-520)과 관련하여 설명된 것과 유사하거나 동일한 방식으로 바운딩 박스들의 세트를 식별할 수 있다. 일부 경우들에서, 바운딩 컴포넌트(220)는 훈련 이미지들의 세트 내의 또는 그와 연관된 미리 정의된 바운딩 박스들의 세트로서, 바운딩 박스들의 세트를 식별한다. 예를 들어, 바운딩 박스들의 세트는 훈련 이미지들의 세트의 하나 이상의 훈련 이미지 내의 또는 그에 연관된 데이터로서 포함될 수 있다. 바운딩 박스들의 세트는 훈련 이미지들의 세트의 하나 이상의 훈련 이미지에 연관된 데이터 구조 내의 데이터로서 포함될 수 있다.
동작(630)에서, 바운딩 컴포넌트(220)는 바운딩 박스의 해상도가 지정된 박스 해상도를 초과한다는 것을 결정한다. 다층 객체 모델을 훈련하기 위해, 바운딩 컴포넌트(220)는 이미지의 부분들 또는 이미지에 연관된 미리 결정된 바운딩 박스들에 대해 바운딩 컴포넌트(220)에 의해 생성된 바운딩 박스들의 해상도들을 결정할 수 있다. 바운딩 컴포넌트(220)는 바운딩 박스들을 포함하는 훈련 이미지 내의 관심 객체에 대한 적합한 해상도를 식별하기 위해 바운딩 박스 레이블들을 사용할 수 있다. 해상도는 측정값, 픽셀 카운트, 좌표 세트, 또는 임의의 다른 적절한 해상도 표시일 수 있다. 일부 실시예들에서, 해상도는 이미지 내의 픽셀들의 함수이다. 예를 들어, 해상도는 바운딩 박스의 크기 및 종횡비를 정의하는 수평 및 수직 픽셀들의 카운트일 수 있다. 예를 들어, 바운딩 박스의 초기 해상도는 500 픽셀 × 500 픽셀로 결정될 수 있다.
동작(640)에서, 바운딩 컴포넌트(220)는 지정된 박스 해상도와 일치하도록 바운딩 박스의 해상도를 리스케일링한다. 바운딩 컴포넌트(220)는 바운딩 박스의 중심점을 식별함으로써 해상도를 리스케일링할 수 있다. 바운딩 박스의 중심이 식별되고 나면, 바운딩 컴포넌트(220)는 중심점에 대해 지정된 박스 해상도를 벗어나는 바운딩 박스의 부분들을 잘라내기한다. 바운딩 컴포넌트(220)는 훈련 이미지 내의 관심 객체에 기초하여 바운딩 박스의 해상도를 리스케일링할 수 있다. 일부 실시예들에서, 지정된 박스 해상도는 관심 객체의 유형에 기초하여, 또는 바운딩 박스 레이블 내의 정보에 기초하여 미리 결정될 수 있다. 예를 들어, 바운딩 박스는 해상도를 80 픽셀 × 80 픽셀의 해상도로 리스케일링할 수 있다. 일부 실시예들에서, 바운딩 컴포넌트(220) 및 검출 컴포넌트(230) 중 하나 이상은 리스케일링되고 있는 바운딩 박스 또는 관심 객체에 의해 점유된 것들 외의 이미지 내의 영역들로부터 배경 이미지 패치들을 샘플링할 수 있다.
동작(650)에서, 훈련 컴포넌트(260)는 하나 이상의 모델 파라미터를 초기화한다. 일부 실시예들에서, 훈련 컴포넌트(260)는 가우시안 분포를 사용하여 하나 이상의 모델 파라미터를 초기화한다. 훈련 컴포넌트(260)는 특정 시간에 단 하나의 모델 파라미터가 초기화되고 훈련되거나 테스트되도록, 하나 이상의 파라미터를 단독 방식으로(in a singular manner) 초기화할 수 있다. 모델 파라미터들을 가우시안 분포를 사용하여 초기화하는 것으로 설명되지만, 균일 분포와 같은 다른 분포들이 사용될 수 있다.
모델 파라미터들은 값들의 벡터들로서 이해될 수 있다. 처음에, 모델 파라미터들 또는 그것들의 값들은 알려지지 않을 수 있다. 파라미터의 초기화는 벡터 또는 벡터의 일부로 기능하는 파라미터를 독립적으로 활성화할 수 있다. 일부 실시예들에서, 파라미터들은 무작위로(예를 들어, 가우시안 분포를 사용하여), 균일한 분포를 사용하여, 또는 임의의 다른 적절한 분포를 사용하여 초기화된다. 훈련 컴포넌트(260)는 상한과 하한 사이의 값을 (예를 들어, 무작위로 또는 분포 방법에 따라) 선택할 수 있다. 일부 경우들에서, 파라미터들은 미리 결정된 값들을 사용하여 초기화될 수 있다. 파라미터들을 초기화하기 위해 사용되는 값들은 색상, 채도, 밝기, 계조, 명도, 또는 이미지 내의 다른 값들, 또는 훈련 프로세스 동안 검출될 객체들의 특성에 기초할 수 있다. 예를 들어, 상한과 하한은 이미지의 색상 값들에 기초할 수 있다. 색상 값들이 0 내지 256인 경우, 상한 및 하한은 위에서 언급된 값들 사이에 위치될 수 있다. 또한, 파라미터 값들은 0과 256 사이에서 선택될 수 있다.
동작(660)에서, 훈련 컴포넌트(260)는 평균 손실 함수 값을 획득하기 위해 하나 이상의 모델 파라미터를 반복적으로 조절한다. 평균 손실 값이 객체 함수에 대해 결정될 수 있다. 일부 실시예들에서, 훈련 컴포넌트(260)는 평균 손실 함수 값이 손실 임계 미만으로 떨어질 때까지 하나 이상의 모델 파라미터를 반복적으로 조절한다. 일부 경우들에서, 훈련 컴포넌트(260)는 하나 이상의 모델 파라미터의 반복들에 기인하는 평균 손실 함수 값들의 변화가 변경 임계 미만으로 떨어질 때까지 하나 이상의 모델 파라미터를 반복적으로 조절한다. 변경 임계 미만으로 떨어지는 복수의 평균 손실 함수 값 사이의 변화들을 초래하는 반복들은 머신 학습 모델의 수렴을 나타낼 수 있다. 객체 함수는 로지스틱 회귀 손실을 주는 softmax 함수일 수 있다. 훈련 컴포넌트(260)에 의해 수행되는 모델 훈련은 훈련 이미지들의 세트에 걸쳐 평균화된 객체 함수의 최적화를 수행(예를 들어, 이론적으로 최적화)할 수 있다. 일부 경우들에서, 최적화는 기울기 하강에 의해 수행되고, 기울기들은 역방향 전파로 계산될 수 있다.
동작(660)은 랭킹 손실 함수로 객체 로컬화를 훈련할 수 있다. 일부 예시적인 실시예들에서, 랭킹 손실 함수는 다음과 같이 수학식 1로서 나타내어질 수 있다:
Figure pat00001
수학식 1에 보여진 바와 같이, "f"는 객체 또는 객체 범주에 대한 신뢰도 점수를 출력하는 함수이고, "yi"는 객체 범주에서의 그라운드 트루스 객체(ground truth object)에 대한 훈련 예 "xi"의 최대 IoU(intersection over union)이고, "1"은 표시자 함수일 수 있고, "c"는 힌지 손실의 마진이며, "α"는 페어 샘플링 기준을 제어할 수 있다. 랭킹 손실 함수는 N개의 이미지의 세트(예를 들어, 훈련 이미지들 세트)를 사용할 수 있다. 랭킹 손실 함수는 훈련 이미지들의 세트 사이의 모든 가능한 객체들 또는 이미지들의 쌍에 대한 합산으로서 동작할 수 있다. 랭킹 손실 함수의 최소화는 자연 IoU 기반 랭크에 대해 가장 작은(예를 들어, 이론적으로 가장 작은) 디스패리티를 갖는 훈련 예들에 대한 랭킹을 생성할 수 있다. 일부 경우들에서, 그라운드 트루스 IoU에서의 차이가 랭킹 손실 함수에 의해 제어되는 임계를 초과하는 경우에 훈련 이미지들의 세트 내의 열거 쌍들이 고려될 수 있다. 쌍들은 손실 함수 값들에 의해 내림차순으로 정렬될 수 있다. 이러한 경우들에서, 쌍들의 서브세트는 훈련 동작들을 위해 사용될 수 있다. 일부 경우들에서, 쌍들의 서브세트는 손실 함수 값들에 기초한 최상위 쌍들의 세트일 수 있다. 절차는 하드 네거티브 마이닝 동작(hard negative mining operation)과 유사하게 수행될 수 있다.
도 7은 이미지, 이미지들의 세트, 또는 비디오 스트림 내의 프레임들 내에서 관심 객체들을 모델링하고 식별하기 위한 예시적인 방법(700)을 나타내는 흐름도를 도시한다. 방법(700)의 동작들은 객체 검출 시스템(160)의 컴포넌트들에 의해 수행될 수 있다. 일부 경우들에서, 방법(700)의 특정 동작들은 아래에 더 상세하게 설명되는 바와 같이, 방법들(300, 400, 500 또는 600)의 하나 이상의 동작을 사용하여, 또는 방법들(300, 400, 500 또는 600)의 하나 이상의 동작의 하위 동작들로서 수행될 수 있다. 일부 실시예들에서, 방법(700)은 아래에 설명되는 하나 이상의 동작을 사용하여 다층 객체 모델을 훈련한다. 다층 객체 모델을 훈련할 때, 방법(700)은 번역/스케일 특정 피처들을 학습하기 위해 다층 객체 모델을 미리 훈련할 수 있다.
동작(710)에서, 액세스 컴포넌트(210)는 훈련 이미지들의 세트에 액세스한다. 각각의 훈련 이미지는 알려진 관심 객체를 묘사한다. 훈련 이미지들의 세트는 동작들(310 또는 610)과 관련하여 설명된 것과 유사하거나 동일한 방식으로 액세스될 수 있다.
동작(720)에서, 훈련 컴포넌트(260)는 다층 객체 모델을 이용하여 훈련 이미지들의 세트 내에서 알려진 관심 객체들을 검출한다. 훈련 컴포넌트(260)는 제1 해상도로 설정된 다층 객체 모델의 하나 이상의 계층, 및 제2 해상도로 설정된 다층 객체 모델의 하나 이상의 계층을 사용하여 검출을 수행한다. 일부 실시예들에서, 훈련 컴포넌트(260)는 검출 컴포넌트(230)와 협력하여 알려진 관심 객체들을 검출할 수 있다.
일부 실시예들에서, 훈련 컴포넌트(260)는 동작(720)의 일부로서 또는 그와 함께 동작(722)을 수행한다. 동작(722)에서, 훈련 컴포넌트(260)는 손실 임계 미만의 평균 손실 함수 값을 획득하기 위해 하나 이상의 모델 파라미터를 반복적으로 조절한다. 평균 손실 함수 값은 훈련 이미지들의 세트의 훈련 이미지의 2개 이상의 인스턴스에 대해 획득될 수 있다. 훈련 이미지의 2개 이상의 인스턴스 각각은 별개의 해상도들을 갖는다.
도 8은 이미지, 이미지들의 세트, 또는 비디오 스트림 내의 프레임들 내에서 객체들을 모델링하고 식별하기 위한 예시적인 방법(800)을 나타내는 흐름도를 도시한다. 방법(800)의 동작들은 객체 검출 시스템(160)의 컴포넌트들에 의해 수행될 수 있다. 일부 경우들에서, 방법(800)의 특정 동작들은 아래에 더 상세하게 설명되는 바와 같이, 방법들(300, 400, 500, 600 또는 700)의 하나 이상의 동작을 사용하여, 또는 방법들(300, 400, 500, 600 또는 700)의 하나 이상의 동작의 하위 동작들로서 수행될 수 있다. 일부 실시예들에서, 방법(800)은 다층 객체 모델의 검출 계층들의 세트를 훈련한다.
동작(810)에서, 액세스 컴포넌트(210)는 훈련 이미지들의 세트에 액세스한다. 각각의 훈련 이미지는 알려진 관심 객체를 묘사하며, 적어도 하나의 바운딩 박스를 포함한다. 바운딩 박스는 훈련 이미지 내의 바운딩 박스의 좌표들을 나타내는 튜플, 및 관심 객체에 대한 분류 레이블을 포함한다. 액세스 컴포넌트(210)는 동작들(310, 610, 또는 710)과 관련하여 설명된 것과 유사하거나 동일한 방식으로 훈련 이미지들의 세트에 액세스할 수 있다.
동작(820)에서, 훈련 컴포넌트(260)는 이미지 표현 계층들의 세트의 하나 이상의 이미지 표현 계층, 및 검출 계층들의 세트의 하나 이상의 검출 계층을 반복적으로 초기화한다. 일부 실시예들에서, 하나 이상의 이미지 표현 계층은 방법(700)에 대하여 설명된 방식으로 사전 훈련된 다층 객체 모델로부터 초기화될 수 있다. 하나 이상의 이미지 표현 계층은 이전에 훈련되었고 방법(800)에서 훈련된 모델과는 구별되는 모델로부터 선택될 수 있다.
이미지 표현 계층들은 이전에 훈련된 제1 모델에 연관될 수 있다. 제1 모델은 초기 훈련 이미지들의 세트 내의 객체들에 대한 분류 모델로서 훈련되었을 수 있다. 초기 훈련 이미지들의 세트는 초기 훈련 이미지들 내의 객체들의 배치에 대한 공간 참조가 부족할 수 있다. 제1 모델은 전체 훈련 이미지에 적용되는 범주 레이블을 출력하도록 구성된 분류 모델일 수 있고, 훈련 이미지 내의 관심 객체의 위치의 표시 없이, 훈련 이미지 내의 관심 객체를 식별할 수 있다. 일부 실시예들에서, 방법(800)에 의해 훈련되는 모델은 제1 모델의 이미지 표현 계층들의 적어도 부분을 포함하는 제2 모델이다. 제2 모델은 훈련 이미지들 내의 관심 객체들을 표현하는 훈련 이미지들에 대한 범주 레이블들, 및 훈련 이미지 내의 관심 객체의 위치를 나타내는 공간 방향(예를 들어, 위치) 정보를 출력하기 위해 검출 계층들의 세트를 포함하고 방법(800)에서 훈련한다. 일부 실시예들에서, 훈련 컴포넌트(260)는 랭킹 손실 함수 값을 획득하기 위해 하나 이상의 이미지 표현 계층 및 하나 이상의 검출 계층의 하나 이상의 파라미터를 조절한다. 랭킹 손실 함수 값은 훈련 이미지들의 세트에 대한 손실 임계 미만으로 또는 값들의 세트로서 획득되며, 그것들 사이의 변경은 변경 임계 미만이다.
이하의 번호가 매겨진 예들은 실시예들이다.
1. 방법으로서, 디바이스의 메모리에 결합된 디바이스의 하나 이상의 프로세서를 이용하여, 시야 내의 관심 객체 및 배경을 묘사하는 이미지에 액세스하는 단계; 다층 객체 모델에 의해 구성되는 하나 이상의 프로세서에 의해, 이미지 내의 바운딩 박스들의 세트를 생성하는 단계; 하나 이상의 프로세서에 의해, 다층 객체 모델의 검출 계층들의 세트를 사용하여, 2개 이상의 바운딩 박스 내의 이미지 내의 관심 객체의 적어도 부분을 검출하는 단계; 하나 이상의 프로세서에 의해, 제2 검출 계층의 계층 출력을 제1 검출 계층에 전달하고, 제2 검출 계층의 계층 출력을 제1 검출 계층의 계층 출력에 통합함으로써 컨텍스트 정보를 결정하는 단계; 및 관심 객체의 부분을 검출하고 컨텍스트 정보를 결정하는 것에 기초하여, 하나 이상의 프로세서에 의해, 다층 객체 모델의 이미지 표현 계층들의 세트를 이용하여, 2개 이상의 바운딩 박스 내에 포함된 관심 객체의 부분으로부터 관심 객체를 식별하는 단계를 포함하는, 방법.
2. 예 1의 방법으로서, 바운딩 박스들의 세트를 생성하는 단계는, 이미지 내의 좌표들의 세트를 식별하는 단계 - 좌표들의 세트는 이미지에 대한 하나 이상의 경계의 표시를 포함함 - ; 바운딩 박스들의 세트에 대해 크기들의 세트 및 종횡비들의 세트를 결정하는 단계; 바운딩 박스들의 세트 중의 적어도 하나의 바운딩 박스 내에 좌표들의 세트의 각각의 좌표를 포괄하도록 바운딩 박스들의 분포를 결정하는 단계; 및 바운딩 박스들의 세트를 이미지에 걸쳐 균일하게 분포시키기 위해 바운딩 박스들의 세트를 생성하는 단계 - 바운딩 박스들의 세트의 각각의 바운딩 박스는 크기들의 세트 내에 포함된 크기 및 종횡비들의 세트 내에 포함된 종횡비로 생성됨 - 를 더 포함하는, 방법.
3. 예 1 또는 예 2의 방법으로서, 바운딩 박스들의 세트는 제1 크기 및 제1 종횡비를 갖는 적어도 하나의 바운딩 박스, 및 제2 크기 및 제2 종횡비를 갖는 적어도 하나의 바운딩 박스를 포함하고, 제1 크기는 제2 크기로부터 구별되며, 제1 종횡비는 제2 종횡비로부터 구별되는, 방법.
4. 예 1 내지 예 3 중 임의의 하나 이상의 방법으로서, 다층 객체 모델의 검출 계층들의 세트를 사용하여 관심 객체의 부분을 검출하는 단계는, 제1 검출 계층을 이용하여 2개 이상의 바운딩 박스 중의 제1 바운딩 박스 내에서 관심 객체의 부분의 일부를 검출하는 단계 - 제1 검출 계층은 제1 바운딩 박스에 대응하는 제1 스케일에 연관됨 - ; 및 제2 검출 계층을 이용하여 2개 이상의 바운딩 박스 중의 제2 바운딩 박스 내에서 관심 객체의 부분의 일부를 검출하는 단계 - 제2 검출 계층은 제2 바운딩 박스에 대응하는 제2 스케일에 연관됨 - 를 더 포함하는, 방법.
5. 예 1 내지 예 4 중 임의의 하나 이상의 방법으로서, 제1 검출 계층은 제1 바운딩 박스 내에 묘사된 관심 객체의 일부에 대한 제1 신뢰도 점수 및 좌표들의 제1 세트를 생성하고, 제2 검출 계층은 제2 바운딩 박스 내에 묘사된 관심 객체의 일부에 대한 제2 신뢰도 점수 및 좌표들의 제2 세트를 생성하는, 방법.
6. 예 1 내지 예 5 중 임의의 하나 이상의 방법으로서, 제2 검출 계층의 계층 출력은 다층 객체 모델의 디컨볼루션 계층을 이용하여 제1 검출 계층에 전달되는, 방법.
7. 예 1 내지 예 6 중 임의의 하나 이상의 방법으로서, 훈련 이미지들의 세트에 액세스하는 단계 - 각각의 훈련 이미지는 알려진 관심 객체를 묘사함 - ; 훈련 이미지들의 세트 내에서 바운딩 박스들의 세트를 식별하는 단계 - 각각의 바운딩 박스는 훈련 이미지 내에서의 위치를 식별하는 좌표들의 세트, 해상도 및 레이블을 가짐 - ; 바운딩 박스의 해상도가 지정된 박스 해상도를 초과하는 것을 결정하는 단계; 바운딩 박스의 중심점을 식별하고, 중심점에 대하여 지정된 박스 해상도를 벗어나는 바운딩 박스의 부분들을 잘라내기함으로써, 바운딩 박스의 해상도를 지정된 박스 해상도에 일치하도록 리스케일링하는 단계; 하나 이상의 모델 파라미터를 초기화하는 단계; 및 하나 이상의 모델 파라미터의 반복들에 기인한 평균 손실 함수 값들의 변경이 변경 임계 미만으로 떨어질 때까지 하나 이상의 모델 파라미터를 반복적으로 조절하는 단계에 의해, 다층 객체 모델을 훈련하는 단계를 더 포함하는, 방법.
8. 예 1 내지 예 7 중 임의의 하나 이상의 방법으로서, 훈련 이미지들의 세트에 액세스하는 단계 - 각각의 훈련 이미지는 알려진 관심 객체를 묘사함 - ; 및 다층 객체 모델을 이용하여 훈련 이미지들의 세트 내에서 알려진 관심 객체를 검출하는 단계 - 검출은 제1 해상도로 설정된 다층 객체 모델의 하나 이상의 계층, 및 제2 해상도로 설정된 다층 객체 모델의 하나 이상의 계층으로 수행됨 - 에 의해, 다층 객체 모델을 훈련하는 단계를 더 포함하는, 방법.
9. 예 1 내지 예 8 중 임의의 하나 이상의 방법으로서, 알려진 관심 객체를 검출하는 단계는, 평균 손실 함수 값들의 변경이 변경 임계 미만으로 떨어질 때까지 하나 이상의 모델 파라미터를 반복적으로 조절하는 단계를 더 포함하고, 평균 손실 함수는 훈련 이미지들의 세트의 훈련 이미지의 2개 이상의 인스턴스에 대해 획득되고, 훈련 이미지의 2개 이상의 인스턴스 각각은 별개의 해상도들을 갖는, 방법.
10. 예 1 내지 예 9 중 임의의 하나 이상의 방법으로서, 훈련 이미지들의 세트에 액세스하는 단계 - 각각의 훈련 이미지는 알려진 관심 객체를 묘사하고, 훈련 이미지 내의 바운딩 박스의 좌표들을 나타내는 튜플 및 알려진 관심 객체에 대한 분류 레이블을 포함하는 적어도 하나의 바운딩 박스를 포함함 - ; 및 이미지 표현 계층들의 세트의 하나 이상의 이미지 표현 계층 및 검출 계층들의 세트의 하나 이상의 검출 계층을 반복적으로 초기화하고, 하나 이상의 모델 파라미터의 반복에 기인한 평균 손실 함수 값들의 변경이 변경 임계 미만으로 떨어질 때까지 하나 이상의 이미지 표현 계층 및 하나 이상의 검출 계층의 하나 이상의 파라미터를 조절하는 단계에 의해 다층 객체 모델의 검출 계층들의 세트를 훈련하는 단계를 더 포함하는 방법.
11. 시스템으로서, 하나 이상의 프로세서; 및 하나 이상의 프로세서에 결합되고, 프로세서-실행가능한 명령어들을 저장하는 프로세서-판독가능한 저장 디바이스를 포함하고, 프로세서-실행가능한 명령어들은, 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금: 시야 내의 관심 객체 및 배경을 묘사하는 이미지에 액세스하는 단계; 다층 객체 모델에 의해 구성되는 하나 이상의 프로세서에 의해, 이미지 내의 바운딩 박스들의 세트를 생성하는 단계; 다층 객체 모델의 검출 계층들의 세트를 사용하여, 2개 이상의 바운딩 박스 내의 이미지 내에서 관심 객체의 적어도 부분을 검출하는 단계; 제2 검출 계층의 계층 출력을 제1 검출 계층에 전달하고, 제2 검출 계층의 계층 출력을 제1 검출 계층의 계층 출력을 통합함으로써 컨텍스트 정보를 결정하는 단계; 및 관심 객체의 부분을 검출하고 컨텍스트 정보를 결정하는 것에 기초하여, 다층 객체 모델의 이미지 표현 계층들의 세트를 이용하여, 2개 이상의 바운딩 박스 내에 포함된 관심 객체의 부분들로부터 관심 객체를 식별하는 단계를 포함하는 동작들을 수행하게 하는, 시스템.
12. 예 11의 시스템으로서, 바운딩 박스들의 세트를 생성하는 단계는, 이미지 내의 좌표들의 세트를 식별하는 단계 - 좌표들의 세트는 이미지에 대한 하나 이상의 경계의 표시를 포함함 - ; 바운딩 박스들의 세트에 대해 크기들의 세트 및 종횡비들의 세트를 결정하는 단계; 바운딩 박스들의 세트 중의 적어도 하나의 바운딩 박스 내에 좌표들의 세트의 각각의 좌표를 포괄하도록 바운딩 박스들의 분포를 결정하는 단계; 및 바운딩 박스들의 세트를 이미지에 걸쳐 균일하게 분포시키도록 바운딩 박스들의 세트를 생성하는 단계 - 바운딩 박스들의 세트의 각각의 바운딩 박스는 크기들의 세트 내에 포함된 크기 및 종횡비들의 세트 내에 포함된 종횡비로 생성됨 - 를 더 포함하는, 시스템.
13. 예 11 또는 예 12의 시스템으로서, 다층 객체 모델의 검출 계층들의 세트를 사용하여 관심 객체의 부분을 검출하는 단계는, 제1 검출 계층을 이용하여 2개 이상의 바운딩 박스 중의 제1 바운딩 박스 내의 관심 객체의 부분의 일부를 검출하는 단계 - 제1 검출 계층은 제1 바운딩 박스에 대응하는 제1 스케일에 연관됨 - ; 및 제2 검출 계층을 이용하여 2개 이상의 바운딩 박스 중의 제2 바운딩 박스 내의 관심 객체의 부분의 적어도 일부를 검출하는 단계 - 제2 검출 계층은 제2 바운딩 박스에 대응하는 제2 스케일에 연관됨 - 를 더 포함하는, 시스템.
14. 예 11 내지 예 13 중 임의의 하나 이상의 시스템으로서, 제2 검출 계층의 계층 출력은 다층 객체 모델의 디컨볼루션 계층을 이용하여 제1 검출 계층에 전달되는, 시스템.
15. 예 11 내지 예 14 중 임의의 하나 이상의 시스템으로서, 훈련 이미지들의 세트에 액세스하는 단계 - 각각의 훈련 이미지는 알려진 관심 객체를 묘사함 - ; 훈련 이미지들의 세트 내의 바운딩 박스들의 세트를 식별하는 단계 - 각각의 바운딩 박스는 훈련 이미지 내에서의 위치를 식별하는 좌표들의 세트, 해상도 및 레이블을 가짐 - ; 바운딩 박스의 해상도가 지정된 박스 해상도를 초과하는 것을 결정하는 단계; 바운딩 박스의 중심점을 식별하고, 중심점에 대하여 지정된 박스 해상도를 벗어나는 바운딩 박스의 부분들을 잘라내기함으로써, 바운딩 박스의 해상도를 지정된 박스 해상도에 일치하도록 리스케일링하는 단계; 하나 이상의 모델 파라미터를 초기화하는 단계; 및 하나 이상의 모델 파라미터의 반복들에 기인한 평균 손실 함수 값들의 변경이 변경 임계 미만으로 떨어질 때까지 하나 이상의 모델 파라미터를 반복적으로 조절하는 단계에 의해, 다층 객체 모델을 훈련하는 단계를 더 포함하는, 시스템.
16. 프로세서-실행가능한 명령어들을 저장하는 프로세서-판독가능한 저장 디바이스로서, 프로세서-실행가능한 명령어들은, 머신의 프로세서에 의해 실행될 때, 머신으로 하여금: 시야 내의 관심 객체 및 배경을 묘사하는 이미지에 액세스하는 단계; 하나 이상의 프로세서를 이용하여 구현되는 다층 객체 모델에 의해, 이미지 내의 바운딩 박스들의 세트를 생성하는 단계; 다층 객체 모델의 검출 계층들의 세트를 사용하여, 2개 이상의 바운딩 박스 내의 이미지 내의 관심 객체의 적어도 부분을 검출하는 단계; 제2 검출 계층의 계층 출력을 제1 검출 계층에 전달하고, 제2 검출 계층의 계층 출력을 제1 검출 계층의 계층 출력을 통합함으로써 컨텍스트 정보를 결정하는 단계; 및 관심 객체의 부분을 검출하고 컨텍스트 정보를 결정하는 것에 기초하여, 다층 객체 모델의 이미지 표현 계층들의 세트를 이용하여, 2개 이상의 바운딩 박스 내에 포함된 관심 객체의 부분들로부터 관심 객체를 식별하는 단계를 포함하는 동작들을 수행하게 하는, 프로세서-판독가능한 저장 디바이스.
17. 예 16의 프로세서-판독가능한 저장 디바이스로서, 바운딩 박스들의 세트를 생성하는 단계는, 이미지 내의 좌표들의 세트를 식별하는 단계 - 좌표들의 세트는 이미지에 대한 하나 이상의 경계의 표시를 포함함 - ; 바운딩 박스들의 세트에 대해 크기들의 세트 및 종횡비들의 세트를 결정하는 단계; 바운딩 박스들의 세트의 적어도 하나의 바운딩 박스 내에 좌표들의 세트의 각각의 좌표를 포괄하도록 바운딩 박스들의 분포를 결정하는 단계; 및 바운딩 박스들의 세트를 이미지에 걸쳐 균일하게 분포시키도록 바운딩 박스들의 세트를 생성하는 단계 - 바운딩 박스들의 세트의 각각의 바운딩 박스는 크기들의 세트 내에 포함된 크기 및 종횡비들의 세트 내에 포함된 종횡비로 생성됨 - 를 더 포함하는, 프로세서-판독가능한 저장 디바이스.
18. 예 16 또는 예 17의 프로세서-판독가능한 저장 디바이스로서, 다층 객체 모델의 검출 계층들의 세트를 사용하여 관심 객체의 부분을 검출하는 단계는, 제1 검출 계층을 이용하여 2개 이상의 바운딩 박스 중의 제1 바운딩 박스 내에서 관심 객체의 부분의 일부를 검출하는 단계 - 제1 검출 계층은 제1 바운딩 박스에 대응하는 제1 스케일에 연관됨 - ; 및 제2 검출 계층을 이용하여 2개 이상의 바운딩 박스 중의 제2 바운딩 박스 내에서 관심 객체의 부분의 일부를 검출하는 단계 - 제2 검출 계층은 제2 바운딩 박스에 대응하는 제2 스케일에 연관됨 - 를 더 포함하는, 프로세서-판독가능한 저장 디바이스.
19. 예 16 내지 예 18 중 임의의 하나 이상의 프로세서-판독가능한 저장 디바이스로서, 제2 검출 계층의 계층 출력은 다층 객체 모델의 디컨볼루션 계층을 이용하여 제1 검출 계층에 전달되는, 프로세서-판독가능한 저장 디바이스.
20. 예 16 내지 예 19 중 임의의 하나 이상의 프로세서-판독가능한 저장 디바이스로서, 훈련 이미지들의 세트에 액세스하는 단계 - 각각의 훈련 이미지는 알려진 관심 객체를 묘사함 - ; 훈련 이미지들의 세트 내의 바운딩 박스들의 세트를 식별하는 단계 - 각각의 바운딩 박스는 훈련 이미지 내에서의 위치를 식별하는 좌표들의 세트, 해상도 및 레이블을 가짐 - ; 바운딩 박스의 해상도가 지정된 박스 해상도를 초과하는 것을 결정하는 단계; 바운딩 박스의 중심점을 식별하고, 중심점에 대하여 지정된 박스 해상도를 벗어나는 바운딩 박스의 부분들을 잘라내기함으로써, 바운딩 박스의 해상도를 지정된 박스 해상도에 일치하도록 리스케일링하는 단계; 하나 이상의 모델 파라미터를 초기화하는 단계; 및 하나 이상의 모델 파라미터의 반복들에 기인한 평균 손실 함수 값들의 변경이 변경 임계 미만으로 떨어질 때까지 하나 이상의 모델 파라미터를 반복적으로 조절하는 단계에 의해, 다층 객체 모델을 훈련하는 단계를 더 포함하는, 프로세서-판독가능한 저장 디바이스.
21. 머신의 하나 이상의 프로세서에 의해 실행될 때, 머신으로 하여금 예 1 내지 예 10 중 어느 하나의 방법을 수행하게 하는 명령어들을 지니는 머신-판독가능한 매체.
모듈, 컴포넌트, 및 로직
특정 실시예들은, 본 명세서에서 로직 또는 다수의 컴포넌트, 모듈 또는 메커니즘을 포함하는 것으로서 설명된다. 컴포넌트들은 하드웨어 컴포넌트들을 구성할 수 있다. "하드웨어 컴포넌트"는, 특정 동작을 수행할 수 있는 유형 유닛(tangible unit)이며, 특정 물리적 방식으로 구성되거나 배열될 수 있다. 다양한 예시적인 실시예에서, 컴퓨터 시스템(예를 들어, 독립형 컴퓨터 시스템, 클라이언트 컴퓨터 시스템, 또는 서버 컴퓨터 시스템) 또는 컴퓨터 시스템의 하드웨어 컴포넌트(예를 들어, 적어도 하나의 하드웨어 프로세서, 프로세서, 또는 프로세서 그룹)은, 본 명세서에서 설명된 특정 동작들을 수행하도록 동작하는 하드웨어 컴포넌트로서 소프트웨어(예를 들어, 애플리케이션 또는 애플리케이션 부분)에 의해 구성된다.
일부 실시예들에서, 하드웨어 컴포넌트는, 기계적으로, 전자적으로, 또는 이들의 임의의 적절한 조합으로 구현된다. 예를 들어, 하드웨어 컴포넌트는 특정 동작들을 수행하도록 영구적으로 구성된 전용 회로 또는 로직을 포함할 수 있다. 예를 들어, 하드웨어 컴포넌트는, FPGA(Field-Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit) 등의 특별-목적 프로세서일 수 있다. 하드웨어 컴포넌트는 또한, 특정 동작들을 수행하도록 소프트웨어에 의해 일시적으로 구성된 프로그램가능 로직 또는 회로를 포함할 수 있다. 예를 들어, 하드웨어 컴포넌트는, 범용 프로세서 또는 다른 프로그램가능 프로세서 내에 포함된 소프트웨어를 포함할 수 있다. 기계적으로, 전용 및 영구적으로 구성된 회로로, 또는 일시적으로 구성된 회로(예를 들어, 소프트웨어에 의해 구성됨)로 하드웨어 컴포넌트를 구현하려는 결정은, 비용 및 시간 고려사항에 의해 결정될 수 있다는 것을 이해할 것이다.
따라서, "하드웨어 컴포넌트"라는 구문은, 특정 방식으로 동작하거나 본 명세서에서 설명된 특정 동작들을 수행하도록 물리적으로 구성되거나, 영구적으로 구성되거나[예를 들어, 물리결선된(hardwired)], 또는 일시적으로 구성된(예를 들어, 프로그램된) 유형 엔티티(tangible entity)를 포괄하는 것으로 이해되어야 한다. 본 명세서에서 사용될 때, "하드웨어-구현된 컴포넌트"란 하드웨어 컴포넌트를 말한다. 하드웨어 컴포넌트들이 일시적으로 구성되는(예를 들어, 프로그램되는) 실시예들을 고려할 때, 하드웨어 컴포넌트들 각각은 임의의 한 시점에서 구성되거나 인스턴스화될 필요는 없다. 예를 들어, 하드웨어 컴포넌트가 소프트웨어에 의해 특별-목적 프로세서가 되도록 구성된 범용 프로세서를 포함하는 경우, 범용 프로세서는 상이한 시간들에서(예를 들어, 상이한 하드웨어 컴포넌트들을 포함하는) 각각 상이한 특별-목적 프로세서들로서 구성될 수 있다. 소프트웨어는, 그에 따라 특정한 프로세서 또는 프로세서들을 구성하여, 예를 들어 한 시점에서는 특정한 하드웨어 컴포넌트를 구성하고 상이한 시점에서 상이한 하드웨어 컴포넌트를 구성할 수 있다.
하드웨어 컴포넌트는 다른 하드웨어 컴포넌트들에 정보를 제공하고 이로부터 정보를 수신할 수 있다. 따라서, 설명된 하드웨어 컴포넌트들은 통신가능하게 결합된 것으로 간주될 수 있다. 복수의 하드웨어 컴포넌트가 동시에 존재하는 경우, 통신은 2개 이상의 하드웨어 컴포넌트들 사이에서(예를 들어, 적절한 회로 및 버스를 통한) 신호 전송을 통해 달성될 수 있다. 복수의 하드웨어 컴포넌트들이 상이한 시간들에서 구성되거나 인스턴스화되는 실시예에서, 이러한 하드웨어 컴포넌트들 사이의 통신은, 예를 들어, 복수의 하드웨어 컴포넌트들이 액세스하는 메모리 구조 내의 정보의 저장 및 회수를 통해 달성될 수 있다. 예를 들어, 하나의 하드웨어 컴포넌트는 소정의 동작을 수행하고 그 동작의 출력을 통신가능하게 결합된 메모리 디바이스에 저장한다. 그 다음, 또 다른 하드웨어 컴포넌트는, 나중에, 메모리 디바이스에 액세스하여 저장된 출력을 회수 및 처리할 수 있다. 하드웨어 컴포넌트는 또한, 입력 또는 출력 디바이스와의 통신을 개시할 수 있고, 자원(예를 들어, 정보 모음)에 관해 동작할 수 있다.
본 명세서에서 설명된 예시적인 방법들의 다양한 동작들은, 적어도 부분적으로, 관련 동작들을 수행하도록(예를 들어, 소프트웨어에 의해) 일시적으로 구성되거나 영구적으로 구성된 프로세서들에 의해 수행될 수 있다. 일시적으로 또는 영구적으로 구성되어 있는지에 관계없이, 이러한 프로세서들은 본 명세서에서 설명된 동작 또는 기능을 수행하도록 동작하는 프로세서-구현된 컴포넌트들을 구성한다. 본 명세서에서 사용될 때, "프로세서-구현된 컴포넌트"란 프로세서를 이용하여 구현된 하드웨어 컴포넌트를 말한다.
유사하게, 본 명세서에서 설명된 방법들은 적어도 부분적으로 프로세서-구현될 수 있고, 여기서, 특정한 프로세서 또는 프로세서들은 하드웨어의 한 예이다. 예를 들어, 방법의 동작들 중 적어도 부분은 프로세서 또는 프로세서-구현된 컴포넌트에 의해 수행될 수 있다. 게다가, 프로세서는 또한, "클라우드 컴퓨팅" 환경에서 관련 동작의 수행을 지원하도록 또는 "서비스로서의 소프트웨어(software as a service)"(SaaS)로서 동작할 수 있다. 예를 들어, 동작들 중 적어도 부분은, (프로세서들을 포함하는 머신의 예로서의) 컴퓨터들의 그룹에 의해 수행될 수 있고, 이들 동작들은 네트워크(예를 들어, 인터넷) 및 적절한 인터페이스[예를 들어, 애플리케이션 프로그램 인터페이스(API)]를 통해 액세스가능하다.
특정 동작들의 수행은, 단일 머신 내에 존재할 뿐만 아니라 다수의 머신들에 걸쳐 배치된, 프로세서들 사이에서 분산될 수 있다. 일부 예시적인 실시예에서, 프로세서 또는 프로세서-구현된 컴포넌트들은 단일의 지리적 위치에(예를 들어, 가정 환경, 사무실 환경, 또는 서버 팜 내에) 위치한다. 다른 예시적인 실시예에서, 프로세서 또는 프로세서-구현된 컴포넌트들은 다수의 지리적 위치에 걸쳐 분산된다.
애플리케이션들
도 9는, 일부 실시예에 따른, 모바일 운영 체제(예를 들어, IOS™, ANDROID™, WINDOWS® Phone 또는 기타의 모바일 운영 체제)를 실행하는 예시적인 모바일 디바이스(900)를 나타낸다. 한 실시예에서, 모바일 디바이스(900)는 사용자(902)로부터 촉각 데이터를 수신하도록 동작가능한 터치 스크린을 포함한다. 예를 들어, 사용자(902)는 모바일 디바이스(900)를 물리적으로 터치(904)할 수 있고, 터치(904)에 응답하여, 모바일 디바이스(900)는, 터치 위치, 터치 힘, 또는 제스쳐 모션과 같은 촉각 데이터를 결정할 수 있다. 다양한 예시적인 실시예에서, 모바일 디바이스(900)는 애플리케이션을 론칭하거나 모바일 디바이스(900)의 다양한 양태를 관리하도록 동작가능한 홈 스크린(906)(예를 들어 IOS™ 상의 Springboard)을 디스플레이한다. 일부 예시적인 실시예에서, 홈 스크린(906)은, 배터리 수명, 접속성, 또는 기타의 하드웨어 상태 등의, 상태 정보를 제공한다. 사용자(902)는 각각의 사용자 인터페이스 요소에 의해 점유된 영역을 터치함으로써 사용자 인터페이스 요소를 활성화할 수 있다. 이러한 방식으로, 사용자(902)는 모바일 디바이스(900)의 애플리케이션과 상호작용한다. 예를 들어, 홈 스크린(906)에 포함된 특정한 아이콘에 의해 점유된 영역을 터치하는 것은 그 특정한 아이콘에 대응하는 애플리케이션의 론칭을 야기한다.
모바일 디바이스(900)는, 도 9에 도시된 바와 같이, 촬영 디바이스(908)를 포함한다. 촬영 디바이스(908)는, 비디오 스트림 또는 하나 이상의 연속적인 이미지를 캡처할 수 있는 모바일 디바이스(900)에 결합된 카메라 또는 기타 임의의 디바이스일 수 있다. 촬영 디바이스(908)는 객체 검출 시스템(160) 또는 선택가능한 사용자 인터페이스 요소에 의해 트리거되어 비디오 스트림 또는 일련의 이미지들의 캡처를 개시하고 비디오 스트림 또는 일련의 이미지들을 본 개시내용에서 설명된 하나 이상의 방법에 따라 처리하기 위해 객체 검출 시스템(160)에 전달할 수 있다.
네이티브 애플리케이션(예를 들어, Objective-C, Swift, 또는 IOS™ 상에서 실행중인 다른 적절한 언어로 프로그램된 애플리케이션, 또는 ANDROID™에서 실행되는 Java로 프로그램된 애플리케이션), 모바일 웹 애플리케이션(예를 들어, HTML5(Hypertext Markup Language-5)로 작성된 애플리케이션) 또는 하이브리드 애플리케이션(예를 들어, HTML5 세션을 론칭하는 네이티브 쉘 애플리케이션) 등의, ("앱"이라고도 하는) 많은 다양한 애플리케이션들이 모바일 디바이스(900) 상에서 실행될 수 있다. 예를 들어, 모바일 디바이스(900)는, 메시징 앱, 오디오 녹음 앱, 카메라 앱, 북 리더 앱, 미디어 앱, 피트니스 앱, 파일 관리 앱, 위치확인 앱, 브라우저 앱, 설정 앱, 연락처 앱, 전화 통화 앱, 또는 기타의 앱(예를 들어, 게임 앱, 소셜 네트워킹 앱, 바이오메트릭 모니터링 앱)을 포함한다. 또 다른 예에서, 모바일 디바이스(900)는, 일부 실시예에 따라, 사용자가 미디어 콘텐츠를 포함하는 단기 메시지(ephemeral message)를 교환하는 것을 허용하는 SNAPCHAT® 등의 소셜 메시징 앱(910)을 포함한다. 이 예에서, 소셜 메시징 애플리케이션(910)은 본 명세서에서 설명된 실시예들의 양태들을 포함할 수 있다. 예를 들어, 일부 실시예들에서, 소셜 메시징 애플리케이션(910)은 사용자 및 소셜 메시징 애플리케이션(910)에 의해 생성된 단기 미디어 갤러리를 포함한다. 이러한 갤러리는, 사용자에 의해 게시되고 사용자의 연락처(예를 들어, "친구")가 볼 수 있는 비디오 또는 사진으로 구성될 수 있다. 대안으로서, 공개 갤러리는, 애플리케이션의 임의의 사용자로부터의(및 모든 사용자에 의해 액세스가능한) 미디어로 구성된 소셜 메시징 애플리케이션(910)의 관리자에 의해 생성될 수 있다. 역시 또 다른 실시예에서, 소셜 메시징 애플리케이션(910)은, 소셜 메시징 애플리케이션의 플랫폼 상의 발행자에 의해 생성되고 임의의 사용자에 의해 액세스될 수 있는 기사 및 기타의 콘텐츠로 구성된 "잡지" 피처를 포함할 수 있다. 이들 환경들 또는 플랫폼들 중 임의의 것이 본 개시내용의 실시예들의 개념을 구현하는 데 이용될 수 있다.
일부 실시예들에서, 단기 메시지 시스템은, 시청 시간 또는 시청 완료 등의 삭제 트리거 이벤트에 후속하여 삭제되는 단기 비디오 클립 또는 이미지를 갖는 메시지를 포함할 수 있다. 이러한 실시예에서, 객체 검출 시스템(160)을 구현하는 디바이스는, 단기 비디오 클립이 디바이스(900)에 의해 캡처되고 단기 비디오 클립을 단기 메시지 시스템을 이용하여 또 다른 디바이스에 전송할 때, 단기 비디오 클립 내의 얼굴을 식별, 추적, 추출 및 그 표현을 생성할 수 있다.
소프트웨어 아키텍처
도 10은 전술된 디바이스들 상에 설치될 수 있는 소프트웨어의 아키텍처(1002)를 나타내는 블록도(1000)이다. 도 10은 소프트웨어 아키텍처의 비제한적 예일 뿐이고, 본 명세서에서 설명된 기능을 용이화하기 위해 많은 다른 아키텍처가 구현될 수 있다는 것을 이해할 것이다. 다양한 실시예에서, 소프트웨어(1002)는, 프로세서(1110), 메모리(1130), 및 I/O 컴포넌트(1150)를 포함하는 도 11의 머신(1100) 등의 하드웨어에 의해 구현된다. 이러한 예시적인 아키텍처에서, 소프트웨어(1002)는 각각의 계층이 특정한 기능을 제공할 수 있는 계층들의 스택으로서 개념화될 수 있다. 예를 들어, 소프트웨어(1002)는, 운영 체제(1004), 라이브러리(1006), 프레임워크(1008), 및 애플리케이션(1010) 등의 계층들을 포함한다. 동작상, 애플리케이션(1010)은, 일부 실시예에 따라, 소프트웨어 스택을 통해 애플리케이션 프로그래밍 인터페이스(API) 호출(1012)을 기동하고, API 호출(1012)에 응답하여 메시지(1014)를 수신한다.
다양한 구현에서, 운영 체제(1004)는 하드웨어 자원을 관리하고 공통 서비스를 제공한다. 운영 체제(1004)는, 예를 들어, 커널(1020), 서비스(1022) 및 드라이버(1024)를 포함한다. 커널(1020)은 일부 실시예에 따라 하드웨어와 기타의 소프트웨어 계층들 사이의 추상화 계층(abstraction layer)으로서 기능한다. 예를 들어, 커널(1020)은, 특히, 메모리 관리, 프로세서 관리(예를 들어, 스케줄링), 컴포넌트 관리, 네트워킹, 및 보안 설정을 제공한다. 서비스(1022)는 다른 소프트웨어 계층들에 대한 다른 공통 서비스를 제공할 수 있다. 일부 실시예에 따라, 드라이버(1024)는 기저 하드웨어를 제어하거나 이와 인터페이싱하는 것을 담당한다. 예를 들어, 드라이버(1024)는, 디스플레이 드라이버, 카메라 드라이버, BLUETOOTH® 드라이버, 플래시 메모리 드라이버, 직렬 통신 드라이버(예를 들어, USB 드라이버), WI-FI® 드라이버, 오디오 드라이버, 전력 관리 드라이버 등을 포함할 수 있다.
일부 실시예들에서, 라이브러리(1006)는 애플리케이션(1010)에 의해 이용되는 로우 레벨 공통 인프라스트럭처를 제공한다. 라이브러리(1006)는, 메모리 할당 함수, 문자열 조작 함수, 수학 함수 등의 함수를 제공할 수 있는 시스템 라이브러리(1030)(예를 들어, C 표준 라이브러리)를 포함할 수 있다. 또한, 라이브러리(1006)는, 미디어 라이브러리[예를 들어, MPEG4(Moving Picture Experts Group-4), H.264 또는 AVC(Advanced Video Coding), MP3(Moving Picture Experts Group Layer-3), AAC(Advanced Audio Coding), AMR(Adaptive Multi-Rate) 오디오 코덱, JPEG 또는 JPG(Joint Photographic Experts Group), PNG(Portable Network Graphics) 등의 다양의 미디어 포멧의 프리젠테이션과 조작을 지원하는 라이브러리들] 그래픽 라이브러리[예를 들어, 그래픽 콘텐츠를 디스플레이 상에서 2차원(2D) 및 3차원(3D)으로 렌더링하는 데 이용되는 OpenGL 프레임워크], 데이터베이스 라이브러리(예를 들어, 다양한 관계형 데이터베이스 기능을 제공하는 SQLite), 웹 라이브러리(예를 들어, 웹 브라우징 기능을 제공하는 WebKit) 등의 API 라이브러리(1032)를 포함할 수 있다. 라이브러리(1006)는 또한, 많은 다른 API를 애플리케이션(1010)에 제공하는 광범위한 다른 라이브러리(1034)를 포함할 수 있다.
프레임워크(1008)는 일부 실시예에 따라 애플리케이션(1010)에 의해 이용될 수 있는 하이 레벨 공통 인프라스트럭처를 제공한다. 예를 들어, 프레임워크(1008)는, 다양한 그래픽 사용자 인터페이스(GUI) 기능, 하이-레벨 자원 관리, 하이-레벨 위치확인 서비스 등을 제공한다. 프레임워크(1008)는 애플리케이션(1010)에 의해 이용될 수 있는 광범위한 스펙트럼의 다른 API들을 제공할 수 있으며, 그 중 일부는 특정한 운영 체제 또는 플랫폼 특유일 수 있다.
한 예시적인 실시예에서, 애플리케이션(1010)은, 홈 애플리케이션(1050), 연락처 애플리케이션(1052), 브라우저 애플리케이션(1054), 북 리더 애플리케이션(1056), 위치파악 애플리케이션(1058), 미디어 애플리케이션(1060), 메시징 애플리케이션(1062), 게임 애플리케이션(1064), 및 제3자 애플리케이션(1066) 등의 광범위한 애플리케이션을 포함한다. 일부 실시예에 따르면, 애플리케이션(1010)은 프로그램에서 정의된 기능들을 실행하는 프로그램이다. 객체 지향형 프로그래밍 언어(예를 들어, Objective-C, Java 또는 C++) 또는 절차형 프로그래밍 언어(예를 들어, C 또는 어셈블리 언어) 등의 다양한 방식으로 구조화된 애플리케이션(1010)을 생성하기 위해 다양한 프로그래밍 언어가 이용될 수 있다. 특정한 예에서, 제3자 애플리케이션(1066)(예를 들어, 특정한 플랫폼의 벤더 이외의 엔티티에 의해 ANDROID™ 또는 IOS™ 소프트웨어 개발 키트(software development kit)(SDK)를 이용하여 개발된 애플리케이션)은, IOS™, ANDROID™, WINDOWS® PHONE, 또는 다른 모바일 운영 체제들과 같은 모바일 운영 체제 상에서 실행되는 모바일 소프트웨어일 수 있다. 이 예에서, 제3자 애플리케이션(1066)은 본 명세서에서 설명된 기능을 용이화하기 위해 운영 체제(1004)에 의해 제공되는 API 호출(1012)을 기동할 수 있다.
예시적인 머신 아키텍처 및 머신-판독가능한 매체
도 11은, 머신-판독가능한 매체(예를 들어, 머신-판독가능한 저장 매체)로부터 명령어들(예를 들어, 프로세서-실행가능한 명령어들)을 판독하여 본 명세서에서 논의된 방법론들 중 임의의 것을 수행할 수 있는, 일부 실시예에 따른 머신(1100)의 컴포넌트들을 나타내는 블록도이다. 구체적으로, 도 11은 예시적인 형태의 컴퓨터 시스템으로 된 머신(1100)의 개략적 표현을 도시하며, 머신 내부에서, 머신(1100)으로 하여금 본 명세서에서 논의된 방법론들 중 임의의 것을 수행하게 하기 위한 명령어들(1116)(예를 들어, 소프트웨어, 프로그램, 애플리케이션, 애플릿, 앱 또는 기타의 실행가능한 코드)이 실행될 수 있다. 대안적인 실시예에서, 머신(1100)은 독립형 디바이스로서 동작하거나 다른 머신에 결합(예를 들어, 네트워킹)될 수 있다. 네트워킹된 배치에서, 머신(1100)은 서버-클라이언트 네트워크 환경에서 서버 머신 또는 클라이언트 머신의 용량에서 동작하거나, 피어-투-피어(또는 분산형) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 머신(1100)은, 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(PC), 태블릿 컴퓨터, 랩탑 컴퓨터, 넷북, 셋톱박스(STB), PDA(personal digital assistant), 엔터테인먼트 미디어 시스템, 셀룰러 전화, 스마트 폰, 모바일 디바이스, 착용형 디바이스(예를 들어, 스마트 시계), 스마트 홈 디바이스(예를 들어, 스마트 어플라이언스), 기타의 스마트 디바이스, 웹 어플라이언스, 네트워크 라우터, 네트워크 스위치, 네트워크 브릿지, 또는 머신(1100)에 의해 취해질 동작들을 명시하는 명령어들(1116)을 순차적으로 또는 기타의 방식으로 실행할 수 있는 임의의 머신을 포함할 수 있지만, 이것으로 제한되는 것은 아니다. 또한, 단 하나의 머신(1100)이 예시되어 있지만, "머신"이라는 용어는 또한, 본 명세서에서 논의된 방법론들 중 임의의 것을 수행하기 위해 명령어들(1116)을 개별적으로 또는 공동으로 실행하는 머신들의 집합체(1100)를 포함하는 것으로 간주되어야 한다.
다양한 실시예에서, 머신(1100)은, 버스(1102)를 통해 서로 통신하도록 구성될 수 있는 프로세서(1110), 메모리(1130), 및 I/O 컴포넌트(1150)를 포함한다. 한 예시적인 실시예에서, 프로세서(1110)[예를 들어, 중앙 처리 유닛(CPU), RISC(Reduced Instruction Set Computing) 프로세서, CISC(Complex Instruction Set Computing) 프로세서, GPU(Graphics Processing Unit), 디지털 신호 프로세서(DSP; Digital Signal Processor), 주문형 집적 회로(ASIC; Application Specific Integrated Circuit), 무선 주파수 집적 회로(RFIC), 또 다른 프로세서, 또는 이들의 임의의 적절한 조합]는, 예를 들어, 명령어(1116)를 실행할 수 있는 프로세서(1112) 및 프로세서(1114)를 포함한다. "프로세서"라는 용어는, 명령어들(1116)을 동시에 실행할 수 있는 2개 이상의 독립된 프로세서("코어"라고도 함)를 포함할 수 있는 멀티-코어 프로세서를 포함하는 것을 의도한다. 도 11은 복수의 프로세서(1110)를 도시하지만, 머신(1100)은 단일 코어를 갖는 단일 프로세서, 다중 코어를 갖는 단일 프로세서(예를 들어, 멀티-코어 프로세서), 단일 코어를 갖는 다중 프로세서, 다중 코어를 갖는 다중 프로세서, 또는 이들의 임의의 조합을 포함할 수 있다.
일부 실시예에 따르면, 메모리(1130)는, 버스(1102)를 통해 프로세서(1110)가 액세스할 수 있는, 메인 메모리(1132), 정적 메모리(1134), 및 저장 유닛(1136)을 포함한다. 저장 유닛(1136)은, 본 명세서에서 설명된 방법론들 또는 기능들 중 임의의 것을 구현하는 명령어들(1116)이 저장되는 머신-판독가능한 저장 매체(1138)를 포함할 수 있다. 명령어들(1116)은 또한, 머신(1100)에 의한 그 실행 동안에, 완전히 또는 적어도 부분적으로, 메인 메모리(1132) 내에, 정적 메모리(1134) 내에, 프로세서들(1110) 중 적어도 하나 내에(예를 들어, 프로세서의 캐시 메모리 내에), 또는 이들의 임의의 적절한 조합 내에 존재할 수 있다. 따라서, 다양한 실시예에서, 메인 메모리(1132), 정적 메모리(1134), 및 프로세서들(1110)은 머신-판독가능한 매체(1138)로서 간주된다.
본 명세서에서 사용될 때, "메모리"라는 용어는, 데이터를 일시적으로 또는 영구적으로 저장할 수 있는 머신-판독가능한 저장 매체(1138)를 말하며, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 버퍼 메모리, 플래시 메모리, 및 캐시 메모리를 포함하지만 이것으로 제한되지 않는 것으로 간주된다. 머신-판독가능한 저장 매체(1138)가 예시적인 실시예에서 단일 저장 매체인 것으로 도시되어 있지만, "머신-판독가능한 저장 매체"라는 용어는 명령어(1116)를 저장할 수 있는 단일 저장 매체 또는 복수의 저장 매체(예를 들어, 중앙집중형 또는 분산형 데이터베이스, 또는 연관된 캐시 및 서버)를 포함하는 것으로 간주되어야 한다. "머신-판독가능한 저장 매체"라는 용어는 또한, 명령어들이, 머신(1100)의 프로세서들[예를 들어, 프로세서들(1110)]에 의해 실행될 때, 머신(1100)으로 하여금 본 명세서에서 설명된 방법론들 중 임의의 것을 수행하게 하도록, 머신[예를 들어, 머신(1100)]에 의한 실행을 위한 명령어[예를 들어, 명령어(1116)]를 저장할 수 있는 임의의 저장 매체 또는 복수의 저장 매체들의 조합을 포함하는 것으로 간주되어야 한다. 따라서, "머신-판독가능한 저장 매체"란, 단일의 저장 장치 또는 디바이스 뿐만 아니라, 복수의 저장 장치 또는 디바이스를 포함하는 "클라우드-기반" 저장 시스템 또는 저장 네트워크를 말한다. "머신-판독가능한 저장 매체"라는 용어는, 그에 따라, 솔리드-스테이트 메모리(예를 들어, 플래시 메모리), 광학 매체, 자기 매체, 기타의 비휘발성 메모리[예를 들어, 소거가능하고 프로그램가능한 판독 전용 메모리(EPROM)], 또는 이들의 임의의 적절한 조합의 형태로 된 데이터 저장소를 포함하지만 이것으로 제한되지 않는 것으로 간주되어야 한다. "머신-판독가능한 저장 매체"라는 용어는 머신-판독가능한 저장 신호들을 포함한다.
I/O 컴포넌트(1150)들은, 입력을 수신하고, 출력을 제공하며, 출력을 생성하고, 정보를 전송하며, 정보를 교환하고, 측정치를 캡처하는 등을 수행하는 다양한 컴포넌트를 포함한다. 일반적으로, I/O 컴포넌트(1150)들은 도 11에 도시되지 않은 많은 다른 컴포넌트를 포함할 수 있다는 것을 이해할 것이다. I/O 컴포넌트(1150)들은 단지 이하의 논의를 간소화하기 위해 기능성에 따라 그룹화되어 있고, 이러한 그룹화는 어떠한 방식으로든 제한하는 것이 아니다. 다양한 예시적인 실시예에서, I/O 컴포넌트(1150)는 출력 컴포넌트(1152) 및 입력 컴포넌트(1154)를 포함한다. 출력 컴포넌트(1152)들은, 시각적 컴포넌트[예를 들어, 플라즈마 디스플레이 패널(PDP), 발광 다이오드(LED) 디스플레이, 액정 디스플레이(LCD), 프로젝터, 또는 CRT(cathode ray tube) 등의 디스플레이], 음향 컴포넌트(예를 들어, 스피커), 햅틱 컴포넌트(예를 들어, 진동 모터), 기타의 신호 생성기 등을 포함한다. 입력 컴포넌트(1154)들은, 영숫자 입력 컴포넌트(예를 들어, 키보드, 영숫자 입력을 수신하도록 구성된 터치 스크린, 사진-광학 키보드, 또는 기타의 영숫자 입력 컴포넌트), 포인트 기반 입력 컴포넌트(예를 들어, 마우스, 터치패드, 트랙볼, 조이스틱, 모션 센서 또는 기타의 포인팅 도구), 촉각 입력 컴포넌트(예를 들어, 물리적 버튼, 터치 또는 터치 제스쳐의 위치 및 힘을 제공하는 터치 스크린, 또는 기타의 촉각 입력 컴포넌트), 오디오 입력 컴포넌트(예를 들어, 마이크로폰) 등을 포함한다.
일부 추가의 예시적인 실시예에서, I/O 컴포넌트(1150)들은, 특히, 바이오메트릭 컴포넌트(1156), 모션 컴포넌트(1158), 환경 컴포넌트(1160), 또는 위치 컴포넌트(1162)를 포함한다. 예를 들어, 바이오메트릭 컴포넌트(1156)는, 표현(예를 들어, 손 표현, 얼굴 표정, 음성 표현, 몸짓, 또는 입 제스쳐)을 검출하고, 생체신호(예를 들어, 혈압, 심박수, 체온, 땀 또는 뇌파)를 측정하고, 사람을 식별(예를 들어, 음성 식별, 망막 식별, 얼굴 식별, 지문 식별, 또는 뇌파계 기반 식별)하는 컴포넌트들을 포함한다. 모션 컴포넌트(1158)는, 가속도 센서 컴포넌트(예를 들어, 가속도계), 중력 센서 컴포넌트, 회전 센서 컴포넌트(예를 들어, 자이로스코프) 등을 포함한다. 환경 컴포넌트(1160)는, 예를 들어, 조명 센서 컴포넌트(예를 들어, 광도계), 온도 센서 컴포넌트(예를 들어, 주변 온도를 검출하는 온도계), 습도 센서 컴포넌트, 압력 센서 컴포넌트(예를 들어, 기압계), 음향 센서 컴포넌트(예를 들어, 배경 노이즈를 검출하는 마이크로폰), 근접 센서 컴포넌트(예를 들어, 근처의 객체를 검출하는 적외선 센서), 가스 센서 컴포넌트(예를 들어, 머신 후각 검출 센서, 안전을 위해 위험한 가스의 농도를 검출하거나 대기 중의 오염 물질을 측정하는 가스 검출 센서), 또는 주변의 물리적 환경에 대응하는 표시, 측정치, 또는 신호를 제공할 수 있는 기타의 컴포넌트들을 포함한다. 위치 컴포넌트(1162)는, 위치 센서 컴포넌트[예를 들어, GPS(Global Positioning System) 수신기 컴포넌트], 고도 센서 컴포넌트(예를 들어, 고도가 도출될 수 있는 기압을 검출하는 고도계 또는 기압계), 배향 센서 컴포넌트(예를 들어, 자력계) 등을 포함한다.
통신은 다양한 기술을 이용하여 구현될 수 있다. I/O 컴포넌트(1150)들은, 머신(1100)을 각각 결합(1182) 및 결합(1172)을 통해 네트워크(1180) 또는 디바이스(1170)에 결합하도록 동작가능한 통신 컴포넌트(1164)를 포함할 수 있다. 예를 들어, 통신 컴포넌트(1164)는 네트워크 인터페이스 컴포넌트 또는 네트워크(1180)와 인터페이스하기에 적절한 또 다른 디바이스를 포함한다. 추가 예들에서, 통신 컴포넌트(1164)는, 유선 통신 컴포넌트, 무선 통신 컴포넌트, 셀룰러 통신 컴포넌트, 근접장 통신(NFC) 컴포넌트, BLUETOOTH® 컴포넌트(예를 들어, BLUETOOTH® Low Energy), WI-FI® 컴포넌트, 및 다른 양태를 통해 통신을 제공하는 기타의 통신 컴포넌트를 포함한다. 디바이스(1170)는, 또 다른 머신 또는 임의의 다양한 주변 디바이스[예를 들어, USB(Universal Serial Bus)를 통해 결합된 주변 디바이스]일 수 있다.
게다가, 일부 실시예들에서, 통신 컴포넌트(1164)는 식별자를 검출하거나 식별자를 검출하도록 동작가능한 컴포넌트를 포함한다. 예를 들어, 통신 컴포넌트(1164)는, 무선 주파수 식별(RFID) 태그 판독기 컴포넌트, NFC 스마트 태그 검출 컴포넌트, 광학 판독기 컴포넌트[예를 들어, 범용 제품 코드(UPC) 바코드 등의 일차원 바코드, QR(Quick Response) 코드, Aztec 코드, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra 코드, UCC RSS(Uniform Commercial Code Reduced Space Symbology)-2D 바코드, 및 기타의 광학 코드 등의 다차원 바코드를 검출하는 광학 센서], 음향 검출 컴포넌트(예를 들어, 태깅된 오디오 신호를 식별하는 마이크로폰), 또는 이들의 임의의 적절한 조합을 포함한다. 또한, 인터넷 프로토콜(IP) 지오-로케이션(geo-location)을 통한 위치, WI-FI® 신호 삼각측량을 통한 위치, 특정한 위치를 나타낼 수 있는 BLUETOOTH® 또는 NFC 비컨 신호 검출을 통한 위치 등의 다양한 정보가 통신 컴포넌트(1164)를 통해 도출될 수 있다.
전송 매체
다양한 예시적인 실시예에서, 네트워크(1180)의 부분들은, 애드혹 네트워크, 인트라넷, 엑스트라넷, 가상 사설망(VPN), 근거리 통신망(LAN), 무선 LAN(WLAN), 광역 네트워크(WAN), 무선 WAN(WWAN), 도시권 통신망(MAN; Metropolitan Area Network), 인터넷, 인터넷의 일부, PSTN(public switched telephone network)의 일부, POTS(plain old telephone service) 네트워크, 셀룰러 전화 네트워크, 무선 네트워크, WI-FI® 네트워크, 또 다른 유형의 네트워크, 또는 2개 이상의 이러한 네트워크들의 조합일 수 있다. 예를 들어, 네트워크(1180) 또는 네트워크(1180)의 일부는 무선 또는 셀룰러 네트워크를 포함할 수 있고, 결합(1182)은 CDMA(Code Division Multiple Access) 접속, GSM(Global System for Mobile communications) 접속, 또는 다른 유형의 셀룰러 또는 무선 결합을 포함할 수 있다. 이 예에서, 결합(1182)은, 1xRTT(Single Carrier Radio Transmission Technology), EVDO(Evolution-Data Optimized) 기술, GPRS(General Packet Radio Service) 기술, EDGE(Enhanced Data rates for GSM Evolution) 기술, 3G, 4G(fourth generation wireless) 네트워크, UMTS(Universal Mobile Telecommunications System), HSPA(High Speed Packet Access), WiMAX(Worldwide Interoperability for Microwave Access), LTE(Long Term Evolution) 표준, 다양한 표준-설정 기구에 의해 정의된 기타의 것들을 포함한 3GPP(third Generation Partnership Project), 기타의 장거리 프로토콜, 또는 기타의 데이터 전송 기술 등의 다양한 유형의 데이터 전송 기술들 중 임의의 것을 구현할 수 있다.
예시적인 실시예에서, 명령어들(1116)은, 네트워크 인터페이스 디바이스(예를 들어, 통신 컴포넌트(1164)에 포함된 네트워크 인터페이스 컴포넌트)를 통해 전송 매체를 이용하여 및 다수의 널리 공지된 프로토콜들 중 임의의 하나[예를 들어, 하이퍼텍스트 전송 프로토콜(HTTP)]를 이용하여 네트워크(1180)를 통해 전송되거나 수신된다. 유사하게, 다른 예시적인 실시예에서, 명령어들(1116)은 디바이스(1170)에 대한 결합(1172)(예를 들어, 피어-투-피어 결합)을 통해 전송 매체를 이용하여 전송되거나 수신된다. "전송 매체"라는 용어는, 머신(1100)에 의한 실행을 위한 명령어(1116)를 저장, 인코딩 또는 운반할 수 있고, 이러한 소프트웨어의 전달을 용이화하는 디지털 또는 아날로그 통신 신호 또는 기타의 무형 매체를 포함하는 임의의 무형의 매체를 포함하는 것으로 간주되어야 한다. 전송 매체는 머신-판독가능한 매체의 일 실시예이다.
또한, 머신-판독가능한 매체(1138)는 저장 매체 또는 전파 신호 또는 전송 매체를 구현할 수 있다. 머신-판독가능한 매체(1138)를 이동가능할 수 있고, 매체는 한 물리적 위치로부터 또 다른 위치로 이동될 수 있는 것으로 간주되어야 한다. 추가로, 머신-판독가능한 매체(1138)는 유형이므로, 저장 매체는 머신-판독가능한 디바이스로 간주될 수 있다.
용어
본 명세서 전체를 통해, 복수의 인스턴스는, 단일 인스턴스로서 설명된 컴포넌트들, 동작들 또는 구조들을 구현할 수 있다. 방법의 개개의 동작들이 별개의 동작들로서 예시되고 설명되지만, 개개의 동작들은 동시에 수행될 수 있고, 동작들이 예시된 순서로 수행될 필요는 없다. 예시적인 구성에서 별개의 컴포넌트들로서 제시된 구조 및 기능은 결합된 구조 또는 컴포넌트로서 구현될 수 있다. 유사하게, 단일 컴포넌트로서 제시된 구조 및 기능은 별개의 컴포넌트들로서 구현될 수 있다. 이들 및 다른 변형, 수정, 추가 및 개선은 본 명세서의 주제의 범위 내에 있다.
본 발명의 주제에 대한 개요가 특정한 예시적인 실시예들을 참조하여 설명되었지만, 본 개시내용의 실시예들의 더 넓은 범위를 벗어나지 않으면서 이들 실시예들에 대한 다양한 수정 및 변경이 이루어질 수 있다. 본 발명의 주제의 이러한 실시예들은, 본 명세서에서, 사실상 하나보다 많은 발명 또는 발명적 개념이 개시되고 있지만, 본 출원의 범위를 임의의 단일의 개시내용이나 발명적 개념으로 자발적으로 제한하려는 의도없이 단지 편의상 "발명"이라는 용어에 의해, 개별적으로 또는 집합적으로 언급될 수 있다.
본 명세서에서 예시된 실시예들은 본 기술분야의 통상의 기술자가 본 명세서에서 개시된 교시를 실시할 수 있게 하도록 충분히 상세하게 설명되었다. 본 개시내용의 범위로부터 벗어나지 않고 구조적 및 논리적 치환과 변경이 이루어질 수 있도록 하는 다른 실시예들이 이용될 수 있고 본 개시내용으로부터 유도될 수 있다. 따라서, 본 상세한 설명은 제한적인 의미로 간주되어서는 안되며, 다양한 실시예들의 범위는 첨부된 청구항들과 이러한 청구항들의 균등물의 전체 범위에 의해서만 정의된다.
본 명세서에서 사용될 때, "또는"이라는 용어는 포함적 또는 배타적 의미로 해석될 수 있다. 게다가, 본 명세서에서 단일 인스턴스로서 설명된 자원, 동작, 또는 구조에 대해 복수의 인스턴스가 제공될 수 있다. 추가로, 다양한 자원, 동작, 컴포넌트, 엔진 및 데이터 저장소들 사이의 경계는 다소 임의적이며, 특정한 동작은 특정한 예시적인 구성의 정황에서 예시된 것이다. 기능의 다른 할당들을 구상해 볼 수 있고 본 개시내용의 다양한 실시예의 범위 내에 있을 수 있다. 일반적으로, 예시적인 구성에서 별개의 자원들로서 제시된 구조 및 기능은 결합된 구조 또는 자원으로서 구현될 수 있다. 유사하게, 단일 자원으로서 제시된 구조 및 기능은 별개의 자원들로서 구현될 수 있다. 이들 및 다른 변형, 수정, 추가 및 개선은 첨부된 청구항들로 표현되는 본 개시내용의 실시예들의 범위 내에 있다. 따라서, 본 명세서 및 도면은 제한적 의미라기보다는 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 다층 객체 모델을 훈련하기 위한 방법으로서,
    하나 이상의 하드웨어 프로세서에 의해, 훈련 이미지들의 세트에 액세스하는 단계 - 각각의 훈련 이미지는 알려진 관심 객체를 묘사함 -;
    상기 하나 이상의 하드웨어 프로세서에 의해, 상기 훈련 이미지들의 세트 내의 바운딩 박스들의 세트를 식별하는 단계 - 상기 바운딩 박스들의 세트 내의 각각의 개별 바운딩 박스는 해상도를 가짐 -;
    상기 바운딩 박스들의 세트 내의 각각의 주어진 바운딩 박스에 대해:
    상기 하나 이상의 하드웨어 프로세서에 의해, 상기 주어진 바운딩 박스의 해상도가 지정된 박스 해상도를 초과하는지를 결정하는 단계; 및
    상기 주어진 바운딩 박스의 해상도가 상기 지정된 박스 해상도를 초과하는 것으로 결정한 것에 응답하여, 상기 하나 이상의 하드웨어 프로세서에 의해,
    상기 주어진 바운딩 박스의 중심점을 식별하고;
    상기 중심점에 대하여, 상기 지정된 박스 해상도를 벗어나는 상기 주어진 바운딩 박스의 적어도 하나의 부분을 잘라냄으로써 상기 주어진 바운딩 박스의 해상도를 상기 지정된 박스 해상도와 일치하도록 리스케일링하는 단계;
    상기 하나 이상의 하드웨어 프로세서에 의해, 상기 다층 객체 모델의 하나 이상의 모델 파라미터를 초기화하는 단계; 및
    상기 하나 이상의 하드웨어 프로세서에 의해, 상기 하나 이상의 모델 파라미터의 반복들에 기인하는 평균 손실 함수 값들의 변화가 변화 임계치 아래로 떨어질 때까지 상기 하나 이상의 모델 파라미터를 반복적으로 조절하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 평균 손실 함수 값들은 상기 훈련 이미지들의 세트의 훈련 이미지의 2개 이상의 인스턴스에 대해 획득되고, 상기 훈련 이미지의 상기 2개 이상의 인스턴스 각각은 별개의 해상도들을 갖는, 방법.
  3. 제1항에 있어서, 상기 바운딩 박스들의 세트 내의 각각의 개별 바운딩 박스는 레이블을 갖는, 방법.
  4. 제1항에 있어서, 상기 바운딩 박스들의 세트 내의 각각의 개별 바운딩 박스는 상기 훈련 이미지들의 세트의 훈련 이미지 내의 위치를 식별하는 좌표들의 세트를 갖는, 방법.
  5. 제1항에 있어서, 상기 하나 이상의 모델 파라미터를 반복적으로 조절하는 단계는 기울기 하강 알고리즘을 사용하여 상기 하나 이상의 모델 파라미터를 반복적으로 조절하는 단계를 포함하는, 방법.
  6. 제5항에 있어서, 상기 기울기 하강 알고리즘은 역방향 전파를 사용하여 계산되는, 방법.
  7. 제1항에 있어서, 상기 다층 객체 모델의 상기 하나 이상의 모델 파라미터를 초기화하는 단계는 가우시안 분포를 사용하여 상기 하나 이상의 모델 파라미터를 초기화하는 단계를 포함하는, 방법.
  8. 제1항에 있어서, 상기 훈련 이미지들의 세트의 적어도 하나의 훈련 이미지는 상기 적어도 하나의 훈련 이미지 내의 상기 알려진 관심 객체에 대한 신원, 클래스, 유형 또는 다른 식별 정보 중 적어도 하나를 나타내는 데이터와 연관되거나 데이터를 포함하는, 방법.
  9. 제1항에 있어서, 상기 훈련 이미지들의 세트의 적어도 하나의 훈련 이미지는 상기 적어도 하나의 훈련 이미지 내의 상기 알려진 관심 객체의 적어도 일부의 위치를 식별하는 데이터와 연관되거나 데이터를 포함하는, 방법.
  10. 시스템으로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 결합된 프로세서 판독가능 저장 디바이스
    를 포함하고, 상기 프로세서 판독가능 저장 디바이스는 상기 하나 이상의 프로세서에 의해 실행될 때 상기 하나 이상의 프로세서로 하여금 다층 객체 모델을 훈련하는 동작들을 수행하게 하는 프로세서 실행가능 명령어들을 저장하고, 상기 동작들은:
    훈련 이미지들의 세트에 액세스하는 단계 - 각각의 훈련 이미지는 알려진 관심 객체를 묘사함 -;
    상기 훈련 이미지들의 세트 내의 바운딩 박스들의 세트를 식별하는 단계 - 상기 바운딩 박스들의 세트 내의 각각의 개별 바운딩 박스는 해상도를 가짐 -;
    상기 바운딩 박스들의 세트 내의 각각의 주어진 바운딩 박스에 대해:
    상기 주어진 바운딩 박스의 해상도가 지정된 박스 해상도를 초과하는지를 결정하는 단계; 및
    상기 주어진 바운딩 박스의 해상도가 상기 지정된 박스 해상도를 초과하는 것으로 결정한 것에 응답하여,
    상기 주어진 바운딩 박스의 중심점을 식별하고;
    상기 중심점에 대하여, 상기 지정된 박스 해상도를 벗어나는 상기 주어진 바운딩 박스의 적어도 하나의 부분을 잘라냄으로써 상기 주어진 바운딩 박스의 해상도를 상기 지정된 박스 해상도와 일치하도록 리스케일링하는 단계;
    상기 다층 객체 모델의 하나 이상의 모델 파라미터를 초기화하는 단계; 및
    상기 하나 이상의 모델 파라미터의 반복들에 기인하는 평균 손실 함수 값들의 변화가 변화 임계치 아래로 떨어질 때까지 상기 하나 이상의 모델 파라미터를 반복적으로 조절하는 단계
    를 포함하는, 시스템.
  11. 제10항에 있어서, 상기 평균 손실 함수 값들은 상기 훈련 이미지들의 세트의 훈련 이미지의 2개 이상의 인스턴스에 대해 획득되고, 상기 훈련 이미지의 상기 2개 이상의 인스턴스 각각은 별개의 해상도들을 갖는, 시스템.
  12. 제10항에 있어서, 상기 바운딩 박스들의 세트 내의 각각의 개별 바운딩 박스는 레이블을 갖는, 시스템.
  13. 제10항에 있어서, 상기 바운딩 박스들의 세트 내의 각각의 개별 바운딩 박스는 상기 훈련 이미지들의 세트의 훈련 이미지 내의 위치를 식별하는 좌표들의 세트를 갖는, 시스템.
  14. 제10항에 있어서, 상기 하나 이상의 모델 파라미터를 반복적으로 조절하는 단계는 기울기 하강 알고리즘을 사용하여 상기 하나 이상의 모델 파라미터를 반복적으로 조절하는 단계를 포함하는, 시스템.
  15. 제14항에 있어서, 상기 기울기 하강 알고리즘은 역방향 전파를 사용하여 계산되는, 시스템.
  16. 제10항에 있어서, 상기 다층 객체 모델의 상기 하나 이상의 모델 파라미터를 초기화하는 단계는 가우시안 분포를 사용하여 상기 하나 이상의 모델 파라미터를 초기화하는 단계를 포함하는, 시스템.
  17. 제10항에 있어서, 상기 훈련 이미지들의 세트의 적어도 하나의 훈련 이미지는 상기 적어도 하나의 훈련 이미지 내의 상기 알려진 관심 객체에 대한 신원, 클래스, 유형 또는 다른 식별 정보 중 적어도 하나를 나타내는 데이터와 연관되거나 데이터를 포함하는, 시스템.
  18. 제10항에 있어서, 상기 훈련 이미지들의 세트의 적어도 하나의 훈련 이미지는 상기 적어도 하나의 훈련 이미지 내의 상기 알려진 관심 객체의 적어도 일부의 위치를 식별하는 데이터와 연관되거나 데이터를 포함하는, 시스템.
  19. 프로세서 실행가능 명령어들을 저장하는 프로세서 판독가능 저장 디바이스로서,
    상기 프로세서 실행가능 명령어들은 머신의 하나 이상의 프로세서에 의해 실행될 때 상기 머신으로 하여금 다층 객체 모델을 훈련하는 동작들을 수행하게 하고, 상기 동작들은:
    훈련 이미지들의 세트에 액세스하는 단계 - 각각의 훈련 이미지는 알려진 관심 객체를 묘사함 -;
    상기 훈련 이미지들의 세트 내의 바운딩 박스들의 세트를 식별하는 단계 - 상기 바운딩 박스들의 세트 내의 각각의 개별 바운딩 박스는 해상도를 가짐 -;
    상기 바운딩 박스들의 세트 내의 각각의 주어진 바운딩 박스에 대해:
    상기 주어진 바운딩 박스의 해상도가 지정된 박스 해상도를 초과하는지를 결정하는 단계; 및
    상기 주어진 바운딩 박스의 해상도가 상기 지정된 박스 해상도를 초과하는 것으로 결정한 것에 응답하여,
    상기 주어진 바운딩 박스의 중심점을 식별하고;
    상기 중심점에 대하여, 상기 지정된 박스 해상도를 벗어나는 상기 주어진 바운딩 박스의 적어도 하나의 부분을 잘라냄으로써 상기 주어진 바운딩 박스의 해상도를 상기 지정된 박스 해상도와 일치하도록 리스케일링하는 단계;
    상기 다층 객체 모델의 하나 이상의 모델 파라미터를 초기화하는 단계; 및
    상기 하나 이상의 모델 파라미터의 반복들에 기인하는 평균 손실 함수 값들의 변화가 변화 임계치 아래로 떨어질 때까지 상기 하나 이상의 모델 파라미터를 반복적으로 조절하는 단계
    를 포함하는, 프로세서 판독가능 저장 디바이스.
  20. 제19항에 있어서, 상기 평균 손실 함수 값들은 상기 훈련 이미지들의 세트의 훈련 이미지의 2개 이상의 인스턴스에 대해 획득되고, 상기 훈련 이미지의 상기 2개 이상의 인스턴스 각각은 별개의 해상도들을 갖는, 프로세서 판독가능 저장 디바이스.
KR1020217005760A 2016-11-01 2017-11-01 이미지 내의 객체 검출을 위한 신경망 KR102365569B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/340,675 2016-11-01
US15/340,675 US10346723B2 (en) 2016-11-01 2016-11-01 Neural network for object detection in images
PCT/US2017/059564 WO2018085425A1 (en) 2016-11-01 2017-11-01 Neural network for object detection in images
KR1020197015458A KR102222642B1 (ko) 2016-11-01 2017-11-01 이미지 내의 객체 검출을 위한 신경망

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197015458A Division KR102222642B1 (ko) 2016-11-01 2017-11-01 이미지 내의 객체 검출을 위한 신경망

Publications (2)

Publication Number Publication Date
KR20210024242A true KR20210024242A (ko) 2021-03-04
KR102365569B1 KR102365569B1 (ko) 2022-02-23

Family

ID=60480404

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197015458A KR102222642B1 (ko) 2016-11-01 2017-11-01 이미지 내의 객체 검출을 위한 신경망
KR1020217005760A KR102365569B1 (ko) 2016-11-01 2017-11-01 이미지 내의 객체 검출을 위한 신경망

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020197015458A KR102222642B1 (ko) 2016-11-01 2017-11-01 이미지 내의 객체 검출을 위한 신경망

Country Status (5)

Country Link
US (3) US10346723B2 (ko)
EP (2) EP4296971A3 (ko)
KR (2) KR102222642B1 (ko)
CN (2) CN109964236B (ko)
WO (1) WO2018085425A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102378887B1 (ko) * 2021-02-15 2022-03-25 인하대학교 산학협력단 객체 탐지에서의 둘레기반 IoU 손실함수를 통한 효율적인 바운딩 박스 회귀 학습 방법 및 장치
KR102539680B1 (ko) * 2023-01-27 2023-06-02 주식회사 컴패니언즈 인공지능 모델을 이용하여 이미지로부터 객체를 인식하는 방법
WO2023128323A1 (ko) * 2021-12-28 2023-07-06 삼성전자 주식회사 목표 객체를 검출하는 전자 장치 및 방법

Families Citing this family (126)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8326775B2 (en) 2005-10-26 2012-12-04 Cortica Ltd. Signature generation for multimedia deep-content-classification by a large-scale matching system and method thereof
US10217001B2 (en) * 2016-04-14 2019-02-26 KickView Corporation Video object data storage and processing system
CA3028710A1 (en) * 2016-06-23 2017-12-28 Capital One Services, Llc Systems and methods for automated object recognition
US10353950B2 (en) * 2016-06-28 2019-07-16 Google Llc Visual recognition using user tap locations
US10346723B2 (en) 2016-11-01 2019-07-09 Snap Inc. Neural network for object detection in images
US11740384B2 (en) * 2016-12-09 2023-08-29 Schlumberger Technology Corporation Field operations neural network heuristics
US10318827B2 (en) * 2016-12-19 2019-06-11 Waymo Llc Object detection neural networks
WO2018121013A1 (en) * 2016-12-29 2018-07-05 Zhejiang Dahua Technology Co., Ltd. Systems and methods for detecting objects in images
KR102645202B1 (ko) * 2017-01-03 2024-03-07 한국전자통신연구원 기계 학습 방법 및 장치
US10586111B2 (en) * 2017-01-13 2020-03-10 Google Llc Using machine learning to detect which part of the screen includes embedded frames of an uploaded video
WO2018170512A1 (en) * 2017-03-17 2018-09-20 Neurala, Inc. Online, incremental real-time learning for tagging and labeling data streams for deep neural networks and neural network applications
WO2018176000A1 (en) 2017-03-23 2018-09-27 DeepScale, Inc. Data synthesis for autonomous control systems
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
EP3622438A4 (en) 2017-05-09 2021-03-10 Neurala, Inc. SYSTEMS AND METHODS FOR CONTINUOUS LEARNING LIMITED IN MEMORY IN CONTINUING APPLICATIONS OF ARTIFICIAL INTELLIGENCE AND DEEP LEARNING THROUGH NETWORKED COMPUTING EDGES
US10679428B1 (en) * 2017-05-26 2020-06-09 Snap Inc. Neural network-based image stream modification
US10762635B2 (en) 2017-06-14 2020-09-01 Tusimple, Inc. System and method for actively selecting and labeling images for semantic segmentation
US11760387B2 (en) 2017-07-05 2023-09-19 AutoBrains Technologies Ltd. Driving policies determination
WO2019012527A1 (en) 2017-07-09 2019-01-17 Cortica Ltd. ORGANIZATION OF DEPTH LEARNING NETWORKS
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US10671349B2 (en) 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US10762605B2 (en) 2017-08-04 2020-09-01 Outward, Inc. Machine learning based image processing techniques
US10552979B2 (en) 2017-09-13 2020-02-04 TuSimple Output of a neural network method for deep odometry assisted by static scene optical flow
US10671083B2 (en) * 2017-09-13 2020-06-02 Tusimple, Inc. Neural network architecture system for deep odometry assisted by static scene optical flow
US10579897B2 (en) * 2017-10-02 2020-03-03 Xnor.ai Inc. Image based object detection
US10474926B1 (en) * 2017-11-16 2019-11-12 Amazon Technologies, Inc. Generating artificial intelligence image processing services
JP6904614B2 (ja) * 2017-12-08 2021-07-21 日本電気通信システム株式会社 対象物検出装置、予測モデル作成装置、対象物検出方法及びプログラム
US10671888B1 (en) * 2017-12-14 2020-06-02 Perceive Corporation Using batches of training items for training a network
US10453220B1 (en) 2017-12-29 2019-10-22 Perceive Corporation Machine-trained network for misalignment-insensitive depth perception
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US10984503B1 (en) 2018-03-02 2021-04-20 Autodata Solutions, Inc. Method and system for vehicle image repositioning using machine learning
US11270168B1 (en) 2018-03-02 2022-03-08 Autodata Solutions, Inc. Method and system for vehicle image classification
US11586902B1 (en) 2018-03-14 2023-02-21 Perceive Corporation Training network to minimize worst case surprise
US11176415B2 (en) * 2018-05-09 2021-11-16 Figure Eight Technologies, Inc. Assisted image annotation
KR20190134272A (ko) * 2018-05-25 2019-12-04 삼성전자주식회사 영상 처리를 위한 네트워크 조정 방법 및 장치
US11215999B2 (en) 2018-06-20 2022-01-04 Tesla, Inc. Data pipeline and deep learning system for autonomous driving
US11361457B2 (en) 2018-07-20 2022-06-14 Tesla, Inc. Annotation cross-labeling for autonomous control systems
US11636333B2 (en) 2018-07-26 2023-04-25 Tesla, Inc. Optimizing neural network structures for embedded systems
US11562231B2 (en) 2018-09-03 2023-01-24 Tesla, Inc. Neural networks for embedded devices
JP7234378B2 (ja) * 2018-09-07 2023-03-07 トヨタ モーター ヨーロッパ 回転仮説を決定することによって画像を処理する方法及びシステム
CN110570389B (zh) * 2018-09-18 2020-07-17 阿里巴巴集团控股有限公司 车辆损伤识别方法及装置
AU2019357615B2 (en) 2018-10-11 2023-09-14 Tesla, Inc. Systems and methods for training machine models with augmented data
CN109409159A (zh) * 2018-10-11 2019-03-01 上海亿保健康管理有限公司 一种模糊二维码检测方法及装置
US20200133308A1 (en) 2018-10-18 2020-04-30 Cartica Ai Ltd Vehicle to vehicle (v2v) communication less truck platooning
US11126870B2 (en) 2018-10-18 2021-09-21 Cartica Ai Ltd. Method and system for obstacle detection
US10839694B2 (en) 2018-10-18 2020-11-17 Cartica Ai Ltd Blind spot alert
US11181911B2 (en) 2018-10-18 2021-11-23 Cartica Ai Ltd Control transfer of a vehicle
US11196678B2 (en) 2018-10-25 2021-12-07 Tesla, Inc. QOS manager for system on a chip communications
US11700356B2 (en) 2018-10-26 2023-07-11 AutoBrains Technologies Ltd. Control transfer of a vehicle
US10748038B1 (en) 2019-03-31 2020-08-18 Cortica Ltd. Efficient calculation of a robust signature of a media unit
US20200143279A1 (en) * 2018-11-06 2020-05-07 DeepSig Inc. Radio frequency band segmentation, signal detection and labelling using machine learning
US20200155040A1 (en) * 2018-11-16 2020-05-21 Hill-Rom Services, Inc. Systems and methods for determining subject positioning and vital signs
KR20200063329A (ko) * 2018-11-21 2020-06-05 삼성전자주식회사 영상 처리 장치 및 그 제어방법
US10789535B2 (en) 2018-11-26 2020-09-29 Cartica Ai Ltd Detection of road elements
US11816585B2 (en) 2018-12-03 2023-11-14 Tesla, Inc. Machine learning models operating at different frequencies for autonomous vehicles
US11537811B2 (en) 2018-12-04 2022-12-27 Tesla, Inc. Enhanced object detection for autonomous vehicles based on field view
US11042611B2 (en) * 2018-12-10 2021-06-22 XNOR.ai, Inc. Digital watermarking of machine-learning models
CN109711288B (zh) * 2018-12-13 2021-05-04 西安电子科技大学 基于特征金字塔和距离约束fcn的遥感船舶检测方法
US11610117B2 (en) 2018-12-27 2023-03-21 Tesla, Inc. System and method for adapting a neural network model on a hardware platform
US10692002B1 (en) * 2019-01-28 2020-06-23 StradVision, Inc. Learning method and learning device of pedestrian detector for robust surveillance based on image analysis by using GAN and testing method and testing device using the same
CN109829849B (zh) * 2019-01-29 2023-01-31 达闼机器人股份有限公司 一种训练数据的生成方法、装置和终端
US10997461B2 (en) 2019-02-01 2021-05-04 Tesla, Inc. Generating ground truth for machine learning from time series elements
US11567514B2 (en) 2019-02-11 2023-01-31 Tesla, Inc. Autonomous and user controlled vehicle summon to a target
US10956755B2 (en) 2019-02-19 2021-03-23 Tesla, Inc. Estimating object properties using visual image data
KR102576157B1 (ko) * 2019-02-22 2023-09-07 한국전자통신연구원 인공 신경망을 이용한 고속 객체 검출 방법 및 장치
US11643005B2 (en) 2019-02-27 2023-05-09 Autobrains Technologies Ltd Adjusting adjustable headlights of a vehicle
US10915786B2 (en) * 2019-02-28 2021-02-09 Sap Se Object detection and candidate filtering system
CN110059548B (zh) * 2019-03-08 2022-12-06 北京旷视科技有限公司 目标检测方法及装置
US11285963B2 (en) 2019-03-10 2022-03-29 Cartica Ai Ltd. Driver-based prediction of dangerous events
US11694088B2 (en) 2019-03-13 2023-07-04 Cortica Ltd. Method for object detection using knowledge distillation
US11132548B2 (en) 2019-03-20 2021-09-28 Cortica Ltd. Determining object information that does not explicitly appear in a media unit signature
US10776669B1 (en) 2019-03-31 2020-09-15 Cortica Ltd. Signature generation and object detection that refer to rare scenes
US11222069B2 (en) 2019-03-31 2022-01-11 Cortica Ltd. Low-power calculation of a signature of a media unit
US10796444B1 (en) 2019-03-31 2020-10-06 Cortica Ltd Configuring spanning elements of a signature generator
US10789527B1 (en) * 2019-03-31 2020-09-29 Cortica Ltd. Method for object detection using shallow neural networks
US11004236B2 (en) * 2019-05-02 2021-05-11 Salesforce.Com, Inc. Object localization framework for unannotated image data
US11100368B2 (en) * 2019-06-25 2021-08-24 GumGum, Inc. Accelerated training of an image classifier
US11397503B2 (en) * 2019-06-28 2022-07-26 Snap Inc. Association of user identifiers to augmented-reality content
CN110443141A (zh) * 2019-07-08 2019-11-12 深圳中兴网信科技有限公司 数据集处理方法、数据集处理装置及存储介质
KR20210009458A (ko) 2019-07-16 2021-01-27 삼성전자주식회사 객체 검출 방법 및 객체 검출 장치
CN112365553B (zh) * 2019-07-24 2022-05-20 北京新唐思创教育科技有限公司 人体图像生成模型训练、人体图像生成方法及相关装置
US20210056220A1 (en) * 2019-08-22 2021-02-25 Mediatek Inc. Method for improving confidentiality protection of neural network model
US11062127B2 (en) * 2019-09-26 2021-07-13 Gracenote, Inc. Obtaining artist imagery from video content using facial recognition
TWI715252B (zh) * 2019-10-18 2021-01-01 宏碁股份有限公司 電子裝置及其利用觸控資料的物件資訊辨識方法
US11537882B2 (en) 2019-10-28 2022-12-27 Samsung Sds Co., Ltd. Machine learning apparatus and method for object detection
US11343465B2 (en) * 2019-11-01 2022-05-24 Apple Inc. Varying audio visual compression based on AI detection or classification results
CN112764565B (zh) * 2019-11-01 2023-11-14 宏碁股份有限公司 电子装置及其利用触控数据的物件信息识别方法
US11580333B2 (en) 2019-11-12 2023-02-14 Objectvideo Labs, Llc Training image classifiers
KR20210061146A (ko) 2019-11-19 2021-05-27 삼성전자주식회사 전자 장치 및 그 제어 방법
US11200455B2 (en) * 2019-11-22 2021-12-14 International Business Machines Corporation Generating training data for object detection
WO2021118809A1 (en) * 2019-12-11 2021-06-17 Nvidia Corporation Surface profile estimation and bump detection for autonomous machine applications
US10748022B1 (en) 2019-12-12 2020-08-18 Cartica Ai Ltd Crowd separation
US11593662B2 (en) 2019-12-12 2023-02-28 Autobrains Technologies Ltd Unsupervised cluster generation
US11461953B2 (en) * 2019-12-27 2022-10-04 Wipro Limited Method and device for rendering object detection graphics on image frames
CN111199199B (zh) * 2019-12-27 2023-05-05 同济大学 一种基于自适应上下文区域选取的动作识别方法
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
CN115104135A (zh) * 2020-02-14 2022-09-23 Oppo广东移动通信有限公司 用于增强现实的物体检测系统和方法
US11450008B1 (en) * 2020-02-27 2022-09-20 Amazon Technologies, Inc. Segmentation using attention-weighted loss and discriminative feature learning
KR20210114728A (ko) * 2020-03-11 2021-09-24 연세대학교 산학협력단 박스 레벨의 객체 위치 정보를 사용한 픽셀 레벨의 동영상 객체 추적 장치
US11590988B2 (en) 2020-03-19 2023-02-28 Autobrains Technologies Ltd Predictive turning assistant
US11827215B2 (en) 2020-03-31 2023-11-28 AutoBrains Technologies Ltd. Method for training a driving related object detector
US11386662B2 (en) 2020-05-28 2022-07-12 Microsoft Technology Licensing, Llc Tracking multiple objects in a video stream using occlusion-aware single-object tracking
US11436812B2 (en) * 2020-05-29 2022-09-06 Open Space Labs, Inc. Machine learning based object identification using scaled diagram and three-dimensional model
EP3926531B1 (en) * 2020-06-17 2024-04-24 Tata Consultancy Services Limited Method and system for visio-linguistic understanding using contextual language model reasoners
KR102426562B1 (ko) * 2020-07-14 2022-07-29 주식회사 넥스트칩 오브젝트 검출 방법 및 장치
KR102208694B1 (ko) * 2020-07-23 2021-01-28 주식회사 어반베이스 시설 평면도에 포함된 기호 분석 장치 및 방법
US11756424B2 (en) 2020-07-24 2023-09-12 AutoBrains Technologies Ltd. Parking assist
CN111754541B (zh) * 2020-07-29 2023-09-19 腾讯科技(深圳)有限公司 目标跟踪方法、装置、设备及可读存储介质
CN112101134B (zh) * 2020-08-24 2024-01-02 深圳市商汤科技有限公司 物体的检测方法及装置、电子设备和存储介质
US11360733B2 (en) 2020-09-10 2022-06-14 Snap Inc. Colocated shared augmented reality without shared backend
US11335008B2 (en) * 2020-09-18 2022-05-17 Microsoft Technology Licensing, Llc Training multi-object tracking models using simulation
KR20220052620A (ko) 2020-10-21 2022-04-28 삼성전자주식회사 객체 추적 방법 및 이를 수행하는 장치
US11751800B2 (en) 2020-10-22 2023-09-12 International Business Machines Corporation Seizure detection using contextual motion
KR20220068357A (ko) * 2020-11-19 2022-05-26 한국전자기술연구원 딥러닝 객체 검출 처리 장치
CN112633384B (zh) * 2020-12-25 2022-11-01 北京百度网讯科技有限公司 基于图像识别模型的对象识别方法、装置和电子设备
CN112907450B (zh) * 2021-03-24 2023-01-06 东莞中国科学院云计算产业技术创新与育成中心 三维时序图像处理方法、装置、计算机设备和存储介质
KR102541871B1 (ko) * 2021-04-02 2023-06-12 노대균 머신 러닝 모델을 이용한 이사견적 제공 시스템 및 그 방법
CN113326924B (zh) * 2021-06-07 2022-06-14 太原理工大学 基于深度神经网络的稀疏图像内关键目标测光定位方法
KR20220169445A (ko) * 2021-06-18 2022-12-27 삼성전자주식회사 이미지 내의 객체를 검출하기 위한 전자 장치 및 방법
CN113435431B (zh) * 2021-08-27 2021-12-07 北京市商汤科技开发有限公司 姿态检测方法、神经网络模型的训练方法、装置及设备
US11915429B2 (en) 2021-08-31 2024-02-27 Gracenote, Inc. Methods and systems for automatically generating backdrop imagery for a graphical user interface
KR20230100927A (ko) * 2021-12-29 2023-07-06 한국전자기술연구원 회전형 바운딩박스 기반 객체 검출 딥러닝 네트워크
US20230230088A1 (en) * 2022-01-06 2023-07-20 Socure, Inc. Method and System of Predictive Document Verification and Machine Learning Therefor
WO2024053848A1 (en) * 2022-09-06 2024-03-14 Samsung Electronics Co., Ltd. A method and a system for generating an imaginary avatar of an object
CN117173545B (zh) * 2023-11-03 2024-01-30 天逸财金科技服务(武汉)有限公司 一种基于计算机图形学的证照原件识别方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978773A (en) 1995-06-20 1999-11-02 Neomedia Technologies, Inc. System and method for using an ordinary article of commerce to access a remote computer
DE59708043D1 (de) 1996-06-17 2002-10-02 Siemens Ag Kommunikationssystem und Verfahren zur Aufnahme und Verwaltung digitaler Bilder
US7173651B1 (en) 1998-06-02 2007-02-06 Knowles Andrew T Apparatus and system for prompt digital photo delivery and archival
US6505123B1 (en) 2000-07-24 2003-01-07 Weatherbank, Inc. Interactive weather advisory system
US20100098702A1 (en) 2008-09-16 2010-04-22 Longgui Wang Method of treating androgen independent prostate cancer
US7411493B2 (en) 2003-03-01 2008-08-12 User-Centric Ip, L.P. User-centric event reporting
US7535890B2 (en) 2003-12-18 2009-05-19 Ayalogic, Inc. System and method for instant VoIP messaging
US8332475B2 (en) 2005-08-22 2012-12-11 Triplay Communications Ltd. Messaging system and method
USRE47534E1 (en) 2007-04-23 2019-07-23 Ramot At Tel Aviv University Ltd. System, method and a computer readable medium for providing an output image
US9443227B2 (en) 2010-02-16 2016-09-13 Tigertext, Inc. Messaging system apparatuses circuits and methods of operation thereof
US8306335B2 (en) * 2011-03-30 2012-11-06 Seiko Epson Corporation Method of analyzing digital document images
US20120323968A1 (en) * 2011-06-14 2012-12-20 Microsoft Corporation Learning Discriminative Projections for Text Similarity Measures
EP2693399B1 (en) * 2012-07-30 2019-02-27 Canon Kabushiki Kaisha Method and apparatus for tomography imaging
EP3074918B1 (en) * 2013-11-30 2019-04-03 Beijing Sensetime Technology Development Co., Ltd. Method and system for face image recognition
CA2863124A1 (en) 2014-01-03 2015-07-03 Investel Capital Corporation User content sharing system and method with automated external content integration
AU2014240213B2 (en) * 2014-09-30 2016-12-08 Canon Kabushiki Kaisha System and Method for object re-identification
US9483704B2 (en) * 2014-12-10 2016-11-01 Ricoh Co., Ltd. Realogram scene analysis of images: superpixel scene analysis
US10410096B2 (en) * 2015-07-09 2019-09-10 Qualcomm Incorporated Context-based priors for object detection in images
US9785919B2 (en) * 2015-12-10 2017-10-10 General Electric Company Automatic classification of aircraft component distress
KR102592076B1 (ko) * 2015-12-14 2023-10-19 삼성전자주식회사 딥러닝 기반 영상 처리 장치 및 방법, 학습 장치
US10346723B2 (en) 2016-11-01 2019-07-09 Snap Inc. Neural network for object detection in images

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
C. Szegedy et. al., 'Deep neural networks for object detection' Advances in neural information processing systems' 1 January 2013. *
D. ERHAN et al. ' Scalabel object detetion using deep neural networks'' 2014 IEEE conf. on computer vision and pattern recognition. 1 June 2014 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102378887B1 (ko) * 2021-02-15 2022-03-25 인하대학교 산학협력단 객체 탐지에서의 둘레기반 IoU 손실함수를 통한 효율적인 바운딩 박스 회귀 학습 방법 및 장치
WO2023128323A1 (ko) * 2021-12-28 2023-07-06 삼성전자 주식회사 목표 객체를 검출하는 전자 장치 및 방법
KR102539680B1 (ko) * 2023-01-27 2023-06-02 주식회사 컴패니언즈 인공지능 모델을 이용하여 이미지로부터 객체를 인식하는 방법

Also Published As

Publication number Publication date
US10872276B2 (en) 2020-12-22
US20190279046A1 (en) 2019-09-12
EP4296971A3 (en) 2024-01-17
CN116912514A (zh) 2023-10-20
US20180121762A1 (en) 2018-05-03
KR102222642B1 (ko) 2021-03-05
CN109964236B (zh) 2023-08-11
CN109964236A (zh) 2019-07-02
US20210073597A1 (en) 2021-03-11
EP3535692B1 (en) 2023-12-27
WO2018085425A1 (en) 2018-05-11
US11645834B2 (en) 2023-05-09
KR102365569B1 (ko) 2022-02-23
KR20190080904A (ko) 2019-07-08
US10346723B2 (en) 2019-07-09
EP4296971A2 (en) 2023-12-27
EP3535692A1 (en) 2019-09-11

Similar Documents

Publication Publication Date Title
KR102222642B1 (ko) 이미지 내의 객체 검출을 위한 신경망
US11100311B2 (en) Neural networks for facial modeling
US11551374B2 (en) Hand pose estimation from stereo cameras
US11830209B2 (en) Neural network-based image stream modification
US11170035B2 (en) Context based media curation
US11915400B2 (en) Location mapping for large scale augmented-reality
US11151408B2 (en) Occlusion detection system

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant