KR101752072B1 - 오브젝트 검출을 가속하기 위한 하드웨어 컨볼루션 사전-필터 - Google Patents

오브젝트 검출을 가속하기 위한 하드웨어 컨볼루션 사전-필터 Download PDF

Info

Publication number
KR101752072B1
KR101752072B1 KR1020157012708A KR20157012708A KR101752072B1 KR 101752072 B1 KR101752072 B1 KR 101752072B1 KR 1020157012708 A KR1020157012708 A KR 1020157012708A KR 20157012708 A KR20157012708 A KR 20157012708A KR 101752072 B1 KR101752072 B1 KR 101752072B1
Authority
KR
South Korea
Prior art keywords
object detection
pixel
pixels
cascade filter
convolution
Prior art date
Application number
KR1020157012708A
Other languages
English (en)
Other versions
KR20150070327A (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 KR20150070327A publication Critical patent/KR20150070327A/ko
Application granted granted Critical
Publication of KR101752072B1 publication Critical patent/KR101752072B1/ko

Links

Images

Classifications

    • G06K9/4609
    • 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
    • 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
    • G06F18/2148Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/245Classification techniques relating to the decision surface
    • G06F18/2451Classification techniques relating to the decision surface linear, e.g. hyperplane
    • G06K9/6201
    • 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
    • G06V10/7747Organisation of the process, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • G06K2009/6213
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20024Filtering details

Landscapes

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

Abstract

오브젝트 검출을 가속시키기 위해 하드웨어 기반 컨볼루션 사전-필터에 관련된 시스템, 장치, 물품, 및 방법이 설명된다.

Description

오브젝트 검출을 가속하기 위한 하드웨어 컨볼루션 사전-필터{HARDWARE CONVOLUTION PRE-FILTER TO ACCELERATE OBJECT DETECTION}
오브젝트 검출(object detection)은 폭넓은 범위의 애플리케이션을 갖는다. 예를 들면, 인간-컴퓨터 상호작용, 사진-앨범 관리, 생체 인증, 비디오 감시, 자동-포커스 이미징, 및 다양한 다른 비전 시스템에서 얼굴 검출이 사용될 수 있다. 인간 검출은 비디오 감시, 향상된 운전자 지원 시스템 등에서 사용될 수 있다. 다른 오브젝트 검출 예로는 교통량 모니터링, 자동형 차량 주차, 문자 인식, 제조 품질 제어, 오브젝트 계수 및 품질 모니터링이 포함된다.
몇몇의 기존 오브젝트 검출 시스템에서, 비올라-존스(Viola-Jones) 캐스케이드 검출 프레임워크가 사용된다. 비올라-존스 캐스케이드 검출 프레임워크에서, 입력 이미지는 캐스케이드 분류기(cascade classifier)를 이용하여 윈도우 내에 목표물이 존재하는지 여부를 조사하기 위해 슬라이딩 윈도우로 스캐닝된다. 그러한 방법들은 계산 집중적이다. 소프트웨어 및 하드웨어 기반 구현예가 제안되었지만, 특히 이미지 및 비디오 해상도가 증가함에 따라 기존 구현예에 대한 제한이 존재한다. 소프트웨어 구현예에서, 실시간 오브젝트 검출을 실현하는 것은 불가능할 수 있다. 그래픽 프로세싱 유닛(GPU) 구현예에서, 그러한 방법들은 대부분 또는 모든 컴퓨팅 리소스들을 소모하여, 리소스들이 다른 작업들에 대해서는 이용할 수 없게 될 수 있다. 필드-프로그래밍가능 게이트 어레이(FPGA) 및 디지털 신호 프로세서(DSP) 구현예와 같은 다른 하드웨어 구현예는 하드웨어가 고정되는 경우 재구성할 수가 없을 수 있다.
오브젝트 검출이 그러한 폭넓은 애플리케이션에 사용될 수 있기 때문에, 오브젝트 검출을 보다 효율적으로 실행하는 것이 바람직할 수 있다.
여기서 설명되는 재료는 단지 예이지 첨부 도면을 제한하는 것은 아니다. 설명의 간소화 및 명료성을 위해, 도면에 도시된 구성요소는 반드시 축적을 맞출 필요는 없다. 예를 들면, 몇몇 구성요소들의 치수들은 명료성을 위해 다른 구성요소들에 대해 과장될 수 있다. 더욱이, 적절히 고려될 때, 참조 번호는 대응하거나 유사한 구성요소들을 나타내도록 도면들에서 반복되었다.
도 1은 예시적인 오브젝트 검출 및/또는 인식 시스템의 예시적인 도면이다.
도 2는 예시적인 오브젝트 검출 및/또는 인식 프로세스를 도시하는 흐름도이다.
도 3은 동작시 예시적인 오브젝트 검출 및/또는 인식 프로세스의 예시적인 도면이다.
도 4는 추가의 예시적인 오브젝트 검출 및/또는 인식 프로세스를 도시하는 흐름도이다.
도 5는 예시적인 오브젝트 검출 및/또는 인식 시스템의 예시적인 도면이다.
도 6은 추가의 예시적인 오브젝트 검출 및/또는 인식 시스템의 예시적인 도면이다.
도 7은 예시적인 시스템의 예시적인 도면이다.
도 8은 본 개시의 적어도 몇몇 구현예에 따라 모두 배치된 예시적인 시스템의 예시적 도면이다.
첨부 도면을 참조하여 하나 이상의 실시예 또는 구현예가 이제 설명된다. 특정 구성 및 배치가 논의되지만, 이것은 단지 예시적인 목적을 위해서 행해진다는 것이 이해되어야 한다. 당업자는 본 설명의 사상 및 범위를 벗어나지 않고 다른 구성 및 배치가 채용될 수 있다는 것을 인식할 것이다. 여기서 설명되는 기술 및/또는 배치는 여기서 설명되는 것 이외의 다양한 다른 시스템 및 애플리케이션에도 또한 채용될 수 있다는 것이 당업자에게는 자명할 것이다.
다음의 설명은 예를 들면, 시스템-온-칩(SoC) 아키텍처와 같은 아키텍처에서 드러나게 될 수 있는 다양한 구현예들을 설명하지만, 여기서 설명된 기술 및/또는 배치의 구현예는 특정 아키텍처 및/또는 컴퓨팅 시스템에 제한되지 않고 유사한 목적을 위한 임의의 아키텍처 및/또는 컴퓨팅 시스템에 의해 구현될 수 있다. 예를 들면, 예를 들면, 다중 집적 회로(IC) 칩 및/또는 패키지를 채용하는 다양한 아키텍처, 및/또는 셋톱 박스, 스마트 폰 등과 같은 소비자 전자 장치(CE) 및/또는 다양한 컴퓨팅 디바이스가 여기서 설명된 기술 및/또는 배치를 구현할 수 있다. 더욱이, 다음의 설명은 로직 구현예, 시스템 컴포넌트들의 타입 및 상호관계, 로직 파티셔닝/집적 선택 등과 같은 다수의 특정 세부사항을 설명할 수 있지만, 청구되는 과제는 그러한 특정 세부사항 없이 실행될 수 있다. 다른 예에서, 예를 들면, 제어 구조들 및 전체 소프트웨어 명령어 시퀀스들과 같은 몇몇 재료는 여기서 설명되는 재료를 모호하게 하지 않게 하기 위해 상세히 도시되지 않을 수 있다.
여기서 개시되는 재료는 하드웨어, 펌웨어, 소프트웨어, 또는 그들의 임의의 조합으로 구현될 수 있다. 여기서 개시되는 재료는 또한, 하나 이상의 프로세서에 의해 판독되고 실행될 수 있는, 머신-판독가능 매체 상에 저장된 명령어들로서 구현될 수 있다. 머신-판독가능 매체는 머신(예를 들면, 컴퓨팅 디바이스)에 의해 판독가능한 형태로 정보를 저장하기 위한 임의의 매체 및/또는 메커니즘을 포함할 수 있다. 예를 들면, 머신-판독가능 매체는, ROM(read only memory), RAM(random access memory), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스 및 기타를 포함할 수 있다.
"일 구현예", "구현예", "예시적인 구현예" 등에 대한 명세서 내의 참조들은, 설명되는 구현예가 특정 특징, 구조, 또는 특성을 포함할 수 있지만, 모든 구현예가 반드시 특정 특징, 구조, 또는 특성을 포함할 필요는 없을 수 있다. 더욱이, 그러한 어구는 동일한 구현예를 지칭할 필요도 없다. 또한, 특정 특징, 구조, 또는 특성이 구현예와 연계하여 설명되는 경우, 여기서 명시적인 설명과 관계없이 다른 구현예와 연계하여 그러한 특징, 구조, 또는 특성에 영향을 미치는 것은 당업자의 지식 내에 있다는 것을 받아들여야 한다.
시스템, 장치, 물품, 및 방법은 오브젝트 검출을 가속시키기 위해 하드웨어 기반 콘볼루션 사전-필터와 연관되어 설명된다.
전술한 바와 같이, 오브젝트 검출은 폭넓은 범위의 애플리케이션을 갖는다. 그러나, 현재의 오브젝트 구현예는 계산 집중식이고 실시간 오브젝트 검출 및/또는 인식을 실현하지 못하고, 이용가능한 계산 자원들의 대부분 또는 전부를 소모하고, 전력 집중식이라는 등의 제한을 갖는다.
이하에 상세히 설명되는 바와 같이, 하드웨어 기반 컨볼루션 사전-필터는 오브젝트 검출을 가속화시키고, 실시간 오브젝트 검출 및/또는 오브젝트 인식이 달성될 수 있고, 계산 자원들 및 전력이 절약될 수 있는 상당한 효율을 제공할 수 있다. 예를 들면, 입력 이미지와 사전-트레이닝된 컨볼루션 커널의 컨볼루션은 필터링된 이미지를 제공할 수 있다. 필터링된 이미지에 임계치가 적용되어 마스킹된(masked) 픽셀과 언마스킹된(unmasked) 픽셀을 포함하는 마스킹된 이미지를 생성할 수 있다. 마스킹된 픽셀은 관심 오브젝트를 포함하지 않는 것으로서 폐기될 수 있다. 컨볼루션 및 임계치 사전-필터를 통과할 수 있는 언마스킹된 픽셀에 대하여, 캐스케이드 필터가 적용될 수 있다. 캐스케이드 필터는 몇 개의 순차적인 스테이지를 포함할 수 있다. 개별적인 언마스킹된 픽셀은 제1 스테이지로 진행하고, 이 스테이지를 통과한다면, 계속해서 제2 스테이지로 진행한다. 픽셀이 이 스테이지를 통과하지 못하면, 폐기될 수 있다. 그러한 방식으로, 통과 픽셀들은 순차적인 스테이지들에서 테스트될 수 있다. 모든 스테이지들을 통과하는 픽셀들은 관심 오브젝트의 일부 또는 오브젝트를 포함할 수 있는 영역, 오브젝트 검출 영역에 연관될 수 있다. 일반적으로, 오브젝트 검출 영역은 프로세스 또는 시스템이 영역 내의 오브젝트 또는 오브젝트의 일부를 검출할 수 있도록 통과 픽셀에 연관된 영역일 수 있다. 몇몇 예에서, 영역은 통과 픽셀 주위의 픽셀들의 수(예를 들면, 32×32 픽셀들)일 수 있고, 통과 픽셀은 그러한 영역의 중심에 있게 된다. 오브젝트 검출 영역들은 선택적으로 병합되고, 오브젝트 인식 프로세싱과 같은 추가의 프로세싱을 위해 함께 통과된다.
일반적으로, 여기서 논의되는 오브젝트 검출은, 입력 이미지에서, 오브젝트(즉, 관심 카테고리의 오브젝트)가 입력 이미지 내에 어디에 있을 수 있는지를 검출하는 것을 포함할 수 있다. 예를 들면, 얼굴 검출시에, 검출은 얼굴을 검출하는 것을 포함할 수 있다. 또한, 여기서 논의되는 바와 같은 오브젝트 인식은 특정 오브젝트(즉, 개별적인 관심 카테고리)를 인식하는 것을 포함할 수 있다. 예를 들면, 얼굴 인식시에, 검출된 얼굴에 어떤 사람이 연관되어 있는지를 식별하는 것을 포함할 수 있다. 설명된 하드웨어 기반 컨볼루션 사전-필터는 오브젝트 검출 및/또는 인식 구현예에 대해 고속이며, 신뢰성 있고, 낮은 계산, 및 저비용 프로세스를 제공할 수 있다.
도 1은 본 발명의 적어도 몇몇 구현예에 따라 배열된 오브젝트 검출 및/또는 인식을 위한 예시적인 시스템(100)의 예시적인 도면이다. 도시된 바와 같이, 시스템(100)은 하드웨어(120)를 통해 구현된 컨볼루션 모듈(122), 임계치 모듈(130), 및 캐스케이드 필터 모듈(140)을 포함할 수 있다. 다양한 구현예에서, 시스템(100)은 오브젝트 검출 사전-필터링, 및/또는 오브젝트 인식을 포함하여 오브젝트 검출을 수행하도록 구성될 수 있다. 아래에 추가로 논의되는 바와 같이, 시스템(100)은 컨볼루션 모듈(122)이 하드웨어(120)를 통해 구현될 수 있다는 공통성을 가지면서 다양한 하드웨어 구현예를 통해 채용될 수 있다. 일반적으로, 하드웨어(120)는 컨볼루션(126)을 수행하는데 전용이거나 적어도 부분적으로 전용인 하드웨어 또는 하드웨어의 일부(예를 들면, 디지털 신호 프로세서, 필드 프로그래밍가능 게이트 어레이, 그래픽 프로세싱 유닛, 또는 기타 하드웨어 가속기)를 포함할 수 있다. 다양한 구현예에서, 임계치 모듈(130) 및/또는 캐스케이드 필터 모듈(140)은, 아래에 더 논의되지만 명료성을 위해 도 1에서는 도시되지 않은 중앙 프로세싱 유닛(들) 또는 그래픽 프로세싱 유닛과 같은 하드웨어(120) 또는 시스템(100)의 다른 컴포넌트들을 통해 구현될 수 있다.
아래에 더 논의되는 바와 같이, 시스템(100)은 또한 병합 모듈 및/또는 오브젝트 인식 모듈을 포함할 수 있는데, 이들은 명료성을 위해 도 1에는 도시되어 있지 않다. 또한, 몇몇의 예에서, 시스템(100)은 명료성을 위해 도 1에는 도시되지 않은 추가의 항목들을 포함할 수 있다. 예를 들면, 시스템(100)은 RF(radio frequency-type) 트랜시버, 디스플레이, 안테나, 스피커, 마이크로폰, 가속기, 메모리, 라우터, 네트워킹 인터페이스 로직 등을 포함할 수 있다.
몇몇의 예에서, 시스템(100)은 오브젝트 검출 동작 또는 오브젝트 검출 사전-필터 동작을 수행할 수 있다. 예를 들면, 시스템(100)은 하나 이상의 관심 오브젝트(112)를 포함할 수 있는 입력 이미지(110)를 수신할 수 있다. 일반적으로, 입력 이미지(110)는, 예를 들면, 이미지 파일 또는 비디오 프레임 등과 같은 임의의 적절한 이미지 또는 비디오 데이터일 수 있다. 관심 오브젝트(112)는 일반적으로 오브젝트 검출 및/또는 인식에 바람직한, 예를 들면, 얼굴, 눈, 랜드마크, 기록 문자, 인간, 또는 자동차 등과 같은 임의의 오브젝트를 포함할 수 있다. 도 1에서, 얼굴 검출 및/또는 인식은 예시적인 예로서 사용된다. 이해되는 바와 같이, 몇몇 예에서, 입력 이미지(110)는 관심 오브젝트를 포함하지 않을 수 있다.
도 1에 도시된 바와 같이, 하드웨어(120)의 컨볼루션 모듈(122)에서, 입력 이미지(110)와 컨볼루션 커널(124)의 컨볼루션(126)을 수행하여 필터링된 이미지(128)를 생성할 수 있다. 일반적으로, 컨볼루션(126)은 입력 이미지(110)의 수정 버전(즉, 필터링된 이미지(128))을 제공할 수 있다. 예를 들면, 컨볼루션(126)은 입력 이미지(110)와 컨볼루션 커널(124)의 오버랩(overlap)을 입력 이미지(110)의 변환의 함수로서 제공할 수 있다. 몇몇 예에서, 입력 이미지(110)의 컨볼루션(126)은 픽셀별로 수행될 수 있다. 컨볼루션 커널(124)은 컨볼루션(126)을 통해 필터링된 이미지(128)를 생성하기 위한 임의의 적절한 커널 또는 템플릿을 포함할 수 있다. 예를 들면, 컨볼루션 커널(124)은 사전-설계된 컨볼루션 커널 또는 사전-트레이닝된 컨볼루션 커널을 포함할 수 있다. 사전-트레이닝된 컨볼루션 커널은 대규모 트레이닝 세트에 의해 트레이닝된 선형 분류기를 이용함으로써 생성될 수 있다. 트레이닝 세트는, 예를 들면, 오브젝트를 포함하는 다수의 이미지 및 오브젝트를 포함하지 않는 다수의 이미지를 포함할 수 있다. 전술한 바와 같이, 컨볼루션 모듈(121)은 하드웨어(120)를 통해 구현될 수 있다. 다양한 구현예에서, 하드웨어(120)는 디지털 신호 프로세서, 필드 프로그래밍가능 게이트 어레이, 그래픽 프로세싱 유닛, 또는 다른 하드웨어 가속기 등을 포함할 수 있다.
도 1에서 도시된 바와 같이, 임계치 모듈(130)은 필터링된 이미지(128)에 임계치를 적용하여 마스킹된 이미지(132)를 생성할 수 있다. 일반적으로, 임계치 모듈(130)은 필터링된 이미지에, 예를 들면, 픽셀별로 임의의 적절한 방식으로 임계치를 적용할 수 있다. 적용된 임계치는, 예를 들면, 사전-결정된 임계치, 사전-트레이닝된 임계치, 컨볼루션 결과 사전-트레이닝된 임계치 등을 포함할 수 있다. 마스킹된 이미지(132)는 다수의 마스킹된 픽셀과 다수의 언마스킹된 픽셀을 포함할 수 있다. 일반적으로, 마스킹된 픽셀은 관심 오브젝트 또는 관심 오브젝트의 일부를 포함하지 않을 것이라고 간주되는 반면, 언마스킹된 픽셀은 관심 오브젝트 또는 관심 오브젝트의 일부를 포함할 것이라고(또는 포함하는지를 판정하기 위해 적어도 추가의 프로세싱이 필요할 것이라고) 간주될 수 있다. 일반적으로, 마스킹된 픽셀은 폐기될 수 있다. 마스킹된 픽셀의 그러한 폐기(및, 이에 의한 입력 이미지(110)의 부분들 또는 영역들)는, 캐스케이드 필터 모듈이 거절되거나 폐기된 픽셀들을 프로세싱할 필요가 없기 때문에 후속 프로세싱 요구사항을 상당히 감소시킬 수 있다. 즉, 이해되는 바와 같이, 캐스케이드 필터 모듈(140)은 이에 의해 단지 관심이 있을 것 같은 픽셀들(즉, 언마스킹된 픽셀들)만을 프로세싱하고 관심 오브젝트 또는 관심 오브젝트의 일부를 가질 것 같은 영역들을 생성할 수 있다.
마스킹된 이미지(132)의 마스킹된 픽셀 및 언마스킹된 픽셀들은, 예를 들면, 마스킹된 픽셀들을 1의 값에 의해 식별하고 언마스킹된 픽셀들을 0의 값에 의해 식별하는 것과 같은 임의의 적절한 방식으로 표현될 수 있다. 더욱이, 몇몇의 구현예에서, 이미지의 크기는, 예를 들면, 입력 이미지(110), 필터링된 이미지(128), 및 마스킹된 이미지(132)가 동일한 크기일 수 있도록 변경되지 않을 수 있다.
캐스케이드 필터 모듈(140)은, 도시된 바와 같이, 캐스케이드 필터(141)를 마스킹된 이미지(132)의 언마스킹된 픽셀들의 개별 픽셀(들)에 적용하여 하나 이상의 오브젝트 검출 영역(150)을 결정할 수 있다. 몇몇의 예에서, 캐스케이드 필터(141)는 마스킹된 이미지(132)의 언마스킹된 픽셀들 모두에 적용될 수 있다. 오브젝트 검출 영역(150)은 하나 이상의 통과 픽셀(즉, 캐스케이드 필터(141)의 모든 스테이지를 통과한 픽셀들)과 연관될 수 있다. 오브젝트 검출 영역(150)은, 예를 들면, 오브젝트가 검출된 영역들을 포함할 수 있다. 몇몇 예에서, 오브젝트 검출 영역(150)은 그들이 오브젝트 인식 후보 영역들이라고 일컬어질 수 있도록 오브젝트 인식을 위한 후보 영역들일 수 있다. 일반적으로, 마스킹된 이미지(132)의 개별 언마스킹된 픽셀(들)은 캐스케이드 필터 모듈(140)에 의해 구현되는 바와 같이 캐스케이드 필터(141)를 통해 프로세싱될 수 있다. 도시되는 바와 같이, 캐스케이드 필터(141)는 스테이지 1(142), 스테이지 2(144), 및 스테이지 N(146)으로 도시된 임의의 수의 스테이지를 포함할 수 있다. 예시적인 예에서, 캐스케이드 필터(141)는 7 스테이지 캐스케이드 필터일 수 있다. 캐스케이드 필터(141)의 스테이지(142-146)에서, 언마스킹된 픽셀은 그 픽셀이 스테이지를 통과하는지를 결정하기 위해 테스트될 수 있다. 일반적으로, 스테이지는 참/거짓 테스트를 포함할 수 있다. 도 1에 "T"로서 도시된 바와 같이, 픽셀이 그 스테이지를 통과하면(예를 들면, 그 픽셀에 대한 테스트가 참으로 결정됨), 픽셀은 그 다음 스테이지로 이동될 수 있다. 도 1에 "F"로서 도시된 바와 같이, 픽셀이 그 스테이지를 실패하면(예를 들면, 그 픽셀에 대한 테스트가 거짓으로 결정됨), 그 픽셀은 거절, 폐기, 및/또는 거절됨(148)으로서 표기될 수 있다.
일반적으로, 캐스케이드 필터의 다양한 스테이지에서 구현되는 테스트는 테스트되는 픽셀 주위의 픽셀들이 관심 오브젝트를 포함할 수 있는지의 결정을 포함할 수 있다. 그러한 테스트의 예는 다음과 같이 표시될 수 있다.
Figure 112015046267320-pct00001
여기서, k는 캐스케이드 필터(141)의 현재 스테이지일 수 있고, i는 테스트되는 픽셀일 수 있으며, f는 테스트 함수일 수 있고, x는 관심 변수일 수 있으며, θ는 임계치일 수 있다. 몇몇의 구현예에서, 픽셀에 대한 테스트 어려움은 스테이지들만큼 증가할 수 있는데, 초기 스테이지들이 더 용이하고 덜 계산 집중적인 반면 나중 스테이지들이 더 어렵고 더 계산 집중적일 수 있기 때문이다. 그러한 기술을 이용하여, 픽셀들은 보다 효과적으로 폐기될 수 있고, 계산 자원 및 전력을 절약할 수 있다.
논의되는 바와 같이, 캐스케이드 필터(141)는, 예를 들면, 비올라-존스 캐스케이드 필터 또는 프레임워크와 같은 임의의 적절한 유형의 캐스케이드 필터를 포함할 수 있다(예를 들면, 폴 비올라, 마이클 존스의 Rapid Object Detection using a Boosted Cascade of Simple Features, CVPR 2001, 및/또는 2010년 12월 10일에 출원되고 발명의 명칭이 "THECHNIQUES FOR FACE DETECTION AND TRACKING"인 양조 두, 큐앙 리에 의한 PCT/CN2010/000997호 참조). 그러한 오브젝트 검출 기술은 오브젝트 검출 및/또는 인식이 얼굴 검출, 랜드마크 검출, 얼굴 정렬, 미소/눈 깜박임/성별/나이 검출, 얼굴 인식, 두 개 이상의 얼굴을 검출 등을 포함하게 할 수 있다. 몇몇의 예에서, 캐스케이드 필터(141)는 부스트된 캐스케이드 필터를 포함할 수 있다.
다른 예에서, 캐스케이드 필터는 SURF(Speeded Up Robust Features) 캐스케이드 필터 또는 프레임워크를 포함할 수 있다(예를 들면, Bay 등의 "Surf: Speeded up robust features", CVIU(Computer Vision and Image Understanding), 110(3), 346-359 페이지, 2008년, 및/또는 2011년 11월 1일에 출원되고 발명의 명칭이 "OBJECT DETECTION USING EXTENDED SURF FEATURES"인 지앙우오 리, 이민 장에 의한 PCT/CN2011/081642호 참조). 그러한 오브젝트 검출 기술은 오브젝트 검출 및/또는 인식이 얼굴 검출, 랜드마크 검출, 얼굴 정렬, 미소/눈 깜박임/성별/나이 검출, 얼굴 인식, 두 개 이상의 얼굴을 검출 등을 포함하게 할 수 있다.
논의된 바와 같이, 캐스케이드 필터(141)의 스테이지들을 통과한 (있다면) 언마스킹된 픽셀(들)은 관련 오브젝트 검출 영역(150)을 가질 수 있다. 일반적으로, 오브젝트 검출 영역(150)은 캐스케이드 필터(141)를 통과한 언마스킹된 통과 픽셀 주위의 그리고 그 픽셀을 포함하는 영역일 수 있다(예를 들면, 언마스킹된 통과 픽셀은 오브젝트 검출 영역의 중심에 있을 수 있다). 오브젝트 검출 영역(150)은, 예를 들면, 크기가 32 픽셀 × 32 픽셀 또는 15 픽셀 × 15 픽셀 등을 갖는 정사각형과 같은 임의의 크기를 가질 수 있다. 다른 예에서, 오브젝트 검출 영역(150)은 직사각형 또는 원형일 수 있다.
전술하고 아래에 더 설명되는 바와 같이, 시스템(100)은 병합 모듈을 포함할 수 있다. 병합 모듈은 두 개 이상의 오브젝트 검출 영역을 병합하여 병합된 오브젝트 검출 영역을 형성할 수 있다. 그러한 병합은 병합된 영역이 더 많은(또는 거의 전체의) 관심 오브젝트를 포함할 수 있도록 간소화된 프로세싱을 위한 영역으로 통합할 수 있다.
더욱이, 시스템(100)은 또한 오브젝트 인식 모듈을 포함할 수 있다. 오브젝트 인식 모듈은 오브젝트 검출 영역, 오브젝트 검출 영역들, 또는 병합된 검출 영역(들) 상에서 오브젝트 인식을 수행할 수 있다. 그러한 오브젝트 인식은 그들 영역 내에서 하나 이상의 관심 오브젝트들을 식별하는 것을 포함할 수 있다.
몇몇 구현예에서, 캐스케이드 필터 모듈(140) 또는 선택적 병합 모듈로부터의 결과적인 오브젝트 검출 영역(들)은 관심 영역을 포함하는 것으로 결정될 수 있고 추가의 오브젝트 검출 프로세싱이 수행되지 않을 수 있다. 몇몇 구현예에서, 캐스케이드 필터 모듈(140)로부터의 결과적인 오브젝트 검출 영역(들)은 추가로 프로세싱되어 영역(들)이 관심 오브젝트를 포함하는지를 결정할 수 있다.
이하에 더 상세히 논의되는 바와 같이, 시스템(100) 또는 여기서 논의되는 다른 시스템들을 이용하여 도 2 내지 도 4와 연계하여 아래에 논의되는 다양한 기능 또는 도 1에 대해 전술한 기능 중 일부 또는 모두를 수행하는데 사용될 수 있다.
도 2는 본 발명의 적어도 몇몇 구현예에 따라 배열된 예시적인 오브젝트 검출 및/또는 인식 프로세스(200)를 도시하는 흐름도이다. 예시적인 구현예에서, 프로세스(200)는 하나 이상의 블록(202, 204 및/또는 206)으로 도시된 바와 같이 하나 이상의 동작, 기능 또는 액션을 포함할 수 있다. 비제한적인 예로서, 프로세스(200)는 도 1의 예시적인 시스템(100)을 참조하여 여기서 설명될 것이다.
프로세스(200)는 오브젝트 검출 및/또는 인식을 위한 컴퓨터 구현 방법으로서 이용될 수 있다. 프로세스(200)는 블록 202 "하드웨어를 통해, 입력 이미지와 컨볼루션 커널의 컨볼루션을 수행하여 필터링된 이미지를 생성"에서 시작하며, 여기서, 필터링된 이미지는, 하드웨어를 통해, 입력 이미지와 컨볼루션 커널의 컨볼루션을 수행함으로써 생성될 수 있다. 예를 들면, 필터링된 이미지는 컨볼루션을 수행하는데 전용이거나 적어도 부분적으로 전용인 하드웨어 또는 하드웨어의 일부(예를 들면, 디지털 신호 프로세서, 필드 프로그래밍가능 게이트 어레이, 그래픽 프로세싱 유닛, 또는 다른 하드웨어 가속기)를 통해 입력 이미지와 사전-트레이닝된 컨볼루션 커널의 컨볼루션에 의해 생성될 수 있다.
프로세싱은 동작(202)에서 동작(204) "필터링된 이미지에 임계치를 적용하여 마스킹된 픽셀과 언마스킹된 픽셀을 갖는 마스킹된 이미지를 생성"하는 것으로 계속될 수 있고, 여기서, 마스킹된 이미지는 필터링된 이미지에 임계치를 적용함으로써 생성될 수 있다. 예를 들면, 마스킹된 이미지는 다수의 마스킹된 픽셀(예를 들면, 그들 픽셀은 관심 오브젝트 또는 관심 오브젝트의 일부를 포함하지 않을 것으로 간주됨) 및 다수의 언마스킹된 픽셀(예를 들면, 그들은 관심 오브젝트 또는 관심 오브젝트의 일부를 더 포함함)을 포함할 수 있다.
프로세싱은 동작(204)에서 동작(206) "언마스킹된 픽셀들의 개별 픽셀들에 캐스케이드 필터를 적용하여 캐스케이드 필터를 통과하는 하나 이상의 픽셀에 연관된 하나 이상의 오브젝트 검출 영역을 결정"하는 것으로 계속될 수 있고, 여기서, 캐스케이드 필터는 언마스킹된 픽셀들의 개별 픽셀들에 적용되어 캐스케이드 필터를 통과하는 (있다면) 하나 이상의 픽셀들과 연관된 (있다면) 하나 이상의 오브젝트 검출 영역들을 결정할 수 있다. 예를 들면, 캐스케이드 필터는 다중-스테이지 캐스케이드 필터일 수 있다.
(있다면) 그 결과의 오브젝트 검출 영역들이 선택적으로 병합될 수 있다. 그들은 또한 그 영역들 상에서 오브젝트 인식을 수행함으로써 영역들 내의 관심 오브젝트 또는 관심 오브젝트의 일부를 식별하도록 추가로 프로세싱될 수 있다.
프로세스(200)와 연관된 몇몇의 추가 및/또는 대체 상세가 도 3 및/또는 도 4와 관련하여 아래에 더 상세히 논의되는 하나 이상의 구현예에서 설명될 수 있다.
도 3은 본 발명의 적어도 일부 구현예에 따라 배치된, 동작시 오브젝트 검출 및/또는 인식을 위한 예시적인 시스템(100) 및 프로세스(300)의 예시적인 도면이다. 예시적인 구현예에서, 프로세스(300)는 하나 이상의 액션(312, 314, 316, 322, 324, 332, 334, 336, 342, 344, 및/또는 352)에 의해 도시되는 바와 같은 하나 이상의 동작, 기능 또는 액션을 포함할 수 있다. 비제한적인 예로서, 프로세스(300)는 도 1의 예시적인 시스템(100)을 참조하여 여기서 설명될 것이다.
도시된 구현예에서, 시스템(100)은 모듈(302) 및/또는 그들의 조합을 포함할 수 있다. 예를 들면, 모듈(306)은 컨볼루션 모듈(122), 임계치 모듈(130), 캐스케이드 모듈(140), 병합 모듈(155), 오브젝트 인식 모듈(160) 등 및/또는 그들의 조합을 포함할 수 있다. 컨볼루션 모듈(122)은 하드웨어(120) 내에 구현될 수 있고, 입력 이미지와 컨볼루션 커널의 컨볼루션을 수행하여 필터링된 이미지를 생성하도록 구성될 수 있다. 임계치 모듈(130)은 필터링된 이미지에 임계치를 적용하여, 복수의 마스킹된 픽셀들 및 복수의 언마스킹된 픽셀들을 갖는 마스킹된 이미지를 생성하도록 구성될 수 있다. 캐스케이드 필터 모듈(140)은, 복수의 언마스킹된 픽셀들의 개별 픽셀들에 대하여, 캐스케이드 필터를 수행하여 캐스케이드 필터를 통과하는 하나 이상의 픽셀들에 연관된 하나 이상의 오브젝트 검출 영역들을 결정하도록 구성될 수 있다. 병합 모듈(155)은 두 개 이상의 오브젝트 검출 영역들을 병합하여 병합된 오브젝트 검출 영역을 형성하도록 구성될 수 있다. 오브젝트 인식 모듈(160)은 오브젝트 검출 영역 및/또는 병합된 오브젝트 검출 영역 상에서 오브젝트 인식을 수행하도록 구성될 수 있다. 논의된 바와 같이, 컨볼루션 모듈(122)은 하드웨어(120)를 통해 구현될 수 있다. 임계치 모듈(130), 캐스케이드 필터 모듈(140), 병합 모듈(155), 및 오브젝트 인식 모듈(160)은 여기서 그리고 특히 도 5 및 도 6을 참조하여 더 설명되는 바와 같이 다양한 구현예에서 구현될 수 있다.
프로세스(300)는 오브젝트 검출 및/또는 인식을 위한 컴퓨터 구현 방법으로서 이용될 수 있다. 프로세스(300)는 블록 312 "입력 이미지를 수신"에서 시작하고, 여기서, 입력 이미지가 수신될 수 있다. 예를 들면, 입력 이미지는 컨볼루션 모듈(122)에서 수신될 수 있다. 입력 이미지는 임의의 적절한 기술에 의해 수신될 수 있고 또 다른 디바이스로부터 시스템(100)에 의해 수신될 수 있거나 또는 시스템(100)에서 내부적으로 생성될 수 있고 시스템(100)의 또 다른 모듈로부터 컨볼루션 모듈(122)로 이동될 수 있다.
프로세싱은 동작(312)으로부터 동작(314)의 "입력 이미지와 컨볼루션 커널의 컨볼루션을 수행"하는 것으로 계속될 수 있고, 여기서, 입력 이미지와 컨볼루션 커널의 컨볼루션은 컨볼루션 모듈(122)에 의해 수행되어 필터링된 이미지를 생성할 수 있다. 예를 들면, 컨볼루션은 사전-트레이닝된 컨볼루션 커널에 기초하여 수행될 수 있다. 예를 들면, 컨볼루션 모듈은 메모리에 유지될 수 있고 시간에 따라 업데이트되거나 트레이닝될 수 있다.
프로세싱은 동작(314)로부터 동작(316)의 "필터링된 이미지를 이동"하는 것으로 계속될 수 있고, 여기서, 필터링된 이미지는 컨볼루션 모듈(122)로부터 임계치 모듈(130)로 이동될 수 있다.
프로세싱은 동작(316)으로부터 동작(322)의 "필터링된 이미지에 임계치를 적용"하는 것으로 계속될 수 있고, 여기서, 임계치는 필터링된 이미지에 임계치 모듈(130)에 의해 적용되어 마스킹된 이미지를 형성할 수 있다. 예를 들면, 마스킹된 이미지는, 추가의 프로세싱을 위해 관심이 있을 수 있는 언마스킹된 픽셀들, 및 추가의 프로세싱을 위해 폐기될 수 있는 마스킹된 픽셀들을 포함할 수 있다.
프로세싱은 동작(322)으로부터 동작(324)의 "마스킹된 이미지를 이동"하는 것으로 계속될 수 있고, 여기서, 마스킹된 이미지는 임계치 모듈(130)로부터 캐스케이드 필터 모듈(140)로 이동될 수 있다.
프로세싱은 동작(324)으로부터 동작(332)의 "캐스케이스 필터를 적용"하는 것으로 계속될 수 있고, 여기서, 캐스케이드 필터는 마스킹된 이미지의 언마스킹된 픽셀들에 캐스케이드 필터 모듈(140)에 의해 적용될 수 있다. 예를 들면, 다중-스테이지 캐스케이드 필터가 언마스킹된 픽셀에 적용되어 통과 픽셀(즉, 캐스케이드 필터의 모든 스테이지를 통과한 픽셀)을 결정할 수 있다. 통과 픽셀은, 예를 들면, 통과 픽셀 주위 및 그 픽셀을 포함할 수 있는 오브젝트 검출 영역에 연관될 수 있다. 캐스케이드 필터의 어떠한 스테이지도 통과하지 못하는 픽셀은 거절되고 및/또는 폐기될 수 있다.
프로세싱은 동작(332)으로부터 동작(334 또는 336) 모두에 지칭된 "오브젝트 검출 영역들을 이동"하는 것으로 계속될 수 있고, 여기서, 하나 이상의 오브젝트 검출 영역들은 병합 모듈(155) 및/또는 오브젝트 인식 모듈(160)로 이동될 수 있다. 논의되는 바와 같이, 일부 예에서, 임의의 결정된 오브젝트 영역들이 병합될 수 있다. 다른 예에서, 임의의 결정된 오브젝트 검출 영역들은 오브젝트 검출 모듈(160)로 직접 통과될 수 있다.
프로세싱은 동작(336)으로부터 동작(342)의 "병합"하는 것으로 계속될 수 있고, 여기서, 임의의 수신된 오브젝트 검출 영역들은 병합 모듈(155)에 의해 병합되어 하나 이상의 병합된 오브젝트 검출 영역들을 형성할 수 있다.
프로세싱은 동작(342)으로부터 동작(344)의 "병합된 영역들을 이동"하는 것으로 계속될 수 있고, 여기서, 임의의 형성된 병합된 오브젝트 검출 영역들은 병합 모듈(155)로부터 오브젝트 인식 모듈(160)로 이동될 수 있다.
프로세싱은 동작(334) 또는 동작(344)로부터 동작(352)의 "관심 오브젝트를 식별"하는 것으로 계속될 수 있고, 여기서, 오브젝트 인식 모듈(160)은 수신된 오브젝트 검출 영역 및/또는 수신된 병합 오브젝트 검출 영역 상에서 오브젝트 인식을 수행할 수 있다. 오브젝트 인식 모듈(160)은, 예를 들면, 얼굴, 눈, 랜드마크, 기록 문자, 인간, 또는 자동차 등을 포함할 수 있는 임의의 오브젝트를 식별할 수 있다.
도 4는 본 발명의 적어도 몇몇 구현예에 따라 배치된 예시적인 오브젝트 검출 및/또는 인식 프로세스(400)를 도시하는 흐름도이다. 도시된 구현예에서, 프로세스(400)는 하나 이상의 블록(402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 및/또는 428)에 의해 도시된 바와 같은 하나 이상의 동작, 기능 또는 액션을 포함할 수 있다. 비제한적인 예로서, 프로세스(400)는 예시적인 시스템(100)을 참조하여 여기서 설명될 것이다.
프로세스(400)는 오브젝트 인식을 위한 컴퓨터 구현 방법으로서 이용될 수 있다. 프로세스(400)는 블록 402의 "입력 이미지를 수신"하는 것을 시작할 수 있고, 여기서, 입력 이미지가 수신될 수 있다. 예를 들면, 프로세싱을 위해 이미지 파일 또는 비디오 프레임 등이 수신될 수 있다.
프로세싱은 동작(402)으로부터 동작(404)의 "입력 이미지와 컨볼루션 커널의 컨볼루션을 수행하여 필터링된 이미지를 생성"하는 것으로 계속될 수 있고, 여기서, 입력 이미지와 컨볼루션 커널의 컨볼루션은 여기서 논의된 바와 같이 하드웨어를 통해 수행되어 필터링된 이미지를 생성할 수 있다. 동작(404)은, 예를 들면, 컨볼루션 모듈(122)에서 수행될 수 있다.
프로세싱은 동작(404)으로부터 동작(406)의 "필터링된 이미지의 픽셀에 임계치를 적용"하는 것으로 계속될 수 있고, 여기서, 임계치가 필터링된 이미지의 픽셀에 적용될 수 있다. 임계치는, 예를 들면, 사전-결정된 임계치, 사전-트레이닝된 임계치, 컨볼루션 결과 사전-트레이닝된 임계치 등을 포함할 수 있다. 임계치는 필터링된 이미지의 픽셀에 적용되어 그 픽셀이 마스킹된 픽셀인지 또는 언마스킹된 픽셀인지를 결정할 수 있다. 동작(406)은, 예를 들면, 임계치 모듈(130)에서 수행될 수 있다.
프로세싱은 동작(406)으로부터 동작(408)의 "언마스킹되었나?"로 계속될 수 있고, 여기서, 임계치의 적용에 기초하여 픽셀이 마스킹되었는지 또는 언마스킹되었는지가 결정될 수 있다. 픽셀이 마스킹된 것으로 결정되면(즉, 픽셀이 관심 오브젝트 또는 관심 오브젝트의 일부를 포함할 것 갖지 않은 것으로 간주됨), 프로세싱은 동작(408)으로부터 동작(414)의 "픽셀들을 거절"하는 것으로 계속될 수 있고, 여기서 픽셀은 거절될 수 있다.
픽셀이 언마스킹된 것으로 결정되면, 프로세싱은 동작(408)에서 동작(410)의 "스테이지 k를 갖는 픽셀을 검사"하는 것으로 계속될 수 있고, 여기서, 픽셀은 캐스케이드 필터의 스테이지에 의해 조사되거나 테스트될 수 있다. 이해되는 바와 같이, 언마스킹된 픽셀은 컨볼루션 및 임계치 사전-필터를 통과한 것으로 간주될 수 있고 추가의 프로세싱을 보증할 수 있다. 일반적으로, 픽셀(및/또는 그 픽셀 주위의 영역)은 관심 오브젝트 또는 관심 오브젝트의 일부를 포함할 것이라고 (이 프로세싱 스테이지에서) 간주될 수 있다. 픽셀은, 예를 들면, 여기서 논의되는 임의의 기술을 이용하여 캐스케이드 필터의 현재 스테이지에서 조사되거나 테스트될 수 있다.
프로세싱은 동작(410)에서 동작(412)의 "스테이지 K 통과?"로 계속될 수 있고, 여기서, 픽셀이 캐스케이드 필터의 스테이지 K를 통과하는지가 결정될 수 있다. 동작(410 및 412)은, 예를 들면, 캐스케이드 필터 모듈(140)에 의해 수행될 수 있다. 픽셀이 스테이지 K를 실패하면, 프로세싱은 동작(412)으로부터 동작(414)의 "픽셀들을 거절"하는 것으로 계속될 수 있고, 여기서, 픽셀은 관심 오브젝트 또는 관심 오브젝트의 일부를 포함하지 않는 것으로서 거절될 수 있다. 프로세싱은, 아래에 더 논의되는 바와 같이, 동작(414)으로부터 동작(426)으로 계속될 수 있다.
픽셀이 스테이지 K를 통과했으면, 프로세싱은 동작(412)으로부터 동작(416)의 "다음 스테이지, K=K+1"로 계속될 수 있고, 여기서, 캐스케이드 필터 스테이지 카운트가 다음 스테이지 번호(또는 모든 스테이지를 나타내는 완료되는 것보다 더 높은 번호)로 증가될 수 있다. 여기서 논의되는 바와 같이, 캐스케이드 필터는 임의의 적절한 스테이지의 수를 포함할 수 있다. 이해되는 바와 같이, 픽셀이 스테이지 1에서 테스트될 수 있는 동작(410)을 통과하는 제1 시간, 스테이지 2에서 통과하는 제2 시간, 계속해서, 픽셀이 모든 스테이지를 통과하거나 또는 스테이지를 실패하고 거절될 수 있을 때까지 계속된다.
프로세싱은 동작(416)으로부터 동작(418)의 "모든 스테이지를 통과?"로 계속될 수 있고, 여기서, 캐스케이드 필터의 모든 스테이지가 픽셀에 의해 통과되었는지가 결정될 수 있다. 그렇지 않다면, 픽셀은 캐스케이드 필터의 하나 이상의 추가 스테이지에 의해 프로세싱될 수 있고, 프로세싱은, 전술한 바와 같이, 동작(418)으로부터 동작(410)의 "스테이지 K로 픽셀을 조사"하는 것으로 계속될 수 있다.
픽셀이 캐스케이드 필터의 모든 스테이지를 통과하였다면, 프로세싱은 동작(418)으로부터 동작(420)의 "픽셀(들)을 통과"하는 것으로 계속될 수 있고, 여기서, 픽셀은 통과 픽셀로서 저장될 수 있다. 여기서 논의되는 바와 같이, 통과 픽셀은 그 통과 픽셀을 포함하면서 둘러싸는 오브젝트 검출 영역에 연관될 수 있다.
프로세싱은 또한 동작(420)으로부터 동작(422)의 "병합"하는 것으로 계속될 수 있고, 여기서, 통과 픽셀 및/또는 통과 픽셀과 연관된 오브젝트 검출 영역이 병합되어, 예를 들면, 병합된 오브젝트 검출 영역(들)을 형성할 수 있다. 오브젝트 검출 영역의 구성에 따라, 단일 병합 오브젝트 검출 영역 또는 다중 오브젝트 검출 영역으로 병합될 수 있다. 병합 동작은, 예를 들면, 병합 모듈(155)에 의해 수행될 수 있다. 몇몇 예에서, 병합 동작은 모든 픽셀이 평가된(즉, 거절 또는 통과된) 후에 수행될 수 있다.
프로세싱은 또한 동작(422)으로부터 동작(424)의 "오브젝트 인식"으로 계속될 수 있고, 여기서, 오브젝트 인식은 오브젝트 검출 영역 또는 병합된 오브젝트 검출 영역 상에서 수행될 수 있다. 논의되는 바와 같이, 오브젝트 인식 프로세싱은 영역들 내에서 오브젝트들을 식별하는 것을 포함할 수 있다. 오브젝트 인식 동작은, 예를 들면, 오브젝트 인식 모듈(160)에 의해 수행될 수 있다.
또한, 픽셀이 모든 스테이지를 통과하였다면, 프로세싱은 동작(418)으로부터 동작(426)의 "모든 픽셀이 완료되었는가?"로 계속될 수 있다. 논의되는 바와 같이, 프로세싱은 또한 동작(414)으로부터 동작(426)으로 계속될 수 있다. 동작(426)에서, 모든 언마스킹된 픽셀이 프로세스에 의해 평가되었는지가 결정될 수 있다. 더 많은 픽셀이 프로세싱을 요구하면, 프로세싱은, 전술한 바와 같이, 동작(426)으로부터 동작(406)의 "필터링된 이미지의 픽셀에 임계치를 적용"하는 것으로 계속될 수 있다. 모든 픽셀이 완료되면, 프로세싱은 동작(426)으로부터 동작(428)의 "종료"로 계속될 수 있고, 여기서, 프로세스는 종료될 수 있다.
동작시에, 프로세스(200, 300, 400) 및 도 1과 연계하여 논의된 동작은 오브젝트 인식 및/또는 오브젝트 인식을 위한 사전-필터를 제공할 수 있다. 사전-필터는, 예를 들면, 필터링된 이미지를 형성하기 위해 입력 이미지와 컨볼루션 커널의 컨볼루션을 포함하고 필터링된 이미지에 임계치를 적용할 수 있다. 사전-필터는 또한 캐스케이드 필터를 포함할 수 있다. 사전-필터는 얼굴 검출과 같은 오브젝트 검출을 가속시킬 수 있다. 일반적으로, 사전-필터는 수신된 입력 이미지의 영역 또는 픽셀이 거절될 수 있고 그들 영역 또는 픽셀에 대해 후속 프로세싱이 회피될 수 있도록 영역 필터 또는 픽셀 필터로서 고려될 수 있다. 후속 프로세싱은 대신 목표 영역(즉, 찾고 있는 오브젝트 또는 얼굴을 포함할 것 같은 영역)에 초점을 맞출 수 있다. 그러한 기술은, 특히, 해상도가 풀 HD(Full High Definition)(1920×1080) 및 울트라 HD(Ultra High Definition)(3840×2160)으로 증가함에 따라, 실시간 오브젝트 또는 얼굴 검출을 가능하게 할 수 있다.
예시적인 예로서 얼굴 인식을 사용하는 것, 15×15 컨볼루션을 지원하는 하드웨어 및 32×32의 얼굴 템플릿을 이용하는 것, 30×15의 컨볼루션 커널이 이용될 수 있다. 그러한 컨볼루션 커널은, 예를 들면, 두 개의 이웃하는 15×15 컨볼루션의 사용을 필요로 할 수 있다. 이해되는 바와 같이, 언급된 크기는 단지 예시적인 목적을 위한 것이고, 특히, 미래의 하드웨어는, 예를 들면, 31×31 컨볼루션과 같은 더 큰 컨볼루션을 지원할 수 있다. 컨볼루션 커널은, 예를 들면, 선형 분류기(예를 들면, 지원 벡터 머신, 로지스틱 회귀(logistic regression) 등)을 이용하여16,000개의 크로핑된(cropped) 얼굴 및 300,000개의 크로핑된 비얼굴(non-face)를 갖는 데이터 세트와 같은 데이터 세트로부터 트레이닝될 수 있다. 또한, 캐스케이스 필터는, 전술한 바와 같이, 컨볼루션 결과와 임계치를 결합하여 마스킹된 이미지를 형성하는 사전-필터로부터의 결과로 트레이닝될 수 있다.
그러한 구현예는 캐스케이드 필터만을 구비한 구현예와 비교될 수 있다. 그러한 캐스케이드 필터는, 예를 들면, 16,000개의 크로핑된 얼굴 및 19,000개의 크로핑된 비얼굴로 트레이닝될 수 있다. 이해되는 바와 같이, 그러한 (크로핑된 얼굴 및 크로핑되지 않은 얼굴로 사전-트레이닝된) 사전-트레이닝된 캐스케이드 필터는, 상이한 트레이닝에 기초하여 바로 위에서 논의된 바와 같이(즉, 컨볼루션 사전-트레이닝된 캐스케이드 필터), 컨볼루션 결과와 임계치를 결합하여 마스킹된 이미지를 형성하는 사전-필터로부터의 결과로 트레이닝된 캐스케이드 필터와는 상이할 것이다.
두 개의 구현예를 비교하기 위해, FPPW(false-positive-rate per window)가 평가된다. 다음의 표에 그 결과를 나타낸다.
Figure 112015046267320-pct00002
표 1에서의 결과는 전술한 바와 같은 SURF(Speeded Up Robust Features) 캐스케이드 필터를 이용하는 구현예를 나타낸다. 예를 들면, 비올라-존스 기반 캐스케이드 필터 등과 같은 다른 캐스케이드 필터들에 대해서도 유사한 결과가 예상된다.
표 1에 나타낸 도시된 이론적 가속은 다음과 같이 결정될 수 있다. 크기 15×15의 하드웨어 컨볼루션은, 템플릿이 uint8(언사인드(unsigned) 8-비트 정수로 변환된 어레이의 구성요소) 유형이면 0.5 픽셀/클록에서 실행되거나, 또는 템플릿이 int16(16-q비트 정수로 변환된 어레이의 구성요소) 유형이면 0.125 픽셀/클록에서 실행될 수 있다. 언사인드 8-비트 유형은 한 픽셀에서의 한 컨볼루션이 2 클록을 요구할 수 있다는 것을 의미하는 것으로 가정될 수 있다. 컨볼루션 및 임계치 사전-필터는 2 컨볼루션 및 1 임계치 동작을 요구할 수 있고, 개별 픽셀 위치가 5 클록을 요구할 수 있다는 것을 의미한다. 비교해 보면, 캐스케이드 필터의 제1 스테이지의 SIMD(single instruction, multiple data) 구현예는 256 비트에서 25보다 많은 클록을 요구할 수 있다.
컨볼루션 및 임계치 사전-필터는 이미지 내의 픽셀들의 86% 이상을 필터링할 수 있다(표 1 참조). 비교해 보면, 캐스케이드 필터의 제1 스테이지는 이미지 내의 픽셀들의 75%만을 필터링할 수 있다. 따라서, 컨볼루션 및 임계치 사전-필터 기술은 5배 더 빠르고(25 클록 대신 5 클록을 요구), 또는 더욱더 효율적일 수 있다. 또한, 7 스테이지 캐스케이드 필터와 함께 컨볼루션 및 임계치 사전-필터 기술은 표준 8 스테이지 캐스케이드 필터보다 더 약한 분류기를 가질 수 있다 (204 v. 251, 표 1 참조).
논의된 바와 같이, 여기서 논의된 캐스케이드 필터 기술과 함께 컨볼루션 및 임계치 사전-필터 기술은 오브젝트 검출 구현예에서 많은 이점을 가질 수 있다. 첫째로, 방금 논의된 바와 같이, 이 기술은 가속(5배 이상)을 제공할 수 있다. 또한, 논의된 바와 같이, 컨볼루션 모듈은, (다른 모듈과 같이) 낮은 전력 소모를 제공할 수 있는 하드웨어에서 구현될 수 있다. 그러한 이점은 특히 배터리로 동작 및/또는 모바일 디바이스에서 중요할 수 있다. 또한, 논의된 구현예는, 예를 들면, 비디오 디코딩, OpenGL(Open Graphics Library) 렌더링 등과 같은 다른 동시의 컴퓨팅 요구사항에 이용가능한 (중앙 프로세싱 유닛(들) 및/또는 그래픽 프로세싱 유닛(들)에서의) 가치있는 컴퓨팅 자원을 남겨둘 수 있다.
예시적인 프로세스(200, 300, 400)의 구현예, 및 도 1에 대해 논의된 프로세스가 도시된 순서대로 나타낸 모든 블록을 수행하는 것을 포함할 수 있지만, 본 발명은 이에 한정되지 않고, 다수의 예에서, 프로세스(200 및 300)의 구현예는 도시된 블록의 서브세트만을 및/또는 도시된 것과 상이한 순서로 수행하는 것을 포함할 수 있다.
부가하여, 도 1 내지 도 4의 임의의 하나 이상의 블록 및 도 1에 대해 논의된 프로세스는 하나 이상의 컴퓨터 프로그램 제품에 의해 제공되는 명령어에 응답하여 수행될 수 있다. 그러한 프로그램 제품은, 예를 들면, 프로세서에 의해 실행될 때, 여기서 설명된 기능을 제공할 수 있는 명령어를 제공하는 신호 베어링(bearing) 매체를 포함할 수 있다. 컴퓨터 프로그램 제품은 임의의 형태의 컴퓨터 판독가능 매체로 제공될 수 있다. 따라서, 예를 들면, 하나 이상의 프로세서 코어(들)를 포함하는 프로세서는 도 1 내지 도 4에 도시된 블록들 중 하나 이상을 수행할 수 있다.
여기서 설명되는 임의의 구현예에서 사용되는 바와 같이, 용어 "모듈"은 여기서 설명된 기능을 제공하도록 구성된 소프트웨어, 펌웨어 및/또는 하드웨어의 임의의 조합을 지칭한다. 소프트웨어는 소프트웨어 패키지, 코드 및/또는 명령어 세트 또는 명령어들로서 구체화될 수 있고, 여기서 설명되는 임의의 구현예에서 사용되는 바와 같은 "하드웨어"는, 예를 들면, 하드와이어드 회로, 프로그래밍가능 회로, 상태 머신 회로, 및/또는 프로그래밍 회로에 의해 실행되는 명령어를 저장하는 펌웨어를 단일로 또는 임의의 조합으로 포함할 수 있다. 모듈은, 집합적으로 또는 개별적으로, 대규모 시스템의 부분을 형성하는 회로, 예를 들면, 집적 회로(IC), 시스템-온-칩(SoC) 등으로서 구체화될 수 있다.
도 5는 본 발명의 적어도 몇몇의 구현예에 따라 배치된, 오브젝트 검출 및/또는 인식을 위한 예시적인 시스템(100)의 예시적인 도면이다. 도시된 구현예에서, 시스템(100)은 하나 이상의 중앙 프로세싱 유닛(506), 하나 이상의 메모리 스토어(508), 하드웨어(120), 및/또는 하나 이상의 그래픽 프로세싱 유닛(504)을 포함할 수 있다. 중앙 프로세싱 유닛(506), 메모리 스토어(508), 하드웨어(120), 및 그래픽 프로세싱 유닛(504)은, 예를 들면, 버스 또는 다른 액세스를 통해 서로 통신할 수 있다.
도 5에 도시된 바와 같이, 컨볼루션 모듈(122)은 하드웨어(120)를 통해 구현될 수 있다. 또한, 다양한 예에서, 캐스케이드 필터 모듈(140)은 하드웨어(122), 중앙 프로세싱 유닛(506), 또는 그래픽 프로세싱 유닛(504)을 통해 구현될 수 있다. 또한, 다양한 예에서, 병합 모듈(155)은 중앙 프로세싱 유닛(506) 또는 그래픽 프로세싱 유닛(504)을 통해 구현될 수 있다. 유사하게, 다양한 예에서, 오브젝트 인식 모듈(160)은 중앙 프로세싱 유닛(506) 또는 그래픽 프로세싱 유닛(504)을 통해 구현될 수 있다.
논의된 바와 같이, 하드웨어(120)는, 예를 들면, 디지털 신호 프로세서 또는 필드 프로그래밍가능 게이트 어레이 또는 다른 적절한 하드웨어 가속기를 포함할 수 있다. 하드웨어(120)는 전용 하드웨어(즉, 여기서 논의된 입력 이미지와 컨볼루션 커널의 컨볼루션을 구현할 수 있는, 컨볼루션 함수에 전용인 하드웨어(120)의 일부분)을 통해 컨볼루션 모듈(122)을 구현하는 하드웨어 모듈일 수 있다. 다양한 예에서, 임계치 모듈(130), 캐스케이드 필터 모듈(140), 병합 모듈(155), 및/또는 오브젝트 인식 모듈(160)의 구현예는 하드웨어 구현예 및/또는 소프트웨어 구현예를 포함할 수 있다. 예를 들면, 중앙 프로세싱 유닛(506)을 통해 구현되는 모듈은 소프트웨어를 통해 구현될 수 있다. 그래픽 프로세싱 유닛(504)을 통해 구현되는 모듈은, 예를 들면, (적용가능하다면) 하드웨어를 통해, 또는 (적용가능하다면) 소프트웨어를 통해 구현될 수 있다.
중앙 프로세싱 유닛(506)은, 예를 들면, 마이크로프로세서(들), 멀티코어 프로세서들, 애플리케이션 특정 집적 회로, 칩(들), 칩셋 등을 포함하는 임의의 적절한 구현예를 포함할 수 있다. 또한, 그래픽 프로세싱 유닛(504)은, 예를 들면, 프로세서(들), 멀티코어 프로세서, 애플리케이션 특정 집적 회로, 프로그래밍가능 로직 디바이스, 그래픽 카드, 집적 그래픽, 범용 그래픽 프로세싱 유닛(들) 등을 포함하는 임의의 적절한 구현예를 포함할 수 있다. 부가하여, 메모리 스토어(508)는 휘발성 메모리(예를 들면, SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory) 등) 또는 비휘발성 메모리(예를 들면, 플래시 메모리 등) 등과 같은 임의의 유형의 메모리일 수 있다. 비제한적인 예에서, 메모리 스토어(508)는 캐시 메모리에 의해 구현될 수 있다. 다양한 예에서, 시스템(100)은 칩셋으로서 또는 시스템 온 칩으로서 구현될 수 있다.
도 6은 본 발명의 적어도 몇몇의 구현예에 따라 배치된, 오브젝트 검출 및/또는 인식을 위한 추가의 예시적인 시스템(100)의 예시적인 도면이다. 도시된 구현예에서, 시스템(100)은 하나 이상의 중앙 프로세싱 유닛(506), 하나 이상의 메모리 스토어(508), 및/또는 하나 이상의 그래픽 프로세싱 유닛(504)을 포함할 수 있다. 중앙 프로세싱 유닛(506), 메모리 스토어(508), 및 그래픽 프로세싱 유닛(504)은, 예를 들면, 버스 또는 다른 액세스를 통해 서로 통신할 수 있다.
이해되는 바와 같이, 도 6의 구현예는, 도시된 바와 같이, 컨볼루션 모듈(122)이 그래픽 프로세싱 유닛(504)을 통해 구현될 수 있다는 것을 제외하고는 도 5의 구현예와 유사하다. 그래픽 프로세싱 유닛(504)은 전용 하드웨어(즉, 여기서 논의된 입력 이미지와 컨볼루션 커널의 컨볼루션을 구현할 수 있는, 컨볼루션 기능에 전용인 그래픽 프로세싱 유닛(504)의 일부)를 통해 컨볼루션 모듈(122)을 구현할 수 있다. 일반적으로, 컨볼루션 모듈(122)은 그래픽 프로세싱 유닛(504)을 통한 하드웨어 기반 구현예일 수 있다. 또한, 다양한 예에서, 임계치 모듈은 그래픽 프로세싱 유닛(504)을 통해 구현될 수 있다. 더욱이, 다양한 예에서, 캐스케이드 필터 모듈(140)은 중앙 프로세싱 유닛(506) 또는 그래픽 프로세싱 유닛(504)을 통해 구현될 수 있다. 다양한 예에서, 병합 모듈(155)은 중앙 프로세싱 유닛(506) 또는 그래픽 프로세싱 유닛(504)을 통해 구현될 수 있다. 유사하게, 다양한 예에서, 오브젝트 인식 모듈(160)은 중앙 프로세싱 유닛(506) 또는 그래픽 프로세싱 유닛(504)을 통해 구현될 수 있다.
논의된 바와 같이, 다양한 실시예에서, 임계치 모듈(130), 캐스케이드 필터 모듈(140), 병합 모듈(155), 및/또는 오브젝트 인식 모듈(160)의 구현예는 하드웨어 구현예 및/또는 소프트웨어 구현예를 포함할 수 있다. 예를 들면, 중앙 프로세싱 유닛(506)을 통해 구현되는 모듈은 소프트웨어를 통해 구현될 수 있다. 그래픽 프로세싱 유닛(504)을 통해 구현되는 모듈은, 예를 들면, (적용가능하다면) 하드웨어를 통해, 또는 (적용가능하다면) 소프트웨어를 통해 구현될 수 있다. 또한, 논의된 바와 같이, 중앙 프로세싱 유닛(506)은, 예를 들면, 마이크로프로세서(들), 멀티코어 프로세서들, 애플리케이션 특정 집적 회로, 칩(들), 칩셋 등을 포함하는 임의의 적절한 구현예를 포함할 수 있다. 또한, 그래픽 프로세싱 유닛(504)은, 예를 들면, 프로세서(들), 멀티코어 프로세서, 애플리케이션 특정 집적 회로, 프로그래밍가능 로직 디바이스, 그래픽 카드, 집적 그래픽, 범용 그래픽 프로세싱 유닛(들) 등을 포함하는 임의의 적절한 구현예를 포함할 수 있다. 부가하여, 메모리 스토어(508)는 휘발성 메모리(예를 들면, SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory) 등) 또는 비휘발성 메모리(예를 들면, 플래시 메모리 등) 등과 같은 임의의 유형의 메모리일 수 있다. 비제한적인 예에서, 메모리 스토어(508)는 캐시 메모리에 의해 구현될 수 있다. 다양한 예에서, 시스템(100)은 칩셋으로서 또는 시스템 온 칩으로서 구현될 수 있다.
도 7은 본 발명에 따른 예시적인 시스템(700)을 도시한다. 다양한 구현예에서, 시스템(700)은 매체 시스템일 수 있으나, 시스템(700)이 이러한 문맥으로 제한되지는 않는다. 예를 들면, 시스템(700)은 개인용 컴퓨터(PC), 랩탑 컴퓨터, 울트라-랩탑 컴퓨터, 태블릿, 터치 패드, 휴대용 컴퓨터, 핸드헬드 컴퓨터, 팜탑 컴퓨터, PDA(personal digital assistant), 세룰러 폰, 결합 세룰러 폰/PDA, 텔레비전, 스마트 디바이스(예를 들면, 스마트 폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 디바이스(MID), 메시징 디바이스, 데이터 통신 디바이스 등에 통합될 수 있다.
다양한 구현예에서, 시스템(700)은 디스플레이(720)에 연결된 플랫폼(702)을 포함한다. 플랫폼(702)은 콘텐츠 서비스 디바이스(들)(730) 또는 콘텐츠 전달 디바이스(들)(740) 또는 다른 유사한 콘텐츠 소스들과 같은 콘텐츠 디바이스로부터 콘텐츠를 수신할 수 있다. 하나 이상의 네비게이션 특징부들을 포함하는 네비게이션 컨트롤러(750)를 이용하여, 예를 들면, 플랫폼(702) 및/또는 디스플레이(720)와 상호 작용할 수 있다. 이들 구성요소들 각각은 이하에 보다 상세히 기술된다.
다양한 구현예에서, 플랫폼(702)은 칩셋(705), 프로세서(710), 메모리(712), 스토리지(714), 그래픽 서브시스템(715), 애플리케이션들(716) 및/또는 무선 장치(718)의 임의의 조합을 포함할 수 있다. 칩셋(705)은 프로세서(710), 메모리(712), 스토리지(714), 그래픽 서브시스템(715), 애플리케이션들(716) 및/또는 무선 장치(718) 사이에 상호 통신을 제공할 수 있다. 예를 들면, 칩셋(705)은 스토리지(714)와의 상호 통신을 제공할 수 있는 스토리지 어댑터(도시되지 않음)를 포함할 수 있다.
프로세서(710)는 CISC(Complex Instruction Set Computer) 또는 RISC(Reduced Instruction Set Computer) 프로세서들, x86 명령어 세트 호환가능 프로세스들, 멀티 코어 또는 임의의 다른 마이크로프로세서 또는 CPU(central processing unit)로서 구현될 수 있다. 다양한 구현예에서, 프로세서(710)는 듀얼 코어 프로세서(들), 듀얼 코어 모바일 프로세서(들) 등일 수 있다.
메모리(712)는, 제한적인 것은 아니지만, RAM(Random Access Memory), DRAM(Dynamic Random Access Memory) 또는 SRAM(Static RAM)과 같은 휘발성 메모리 디바이스로서 구현될 수 있다.
스토리지(714)는, 제한적인 것은 아니지만, 자기 디스크 드라이브, 광학 디스크 드라이브, 테이프 드라이브, 내부 저장 디바이스, 부착형 저장 디바이스, 플래시 메모리, 배터리 백업형 SDRAM(동기식 DRAM), 및/또는 네트워크 액세스가능 저장 디바이스와 같은 비휘발성 저장 디바이스로서 구현될 수 있다. 다양한 구현예에서, 스토리지(714)는, 예를 들면, 다수의 하드 드라이브가 포함될 때, 가치있는 디지털 매체에 대한 저장 성능 개선 보호를 증가시키기 위한 기술을 포함할 수 있다.
그래픽 서브시스템(715)은 디스플레이를 위해 스틸 또는 비디오와 같은 이미지들의 처리를 수행할 수 있다. 그래픽 서브시스템(715)은 GPU(graphics processing unit) 또는 VPU(visual processing unit)일 수 있다. 아날로그 또는 디지털 인터페이스를 이용하여 그래픽 서브시스템(715)과 디스플레이(720)를 통신가능하게 연결할 수 있다. 예를 들면, 인터페이스는 고선명 멀티미디어 인터페이스(High-Definition Multimedia Interface), 디스플레이 포트(Display Port), 무선 HDMI, 및/또는 무선 HD 호환 기술들 중 임의의 것일 수 있다. 그래픽 서브시스템(715)은 프로세서(710) 또는 칩셋(705)에 통합될 수 있다. 몇몇 구현예에서, 그래픽 서브시스템(715)은 칩셋(705)에 통신가능하게 연결된 자립형 카드일 수 있다.
본 명세서에서 기술된 그래픽 및/또는 비디오 처리 기술들은 다양한 하드웨어 아키텍쳐로 구현될 수 있다. 예를 들면, 그래픽 및/또는 비디오 기능은 칩셋 내에 통합될 수 있다. 대안적으로, 이산적 그래픽 및/또는 비디오 프로세서가 이용될 수 있다. 다른 구현예로서, 그래픽 및/또는 비디오 기능들은, 멀티 코어 프로세서를 포함하는 범용 프로세서에 의해 제공될 수 있다. 다른 실시예들에서, 기능들은 소비자 전자 장치로 구현될 수 있다.
무선 장치(718)는 여러 가지의 적절한 무선 통신 기술들을 이용하여 신호들을 송신 및 수신할 수 있는 하나 이상의 무선 장치를 포함할 수 있다. 그러한 기술들은 하나 이상의 무선 네트워크를 통한 통신들을 포함할 수 있다. 예시적인 무선 네트워크들은 (제한적인 것은 아니지만) WLAN(wireless local area network), WPAN(wireless personal area network), WMAN(wireless metropolitan area network), 셀룰러 네트워크 및 위성 네트워크를 포함한다. 그러한 네트워크를 통한 통신시에, 무선 장치(718)는 임의의 버전의 하나 이상의 적용가능한 표준에 따라 동작할 수 있다.
다양한 구현예에서, 디스플레이(720)는 임의의 텔레비전 타입 모니터 또는 디스플레이를 포함할 수 있다. 디스플레이(720)는, 예를 들면, 컴퓨터 디스플레이 스크린, 터치 스크린 디스플레이, 비디오 모니터, 텔레비전형 디바이스 및/또는 텔레비전을 포함할 수 있다. 디스플레이(720)는 디지털 및/또는 아날로그일 수 있다. 다양한 구현예에서, 디스플레이(720)는 홀로그래픽 디스플레이일 수 있다. 또한, 디스플레이(720)는 비주얼 프로젝션을 수신할 수 있는 투명 표면일 수 있다. 그러한 프로젝션들은 다양한 형태의 정보, 이미지 및/또는 오브젝트를 전달할 수 있다. 예를 들면, 그러한 프로젝션들은 MAR(mobile augmented reality) 애플리케이션을 위한 비주얼 오버레이일 수 있다. 하나 이상의 소프트웨어 애플리케이션들(716)의 제어하에서, 플랫폼(702)은 디스플레이(720) 상에 사용자 인터페이스(722)를 디스플레이할 수 있다.
다양한 구현예에서, 콘텐츠 서비스 디바이스(들)(730)은 임의의 국내, 국제 및/또는 독립된 서비스에 의해 호스팅되어, 예를 들면, 인터넷을 통해 플랫폼(702)에 액세스할 수 있다. 콘텐츠 서비스 디바이스(들)(730)은 플랫폼(702) 및/또는 디스플레이(720)에 연결될 수 있다. 플랫폼(702) 및/또는 콘텐츠 서비스 디바이스(들)(730)는 네트워크(760)로의 및 네트워크(760)로부터의 매체 정보를 통신(예를 들면, 송신 및/또는 수신)하기 위해 네트워크(760)에 연결될 수 있다. 또한, 콘텐츠 전달 디바이스(들)(740)이 플랫폼(702) 및/또는 디스플레이(720)에 연결될 수 있다.
다양한 구현예에서, 콘텐츠 서비스 디바이스(들)(730)은 케이블 텔레비전 박스, 개인용 컴퓨터, 네트워크, 전화, 인터넷 가능 디바이스들 또는 디지털 정보 및/또는 콘텐츠를 전달가능한 기기, 및 콘텐츠 제공자와 플랫폼(702) 및/또는 디스플레이(720) 사이에서, 네트워크(760)를 통해 또는 직접적으로, 콘텐츠를 단방향 또는 양방향으로 통신할 수 있는 임의의 다른 유사한 디바이스를 포함할 수 있다. 콘텐츠는 네트워크(760)를 통해 콘텐츠 제공자 및 시스템(700)에서의 구성요소들 중 임의의 하나로 및 임의의 하나로부터 단방향 및/또는 양방향으로 통신될 수 있음을 이해할 것이다. 콘텐츠의 예들은, 예를 들면, 비디오, 음악, 의료 및 게임 정보 등을 포함하는 임의의 매체 정보를 포함할 수 있다.
콘텐츠 서비스 디바이스(들)(730)은 매체 정보, 디지털 정보 및/또는 다른 콘텐츠를 포함하는 케이블 텔레비전 프로그래밍과 같은 콘텐츠를 수신할 수 있다. 콘텐츠 제공자들의 예들은 임의의 케이블 또는 위성 텔레비전 또는 무선 장치 또는 인터넷 콘텐츠 제공자들을 포함할 수 있다. 제공된 예들은 본 개시 내용에 따른 구현예를 어떠한 방식으로든 제한하기 위한 것은 아니다.
다양한 구현예에서, 플랫폼(702)은 하나 이상의 네비게이션 특징부를 갖는 네비게이션 컨트롤러(750)로부터 제어신호들을 수신할 수 있다. 컨트롤러(750)의 네비게이션 특징부들은, 예를 들면, 사용자 인터페이스(722)와 상호작용하는데 이용될 수 있다. 실시예들에서, 네비게이션 컨트롤러(750)는 사용자가 공간적인 (예를 들면, 연속적 및 다차원적인) 데이터를 컴퓨터에 입력할 수 있도록 하는 컴퓨터 하드웨어 구성요소(구체적으로, 인간 인터페이스 디바이스)일 수 있는 포인팅 디바이스일 수 있다. GUI(graphical user interface), 텔레비전 및 모니터와 같은 많은 시스템들은 사용자가 물리적인 제스쳐들을 이용하여 데이터를 제어하고, 데이터를 컴퓨터 또는 텔레비전에 제공할 수 있도록 한다.
컨트롤러(750)의 네비게이션 특징부들의 움직임은 디스플레이 상에 디스플레이된 포인터, 커서, 초점 링, 또는 다른 비주얼 표시자들의 움직임에 의해 디스플레이(예를 들면, 디스플레이(720)) 상에 복제될 수 있다. 예를 들면, 소프트웨어 애플리케이션들(716)의 제어 하에, 네비게이션 컨트롤러(750) 상에 위치된 네비게이션 특징부들은, 예를 들면, 사용자 인터페이스(722) 상에 디스플레이된 가상 네비게이션 특징부들로 맵핑될 수 있다. 실시예들에서, 컨트롤러(750)는 분리된 구성요소가 아닐 수 있으며, 플랫폼(702) 및/또는 디스플레이(720)에 통합될 수 있다. 그러나, 본 개시 내용은 본 명세서에서 도시되거나 기술된 요소들 또는 문맥으로 제한되지 않는다.
다양한 구현예에서, 드라이버들(도시되지 않음)은 사용자들이 플랫폼(702)을, 예를 들면, 초기 부팅(boot-up) 이후에 인에이블링될 때, 버튼의 터치를 통해 텔레비전과 같이 즉각적으로 턴 온 및 오프할 수 있도록 하는 기술을 포함할 수 있다. 프로그램 로직은 플랫폼(702)으로 하여금, 플랫폼이 턴 "오프"된 경우에도, 콘텐츠를 매체 어댑터들 또는 다른 콘텐츠 서비스 디바이스(들)(730) 또는 콘텐츠 전달 디바이스(들)(740)에게 스트리밍하도록 할 수 있다. 또한, 칩셋(705)은 예를 들면, 8.1 서라운드 사운드 오디오 및/또는 고선명 7.1 서라운드 사운드 오디오에 대한 하드웨어 및/또는 소프트웨어 지원을 포함할 수 있다. 드라이버들은 통합된 그래픽 플랫폼들을 위한 그래픽 드라이버를 포함할 수 있다. 실시예들에서, 그래픽 드라이버는 PCI(peripheral component interconnect) 익스프레스 그래픽 카드를 포함할 수 있다.
다양한 구현예에서, 시스템(700)에 도시된 구성요소들 중 임의의 하나 이상이 통합될 수 있다. 예를 들면, 플랫폼(702) 및 콘텐츠 서비스 디바이스(들)(730)이 통합되거나, 또는 플랫폼(702) 및 콘텐츠 전달 디바이스(들)(740)이 통합되거나, 또는 플랫폼(702), 콘텐츠 서비스 디바이스(들)(730) 및 콘텐츠 전달 디바이스(들)이 통합될 수 있다. 다양한 실시예들에서, 플랫폼(702) 및 디스플레이(720)는 통합된 유닛일 수 있다. 예를 들면, 디스플레이(720) 및 콘텐츠 서비스 디바이스(들)(730)이 통합되거나, 또는 디스플레이(720) 및 콘텐츠 전달 디바이스(들)(740)이 통합될 수 있다. 이러한 예들은 본 개시 내용을 제한하는 것을 의미하지 않는다.
다양한 실시예들에서, 시스템(700)은 무선 시스템, 유선 시스템, 또는 둘다의 조합으로서 구현될 수 있다. 무선 시스템으로서 구현될 때, 시스템(700)은 하나 이상의 안테나, 송신기, 수신기, 트랜시버, 증폭기, 필터, 제어 로직 등과 같은 무선 공유 매체를 통해 통신하기에 적합한 구성요소들 및 인터페이스들을 포함할 수 있다. 무선 공유 매체의 예는 RF 스펙트럼 등과 같은 무선 스펙트럼의 부분들을 포함할 수 있다. 유선 시스템으로서 구현될 때, 시스템(700)은 입/출력(I/O) 어댑터, I/O 어댑터를 대응하는 유선 통신 매체와 접속하기 위한 물리적 접속기, 네트워크 인터페이스 카드(NIC), 디스크 컨트롤러, 비디오 컨트롤러, 오디오 컨트롤러 등과 같은 유선 통신 매체를 통해 통신하기에 적합한 구성요소들 및 인터페이스들을 포함할 수 있다. 유선 통신 매체의 예들은 와이어, 케이블, 금속 리드, PCB(printed circuit board), 백플레인, 스위치 패브릭, 반도체 재료, 트위스트-쌍 와이어, 동축 케이블, 광섬유 등을 포함할 수 있다.
플랫폼(702)은 정보를 통신하기 위한 하나 이상의 논리적 또는 물리적 채널을 형성할 수 있다. 정보는 매체 정보 및 제어 정보를 포함할 수 있다. 매체 정보는 사용자에 대한 콘텐츠를 나타내는 임의의 데이터를 지칭할 수 있다. 콘텐츠의 예들은, 예를 들면, 음성 대화로부터의 데이터, 화상 회의, 스트리밍 비디오, 전자 메일("email") 메시지, 음성 메일 메시지, 영숫자 심볼, 그래픽, 이미지, 비디오, 텍스트 등을 포함할 수 있다. 음성 대화로부터의 데이터는, 예를 들면, 스피치 정보, 침묵 기간, 배경 잡음, 컴포트 잡음(comfort noise), 톤(tone) 등일 수 있다. 제어 정보는 자동화된 시스템에 대한 커맨드, 명령어 또는 제어 워드를 나타내는 임의의 데이터를 지칭할 수 있다. 예를 들면, 제어 정보는 시스템을 통해 매체 정보를 라우팅하거나, 또는 노드에게 매체 정보를 미리 결정된 방식으로 처리하도록 지시하는데 이용될 수 있다. 그러나, 실시예들은 도 7에 도시되거나 기술된 요소들 또는 문맥으로 제한되지 않는다.
전술한 바와 같이, 시스템(700)은 가변하는 물리적 스타일 또는 형태 계수로 구현될 수 있다. 도 8은 시스템(700)이 구현될 수 있는 소형 형태 계수 디바이스(800)의 구현예를 도시한다. 실시예들에서, 예를 들면, 디바이스(800)는 무선 능력을 갖는 모바일 컴퓨팅 디바이스로서 구현될 수 있다. 모바일 컴퓨팅 디바이스는, 예를 들면, 처리 시스템, 및 하나 이상의 배터리와 같은 모바일 전력 소스 또는 공급기를 갖는 임의의 디바이스를 지칭할 수 있다.
전술한 바와 같이, 모바일 컴퓨팅 디바이스의 예들은 개인용 컴퓨터(PC), 랩탑 컴퓨터, 울트라-랩탑 컴퓨터, 태블릿, 터치 패드, 휴대용 컴퓨터, 핸드헬드 컴퓨터, 팜탑 컴퓨터, PDA, 셀룰러 전화, 결합 셀룰러 전화/PDA, 텔레비전, 스마트 디바이스(예를 들면, 스마트 폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 디바이스(MID), 메시징 디바이스, 데이터 통신 디바이스 등을 포함할 수 있다.
또한, 모바일 컴퓨팅 디바이스의 예들은 손목 컴퓨터, 손가락 컴퓨터, 링 컴퓨터, 안경 컴퓨터, 벨트-클립 컴퓨터, 암-밴드 컴퓨터, 신발 컴퓨터, 의류 컴퓨터, 및 다른 착용가능한 컴퓨터와 같은, 사람이 착용하도록 배열되는 컴퓨터들을 포함할 수 있다. 다양한 실시예들에서, 예를 들면, 모바일 컴퓨팅 디바이스는 음성 통신 및/또는 데이터 통신 뿐만 아니라, 컴퓨터 애플리케이션들을 실행할 수 있는 스마트 폰으로서 구현될 수 있다. 몇몇 실시예들은 예로써 스마트 폰으로서 구현된 모바일 컴퓨팅 디바이스에 의해 기술될 수 있지만, 다른 무선 모바일 컴퓨팅 디바이스들을 또한 이용하는 다른 실시예들이 구현될 수 있음을 이해할 수 있다. 실시예들은 이러한 문맥으로 제한되지 않는다.
도 8에 도시된 바와 같이, 디바이스(800)는 하우징(802), 디스플레이(804), 입/출력(I/O) 디바이스(806) 및 안테나(808)를 포함할 수 있다. 또한, 디바이스(800)는 네비게이션 특징부들(812)을 포함할 수 있다. 디스플레이(804)는 모바일 컴퓨팅 디바이스에 대해 적합한 정보를 디스플레이하기 위한 임의의 적절한 디스플레이 유닛을 포함할 수 있다. I/O 디바이스(806)는 모바일 컴퓨팅 디바이스에 정보를 입력하기 위한 임의의 적절한 I/O 디바이스를 포함할 수 있다. I/O 디바이스(806)에 대한 예들은 영숫자 키보드, 숫자 키패드, 터치 패드, 입력 키, 버튼, 스위치, 락커 스위치, 마이크로폰, 스피커, 음성 인식 디바이스 및 소프트웨어 등을 포함할 수 있다. 또한, 정보는 마이크로폰(도시되지 않음)을 통해 디바이스(800)에 입력될 수 있다. 그러한 정보는 음성 인식 디바이스(도시되지 않음)에 의해 디지털화될 수 있다. 실시예들은 이러한 문맥으로 제한되지 않는다.
다양한 실시예들이 하드웨어 요소들, 소프트웨어 요소들 또는 이들의 조합을 이용하여 구현될 수 있다. 하드웨어 요소들의 예들은 프로세서, 마이크로프로세서, 회로, 회로 소자(예를 들면, 트랜지스터, 저항기, 캐패시터, 인덕터 등), 집적 회로, ASIC(application specific integrated circuit), PLD(programmable logic device), DSP(digital signal processor), FPGA(field programmable gate array), 논리 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋 등을 포함할 수 있다. 소프트웨어의 예들은 소프트웨어 구성요소, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 방법, 절차, 소프트웨어 인터페이스, API(application program interface), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼, 또는 이들의 임의의 조합을 포함할 수 있다. 실시예가 하드웨어 요소들 및/또는 소프트웨어 요소들을 이용하여 구현되는지의 여부에 대한 결정은, 원하는 계산 레이트, 전력 레벨, 열 허용도, 처리 사이클 예산, 입력 데이터 레이트, 출력 데이터 레이트, 메모리 자원, 데이터 버스 속도 및 다른 설계 혹은 성능 제약과 같은 임의의 수의 요인들에 따라 변할 수 있다.
적어도 하나의 실시예의 하나 이상의 양상은 프로세서 내의 다양한 로직을 나타내는 머신 판독가능 매체 상에 저장된 대표적인 명령어들에 의해 구현될 수 있으며, 명령어들은 머신에 의해 판독될 때, 머신으로 하여금 본 명세서에서 설명된 기술들을 수행하기 위한 로직을 형성하도록 한다. "IP 코어"로서 알려진 그러한 표현들은 유형의 머신 판독가능 매체 상에 저장되고, 로직 또는 프로세서를 실제로 만드는 제조 머신으로 로딩하기 위해 다양한 고객 또는 제조 설비들에 공급될 수 있다.
본 명세서에서 개시된 특정한 특징들은 다양한 구현예를 참조하여 설명되었지만, 그러한 설명은 제한을 위한 것으로 해석되는 것을 의도하지 않는다. 따라서, 본 명세서에서 기술된 구현예 뿐만 아니라, 본 개시 내용이 속하는 기술 분야의 당업자에게 명백한 다른 구현예의 다양한 수정들은, 본 개시 내용의 사상 및 영역 내에 속하는 것으로 간주된다.
다음의 예는 추가의 실시예에 관한 것이다.
일 예에서, 오브젝트 검출을 위한 컴퓨터 구현 방법은, 하드웨어를 통해, 컨볼루션 커널 및 입력 이미지의 컨볼루션을 수행하여 필터링된 이미지를 생성하는 것을 포함한다. 필터링된 이미지에 임계치를 적용하여, 마스킹된 픽셀 및 언마스킹된 픽셀을 갖는 마스킹된 이미지를 생성할 수 있다. 마스킹된 이미지의 언마스킹된 픽셀의 개별 픽셀들에 캐스케이드 필터를 적용하여, 캐스케이드 필터를 통과하는 하나 이상의 픽셀들에 연관된 하나 이상의 오브젝트 검출 영역들을 결정할 수 있다.
일 예에서, 오브젝트 검출을 위한 컴퓨터 구현 방법은, 하드웨어를 통해, 컨볼루션 커널 및 입력 이미지의 컨볼루션을 수행하여 필터링된 이미지를 생성하는 것을 포함한다. 필터링된 이미지에 임계치를 적용하여, 마스킹된 픽셀 및 언마스킹된 픽셀을 갖는 마스킹된 이미지를 생성할 수 있다. 마스킹된 이미지의 언마스킹된 픽셀의 개별 픽셀들에 캐스케이드 필터를 적용하여, 캐스케이드 필터를 통과하는 하나 이상의 픽셀들에 연관된 하나 이상의 오브젝트 검출 영역들을 결정할 수 있다. 또한, 이미지가 수신될 수 있다. 오브젝트 인식을 수행하는 단계가 오브젝트 검출 영역 내의 오브젝트를 식별하는 단계를 포함할 수 있도록 하나 이상의 오브젝트 검출 영역 상에서 오브젝트 인식이 수행될 수 있다. 오브젝트는 얼굴, 눈, 랜드마크, 기록 문자, 인간 또는 자동차를 포함할 수 있다. 더욱이, 두 개 이상의 오브젝트 영역들이 병합되어 병합된 오브젝트 영역을 형성할 수 있다. 입력 이미지는 이미지 파일 또는 비디오 프레임을 포함할 수 있다. 하드웨어는 디지털 신호 프로세서, 그래픽 프로세싱 유닛, 또는 필드 프로그래밍가능 게이트 어레이를 포함할 수 있다. 컨볼루션 커널은 대규모 트레이닝 세트에 의해 트레이닝된 선형 분류기 또는 사전-트레이닝된 컨볼루션 또는 설계된 컨볼루션 커널을 포함할 수 있고, 대규모 트레이닝 세트는 오브젝트를 포함하는 이미지 및 오브젝트를 포함하지 않는 이미지를 포함한다. 필터링된 이미지에 임계치를 적용하는 단계는 사전-트레이닝된 임계치를 적용하는 것 또는 컨볼루션 결과 사전-트레이닝된 임계치를 적용하는 것을 포함할 수 있다. 컨볼루션을 수행하는 단계는 입력 이미지의 컨볼루션을 픽셀별로 수행하는 단계를 포함할 수 있다. 필터링된 이미지에 임계치를 적용하는 단계는 필터링된 이미지에 픽셀별로 임계치를 적용하는 단계를 포함할 수 있다. 입력 이미지, 필터링된 이미지, 및 마스킹된 이미지는 동일한 크기일 수 있다. 마스킹된 픽셀은 1의 값에 의해 식별되고 언마스킹된 픽셀은 0의 값에 의해 식별될 수 있다. 캐스케이드 필터를 적용하는 단계는 7-스테이지 캐스케이드 필터를 적용하는 단계를 포함할 수 있다. 캐스케이드 필터를 적용하는 단계는, 캐스케이드 필터의 제1 스테이지에 대해, 복수의 언마스킹된 픽셀들 중 제1 언마스킹된 픽셀이 제1 스테이지를 통과하는지 여부를 결정하는 단계를 포함하며, 제1 언마스킹된 픽셀이 상기 제1 스테이지를 통과하면, 제1 언마스킹된 픽셀을 캐스케이드 필터의 제2 스테이지로 이동시키거나, 또는 제1 언마스킹된 픽셀이 제1 스테이지를 실패하면, 제1 언마스킹된 픽셀을 거절하는 단계를 포함할 수 있다. 오브젝트 검출 영역은 통과 픽셀에 연관될 수 있고, 제1 오브젝트 영역은 32 픽셀 × 32 픽셀의 크기를 가질 수 있으며, 제1 통과 픽셀은 제1 오브젝트 영역의 중심에 있을 수 있다. 캐스케이드 필터는 비올라-존스 캐스케이드 필터 또는 부스트된 캐스케이드 필터를 포함할 수 있다.
더욱이, 필터링된 이미지에 임계치를 적용하는 단계는 필터링된 이미지에 디지털 신호 프로세서, 그래픽 프로세싱 유닛, 또는 필드 프로그래밍가능 게이트 어레이를 통해 임계치를 적용하는 단계를 포함할 수 있다. 캐스케이드 필터를 적용하는 단계는 캐스케이드 필터를 그래픽 프로세싱 유닛 또는 중앙 프로세싱 유닛을 통해 적용하는 단계를 포함할 수 있다. 오브젝트 검출 영역들 상에서 오브젝트 인식을 수행하는 단계는 중앙 프로세싱 유닛을 통해 하나 이상의 오브젝트 검출 영역들 상에서 오브젝트 인식을 수행하는 단계를 포함할 수 있다. 두 개 이상의 오브젝트 검출 영역들을 병합하는 단계는 중앙 프로세싱 유닛을 통해 두 개 이상의 오브젝트 검출 영역들을 병합하는 단계를 포함할 수 있다.
다른 예에서, 컴퓨터상에서의 오브젝트 인식을 수행하기 위한 시스템은 하나 이상의 프로세서, 하나 이상의 메모리 스토어, 하드웨어 모듈, 임계치 모듈, 및 캐스케이드 필터 모듈, 및/또는 그들의 조합을 포함할 수 있다. 하나 이상의 프로세서는 하드웨어 모듈에 통신가능하게 결합될 수 있다. 하나 이상의 메모리 스토어는 하나 이상의 프로세서에 통신가능하게 결합될 수 있다. 하드웨어 모듈은 입력 이미지와 컨볼루션 커널의 컨볼루션을 수행하여 필터링된 이미지를 생성하도록 구성될 수 있다. 임계치 모듈은 필터링된 이미지에 임계치를 적용하여, 마스킹된 픽셀 및 언마스킹된 픽셀을 갖는 마스킹된 이미지를 생성하도록 구성될 수 있다. 캐스케이드 필터 모듈은, 언마스킹된 픽셀의 개별 픽셀에 대해, 캐스케이드 필터를 수행하여 캐스케이드 필터를 통과하는 픽셀에 연관되는 오브젝트 영역을 결정하도록 구성될 수 있다.
또 다른 예에서, 컴퓨터상에서의 오브젝트 인식을 위한 시스템은 그래픽 프로세싱 유닛, 병합 모듈, 및 오브젝트 인식 모듈을 더 포함할 수 있다. 그래픽 프로세싱 유닛은 하나 이상의 프로세서에 통신가능하게 결합될 수 있다. 병합 모듈은 두 개 이상의 오브젝트 영역들을 병합하여 병합된 오브젝트 영역을 형성하도록 구성될 수 있다. 오브젝트 인식 모듈은 오브젝트 영역 또는 병합된 오브젝트 영역 상에서 오브젝트 인식을 수행하도록 구성될 수 있다.
또 다른 예에서, 시스템은 또한 얼굴, 눈, 랜드마크, 기록 문자, 인간, 또는 자동차를 포함하는 오브젝트를 포함할 수 있다. 입력 이미지는 이미지 파일 또는 비디오 프레임을 포함할 수 있다. 하드웨어 모듈은 디지털 신호 프로세서, 그래픽 프로세싱 유닛, 또는 필드 프로그래밍가능 게이트 어레이를 포함할 수 있다. 컨볼루션 커널은 대규모 트레이닝 세트에 의해 트레이닝된 선형 분류기 또는 사전-트레이닝된 컨볼루션 또는 설계된 컨볼루션 커널을 포함할 수 있고, 대규모 트레이닝 세트는 오브젝트를 포함하는 이미지 및 오브젝트를 포함하지 않는 이미지를 포함할 수 있다. 임계치 모듈은 사전-트레이닝된 임계치 또는 컨볼루션 결과 사전-트레이닝된 임계치 중 적어도 하나를 적용하도록 또한 구성될 수 있다. 하드웨어 모듈은 입력 이미지의 컨볼루션을 픽셀별로 수행하도록 또한 구성될 수 있다. 임계치 모듈은 필터링된 이미지에 픽셀별로 임계치를 적용하도록 또한 구성될 수 있다. 입력 이미지, 필터링된 이미지, 및 마스킹된 이미지는 동일한 크기일 수 있다. 마스킹된 픽셀은 1의 값에 의해 식별되고 언마스킹된 픽셀은 0의 값에 의해 식별될 수 있다. 캐스케이드 필터 모듈은 7-스테이지 캐스케이드 필터를 포함할 수 있다. 캐스케이드 필터 모듈은, 캐스케이드 필터의 제1 스테이지에 대해, 제1 언마스킹된 픽셀이 제1 스테이지를 통과하는지 여부를 결정하도록 또한 구성될 수 있고, 제1 언마스킹된 픽셀이 제1 스테이지를 통과하면, 제1 언마스킹된 픽셀을 캐스케이드 필터의 제2 스테이지로 이동시키거나, 또는 제1 언마스킹된 픽셀이 제1 스테이지를 실패하면, 제1 언마스킹된 픽셀을 거절할 수 있다. 오브젝트 영역은 통과 픽셀에 연관될 수 있고, 제1 오브젝트 영역은 32 픽셀 × 32 픽셀의 크기를 가질 수 있으며, 제1 통과 픽셀은 제1 오브젝트 영역의 중심에 있을 수 있다. 캐스케이드 필터는 비올라-존스 캐스케이드 필터 또는 부스트된 캐스케이드 필터를 포함할 수 있다.
추가의 예에서, 적어도 하나의 머신 판독가능 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여 컴퓨팅 디바이스로 하여금 전술한 예들 중 어느 하나에 따른 방법을 수행할 수 있도록 하는 복수의 명령어를 포함할 수 있다.
또 다른 예에서, 장치는 전술한 예들 중 어느 하나에 따른 방법을 수행하기 위한 수단을 포함할 수 있다.
전술한 예는 특징들의 특정 조합을 포함할 수 있다. 그러나, 그러한 상기 예는 이에 제한되는 것이 아니고, 다양한 구현예에서, 상기 예는 그러한 특징들의 서브세트만을 수행하는 것, 그러한 특징들의 상이한 순서를 수행하는 것, 그러한 특징들의 상이한 조합을 수행하는 것, 및/또는 명시적으로 리스트된 특징들 이외의 추가의 특징들을 수행하는 것을 포함할 수 있다. 예를 들면, 예시적인 방법들과 관련하여 설명된 모든 특징들은 예시적인 장치, 예시적인 시스템, 및/또는 예시적인 물품에 대해 구현될 수 있으며, 그 역도 성립한다.

Claims (31)

  1. 오브젝트 검출을 위해 컴퓨터로 구현된 방법으로서,
    하드웨어를 통해, 입력 이미지와 컨볼루션 커널(a convolution kernel)의 컨볼루션을 수행하여 필터링된 이미지를 생성하는 단계와,
    상기 필터링된 이미지에 컨볼루션 커널 기반 임계치를 픽셀별로(pixel-by-pixel basis) 적용하여, 복수의 마스킹된 픽셀들(masked pixels) 및 복수의 언마스킹된 픽셀들(unmasked pixels)을 갖는 마스킹된 이미지를 생성하는 단계와,
    상기 마스킹된 이미지의 상기 복수의 언마스킹된 픽셀들의 개별 픽셀들에 캐스케이드 필터(a cascade filter)를 적용하여, 상기 캐스케이드 필터를 통과하는 하나 이상의 픽셀에 연관된 하나 이상의 오브젝트 검출 영역을 결정하는 단계를 포함하는
    컴퓨터로 구현된 방법.
  2. 제1항에 있어서,
    상기 하나 이상의 오브젝트 검출 영역 상에서 오브젝트 인식을 수행하는 단계를 더 포함하고, 상기 오브젝트 인식을 수행하는 단계는 제1 오브젝트 검출 영역 내의 오브젝트를 식별하는 단계를 포함하는
    컴퓨터로 구현된 방법.
  3. 제1항에 있어서,
    상기 입력 이미지를 수신하는 단계와,
    상기 하나 이상의 오브젝트 검출 영역 중 제1 오브젝트 검출 영역과 제2 오브젝트 검출 영역을 병합(merging)하여, 병합된 오브젝트 검출 영역(a merged object detection region)을 형성하는 단계와,
    상기 병합된 오브젝트 검출 영역 상에서 오브젝트 인식을 수행하는 단계를 더 포함하고,
    상기 오브젝트 인식을 수행하는 단계는 상기 병합된 오브젝트 검출 영역 내의 오브젝트를 식별하는 단계를 포함하는
    컴퓨터로 구현된 방법.
  4. 제1항에 있어서,
    상기 하드웨어는 디지털 신호 프로세서, 그래픽 프로세싱 유닛, 또는 필드 프로그래밍가능 게이트 어레이 중 적어도 하나를 포함하는
    컴퓨터로 구현된 방법.
  5. 제1항에 있어서,
    상기 캐스케이드 필터는 비올라-존스 캐스케이드 필터(a Viola-Jones cascade filter) 또는 부스트된 캐스케이드 필터(a boosted cascade filter) 중 적어도 하나를 포함하는
    컴퓨터로 구현된 방법.
  6. 제1항에 있어서,
    상기 캐스케이드 필터를 적용하는 단계는, 상기 캐스케이드 필터의 제1 스테이지에 대해, 상기 복수의 언마스킹된 픽셀들 중 제1 언마스킹된 픽셀이 상기 제1 스테이지를 통과하는지 여부를 결정하는 단계를 포함하고,
    상기 제1 언마스킹된 픽셀이 상기 제1 스테이지를 통과한다면, 상기 제1 언마스킹된 픽셀을 상기 캐스케이드 필터의 제2 스테이지로 이동시키거나, 또는
    상기 제1 언마스킹된 픽셀이 제1 스테이지를 실패하면, 상기 제1 언마스킹된 픽셀을 거절하는
    컴퓨터로 구현된 방법.
  7. 제1항에 있어서,
    상기 컨볼루션 커널은 사전-트레이닝된(pre-trained) 컨볼루션 커널을 포함하는
    컴퓨터로 구현된 방법.
  8. 제1항에 있어서,
    상기 필터링된 이미지에 임계치를 적용하는 단계는 사전-트레이닝된 임계치를 적용하는 단계 또는 컨볼루션 결과 사전-트레이닝된 임계치를 적용하는 단계 중 적어도 하나를 포함하는
    컴퓨터로 구현된 방법.
  9. 제1항에 있어서,
    상기 컨볼루션을 수행하는 단계는 픽셀별(pixel-by-pixel basis)로 상기 입력 이미지의 컨볼루션을 수행하는 단계를 포함하는
    컴퓨터로 구현된 방법.
  10. 제1항에 있어서,
    상기 입력 이미지는 이미지 파일 또는 비디오 프레임 중 적어도 하나를 포함하는
    컴퓨터로 구현된 방법.
  11. 컴퓨터상에서 오브젝트 검출을 위한 시스템으로서,
    입력 이미지와 컨볼루션 커널의 컨볼루션을 수행하여 필터링된 이미지를 생성하고 상기 필터링된 이미지에 컨볼루션 커널 기반 임계치를 픽셀별로 적용하여 복수의 마스킹된 픽셀들 및 복수의 언마스킹된 픽셀들을 갖는 마스킹된 이미지를 생성하도록 구성된 그래픽 프로세싱 유닛과,
    상기 그래픽 프로세싱 유닛에 통신가능하게 결합된 프로세서와,
    상기 프로세서에 통신가능하게 결합된 하나 이상의 메모리
    를 포함하되,
    상기 프로세서는 상기 복수의 언마스킹된 픽셀들의 개별 픽셀들에 대해 캐스케이드 필터를 적용하여, 상기 캐스케이드 필터를 통과하는 하나 이상의 픽셀에 연관된 하나 이상의 오브젝트 검출 영역을 결정하는
    오브젝트 검출 시스템.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 제11항에 있어서,
    상기 프로세서는 또한
    상기 하나 이상의 오브젝트 검출 영역 중 제1 오브젝트 검출 영역과 제2 오브젝트 검출 영역을 병합하여 병합된 오브젝트 검출 영역을 형성하고,
    상기 병합된 오브젝트 검출 영역 상에서 오브젝트 인식을 수행하는
    오브젝트 검출 시스템.
  17. 삭제
  18. 제11항에 있어서,
    상기 프로세서는 또한
    상기 하나 이상의 오브젝트 검출 영역 상에서 오브젝트 인식을 수행하는
    오브젝트 검출 시스템.
  19. 삭제
  20. 제11항에 있어서,
    상기 컨볼루션 커널은 사전-트레이닝된 컨볼루션 커널을 포함하고, 상기 사전-트레이닝된 컨볼루션 커널은 선형 분류기를 포함하는
    오브젝트 검출 시스템.
  21. 복수의 명령어를 포함하는 적어도 하나의 머신 판독가능 저장 매체로서,
    상기 복수의 명령어는, 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금,
    하드웨어를 통해, 입력 이미지와 컨볼루션 커널의 컨볼루션을 수행하여 필터링된 이미지를 생성하는 것과,
    상기 필터링된 이미지에 컨볼루션 커널 기반 임계치를 픽셀별로 적용하여, 복수의 마스킹된 픽셀들 및 복수의 언마스킹된 픽셀들을 갖는 마스킹된 이미지를 생성하는 것과,
    상기 마스킹된 이미지의 상기 복수의 언마스킹된 픽셀들의 개별 픽셀들에 캐스케이드 필터를 적용하여, 상기 캐스케이드 필터를 통과하는 하나 이상의 픽셀에 연관된 하나 이상의 오브젝트 검출 영역을 결정하는 것에 의해 오브젝트 검출을 수행하게 하는
    머신 판독가능 저장 매체.
  22. 제21항에 있어서,
    상기 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금, 상기 하나 이상의 오브젝트 검출 영역 상에서 오브젝트 인식을 수행하는 것에 의해 오브젝트 검출을 수행하게 하는 명령어를 더 포함하되,
    상기 오브젝트 인식을 수행하는 것은 제1 오브젝트 검출 영역 내의 오브젝트를 식별하는 것을 포함하는
    머신 판독가능 저장 매체.
  23. 제21항에 있어서,
    상기 캐스케이드 필터는 비올라-존스 캐스케이드 필터 또는 부스트된 캐스케이드 필터 중 적어도 하나를 포함하는
    머신 판독가능 저장 매체.
  24. 제21항에 있어서,
    상기 컨볼루션을 수행하는 것은 픽셀별로 상기 입력 이미지의 컨볼루션을 수행하는 것을 포함하는
    머신 판독가능 저장 매체.
  25. 제21항에 있어서,
    상기 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금,
    상기 하나 이상의 오브젝트 검출 영역 상에서 오브젝트 인식을 수행하는 것 - 상기 오브젝트 인식을 수행하는 것은 상기 하나 이상의 오브젝트 검출 영역 중 제1 오브젝트 검출 영역 내의 오브젝트를 식별하는 것을 포함하고, 상기 오브젝트는 얼굴, 눈, 랜드마크, 기록 문자, 인간 또는 자동차 중 적어도 하나를 포함함 - 에 의해 오브젝트 검출을 수행하게 하는 명령어를 더 포함하는
    머신 판독가능 저장 매체.
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
KR1020157012708A 2012-12-18 2012-12-18 오브젝트 검출을 가속하기 위한 하드웨어 컨볼루션 사전-필터 KR101752072B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/086840 WO2014094232A1 (en) 2012-12-18 2012-12-18 Hardware convolution pre-filter to accelerate object detection

Publications (2)

Publication Number Publication Date
KR20150070327A KR20150070327A (ko) 2015-06-24
KR101752072B1 true KR101752072B1 (ko) 2017-06-28

Family

ID=50977528

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157012708A KR101752072B1 (ko) 2012-12-18 2012-12-18 오브젝트 검출을 가속하기 위한 하드웨어 컨볼루션 사전-필터

Country Status (4)

Country Link
US (1) US9342749B2 (ko)
KR (1) KR101752072B1 (ko)
CN (1) CN104781827B (ko)
WO (1) WO2014094232A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105894012B (zh) * 2016-03-29 2019-05-14 天津大学 基于级联微神经网络的物体识别方法
US9858636B1 (en) 2016-06-30 2018-01-02 Apple Inc. Configurable convolution engine
US10627887B2 (en) 2016-07-01 2020-04-21 Microsoft Technology Licensing, Llc Face detection circuit
US10152630B2 (en) 2016-08-09 2018-12-11 Qualcomm Incorporated Methods and systems of performing blob filtering in video analytics
US11042722B2 (en) * 2016-12-30 2021-06-22 Nokia Technologies Oy Artificial neural network
US10319066B2 (en) 2017-04-27 2019-06-11 Apple Inc. Convolution engine with per-channel processing of interleaved channel data
US10176551B2 (en) 2017-04-27 2019-01-08 Apple Inc. Configurable convolution engine for interleaved channel data
US10325342B2 (en) 2017-04-27 2019-06-18 Apple Inc. Convolution engine for merging interleaved channel data
KR102410709B1 (ko) * 2017-06-30 2022-06-20 주식회사 넥슨코리아 컨텐츠 사용자의 로그 정보 생성 방법 및 장치
US10713537B2 (en) * 2017-07-01 2020-07-14 Algolux Inc. Method and apparatus for joint image processing and perception
US11190335B2 (en) * 2018-01-23 2021-11-30 Intel Corporation Method and apparatus for performing non-unique data pattern detection and alignment in a receiver implemented on a field programmable gate array
US10997736B2 (en) * 2018-08-10 2021-05-04 Apple Inc. Circuit for performing normalized cross correlation
US11216953B2 (en) 2019-03-26 2022-01-04 Samsung Electronics Co., Ltd. Apparatus and method for image region detection of object based on seed regions and region growing
KR102202425B1 (ko) * 2019-08-09 2021-01-12 주식회사 한화 컨볼루션 신경망 기반의 수치 해석 데이터 보간 처리 장치 및 그 방법
CN111553464B (zh) * 2020-04-26 2023-09-29 北京小米松果电子有限公司 基于超网络的图像处理方法、装置及智能设备
DE102021102233B4 (de) 2021-02-01 2022-08-18 Recognitionfocus Gmbh Vorrichtung und Verfahren zur Korrespondenzanalyse in Bildern

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101378295B1 (ko) * 2009-12-18 2014-03-27 한국전자통신연구원 영상의 프라이버시 마스킹 방법 및 장치

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4330833A (en) 1978-05-26 1982-05-18 Vicom Systems, Inc. Method and apparatus for improved digital image processing
US8463718B2 (en) * 2000-08-07 2013-06-11 Health Discovery Corporation Support vector machine-based method for analysis of spectral data
US7426310B1 (en) * 2002-02-08 2008-09-16 Barrett Terence W Method and application of applying filters to N-dimensional signals and images in signal projection space
US20070133840A1 (en) * 2005-11-04 2007-06-14 Clean Earth Technologies, Llc Tracking Using An Elastic Cluster of Trackers
US8644643B2 (en) * 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8243991B2 (en) * 2008-06-17 2012-08-14 Sri International Method and apparatus for detecting targets through temporal scene changes
US8538071B2 (en) * 2009-03-18 2013-09-17 Raytheon Company System and method for target separation of closely spaced targets in automatic target recognition
DE102009038364A1 (de) * 2009-08-23 2011-02-24 Friedrich-Alexander-Universität Erlangen-Nürnberg Verfahren und System zur automatischen Objekterkennung und anschließenden Objektverfolgung nach Maßgabe der Objektform
US8170282B1 (en) * 2009-09-17 2012-05-01 Sandia Corporation Technique for ship/wake detection
US8600166B2 (en) * 2009-11-06 2013-12-03 Sony Corporation Real time hand tracking, pose classification and interface control
US8594375B1 (en) * 2010-05-20 2013-11-26 Digitalglobe, Inc. Advanced cloud cover assessment
KR101395094B1 (ko) * 2010-09-29 2014-05-16 안동대학교 산학협력단 개체 검출 방법 및 시스템
US9235769B2 (en) * 2012-03-15 2016-01-12 Herta Security, S.L. Parallel object detection method for heterogeneous multithreaded microarchitectures
US20130279750A1 (en) * 2012-04-20 2013-10-24 Dmetrix, Inc. Identification of foreign object debris
WO2014018836A1 (en) * 2012-07-26 2014-01-30 Leap Motion, Inc. Object detection and tracking

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101378295B1 (ko) * 2009-12-18 2014-03-27 한국전자통신연구원 영상의 프라이버시 마스킹 방법 및 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Herbert Bay 외 3인, "Speeded-Up Robust Features", Computer Vision and Image Understanding, Volume 110, Issue 3, June 2008, Pages 346-359*

Also Published As

Publication number Publication date
KR20150070327A (ko) 2015-06-24
US9342749B2 (en) 2016-05-17
CN104781827A (zh) 2015-07-15
CN104781827B (zh) 2018-10-19
US20150146915A1 (en) 2015-05-28
WO2014094232A1 (en) 2014-06-26

Similar Documents

Publication Publication Date Title
KR101752072B1 (ko) 오브젝트 검출을 가속하기 위한 하드웨어 컨볼루션 사전-필터
US11538164B2 (en) Coupled multi-task fully convolutional networks using multi-scale contextual information and hierarchical hyper-features for semantic image segmentation
CN111476306B (zh) 基于人工智能的物体检测方法、装置、设备及存储介质
JP7391883B2 (ja) 顔認識のための圧縮-拡張深さ方向畳み込みニューラルネットワーク
US20240112035A1 (en) 3d object recognition using 3d convolutional neural network with depth based multi-scale filters
CN111079576B (zh) 活体检测方法、装置、设备及存储介质
US9860553B2 (en) Local change detection in video
TWI617996B (zh) 使用方向性濾波之物件檢測技術
JP6026007B2 (ja) ビデオモーション推定モジュールを用いた加速対象検出フィルタ
US10430694B2 (en) Fast and accurate skin detection using online discriminative modeling
CN110070063B (zh) 目标对象的动作识别方法、装置和电子设备
US20140184584A1 (en) Adaptive support windows for stereoscopic image correlation
CN114547428A (zh) 推荐模型处理方法、装置、电子设备及存储介质
CN110232417B (zh) 图像识别方法、装置、计算机设备及计算机可读存储介质
CN117131380A (zh) 匹配度计算方法及电子设备

Legal Events

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