KR20180034557A - 2차원 어레이 프로세서의 성능 향상 - Google Patents

2차원 어레이 프로세서의 성능 향상 Download PDF

Info

Publication number
KR20180034557A
KR20180034557A KR1020187005463A KR20187005463A KR20180034557A KR 20180034557 A KR20180034557 A KR 20180034557A KR 1020187005463 A KR1020187005463 A KR 1020187005463A KR 20187005463 A KR20187005463 A KR 20187005463A KR 20180034557 A KR20180034557 A KR 20180034557A
Authority
KR
South Korea
Prior art keywords
data
storing
data processors
image
processing system
Prior art date
Application number
KR1020187005463A
Other languages
English (en)
Inventor
윌리암 에이치. 존슨
도시오 나가타
Original Assignee
미레플리카 테크놀로지, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 미레플리카 테크놀로지, 엘엘씨 filed Critical 미레플리카 테크놀로지, 엘엘씨
Publication of KR20180034557A publication Critical patent/KR20180034557A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06K9/00973
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/211Selection of the most significant subset of features
    • G06F18/2111Selection of the most significant subset of features by using evolutionary computational techniques, e.g. genetic algorithms
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06K9/00993
    • G06K9/4628
    • G06K9/6229
    • G06K9/6232
    • G06K9/627
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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]
    • 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/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/96Management of image or video recognition tasks

Landscapes

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

Abstract

2차원 어레이의 데이터에 대한 처리 동작의 증가된 속도 및 이미지의 특징을 검출하기 위한 방법 및 시스템이 개시된다. 이미지의 특징을 검출하는 방법은, 병렬 처리 시스템 내의 데이터 메모리 세트에, 제1이미지의 픽셀들을 나타내는 제1이미지 데이터를 저장하는 단계를 포함한다. 상기 방법은, 상기 병렬 처리 시스템에 결합된 호스트 프로세서의 메모리에, 가중치 행렬들의 세트를 나타내는 특징 커널 데이터를 저장하는 단계를 더 포함한다. 2차원 어레이에서 데이터에 대한 처리 속도를 증가시키는 방법은, 병렬 처리 시스템 내의 데이터 메모리 세트에, 제1 어레이의 엘리먼트들을 나타내는 제1 어레이 데이터를 저장하는 단계를 포함한다. 상기 방법은 상기 제1 어레이 내의 다수의 선택된 엘리먼트들 각각에 대해, 상기 선택된 컴포넌트에 대응하는 출력 엘리먼트를 생성하도록 상기 선택된 엘리먼트에 대한 처리 동작을 수행하는 단계를 더 포함한다

Description

2차원 어레이 프로세서의 성능 향상
본 출원은 2015 7월 23일자로 출원된 "미레플리카 시각 처리 아키텍쳐 (Mireplica) Visual-Processing Architecture) : 컨볼루션 신경망(Convolutional Neural Networks)"이라는 명칭의 미국 가출원 번호 제62/195,921호의 이익을 주장하며, 상기 출원은 본 명세서에서 완전하고 충분히 기재된 것처럼 모든 목적을 위해 그 전체가 본 출원에 참고로 포함된다.
많은 애플리케이션은 2차원 데이터 세트를 포함한다. 시각적 처리 애플리케이션들이 일 예이다. 본 명세서에서 사용되는 "시각적 처리(visual processing)"라는 용어는 이미지 및 비디오 화소들(picture elements)("픽셀들") 및 관련 데이터의 일반적인 처리 클래스를 의미한다. 이는 이미지 향상(enhancing) 및 픽셀 포멧 변환, 모션 감지 및 추적, 스틸이미지 또는 비디오 프레임에서의 특징(feature) 또는 객체 식별과 같은 애플리케이션을 포함한다. 2차원 세트로 표현될 수 있는 데이터를 포함하는 다른 애플리케이션은 물리력(forces) 또는 전자기장과 같은 물리량의 모델링을 포함한다. 3차원 데이터 세트는 경우에 따라 투영 또는 2차원 평면으로의 변환 또는 다수의 인접한 2차원 데이터 세트와 같은 2차원들로 표현될 수 있다.
컨볼루션 신경망은 매우 다양한 검출 및 분류 알고리즘을 포함한다. 최근, 2차원(2D) 컨볼루션 신경망들(CNNs)은 다수의 이미지 객체를 검출하고 분류하는 능력 때문에 널리 보급되어 왔다. CNN들은 많은 상이한 구성을 가지지만, 구성들은 높은 수준의 탐지 신뢰도, 전형적으로 최첨단 기술 구현으로 90% 이상을 달성하기 위해 네트워크 파라미터와 상호 연결 토폴로지를 조정하여 객체들을 인식할 수 있도록 네트워크를 "훈련"시키는 기본 컴포넌트들로 구성된다.
CNN은 종종 4개 이상의 레이어를 갖는 "딥(deep)" 신경망으로 일반적으로 분류된다. CNN의 "컨볼루션" 레이어는 일반적으로 입력보다 더 많은 출력값을 가지며, 출력은 차례로 다음 컨볼루션 레이어에 대한 입력이 된다. 아래에 더 상세히 설명되는 바와 같이, 그 결과로 연산의 수가 상당히 많으며, 하나의 입력 이미지 프레임에서 검출 프로세스를 수행하는 데 필요한 클럭 사이클의 수는 쉽게 10억 개에 달할 수 있다. 실시간 이미지 인식은 자동 운행 차량의 부호 판독이나 보안 상황에서의 얼굴 인식과 같은 많은 애플리케이션에서 바람직하다. 따라서, 검출 속도의 향상은 그러한 이미지 인식 애플리케이션들의 성능 및 능력들을 크게 향상시킬 수 있다.
개시된 다양한 실시예에 대한 다음의 상세한 설명은 첨부된 도면을 참조한다.
도 1은 예시적인 컨볼루션 신경망의 특정 양태를 도시한 간략화된 블록도이다.
도 2는 컨볼루션 신경망에서 컨볼루션 동작을 설명하는 다이어그램이다.
도 3은 단일 픽셀과 관련된 검출 출력이 의존하는 이미지, 신호, 가중치 및 바이어스 컴포넌트의 수를 나타내는 도면이다.
도 4는 타일 프로세서 데이터 흐름 구현의 특정 양태들을 도시하는 단순화된 블록도이다.
도 5는 예시적인 CNN 검출 프로세스의 동작 동안 수행되는 데이터 요청에 대한 대기시간(latency)을 나타내는 히스토그램이다.
도 6은 본 발명에서 설명된 타일 프로세서를 갖는 일부 실시예들에서 사용되는 명령 생성부의 일 실시예의 특정 양태를 도시하는 간략화된 블록도이다.
도 7은 컨볼루션 신경망에서의 예시적인 서브 샘플링 동작을 도시하는 도면이다.
도 8은 예시적인 컨볼루션 신경망에서의 서브 샘플링 동작들로부터 생성된 데이터 벡터 폭을 나타내는 도면이다.
도 9는 서브 샘플링을 갖는 예시적인 컨볼루션 신경망의 실행 동안의 타일 프로세서 데이터 메모리 스토리지 나타내는 도면이다.
도 10은 예시적인 컨볼루션 신경망의 개선된 병렬성 및 고속 실행을 제공하는 데이터 재구성 방식(scheme)을 나타내는 도면이다.
도 11은 서브 샘플링 및 벡터 연결(concatenation)을 갖는 예시적인 컨볼루션 신경망의 실행 동안의 타일 프로세서 데이터 메모리 스토리지를 나타내는 도면이다.
도 12는 데이터 재구성 방식이 없는 예시적인 컨볼루션 연산에 대한 행 및 열 입력을 나타내는 도면이다.
도 13은 데이터 재구성 방식을 사용하는 예시적인 컨볼루션 연산에 대한 행 및 열 입력을 도시하는 도면이다.
도 14는 데이터 재구성 방식의 일부로서 데이터의 입력 셔플링을 나타내는 도면이다.
도 15는 데이터 재구성 단계의 일부로서 데이터의 입력 셔플링을 나타내는 도면이다.
도 16은 데이터 재구성을 이용하는 예시적인 CNN 검출 프로세스의 동작 동안 수행된 데이터 요청에 대한 대기시간 을 나타내는 히스토그램이다.
도 17은 예시적인 컨볼루션 신경망에 대한 인터리빙된 데이터 재구성 방식을 도시하는 도면이다.
도 18은 데이터 재구성 방식의 일부로서 데이터의 입력 셔플링을 나타내는 도면이다.
도 19는 인터리빙된 데이터 재구성 방식을 사용하는 예시적인 CNN 검출 프로세스의 동작 동안 수행된 데이터 요청에 대한 대기시간 을 나타내는 히스토그램이다.
개요
2차원 어레이들의 데이터에 대한 처리 연산들의 속도를 증가시키고 이미지 내의 특징을 검출하기 위한 방법들 및 시스템들이 개시된다. 2차원 이미지의 특징(feature)을 검출하기 위한 프로세서 구현(processor-implemented) 방법의 일 실시예는 병렬 처리 시스템 내의 데이터 메모리 세트에 제1이미지의 픽셀들을 나타내는 제1이미지 데이터를 저장하는 단계를 포함한다. 병렬 처리 시스템은 명령 파이프 라인에 의해 연결된 다수의 실질적으로 동일한 데이터 프로세서들의 행을 포함하며, 명령 파이프 라인은 다수의 데이터 프로세서 중 제1 프로세서로부터 각각의 인접한 데이터 프로세서로 순서대로 명령의 순차적 전달을 위해 채택된다. 각각의 데이터 프로세서는 제1이미지 데이터가 저장되는 데이터 메모리 세트의 각각의 데이터 메모리를 포함한다. 또한, 데이터 메모리들 각각은 실질적으로 동일한 저장 용량을 갖는 다수의 메모리 영역을 포함하도록 분할되고, 제1이미지 데이터를 저장하는 단계는 병렬 처리 시스템의 데이터 메모리들의 각각의 인접하는 메모리 영역에 제1이미지의 연속적인 수직 슬라이스들을 나타내는 데이터를 저장하는 단계를 포함한다.
상기 방법의 실시예는 병렬 처리 시스템에 결합된 호스트 프로세서의 메모리에 가중치 행렬들의 세트를 나타내는 가중치 데이터를 포함하는 특징 커널 데이터를 저장하는 단계를 계속한다. 이 방법은 또한 제1이미지 내의 다수의 선택된 픽셀들 각각에 대해, 선택된 픽셀을 포함하는 2차원 픽셀 영역에 대해 컨볼루션 세트를 수행하는 단계 및 선택된 픽셀에 대응하는 특징맵 픽셀을 생성하도록 각 컨볼루션의 결과에 비선형 함수를 적용하는 단계를 포함한다. 이 방법은 각각의 가중치 행렬에 대해, 특징맵 픽셀들 모두를 포함하는 특징맵을 저장하는 단계를 계속하고, 상기 특징맵을 저장하는 단계는 병렬 처리 시스템의 데이터 메모리들의 각각의 개별 메모리 영역에 특징맵의 개별 픽셀들을 나타내는 데이터를 저장하는 단계를 포함한다. 상기 방법의 실시예는 특정 특징 또는 특징들의 클래스가 제1이미지 내에서 검출되는지 여부에 관한 결정을 생성하기 위해 특징맵들을 처리하는 단계를 더 포함한다.
상기 방법의 다른 실시예에서, 특징 커널 데이터는 가중치 행렬들의 세트 내의 각 가중치 행렬과 연관된 바이어스 값을 나타내는 바이어스 데이터를 더 포함하고, 컨볼루션 세트 각각은 가중치 행렬들의 세트 중 하나와 연관된 바이어스 값을 사용하여 수행된다. 일 실시예에서, 다수의 선택된 픽셀 각각에 대해 컨볼루션 세트를 수행하는 단계는, 병렬 처리 시스템의 인접 데이터 프로세서들에서, 컨볼루션 세트들을 수행하기 위한 명령을 순차적으로 실행하는 단계를 포함한다. 추가 실시예에서, 병렬 처리 시스템의 인접 데이터 프로세서에서 명령을 순차적으로 실행하는 단계의 단일 반복은 제1이미지의 하나의 수평 행 내의 모든 선택된 픽셀에 대해 컨볼루션 세트를 수행하는 단계를 포함한다.
이 방법의 또 다른 실시예에서, 복수의 선택된 픽셀들은 제1이미지내에서 수평 및 수직 방향으로, 정수 서브 샘플링 인자(n)에 의해 정의된 다수의 픽셀만큼 이격된 픽셀들로 구성된다. 또 다른 실시예에서, 병렬 처리 시스템의 인접한 데이터 프로세서들에서 명령들을 순차적으로 실행하는 단일 반복은 제1이미지의 n개의 수평 행들 내의 모든 선택된 픽셀들에 대해 컨볼루션 세트를 수행하는 단계를 포함하며, 여기서 n개의 수평 행들은 n 픽셀 씩 떨어진 일련의 수평 행들 내의 인접한 행들이다.
또 다른 실시예에서, 특징맵을 저장하는 단계는 또한 인접 데이터 프로세서들에서 명령을 순차적으로 실행하는 단일 반복 동안, 상기 병렬 처리 시스템 내의 데이터 프로세서들의 인접한 메모리 영역들의 제1그룹 내의 제1이미지의 n개의 수평 행들 중 최상부에 선택된 픽셀들에 대응하는 특징맵 픽셀들을 저장하는 단계를 포함하고, 상기 인접한 메모리 영역들의 제1그룹은 병렬 처리 시스템의 명령 파이프 라인의 도입부(beginning)에 가장 가깝게 위치한 데이터 프로세서들에 있다. 이 실시예에서, 특징맵을 저장하는 단계는 또한 인접 데이터 프로세서들에서 명령을 순차적으로 실행하는 단일 반복 동안, 인접한 메모리 영역들의 제1그룹에 인접한 인접 메모리 영역들의 다음 그룹내의 제1이미지의 n개의 수평 행들 중 다음 하위 행에 선택된 픽셀들에 대응하는 특징맵 픽셀들을 저장하는 단계를 포함하고, 상기 인접한 메모리 영역들의 다음 그룹은 병렬 처리 시스템의 명령 파이프 라인을 따라 더 위치된 데이터 프로세서들에 있다. 이 실시예는 또한 인접 데이터 프로세서들에서 명령을 순차적으로 실행하는 단일 반복 동안, 병렬 처리 시스템의 명령 파이프 라인을 따라 더 위치된 데이터 프로세서들 내의 인접한 메모리 영역들의 연속적인 그룹에서 n개의 수평 행들 중 임의의 추가 하위 행들에 선택된 픽셀에 대응하는 특징맵 픽셀을 저장하는 단계를 포함한다.
다른 실시예에서, 특징맵을 저장하는 단계는 인접한 데이터 프로세서들에서 명령들을 순차 실행하는 단일 반복 동안, n개의 수평 행 각각의 상기 제1 선택된 픽셀에 대응하는 일련의 제1 n개의 특징맵 픽셀들(a first series of n feature map pixels)의 각 특징맵 픽셀을 n개의 수평 행의 최상부로부터 최하부까지의 순서로, 병렬 처리 시스템의 데이터 프로세서들의 각각의 인접한 메모리 영역에 저장하는 단계를 포함한다. 이들 특징맵 픽셀들은 병렬 처리 시스템의 명령 파이프 라인의 도입부(beginning)에 가장 가깝게 위치한 데이터 프로세서의 제1메모리 영역으로 시작하는 메모리 영역들에 저장된다. 이 실시예에서, 특징맵을 저장하는 단계는 또한 인접한 데이터 프로세서들에서 명령들을 순차 실행하는 단일 반복 동안, n개의 수평 행 각각의 상기 제2 선택된 픽셀에 대응하는 일련의 제2 n개의 특징맵 픽셀들의 각 특징맵 픽셀을 상기 n개의 수평 행의 최상부로부터 최하부까지의 순서로, 병렬 처리 시스템 내의 상기 데이터 프로세서들의 각각의 인접한 메모리 영역에 저장하는 단계를 포함한다. 또한, 특징맵을 저장하는 단계는, 인접한 데이터 프로세서들에서 명령들을 순차 실행하는 단일 반복 동안, n개의 수평 행 각각의 추가 선택된 픽셀들에 대응하는 n개의 특징맵 픽셀들의 일련의 임의의 추가 특징맵 픽셀을 특징맵 픽셀들의 이전 시리즈에서 마지막 특징맵 픽셀을 저장하는 메모리 영역 바로 다음의 메모리 영역으로 시작하여, 상기 n개의 수평 행의 최상부에서부터 최하부까지의 순서로, 상기 병렬 처리 시스템 내의 상기 데이터 프로세서들의 각각의 인접한 메모리 영역에 저장하는 단계를 포함한다.
2차원 이미지의 특징을 검출하는 방법의 일 실시예에서, 결정(decisions)을 생성하기 위해 특징맵들을 처리하는 단계는 제1 이미지에서 동일한 수평 위치를 갖는 선택된 픽셀들에 대응하는 특징맵 픽셀들을 나타내는 데이터가 모두 병렬 처리 시스템의 데이터 프로세서들의 동일한 메모리 영역 내에 저장되도록 상기 특징맵 픽셀들을 나타내는 저장된 데이터를 재배 열하는 단계를 포함한다. 이 실시예에서, 특징맵을 처리하는 단계는 또한 각 특징맵 내의 다수의 선택된 특징맵 픽셀 각각에 대해, 선택된 특징맵 픽셀을 포함하는 2차원 특징맵 픽셀 영역에 대해 추가 컨볼루션 세트를 후속 수행하는 단계를 포함하며, 상기 추가 컨볼루션 세트 각각은 호스트 프로세서의 메모리에 저장된 가중치 행렬의 추가 세트 중 각각의 하나를 이용하여 수행된다. 다른 실시예에서, 제1이미지는 더 큰 이미지(larger image)의 수평 슬라이스를 구성하고, 상기 방법은 제1이미지의 최상부 행을 나타내는 제1이미지 데이터에 대한 컨볼루션 세트의 완료에 이어, 상기 제1이미지의 최상부 행을 나타내는 제1이미지 데이터를 상기 제1이미지에 이전에 포함된 상기 더 큰 이미지의 최하위 행 바로 아래의 상기 큰 이미지의 행을 나타내는 데이터로 오버라이트 (overwriting)하는 단계를 더 포함한다.
2차원 이미지의 특징을 검출하기 위한 데이터 처리 시스템의 일 실시예는, 일련의(a row of) 실질적으로 동일한 데이터 프로세서들을 포함하고, 상기 데이터 프로세서들은 다수의 데이터 프로세서들 중 제1 데이터 프로세서로부터 차례로 각 인접한 데이터 프로세서로 명령들의 순차적인 전달을 위해 구성된(adapted) 명령 파이프 라인에 의해 연결되고, 데이터 프로세서들 각각은 실질적으로 동일한 저장 용량의 다수의 메모리 영역들을 포함하도록 분할된(partitioned) 데이터 메모리를 포함한다. 데이터 처리 시스템의 일 실시예는 일련의 데이터 프로세서들에 결합된 호스트 프로세서를 더 포함하고, 상기 호스트 프로세서는 가중치 행렬들의 세트를 나타내는 가중치 데이터 및 상기 가중치 행렬들의 세트 내의 각 가중치 행렬에 대한 바이어스 값을 나타내는 바이어스 데이터를 포함하는 특징 커널 데이터를 저장하도록 구성된 데이터 메모리를 포함한다. 상기 호스트 프로세서는 상기 다수의 데이터 프로세서들에 의한 실행을 위해 상기 명령 파이프 라인 명령들을 페치하고 상기 명령 파이프 라인에 제공하도록 구성된 제어 모듈 및 상기 명령 파이프 라인에 제공되고 상기 일련의 데이터 프로세서들에 의해 실행될 때 동작들을 수행하도록 동작 가능한 저장 프로그램 명령들을 포함한다.
데이터 처리 시스템의 다른 실시예에서, 제어 모듈은 호스트 프로세서 및 일련의 데이터 프로세서에 결합된 명령 생성 유닛을 포함한다. 명령 생성 유닛은 호스트 프로세서와 일련의 데이터 프로세서들 사이에 인터페이스를 제공하고, 호스트 프로세서로부터 수신된 커스텀 컴파일러 명령들을 일련의 데이터 프로세서들 내의 데이터 프로세서에 의해 실행 가능한 명령들로 변환하도록 구성(adapted)된다.
2차원 어레이의 데이터에 대한 처리 동작들의 속도를 증가시키기 위한 프로세서 구현 방법의 일 실시예는 병렬 처리 시스템 내의 데이터 메모리들의 세트에, 제1어레이의 엘리먼트들(elements)을 나타내는 제1어레이 데이터를 저장하는 단계를 포함한다. 상기 병렬 처리 시스템은 다수의 데이터 프로세서 중 제1 데이터 프로세서로부터 각각의 인접한 데이터 프로세서로 차례로 명령들의 순차 전달을 위해 구성된(adapted) 명령 파이프 라인에 의해 연결된 일련의(a low of) 다수의 실질적으로 동일한 데이터 프로세서들을 포함한다. 데이터 프로세서들 각각은 데이터 메모리 세트 중 각각의 하나를 포함하고, 데이터 메모리들 각각은 실질적으로 동일한 저장 용량을 갖는 다수의 메모리 영역들을 포함하도록 분할된다(partitioned). 이 방법의 실시예에서, 제1어레이 데이터를 저장하는 단계는 병렬 처리 시스템의 데이터 메모리들의 각각의 인접한 메모리 영역들에 상기 제1어레이의 연속하는 열들을 나타내는 데이터를 저장하는 단계를 포함한다.
상기 처리 동작들의 속도를 증가시키기 위한 방법은 제1 어레이 내의 다수의 선택된 엘리먼트들 각각에 대해, 상기 선택된 엘리먼트에 대한 처리 동작을 수행하여 상기 선택된 엘리먼트에 대응하는 출력 엘리먼트를 생성하는 단계를 더 포함한다. 이 실시예에서, 다수의 선택된 엘리먼트들은 제1어레이 내의 수평 및 수직 방향으로 정수 서브 샘플링 인자 n에 의해 정의된 다수의 엘리먼트들에 의해 이격된 엘리먼트들로 구성된다. 상기 다수의 선택된 엘리먼트들 각각에 대해 상기 처리 동작을 수행하는 단계는 상기 병렬 처리 시스템의 인접한 데이터 프로세서들에서, 처리 동작을 수행하기 위한 명령들을 순차적으로 실행하는 단계를 포함하고, 상기 병렬 처리 시스템의 인접한 데이터 프로세서들에서 명령들을 순차적으로 실행하는 단일 반복은 상기 제1어레이의 n개의 수평 행들 내의 모든 선택된 엘리먼트들에 대한 상기 처리 동작을 수행하는 단계를 포함하며, 여기서 n개의 수평 행들은 n개의 엘리먼트들로 이격된 일련의 수평 행들 내의 인접한 행들이다. 상기 방법은 모든 출력 엘리먼트들을 포함하는 출력 어레이를 저장하는 단계를 더 포함하고, 여기서 출력 어레이를 저장하는 단계는 병렬 처리 시스템의 데이터 메모리들의 각각의 개별 메모리 영역에 출력 어레이의 개별 엘리먼트들을 나타내는 데이터를 저장하는 단계를 포함한다.
상기 처리 동작들의 속도를 증가시키기 위한 방법의 또 다른 실시예에서, 처리 동작을 수행하는 단계는 선택된 엘리먼트를 포함하는 2차원 엘리먼트 영역에 대해 하나 이상의 컨볼루션을 수행하는 단계를 포함하고, 하나 이상의 컨볼루션들 각각은 병렬 처리 시스템에 결합된 호스트 프로세서의 데이터 메모리에 저장된 계수 행렬을 사용하여 수행된다.
상기 처리 동작들의 속도를 증가시키기 위한 방법의 다른 실시예에서, 출력 어레이를 저장하는 단계는 인접한 데이터 프로세서들에서 명령들을 순차 실행하는 단일 반복 동안, 병렬 처리 시스템 내의 데이터 프로세서들의 인접한 메모리 영역들의 제1그룹내의 상기 제1어레이의 n개의 수평 행들 중 최상부 행에 선택된 엘리먼드들에 대응하는 출력 엘리먼트들을 저장하는 단계를 더 포함한다. 상기 인접한 메모리 영역들의 제1그룹은 병렬 처리 시스템의 명령 파이프 라인의 도입부에 가장 가깝게 위치한 데이터 프로세서들에 있다. 이 실시예에서, 출력 어레이를 저장하는 단계는 인접한 메모리 영역들의 제1그룹에 인접한 인접 메모리 영역들의 다음 그룹 내의 제1어레이의 n개의 수평 행들 중 다음 하위 행에 선택된 엘리먼트들에 대응하는 출력 엘리먼트들을 저장하는 단계를 더 포함한다. 상기 인접한 메모리 영역들의 다음 그룹은 상기 병렬 처리 시스템의 명령 파이프 라인을 따라 더 위치된 데이터 프로세서들에 있다. 상기 출력 어레이를 저장하는 단계는 인접한 데이터 프로세서들에서 명령들을 순차 실행하는 단일 반복 동안, 병렬 처리 시스템의 명령 파이프 라인을 따라 더 위치된 데이터 프로세서들 내의 인접한 메모리 영역들의 연속적인 그룹에서 n개의 수평 행의 임의의 추가의 하위 행에 선택된 엘리먼트들에 대응하는 출력 엘리먼트들을 저장하는 단계를 또한 포함한다.
본 방법의 다른 실시예에서, 출력 어레이를 저장하는 단계는, 인접한 데이터 프로세서들에서 명령들을 순차 실행하는 단일 반복 동안, n개의 수평 행들 각각의 상기 제1 선택된 픽셀에 대응하는 일련의 제1 n개의 출력 엘리먼트들의 각 출력 엘리먼트를 n개의 수평 행의 최상부로부터 최하부까지의 순서로, 병렬 처리 시스템 내의 상기 데이터 프로세서들의 각각의 인접한 메모리 영역에 저장하는 단계를 더 포함한다. 상기 출력 엘리먼트들은 병렬 처리 시스템의 명령 파이프라인의 도입부에 가장 가깝게 위치한 데이터 프로세서의 제1메모리 영역으로 시작하는 메모리 영역들에 저장된다. 이 실시예에서, 상기 출력 어레이를 저장하는 단계는, 인접한 데이터 프로세서들에서 명령들을 순차 실행하는 단일 반복 동안, n개의 수평 행들 각각의 제2 선택된 픽셀에 대응하는 일련의 제2 n개의 출력 엘리먼트들의 각 출력 엘리먼트를 n개의 수평 행의 최상부로부터 최하부까지의 순서로, 병렬 처리 시스템 내의 상기 데이터 프로세서들의 각각의 인접한 메모리 영역에 저장하는 단계를 더 포함한다. 이들 출력 엘리먼트들은 제1의 일련의 출력 엘리먼트들에서 마지막 출력 엘리먼트를 저장하는 메모리 영역 바로 다음의 메모리 영역으로 시작하는 메모리 영역에 저장된다. 상기 출력 어레이를 저장하는 단계는, 인접한 데이터 프로세서들에서 명령들을 순차 실행하는 단일 반복 동안, n개의 수평 행들 각각의 추가 선택된 픽셀들에 대응하는 임의의 추가적인 일련의 출력 엘리먼트들의 각 출력 엘리먼트를 n개의 수평 행의 최상부에서부터 최하부까지의 순서로, 상기 병렬 처리 시스템 내의 상기 데이터 프로세서들의 각각의 인접한 메모리 영역에 저장하는 단계를 또한 포함한다. 이들 출력 엘리먼트들은 이전의 일련의 출력 엘리먼트들의 마지막 출력 엘리먼트를 저장하는 메모리 영역 바로 다음의 메모리 영역으로 시작하는 메모리 영역에 저장된다.
다른 실시예에서, 상기 처리 동작들의 속도를 증가시키기 위한 방법은, 출력 어레이의 동일한 열로부터의 출력 엘리먼트들을 나타내는 데이터가 병렬 처리 시스템 내의 데이터 프로세서들의 동일한 메모리 영역 내에 모두 저장되도록 출력 엘리먼트들을 나타내는 상기 저장된 데이터를 재배열하는 단계, 및 출력 어레이내의 다수의 선택된 출력 엘리먼트들 각각에 대해, 상기 선택된 출력 엘리먼트에 대한 추가 처리 동작을 후속 수행하는 단계를 더 포함한다.
2차원 어레이의 데이터에 대한 처리 동작들의 속도를 증가시키기 위한 데이터 처리 시스템의 일 실시예는, 일련의(a row of) 실질적으로 동일한 데이터 프로세서들을 포함하고, 상기 데이터 프로세서들은 다수의 데이터 프로세서 중 제1 데이터 프로세서로부터 각각의 인접한 데이터 프로세서로 차례로 명령들의 순차적인 전달을 위해 구성된(adapted) 명령 파이프 라인에 의해 연결된다. 데이터 프로세서들 각각은 실질적으로 동일한 저장 용량의 다수의 메모리 영역들을 포함하도록 분할된 데이터 메모리를 포함한다. 상기 시스템은 일련의 데이터 프로세서들에 결합된 호스트 프로세서를 더 포함하고, 상기 호스트 프로세서는, 상기 일련의 데이터 프로세서들 데이터 메모리들에 저장된 어레이 데이터에 대한 처리 동작에 사용하기 위한 고정된 데이터를 저장하는 데이터 메모리를 포함한다. 호스트 프로세서는 다수의 데이터 프로세서들에 의한 실행을 위해 명령 파이프 라인 명령을 패치 및 제공하도록 구성된 제어 모듈을 더 포함하고, 상기 명령 파이프 라인에 제공되고 상기 일련의 데이터 프로세서들에 의해 실행될 때 동작들을 수행하도록 동작 가능한 저장 프로그램 명령들을 포함한다.
데이터 처리 ㅅ히스템의 다른 실시예에서, 제어 모듈은 호스트 프로세서 및 일련의 데이터 프로세서들에 결합된 명령 생성 유닛을 포함하고, 명령 생성 유닛은 호스트 프로세서와 일련의 데이터 프로세서들 사이의 인터페이스를 제공하고, 호스트 프로세서로부터 수신된 커스텀 컴파일러 명령을 데이터 프로세서에 의해 실행 가능한 명령들로 번역하도록 구성된다. 상기 시스템의 다른 실시예에서, 처리동작을 수행하는 단계는 선택된 엘리먼트를 포함하는 2차원 엘리먼트 영역에 대해 하나 이상의 컨볼루션들을 수행하는 단계를 포함하고, 하나 이상의 컨볼루션들 각각은 호스트 프로세서의 데이터 메모리에 저장된 계수 행렬을 사용하여 수행된다.
본 명세서에서 기술된 방법들 및 시스템들은 2D CNN 구현들의 속도 및 서브 샘플링을 수반하는 2차원 어레이들 상의 다른 동작들의 실질적인 향상을 가져온다. 본 명세서에 기술된 신규한 타일 프로세서 아키텍처의 특정 양태는 공동 소유된 미국 특허 출원 제13/602,958호, 현재의 미국 특허 제9,183,614호 및 미국 특허 출원 제15/054,118호에 더 설명되어 있으며, 이들 각각은 본 명세서에 참고 문헌으로 본 명세서 전체에 포함된다. 다른 접근 방식과 달리, 타일 프로세서 아키텍처는 이미지 프레임의 전체 폭에 걸쳐 동시 처리가 가능하며 기본적으로 통신 오버헤드 없이 매우 많은 수의 네트워크 파라미터를 배포하는 것을 포함하여 신경만 전체에서 대기 시간이 짧은 통신을 지원한다. 게다가, 이 아키텍처는 기존 솔루션에서 가능한 것 이상으로 병렬 처리를 가능하게 하는 데이터 재구성을 위한 기회를 제공한다(최대 병렬 처리의 4배 이상). 실시예에서, CNN은 단일 스레드 C ++ 소스 프로그램에 의해 직접 구현된다.
CNN 개요
CNN은 계산량이 많고 통신 집약적이며 병렬 처리 컴포넌트들을 분할 (partition)하기가 매우 어려운 상황에서 동작한다. 도 1은 https:/7sites. google.com/site/5kk73gpu2013/assignmeniycnn (이 특정 예는 교통 표지들을 감지하고 분류한다)에서 이용 가능한, 아인트호벤 대학교(Eindhoven University of Technology)의 임베디드 프로세서 아키텍처 과정에서 제공되는 참조 코드를 기반으로 한 CNN 예제의 일반화된 컴포넌트들을 도시한다. 신경망(100)은 레이어 1 내지 레이어 4로 라벨링된 4개의 레이어로 구성된다. 각 레이어는 입력 이미지의 픽셀 들 및 각 피쳐 맵에 대해, 픽셀로 정의된 영역(이 경우, 왼쪽 위 모서리에 픽셀이 있는 영역)이 특징맵과 어느 정도 일치하는지 결정하는 다수의 특징맵들을 사용한다. 이것은 각 위치에서 이러한 결정을 내리는 뉴런과 거의 유사하여, "신경망"이라는 용어를 사용한다. 가능한 특징맵들의 예시적인 세트들이 도 1에 도시되어있다. 24개의 특징맵의 세트(102)는 레이어 1에서 사용할 수 있으며, 40개의 특징맵의 세트(104)는 레이어 2에서 사용할 수 있으며, 24개의 특징맵의 세트(106)는 레이어 3에서 사용할 수 있다. 도 1의 실시예에서, 연속적인 레이어들에서 사용되는 피쳐 맵은 점진적으로 더 복잡한 특징들을 나타낸다. 이것은 컨볼 루션 신경망에서 종종 발생한다. 도 1에 표시된 바와 같이, 특징맵 세트(102, 104 및 106)는 얼굴의 인식에 사용된다. 다른 객체들의 인식에 적합한 특징 맵 세트들이 도 1에 도시되어 있다. 도 1에 도시되지는 않았지만, 교통 표지의 인식에 적합한 유사한 특징맵 세트들이 입력 이미지(108), 예컨대 교통 표지의 인식을 위해 사용될 수 있다. 도 1에 도시된 바와 같은 특징맵들은 고정된 데이터이며, "특징 검출기""와 같은 다른 용어를 사용하여 또한 참조될 수 있다. "특징맵(feature map)"이라는 용어는 특징맵과 입력 이미지의 비교로부터 생성되는(results) 출력 "이미지"를 기술하는데 사용될 수도 있다.
객체 검출에 사용되는 기본 개념으로서 이미지 부분과 특징맵의 비교를 사용하면 네트워크의 기본 연산(underlying operations)의 수가 많아진다.
도 1에 도시된 바와같이, 구현은:
* 서브 샘플링(도에서 "SAMP").이미지 객체들은 뷰포트(즉, 주시 위치)로부터 다양한 거리에 있을 수 있으므로, 패턴 매칭은 매칭 특징들의 거리의 범위를 고려해야 한다. 이는 다양한 레이어에서 이미지를 서브 샘플링하여, (일부 수용 가능한 손실을 포함하는) 이미지 정보를 (폭과 높이가 작아진) 보다 밀도가 높은 표현들로 배치함으로써 달성된다. 마지막 레이어인 레이어 4는, 모든 레이어의 요약을 비교하여 객체가 주어진 위치에서 검출되었는지를 나타내고 객체(예컨대, 표지에 표시된 속도)를 선택적으로 분류한다.
* 2D 컨볼루션(도에서 "CONV"). 이것은 이미지의 영역을 특징맵과 매칭시키기 위한 기본 동작이다. 이 영역들의 크기(dimension)는 임의의 주어진 네트워크에 대해 고정되어 있지만, 하나의 레이어에서 다음의 레이어 및 하나의 네트워크에서 다음의 네트워크로 변경될 수 있다. 이는 네트워크 디자인의 일부이다.
* 비선형 활성화 함수(도에서 "ACTV"). 이 함수는 영역이 특징과 일치하는 정도를 결정하여, (다시 이 경우 상부 왼쪽 픽셀에서, 영역을 정의하는 단일 픽셀의 출력을 폐기함으로써) 특정 임계값 이상으로 일치하지 않는 영역을 폐기한다. 선택적으로, 이 위치들을 강조하기 위해 상대적으로 더 큰 값들을 상기 임계값을 훨씬 초과하는 출력들에 할당할 수 있다.
* 레이어 1(도에서 "PCNT")의 서로 다른 특징맵들의 출력의 부분(partial) 상호 연결. 이 동작은 이전 레이어의 다양한 특징-맵 비교의 조합을 고려하여, 이전 레이어에서 매칭하는 특징들에 대한 더 풍부한 정보 세트를 형성한다.
* 레이어 2(도에서 "FCNT")의 서로 다른 특징맵들의 출력의 완전(full) 상호 연결. 이것은 또한 풍부한 정보 세트를 형성하지만 더 많은 조합을 생성하게 되므로 이 예에서는 레이어 3에서만 수행된다.
* 최종 임계값 계산(도에서 'THRESH'). 이것은 특정 위치에서 네트워크에 의해 내려진 "결정", 즉 해당 위치에서 특징이 검출되는지의 여부를 요약한다. 이 값은 최종 컨볼루션 이후에, 0보다 큰 일부 값으로 표시된다. 이것이 사실이면, 분류의 신뢰 수준을 나타내는 컨볼루션의 크기로, 검출된 객체의 특정 클래스로 상기 탐지를 분류(sort)하는데 다른 컨볼루션들이 사용될 수 있다.
도 1과 같은 컨볼루션 신경망에서 가장 시간 소모적인 동작은 도 2에 도시된 이미지 데이터의 2D 컨볼루션이다. 이 동작은 주어진 수직 위치 y 및 수평 위치 x에서 신호 출력(Sy _x)을 계산한다. 도면은 예를 들어, 입력 이미지(108) 내의 영역(202)을 사용하여 출력을 계산하는 것을 의미하는 6×6 컨볼루션을 도시하며, 상기 영역(202)은 상부 좌측 코너에 의해 정의된 x 및 y를 갖는 6 픽셀 높이 및 6 픽셀 폭이다. 비교되는 다양한 특징들은 바이어스 B와 가중치 행렬(Wm , n)로 구성된 커널(kernel)에 의해 정의된다. 도 2의 실시예에서, 가중치 행렬(204)은 특징맵 세트(208) 내의 특징맵(202)의 세기 변화(intensity variation)를 나타내는 36개의 컴포넌트(Wy,x)를 갖는다.
컨볼루션 연산은 다음의 식으로 정의된다.
Figure pct00001
컨볼루션(convolution)은 이미지 데이터의 곱을 가중치 매트릭스의 해당 컴포넌트를 합산하여, 신호를 생성하기 위해 바이어스에 추가되는 단일 값을 산출한다. 따라서, 컨볼루션은 입력 세기값(input intensity value)(INy,x)을 갖는 픽셀의 공간 위치에 대응하는 출력 신호값(Sy_x)을 생성한다. 비공식적으로, 이 연산은 픽셀 값과 가중치 사이의 대응 정도가 더 높은 영역에 대해 더 큰 신호값을 생성한다. 예를 들어, 가중치가 더 높은 값(더 밝은)을 갖는 동일한 위치들에서 이미지가 더 밝으면, 두 값의 곱은 상대적으로 큰 값을 갖는다(그리고 음의 가중치들을 사용하여 양의 바이어스를 적용하면 일치하는 더 어두운 영역이 상대적으로 큰 값을 갖는다). 컨볼루션 합이 클수록 일치도가 높다. AC TV 기능은 상대적으로 약한 값을 갖는 컨볼루션 출력을 무시하므로 이들은 추가 컨볼루션 레이어들에 참여하지 않는다.
컨볼루션은 전체 이미지(본 명세서에 기술된 테스트 구현에서, 폭 1280 픽셀 및 높이 720 픽셀의 이미지)를 통해 수행되기 때문에 계산 강도가 높다. 그러나 이것은 연산의 복잡성을 좌우한다. 도 3은 예시적 네트워크의 단일 출력이 갖는 종속성들을 보여주고 네트워크를 통해 출력을 추적("1 검출")하고 모든 컨볼루션 커널 및 (입력 세트의 조합이 조합 수에 따라 입력 세트보다 더 많은 출력 세트를 생성하는) 상호 연결 연산들을 고려하는 도면이다.
단일 출력 분류는 38,280개의 신호 컴포넌트들("s", 입력 이미지를 포함하는) 및 272,588개의 커널 컴포넌트(바이어스 "b"와 가중치 "w" 모두를 카운팅하는)에 따른다. 레이어 2는 레이어 3에 5×5 신호 입력을 형성하기 위해 25번 반복되어야 하고, 레이어 1은 레이어 2에 6×6 신호 입력을 형성하기 위해 36번 반복하거나 레이어 3에 5×5 입력을 형성하기 위해 총 36 * 25 = 900번 반복되어야 한다. 출력 검출은 각 출력 위치에 형성되며, 각각은 상이한 세트의 데이터 종속성을 갖는다. 인접한 출력은 인접한 컨텍스트를 가지지만 각 컨텍스트는 고유하기 때문에 이들 종속성에는 오버랩이 있다.
도 1의 (nVidia GeForce GTX 460을 사용하는) 예시적인 네트워크의 종래의 구현은 입력 이미지의 프레임에서 실행하기 위해 대략 1,400,000,000 사이클을 필요로 한다. 대조적으로, 타일링된(tiled) 아키텍처에 매핑하는 일 실시예는 동일한 네트워크에 대해 약 32,000,000 사이클을 필요로 하는데, 이는 거의 44배 더 빠르다. 이 실시예는 레이어 1 및 2에서 2의 인자(factor)에 의한 서브 샘플링 및 모든 4개의 레이어에서의 2D 컨볼루션을 포함한다. 처리 컴포넌트들의 기본 개수(underlying number)와 연산들은 기존 구현과 타일 프로세서 구현 간에 비교 가능하지만 데이터 흐름이 구현되는 방식, 즉 도 3의 데이터 종속성이 어떻게 충족되는지에 큰 차이가 있다.
종래의 프로세서 솔루션들은 신호 및 커널 데이터가 처리 컴포넌트들로 통신되어야 하는 데이터 흐름을 구현한다. 이는 공유 메모리에서 (범용 그래픽 프로세서들의) 처리 컴포넌트로 데이터를 이동하거나 ("비전 프로세서들의") 처리 컴포넌트 사이에서 데이터를 명시적으로 이동시킴으로써 구현할 수 있다. 이 이동은 전송(transfer)을 수행하는데 시간이 걸릴 뿐만 아니라 전송들이 프로그램의 의미 있는 지점에서 이루어지도록 처리 컴포넌트들이 동기화되어야 하며, 이는 전형적으로 적절한 지점에 도달할 때까지 데이터의 소스 또는 목적지가 정지(stall)되어야함을 요한다.
이와 대조적으로, 본 명세서에 기술된 시스템 및 방법에서, 타일 프로세서 어레이는 데이터 이동 또는 동기화를 위한 오버 헤드가 거의 없거나 전혀 없는 모든 처리 컴포넌트들사이에서 공유되는 방식으로 로컬 메모리에 모든 컨텍스트(예를 들어, 주변 픽셀에 대한 이미지 데이터)를 유지(leave)한다. 도 4는 본 명세서에 기술된 방법 및 시스템에 사용되는 타일 프로세서 어레이의 주요 양태을 도시한다. 4개의 상호 연결된 타일 프로세서(401)의 그룹이 도시된다. "타일"이란 용어는 4, 8 또는 16 픽셀 폭 및 최대 256 픽셀 높이의 프레임에서 픽셀들의 직선 영역 또는 2차원 어레이를 타낸다. 각 처리 컴포넌트 또는 타일 프로세서는 인접 타일 프로세서들에 매핑된 인접 타일들을 갖는, 고유한 픽셀 타일에서 작동한다. 본 명세서에 기술된 타일 처리가 주로 이미지 처리 애플리케이션들에 대해 기술되었지만, 개시된 실시예들은 2차원 데이터 세트들, 특히 2차원 상호 관련된 데이터 세트의 데이터 처리를 수반하는 임의의 애플리케이션들에 적합하다고 여겨져야 한다.
타일 프로세서(401)는 종래의 프로세서와 공통되는 많은 컴포넌트를 가지며, 주목할 만하게는 명령 메모리를 갖지 않고 명령 페치 로직을 갖지 않는 예외를 갖는다. 도 4의 묘사는 타일 프로세서(401)의 비 통상적인 컴포넌트들을 예시하기 위한 것으로 다수의 타일 프로세서(401)의 그룹화를 도시한다. 타일 프로세서(401)의 컴포넌트의 배열은 컴포넌트들간의 모든 상호 접속을 반영하지 않을 수 있다. 본 명세서에서 달리 언급하지 않는 한, 타일 프로세서(401)는 당 업계에 공지된 종래 프로세서의 방식으로 상호 연결된 종래의 프로세서(예를 들어, 전원 공급 장치를 포함하는)의 컴포넌트들을 포함한다. 종래의 명령 메모리 및 명령 페치 로직을 사용하는 대신에, 타일 프로세서(401)는 제어 모듈에 의해 페치되고, 모든 타일 프로세서를 동일한 명령 시퀀스에 연결하는 직렬 명령 버퍼 또는 I-버퍼, 레지스터들 (400)로 구성된 명령 파이프 라인을 사용하여 분산된, 명령들을 사용한다.
I-버퍼(400)에서 수신된 명령들은 디코드 로직(402)에 의해 디코딩되고, 피연산자들을 페치하고 결과를 분할(partitioned) 데이터 메모리(10)(DMEM)에 기록하기 위한 로드(loads) 및 저장(stores)을 사용하여, 기능 유닛들(406)에 의해 뱅킹된(banked) 레지스터 파일(408)의 레지스터 내용에 대해 연산들이 수행된다. 타일 프로세서의 특히 새로운 특징은 영역 상태 로직(404), 레지스터 파일 뱅킹 메커니즘(408), 데이터-메모리 분할 메커니즘(410), 원격 액세스 로직(412), 타일 상호 연결 네트워크(414) 및 이들의 조합들을 포함한다. 네트워크(14)는 모든 타일 프로세서를 모든 다른 타일 프로세서의 DMEM에 연결하는 완전히 연결된 네트워크를 나타내기 때문에 개별 하드웨어 블록으로 도시되지 않는다. 각 타일 프로세서의 원격 액세스 로직(412)은 로컬 액세스 인터커넥트(interconnect)(416)에 연결되며, 로컬 액세스 인터커넥트(416)는 4개의 타일 프로세서 중 임의의 프로세서로부터의 요청들을 단일 사이클에서 다른 타일 프로세서 중의 하나로 라우팅한다. 원격 액세스 로직(418)은 임의의 요청이 로컬 그룹의 프로세서로 향하는지의 여부를 동시에 결정하고, 이러한 비-로컬 요청을 최종 목적지에 결합시키는 비-로컬 타일 인터커넥트(420)로 그러한 요청을 제공한다. 로컬 액세스 인터커넥트(416), 원격 액세스 논리(418), 및 비-로컬 타일 인터커넥트(420)는 인터 커넥트 네트워크(414)의 특정 레벨이다.
각 데이터 경로("타일 경로")는 다른 타일 경로(또는 동일한 타일 경로 내의 메모리의 다른 영역)의 메모리를 목표(target)로 하는 로드 명령을 실행함으로써 공유된 컨텍스트에 액세스할 수 있다. 이 로드는 일반적으로 명령에 사이클을 추가하지 않고 목표 데이터가 계산되었는지 확인하는 방식으로 구현된다.
도 5는 제1타일 프로세서 구현 실시예에서 타일 경로들 간의 신호 트래픽에 대한 데이터 흐름 대기시간 (latency)의 히스토그램을 도시한다. 왕복 대기시간 는 가로 축(로드 요청에서 데이터 응답까지의 사이클)에 표시되며 소정(given) 대기시간을 갖는 액세스 수는 세로 축에 표시된다.(서브 샘플링 연산들이 많은 양의 데이터에서 발생하고 비교적 원격 통신이 더 필요하기 때문에 히스토그램에는 2개의 피크가 있다.) 거의 모든 요청은 동기화를 포함하여 12 사이클 내에 충족된다. 타일 경로는 여러 위치, 이 경우 4개의 위치에서 멀티-태스크를 수행하여 동일한 명령 시퀀스를 4번 실행한다. 예를 들어, 3개의 다른 위치에 있는 4개의 명령들의 시퀀스는 명령들의 다음 시퀀스에 의해 요구되기 전에 응답을 수신할 적절한 시간을 제공한다.
낮은 오버 헤드의 데이터 이동에 추가하여, 타일 어레이는 종래의 솔루션에 비해 데이터 흐름 구현에서 2가지 중요한 장점을 더 갖는다. 첫 번째는, 네트워크의 각 레벨에 있는 데이터는 공유 메모리에 남아 있으며, 한 레이어에서 다음 레이어로 통신될 필요가 없다는 것이다. 기존의 솔루션은 도 3에 도시된 종속성의 확장에서 볼 수 있듯이, 신호 데이터를 컴퓨팅 컴포넌트들에 35,000,000,000개의 데이터를 전송해야 한다. 대조적으로, 타일 어레이는 이 실시예(도 5의 총 분포)에서 약 38,000,000개의 전송을 필요로 한다. 입력 데이터는 한 번 전송되고, 모든 네트워크 레이어들이 이 입력에 대하여 수행되고, 그런 다음 모든 검출이 테이블로 출력된다. 요구된 데이터 전송만이 서브 샘플링 및 상기 컨볼루션을 위한 신호 영역들의 액세스에 필요하다. 레이어 상호 연결 또는 네트워크 레이어들 간에 데이터 전송을 위한 다른 전송들은 필요하지 않다.
두 번째는, 타일 어레이가 커널 데이터를 전달하기 위해 오버 헤드를 필요로 하지 않기 때문에 남아 있는 데이터를 처리(operate)할 수 있는 능력이 있다는 것이다. 보다 일반적인 솔루션에서, 이 커널 데이터는 커널 데이터 또는 이미지 데이터를 컴퓨팅 컴포넌트들의 로컬 메모리들로 스와핑해야 하는 신호 데이터를 동반해야 한다. 커널 데이터는 신호 데이터보다 훨씬 크며 총 290,000,000,000건이다. 이들은 컴퓨팅 컴포넌트당 총 스토리지가 모든 커널 데이터에 대해 311,000개의 메모리 위치이고, 비효율적인 메모리 사용 없이 다수의 컴퓨팅 컴포넌트들에 남아 있기에는 너무 크기 때문에 필요하다.
타일 어레이에서, 커널 데이터는 하나의 메모리 위치에 있고 호스트 메모리 내에 있으며, 타일 경로들로 오버 헤드없이 전달된다. 도 6에는 호스트 프로세서와 타일 프로세서 간의 인터페이싱을 위한 명령 생성 유닛(IGU)의 일 실시예를 나타내는 블록도가 도시되어 있다. 호스트 프로세서와 타일 프로세서 간의 인터페이싱에 수반되는 작업들(tasks)은 실행될 프로그램 명령의 특성(nature)에 의존한다. 프로그램이 타일 프로세서에 의한 실행을 위해 특별히 적용된 경우에도, 명령을 페치하고 이를 적절한 시퀀스로 타일 프로세서의 명령 파이프 라인에 제공하기 위한 제어 모듈이 필요하다. 도 6의 IGU는 또한 종래의 컴파일러로부터 타일 프로세서에 의한 실행에 적합한 명령으로의 커스텀(custom) 명령들의 변환을 수행한다. 이러한 방식으로, 종래의 프로세서용으로 작성된 프로그램들은 타일 프로세서를 사용하여 실행될 수 있다.
IGU는 호스트의 데이터 경로에서 기능 유닛으로서 구현된다. 이 기능 유닛은 두개의 입력 피연산자(operands)인 호스트 데이터 A와 호스트 데이터 B를 가지며 단일 결과인 호스트 결과를 리턴한다는 점에서 전형적인 구성을 가진다. IGU의 구현은 도 6의 상부, 중간 및 하부에 대응하는 3개의 파이프 라인 스테이지, 즉 속성 스테이지(602), 디코드 스테이지(604) 및 I- 버퍼 스테이지(606)에 걸쳐 분산된다. 속성 스테이지는 호스트 프로세서로의 메인 인터페이스를 구현하고, 호스트 opcode 및 dataA 및 dataB 피연산자들을 수신하고, 객체 추적기 결과를 리턴하며, 상기 객체 추적기는 타일 프로세서들의 연산에 의해 생성된 다중값(multivalued) 벡터를 식별한다. 이 스테이지는 또한 호스트의 커스텀 명령들을 타일 경로 명령으로 변환하기 위해 디코드 스테이지에 의해 요구되는 정보를 어셈블한다. IGU의 디코드 스테이지는 속성 스테이지로부터 명령 및 속성 정보를 수신하고, 레지스터 할당 플래그들 및 레지스터할당 큐를 사용하여 레지스터들의 할당 및 할당 해제를 처리한다. 디코드 스테이지는 또한 특수(specialized) 프로세서에 대한 명령들을 형성하고 상기 명령들을 명령 버퍼 스테이지로 전달한다.
IGU의 I-버퍼 스테이지는 스칼라 레지스터들 및 특수 프로세서로부터 스칼라데이터를 수신하고, 스칼라 데이터를 호스트 프로세서가 제공하는 다른 스칼라 피연산자로 연산하고, 스칼라 결과를 저장하는 스칼라 기능 유닛을 포함한다. IGU는 스칼라 기능 유닛(608)을 통해 호스트 데이터 메모리에 접속된다. I-버퍼 스테이지는 또한 특수 프로세서에 의한 명령들의 실행을 관리하기 위한 최적화 큐 및 명령 재생 버퍼를 포함한다. 특수 프로세서로서 타일 어레이를 갖는 실시예에서, I-버퍼 스테이지는 미국 특허 번호 제9,183,614 호에 개시된 "마스터 프로세서"의 명령 페칭 및 시퀀싱 동작들을 구현한다. 타일 프로세서에 대한 명령 생성 유닛은 2016 년 2월 25일자로 출원된 "특수 프로세서용 하드웨어 명령 생성 유닛"이라는 명칭의 미국 특허 출원 번호 제15/054, 118호에 더 기술되어 있으며, 상기 출원은 그 전체가 모든 목적을 위해 본 명세서에 참조로서 통합된다.
CNN의 구현을 위해, 커널 데이터는 검출되는 객체들의 클래스에 따라 변하지 만 주어진 검출 세트에 대해 변하지 않는 상수값 들로 구성된다. 따라서, 커널 데이터는 호스트 프로그램의 일부이며, 호스트 메모리에 상수로 저장되며, (즉시 데이터(immediate data) 용) "호스트 dataB" 입력 포트에 직접 제공된다. 이 데이터는 명령 파이프 라인("벡터 1-파이프")을 통해 직접 전달되며 통신 또는 동기화 오버 헤드없이 모든 컨텍스트에 적용된다.
CNN 최적화-데이터 재구성
타일 어레이의 데이터 흐름 능력은 큰 성능 향상을 위해 일정량의 데이터 흐름 오버 헤드를 부가하는 고유 최적화(unique optimization)를 가능하게 한다. 지금까지 논의한 기본 구현과 위의 도 5에 도시된 대기시간 결과들은 위에 설명된 참조 코드로부터 타일 기반 프로그래밍 모델로의 예시적 알고리즘의 직접 매핑에 기초한다. 이것은 도 7에 도시된 바와같이, 레이어 1과 레이어 2에 대한 입력들을 직접적으로 서브 샘플링하는 것을 포함한다. 다양한 형태의 서브 샘플링이 있지만, 이 형태는 컨볼루션에 대한 입력을 형성하기 위해 모든 다른 입력 신호 및 모든 다른 스캔 라인에 의해 정의된 영역들에 대하여 컨볼루션을 간단하게 수행한다. 도 7은 더 일반적으로 임의의 2차원 데이터 어레이일 수 있는 소스 이미지(700)를 포함한다. 컨볼루션 윈도우(702)는 컨볼루션을 수행하기 위해 선택된 픽셀(또는 어레이 컴포넌트)에서 컨볼루션을 수행하는데 사용된다. 윈도우(702)에 대하여, 선택된 픽셀은 위치(0,0)의 픽셀(704)이다. 도 7의 실시예에서, 행 인덱스 v 및 열 인덱스 x 모두에 대해 짝수를 갖는 각각의 픽셀은 컨볼루션을 위한 선택된 픽셀이다. 소스 이미지(700)에 대한 이러한 선택된 픽셀들의 세트는 어레이(706)에 도시되어 있다.
컨볼루션 그 자체는 컨볼루션 윈도우(702) 내의 입력 이미지의 음영 영역에 의해 도시된 바와 같이 연속적인 신호값을 사용하지만, 컨볼루션 영역들의 위치가 레이어 1 및 2 모두에서 2배로 서브 샘플링되기 때문에, 이들 레이어 각각의 출력에서의 벡터 폭은 도 8에 도시된 바와같이 2배로 감소된다. 도 8은 각 단계에서 처리를 위해 이용 가능한 컴포넌트 행의 폭 관점에서, 예시적인 CNN의 레이어 1 및 레이어 2의 컨볼루션의 동작을 나타낸다. 레이어 1 내에서, 행 스택(802)은 프로세서(이 경우, 타일 프로세서들의 데이터 메모리)에 저장된 입력 이미지 데이터를 나타낸다. 예시적인 CNN의 컨볼루션은 6×6 컨볼루션이기 때문에 제1 레이어 1 컨볼루션을 수행하려면 y에서 y+5까지 6개의 입력 행이 필요한다. 일 실시예에서, CNN 처리는 소스 이미지의 수평 슬라이스에 대해 연속적으로 행해지며, 컨볼루션을 수행하는데 필요한 만큼의 행을 한 번에 저장한다. 이러한 실시예에서, 저장된 이미지 데이터의 상부 행들이 더 이상 필요하지 않을 때, 이미지 데이터의 새로운 행들에 의해 오버라이트(overwrite)될 수 있다. 유사하게, 컨볼루션으로부터 생성된 신호 데이터는 또한 컨볼루션들의 다음 레이어를 수행하는데 필요한 다수의 행을 갖는 수평 슬라이스로서 유지될 수 있다.
도 8의 행 스택(804)은 벡터 폭의 관점에서, 레이어 1 컨볼루션들을 위해 선택된 픽셀들인 이미지 데이터 픽셀들의 비율을 도시한다. 레이어 1 컨볼루션들이 레이어 1의 행 y의 선택된 픽셀들에서 획득되면, 생성되는 신호값들은 레이어 2에서 입력 행 806(라인 y)이 된다. 레이어 2에서 후속 입력 행을 위한 공간들은 행 806 아래에 도시된다. 이들 행은 레이어 1에서 충분한 입력 데이터가 수신되어 추가 행에서 시작하는 컨볼루션들을 수행할 때 생성된다. 도 8의 실시예에서, 레이어 2는 또한 2배로 서브 샘플링되기 때문에, 레이어 2 컨볼루션을 위해 선택된 픽셀인 입력 라인 y 픽셀의 비율을 나타내는 행(808)은 행(806)의 절반이다.
전술한 것과 같은 서브 샘플링으로 컨볼루션을 수행할 때 타일 프로세서 데이터 메모리들에서의 데이터 저장(storage)의 예시가 도 9에 도시되어 있다. 도 9의 열은 4개의 데이터 메모리(902, 904, 906 및 908)를 나타낸다. 이들은 도 4의 타일 프로세서 어레이의 데이터 메모리들(410)과 유사하지만, 주변 타일 프로세서들 및 그들 사이의 상호 연결은 도 9에 도시되지 않는다. 도 9의 실시예에서, 데이터 프로세서들을 연결하는 명령 파이프 라인은 좌측에서 우측으로 이동하므로, 데이터 메모리(902)는 명령 파이프 라인의 도입부(beginning)에 가장 가까운 데이터 프로세서내에 있다. 각각의 데이터 메모리는 데이터 메모리(902)의 영역(910, 912, 914 및 916)과 같은 4개의 메모리 영역으로 분할된다. 도 9의 각각의 메모리 영역의 좌측을 따라 상부에 "IN"으로 표시되고, 소스 이미지에서 y, x 위치로 참조되는 이미지 데이터의 열이 있다. 이미지 데이터 또는 다른 2차원 어레이 데이터가 타일 프로세서에 저장되는 방식은 이미지를 수평으로 이동시키면서 각각의 수평 위치에서 픽셀들 또는 컴포넌트들을 연속적인 메모리 위치들로 매핑하는 것이다. 따라서, 영역(910)의 픽셀들, 즉 제1 프로세서(902)의 제1영역은 0의 x 인덱스를 가지며, 다음 영역(912)의 픽셀들은 1의 x 인덱스를 가지며, 하나의 메모리 하부에 있는 영역에서 다음 메모리의 상부에 있는 영역으로 이동하는 데이터 메모리들의 그룹 전체에 계속해서 적용된다. 도 9의 실시예에서, 소스 이미지는 16 픽셀 폭을 갖기 때문에 x는 0 내지 15의 범위이다. 다른 타일 프로세서 어레이는 물론 더 많은 데이터 프로세서를 가질 수 있고, 데이터 메모리는 또한 더 많은 수의 영역으로 분할될 수 있으며, 영역의 수는 2의 거듭 제곱(a power of two)이어야 한다.
소스 이미지 데이터에 더하여, 도 9의 각각의 데이터 메모리는 수행된 컨볼루션들로부터 생성된 신호 데이터를 저장한다. 이들 출력 컴포넌트들은 본 명세서에서 특징맵 픽셀로 칭하거나, 보다 일반화된 어레이 처리 동작들을 위한 출력 컴포넌트들로 지칭될 수 있다. 본 명세서에서 설명된 CNN 구현예에 대해, 6개의 레이어 1 특징맵이 존재하며, 그 결과 선택된 픽셀 당 6개의 레이어 1 컨볼루션이 생성되고, 6개의 결과 신호값이 생성된다. 도 9의 실시예에서, 기호 S11은 레이어 1, 특징맵 1으로부터의 신호 출력을 나타내고, S22는 레이어 1, 특징맵 2로부터의 출력을 나타낸다. 도 9에 나타난 바와 같이, 레이어 2 컨볼루션으로부터의 신호 출력들은 또한 데이터 메모리들에 저장된다. 도시된 이미지 픽셀 데이터가 소스 이미지로부터 수신된 제1데이터인 실시예에서, 임의의 레이어 2 컨볼루션 출력들을 생성하기에 충분한 이미지 행이 수신되지 않았다.
도 9에 도시된 바와 같이, 6개의 행의 이미지 데이터가 각각의 메모리 영역에 저장되고, 레이어 1 컨볼루션이 상기 저장된 수평 이미지 슬라이스의 최상단 행에서 상기 선택된 픽셀에 대해 수행되었다. 이 실시예에서, 타일 프로세서에 대한 명령은 제1타일 프로세서(902)로 하여금 y 인덱스가 0이고 x 인덱스가 0, 2, 4 및 6인 처음 4개의 선택된 픽셀에서 시작하는 컨볼루션들을 수행하게 한다. 이러한 컨볼루션들로부터의 신호 데이터는 타일 프로세서(902)의 4개의 영역에 순차적으로 저장된다. 이 연산은 프로세서들이 x=10에서 선택된 픽셀들이 "떨어질(run out)" 때까지 타일 프로세서들에 걸쳐 계속된다. 컨볼루션은 각 방향으로 6 픽셀의 윈도우를 필요로 하기 때문에 10번째 수평 픽셀은 이 이미지에 대해 컨볼루션을 수행할 수 있는 마지막 픽셀이며, 11번째 내지 15번째 영역은 에이프런(apron)내에 있고 서브 샘플링이 없는 경우에도 신호 데이터를 갖지 않음을 나타내는(note) "apr" 지정들(designations)을 갖는다. 상기 컨볼루션들은 서브 샘플링된 위치들의 오른쪽에 5개의 픽셀을 요구하기 때문에, 타일 프로세서(906 및 908)는 컨볼루션들에 참여하지 않는다. 더 많은 타일 프로세서를 사용하는 더 넓은 소스 이미지를 갖는 보다 현실적인 시나리오에서, 이미지 가장자리의 에이프런 효과는 미미할 것이다. 그러나, 서브 샘플링 인자 2에서 타일 프로세서 활동의 손실은 이러한 시나리오에서 가용 프로세서들의 거의 절반에 달할 것이다.
타일 프로세서의 데이터 프로세서들은 병렬로 작동하도록 설계된다 그들은 인접한 각 프로세서 사이에서 1 클럭 사이클의 오프셋을 사용하여 동일한 명령들을 실행한다. 컨볼루션 연산은 전체 벡터에 걸쳐 병렬로 수행되기 때문에 도 8과 9에 도시된 벡터 길이의 감소는 사용 가능한 병렬 처리(available parallelism)를 레이어 2에서 2배, 레이어 3과 4에서 다른 2배로 직접 감소시킨다. 이는 성능에 2배 이상의 영향을 미치는데, 그 이유는 레이어 1의 6번의 컨볼루션 및 레이어 2의 60번의 컨볼로션과 대조적으로, 레이어 3과 4는 레이어 3에서 벡터당 총 640번의 컨볼루션과 레이터 4(객체가 감지되었는지 여부에 따라)에서 80번 또는 640번을 수행하기 때문이다.
컨볼루션 연산은 각 위치에서 동일하고, 타일된 구현에서는 데이터 메모리에 고정된 데이터에 대해 수행된다. 컨볼루션 연산에는 레이어간에 신호 데이터를 상호 연결하거나 통신하는데 요구되는 데이터 통신이 없다. 이러한 이유 때문에, 서브 샘플링된 라인들보다 더 넓은 단일 벡터 내에 나타나도록 다수의 라인으로부터 서브 샘플링된 벡터를 재구성하는 것이 바람직(advantageous)하다. 이로 인해 데이터 재구성에 약간의 오버 헤드가 추가되지만, 각 재구성 동작에 대해 레이어 2 내지 4 레이어에서 다수의 컨볼루션이 수행될 수 있다.
도 10의 실시예에서, 레이어 1의 데이터는 수직 방향의 벡터 구성이 6개의 라인 y 내지 y+5 및 y+2 내지 y+7에서 병렬로 수행될 수 있도록 재구성된다. 이로 인해 동일한 출력 벡터 내에 2개의 인접한 출력 라인이 나타난다. 레이어 2 내에서 유사한 동작이 수행되어, 동일한 출력 벡터 내에 4개의 인접한 라인이 나타나는 레이어 2 출력이 생성된다. 도 10의 행 스택(1002)은 스택(1002)이 6개 대신 8개의 이미지 라인을 포함한다는 점을 제외하면 도 8의 스택(802)과 유사하다. 하나의 타일 프로세서 반복(iteration) 동안 2개의 행, 라인 y 및 라인 y+2에 대한 컨볼루션을 수행하기 위해, 컨볼루션들은 라인 y+2 컨볼루션을 수행하기에 충분한 데이터가 존재할 수 있도록 2개 이상의 라인들이 수신될 때까지 지연된다. 행 스택(1004)은 라인 y 및 라인 y+2 모두로부터의 선택된 픽셀을 나타내며, 이들은 하나의 타일 프로세서 어레이 반복에서 수행되므로 반복 동안 2배의 컨볼루션이 병렬로 수행된다. 이미지 데이터는 레벨 1에서 이러한 재구성을 수행하기 위해 하나의 타일 프로세서 영역에서 다른 타일 프로세서 영역으로 실제로 이동하지 않는다는 점에 유의해야 한다. 그 대신, 타일 프로세서 어레이는 어레이의 일 측에 있는 프로세서들은 y행의 선택된 픽셀에 대해 컨볼루션을 수행하는 반면 타측에 있는 프로세서들은 y+2행의 선택된 픽셀에 컨볼루션을 수행하도록 프로그래밍된다. 라인 y 및 y+2를 따라 상기 선택된 픽셀에 대한 컨볼루션이 수행되는 반복 후에, 다음 반복은 라인 y+4 및 y+6능 결합하는 행에서 4라인 아래로 시작할 수 있다.
도 11은 도 10에 도시된 레이어 1 재구성을 구현할 때 타일 프로세서 메모리들의 데이터 저장의 예를 도시한다. 도 11은 도 9에 도시된 타일 프로세서 데이터 메모리들의 동일한 어레이를 도시하지만, 도 11의 실시예에서 타일 프로세서들은 영역들(1102 내지 1112)에 저장된 결과에 대해 라인 y를 따라(along) 선택된 픽셀을 사용하고, 영역들(1114 내지 1124)에 저장된 결과에 대해 라인 y+2를 따라서 선택된 픽셀을 사용하여 상기 레이터 1 컨볼루션을 수행하도록 프로그래밍된다. 각각의 메모리 영역은 6개가 아닌 8라인의 이미지 데이터를 포함하고, 메모리 영역의 제1그룹은 소스 이미지의 y=0 행에 대응하는 신호 데이터를 가지는 반면, 메모리 영역의 제2그룹은 y=2 행에 대응하는 신호 데이터를 갖는다. 메모리 영역 좌측의 인덱스들(y1)은 (소스 이미지에서) 레이어 1에 대한 입력 행들을 지정하기 위해 도시되고, 메모리 영역 우측의 인덱스들(y2)은 (각각의 레이터 1 출력 특징맵에서) 레이어 2에 대한 입력 행들을 지정하기 위해 도시된다. 2배로 서브 샘플링되기 때문에, 레이어 1의 y1+2 행은 레이어 2의 y2+1 행이 된다.
이 재구성이 어떻게 수행되는지 이해하려면 재구성 없이 기본(baseline) 구현을 위해 데이터가 어떻게 서브 샘플링되는지 먼저 이해하는 것이 유용하다. 이것은 도 12에 도시되어 있다. 수평 컨볼루션은 6 픽셀의 범위(span) 1202("열별 반복")에 걸쳐 수행되는데, 벡터에 대한 병렬 연산의 경우, 픽셀들은 서브 샘플링된 위치로부터 0 내지 5의 오프셋을 갖는 서브 샘플링에 의해 입력으로부터 추출된다. 상기 도면은 수평 컨볼루션의 처음 두 반복에서 세 번째 서브 샘플링된 위치에 대해 선택된 픽셀을 하이라이트("x")한다. 수직 컨볼루션은 y+0 내지 y+5의 6개 라인 각각에 대해 수평 반복(horizontal iteration )을 반복(repeat)함으로써 수행된다. 다수의 커널을 사용하는 다수의 컨볼루션(이 예에서는 6개)이 동일한 서브 샘플링된 데이터에 적용됨에 유의한다.
도 13에 도시된 바와 같이, 서브 샘플링된 벡터의 크기를 2배로 하기 위해, 제2 서브 샘플링된 라인이 제1서브 샘플링된 라인에 대한 벡터의 말단에 연결되는 것과 유사한 연산이 2개의 수평라인 y 및 y+2에서 수행된다. 클래스 라이브러리를 사용하면 할당에 대한 범위 마스크를 사용하여 단일 문(statement)에서 이 작업을 수행할 수 있다. 이렇게 하면 수평 컨볼루션이 동시에 2개의 수평라인에서 수행된다(두 라인은 동일한 커널을 사용함). 이것은 연결을 수행하는 설정 시간의 대가로 성능을 약 두배로 향상시킨다. 단일 벡터 재구성을 위해 여러 커널들이 컨볼루션되므로 잠재적인 성능 이점의 대부분이 실현된다.
도 10에 도시된 바와 같이, 레이어 1에서 재구성(reorganized) 데이터에 대한 컨볼루션을 수행하면, 2개의 인접한 출력 라인이 레이어 2의 입력에서 단일 벡터 내에 나타난다. 예를 들어, 도 10의 행(1006)은 레이어 2의 라인 y와 레이어 2의 라인 y+1을 연결한다. 이 구성(organization)은 레이어 2에서 사용하기에 적합하지 않으며, 인접한 라인들은 바람직하게는 수직으로 동일한 위치에 나타나야하므로, 이 구성은 모든 다른 선이 수직 방향으로 인접해 있기 때문에 바람직하지 않다. 그러나, 서브 샘플링 후 입력 데이터를 셔플링(shuffling)하여 레이어 2 컨볼루션에 대한 입력을 형성하면 더 나은 구성을 형성할 수 있다.
이 셔플링 동작은 도 14에 도시되어 있다. 도 10의 상부에서의 레이어 1 재구성과 달리, 도 14의 셔플링은 하나의 타일 프로세서 메모리 영역에서 다른 타일 프로세서 메모리 영역으로의 레이어 1 신호 데이터의 실제 이동이다. 이 아이디어는 서로 수직으로 인접하도록 의도된 픽셀들은 동일한 메모리 영역에 저장되도록 다음 컨볼루션을 위한 이미지 데이터를 얻는 것이다. 서브 샘플링을 사용하면 4개의 수평 컨볼루션 라인을 거의 동일한 벡터 폭에 배치할 수 있다(컨볼루션은 오른쪽 경계에서 수행될 수 없기 때문에 다소 작으며 출력에 몇 개의 위치가 나타나지 않는다). 이를 수행하기 위해 4개의 수직 라인이 서브 샘플링되어 동일한 벡터 내에서 연결된다. 즉, 짝수 라인에서는 벡터의 왼쪽에서, 홀수 라인에서는 오른쪽에서 연결된다. 이 동작은 모든 수평 컨볼루션(x+0에서 x+5)과 모든 수직 컨볼루션 (y+0에서 y+5)에 적용된다는 것을 이해해야 한다. 그러나, 이 재구성은 레이어 2 내의 16개 컨볼루션에 적용되므로 재구성 오버 헤드에도 불구하고 다시금 순익이 발생한다.
유사한 재구성이 레이어 3에서 수행되어 컨볼루션 연산(이 경우 5×5)에 보다 잘 적용되도록 입력을 위치시킨다. 그러나 레이어 3은 이 신경망 예에서 서브 샘플링을 사용하지 않으므로 도 15에서와 같이 연속적인 수평 라인들이 수직 방향으로 인접하도록 입력 벡터를 간단히 회전한다. 다른 레이어와 마찬가지로 이것은 출력의 인접한 4개의 서브 벡터에서 단일 벡터에 나타나는 연속적인 라인들에 대한 출력을 생성한다. 이 구성은 더 이상 재구성할 필요없이 탐지 및 분류를 위해 참조 CNN 코드의 레이어 4에서 직접 사용될 수 있다.
전술한 데이터 재구성 및 셔플링을 사용하는 최적화된 CNN 구현의 이러한 실시예는 상술한 기본(baseline) 타일 프로세서 구현(32,000,000 사이클)의 성능의 약 3.1배 및 언급된 선행 기술 구현 성능의 약 137배의 사이클을 실행한다(1,400,000,000주기). 도 16은 이 구현의 대기시간 히스토그램을 나타낸다. 데이터 재구성은 기본 구현에 약 21,000,000개의 전송을 추가했지만, 타일 어레이의 데이터 흐름 구현은 이러한 최적화를 가능하게 만드는 데이터 재구성을 가능하게 하는 주요 이점인 대기시간 프로필에 거의 영향을 미치지 않고 이러한 전송을 지원한다.
지금까지 제시된 타일링된 CNN 구현의 버전은 모두 서브 샘플링 또는 벡터를 큰 샘플로 연결하기 위해 상대적으로 큰 데이터 이동 범위를 필요로 한다. 이는 도 17에 나와 있는 큰 벡터를 생성하는 또 다른 스타일을 사용하면 회피할 수 있다. 벡터를 연결하는 대신 다른 라인의 벡터들의 컴포넌트들을 인터리빙하여, 서로 다른 라인의 컴포넌트들이 컨볼루션에 대한 입력 위치에서 번갈아 나타나도록 배치한다. 컨볼루션의 출력은 또한 대체 위치에도 있다. 도 11에 도시된 레이어 1 재구성의 경우에서와 같이, 레이어 1에서의 이러한 인터리빙은 타일 프로세서가 컨볼루션을 위한 데이터를 페치(fetch)하는 방법에 의해 달성된다.
이 인터리빙 기법은 데이터 컴포넌트의 작은 이동만 필요로 한다는 장점이 있는데, 이는 이러한 컴포넌트가 벡터 폭의 약 절반이 아닌 근처 위치로 이동하기 때문이다. 또한 이 인터리빙 기법은 벡터를 연결하기 위해 많은 양의 데이터 이동이 필요하지 않는 것이다. 도 14와 도 1에 도시된 것과 유사한 입력 셔플링이 필요하지만 이는 단순히 입력 인덱싱의 다른 형식이다. 도 18은 레이어 2에 대한이 셔플링을 보여준다. 다른 레이어들은 유사한 스타일을 사용한다. 이는 이전 사례와 비교하여 레이어 4에서 객체가 다른 순서로 감지되지만 이것이 정확성에 영향을 주지 않음을 의미한다.
테스트된 CNN 이미지의 이러한 인터리빙된 실시예는 7,170,000 사이클, 기본 라인 경우의 약 4.5배 및 종래 기술의 성능의 19.5배로 완료된다. 데이터-메모리 요구사항도 저 작은데, 이전의 최적화된 버전은 256개의 레지스터와 205개의 메모리 위치(유출된 레지스터의 경우 89개 위치 포함)를 사용하고, 데이터 흐름에 최적화된 버전은 208개의 레지스터(유출 없음)와 100개의 메모리 위치(공유 데이터 전용)를 사용한다.
도 19는 데이터 흐름 최적화의 이점을 보여준다. 대기시간 의 분포는 훨씬 더 타이트하며, 7 사이클을 넘는 매우 적은 수의 액세스와 벡터의 더 큰 범위에 대한 액세스로 인한 두 번째 피크가 없다. 총 액세스 수는 지금까지 표시된 것 중 가장 작다. 총 전송 횟수는 이전의 최적화된 경우의 55,100,000 횟수와 비교하여 34,300,000건이다. 또한 이미지 프레임을 처리하기 위해 수행되는 반복 작업이 적기 때문에 기본 경우에서 필요한 376,000,000건의 전송보다 작다.
본 명세서에 제공된 설명은 본 발명의 원리 및 실시예를 설명하기 위한 것이다. 상술한 개시가 완전히 이해되면, 당업자에게는 다양한 변형 및 수정이 명백해질 것이다. 모든 청구 범위는 이러한 모든 변형 및 수정을 포함하는 것으로 해석되어야 한다.

Claims (22)

  1. 2차원 이미지에서 특징을 검출하는 프로세서 구현 방법으로서, 상기 방법은
    병렬 처리 시스템의 데이터 메모리 세트에 제1이미지의 픽셀을 나타내는 제1이미지 데이터를 저장하는 단계와,
    상기 병렬 처리 시스템은 다수의 데이터 프로세서들 중 제1 데이터 프로세서로부터 각각의 인접한 데이터 프로세서로 차례로 명령을 순차 전달하도록 구성된(adapted) 명령 파이프 라인에 의해 연결된 다수의 실질적으로 동일한 일련의(a low of) 데이터 프로세서를 포함하고,
    상기 데이터 프로세스 각각은 상기 데이터 메모리 세트 중 각각의 하나를 포함하고,
    상기 데이터 메모리 각각은 동일한 저장 용량의 다수의 메모리 영역을 포함하도록 분할(partition)되며, 그리고
    상기 제1이미지 데이터를 저장하는 단계는 상기 병렬 처리 시스템의 상기 데이터 메모리들의 각각의 인접하는 메모리 영역들에 상기 제1이미지의 연속적인 수직 슬라이스들을 나타내는 데이터를 저장하는 단계를 포함하고;
    상기 병렬 처리 시스템에 결합된 호스트 프로세서의 메모리에, 가중치 행렬 세트를 나타내는 가중치 데이터를 포함하는 특징 커널 데이터를 저장하는 단계와;
    상기 제1이미지 내의 다수의 선택된 픽셀(selected pixels)들 각각에 대해,
    상기 선택된 픽셀을 포함하는 2차원 픽셀 영역에 걸쳐 컨볼루션 세트를 수행하는 단계, 상기 컨볼루션 세트 각각은 가중치 행렬 세트들 중 하나를 이용하고, 상기 가중치 형렬 각각에 대해, 상기 선택된 픽셀에 대응하는 특징맵 픽셀을 생성하도록 각 컨볼루션의 결과에 비선형 함수를 적용하여 수행되며, 그리고
    상기 가중치 형렬 각각에 대해, 상기 선택된 픽셀에 해당하는 특징맵을 생성하도록 비선형 함수에 각 컨볼루션의 결과를 적용하는 단계와;
    상기 가중치 행렬 각각에 대해, 상기 특징맵 픽셀 모두를 포함하는 특징맵을 저장하는 단계와, 상기 특징맵을 저장하는 단계는
    상기 병렬 처리 시스템의 데이터 메모리들의 각각의 개별 메모리 영역에 상기 특징맵의 개별 픽셀들을 나타내는 데이터를 저장하는 단계를 포함하고, 그리고 특징맵의 각 픽셀에 대해, 모든 가중치 행렬을 사용하여 생성된 각 특징맵으로부터의 대응 픽셀을 나타내는 데이터는 동일한 메모리 영역에 저장되며; 그리고
    상기 제1이미지 내에서 특정 특징 또는 특징들의 클래스가 검출되는지 여부에 관한 결정을 생성하도록 상기 특징맵을 처리하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 특징 커널 데이터는 상기 가중치 행렬 세트에서 각 가중치 행렬과 연관된 바이어스 값을 나타내는 바이어스 데이터를 더 포함하고, 상기 컨볼루션 세트 각각은 가중치 행렬 세트들 중 각각의 하나와 연관된 바이어스 값을 사용하여 더 수행되는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 다수의 선택된 픽셀들 각각에 대해 컨볼루션 세트를 수행하는 단계는
    상기 병렬 처리 시스템의 인접한 데이터 프로세서들에서, 상기 컨볼루션 세트를 수행하기 위한 명령들을 순차적으로 실행하는 단계를 포함하고; 그리고
    상기 병렬 처리 시스템의 인접한 데이터 프로세서들에서 명령들을 순차적으로 실행하는 단일 반복은 제1이미지의 하나의 수평 행 내의 모든 선택된 픽셀들에 대해 상기 컨볼루션 세트를 수행하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제3항에 있어서, 상기 다수의 선택된 픽셀들은
    제1이미지 내에서 수평 및 수직 방향으로, 정수 서브 샘플링 인자 n에 의해 정의된 다수의 픽셀들 만큼 이격된 픽셀들로 구성되는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 병렬 처리 시스템의 인접한 데이터 프로세서들에서 상기 명령들을 순차적으로 실행하는 단일 반복은 제1이미지의 n개의 수평 행들 내의 모든 선택된 픽셀들에 대해 상기 컨볼루션 세트를 수행하는 단계를 포함하고; 그리고
    상기 n개의 수평 행들은 n 픽셀씩 이격되어 있는 일련의 수평 행들 내의 인접한 행들인 것을 특징으로 하는 방법.
  6. 제1항에 있어서, 상기 특징맵을 저장하는 단계는
    인접한 데이터 프로세서들에서 상기 명령들을 순차적으로 실행하는 단일 반복 동안:
    상기 병렬 처리 시스템 내의 데이터 프로세서들의 인접한 메모리 영역들의 제1그룹 내의 제1이미지의 n개의 수평 행들 중 최상부에 선택된 픽셀들에 대응하는 특징맵 픽셀들을 저장하는 단계, 상기 인접한 메모리 영역들의 제1그룹은 병렬 처리 시스템의 명령 파이프 라인의 도입부(beginning)에 가장 가깝게 위치한 데이터 프로세서들에 있고;
    상기 인접한 메모리 영역들의 제1그룹에 인접한 메모리 영역들의 다음 그룹내의 제1이미지의 n개의 수평 행들 중 다음 하위 행에 선택된 픽셀들에 대응하는 특징맵 픽셀들을 저장하는 단계, 상기 인접한 메모리 영역들의 다음 그룹은 병렬 처리 시스템의 명령 파이프 라인을 따라 더 위치된 데이터 프로세서들에 있으며; 및
    상기 병렬 처리 시스템의 명령 파이프 라인을 따라 더 위치된 데이터 프로세서들 내의 인접한 메모리 영역들의 연속적인 그룹에서 n개의 수평 행들 중 임의의 추가 하위 행들에 선택된 픽셀에 대응하는 특징맵 픽셀을 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서, 상기 특징맵을 저장하는 단계는,
    인접한 데이터 프로세서들에서 명령들을 순차 실행하는 단일 반복 동안:
    상기 n개의 수평 행 각각의 상기 제1 선택된 픽셀에 대응하는 제1 일련의 n개의 특징맵 픽셀의 각 특징맵 픽셀을 상기 병렬 처리 시스템의 명령 파이프라인의 도입부에 가장 가깝게 위치한 상기 데이터 프로세서의 제1메모리 영역으로 시작하여, 상기 n개의 수평 행의 최상부로부터 최하부까지의 순서로, 상기 병렬 처리 시스템 내의 상기 데이터 프로세서들의 각각의 인접한 메모리 영역에 저장하는 단계;
    상기 n개의 수평 행 각각의 상기 제2 선택된 픽셀에 대응하는 제2 일련의 n개의 특징맵 픽셀들의 각 특징맵 픽셀을 특징맵 픽셀들의 제1시리즈에서 마지막 특징맵 픽셀을 저장하는 메모리 영역 바로 다음의 메모리 영역으로 시작하여, 상기 n개의 수평 행의 최상부로부터 최하부까지의 순서로, 상기 병렬 처리 시스템 내의 상기 데이터 프로세서들의 각각의 인접한 메모리 영역에 저장하는 단계; 및
    상기 n개의 수평 행 각각의 추가 선택된 픽셀들에 대응하는 n개의 특징맵 픽셀들의 임의의 추가 시리즈의 특징맵 픽셀을 특징맵 픽셀들의 이전 시리즈에서 마지막 특징맵 픽셀을 저장하는 메모리 영역 바로 다음의 메모리 영역으로 시작하여, 상기 n개의 수평 행의 최상부에서부터 최하부까지의 순서로, 상기 병렬 처리 시스템 내의 상기 데이터 프로세서들의 각각의 인접한 메모리 영역에 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서, 상기 결정을 생성하기 위해 상기 특징맵들을 처리하는 단계는:
    상기 제1이미지에서 동일한 수평 위치를 갖는 선택된 픽셀들에 대응하는 특징맵 픽셀들을 나타내는 데이터가 상기 병렬 처리 시스템 내의 상기 데이터 프로세서들의 동일한 메모리 영역 내에 모두 저장되도록 상기 특징맵 픽셀들을 나타내는 상기 저장된 데이터를 재배열하는 단계; 및
    각 특징맵 내의 다수의 선택된 특징맵 픽셀들 각각에 대해, 상기 선택된 특징맵 픽셀을 포함하는 2차원 특징맵 픽셀 영역에 걸쳐 추가 컨볼루션 세트를 후속 수행하는 단계를 포함하며, 상기 추가 컨볼루션 세트 각각은 상기 호스트 프로세서의 메모리에 저장된 가중치 행렬의 추가 세트 중 각각의 하나를 이용하여 수행되는 것을 특징으로 하는 방법.
  9. 제1항에 있어서,
    상기 제1이미지는 큰 이미지(larger image)의 수평 슬라이스를 구성하고; 그리고
    상기 방법은 상기 제1이미지의 최상부 행을 나타내는 제1이미지 데이터에 대한 컨볼루션 세트가 완료된 다음에, 상기 제1이미지의 최상부 행을 나타내는 제1이미지 데이터를 상기 제1이미지에 이전에 포함된 상기 더 큰 이미지의 최하위 행 바로 아래의 상기 큰 이미지의 행을 나타내는 데이터로 오버라이트(overwriting)하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  10. 2차원 이미지의 특징을 검출하는 데이터 처리 시스템에 있어서,
    상기 시스템은
    일련의(a row of) 실질적으로 동일한 데이터 프로세서들,
    상기 데이터 프로세서들은 다수의 데이터 프로세서들 중 제1 데이터 프로세서로부터 차례로 각 인접한 데이터 프로세서로 명령들의 순차적인 전달을 위해 구성된(adapted) 명령 파이프 라인에 의해 연결되고, 그리고
    상기 데이터 프로세서들 각각은 실질적으로 동일한 저장 용량의 다수의 메모리 영역들을 포함하도록 분할된(partitioned) 데이터 메모리를 포함하고; 및
    상기 일련의 데이터 프로세서들에 결합된 호스트 프로세서를 포함하고, 상기 호스트 프로세서는
    가중치 행렬 세트를 나타내는 가중치 데이터 및 상기 가중치 행렬 세트 내의 각 가중치 행렬에 대한 바이어스 값을 나타내는 바이어스 데이터를 포함하는 특징 커널 데이터를 저장하도록 구성된 데이터 메모리,
    상기 다수의 데이터 프로세서들에 의한 실행을 위해 상기 명령 파이프 라인 명령들을 페치하고 상기 명령 파이프 라인에 제공하도록 구성된 제어 모듈, 및
    상기 명령 파이프 라인에 제공되고 상기 일련의 데이터 프로세서들에 의해 실행될 때 동작들을 수행하도록 동작 가능한 저장 프로그램 명령들을 포함하며, 상기 동작들은:
    제1이미지를 나타내는 제1이미지 데이터를 상기 다수의 데이터 프로세서들의 데이터 메모리들에 저장하는 단계, 상기 제1이미지 데이터를 저장하는 단계는 상기 데이터 메모리들의 각각의 인접한 메모리 영역들에 상기 제1이미지의 연속적인 수직 슬라이스를 나타내는 데이터를 저장하는 단계를 포함하고,
    상기 제1이미지 내의 다수의 선택된 픽셀들 각각에 대해, 상기 선택된 픽셀을 포함하는 2차원 픽셀 영역에 걸쳐 컨볼루션 세트를 수행하는 단계, 상기 컨볼루션 세트 각각은 상기 가중치 행렬 세트 중 각각의 하나 및 그에 대응하는 바이어스 값을 이용하여 수행되고,
    상기 가중치 행렬들 각각에 대해, 각각 선택된 픽셀에 대응하는 특징맵 픽셀을 생성하도록 각 컨볼루션의 결과에 비선형 함수를 적용하는 단계,
    상기 가중치 행렬들 각각에 대해, 상기 특징맵 픽셀들 모두를 포함하는 특징맵을 저장하는 단계, 상기 특징맵을 저장하는 단계는
    상기 특징맵의 개별 픽셀을 나타내는 데이터를 상기 데이터 메모리의 개별 메모리 영역에 저장하는 단계를 포함하며, 그리고
    특징맵의 각 픽셀에 대해, 가중치 행렬들 모두를 사용하여 생성된 각 특징맵으로부터의 대응하는 픽셀을 나타내는 데이터는 동일한 메모리 영역에 저장되고, 및
    상기 제1이미지내에서 특정 특징 또는 특징들의 클래스가 검출되는지 여부에 관한 결정을 생성하도록 상기 특징맵들을 처리하는 단계를 포함하는 것을 특징으로 하는 시스템.
  11. 제10항에 있어서, 상기 제어 모듈은
    상기 호스트 프로세서 및 일련의 데이터 프로세서들에 결합된 명령 생성 유닛을 포함하고, 상기 명령 생성 유닛은
    호스트 프로세서와 상기 데이터 프로세서들의 행 사이의 인터페이스를 제공하고; 그리고 호스트 프로세서로부터 수신된 커스텀 컴파일러 명령을 데이터 프로세서에 의해 실행 가능한 명령들로 번역하도록 구성되는 것을 특징으로 하는 시스템.
  12. 제10항에 있어서, 상기
    다수의 선택된 픽셀들 각각에 대해 상기 컨볼루션 세트를 수행하는 단계는
    상기 데이터 프로세서의 행을 따라 인접한 데이터 프로세서들에서, 상기 컨볼루션 세트를 수행하기 위한 명령들을 순차적으로 실행하는 단계; 그리고
    인접한 데이터 프로세서들에서 명령들을 순차적으로 실행하는 단일 반복은 제1이미지의 하나의 수평 행 내의 모든 선택 픽셀들에 대해 상기 컨볼루션 세트를 수행하는 단계를 포함하는 것을 특징으로 하는 시스템.
  13. 제12항에 있어서, 상기 다수의 선택된 픽셀들은
    제1이미지 내에서 수평 및 수직 방향으로, 정수 서브 샘플링 인자 n에 의해 정의된 다수의 픽셀들 만큼 이격된 픽셀들로 구성되는 것을 특징으로 하는 시스템.
  14. 제13항에 있어서,
    상기 데이터 프로세서들의 행을 따라 인접한 데이터 프로세서들에서 상기 명령들을 순차적으로 실행하는 단일 반복은 제1이미지의 n개의 수평 행들 내의 모든 선택 픽셀들에 대해 상기 컨볼루션 세트를 수행하는 단계를 포함하고; 그리고
    상기 n개의 수평 행들은 n 픽셀씩 이격되어 있는 일련의 수평 행들 내의 인접한 행들인 것을 특징으로 하는 시스템.
  15. 2차원 어레이들의 데이터에 대한 처리 동작들의 속도를 증가시키기 위한 프로세서 구현 방법으로서, 상기 방법은
    병렬 처리 시스템 내의 데이터 메모리들의 세트에, 제1어레이의 엘리먼트들 (elements)을 나타내는 제1어레이 데이터를 저장하는 단계,
    상기 병렬 처리 시스템은,
    상기 다수의 데이터 프로세서 중 제1 데이터 프로세서로부터 각각의 인접한 데이터 프로세서로 차례로 명령들의 순차 전달을 위해 구성된(adapted) 명령 파이프 라인에 의해 연결된 일련의(a low of) 다수의 실질적으로 동일한 데이터 프로세서들을 포함하며,
    상기 데이터 프로세서들 각각은 상기 데이터 메모리 세트 중 각각의 하나를 포함하고,
    상기 데이터 메모리들 각각은 실질적으로 동일한 저장 용량을 갖는 다수의 메모리 영역들을 포함하도록 분할되며, 그리고
    상기 제1어레이 데이터를 저장하는 단계는 병렬 처리 시스템의 데이터 메모리들의 각각의 인접한 메모리 영역들에 상기 제1어레이의 연속하는 열들을 나타내는 데이터를 저장하는 단계를 포함하며;
    상기 제1 어레이 내의 다수의 선택된 엘리먼트들 각각에 대해, 상기 선택된 엘리먼트에 대응하는 출력 엘리먼트를 생성하기 위해 상기 선택된 엘리먼트에 대한 처리 동작을 수행하는 단계,
    상기 다수의 선택된 엘리먼트들은 제1어레이 내의 수평 및 수직 방향으로, 정수 서브 샘플링 인자 n에 의해 정의된 다수의 엘리먼트들에 의해 이격된 엘리먼트들로 구성되며,
    상기 다수의 선택된 엘리먼트들 각각에 대해 상기 처리 동작을 수행하는 단계는 상기 병렬 처리 시스템의 인접한 데이터 프로세서들에서, 처리 동작을 수행하기 위한 명령들을 순차적으로 실행하는 단계를 포함하고,
    상기 병렬 처리 시스템의 인접한 데이터 프로세서들에서 명령들을 순차적으로 실행하는 단일 반복은 상기 제1어레이의 n개의 수평 행들 내의 모든 선택된 엘리먼트들에 대한 상기 처리 동작을 수행하는 단계를 포함하며,
    상기 n개의 수평 행은 n개의 엘리먼트들이 이격된 일련의 수평 행들 내의 인접한 행이고; 및
    상기 모든 출력 엘리먼트들을 포함하는 출력 어레이를 저장하는 단계, 상기 출력 어레이를 저장하는 단계는 상기 병렬 처리 시스템의 데이터 메모리들의 각각의 개별 메모리 영역에 상기 출력 어레이의 개별 엘리먼트들을 나타내는 데이터를 저장하는 단계를 포함하는 것을 특징으로 하는 방법.
  16. 제15항에 있어서,
    상기 처리 동작을 수행하는 단계는 선택된 엘리먼트를 포함하는 2차원 엘리먼트 영역에 대해 하나 이상의 컨볼루션들을 수행하는 단계를 포함하고, 그리고
    상기 하나 이상의 컨볼루션들 각각은 상기 병렬 처리 시스템에 결합된 호스트 프로세서의 데이터 메모리에 저장된 계수 행렬을 사용하여 수행되는 것을 특징으로 하는 방법.
  17. 제15항에 있어서, 상기 출력 어레이를 저장하는 단계는,
    인접한 데이터 프로세서들에서 명령들을 순차 실행하는 단일 반복 동안:
    상기 병렬 처리 시스템 내의 데이터 프로세서들의 인접한 메모리 영역들의 제1그룹내의 상기 제1어레이의 n개의 수평 행들 중 최상부 행에 선택된 엘리먼드들에 대응하는 출력 엘리먼트들을 저장하는 단계, 상기 인접한 메모리 영역들의 제1그룹은 상기 병렬 처리 시스템의 명령 파이프 라인의 도입부에 가장 가깝게 위치한 데이터 프로세서들에 있고,
    인접한 메모리 영역들의 제1그룹에 인접한 인접 메모리 영역들의 다음 그룹 내의 상기 제1어레이의 n개의 수평 행들 중 다음 하위 행에 선택된 엘리먼트들에 대응하는 출력 엘리먼트들을 저장하는 단계, 상기 인접한 메모리 영역들의 다음 그룹은 상기 병렬 처리 시스템의 명령 파이프 라인을 따라 더 위치된 데이터 프로세서들에 있으며; 및
    상기 병렬 처리 시스템의 명령 파이프 라인을 따라 더 위치된 데이터 프로세서들 내의 인접한 메모리 영역들의 연속적인 그룹에서 n개의 수평 행의 임의의 추가의 하위 행에 선택된 엘리먼트들에 대응하는 출력 엘리먼트들을 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  18. 제15항에 있어서, 상기 출력 어레이를 저장하는 단계는,
    인접한 데이터 프로세서들에서 명령들을 순차 실행하는 단일 반복 동안:
    상기 n개의 수평 행들 각각의 상기 제1 선택된 픽셀에 대응하는 제1 일련의 n개의 출력 엘리먼트들의 각 출력 엘리먼트를 상기 병렬 처리 시스템의 명령 파이프라인의 도입부에 가장 가깝게 위치한 상기 데이터 프로세서의 제1메모리 영역으로 시작하여, 상기 n개의 수평 행의 최상부로부터 최하부까지의 순서로, 상기 병렬 처리 시스템 내의 상기 데이터 프로세서들의 각각의 인접한 메모리 영역에 저장하는 단계;
    상기 n개의 수평 행들 각각의 상기 제2 선택된 픽셀에 대응하는 제2 일련의 n개의 출력 엘리먼트들의 각 출력 엘리먼트를 상기 제1의 일련의 출력 엘리먼트들에서 마지막 출력 엘리먼트를 저장하는 메모리 영역 바로 다음의 메모리 영역으로 시작하여, 상기 n개의 수평 행의 최상부로부터 최하부까지의 순서로, 상기 병렬 처리 시스템 내의 상기 데이터 프로세서들의 각각의 인접한 메모리 영역에 저장하는 단계; 및
    상기 n개의 수평 행들 각각의 추가 선택된 픽셀들에 대응하는 임의의 추가적인 일련의 출력 엘리먼트들의 각 출력 엘리먼트를 이전의 일련의 출력 엘리먼트들의 마지막 출력 엘리먼트를 저장하는 메모리 영역 바로 다음의 메모리 영역으로 시작하여, 상기 n개의 수평 행의 최상부에서부터 최하부까지의 순서로, 상기 병렬 처리 시스템 내의 상기 데이터 프로세서들의 각각의 인접한 메모리 영역에 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  19. 제15항에 있어서, 상기 출력 어레이를 저장한 후에:
    상기 출력 어레이의 동일한 열로부터의 출력 엘리먼트들을 나타내는 데이터가 상기 병렬 처리 시스템 내의 상기 데이터 프로세서들의 동일한 메모리 영역 내에 모두 저장되도록 상기 출력 엘리먼트들을 나타내는 상기 저장된 데이터를 재배열하는 단계; 및
    상기 출력 어레이내의 다수의 선택된 출력 엘리먼트들 각각에 대해, 상기 선택된 출력 엘리먼트에 대한 추가 처리 동작을 후속 수행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  20. 2차원 어레이들의 데이터에 대한 처리 동작들의 속도를 증가시키기 위한 데이터 처리 시스템에 있어서, 상기 시스템은
    일련의(a row of) 실질적으로 동일한 데이터 프로세서들,
    상기 데이터 프로세서들은 다수의 데이터 프로세서 중 제1 데이터 프로세서로부터 각각의 인접한 데이터 프로세서로 차례로 명령들의 순차적인 전달을 위해 구성된(adapted) 명령 파이프 라인에 의해 연결되고,
    상기 데이터 프로세서들 각각은 실질적으로 동일한 저장 용량의 다수의 메모리 영역들을 포함하도록 분할된 데이터 메모리를 포함하며; 및
    상기 일련의 데이터 프로세서들에 결합된 호스트 프로세서, 상기 호스트 프로세서는,
    상기 일련의 데이터 프로세서들 데이터 메모리들에 저장된 어레이 데이터에 대한 처리 동작에 사용하기 위한 고정된 데이터를 저장하도록 구성된 데이터 메모리,
    상기 다수의 데이터 프로세서들에 의한 실행을 위해 상기 명령 파이프 라인 명령을 패치 및 제공하도록 구성된 제어 모듈, 및
    상기 명령 파이프 라인에 제공되고 상기 일련의 데이터 프로세서들에 의해 실행될 때 동작들을 수행하도록 동작 가능한 저장 프로그램 명령들을 포함하며, 상기 동작들은:
    제1어레이의 엘리먼트들을 나타내는 제1어레이 데이터를 상기 다수의 데이터 프로세서들의 데이터 메모리들에 저장하는 단계,
    상기 제1어레이 데이터를 저장하는 단계는 상기 데이터 메모리들의 각각의 인접한 메모리 영역들에 상기 제1어레이의 연속적인 열을 나타내는 데이터를 저장하는 단계를 포함하고,
    상기 다수의 선택된 엘리먼트들 각각에 대해 상기 처리 동작을 수행하는 단계는 상기 일련의 데이터 프로세서들을 따라 인접한 데이터 프로세서들에서, 상기 처리 동작을 수행하기 위한 명령들을 순차적으로 실행하는 단계를 포함하고,
    상기 일련의 데이터 프로세서들을 따라 인접한 데이터 프로세서들에서 명령들을 순차적으로 실행하는 단일 반복은 상기 제1어레이의 n개의 수평 행들 내의 모든 선택된 엘리먼트들에 대한 상기 처리 동작을 수행하는 단계를 포함하며,
    상기 n개의 수평 행들은 n개의 엘리먼트들이 이격된 일련의 수평 행들 내의 인접한 행이고; 및
    상기 출력 엘리먼트들 모두를 포함하는 출력 어레이를 저장하는 단계를 포함하고, 상기 출력 어레이를 저장하는 단계는 상기 일련의 데이터 프로세서들의 데이터 메모리들의 각각의 개별 메모리 영역에 상기 출력 어레이의 개별 엘리먼트들을 나타내는 데이터를 저장하는 단계를 포함하는 것을 특징으로 하는 시스템.
  21. 제20항에 있어서, 상기 제어 모듈은 상기 호스트 프로세서 및 상기 일련의 데이터 프로세서들에 결합된 명령 생성 유닛을 포함하고, 상기 명령 생성 유닛은
    호스트 프로세서와 상기 일련의 데이터 프로세서들 사이의 인터페이스를 제공하고; 그리고 호스트 프로세서로부터 수신된 커스텀 컴파일러 명령을 데이터 프로세서에 의해 실행 가능한 명령들로 번역하도록 구성되는 것을 특징으로 하는 시스템.
  22. 제20항에 있어서, 상기 처리 동작을 수행하는 단계는
    상기 선택된 엘리먼트를 포함하는 2차원 엘리먼트 영역에 대해 하나 이상의 컨볼루션들을 수행하는 단계를 포함하고, 그리고
    상기 하나 이상의 컨볼루션들 각각은 상기 호스트 프로세서의 데이터 메모리에 저장된 계수 행렬을 사용하여 수행되는 것을 특징으로 하는 시스템.
KR1020187005463A 2015-07-23 2016-07-23 2차원 어레이 프로세서의 성능 향상 KR20180034557A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562195921P 2015-07-23 2015-07-23
US62/195,921 2015-07-23
PCT/US2016/043781 WO2017015649A1 (en) 2015-07-23 2016-07-23 Performance enhancement for two-dimensional array processor

Publications (1)

Publication Number Publication Date
KR20180034557A true KR20180034557A (ko) 2018-04-04

Family

ID=56738200

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187005463A KR20180034557A (ko) 2015-07-23 2016-07-23 2차원 어레이 프로세서의 성능 향상

Country Status (6)

Country Link
US (1) US10303976B2 (ko)
EP (1) EP3326115A1 (ko)
JP (1) JP6771018B2 (ko)
KR (1) KR20180034557A (ko)
CN (1) CN107851214A (ko)
WO (1) WO2017015649A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200092846A (ko) * 2019-01-25 2020-08-04 주식회사 스트라드비젼 객체의 조건에 따라 모드를 전환할 수 있는 CNN 기반으로 군사 목적, 스마트폰 또는 가상 주행에 사용되는 수도(Pseudo)-3D 바운딩 박스를 검출하는 방법 및 이를 이용한 장치

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3472760A4 (en) * 2016-06-17 2020-03-04 Nokia Technologies Oy CONSTRUCTION OF A CONVOLUTIVE NEURON NETWORK
US20180005059A1 (en) 2016-07-01 2018-01-04 Google Inc. Statistics Operations On Two Dimensional Image Processor
US10296338B2 (en) * 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for low overhead control transfer to alternate address space in a processor
US11361403B2 (en) 2017-02-24 2022-06-14 Deepmind Technologies Limited Iterative multiscale image generation using neural networks
EP3388981B1 (en) * 2017-04-13 2021-09-01 Nxp B.V. Convolutional processing system
US10261903B2 (en) 2017-04-17 2019-04-16 Intel Corporation Extend GPU/CPU coherency to multi-GPU cores
US10331445B2 (en) * 2017-05-24 2019-06-25 Microsoft Technology Licensing, Llc Multifunction vector processor circuits
CN109726794B (zh) * 2017-10-27 2024-03-12 谷歌有限责任公司 基于关注的图像生成神经网络
US11756083B2 (en) 2018-02-01 2023-09-12 Givewith LLC Social platform promotion system and method
CN110276836A (zh) * 2018-03-13 2019-09-24 幻视互动(北京)科技有限公司 一种可加速特征点检测的方法及mr混合现实智能眼镜
CN108647773B (zh) * 2018-04-20 2021-07-23 复旦大学 一种可重构卷积神经网络的硬件互连系统
CN112106078A (zh) * 2018-05-08 2020-12-18 多伦多大学管理委员会 神经网络处理元件
JP7240657B2 (ja) * 2018-05-15 2023-03-16 Tokyo Artisan Intelligence株式会社 ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム
US11443176B2 (en) * 2018-05-17 2022-09-13 International Business Machines Corporation Acceleration of convolutional neural networks on analog arrays
CN109117940B (zh) * 2018-06-19 2020-12-15 腾讯科技(深圳)有限公司 基于卷积神经网络的目标检测方法、装置、终端及存储介质
JP6970827B2 (ja) * 2018-06-25 2021-11-24 オリンパス株式会社 演算処理装置
US10678548B2 (en) * 2018-08-24 2020-06-09 Apple Inc. Pipelined allocation for operand cache
US11868875B1 (en) * 2018-09-10 2024-01-09 Amazon Technologies, Inc. Data selection circuit
US11562229B2 (en) * 2018-11-30 2023-01-24 Macronix International Co., Ltd. Convolution accelerator using in-memory computation
KR20200082613A (ko) * 2018-12-31 2020-07-08 에스케이하이닉스 주식회사 프로세싱 시스템
CN112633462A (zh) * 2019-10-08 2021-04-09 黄朝宗 卷积神经网络的存储器优化的区块式推论方法及其系统
CN111680446B (zh) * 2020-01-11 2022-11-15 哈尔滨理工大学 一种基于改进多粒度级联森林的滚动轴承剩余寿命预测方法
WO2021150952A1 (en) * 2020-01-23 2021-07-29 Spero Devices, Inc. Data flow architecture for processing with memory computation modules
CN113313228B (zh) * 2020-02-26 2022-10-14 杭州知存智能科技有限公司 数据缓存电路和方法
CN112001872B (zh) 2020-08-26 2021-09-14 北京字节跳动网络技术有限公司 信息显示方法、设备及存储介质
JP7451453B2 (ja) 2021-03-15 2024-03-18 株式会社東芝 畳み込み演算処理装置および畳み込み演算処理システム
CN115601223B (zh) * 2022-09-08 2023-08-04 重庆位图信息技术有限公司 一种图像预处理装置、方法和芯片

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5129092A (en) 1987-06-01 1992-07-07 Applied Intelligent Systems,Inc. Linear chain of parallel processors and method of using same
US6948050B1 (en) 1989-11-17 2005-09-20 Texas Instruments Incorporated Single integrated circuit embodying a dual heterogenous processors with separate instruction handling hardware
JPH0769955B2 (ja) * 1993-03-26 1995-07-31 株式会社日立製作所 画像処理プロセッサ
US6116768A (en) 1993-11-30 2000-09-12 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator
US5682208A (en) * 1994-10-31 1997-10-28 Intel Corporation Motion estimation with efficient block matching
US7526630B2 (en) 1999-04-09 2009-04-28 Clearspeed Technology, Plc Parallel data processing apparatus
US20050257026A1 (en) 2004-05-03 2005-11-17 Meeker Woodrow L Bit serial processing element for a SIMD array processor
US20080235490A1 (en) 2004-06-18 2008-09-25 Anthony Mark Jones System for configuring a processor array
US7471844B2 (en) * 2004-12-27 2008-12-30 Intel Corporation Method, apparatus and system for multi-feature programmable tap filter image processing
US8024549B2 (en) 2005-03-04 2011-09-20 Mtekvision Co., Ltd. Two-dimensional processor array of processing elements
US8878860B2 (en) 2006-12-28 2014-11-04 Intel Corporation Accessing memory using multi-tiling
JP5101128B2 (ja) 2007-02-21 2012-12-19 株式会社東芝 メモリ管理システム
JP5522893B2 (ja) * 2007-10-02 2014-06-18 キヤノン株式会社 画像処理装置、画像処理方法及びプログラム
JP5121506B2 (ja) * 2008-02-29 2013-01-16 キヤノン株式会社 画像処理装置、画像処理方法、プログラム及び記憶媒体
EP2294808B1 (en) * 2008-06-20 2013-05-01 Hewlett-Packard Development Company, L.P. Method and system for efficient video processing
JP5376920B2 (ja) * 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
JP5358315B2 (ja) * 2009-06-24 2013-12-04 本田技研工業株式会社 並列計算装置
US10078620B2 (en) * 2011-05-27 2018-09-18 New York University Runtime reconfigurable dataflow processor with multi-port memory access module
US9183614B2 (en) * 2011-09-03 2015-11-10 Mireplica Technology, Llc Processor, system, and method for efficient, high-throughput processing of two-dimensional, interrelated data sets
CN103019656B (zh) * 2012-12-04 2016-04-27 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
JP6127214B2 (ja) * 2013-11-30 2017-05-10 ペキン センスタイム テクノロジー ディベロップメント カンパニー リミテッド 顔画像認識のための方法とシステム
CN104143102B (zh) * 2014-08-05 2017-08-11 南京邮电大学 在线图像数据处理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200092846A (ko) * 2019-01-25 2020-08-04 주식회사 스트라드비젼 객체의 조건에 따라 모드를 전환할 수 있는 CNN 기반으로 군사 목적, 스마트폰 또는 가상 주행에 사용되는 수도(Pseudo)-3D 바운딩 박스를 검출하는 방법 및 이를 이용한 장치

Also Published As

Publication number Publication date
EP3326115A1 (en) 2018-05-30
US20170024632A1 (en) 2017-01-26
JP2018523870A (ja) 2018-08-23
JP6771018B2 (ja) 2020-10-21
CN107851214A (zh) 2018-03-27
US10303976B2 (en) 2019-05-28
WO2017015649A1 (en) 2017-01-26

Similar Documents

Publication Publication Date Title
KR20180034557A (ko) 2차원 어레이 프로세서의 성능 향상
JP7385681B2 (ja) 手姿勢推定
CN111897579B (zh) 图像数据处理方法、装置、计算机设备和存储介质
US11328173B2 (en) Switchable propagation neural network
KR101298393B1 (ko) 그래픽 처리 유닛 상에서 콘볼루션 신경망을 트레이닝하는방법
US20200126192A1 (en) Neural network system with temporal feedback for denoising of rendered sequences
CN110637461B (zh) 计算机视觉系统中的致密光学流处理
Rupnow et al. High level synthesis of stereo matching: Productivity, performance, and software constraints
US8212825B1 (en) System and method for geometry shading
CN110766127B (zh) 神经网络计算专用电路及其相关计算平台与实现方法
CN109815931A (zh) 一种视频物体识别的方法、装置、设备以及存储介质
US11568323B2 (en) Electronic device and control method thereof
Navarro et al. Learning occlusion-aware view synthesis for light fields
Gurcan et al. Heterogeneous CPU–GPU tracking–learning–detection (H-TLD) for real-time object tracking
CN106484532B (zh) 面向sph流体模拟的gpgpu并行计算方法
CN103871086B (zh) 基于fpga构建的分层次栅格转矢量处理方法
Zhang et al. An efficient accelerator based on lightweight deformable 3D-CNN for video super-resolution
Zhu et al. Comparison of dense stereo using CUDA
Lin et al. Stochastic ray tracing using SIMD processor arrays
CN109416743B (zh) 一种用于识别人为动作的三维卷积装置
Ngan et al. Fast and efficient FPGA implementation of connected operators
Hachaj et al. Real time area-based stereo matching algorithm for multimedia video devices
Herout et al. Low-Level image features for Real-Time object detection
CN113392959A (zh) 一种在计算系统中重构架构的方法及计算系统
Chalimbaud et al. Design of an imaging system based on FPGA technology and CMOS imager