KR20190038318A - 콘볼루션 신경망 계산 처리량의 가속화 - Google Patents

콘볼루션 신경망 계산 처리량의 가속화 Download PDF

Info

Publication number
KR20190038318A
KR20190038318A KR1020180105882A KR20180105882A KR20190038318A KR 20190038318 A KR20190038318 A KR 20190038318A KR 1020180105882 A KR1020180105882 A KR 1020180105882A KR 20180105882 A KR20180105882 A KR 20180105882A KR 20190038318 A KR20190038318 A KR 20190038318A
Authority
KR
South Korea
Prior art keywords
data
output
convolution
pooling
component
Prior art date
Application number
KR1020180105882A
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 KR20190038318A publication Critical patent/KR20190038318A/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/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • G06F18/24137Distances to cluster centroïds
    • G06F18/2414Smoothing the distance, e.g. radial basis function networks [RBFN]
    • 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/0625Power saving in storage systems
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/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
    • G06V10/95Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • G06V20/58Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • G06V20/58Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
    • G06V20/582Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads of traffic signs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/191Design or setup of recognition systems or techniques; Extraction of features in feature space; Clustering techniques; Blind source separation
    • G06V30/19173Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/192Recognition using electronic means using simultaneous comparisons or correlations of the image signals with a plurality of references
    • G06V30/194References adjustable by an adaptive method, e.g. learning

Landscapes

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

Abstract

콘볼루션 신경망(CNN) 컴포넌트들은 다양한 속도 향상들을 제공하여 인공 신경망(ANN)의 일부로서 동작하거나 이를 개선하도록 동작할 수 있다. 콘볼루션 컴포넌트는 하나 이상의 이미지로부터 데이터를 추출하고 그 데이터를 하나 이상의 RELU에 제공하는 콘볼루션 연산들을 수행한다. RELU들은 비선형 콘볼루션 출력 데이터를 생성하도록 구성된다. 풀링 컴포넌트는 비선형 콘볼루션 출력 데이터의 서브세트에 대한 풀링 윈도우에 기반하여 파이프라이닝 프로세스를 통해 콘볼루션 연산들과 병렬적으로 풀링 출력들을 생성한다. 완전 접속(FC) 컴포넌트는 풀링 출력들에 기반하여 ANN 출력들을 제공하고 ANN 출력들에 기반하여 하나 이상의 이미지에서 패턴 인식을 가능하게 하는 인공 신경망(ANN)을 형성하도록 구성된다. FC 컴포넌트의 레이어들은 또한 다른 파이프라이닝 프로세스에서 병렬적으로 동작할 수 있다.

Description

콘볼루션 신경망 계산 처리량의 가속화{ACCELERATING CONVOLUTIONAL NEURAL NETWORK COMPUTATION THROUGHPUT}
본 개시내용은 신경망 분야에 관한 것이며, 보다 구체적으로는 콘볼루션 신경망들(convolutional neural networks)의 처리량을 증가시키는 것에 관한 것이다.
기계 학습에서, 콘볼루션 신경망(CNN 또는 ConvNet)은 그 뉴런들 간의 연결 패턴이 동물의 시각 피질의 구성에 의해 영향을 받는 피드-포워드 인공 신경망(feed-forward artificial neural network)의 한 유형이다. 개별 피질 뉴런들은 수용야로 알려진 제한된 공간 영역에서 자극들에 반응한다. 상이한 뉴런들의 수용야들은 부분적으로 겹쳐 시야를 타일링한다. 그 수용야 내에서 자극들에 대한 개별 뉴런의 반응은 콘볼루션 연산(convolution operation)에 의해 수학적으로 근사화될 수 있다. 콘볼루션 망들은 생물학적 프로세스들에 의해 영향을 받았으며 최소량의 전처리를 이용하도록 설계된 멀티레이어 지각들의 변형들이다. 이러한 망들은 이미지 및 비디오 인식, 추천 시스템들 및 자연 언어 처리 분야에서 폭넓게 응용된다. 콘볼루션 신경망은 또한 시프트 불변 또는 공간 불변 인공 신경망(Space Invariant Artificial Neural Network: SIANN)으로 알려져 있을 수 있으며, 이는 그 공유된 가중치 아키텍처 및 변환 불변 특징들에 기반하여 명명된다.
CNN은 다양한 계산 레이어들, 즉 콘볼루션 레이어, RELU(Rectifier Linear Unit) 레이어, 풀링 레이어, 완전 접속(FC) 레이어 및 출력 레이어(들)로 구성될 수 있다. 이러한 CNN 레이어들은 이미지 처리 기술들을 기반으로 하는 인공 지능 프로세스들을 이용하여 결정하도록 동작한다. 칩셋 공급자들은 콘볼루션 레이어에 집중함으로써 CNN 처리량을 성공적으로 가속화하였다. 이들은 더 많은 SIMD MAC(Single Instruction Multiple Data(SIMD) Multiply Accumulate) 유닛들을 추가하였고 또한 그 디지털 신호 프로세서들(DSP들)이 훨씬 더 높은 주파수들에서 동작할 수 있게 하였다. 일부 공급자들은 또한 강력한 분산-수집 직접 메모리 액세스(DMA)를 제공하며, 이는 2차원(2D) 콘볼루션에 유리할 수 있다. 그러나, 지금까지의 솔루션들은 스위칭 전력 소비에서의 증가를 야기할 수 있다.
도 1은 설명되는 다양한 양태들(실시예들)에 따른 콘볼루션 신경망(CNN) 시스템을 나타내는 블록도를 도시한다.
도 2는 설명되는 다양한 양태들에 따른 CNN을 나타내는 블록도를 도시한다.
도 3은 설명되는 다양한 양태들에 따른 콘볼루션 연산들 및 일부 관련된 컴포넌트들의 양태들의 도면을 도시한다.
도 4는 설명되는 다양한 양태들에 따른 풀링 연산들의 양태들의 도면을 도시한다.
도 5는 설명되는 다양한 양태들에 따른 콘볼루션 및 풀링 연산들의 양태들의 다른 도면을 도시한다.
도 6은 설명되는 다양한 양태들에 따른 CNN의 특정 컴포넌트들의 실행의 크로노그래프들을 도시한다.
도 7은 설명되는 다양한 양태들에 따른 CNN의 컴포넌트들에 대한 데이터 흐름 프로세서들을 나타내는 블록도이다.
도 8은 설명되는 다양한 양태들에 따른 제어 흐름 및 데이터 흐름 처리 엔진들 간의 구획을 나타내는 블록도이다.
도 9는 설명되는 다양한 양태들에 따른 CNN의 관찰 유닛 컴포넌트를 나타내는 블록도이다.
도 10은 설명되는 다양한 양태들에 따른 CNN에 대한 코-프로세서 또는 컴포넌트 아키텍처를 나타내는 블록도이다.
도 11은 설명되는 다양한 양태들에 따른 프로세스 흐름을 나타내는 흐름도이다.
도 12는 설명되는 다양한 양태들에 따른 CNN의 완전 접속(FC) 레이어를 나타내는 블록도이다.
도 13은 설명되는 다양한 양태들에 따른 CNN의 완전 접속(FC) 레이어를 나타내는 다른 블록도이다.
도 14는 설명되는 다양한 양태들에 따른 CNN의 완전 접속(FC) 레이어를 나타내는 다른 블록도이다.
도 15는 설명되는 다양한 양태들에 따른 CNN의 관찰 유닛 컴포넌트의 세부사항들을 나타내는 블록도이다.
도 16은 설명되는 다양한 양태들에 따른 CNN에 대한 코-프로세서 또는 컴포넌트 아키텍처를 나타내는 블록도이다.
도 17은 설명되는 다양한 양태들에 따른 다른 프로세스 흐름을 나타내는 흐름도이다.
도 18은 설명되는 다양한 양태들에 따른 프로세스 흐름을 나타내는 흐름도이다.
본 개시내용은 이제 첨부된 도면들을 참조하여 설명될 것이며, 유사한 참조 번호들은 전체에 걸쳐서 유사한 요소들을 지칭하는데 이용되며, 예시된 구조들 및 디바이스들은 반드시 축척대로 도시되지는 않는다. 본 명세서에서 사용되는 용어들 "컴포넌트", "시스템", "인터페이스" 등은 컴퓨터 관련 엔티티, 하드웨어, 소프트웨어(예를 들어, 실행시), 및/또는 펌웨어를 지칭하는 것으로 의도된다. 예를 들어, 컴포넌트는 프로세서, 프로세서 상에서 실행되는 프로세스, 제어기, 객체, 실행가능한 프로그램, 저장 디바이스, 및/또는 처리 디바이스를 갖는 컴퓨터일 수 있다. 예로서, 서버 상에서 실행되는 애플리케이션 및 서버가 또한 컴포넌트일 수 있다. 하나 이상의 컴포넌트는 프로세스 내에 상주할 수 있고, 컴포넌트는 하나의 컴퓨터 상에서 로컬화될 수 있고/있거나 둘 이상의 컴퓨터들 사이에 분산될 수 있다. 요소들의 세트 또는 다른 컴포넌트들의 세트가 본 명세서에서 설명될 수 있고, 용어 "세트"는 "하나 이상"으로 해석될 수 있다.
또한, 이들 컴포넌트들은 예를 들어 모듈 등으로 다양한 데이터 구조들이 저장된 다양한 컴퓨터 판독가능한 저장 매체로부터 실행할 수 있다. 컴포넌트들은 예를 들어 하나 이상의 데이터 패킷(예를 들어, 로컬 시스템, 분산 시스템에서 및/또는 망, 예컨대 인터넷, 로컬 영역망, 광역망, 또는 다른 시스템들을 갖는 유사한 망을 거쳐 다른 컴포넌트와 신호를 통해 상호작용하는 하나의 컴포넌트로부터의 데이터)을 갖는 신호에 따라 로컬 및/또는 원격 프로세스들을 통해 통신할 수 있다.
다른 예로서, 컴포넌트는 하나 이상의 프로세서에 의해 실행되는 소프트웨어 애플리케이션 또는 펌웨어 애플리케이션에 의해 전기 또는 전자 회로가 동작될 수 있는, 전기 또는 전자 회로에 의해 동작되는 기계적 부품들에 의해 제공되는 특정 기능을 갖는 장치일 수 있다. 하나 이상의 프로세서는 장치의 내부 또는 외부에 있을 수 있으며 소프트웨어 또는 펌웨어 애플리케이션의 적어도 일부를 실행할 수 있다. 또 다른 예로서, 컴포넌트는 기계적 부품들 없이 전자 컴포넌트들을 통해 특정 기능을 제공하는 장치일 수 있으며, 전자 컴포넌트들은 전자 컴포넌트들의 기능을 적어도 부분적으로 제공하는 소프트웨어 및/또는 펌웨어를 실행하기 위해 하나 이상의 프로세서를 그 내부에 포함할 수 있다.
단어 '예시적인'의 사용은 구체적인 방식으로 개념들을 제시하려는 것이다. 본 출원에서 사용되는 용어 "또는"은 배타적인 "또는"이라기 보다는 포괄적인 "또는"을 의미하는 것으로 의도된다. 즉, 달리 특정되지 않거나, 문맥으로부터 분명하지 않다면, "X는 A 또는 B를 이용하는 것"은 자연적인 포괄적 치환들 중 임의의 것을 의미하는 것으로 의도된다. 즉, X가 A를 이용하거나, X가 B를 이용하거나 또는 X가 A와 B 둘 다를 이용하면, "X가 A 또는 B를 이용하는 것"은 이러한 경우들 중 임의의 것 하에서 만족된다. 또한, 본 출원 및 첨부된 청구항들에서 사용되는 "하나"는, 달리 특정되어 있거나 또는 문맥상 단수 형태로 유도된 것임이 명백하지 않다면, 일반적으로 "하나 이상"을 의미하는 것으로 해석되어야 한다. 또한, 상세한 설명 및 청구항들 중 어느 하나에서 용어들 "포함하는", "포함한다", "갖는", "갖는다", "함께" 또는 그 변형예들이 사용되는 경우, 이러한 용어들은 용어 "포함하는"과 유사한 방식으로 포괄적인 것으로 의도된다.
CNN들의 전술한 결점들을 고려하여, 다양한 양태들/실시예들은 다양한 CNN 계산 레이어들에 걸친 총 계산 이득의 증가를 가능하게 한다. 본 개시내용의 솔루션들로서 작용하는 양태들/실시예들은 전력 소비를 감소시키고 처리량을 증가시키며, 비용은 증가시키지 않으면서 CNN 시스템들 내의 비용은 낮춘다. 본 명세서에서 설명되는 실시예들 또는 양태들은 CPU 주파수를 증가시키지 않고 추가 CPU들의 비용을 추가하지 않으며 풀링 및 FC 레이어들의 실행을 가속화한다. 따라서, 개시된 방법들 및 시스템들은 전력 소비를 증가시키지 않으면서 효율을 추가로 증가시킬 수 있고, 처리 속도들을 추가로 증가시킬 수 있다. 예를 들어, 콘볼루션 및 풀링 레이어들의 실행은 서로 파이프라이닝될 수 있으며, 이는 데이터 흐름 프로세서들이 이용가능한 즉시 콘볼루션/RELU 레이어 출력들의 처리 섹터들을 시작할 수 있게 함으로써 상당한 속도 향상 이득들을 가져오게 한다.
추가적으로, FC 레이어 실행은 또한 그 내부에 신경망을 형성하는 컴포넌트들의 FC 레이어들 또는 컴포넌트들에 대해 파이프라이닝될 수 있다. 이는 콘볼루션/RELU 레이어들과 풀링 레이어 간의 파이프라인 처리와 함께 추가적인 속도 향상 이득들에 또한 기여한다.
실행 파이프라이닝은 데이터 흐름 처리 동작 원리들을 이용함으로써 달성될 수 있다. 예를 들어, 잘 훈련된 CNN은 센서 데이터를 특정 카테고리들/클래스들로 신뢰성 있게 분류하여 운전자 보조 시스템들이 자동차 주행 또는 다른 CNN 시스템들의 안전성에 관련되는, 엔진 속도의 감소, 제동, 정지 또는 다른 유사한 동작들과 같은 중요한 결정들을 내릴 수 있게 한다.
추가적으로, 2차원(2D) 콘볼루션은, 예를 들어 2차원 이미지에 걸쳐 한 번에 한 픽셀씩 필터 커널을 슬라이딩시킴으로써 수행될 수 있다. 다른 예에서, 콘볼루션 슬라이딩 윈도우(예를 들어, 3 × 3 콘볼루션 슬라이딩 윈도우 또는 다른 크기의 n × n 콘볼루션 슬라이딩 윈도우, n은 양의 정수)는 검색된 센서 데이터로부터 수신된 이미지의 콘볼루션을 수행하도록 선택될 수 있으며, 그 다음에 내부 내적 연산으로서 필터 커널과 곱해질 수 있다.
윈도우 데이터의 각각의 (서브)세트는 예를 들어 SIMD 레지스터에 먼저 로딩될 수 있다. 콘볼루션 윈도우 데이터 및 필터 커널 모두는 메모리 또는 버퍼에 저장된 콘볼루션 출력들을 초래하는 여러 사이클들에 걸쳐 MAC 연산들을 수행하는 SIMD MAC 유닛에 제공될 수 있다. 동일한 특징(또는 데이터의 계층구조)으로 분석하는 대응하는 필터 커널 또는 필터 커널들에 의해 전체 이미지 또는 이미지 또는 처리를 위한 전체 이미지의 주어진 섹터에 대한 데이터의 세트들이 완료되지 않았더라도, 데이터에 대응하는 픽셀들의 서브세트들을 스캔하고 계산하는데 이용될 수 있는, 필터 커널이 훈련되어 분석하는 특정 필터 커널 또는 특징에 대한 데이터 자체의 서브세트 또는 윈도우에 의해 출력되는 값들에 대해 풀링이 즉시 시작될 수 있다.
또한, 완전 접속(FC) 레이어의 각각의 뉴런의 네트 함수(NF) 및 출력 함수(OF)는 소프트웨어로 순차적으로 실행될 수 있다. NF의 인스턴스는 OF에 의해 후속된다. 본 개시내용의 추가 실시예들에서, OF의 실행은 그 NF가 출력을 생성하자마자 트리거링될 수 있다. OF가 실행되는 동안, 다른 뉴런 컴포넌트의 NF는 파이프라인 처리를 통해 병렬적으로 실행될 수 있다.
프로세서 컴포넌트의 관찰 유닛은 필요한 데이터 흐름 처리를 지원하도록 활용되고 확장될 수 있다. 명령어들이 존재할 수 있도록 새로운 테이블 세트를 동적으로 생성할 수 있다. FC 레이어의 뉴런들의 NF 컴포넌트들에 의해 출력되는 데이터의 메모리 어드레스들은 테이블의 제1 열로부터 프로그래밍될 수 있는 반면에, 대응하는 OF 출력 데이터의 어드레스들은 테이블의 제2 열에 채워질 수 있다. 활성화 함수는 실행될 수 있으며 테이블의 제3 열에 프로그래밍될 수 있다. 소프트웨어가 NF를 실행하자마자, 출력은 제1 열에 지정된 대응하는 어드레스에 기입되고, 트랜잭션 매치/모니터링 컴포넌트/유닛은 OF 코-프로세서를 트리거링하여 제3 열에 지정된 출력 함수를 실행하고 제2 열에 지정된 어드레스에서 출력을 저장할 수 있다. 이와 같이, FC 레이어 파이프라이닝으로부터의 추가적인 속도 향상 또는 효율 이득은 콘볼루션 레이어/RELU 레이어로 풀링 레이어의 파이프라이닝을 보완할 수 있으며, 이는 추가적인 속도 향상으로서 수행될 수 있다. 따라서, FC 레이어에서 뉴런의 네트 함수의 실행의 완료는 다음 뉴런에서 활성화 함수의 실행이 추가적인 속도 향상 및 추가적인 파이프라이닝 연산으로서 CNN 시스템 내의 다른 속도 향상을 위해 수행되는 동안 결정될 수 있다. 본 개시내용의 추가적인 양태들 및 세부사항들은 도면들을 참조하여 이하에서 추가로 설명된다.
도 1은 이미지들을 특정 카테고리들/클래스들로 신뢰성 있게 분류하여 운전자 보조 시스템들이 자동차, 다른 차량 또는 디바이스와 관련된 엔진 속도의 감소, 제동, 정지 또는 다른 기능들과 같은 중요한 결정들을 내릴 수 있게 하는 CNN 시스템(100)의 예를 도시한다. 예를 들어, 자동화된 네비게이션 시스템(100)은 다양한 컴포넌트들을 갖는 복수의 상이한 계산/처리 레이어들을 포함하는 CNN(104)에 입력들로서 데이터 세트들을 제공하는 하나 이상의 센서(102)를 포함할 수 있다. 그 다음에, CNN(104)은 임의의 하나의 검출기(106-112)에 대응하는 데이터의 카테고리(보행자 특징들, 자동차 특징들, 자전거 특징들, 교통 표지 특징들 등)와 관련하여 조건이 존재하는지 여부를 검출하는 하나 이상의 ADAS 검출기(106-12)(예를 들어, 보행자 검출기(106), 자동차 검출기(108), 자전거 또는 오토바이 검출기(110), 교통 표지 검출기(112) 또는 다른 검출기)에 출력들을 제공한다. 주어진 검출기가 CNN의 출력 데이터로부터 조건이 존재한다고 결정하는지 여부에 기반하여, 검출기(106-112)는 충돌 경고(116), 정지/감속하기 위한 제동 기능, 출발/정지하기 위한 어떤 것 또는 예를 들어 자동화된 차량 네비게이션 또는 다른 시스템/디바이스 기능의 일부로서 조건에 응답하기 위한 기능과 연관된 다른 애플리케이션 기능과 같은 애플리케이션에 시그널링할 수 있다.
일 예에서, 센서(102)는 이미지 캡처링 디바이스, 예컨대 카메라, 레이더, 라이더(light detection and ranging: LIDAR), 다른 이미지 스캐닝 디바이스들, 또는 이미지 캡처링 디바이스로부터의 신호들 상에서 수신되는 것들과 같은 이미지들로부터 데이터를 검출 및 처리하기 위한 다른 센서들을 포함할 수 있다. 그 다음에, 센서들(102)로부터의 데이터 세트들은 CNN(104)에 제공되어 신호들을 취한 후 그 신호들이 무엇을 나타내고 있는지를 알아 내려고 시도할 수 있다. 예를 들어, 전방 카메라 센서가 장착되어 고속도로 상에서 주행하는 자동차는 임의의 교통 표지, 가로등 기둥이 있는 경우에 그 화상들/이미지들을 회신할 수 있거나, 또는 앞서 주행하는 자동차가 있는 경우에 가능하게는 그 자동차의 화상들이 또한 센서 데이터의 일부로서 회신될 것이다.
일반적으로, 운전자가 뒷좌석에 앉는 자율 주행 시스템들에서, 감속, 브레이크 밟기, 경적 울리기 또는 다른 동작들과 같이 사람이 취할 많은 결정들은 기본적으로 온 보드 특수 컴퓨터 처리 컴포넌트들과 함께 자동화된 네비게이션/조종 시스템에 의해 수행되며, 다음에 무엇을 할 것인지를 결정할 수 있도록 하기 위해, 그 앞에 무엇이 놓여 있는지를 이해하는 것이 중요한다. 이와 같이, 시스템 및 CNN(104)의 주된 목적은 이들 화상들/이미지들에 무엇이 포함되어 있는지를 결정한 다음, 이들 화상들에서 발견되는 것에 기반하여, 추가 결정들을 구현하는 것이다.
예를 들어, 하나 이상의 화상/이미지의 분석이, 사람이 약 100미터 떨어진 도로의 중간에 존재하는 이미지들에서의 조건/패턴을 나타내는 경우, 온 보드 컴퓨터는 분명히 감속하고 가능하게는 그에 따라 차량이 정지되게 한다. 대안적으로, 이미지들 내의 조건에 기반하여 가속을 결정하면 단순히 차량에 지시하여 차선을 바꾼 후 가속하게 할 것이다. 이와 같이, 이러한 결정들 또는 다른 결정들은 시스템에 의해 회신되는 특징들의 패턴들로서 이미지들 내에서 분석된 데이터의 본질로부터 유도될 수 있으며, 그 다음에 이미지들에 존재하거나 존재하지 않는 임의의 수의 주어진 조건들에 대해 분석될 수 있다. 이 시스템은 다양한 상황들 간의 조건들을 인식하기 위해 가능한 변형들을 검출하도록 학습하면서 필터들 또는 커널 필터들의 초기 훈련을 통해 견고해 질 수 있다.
CNN(104)은 주어진 레이어의 계산 결과들을 다음 레이어에게 제공하기 위한 다양한 컴포넌트들을 포함하여, CNN 계산 레이어들로서 서로 접속되고 종속될 수 있는 일련의 상이한 계산들을 포함할 수 있다. 이들 레이어들은 상이한 음영을 갖는 CNN(104) 블록에서의 다양한 레이어들로서 도 1에서 볼 수 있다. 계산 파이프의 끝에는 이미지(들) 또는 이미지(들)의 섹터 서브세트 내의 다양한 가능한 조건들 중에서 상이한 확률들을 포함할 수 있는 출력들(예를 들어, Pp, Pcar, Pcycle, Pts)이 나타난다. 이러한 확률들을 합산함으로써, 획득된 값들은 예를 들어 1과 같을 수 있다. 그 다음에, 가장 큰 확률을 갖는 객체 유형 또는 카테고리/클래스 유형은 이미지 또는 이미지 섹터가 대응하는 유형일 수 있고, 하나 이상의 검출기(106-112)에 의해 그와 같이 검출될 수 있으며, 애플리케이션들(114 및 116) 중 하나 이상에 의해 작용될 수 있다.
예를 들어, 이미지가 보행자를 포함하는 경우, 보행자 ADAS 검출기(106)는 제동 시스템에 신호를 전송하여 브레이크를 밟도록 구성될 수 있다. 예로서 보행자뿐만 아니라 하나 이상의 검출기(106-112)에 의해 임의의 수의 아이템들이 이미지 내에서 검출될 수 있다. 또한, 콘볼루션 신경망 시스템에 의해 검출되는 객체/카테고리 유형의 패턴에 응답하여, 컴포넌트가 하나 이상의 미리 정의된 기준에 기반하여 추가 결정들을 하도록 트리거링하는 신호가 제공될 수 있다. 예를 들어, 보행자 검출기는 보행자가 검출되고 있음을 나타내는 이미지 메시지를 충돌 경고 컴포넌트/시스템에 전송할 수 있다. 충돌 경고 시스템은 즉각적으로 인지하고, 가능하게는 브레이크를 밟아 감속하고, 우측 또는 좌측 방향으로 움직이면서 차량을 감속하거나, 이미지에서의 보행자의 패턴 인식에 기반하여 다른 결정을 함으로써, 치명적인 충돌을 피할 수 있다. 자동차 검출, 자전거, 교통 표지, 또는 동작을 트리거링하는 임의의 다른 외부 패턴이 검출되는 것과 같이, 센서 데이터로부터의 이미지들 내에서 다른 패턴들 또는 조건들이 검출되는 유사한 예가 생각될 수 있다.
도 2를 참조하면 특히 CNN(104)을 구성하는 다양한 계산 레이어들을 더 상세히 나타내는 추가 예이다. CNN(104)은, 콘볼루션 레이어(202), RELU 레이어(204), 풀링 레이어(206), 완전 접속(FC) 레이어(208)(인공 신경망 레이어) 및 출력 레이어(210)를 포함하는 다수의 계산 레이어들을 포함할 수 있다. 5개의 계산 레이어가 도시되었지만, 관련 기술분야의 통상의 기술자가 알 수 있는 바와 같이, 보다 많거나 적은 계산 레이어가 구상될 수 있다. 본 명세서에서 사용되는 바와 같은 레이어 또는 계산 레이어는 수학적 또는 다른 기능적 수단에 의해 유사한 기능으로 동작하여 수신된 입력들을 처리함으로써 콘볼루션 신경망 시스템 내에서의 추가 처리를 위해 하나 이상의 다른 컴포넌트와 함께 다음 레이어를 위한 출력들을 생성/유도하는 하나 이상의 컴포넌트를 지칭할 수 있다.
콘볼루션 레이어(202)는 예를 들어, 데이터 세트들로서 이미지(232)의 데이터 슬라이스들을 추출하는 하나 이상의 콘볼루션 컴포넌트(212)를 포함할 수 있다. 콘볼루션 레이어(202)는 또한 RELU 레이어(204)와 조합되어 하나의 계산 레이어(230) 또는 일반적으로 콘볼루션 레이어(230)로 간주되거나 지칭될 수 있다. 특히, 콘볼루션 연산들은 콘볼루션 컴포넌트(212)에 의해 수행되어 카메라 데이터, 레이더 데이터, 다른 센서 데이터 등과 같이 그 입력 단자들로부터의 입력들로서 수신되는 이미지들로부터 특징들을 추출할 수 있다. 예를 들어, 사람의 얼굴 또는 다른 특징은 콘볼루션 컴포넌트(212)에 의해 출력된 결과들로서 콘볼루션 연산들에 의해 생성된 콘볼루션 데이터 중에서 검출될 수 있다. 콘볼루션 프로세스들은 예를 들어 특정 특징에 대한 이미지(232)의 섹션들을 따라 이미지 데이터의 세트들/세그먼트들/서브세트들/부분들에 대해 수행될 수 있다. 처음에 제1 패스에서, 콘볼루션 컴포넌트(212)에 의해 생성된 콘볼루션 연산들은 저레벨 특징들을 추출할 수 있다. 이는 특정한 크기의 슬라이딩 윈도우(예를 들어, 콘볼루션 연산을 위한 윈도우 크기 n × n(n은 양의 정수임) 또는 n × p(n과 p는 또한 상이한 양의 정수들임))로 수행될 수 있으며, 슬라이딩 콘볼루션은 이미지(232) 전체에 걸쳐 증분 방식으로 이미지(232)로부터의 중첩 데이터를 이용하여 수행된다. 그 다음에, 후속하는 패스들 또는 반복들에서, 동일한 컴포넌트 또는 상이한 컴포넌트들 중 어느 하나에 의해 더 낮은 레벨 특징 추출들에 대해 수행된 이전 콘볼루션 연산들의 결과들을 조합함으로써 추가적인 고레벨 특징들이 추출될 수 있다. 그 다음에, 반복들은 이미지의 하나 이상의 상이한 반복 또는 패스로 데이터의 상이한 계층구조 레벨들을 생성하기 위해 계속될 수 있다.
예를 들어, 사람의 얼굴은 윤곽들, 경사진 선들, 곡선들 등을 가질 수 있다. 한 세트의 콘볼루션 데이터에서, 저레벨 특징들(선들, 경사들, 곡선들 등)이 추출되어, 예를 들어 이미지에서 타원형 모양이 있는 곳, 귀의 가장자리들과 같이 보이는 특징들, 또는 예를 들어 콘볼루션 신경망을 포함하는 컴포넌트들의 다른 시스템 또는 자동차와의 충돌 경로 상의 사람과 같은, 계층구조 데이터 세트들의 조합에 기반하여 이미지(232) 내에 특정 패턴 또는 조건들이 존재하는지 여부를 결정하는 것의 일부일 수 있는 특정 특징/패턴에 대한 기본 구조 데이터를 구성하는 다른 특징들을 결정할 수 있다.
이러한 콘볼루션 연산들은 특징 맵에서의 결과일 수 있다. 특징 맵은 센서로부터의 이미지(232) 또는 연산들의 이전 레이어의 출력 데이터 중 어느 하나에 적용된 하나의 콘볼루션 컴포넌트(212)의 출력으로 고려될 수 있다. 예를 들어, 필터 인스턴스는 이전 레이어의 출력에서 그 수용야에 걸쳐 드로잉되며 한 번에 하나 이상의 픽셀씩 이동한다. 수용야는 필터(필터 커널)에 접속된 이미지의 작은 영역/서브세트 영역으로 지칭될 수 있다. 예를 들어, 필터는 특징으로서 삼각형의 존재에 대해 분석할 수 있다. 완전한 이미지에 걸쳐 슬라이딩하여 삼각형(들)의 존재를 찾는 하나의 필터 대신에, 다양한 필터들이 예를 들어 삼각형(들) 또는 다른 특정 특징에 대한 이미지의 다양한 영역들을 분석/관리할 수 있다.
그 수용야 내의 필터의 각각의 위치에서의 콘볼루션은 그 위치에서 커널에 의해 표현되는 특징의 존재의 측정을 낳을 수 있다. 모든 콘볼루션 위치들에서 특징의 존재를 측정하는 것은 필터 커널의 특징 맵이 될 수 있다. 예를 들어, 콘볼루션 필터를 한 번에 한 픽셀씩 슬라이딩하면, 새로운 콘볼루션 필드가 이전 콘볼루션 필드와 (필드 폭 - 1) 입력 값들만큼 중첩할 수 있다. 예를 들어, 32 × 32 이미지에서, 스트라이드 폭(stride width)이 1 픽셀인 입력 이미지 데이터에 걸쳐 5 × 5 콘볼루션 커널을 드래깅하면 콘볼루션 필터당 크기 28 × 28(32-5+1 × 32-5+1) 출력의 특징 맵이 생성된다. 용어들 "콘볼루션 커널", "콘볼루션 필터 커널", "필터", "커널" 및 "필터 커널"은 본 명세서에서 상호교환적으로 사용될 수 있으며, 추가적인 세부사항들은 아래에 제공된다(예를 들어, 도 3 참조). 또한, 본 명세서에서 사용되는 스트라이드 폭 또는 길이는 슬라이딩 윈도우가 얼마나 많이 시프트하는지 또는 필터가 입력 데이터의 볼륨 주위에 콘볼빙하는 방법을 정의할 수 있다.
가장 낮은 레벨의 정보를 저레벨 특징들로서 추출한 후에, 출력들은 2개의 가장자리/선을 조합하고 예를 들어 검출기(106-112)에서 그 조합이 코에 대응하는지 여부 또는 눈에 대응하는지를 분석하는 것과 같이 콘볼루션 정보 또는 콘볼루션 데이터 세트들로서 콘볼루션 레이어(202)의 콘볼루션 컴포넌트들(212)에 의해 조합될 수 있다. 이러한 저레벨 특징들(예를 들어, 가장자리들, 선들 등)의 조합들은 또한 콘볼루션 데이터 세트들의 계층구조에서 예를 들어 사람의 얼굴, 코, 귀들, 눈들, 이마, 안면 머리카락 등에 대해 이미지(232)에서의 조건과 관련된 약간의 표준 특징들(예를 들어, 중간 계층구조 레벨)에 대응하는 데이터 세트들을 형성할 수 있으며, 각각의 세트는 추출된 데이터 특징들의 더 큰 복잡성을 포함한다. 또한, 데이터 세트들은 이미지들의 특징 맵을 따라 진행하도록 조합될 수 있고, 시스템이 고레벨 특징들을 식별할 수 있을 때까지 계산 레이어들을 따라 추가로 처리할 수 있으며, 예를 들어 이미지들 내에서 객체/고레벨 특징으로서 완전한 사람의 얼굴을 결정할 수 있다.
이러한 방식으로, 저레벨 특징들(예를 들어, 곡선, 가장자리, 선, 경사 등)은 데이터 세트 계층구조의 하나의 레벨일 수 있고, 콘볼루션 데이터 세트들(예를 들어, 모양, 패턴 조합 등)의 다른 레벨은 다른 계층구조 레벨을 형성할 수 있는 반면에, 임의의 수의 콘볼루션 데이터 세트들은 얼굴, 사람, 동물, 자전거, 오토바이, 표지, 표지의 세부사항들, 또는 임의의 수의 조건들(예를 들어, 충돌 경로에 있는 사람, 충돌 경로로 횡단하는 동물, 또는 하나 이상의 이미지에서 발생하는 다른 상황)을 포함하는, 더 높은 레벨들의 패턴들을 결정하기 위해 데이터 세트들의 계층구조에서 콘볼루션 연산들로부터 생성될 수 있다.
콘볼루션 연산들은 선형일 수 있기 때문에, 콘볼루션 레이어(202)는 전형적으로 고정 경로를 따르지 않고 일반적으로 랜덤인 실제 행동으로 고려될 수 있는 것을 완전히 항상 반영하지는 않는다. 따라서, 보다 랜덤한 콘볼루션 출력을 생성하기 위해, RELU 레이어(204)는 CNN 시스템/컴포넌트(104)로 구성될 수 있고, 조합된 콘볼루션 레이어(230)의 일부로서 추가로 조합될 수 있다. 콘볼루션 컴포넌트들(212)은 RELU 레이어의 RELU 컴포넌트들(214)에 접속될 수 있다. RELU 컴포넌트들(214)은 콘볼루션 컴포넌트들(212)로부터 RELU 입력들로 출력된 콘볼루션 데이터로부터 선형성을 제거함으로써 비선형 콘볼루션 출력 데이터 세트들을 생성하도록 구성될 수 있다. 예를 들어, RELU 컴포넌트들(214)은 때때로 콘볼루션의 출력에 포함될 수 있는 음의 값들에 대한 입력들을 모니터링할 수 있다. 그 다음에, 이들 입력들로서 수신된 콘볼루션 데이터 세트들에 기반하여, 비선형 콘볼루션 출력 데이터와 유사한 계층구조의 데이터 세트들을 생성한다. 임의의 음의 값들을 검출하는 것에 응답하여, RELU 컴포넌트들(214)은 이들을 0 또는 양의 값 중 어느 하나로 대체한다. 이러한 방식으로, 콘볼루션 레이어(202)의 선형 출력은 비선형 콘볼루션 출력 데이터로서 적어도 약간 또는 아주 조금 비선형인 데이터로 변환될 수 있다.
특징들이 추출되고 선형성이 제거되면, 풀링 컴포넌트들(216)에서의 풀링 레이어(206)는 비선형 콘볼루션 출력 데이터를 수신하여 이를 스케일 불변으로 만든다. 따라서, 분석되는 이미지의 위치, 조명 및 불순물에 상관 없이, CNN 시스템은 동일한 화상/이미지의 변형을 검출할 수 있도록 지능적이고 견고할 수 있다.
따라서, 콘볼루션 레이어들(202)은 특징 추출을 생성할 수 있다. RELU 레이어들(204)은 이들을 실제 데이터와 일치시키기 위해 데이터로부터 선형성을 제거한다. 풀링 레이어들(206)은 볼륨 감소를 담당하고 망 이미지 스케일 불변으로 만드며, 이는 스케일 불변 특징 변환(SIFT) 및 지향성 그레디언트들의 히스토그램(HoG)과 같은 다른 이미지 처리 기술들과 유사하거나 비교될 수 있다.
풀링 컴포넌트들(216)은 콘볼루션 조합된 레이어(230)와 병렬적으로 파이프라이닝 프로세스를 통해 풀링 출력들을 생성하도록 구성된다. 일 실시예에서, 풀링 컴포넌트들(216)은 스케일링된 불변량들에 대한 처리를 개시하고, 콘볼루션 데이터 또는 비선형 콘볼루션 출력 데이터의 제1 세트/서브세트에 대해 통계 연산들을 수행할 수 있다. 이와 같이, 2개의 상이한 계산 레이어는 서로의 기능들과 병렬적으로 파이프라이닝되고 동작될 수 있거나, 또는 슬라이딩 콘볼루션 윈도우가 예를 들어 이미지(232)에 걸쳐 콘볼루션 데이터 전체의 부분 또는 일부를 출력할 때 동시에 처리할 수 있다. 콘볼루션 레이어(230), 콘볼루션 컴포넌트들(212) 또는 RELU 컴포넌트들(214)의 콘볼루션/RELU 연산들은 풀링 컴포넌트들(216)과의 파이프라이닝된 프로세스들로서 동작한다. 이들 풀링 컴포넌트들(216)은 비선형 콘볼루션 출력 데이터의 서브세트에 대한 풀링 윈도우에 기반하여 비선형 콘볼루션 출력 데이터에 대해 통계 연산들을 수행한다.
예를 들어, 풀링 연산들은 RELU 레이어(204)에 의해 제공된 입력 데이터(비선형 콘볼루션 출력 데이터)의 크기를 감소시킨다. 데이터의 각각의 서브세트가 수신될 때, 비선형 콘볼루션 출력 데이터의 단일 세트가 처리될 수 있고, 풀링 레이어(206)에서 크기가 감소된 후, 완전 접속(FC) 레이어(208)에서 분류되고, 이하에서 추가로 설명되는 분류기(210)에 의해 사람이 이해할 수 있는 형태로 최종적으로 전환될 수 있다.
인공 신경망(ANN)의 FC 망 레이어(208)는 뉴런들을 갖는 사람의 뇌의 기능을 나타낸다. 예를 들어, 상이한 값들(예를 들어, 1, 5, 60,000 및 0.25 또는 다른 값 세트들)이 ANN의 입력들에 나타나서 이미지 데이터에 있는 패턴 또는 조건의 결정(예를 들어, 남자, 여자, 사람 등)을 가능하게 할 수 있다. FC 컴포넌트들이 상이한 숫자 세트를 볼 경우, 시스템 출력은 이것이 가능하게는 다른 것이라고 검출될 것이다.
풀링 레이어(206)의 풀링 컴포넌트들(216)의 출력은 화상/이미지가 포함하고 있는 가장 가능성 있는 후보를 추가로 결정하는, FC 레이어(208)로도 알려진 인공 신경망에 공급될 수 있다. 이와 같이, FC 컴포넌트들의 출력들로서의 이들 숫자들은 그 다음에 출력 레이어(210)로 알려진 것에 의해 확률들로 전환될 수 있고, 보행자 검출기(106) 또는 교통 표지 검출기(112)와 같은 다양한 검출기들(예를 들어, 도 1의 106-112)에 공급될 수 있으며, 필요한 동작들은 예를 들어 애플리케이션들(114 또는 116)에서 응답으로 취해진다.
FC 컴포넌트들(218)은 각각의 제1 FC 레이어(FC1) 및 제2(후속) FC 레이어(FC2)에 따라 네트 함수들(222, 226) 및 출력 함수들(224, 228)에 의해 형성된 뉴런 구조를 갖는 ANN을 형성한다. 각각의 뉴런(N1-Nx 및 N4-Ny)의 출력들은 프로그램 카운터 및 외부 명령어들을 인출하는 대신에 입력 데이터(예를 들어, I1, I2) 및 입력 가중치들(예를 들어, w1, w2)의 이용가능성에 의존할 수 있다. 이는 각각의 FC 컴포넌트(218)가 메모리로부터 명령어들을 인출하지 않고 동작하지만, 대신에 지정 기능을 수행함으로써 입력 데이터를 즉시/순간적으로 처리하기 위해 하나 이상의 입력(예를 들어, I1, I2)에서 입력 데이터의 이용가능성에 응답하여 처리하는 하나 이상의 데이터 흐름 프로세서를 포함할 수 있음을 의미한다. 입력들(예를 들어, I1, I2)은 FC2 컴포넌트 입력들(예를 들어, I1, I2)에서 이용가능한 데이터의 풀링 컴포넌트들(216) 또는 선행하는 FC 컴포넌트/레이어(예를 들어, FC1, N1-Nx)의 풀링 출력들에 의해 제공될 수 있다.
데이터 흐름 처리는 예를 들어 입력에서만 특정 데이터의 이용가능성에 기반하여 데이터를 처리하기 보다는 데이터를 처리하기 위해 프로그램 카운터를 이용하여 메모리로부터 명령어들을 인출하는 폰 노이만 제어 흐름 처리/폰 노이만 기계들/프로세서들과 대조되거나 상이할 수 있다. FC 컴포넌트들(218)은 또한 각각 레이어(예를 들어, FC1) 내의 각각의 FC 컴포넌트에서 동일한 복수의 입력들(예를 들어, I1, I2)을 개별적으로 수신할 수 있다. 예를 들어, N1-Nx 모두는 이러한 입력들(예를 들어, I1, I2)이 동일할 수 있는 각각의 풀링 컴포넌트(216)로부터 입력을 수신한다. 추가적으로, FC 컴포넌트들의 각각의 제2(또는 후속) 레이어(예를 들어, FC2, N4-Ny)는 각각 마찬가지로 컴포넌트들의 선행하는 레이어(예를 들어, FC1, N1-Nx, 선행하는 계산 레이어 또는 다른 계산 레이어)로부터 동일한 입력들(예를 들어, I1, I2)을 또한 수신할 수 있으며, 예를 들어 ANN을 형성하는 계산 컴포넌트들의 하나 이상의 상이한 레이어일 수 있는 다양한 FC 레이어들(208)(예를 들어, FC1, FC2 등)에 걸쳐 그러하다.
또한, FC 레이어(208)의 뉴런들 또는 FC 컴포넌트들(218)의 각각의 네트 함수는 입력들의 내적 및 (각각의 입력에 팩터링된 가중치로서) 가중치들에 의한 가중과 같은 수학적 연산을 포함할 수 있다. 입력들(예를 들어, I1, I2)은 동일할 수 있고, 가중치들(예를 들어, w1, w2)은 변한다. 또한, 입력들(I1, I2)의 내적들과 각각의 입력(I1, I2)의 가중치들(예를 들어, w1, w2)의 합이 또한 각각의 FC 컴포넌트에서 수행될 수 있다. 상이한 FC 컴포넌트들(218)은 상이한 가중치들(예를 들어, w1, w2)을 가질 수 있거나, 또는 대안적으로 상이한 입력들(I1, I2)은 동일한 그룹/세트/복수의 입력들(예를 들어, I1, I2)을 수신하는 각각의 FC 컴포넌트(218)에 대해 다르게 상이한 가중치들(예를 들어, w1, w2)을 가질 수 있다. 대안적으로, 이러한 가중치들은 서로 유사하거나 상이할 수 있으며, 적어도 일부 FC 컴포넌트들(218)은 입력들에서 동일한 가중치들(예를 들어, w1, w2)을 가질 수 있고, 다른 FC 컴포넌트들(218)은 처리시 대응하는 입력을 팩터링/고려하기 위한 임의의 양 또는 가중치를 부여하는 상이한 값들을 갖는 상이한 가중치들(예를 들어, w1, w2)을 서로 갖는다.
또한, 각각의 FC 컴포넌트(218)의 출력 뉴런(224, 228)은 또한 네트 함수(222, 226)의 결과들에 대해 연산하는 수학적 함수를 포함할 수 있다. 예를 들어, 출력 함수는 삼각 함수(예를 들어, tanh, tan 등) 또는 가중된 입력들 및 합 또는 수행된 다른 연산의 결과에 대해 수행되는 다른 수학적 함수를 포함할 수 있다.
마지막으로, 출력 레이어(210)는 FC 레이어 출력들 또는 ANN 출력들을 수신한 분류기 함수(220)를 포함할 수 있다. 이러한 분류기 함수들은 예를 들어, 그 함수가 FC 레이어(208)의 출력들을 0에서 1까지의 범위의 값들로 스쿼시/압축할 수 있는 SoftMax 함수를 포함할 수 있다. 분류기 함수들(220)의 출력들은 확률들을 포함할 수 있으며, 입력 데이터에 대응하는 가장 가능성 있는 출력 클래스가 가장 높은 확률을 갖는다. 출력 레이어(210)는 또한 예를 들어 서포트 벡터 기계(SVM)와 같은 표준 분류기 또는 다른 분류기일 수 있다.
본 개시내용의 실시예들에서, 콘볼루션(230) 및 풀링 레이어들(206)의 실행은 (실행 파이프라이닝 또는 파이프라인 처리를 통해) 파이프라이닝될 수 있어서 상당한 속도 향상 및 효율을 낳는다. 위에서 논의한 바와 같이, 풀링 레이어(208)는 제1 콘볼루션 슬라이딩 윈도우 동작으로부터의 데이터의 이용가능성에 기반하여 콘볼루션 레이어(230)와 병렬적으로 또는 동시에 동작할 수 있고, 동시에 또는 후속 슬라이딩 윈도우 동작들 동안 이미지 데이터의 중첩 또는 후속 서브세트들에 대해 수행되는 프로세스들을 시작할 수 있다.
실행 파이프라이닝 또는 파이프라인 처리는 본 명세서에서 하나의 컴포넌트 또는 요소의 출력이 다음 컴포넌트 또는 요소의 입력인 직렬로 접속된 데이터 처리 요소들, 컴포넌트들 또는 함수들의 세트로 지칭될 수 있다. 파이프라인의 요소들 또는 컴포넌트들은 병렬적으로 또는 시간 슬라이싱된 방식으로 실행될 수 있으며, 이 경우, 버퍼 저장의 일부 양이 요소들 사이에 삽입할 수 있다. 이전의 또는 선행하는 컴포넌트가 입력 데이터의 세트에 대한 연산을 완전히 완료하는 것을 기다리는 대신에, 후속 또는 다음의 컴포넌트 또는 요소는 예를 들어 이전/선행하는 요소 또는 컴포넌트들로부터의 결과들의 부분적인 또는 불완전한 세트에 대한 처리를 즉시 시작할 수 있다. 이러한 방식으로, 풀링 레이어의 컴포넌트들은, 예를 들어 하나의 속도 향상으로서 콘볼루션 조합된 레이어(230)로부터의 적어도 부분적인 결과들에 대해 동작하도록 구성될 수 있다.
다른 실시예들에서, FC 레이어(208) 실행은 또한 파이프라이닝될 수 있고, 이에 따라 추가적인 속도 향상 및 효율에 기여한다. 또한, 뉴런들로서의 FC 컴포넌트들(218)은 또한 서로 병렬적으로 기능하기 위해 이전 또는 선행하는 FC 컴포넌트(218)로부터의 부분적인 출력 데이터에 응답하여 처리를 시작하도록 파이프라이닝될 수 있다. 예를 들어, FC1의 뉴런(예를 들어, N2)의 네트 함수(222)는 선행하는 FC 컴포넌트(예를 들어, N1)의 출력 함수(224)가 완료되기 전에, 그리고 FC1의 선행하는 FC 컴포넌트(예를 들어, N1)의 출력 함수(224)의 처리 연산들과 병렬적으로 처리를 시작할 수 있다. 그 다음에, FC 컴포넌트들은 마찬가지로 이러한 파이프라인 처리 연산들을 통해 서로 병렬적으로 동작할 수 있다.
도 3을 참조하면, 본 명세서의 다양한 양태들/실시예들에 따른 대표적인 콘볼루션 데이터 결과들(300)의 예가 도시되어 있다. 콘볼루션 연산들은 도 2를 참조하여 전술한 바와 같이 콘볼루션 레이어(202)의 콘볼루션 컴포넌트들(212)에 의해 또는 RELU 컴포넌트들(214)을 갖는 조합된 콘볼루션 레이어(230)로서 이용될 수 있다. 콘볼루션 레이어(230)의 콘볼루션 컴포넌트들(212)은 예를 들어 가중된 곱셈들 및 합산들을 생성하도록 구성될 수 있다. 신호 처리의 관점에서, 이들 연산들은 단일 차원일 수 있고, 이미지 처리의 경우, 콘볼루션 연산들은, 각각이 추가 처리에서 팩터링되거나 고려될 양만큼 상이하게 또는 유사하게 입력들을 가중하는 다양한 가중치들이 X축 및 Y축을 따라 있을 수 있는 2차원일 수 있다.
일 예에서, 숫자들(302)의 2차원 어레이는 메모리(304)(메모리-1)에 의해 나타내진 메모리에 저장될 수 있다. 이들 값들은 센서들(예컨대, 이미지/카메라/비디오 캡처링 센서들 등)에 의해 하나 이상의 콘볼루션 컴포넌트(212)에 대한 입력들로서 제공되는 데이터 영역 또는 주석 달린 값들을 나타낼 수 있다. 예를 들어, 이들 값들(302)은 이미지 또는 이미지 데이터의 서브섹션/서브세트에 대응할 수 있으며, 콘볼루션 컴포넌트들 또는 조합된 레이어(230)의 컴포넌트들에 의한 콘볼루션 연산들에 대한 잠재적인 값들을 예시 목적으로 본 명세서에서 나타내고 있다. 이들 값들은 실수, 허수, 하나 이상의 변수의 함수, 또는 예를 들어 메모리(304)에 저장되거나 수신되는 데이터의 다른 표현들일 수 있다. 데이터(306)는 데이터(302)와 유사할 수 있지만, 예를 들어 메모리(304)에 저장될, 센서(들)(102)에 의해 제공되는 데이터의 선형 저장을 나타내도록 약간 다르게 표현될 수 있다.
콘볼루션은 필터 커널에 의해 표현되는 특징의 존재를 검출하는 목적으로 필터 커널이 이미지를 가로 질러 슬라이딩될 수 있는 수학적 연산이다. CNN 시스템들에서, 필터 커널은 그 특징을 검색하기 위해 이미지(302)에서 고정된 영역을 가질 수 있다. 따라서, 필터의 복수의 인스턴스들은 로컬 수용야들로 알려진 이미지의 비중첩 영역들에 접속될 수 있다. 각각의 필터 인스턴스는 메모리(304)의 그 로컬 수신야에서만 동일하고 정확한 특징을 검색한다. 따라서, 검색되어야 하는 모든 특징에 대해, 로컬 수용야들에 접속된 필터 커널 인스턴스들의 대응하는 세트가 제공된다고 할 수 있다. 특징의 모든 필터 커널 인스턴스들의 콘볼루션 출력은 특징의 특징 맵을 나타낸다. 복수의 필터 커널들은 검출하려는 다른 특징들로 확장된다.
예를 들어 특정 필터 커널 내의 코 또는 코의 화상의 표현은 특정 위치 또는 서브세트에서 (센서 데이터에 의해 캡처된) 이미지의 상부에 배치되고, 필터 커널 아래에 있는 숫자들을 곱하는데 이용될 수 있으며, 곱셈의 결과들의 합은 콘볼루션 컴포넌트(212)에 의해 수행되어 특정한 값을 획득할 수 있으며, 이 값은 이 후에 저장된다. 그 다음에, 커널은 한 열씩 (예를 들어, 우측) 방향으로 슬라이딩될 수 있다. 그 다음에, 계산들이 반복되며, 내적 곱셈 및 합과 같은 주어진 수학적 연산들을 이용하여 계산들을 반복하여, 저장되는 결과를 획득할 수 있다.
슬라이딩 연산들은 하나 이상의 반복을 갖는 x-축을 따라, 그리고 특정 행을 따라 x-축의 끝에 도달할 때까지 계속될 수 있다. 커널은 제1 열로 되돌아 갈 수 있지만, 콘볼루션 컴포넌트(212)가 슬라이딩 연산들을 다시 반복하는 곳으로부터 한 행만큼 아래로 슬라이딩될 수 있다. 이미지(302)의 중첩하는 이미지 영역들(308)은 콘볼루션 윈도우들을 나타낸다. 콘볼루션들이 콘볼루션 컴포넌트들(212)에 의해 수행되는 것은 이러한 콘볼루션 윈도우들(308) 위이고 이에 따른다. 데이터 병렬 프로세서(예를 들어, SIMD 프로세서) 상에서, 콘볼루션 윈도우에 속하는 데이터 및 필터 커널에 속하는 데이터는 모두 벡터 레지스터들에 로딩될 수 있고, 벡터 곱셈-누적(MAC) 유닛에 공급될 수 있다. 하나의 벡터 MAC 연산은 예를 들어 하나의 콘볼루션 출력을 생성할 수 있다. 이 콘볼루션 출력은 나중에 메모리-2(메모리(310))에 저장될 수 있다. 필터 커널이 모든 중첩하는 콘볼루션 윈도우들(308)과의 콘볼루션들을 완료한 후에, 완전한 콘볼루션 출력들은 그 다음에 콘볼루션 출력 메모리(310)에서 이용가능할 수 있다.
콘볼루션 프로세스들로부터, 계층구조 데이터 세트들은 본 명세서의 양태들에 따라 서로 병렬적으로 또는 동시에 생성될 수 있고, 이 후에 RELU 컴포넌트들(214)에 의해 비선형으로 만들어 져서 이미지가 코의 화상을 포함하는지 여부 및 이미지 내의 그 위치를 결정할 수 있다. 이 결정이 긍정적이면, 코의 화상을 포함하는 이미지의 이러한 부분들은 이미지의 다른 부분들에 비해 더 높은 콘볼루션 값들을 출력하려 할 것이다.
일 예에서, 3 × 3(또는 다른 n × n 크기 또는 n × p 크기, n과 p는 동일하거나 상이할 수 있는 양의 정수임) 콘볼루션 슬라이딩 윈도우(308) 하에서, 더 작은 숫자들의 세트(예를 들어, 1, 2, 3, 7, 8, 9, 2, 4, 5)가 유도될 수 있고, 그 다음에 즉시 다른 시퀀스(예를 들어, 2, 3, 4, 8, 9, 1, 4, 5, 9)가 생성될 수 있다. 이들은 이미지로부터 취해지거나 이미지로부터 유도된 값들을 나타낼 수 있는 대표적인 값들이다. 숫자들의 시퀀스(예를 들어, 1, 2, 3, 7, 8, 9, 2, 4, 5)는 콘볼루션 슬라이딩 윈도우 데이터로서 초기 영역/서브세트의 숫자들로부터 기인할 수 있다. 그 다음에, 제1 열을 무시하고, 제2, 제3 및 제4 열들에서 시작하는 숫자들에 초점을 맞춤으로써, 제1, 제2 및 제3 행들에서 다른 시퀀스(예를 들어, 2, 3, 4, 8, 9, 1, 4, 5, 9)가 획득될 수 있다.
3 × 3 윈도우(308)를 추가로 이용하면, 예로서 크기 3 × 3인 작은 크기의 이미지 데이터 부분들이 메모리(304)에 저장된 이미지 데이터로부터 분석될 수 있다. 다른 크기의 윈도우들이 또한 이용될 수 있으며, 이러한 예시적인 크기는 반드시 본 명세서의 모든 양태들을 망라하거나 이를 제한하지는 않는다. 윈도우를 다른 열로 슬라이딩시키면, 윈도우 결과들은 3, 4, 5, 9, 1, 3, 5, 9, 3이 될 수 있어서 다른 슬라이딩 윈도우 결과를 형성한다. 내적 곱셈 연산은 그 다음에 슬라이딩 윈도우 콘볼루션들의 출력으로서 각각의 숫자를 획득할 수 있으며, 이는 A B C D E F G H로서 메모리-2(예를 들어, 310)에 의해 주석 달린 우측 하단 모서리에 나타내질 수 있다. 예를 들어, 값 또는 대표적인 결과(예를 들어, A)는 기본적으로 1, 2, 3, 7, 8, 9, 2, 4, 5를 포함하는 제1 윈도우와의 필터 커널의 콘볼루션의 출력을 나타낼 수 있고, B는 2, 3, 4, 8, 9, 1, 4, 5, 9를 포함하는 제2 윈도우와의 코(또는 다른 특징)를 나타내는 커널의 콘볼루션의 출력을 나타낼 수 있고, 기타 등등이며, 유사하게 H는 최종 윈도우, 예를 들어 1, 3, 2, 9, 3, 5, 1, 1, 3과의 코(또는 다른 특징)를 나타내는 필터 커널의 콘볼루션이다.
A, B, C, D, E, F, G 및 H는 주어진 글자 기호가 대응하는 데이터의 임의의 하나의 구역/서브세트/영역에서 코의 이용가능성의 레벨을 또는 계층구조 데이터의 하나의 레벨로서 다양한 방법들로 나타낼 수 있다. 예를 들어, A가 매우 높은 값이면, 코(또는 데이터 세트들의 커널 또는 슬라이딩 콘볼루션 윈도우에 대응하는 다른 특징)가 이 위치에 있을 수 있는 가능성이 높다. 이와 같이, 콘볼루션은 이미지 데이터에서 특정한 특징을 이용할 수 있는지 여부와 그 위치의 실제 추정을 제공할 수 있다. 유사하게, 다른 특징들 또는 임의의 수의 특징들은 각각 콘볼루션 컴포넌트들(212), 및 특징 검출들이라고 불릴 수 있는, 하나 이상의 이미지 내의 하나 이상의 패턴 또는 조건의 검출을 위한 조합된 계산 레이어(230)에 의해 분석될 수 있으며, 그 출력은 예를 들어 콘볼루션 출력들(310)에 의해 도해될 수 있다.
도 4를 참조하면, CNN 시스템(100)의 풀링 연산들의 추가 예가 도시되어 있다. 여기서, 콘볼루션의 출력들(310)은 예를 들어 글자들이 더 큰 이미지로부터의 임의의 값 또는 함수를 나타내는 알파벳을 포함하는 메모리-2로 추가로 확장된다. 풀링 레이어(206)의 풀링 컴포넌트들(216)은 콘볼루션의 출력(310)을 감소시키는 프루닝(pruning), 트리밍(trimming) 또는 압축 프로세스에 의해 데이터를 처리함으로써 콘볼루션 출력들(310)을 처리한다.
예를 들어, 비중첩 블록들의 세트는 메모리-2(메모리(310))에 묘사된 상이한 음영들 또는 블록들로 나타내질 수 있다. 예를 들어, 블록 A, B, I, J는 블록 E, F, M, N 및 블록 G, H, O, P 등과는 상이한 블록/윈도우 C, D, K, L과 상이하다. 이와 같이, 도 2의 풀링 컴포넌트들(216)은 예를 들어 메모리-3에 저장될 풀링 출력들(402)을 달성하기 위해 통계 연산을 수행함으로써 이러한 2 × 2 셀들 각각에서 x축을 따라 2개이고 y축을 따라 2개인 섹터 비중첩 영역들 2 × 2 및 콘볼루션의 출력을 처리할 수 있다. 이러한 풀링 출력들(402)은 스케일링된 불변 특징들을 나타낸다.
2 × 2의 비중첩 영역이 예로서 본 명세서에서 예시되고 설명되었지만, p × n 비중첩 블록/윈도우가 이용될 수 있는 식으로 다른 크기들이 또한 구상되고 이용될 수 있으며, p 또는 n은 예를 들어 0이 아닌 임의의 양의 정수일 수 있고, 서로 달라지거나 동일할 수 있다.
풀링 컴포넌트들(216)에 의해 수행되는 통계 연산은 슬라이딩 콘볼루션 윈도우의 최소, 최대, 평균, 중간 또는 (예를 들어, A, B, I, J의) 다른 통계 연산을 포함할 수 있다. 풀링 컴포넌트들(216)은 임의의 통계 연산의 풀링 연산들을 수행할 수 있지만, 대부분의 구현들에서 풀링 컴포넌트들에 의해 이용되는 통계 연산은 최대일 수 있다.
이와 같이, 슬라이딩 콘볼루션들의 출력(310)에 대한 이들 2 × 2 블록 윈도우들(또는 블록들/윈도우들의 다른 크기) 각각으로부터, 값(예를 들어, 대표적인 B)이 선택될 수 있다. 이 예에서, B가 선택되고, K가 다음 블록으로부터 선택되고 메모리-3(402)에 저장된 바와 같이 E, P 및 Z, A, U, X에 의해 후속되며 스케일링된 불변 특징들 또는 콘볼루션 컴포넌트들(212)로부터의 콘볼루션 출력들(310) 또는 RELU 컴포넌트들(214)로부터의 비선형 콘볼루션 출력 데이터의 세트들로부터 유도된 볼륨 감소된 출력들로서 풀링 출력들을 포함한다. 이에 따라, 풀링 컴포넌트들(216)은 풀링 연산으로서 수신하는 입력들로부터 데이터 크기의 감소를 생성할 수 있다. 그 다음에, 풀링 연산들의 출력은, 행해질 추가 결정들을 위해 이미지들 내의 패턴들/조건들에 대한 결정들을 추가로 시도하는, 인공 신경망 또는 FC 레이어(208)에 입력될 수 있다.
다양한 양태들에서, 특정 컴포넌트 하드웨어는 이들 계산들을 수행하도록 할당될 수 있으며, 모든 주 프로세서(예를 들어, 엔진 제어 유닛 또는 다른 주 처리 컴포넌트)가 해야만 하는 것은 i) 분석할 이미지가 있고, ii) 그 이미지가 무엇인지 결정한 후에 그 결과들의 표시를 제공하는 것을 콘볼루션 신경망 컴포넌트 하드웨어에 전하는 것이다. 이와 같이, CNN(104)의 다양한 레이어들의 계산들은 예를 들어 CNN 가속기에 오프로딩되어 주 프로세서로의 결과들의 회신을 위해 백그라운드에서 계산들을 수행할 수 있다. 이는 전력 및 성능 효율을 위한 좋은 솔루션이 될 수 있지만, 이러한 하드웨어 유닛이 마이크로제어기들에서 상당한 영역을 차지할뿐만 아니라 기능에 상당량의 전력을 소비할 수 있기 때문에 비용이 많이 들게 될 수 있다. 따라서, 본 명세서의 양태들은 또한 전용 하드웨어 가속기에 대한 필요성을 제거할 수 있고, 대신에 전용 CNN 가속기만큼 강력하지는 않지만 특정한 하나 이상의 더 작은 경량 컴포넌트를 이용함으로써 칩 상의 특정 기반구조를 재이용할 수 있다. 이와 같이, 주 프로세서에 과부하가 걸리지 않고 비용을 절감할 수 있을 뿐만 아니라 성능을 유지할 수 있다.
일 실시예에서, 풀링 프로세서들(216)은 콘볼루션 컴포넌트들(212) 또는 조합된 콘볼루션 + RELU 레이어(230) 및 관련 프로세스들과 병렬적으로 동작함으로써 파이프라이닝 연산들을 통해 동작할 수 있다. 선행하는 레이어가 모든 계산 연산들(예를 들어, 슬라이딩 콘볼루션의 모든 출력들(310)이 특징들의 특정 계층구조에 대해 또는 서브세트 이미지 부분들의 전체 이미지에 대한 반복으로 생성됨)을 완료한 후에만 동작을 개시하는 CNN(104)의 각각의 레이어 대신에, 풀링 컴포넌트들(216)은 전형적으로 그 선행자에 의해 생성될 모든 풀링 윈도우들을 기다리는 것과 대조적으로 그 선행자(예를 들어, 콘볼루션 컴포넌트들(212))에 의해 윈도우가 생성되자마자 풀링 윈도우에 대해 풀링 연산을 개시할 수 있다.
예를 들어, 트리거 이벤트(예를 들어, 액세스 매치 또는 관찰 유닛 출력이라고도 지칭됨)로서, 데이터 블록은 다음 레이어로의 처리를 위해 입력들에서 이용가능할 수 있고, 이에 따라 다음 레이어는 즉시 계산을 시작한다. 이와 같이, 처리 이득은 콘볼루션 레이어(202/212)가 계산 출력들의 하나의 블록/윈도우(예를 들어, 음영 처리된 블록 A, B, I, J 중의 하나)를 계산하자마자 풀링 연산을 시작함으로써 증가될 수 있다.
콘볼루션 레이어가 메모리-2의 출력들(310)의 우측 하단 모서리에서 F까지의 모든 길인 콘볼루션 출력들 A, B, C, D, E, F, G 등을 생성하여 출력들의 풀링을 개시하는 것을 기다리기 보다는, 풀링 컴포넌트들(216)은 데이터 이용가능성에 기반하여 트리거 이벤트 또는 표시(또는 액세스 매치)에 응답하여 처리할 수 있다. 예를 들어, 트리거 이벤트는 주어진 윈도우에 대한 최종 값(예를 들어, 2 × 2 윈도우의 제1 음영 처리된 블록에 대한 J)에 대응하는, 메모리-2에서의 위치에 대한 기입일 수 있다. 이와 같이, 2 × 2 블록의 요소, 값 또는 임의의 인자가 메모리 또는 특정 메모리 위치에 기입되자마자, 제1 풀링 컴포넌트(216)는 트리거링되어 이용가능한 데이터에 대한 풀링 연산들의 처리를 즉시 시작할 수 있다.
다른 실시예/양태에서, 이 예에서의 트리거 표시는 추가적으로 또는 대안적으로 p × p 윈도우(예를 들어, 2 × 2 비중첩 데이터 블록)의 최종 값, 위치 또는 결과에 대응하는 슬라이딩 콘볼루션 출력의 이용가능성일 수 있으며, p는 임의의 양의 정수일 수 있다. 또한, 이 트리거는 다양한 입력 데이터에 대응하는 모든 입력들에서의 데이터의 이용가능성을 포함하도록 확장될 수 있으며, 데이터 자체의 수신이 완료/종료되는지 또는 이전 레이어(예를 들어, 조합된 레이어(230), 콘볼루션 컴포넌트(212), RELU 컴포넌트(214) 등)가 완료되는지 여부에 관계 없이, 데이터흐름 처리 흐름과 같이 모든 입력들이 데이터들을 수신하면, 다음 레이어에서의 처리가 (예를 들어, 풀링 컴포넌트(216)를 통해) 트리거링될 수 있다.
특정 위치에서 값의 이용가능성 또는 기입 동작의 표시에 응답하여, 완료된 블록 또는 비중첩 윈도우(예를 들어, 비선형 콘볼루션 출력 데이터의 2 × 2 윈도우 또는 슬라이딩 콘볼루션들의 출력(310))에 대한 풀링 연산이 풀링 컴포넌트(216)에 의해 개시될 수 있다. 풀링 컴포넌트(216)는 하나 이상의 콘볼루션 컴포넌트(212)와 동시에 또는 병렬적으로 연산들을 수행할 수 있다. 콘볼루션 컴포넌트들(212)이 슬라이딩 콘볼루션 출력들(310)을 제공하는 동안, 풀링 컴포넌트들(216)은 각각의 블록(예를 들어, J, L, N, P, Z, B, D 및 F의 8개의 블록)에 대한 출력 어드레스들(502)을 갖는 최종 풀링 출력들을 제공할 수 있다. 따라서, 예를 들어, J가 콘볼루션 컴포넌트(216)로부터 이용가능해지자마자, A, B, I, J의 최대값은, 데이터의 동일한 계층구조 또는 상이한 계층구조 레벨 내의 이미지에서 다른 윈도우들 또는 서브세트들의 데이터로부터 C, D, E, F 등과 같은 다른 결과들을 기다리지 않고, 풀링 컴포넌트(216)의 풀링 연산의 일부로서 예시적인 통계 연산으로 발견될 수 있다. 또한, N이 이용가능해지자마자, E, F, M, N의 풀링 연산은 O가 메모리에 기입되는 것을 기다리지 않고 시작할 수 있다. 마찬가지로, P가 이용가능해지자마자, G, H, O, P에 대한 풀링 계산이 예를 들어 출력 슬라이딩 콘볼루션 데이터 또는 비선형 출력 데이터(310)로도 지칭되는 각각의 블록에 대해 개시될 수 있으며 기타 등등이다.
도 6을 참조하면, CNN 연산들(600)의 추가적인 예들이 도시되어 있다. 조합된 콘볼루션 + RELU 레이어(230)는 본 명세서에서 조합된 레이어(602)로 표현될 수 있다. 일반적으로, 풀링 컴포넌트(604)는 보통 모든 콘볼루션 계산들이 완료될 때만 개시할 것이다. 풀링 컴포넌트(604)의 연산들의 완료 후에, 레이어(602)로부터의(즉, 상이한 특징들에 대한) 특징 맵들 및 추가 필터들 또는 이미지 전체를 따라 상이한 이미지 데이터에 대해 동일한 것들을 포함할 수 있는 조합된 레이어(606)의 추가 연산들이 개시될 수 있다. 후속적으로, 풀링 컴포넌트(608) 또는 동일한 풀링 컴포넌트(604)는 데이터 결과들에 대한 처리를 개시할 수 있다. 그러나, 조합된 레이어(602/606)와 풀링 컴포넌트(604/608) 간의 이들 연산들은 시간적으로 서로 순차적이며, 각각의 컴포넌트는 컴포넌트의 모든 계산이 특정 필터, 특징 맵, 및 파이프라이닝 처리 없는 대응하는 컴포넌트에 대한 완전한 이미지 분석에 대해 중단된 후에만 개시한다.
다음으로, 도 6의 중간에서, "제어 프로세서 유닛(CPU) 주파수를 증가시켜서 속도 향상"이라는 제목 하에, 각각의 계산 레이어에 대응하는 이들 윈도우들 또는 영역들의 크기는 더 작아질 수 있다. 이것은 CPU 주파수를 증가시켜 달성될 수 있는 것에 대한 속도 향상 표현이며, 프로세서들이 더 빠른 속도로 동작할 때 더 빠르게 계산되어 계산 속도 이득에 이르게 한다. 주파수를 높이는 것은 필수적인 것은 아니며, 예를 들어 과도한 전력 소비와 관련된 가장 큰 영향과 같은 영향들이 있을 수 있다.
유사하거나 실질적인 계산 이득은 콘볼루션 슬라이딩 윈도우 연산들로부터 데이터의 주어진 블록/서브세트/부분을 완료하는 콘볼루션 컴포넌트들(212)과 병렬적으로 그리고 이에 의해 트리거링되는 풀링 컴포넌트들(216)의 파이프라인 처리를 통해 구성될 수 있다. 따라서, 풀링 컴포넌트들(216)은 콘볼루션 컴포넌트들(212)의 콘볼루션 연산들과 함께 산재될 수 있다. 콘볼루션이 예를 들어 A, B, I, J일 수 있는 하나의 데이터 블록(310) 또는 (동일하거나 상이한 윈도우를 갖는) 다른 데이터 세트를 출력하자마자, 그리고 최종 값 J가 회신되자마자 풀링 연산들을 개시할 수 있다. 따라서, 풀링 연산이 예를 들어 A, B, I, J에 대해 수행되는 동안, 콘볼루션은 멈추지 않고 C, D, K 및 L과 같은 다른 데이터 세트를 계속 출력한다. C, D, K, L이 이용가능하면, 예를 들어 다른 풀링 컴포넌트 또는 동일한 풀링 컴포넌트(216)를 통한 풀링의 다음 라운드가 즉시 시작될 수 있고, 예를 들어 마찬가지로 추가 반복될 수 있다. 이것은 CPU 주파수를 증가시키지 않고 더 많은 전력 소비를 발생시키지 않으면서 CPU 주파수의 증가만이 있을 때와 동일한 레벨들의 가속을 달성할 수 있음을 의미한다.
콘볼루션 레이어(230) 및 풀링 레이어(206)와의 파이프라이닝 연산들로부터의 속도 향상은 제어 흐름 프로세서들을 거쳐서 또는 그 대신에 데이터 흐름 프로세서 컴포넌트들로 데이터 흐름 처리를 이용함으로써 수행될 수 있다. 일반적으로, 제어 흐름 프로세서들은 폰 노이만 기계들로 구성되거나 컴퓨팅 디바이스와는 별도의 유닛일 수 있는 메모리에 상주하는 프로그램을 갖는 컴퓨팅 디바이스들(제어 흐름 프로세서들)로서 구성된다. 추가적으로, 폰 노이만 기계들은 제어 흐름 프로세서(또는 컴퓨팅 디바이스)에게 프로그램 카운터에 포함된 어드레스에서 명령어들을 이제 실행해야 한다는 것을 알려주는 프로그램 카운터를 포함한다. 그 다음에, 특정 프로세서는 프로그램 카운터에 의해 지정된 메모리 위치를 찾고 프로세서 내부의 명령어를 인출 및 가져 와서 이를 최종적으로 실행한다. 프로그램 카운터가 증분되고, 그 다음에 제어 흐름 프로세서에 대한 정규 연산의 일부로서 전술한 시퀀스가 다시 반복된다.
제어 흐름 프로세서들 또는 폰 노이만 기계들과 대조적으로, 도 7은 CNN 시스템(104)의 풀링 컴포넌트들(216) 또는 다른 컴포넌트들로서 이용되는 데이터 흐름 프로세서들(FU1-FU6)의 동작 흐름 예(700)를 도시한다. 데이터 흐름 프로세서들은 명령어들이 메모리로부터 인출되지 않는다는 점에서 폰 노이만 기계들과 상이할 수 있다. 명령어들은 컴퓨팅 디바이스 내부에서 이미 이용가능하다. 특히, 데이터 흐름 프로세서 상의 명령어는 아무런 일이 발생하지 않을 때까지 그 명령어에 필요한 데이터가 이용가능한 경우 실행된다.
예를 들어, FU1 내지 FU6으로 주석 처리된 블록들은 컴포넌트에 이미 하드와이어된 명령어들일 수 있다. 특히, FU1 및 FU2에서 나오고 FU3에서 끝나는 2개의 선/단자는 FU3에 대한 입력 단자들 역할을 한다. 예를 들어, FU3의 출력은 또한 FU4 및 FU5에도 접속될 수 있다. 이러한 박스들은 명령어들일 수 있으며, 각각의 FU 박스(데이터 흐름 프로세서 요소)에 들어오는 값들은 피연산자들 또는 입력 데이터일 수 있으며, 블록들에서 나오는 선들은 출력 데이터 또는 명령어/피연산자의 실행 결과일 수 있다. 그 결과, 각각의 데이터 흐름 프로세서 요소와 마찬가지로, FU3은 FU1 및 FU2 모두가 출력들을 생성할 때까지 실행되지 않을 것이다. 마찬가지로, FU4는 FU3 및 FU1의 출력들을 수신하면 실행될 것이며, FU5는 FU3 및 FU6의 입력들을 수신하면 실행될 것이다. 데이터 흐름 프로세서들은 하나의 노드에서 다른 노드로만의 데이터의 즉각적인 이용가능성에 기반하여 또는 그에 응답하여 이미 하드와이어된 명령어를 실행한다. 이와 같이, 명령어들은 기능 유닛들 또는 단순한 하드웨어 유닛들로 대체될 수 있다. 각각의 FU는 각각의 입력에서 이용가능하게 된 데이터를 수신한 후에만 작동하는 노드로서 동작할 수 있다.
이제 도 8을 참조하면, 다양한 양태들 또는 실시예들에 따라 CNN 레이어들을 동작시키기 위한 CNN 시스템(800)의 아키텍처의 예가 도시되어 있다. 이 시스템(800)은 컴포넌트들(예를 들어, 폰 노이만 프로세서(들))이 제어 흐름 프로세서들과 함께 동작할 수 있는 제어 흐름 처리 구획(802), 및 컴포넌트들이 데이터 흐름 프로세서들(예를 들어, FU1-FU6, 또는 본 개시내용의 도면들 및 본 명세서에서 설명되는 바와 같은 다른 컴포넌트들)과 함께 동작할 수 있는 데이터 흐름 처리 구획(804)을 포함한다.
프로세서 상호접속부(806)는 제어 흐름 처리 구획(802)의 일부로서 CPU(808)(예를 들어, 주 프로세서 또는 다른 폰 노이만 프로세서) 및 메모리(814)뿐만 아니라 데이터 흐름 처리 구획(804)의 데이터 흐름 프로세서 컴포넌트들로서 관찰 유닛(810) 및 하나 이상의 코-프로세서(812)를 포함하는 다양한 컴포넌트들을 접속하도록 동작할 수 있다.
일 양태에서, 데이터 흐름 처리 구획의 컴포넌트들은 파이프라인 처리를 위해 풀링 레이어(206)의 풀링 컴포넌트들(216) 및 FC 레이어(208)의 FC 컴포넌트들(218)을 지원 또는 포함하도록 동작할 수 있다. 풀링 연산들은 콘볼루션 레이어(202, 204 또는 230)가 하나의 블록 데이터(예를 들어, 2 × 2 데이터 윈도우 또는 비중첩 데이터 윈도우의 다른 크기의 블록)를 출력하자마자 시작할 수 있다. 관찰 컴포넌트/유닛(810)은 메모리의 위치에서 데이터 블록이 이용가능한 이러한 이벤트를 결정하도록 구성될 수 있다. 관찰 유닛이 데이터 블록의 최종 데이터(예를 들어, 블록 A, B, I, J로부터의 J)가 특정 메모리 어드레스에 기입되는 것을 결정하자마자, 관찰 유닛(810)은 이 이벤트를 검출하여 콘볼루션 레이어(230)와 병렬적으로 동작하도록 풀링 컴포넌트들(예를 들어, 풀링 컴포넌트들(216))을 포함하는 코-프로세서들(812)에 대한 인터페이스(I/F)를 통해 코-프로세서들(812)에게 트리거를 제공할 수 있다.
도 9를 참조하면, 다양한 양태들/실시예들에 따른 콘볼루션 레이어 워치 테이블(900)의 예가 도시되어 있다. 관찰 유닛(810)은 예를 들어 콘볼루션 레이어(202)의 콘볼루션 컴포넌트들(212), RELU 레이어(204)의 RELU 컴포넌트들(214) 또는 조합된 레이어(230)의 컴포넌트들(212, 214)에 대응하는 다수의 테이블들(904a-904n)을 포함할 수 있다. 테이블들(904a 내지 904n)(n은 임의의 양의 정수임) 각각은 각각의 콘볼루션/RELU 컴포넌트(212, 214)와 연관된 콘볼루션 슬라이딩 출력들(310)의 어드레스에 대응하는 콘볼루션 워치 어드레스 부분 및 풀링 출력 어드레스 부분을 포함할 수 있다. 트랜잭션 매치 유닛(906)은, 예를 들어 테이블(904-904n)에 기입되는 데이터의 특정 위치에 응답하여 트리거를 생성하는 관찰 유닛(810)의 컴포넌트일 수 있다. 출력들(908)은 예를 들어 풀링 연산들에 대해 적어도 부분적으로 지정하는 풀링 컴포넌트들(216)뿐만 아니라 예를 들어 도 12 내지 도 15와 관련하여 이하에서 더 상세히 논의되는 FC 컴포넌트들(218)일 수 있는 코-프로세서들(812) 중 임의의 것에 처리를 위해 제공될 수 있다.
콘볼루션 워치 어드레스는 조합된 레이어(230)의 특정 콘볼루션/RELU 컴포넌트(212, 214)에 할당되고 이에 대응하는 테이블(904)에 저장된 바와 같이 도 5의 슬라이딩 콘볼루션들(310)의 출력들(예를 들어, J, L, N, P, Z, B, D 및 F)의 어드레스들(502)일 수 있다. 이들은 관찰 유닛(810)이 모니터링하고, 예를 들어 콘볼루션 데이터 세트 또는 추출된 결과들을 생성하는 콘볼루션 슬라이딩 윈도우에 응답하여 콘볼루션 컴포넌트(212), RELU 컴포넌트(214) 또는 다른 컴포넌트에 의해 대응하는 테이블(904)의 열 1에 기입될 수 있는 콘볼루션 출력 어드레스들이다.
각각의 콘볼루션 워치 어드레스에는 예를 들어 도 4의 풀링 출력들(402)과 연관된 대응하는 풀링 출력 어드레스가 있을 수 있다. 풀링 출력들(402)(예를 들어, B, K, E, P, Z, A, U, X)의 어드레스 위치들(풀링 출력 어드레스들)은 특정 테이블(예를 들어, 904a 또는 다른 테이블)과 연관된 지정된 풀링 컴포넌트(216)에 대응하는 풀링 어드레스들일 수 있다. 출력들(908)의 풀링 출력 어드레스는 레이어(206)의 대응하는 풀링 컴포넌트(216)가 그 출력을 기입할 수 있는 메모리 위치들을 포함할 수 있다.
테이블들(904) 및 트랜잭션 매치 유닛 컴포넌트(906)를 포함하는 관찰 유닛(810)이 이들 콘볼루션 출력들(310) 중 하나가 이용가능하다는 것을 검출하거나, 또는 관찰 유닛(810)이 콘볼루션 출력들 중 하나에 대응하는 메모리 위치의 콘볼루션 워치 어드레스가 기입된 것을 검출하자마자, 관찰 유닛(810)은 트랜잭션 매치 유닛 컴포넌트(906)를 통해 예를 들어 코-프로세서(812)로서 대응하는 풀링 컴포넌트(216)에 출력들(908)의 (액세스 매치 출력으로서) 트리거를 즉시 생성할 수 있다. 액세스 매치 출력(908)은 콘볼루션/조합된 컴포넌트(212, 214)가 특정 데이터 블록(예를 들어, 비선형 콘볼루션 출력 데이터/콘볼루션 컴포넌트 출력들의 단일 2 × 2 블록)에 대해 콘볼루션 슬라이딩 윈도우로 그 작업을 완료했음을 나타낸다. 액세스 매치는 특정 테이블(904a-904n)에 대응하는 풀링 컴포넌트(216)에 제공된 트리거일 수 있으며, 대응하는 테이블(904)이 기입되었을 때 및 (콘볼루션 출력 데이터/비선형 콘볼루션 출력 데이터의 비중첩 블록으로서) 특정 블록 크기의 최종 요소가 이용가능하다는 것을 나타내고, 이에 따라 이용가능한 데이터 블록으로 풀링 연산들을 수행하기 위한 표시 신호일 수 있다. 이와 같이, 액세스 매치는 대응하는 풀링 컴포넌트(216)를 개시하여 이용가능한 데이터를 갖는 스케일링된 불변 데이터로서 풀링 출력들을 생성하기 시작하는 트리거 신호/표시/이벤트일 수 있다.
또한, 관찰 유닛(810)은 콘볼루션 레이어 아이덴티티(ID)/콘볼루션 컴포넌트 ID를 통해 기입된 메모리 위치에 대응하는 테이블을 포함하는, 풀링 윈도우의 세부사항들을 트랜잭션 매치 유닛 컴포넌트(906)를 통해 표시하며, 이 ID에 대응하는 풀링 컴포넌트(216)는 그에 따라 활성화되고 특정 테이블(904)에서 풀링 연산들을 위한 대응하는 데이터(콘볼루션 워치 어드레스/풀링 출력 어드레스)를 수신한다. 복수의 콘볼루션 컴포넌트들이 각각의 테이블에 각각 대응하고, 마찬가지로 복수의 풀링 컴포넌트들이 다양한 콘볼루션 컴포넌트들/조합된 레이어들(콘볼루션 컴포넌트 + RELU 컴포넌트)에 각각 대응하므로, 풀링 컴포넌트들(216)에는 다양한 콘볼루션 컴포넌트들 중 어느 것이 트리거를 담당하는지에 관한 정보가 제공될 수 있다. 그 다음에, 풀링 출력 어드레스는 스케일링된 불변 데이터를 기입하기 위해 풀링 컴포넌트(216)에 의해 이용될 수 있다.
도 10을 참조하면, 예시적인 풀링 컴포넌트(216) 또는 코-프로세서(812)가 CNN의 풀링 프로세서로서 도시되어 있다. 풀링 컴포넌트(216)는 하나 이상의 스트라이드 레지스터(1002), 하나 이상의 통계 연산(Op) 레지스터(1004), 로드/저장 유닛(1006) 및 통계 연산 엔진(1008)을 포함할 수 있다. 전체로서 코-프로세서(812)는 대응하는 테이블(904)로부터 인터페이스 신호들을 풀링 윈도우 세부사항들로서 수신하며, 즉 대응하는 테이블(904)(예를 들어, 테이블들(904a-904n) 중 임의의 테이블)을 통해 출력들(908)로서 풀링 입력 어드레스, 풀링 출력 어드레스, 콘볼루션 레이어 ID 및 매치 신호를 수신한다.
풀링 컴포넌트들(216) 각각은 스트라이드 레지스터(1002) 및 통계 연산 레지스터들(1004)의 2개의 레지스터를 포함할 수 있다. 스트라이드 레지스터들(1002)은 메모리 내의 비인접 데이터 또는 데이터 세트들 사이에 위치 거리를 부여할 수 있게 하며, 이는 데이터를 검색하고 처리하는데 이용될 수 있다.
예를 들어, 특히 콘볼루션 출력들(310, A, B, I 및 J)의 제1 윈도우에 대해, 콘볼루션 출력들/비선형 콘볼루션 출력 데이터의 다양한 값들은 예를 들어 메모리 위치(10)에 A, 메모리 위치(11)에 B, 12에 C, 13에 D, 14에 E, 15에 F, 16에 G, 17에 H, 18에 I, 19에 J가 저장될 수 있다. 이와 같이, A, B, I 및 J(즉, 슬라이딩 콘볼루션 윈도우/풀링 레이어 입력들의 출력)는 정확히 인접한 위치들에 있지 않다. A와 B는 단순히 서로 인접하여 존재한다. I와 J는 예를 들어 서로 바로 옆에 있을 수 있지만, A 및 B는 I 및 J에 인접하지 않는다. 따라서, 스트라이드 레지스터들(1002)은 B에서 I까지의 비인접 거리를 스트라이드 길이/거리로서 검색, 저장 또는 코-프로세서(812)/풀링 컴포넌트(216)에 표시한다.
트리거가 액세스 매치 신호의 형태로 수신되자마자, 풀링 컴포넌트(216)는 콘볼루션 컴포넌트/레이어 ID 및 콘볼루션 레이어 ID가 자신 또는 특정 풀링 컴포넌트(216)에 대응하는지 여부를 결정할 수 있다. 일 양태에서, 풀링 컴포넌트들(216)과 콘볼루션/RELU 컴포넌트들(212/214) 간에 1 대 1 매핑이 존재할 수 있다. 따라서, 20개의 조합된 레이어(230)가 있다면, 예를 들어 동일한 수의 대응하는 풀링 컴포넌트들(216)이 존재할 수 있다. 이와 같이, 콘볼루션 레이어의 식별이 이용가능해지면, 대응하는 풀링 컴포넌트(216)는 스트라이드 레지스터(1002)를 통해 스트라이드 길이를 식별하고, 풀링 컴포넌트(216)는 어디에서 멈출지, 즉 콘볼루션 워치 어드레스(콘볼루션 출력 데이터/비선형 콘볼루션 출력 데이터의 비중첩 윈도우의 최종 데이터인 데이터의 최종 어드레스)를 알 수 있다.
로드 저장 유닛(1006)은 스트라이드 레지스터(1002)로부터의 스트라이드 정보를 이용할 수 있고 콘볼루션 출력 데이터/비선형 콘볼루션 출력 데이터의 블록 또는 A, B, I 및 J를, 대응하는 통계 연산 레지스터(1008)에 지정된 4개의 데이터 요소(예를 들어, 2 × 2 비중첩 블록)에 대해 통계 연산을 수행하도록 구성된 통계 연산 엔진(1008)에 제공할 수 있는 메모리 액세스 유닛으로서 구성된다. 예를 들어, 통계 연산은 콘볼루션 레이어(230) 컴포넌트들과 풀링 컴포넌트(216) 사이의 대응하는 매치에 따라, 본 명세서에서 지정된 바와 같이, 최대일 수 있고 동일한 연산이거나 상이할 수 있다. 일단 통계 연산이 수행되면, 출력값은 풀링 출력 어드레스에 의해 표시된 어드레스에서 대응하는 테이블(예를 들어, 904a)에 저장될 수 있으며, 로드 저장 유닛(1006)에 의해 다시 수행되는 메모리 위치에 데이터를 저장한다.
상호접속부(806)는 CNN의 다양한 컴포넌트들을 접속시키는 상호접속부들(예컨대, 온 칩 버스 상호접속부들)을 포함할 수 있다. S 포트(1012)는 슬레이브 포트이고, M 포트(1010)는 마스터 포트이다. 슬레이브 포트(1012)는 예를 들어 스트라이드 레지스터(1002) 및 통계 연산 레지스터들(1004)을 프로그래밍하는데 이용될 수 있다. 마스터 포트(1010)는 예를 들어 메모리로부터 데이터를 인출하고 데이터를 메모리에 다시 저장하기 위해 로드 저장 유닛(1006)에 의해 이용될 수 있다.
도 11을 참조하면, 예시적인 프로세스 또는 상태 흐름(1100)이 도시되어 있다. 주 CPU(808) 상의 소프트웨어, 테이블들(904)을 갖는 관찰 유닛뿐만 아니라 풀링 컴포넌트들(216) 또는 이에 접속된 다른 컴포넌트들, 및 콘볼루션 데이터 출력이 인출/저장될 수 있는 메모리(814)/레지스터들(904, 1002, 1004) 및 가능하게는 풀링 레이어의 출력이 회신될 수 있는 동일한/상이한 메모리를 포함하는 다양한 CNN 레이어들의 양태들이 나타내진다. 프로세스 흐름(1100)은 본 명세서에서 설명되는 테이블들(904) 또는 다른 테이블들을 프로그래밍하는 도 8의 주 CPU(808) 상에서 실행되는 소프트웨어로 개시된다.
1102에서, 테이블(904a)은 예를 들어 대응하는 비중첩 데이터 블록들(예를 들어, 콘볼루션 슬라이딩 윈도우 연산들에 기인한 2 × 2 블록의 콘볼루션 출력들)의 최종 값들로서 J, L, N, P, Z, E, B, D, F의 어드레스들로 디버그/관찰 유닛에 채워질 수 있다.
그 후, 1104에서, 풀링 프로세서는 스트라이드 정보 또는 스트라이드 및 통계 연산과 같이 후속하여 수행될 풀링 연산들을 위한 파라미터들로 프로그래밍될 수 있다.
1106에서, 콘볼루션 레이어는 주 프로세서(808)와 함께 동작할 수 있고, 관찰 유닛은 콘볼루션의 출력이 저장될 어드레스에 대해 행해지는 액세스 또는 기입 액세스를 모니터링한다. 이것이 발생하자마자, 디버그/관찰 유닛(810)은 풀링 컴포넌트/프로세서(216)에게 데이터 블록의 이용가능성을 알린다.
1108에서, 테이블(904)에 지정된 메모리 위치에 대한 기입 액세스의 검출시, 출력 신호들(908)은 테이블(904)로부터 세부사항들을 검색하여 업데이트될 수 있고 풀링 컴포넌트들(216)에게 전송될 수 있다.
1110에서, 풀링 컴포넌트(216)는 이웃 데이터를 인출할 수 있으며, 이 예에서 관찰 유닛이 예를 들어 J, J의 어드레스 위치에 대해 업데이트가 이루어졌음을 표시하면, 풀링 컴포넌트(216)는 2 × 2 블록(또는 다른 크기의 비중첩 블록)을 완료하기 위해 A, B 및 I 또는 대응하는 연관 데이터 블록의 데이터를 인출해야 한다는 것을 알 수 있다. 그 다음에, 이들 중 4개 모두가 이용가능해지면, 1112에서 빠르게 통계 처리를 수행한다. 그 다음에, 1114에서 출력은 이 풀링 컴포넌트(216)로 지정되거나 연관된 테이블에서 풀링 출력 어드레스에 의해 결정된 메모리 위치로 회신된다.
본 명세서의 도 2 및 다른 도면들과 관련하여 위에서 논의한 바와 같이, 콘볼루션 및 풀링 컴포넌트들(212/214 및 216)은 관찰되는 계산 이득에서의 제1 속도 향상 및 더 낮은/동일한 전력 효율로서 병렬적으로 파이프라이닝될 수 있다(또는 파이프라인 처리과 함께 이용될 수 있다). 콘볼루션 출력들의 부분/서브세트가 검출되자마자, 풀링 컴포넌트(216)는 동일하거나 다른 콘볼루션/RELU 컴포넌트들(212, 214)이 처리하고 데이터 블록들의 다른 윈도우들을 출력하기 시작하는 동안 개시할 수 있다.
도 12를 참조하면, FC 레이어(208)의 FC 컴포넌트들(218)의 예가 도시되어 있다. 이것은 콘볼루션 컴포넌트들(212)/조합된 컴포넌트들(230)(콘볼루션(212) + RELU 컴포넌트들(214) 및 풀링 컴포넌트들(216)) 사이에서 파이프라인 처리 연산들로 제1 속도 향상을 추가로 보완하고 전력을 증가시키지 않고 계산 이득을 추가로 증가시키기 위해 발생할 수 있는 FC 레이어(208)에서의 제2 속도 향상을 도해하고 있다. FC 레이어(1200)는 완전 접속 레이어의 속도 향상을 나타낸다.
FC 레이어(208)에서 ANN을 형성하는 각각의 뉴런은 제1 FC 레이어(FC1)에서의 N1, N2, N3 및 제2 FC 레이어(FC2)의 일부로서의 N4 및 N5로 표시된 원들로 나타내질 수 있다. N4 및 N5는 N1, N2 및 N3으로 나타내진, 선행하는 레이어의 출력들 각각과 접속된다. 따라서, N1의 출력은 N4 및 N5 모두로 가는 입력들로서 제공된다. 유사하게, N2의 출력은 N4 및 N5 모두로 가며, N3도 동일하다. 유사하게, 3개의 뉴런 N1, N2 및 N3 모두는 동일한 입력 세트 X1, X2 및 X3에 접속되며 데이터 흐름 프로세서들로서 구조화된다. 이것은 N1, N2 및 N3에 공급되는 동일한 입력 세트 X1, X2 및 X3이다. 이와 같이, 완전 접속 레이어(218)에서, 뉴런의 출력은 임의의 수의 복수의 FC 레이어들을 포함할 수 있는 다음 레이어에서의 모든 입력으로 간다. 추가적으로, FC1의 모든 뉴런들은 FC2의 모든 입력들에 접속되며, W1-W15는 대응하는 입력 데이터의 처리 또는 팩터링의 일부로서 각각의 입력이 가중될 양을 정의하거나 할당되는 특정 가중치를 나타낸다.
도 13을 참조하면, 예를 들어 도 2의 뉴런 구조들의 네트 함수들(222, 226) 및 출력 함수들(224, 228)을 보다 상세히 나타낸 다른 실시예가 도시되어 있다.
도 2의 뉴런 구조와 관련하여 위에서 논의한 바와 같이, 각각의 뉴런은 적어도 2개의 함수를 포함할 수 있다. 하나의 함수는 NF로 주석 처리된 네트 함수로 지칭될 수 있으며, 다른 하나의 함수는 OF로 주석 처리된 출력 함수로 지칭될 수 있다. 네트 함수에 의해 수행되는 수학적 연산은 그 할당된/미리정의된/주어진 가중치와의 입력의 내적 곱셈일 수 있다.
예를 들어, N1의 함수들은 NF1 및 OF1로서 주석 처리된다. 유사하게, 뉴런 2의 네트 함수 및 출력 함수는 NF2 및 OF2로 주석 처리되고, 유사하게 뉴런들 N3 내지 N5는 각각 NF3 내지 NF5 및 OF3 내지 OF5로 주석 처리된다. 특정 FC 레이어(예를 들어, FC1, FC2)의 각각의 뉴런은 다른 것과 똑같은 정확한 입력 세트를 수신하지만 N1의 경우 W1, W2, W3과 같은 그 각각의 입력들과 연관된 상이한 또는 가변 가중치들, 및 다른 뉴런들에 대해 상이한 다른 가중치들, 즉 뉴런 2의 경우 W4, W5, W6 및 N3의 경우 W7, W8, W9를 갖는 네트 함수들을 갖는다. 뉴런(또는 FC 컴포넌트(218))의 각각의 네트 함수는, 네트 함수 = xa.(Wa) + xb.(Wb) + ....... + xm.(Wm)에 의해 표현되는 바와 같이, 나타나는 입력을 가중치에 곱하는 수학적 연산을 수행할 수 있다(예를 들어, ×1에 W1을 곱함, ×2에 W2를 곱한 것에 추가, ×3에 W3을 곱한 것에 추가, 및 다른 뉴런들 N2 및 N3에 대해서도 마찬가지임).
추가적으로, 각각의 뉴런의 출력 함수는 네트 함수의 출력을 취할 수 있으므로, 네트 함수의 출력은 뉴런의 출력 함수에 대한 입력들로서 작용한다. 따라서, 각각의 뉴런의 출력 함수(OF)는 네트 함수의 출력에 대해 알려진 수학적 함수(예를 들어, 시그모이드, 쌍곡 탄젠트, 사인 등 또는 다른 수학적 함수)를 수행할 수 있으며, 이것은 예를 들어 복수의 FC 레이어들의 임의의 수에 따라 FC2 등에서의 다음 단계 뉴런에 대한 입력이 된다.
도 14를 참조하면, 도 13의 FC 레이어(1300)의 데이터 의존성 그래프(1400)가 도시되어 있으며, 이는 추가 표현으로서 도 2의 FC 레이어(208)의 세부사항과 유사하거나 동일하다. FC1의 제1 단계에서는 NF1, NF2 및 NF3이 서로 바로 옆에 정렬되며, OF1, OF2 및 OF3이 동일한 FC1 아래에 다시 정렬된다. 예를 들어, NF1은 OF1에서 끝나고, NF2는 OF2에서 끝나거나 OF2에서 그 출력을 접속시키고, NF3은 OF3에서 끝난다. 데이터 흐름 프로세서들/처리와 마찬가지로, 선 또는 화살표는 OF1이 NF1에서 그 데이터를 수신할 때까지 OF1이 그 실행을 시작하지 않음을 보여준다. 각각의 OF에서의 처리는 입력들에서의 데이터 이용가능성에 대한 응답으로 개시된다. 마찬가지로, OF2는 NF2로부터 데이터를 수신하지 않으면 실행을 시작하지 않는다. 추가적으로, OF3은 NF3으로부터의 데이터가 수신될 때까지 실행을 시작하지 않는다.
FC2의 다음 단계에서, 복수의 접속들(화살표들)은 예를 들어, 이전 레이어 FC1의 출력 함수들의 출력들로서 NF4에서 끝난다. 마찬가지로, 완전 접속 레이어(208)에서의 뉴런들 각각은 이전 레이어의 모든 출력에 접속된다. 따라서, NF4의 연산은 NF4의 입력들에서 제공되는 OF1 내지 OF3의 출력들의 이용가능성에 의존하며, NF5의 연산은 NF5의 입력들에서 제공되는 OF1 내지 OF3의 출력들의 이용가능성에 의존하며, NF6에 대해서도 동일한 경우이다. 도 14는 조금 더 확장된 상이한 표현으로서 도 13과 유사하다. 임의의 수의 FC 레이어들은 ANN 또는 인공 신경망을 형성하는 각각의 단계 또는 레이어에서 임의의 수의 FC 컴포넌트들로 구현될 수 있다. NF4는 OF1-3으로부터 종속 데이터를 수신하자마자, OF4로 가는 출력을 생성하고, 그 다음에 OF4만이 그 결과를 생성한다. 이것이 데이터 흐름 처리이다.
도 14는 NF1이 실행 중이며 함수 NF1이 실행되자마자 OF1에 의해 후속되는 방식으로 실행(1402)의 크로노그래프를 추가로 도해한다. 그 후, NF2가 실행되고, OF2가 실행되며, 그 다음에 NF3이 실행된 다음 OF3이 순차적으로 실행된다. 예를 들어, OF1, OF2 및 OF3이 실행될 때에만, OF4가 실행된다. 이와 같이, NF4가 이용가능해진 후에만 OF4의 출력이 생성된다.
일 실시예에서, 실행의 크로노그래프(1404)를 이용하여, FC 레이어(208)는 또한 NF1이 그 계산을 완료하자마자, OF1이 실행을 개시하고 그 입력 데이터의 이용가능성에 의해 트리거링되도록 파이프라인 처리와 함께 동작할 수 있다. OF1이 실행되는 동안 NF2의 실행을 배제하지 않으므로 그 실행은 또한 OF1의 실행과 병렬적으로 개시된다. NF2가 NF1을 뒤따르는 실행의 이전 크로노그래프(1402)와 비교하여, OF1이 실행되는 동안, 컴포넌트들 및 기술들은 NF2를 실행하는데 이용될 수 있으며, NF2 및 OF1의 실행은 중첩된다. 따라서, OF6은 계산 이득이 증가하여 훨씬 더 많은 시간을 끝낼 수 있다.
이제 도 15를 참조하면, FC 레이어(208)에서 파이프라인 처리를 가능하게 하는 관찰 유닛 컴포넌트(810)의 다른 양태(1500)가 도시되어 있다. 테이블들(904)의 적어도 하나의 테이블(예를 들어, 1510, n은 임의의 정수임)은 관찰 유닛 컴포넌트(810)로 FC 레이어(208)에서 파이프라인 처리를 가능하게 하는 추가 확장으로서 다른 것들과 상이한 테이블을 포함할 수 있다. 1510을 포함하는 이들 테이블들(904)은 예를 들어 FC1의 입력들에서 초기에 수신되는 풀링 컴포넌트들(216)의 풀링 출력들 및 FC 레이어(218)의 FC 컴포넌트들(208)과 함께 동작할 수 있다. 하나의 테이블(1510)이 FC 레이어(208) 및 FC 컴포넌트들(216)에 전용이거나 할당된다.
테이블(1510)은 3개의 열, 즉 뉴런 네트 함수들의 목적지 어드레스들의 열(1502), 뉴런 출력 함수들의 목적지 어드레스들(1504) 및 활성화 함수(1506)를 포함한다. 일 예에서, 도 13에서의 NF1은 실행 중이고 곱셈과 덧셈 모두를 수행한다. OF1에 그 출력을 제출할 수 있다고 가정하면, NF1은 특정 메모리 위치에 그 출력을 기입해야 할 것이고, 그 메모리 위치는 제1 열(1502)(뉴런 네트 함수 출력 어드레스)로 들어가는 것이다. 그 다음에, 이 데이터, NF1에 의해 생성된 데이터는 그 출력 함수 OF1에 의해 승인된다. NF1의 출력 처리가 행해지면, OF1은 기본적으로 뉴런 활성화 함수 출력 어드레스 열(1504)에서의 어드레스들인 어딘가에 그 출력을 기입해야 할 것이다.
그러나, 출력 함수들은 이제 트랜잭션 매치 유닛(906)에 의해 대응하는 뉴런 네트 함수가 생성한 데이터의 이용가능성에 대해 통지되는 특수 코-프로세서에 의해 실행될 수 있다. 하나의 특정 예에서, NF1은 그 데이터를 OF1에 제공한다. 그 다음에, OF1은 그 출력을 계산하고 이를 그 위치에 저장하며, NF1의 출력 어드레스는 특정(예를 들어, 제1) 행의 제1 열에 있을 것이다. 다음 열(1504)에서, 테이블(1510)은 출력 함수 OF1의 출력 어드레스를 관리 또는 유지하고, 무엇이 수행되어야 하는지, 또는 어떤 종류의 출력 함수가 적용되어야 하는지, 시그모이드, tanh, 사인 곡선 등은 동일한 행의 제3 열(1506)에 기술된다. 함수들 또는 각각의 행은 서로 다를 수 있거나 유사할 수 있다. 따라서, 뉴런의 네트 함수(예를 들어, NF1)가 그 출력 어드레스에 기입하자마자, 이 연산은 트랜잭션 매치 컴포넌트(906)를 통해 검출되고, 이 연산의 세부사항들은 출력들(1508)을 통해 FC 컴포넌트로서 코-프로세서에 전달된다.
출력들(1508)은 입력 어드레스 및 출력 어드레스를 포함한다. 입력 어드레스는 기본적으로 네트 함수가 그 출력을 기입한 곳이다. 출력 어드레스는 출력 함수의 위치이며, 이는 출력 함수의 출력의 어드레스이다. 출력 함수는 예를 들어 812의 활성화 함수 코-프로세서에 의해 실행된다. 이것은 세 부분의 정보 출력들(1508)의 일부로서 트랜잭션 매치 유닛(906)에 의해 전달되는 트리거 표시/이벤트로서 입력들 중의 하나로 함수 선택기를 수신한다. 이들 세 부분의 정보는 FC 레이어(208)에 지정된 테이블(1510)의 행의 각각의 셀로부터 나온다. 함수 선택기는 제3 열(1506)로부터 나오고, 입력 어드레스는 제1 열(1502)로부터 나오며, 출력 어드레스는 제2 열(1504)로부터 검색된다.
도 16을 참조하면, 예를 들어 도 15의 출력들(1508)의 수신 컴포넌트로서, OF 컴포넌트의 FC 컴포넌트(812a) 또는 코-프로세서(812)의 예(1600)가 도시되어 있다. 예를 들어, 코-프로세서들(812) 중의 하나로서 FC 컴포넌트(812a)는 출력들(1508)을 수신하는 수신 컴포넌트일 수 있다. FC 컴포넌트(812a) 또는 FC 컴포넌트(218)와 동일한 것은 상호접속 마스터 포트 M(1610)을 통해 입력 어드레스에 의해 표시된 메모리 위치로부터 데이터를 획득할 수 있는 로드 저장 유닛(1608)을 포함하고, 그 데이터를 얻은 다음, 이를 함수-1(1602) 또는 함수-2(1604), 또는 임의의 번호의 컴포넌트들인 함수-m(1606)으로 주석 처리된 하드웨어 부분에 제출한다. 그 다음에, 로드/저장 유닛(1608)은 그 정보가 함수 선택기(SEL)로 불리는 인터페이스 또는 출력/입력 상에서 이용가능하기 때문에 이러한 함수들(1602 내지 1606) 중 어느 것이 이 최근에 인출된 데이터를 제출 또는 처리할 것인지를 알 수 있다. 함수-1(1602), 함수-2(1604) 또는 다른 방식(1606)이 주어진 함수에 따라 그 작업 처리를 수행하였으면, 그 함수(예를 들어, 피연산자 또는 다른 처리/수학적 함수)에 의해 생성된 데이터는 로드 저장 유닛(1608)에 의해 "출력 어드레스"로 표시된 메모리 위치에 저장된다.
이와 같이, 본 명세서에서 설명되는 FC 컴포넌트들의 네트 함수들은 파이프라인 처리에서 네트 함수 및 출력 함수의 실행을 중첩시키기 위해 함수 코-프로세서에서 구현되는 출력 함수들과 함께 주 CPU 상에서 실행될 수 있다. 풀링 컴포넌트들 및 조합된 레이어(230)의 컴포넌트들을 파이프라인 처리함으로써 제1 속도 향상과 함께, CNN은 추가 병렬 처리를 위한 풀링 윈도우의 이용가능성을 결정하는 능력을 갖고 동작할 수 있다. 여기에는 각각의 컴포넌트들을 통해 진행 중인 콘볼루션 및 RELU 연산들과 병렬적으로 풀링 윈도우에 대한 통계 연산을 시작할 수 있는 능력이 포함된다. 또한, CNN에 대한 제2 속도 향상에는 뉴런/FC 컴포넌트의 네트 함수의 실행 완료를 결정할 수 있는 능력, 및 다음 뉴런의 네트 함수의 실행과 중첩하는 뉴런의 활성화 함수의 실행을 시작할 수 있는 능력이 있다.
도 17을 참조하면, FC 레이어(208)에서의 예시적인 프로세스 또는 상태 흐름(1700)이 도시되어 있다. 도 11에 도시된 바와 유사하게, 프로세스 흐름은 주 CPU(808) 상의 소프트웨어, 테이블(1510)로 강화된 관찰 유닛뿐만 아니라 하나 이상의 활성화 함수 코-프로세서들 등으로서 이에 접속된 FC 컴포넌트들(218), 및 콘볼루션 데이터 출력이 인출될 수 있는 레지스터들(904, 1002, 1004)/메모리(814) 및 풀링 레이어의 출력이 회신될 수 있는 가능하게는 동일한/상이한 메모리를 포함할 수 있다.
프로세스 흐름(1700)은 관찰 유닛(810)에 의해 관리되는 테이블로서 테이블(1510)을 프로그래밍하는 도 8의 주 CPU(808) 상에서 실행되는 소프트웨어로 1702에서 개시한다.
1704에서, 관찰 유닛은 네트 함수가 네트 함수 출력으로 어드레스에 기입되었는지 여부를 결정하기 위해 상호접속 트랜잭션들을 모니터링한다. 어드레스에의 기입 기능에 응답하여, 관찰 유닛은 1706에서 이를 검출하고, 1708에서 네트 함수의 출력의 이용가능성에 관해 ANN에서의 활성화 함수 코-프로세서 또는 다음 FC 컴포넌트에 알린다. 1710에서, 활성화 함수 코-프로세서는 예를 들어 네트 함수의 출력을 인출하고, 1712에서 활성화 함수를 데이터에 적용하며, 1714에서 활성화 함수 출력을 메모리에 기입한다.
본 개시내용 내에서 설명된 방법들이 일련의 동작들 및 이벤트들로서 본 명세서에서 도시되고 설명되지만, 이러한 동작들 또는 이벤트들의 도시된 순서는 제한된 의미로 해석되지 않는다는 것을 알 것이다. 예를 들어, 일부 동작들은 상이한 순서들 및/또는 본 명세서에서 도시되고/되거나 설명된 것들과 관계 없이 다른 동작들 또는 이벤트들과 동시에 발생할 수 있다. 또한, 모든 도시된 동작들이 본 명세서의 설명의 하나 이상의 양태 또는 실시예를 구현하는데 요구되지 않을 수 있다. 또한, 본 명세서에서 도시된 동작들 중 하나 이상은 하나 이상의 별도의 동작 및/또는 단계에서 수행될 수 있다.
도 18을 참조하면, 본 개시내용에서 설명되는 다양한 양태들/실시예들/세부사항들에 따라 CNN에서 상이한 파이프라인 처리로 다양한 속도 향상들을 이용하기 위한 프로세스 흐름(1800)이 도시되어 있다. 이 방법(1800)은 1802에서 하나 이상의 프로세서(예를 들어, 콘볼루션 컴포넌트들(212))를 통해 하나 이상의 이미지로부터 데이터를 추출하는 콘볼루션 연산들을 수행하도록 개시한다.
1804에서, 콘볼루션 컴포넌트들은 하나 이상의 RELU(214)에게 세부적인 계층구조일 수 있는 콘볼루션 데이터를 데이터 세트들로서 제공하고, 그 다음에 콘볼루션 레이어(202) 또는 조합된 레이어(230)의 일부로서 비선형 콘볼루션 출력 데이터를 생성한다.
1806에서, 풀링 컴포넌트(216)는 비선형 콘볼루션 출력 데이터의 다양한 데이터 세트들로부터의 데이터의 비중첩 윈도우일 수 있는 데이터 윈도우(예를 들어, 풀링 윈도우)의 이용가능성의 트리거 및 데이터를 수신할 수 있다. 풀링 컴포넌트(216)는 비선형 콘볼루션 출력 데이터의 서브세트인 풀링 윈도우 및 이미지에 대해 생성되는 콘볼루션 데이터에 기반하여 콘볼루션 연산들과 병렬적으로 데이터 블록에 대한 풀링 연산들을 개시할 수 있다. 풀링 컴포넌트(216)는 관찰 유닛(810)에 의한 이 데이터 윈도우의 이용가능성에 의해 트리거링되고, 처리 후에 메모리에 출력을 기입한다.
다른 실시예들에서, 이 방법(1800)은 ANN의 제1 완전 접속 FC 레이어에서 제1 네트 함수 노드들의 제1 네트 함수 출력들을 제1 출력 함수 노드들에 제공하는 단계를 추가로 포함할 수 있다. 그 다음에, 제1 출력 함수 노드들의 제1 출력 함수 출력들은 ANN 출력들을 생성하도록 구성된 후속 FC 레이어의 제2 네트 함수 노드들에 제공될 수 있다. 제1 네트 함수(예를 들어, NF1)의 완료는 관찰 컴포넌트(810)에 의해 결정될 수 있고, 제1 노드들의 제1 네트 함수의 완료를 후속 레이어에 트리거링할 수 있으며, 제2 노드들의 제2 네트 함수는 파이프라인 처리를 통해 제1 FC 레이어의 출력 함수를 생성하는 제1 출력 망 노드와 병렬적으로 처리될 수 있다.
1808에서, 이 방법은 풀링 출력들에 기반하여 ANN의 인공 ANN 출력들을 제공하는 단계를 추가로 포함한다. ANN 출력들은 FC 레이어(208)의 출력들일 수 있으며, 또한 그 다음에 예를 들어 센서 데이터의 이미지들 내의 특정 패턴/고레벨 특징들의 인식 또는 결정에 이용되어 확률들로 분류된다. 패턴들의 인식으로부터, 보행자가 주행 경로에 있는 경우 등의 제동과 같은 다양한 조건들이 존재하는지 여부에 기반하여 다양한 조건들을 또한 결정한 다음 시스템 내의 결정들을 내릴 수 있다.
애플리케이션들(예를 들어, 프로그램 모듈들)은 특정한 작업들을 수행하거나 특정한 추상적 데이터 유형들을 구현하는, 루틴들, 프로그램들, 컴포넌트들, 데이터 구조들 등을 포함할 수 있다. 더욱이, 관련 기술분야의 통상의 기술자는 개시된 동작들이 그 각각이 하나 이상의 연관된 디바이스에 동작 결합될 수 있는, 퍼스널 컴퓨터들, 휴대형 컴퓨팅 디바이스들, 마이크로프로세서 기반 또는 프로그래머블 소비자 전자기기들뿐만 아니라, 단일 프로세서 또는 멀티프로세서 시스템들, 미니컴퓨터들, 주프레임 컴퓨터들을 포함하는 다른 시스템 구성들로 실시될 수 있다는 것을 알 것이다.
컴퓨팅 디바이스는 전형적으로 다양한 컴퓨터 판독가능한 매체를 포함할 수 있다. 컴퓨터 판독가능한 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있고 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체 둘 다를 포함한다. 예로서 그리고 제한하지 않고, 컴퓨터 판독가능한 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능한 명령어들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 이동식 및 비이동식 매체 둘 다를 포함한다. 컴퓨터 저장 매체(예를 들어, 하나 이상의 데이터 저장소)는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD ROM, 디지털 다기능 디스크(DVD) 또는 다른 광학 디스크 스토리지, 자기 카세트들, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스들, 또는 원하는 정보를 저장하는데 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있지만, 이들로 제한되지는 않는다.
통신 매체는 전형적으로 컴퓨터 판독가능한 명령어들, 데이터 구조들, 프로그램 모듈들, 또는 기타 데이터를 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호로 구현하고 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는 신호 내의 정보를 인코딩하기 위한 것과 같은 방식으로 설정 또는 변경된 그 특성들 중 하나 이상을 갖는 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는 유선 망 또는 직접 유선 접속과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 이러한 것들 중 어느 것의 조합들은 또한 컴퓨터 판독가능한 매체의 범위 내에 포함되어야 한다.
예들은, 방법, 방법의 동작들 또는 블록들을 수행하기 위한 수단, 기계에 의해 수행될 때 기계로 하여금 그 방법의 동작들, 또는 본 명세서에서 설명되는 실시예들 및 예들에 따라 복수의 통신 기술들을 이용하여 동시 통신하기 위한 장치 또는 시스템의 동작들을 수행하게 하는 명령어들을 포함하는 적어도 하나의 기계 판독가능한 매체와 같은 주제를 포함할 수 있다.
예 1은 콘볼루션 신경망(CNN)을 위한 시스템이며, 이 시스템은, 하나 이상의 이미지로부터 데이터를 추출하고, 비선형 콘볼루션 출력 데이터를 생성하도록 구성된 하나 이상의 RELU에 데이터를 제공하는 콘볼루션 연산들을 수행하도록 구성된 콘볼루션 컴포넌트, 비선형 콘볼루션 출력 데이터의 서브세트에 대한 풀링 윈도우에 기반하여 콘볼루션 연산들과 병렬적으로 파이프라이닝 프로세스를 통해 풀링 출력들을 생성하도록 구성된 풀링 컴포넌트, 및 풀링 출력들에 기반하여 ANN 출력들을 제공하는 인공 신경망(ANN)을 형성하고, ANN 출력들에 기반하여 하나 이상의 이미지에서 패턴 인식을 가능하게 하도록 구성된 완전 접속(FC) 컴포넌트를 포함한다.
예 2는 예 1의 주제를 포함하며, 풀링 컴포넌트는 풀링 윈도우의 이용가능성을 결정하고, 비선형 콘볼루션 출력 데이터의 상이한 서브세트들에 대응하는 복수의 풀링 윈도우들을 처리하도록 추가로 구성된다.
예 3은, 임의의 요소들을 임의적으로 포함하거나 생략하는, 예 1 및 예 2 중 어느 하나의 주제를 포함하며, FC 컴포넌트는 뉴런들의 후속 레이어에 결합된 뉴런들의 제1 레이어를 포함하고, 제1 레이어 및 후속 레이어의 뉴런들은 각각 네트 함수 출력을 제공하도록 구성된 네트 함수 노드, 및 네트 함수 출력으로부터 출력 함수 출력을 생성하도록 구성된 출력 함수 노드를 포함한다.
예 4는, 임의의 요소들을 임의적으로 포함하거나 생략하는, 예 1 내지 예 3 중 어느 하나의 주제를 포함하며, 뉴런들의 제1 레이어는 풀링 출력들, 콘볼루션 컴포넌트로부터의 데이터 또는 비선형 콘볼루션 출력 데이터 중 적어도 하나를 포함하는 적어도 하나의 선행하는 레이어로부터 출력들을 수신하는 동일한 네트 함수 입력들의 제1 세트를 각각 갖는 제1 뉴런들을 포함하며, 뉴런들의 후속 레이어는 뉴런들의 제1 레이어로부터 동일한 출력들을 수신하는 동일한 네트 함수 입력들의 제2 세트를 각각 갖는 제2 뉴런들을 포함한다.
예 5는, 임의의 요소들을 임의적으로 포함하거나 생략하는, 예 1 내지 예 4 중 어느 하나의 주제를 포함하며, 네트 함수 노드는 입력들 및 입력들과 각각 연관된 가중치들의 내적 곱셈 및 대응하는 결과들의 합을 수행하도록 구성되고, 출력 함수 노드는 네트 함수 출력에 대해 활성화 함수를 실행하여 FC 컴포넌트의 출력을 제공하도록 구성되며, 제1 뉴런의 출력 함수 노드는 다른 파이프라이닝 프로세스를 통해 제2 뉴런의 네트 함수 노드와 병렬적으로 동작한다.
예 6은, 임의의 요소들을 임의적으로 포함하거나 생략하는, 예 1 내지 예 5 중 어느 하나의 주제를 포함하며, 풀링 컴포넌트는 비선형 콘볼루션 출력 데이터의 볼륨의 감소를 생성하고, 비선형 콘볼루션 출력 데이터를, FC 컴포넌트에 제공될 풀링 출력들로서, 스케일링된 불변 데이터로 처리하도록 추가로 구성된다.
예 7은, 임의의 요소들을 임의적으로 포함하거나 생략하는, 예 1 내지 예 6 중 어느 하나의 주제를 포함하며, 콘볼루션 컴포넌트와의 풀링 컴포넌트의 파이프라이닝 프로세스에 대응하는 하나 이상의 제1 테이블을 포함하는 관찰 유닛 컴포넌트, 및 트랜잭션 워치 컴포넌트를 더 포함하며, 트랜잭션 워치 컴포넌트는, 콘볼루션 컴포넌트에 의한, 하나 이상의 제1 테이블에 있는 메모리 위치에의 기입 동작을 검출하고, 콘볼루션 컴포넌트가 하나 이상의 제1 테이블에서 메모리 위치에의 기입 동작을 수행하는 것에 응답하여 풀링 컴포넌트의 통계 연산을 트리거링하고, 하나 이상의 제1 테이블로부터 풀링 컴포넌트로 복수의 출력들을 생성하도록 구성된다.
예 8은, 임의의 요소들을 임의적으로 포함하거나 생략하는, 예 1 내지 예 7 중 어느 하나의 주제를 포함하며, 복수의 출력들은, 풀링 윈도우와 연관된 마커들을 식별하는 하나 이상의 제1 테이블의 콘볼루션 워치 어드레스와 연관된 풀링 입력 어드레스, 풀링 컴포넌트의 연산들에 대한 트리거링, 통계 연산의 결과와 함께 하나 이상의 제1 테이블 내의 어드레스를 가리키는 풀링 출력 어드레스, 또는 하나 이상의 제1 테이블을 풀링 컴포넌트에 연관시키는 콘볼루션 레이어 식별자(ID) 중 적어도 하나를 포함한다.
예 9는, 임의의 요소들을 임의적으로 포함하거나 생략하는, 예 1 내지 예 8 중 어느 하나의 주제를 포함하며, FC 레이어와 연관된 제2 테이블은, FC 컴포넌트의 네트 함수 노드의 네트 함수 출력에 대응하는 뉴런 네트 함수 출력 어드레스, 출력 함수 노드의 ANN 출력에 대응하는 뉴런 활성화 출력 어드레스, 및 출력 함수 노드에 의해 실행되는 활성화 함수 중 적어도 하나를 포함한다.
예 10은 콘볼루션 신경망(CNN)을 위한 장치이며, 이 장치는 하나 이상의 프로세서를 포함하며, 하나 이상의 프로세서는, 하나 이상의 프로세서의 동작들을 실행하기 위한 명령어들을 포함하는 메모리에 결합되며, 하나 이상의 이미지로부터, 하나 이상의 필터 커널을 통해 콘볼루션 데이터 세트들을 포함하는 데이터 특징들을 추출하고, 콘볼루션 데이터 세트들을 비선형 출력 데이터의 세트들로 변환하며, 비선형 출력 데이터의 세트들 중의 비선형 데이터의 제1 세트 또는 콘볼루션 데이터 세트들의 콘볼루션 데이터의 제1 세트가 이용가능하다는 결정에 응답하여, 데이터 특징들의 추출 또는 콘볼루션 데이터 세트들의 변환 중 적어도 하나와 병렬적으로 동작하는 파이프라이닝 프로세스를 통해 비선형 출력 데이터의 세트들에 대한 풀링 연산들로부터 풀링 출력들을 생성하도록 구성된다.
예 11은 예 10의 주제를 포함하며, 하나 이상의 프로세서는, 하나 이상의 이미지의 부분들 위로 슬라이딩하는 하나 이상의 콘볼루션 윈도우로 슬라이딩 콘볼루션들을 수행함으로써 데이터 특징들을 추출하여 하나 이상의 이미지의 특징 맵들을 생성하고 하나 이상의 콘볼루션 윈도우에 대응하는 데이터 특징의 존재 가능성을 결정하도록 추가로 구성된다.
예 12는, 임의의 요소들을 임의적으로 포함하거나 생략하는, 예 10 및 예 11의 주제를 포함하며, 하나 이상의 프로세서는, 풀링 윈도우에 기반하여 콘볼루션 데이터 세트들의 콘볼루션 데이터의 제1 세트를 콘볼루션 데이터의 스케일링된 불변 세트로 처리하는 풀링 연산과 병렬적으로 콘볼루션 연산을 통해 하나 이상의 이미지로부터 콘볼루션 데이터 세트들의 콘볼루션 데이터의 제2 세트를 추출하도록 추가로 구성된다.
예 13은, 임의의 요소들을 임의적으로 포함하거나 생략하는, 예 10 내지 예 12의 주제를 포함하며, 하나 이상의 프로세서는, 비선형 데이터의 세트들에 대응하는 풀링 출력들을 카테고리들로 분류함으로써 완전 접속(FC) 컴포넌트를 통해 풀링 출력들을 처리하도록 추가로 구성된다.
예 14는, 임의의 요소들을 임의적으로 포함하거나 생략하는, 예 10 내지 예 13의 주제를 포함하며, 하나 이상의 프로세서는, 입력들과 가중치들의 내적, 및 제1 FC 컴포넌트에서 풀링 출력들로부터의 가중된 입력들의 합을 포함하는 네트 함수를 수행하여 뉴런 네트 함수 출력을 생성하고, 다른 내적, 및 후속 FC 컴포넌트에서 풀링 출력들로부터의 입력들의 다른 합을 포함하는 다른 네트 함수를 수행하여 제2 뉴런 네트 함수 출력을 생성하는 것과 병렬적으로 제1 FC 컴포넌트에서 뉴런 네트 함수 출력에 대해 출력 함수를 수행하여 뉴런 활성화 함수 출력을 생성하도록 추가로 구성된다.
예 15는, 임의의 요소들을 임의적으로 포함하거나 생략하는, 예 10 내지 예 14의 주제를 포함하며, 제1 FC 컴포넌트 및 후속 FC 컴포넌트는 메모리로부터 명령어를 인출하지 않고 선행하는 FC 컴포넌트 또는 풀링 출력들로부터의 입력 데이터가 뉴런 입력들에서 이용가능하다는 것에 응답하여 동작하는 데이터 흐름 프로세스들을 포함한다.
예 16은, 임의의 요소들을 임의적으로 포함하거나 생략하는, 예 10 내지 예 15의 주제를 포함하며, 하나 이상의 프로세서는, 네트 함수 출력에 대응하는 뉴런 네트 함수 출력 어드레스, 뉴런의 출력에 대응하는 뉴런 활성화 함수 출력 어드레스, 및 뉴런의 출력 함수에 의해 실행되는 활성화 함수에 대한 엔트리들을 포함하는 테이블을 채워 네트 함수 출력에 기반하여 뉴런의 출력을 생성하도록 추가로 구성된다.
예 17은 콘볼루션 신경망(CNN)을 위한 방법이며, 이 방법은 하나 이상의 프로세서를 통해, 하나 이상의 이미지로부터 데이터를 추출하는 콘볼루션 연산들을 수행하는 단계, 하나 이상의 프로세서를 통해, 비선형 콘볼루션 출력 데이터를 생성하도록 구성된 하나 이상의 RELU에 데이터를 제공하는 단계, 하나 이상의 프로세서를 통해, 비선형 콘볼루션 출력 데이터의 서브세트에 대한 풀링 윈도우에 기반하여 콘볼루션 연산들과 병렬적으로 풀링 출력들을 생성하는 단계, 및 하나 이상의 프로세서를 통해, 풀링 출력들에 기반하여 ANN의 인공 신경망(ANN) 출력들을 제공하는 단계를 포함한다.
예 18은 예 17의 주제를 포함하며, 풀링 윈도우의 이용가능성의 결정을 생성하고, 비선형 콘볼루션 출력 데이터의 상이한 서브세트들에 대응하는 복수의 풀링 윈도우들을 처리하는 단계를 더 포함한다.
예 19는, 임의의 요소들을 임의적으로 포함하거나 생략하는, 예 17 및 예 18의 주제를 포함하며, ANN의 제1 완전 접속(FC) 레이어에서, 제1 네트 함수 노드들의 제1 네트 함수 출력들을 제1 출력 함수 노드들에 제공하는 단계, 및 제1 출력 함수 노드들의 제1 출력 함수 출력들을 ANN 출력들을 생성하도록 구성된 후속 FC 레이어의 제2 네트 함수 노드들에 제공하는 단계를 더 포함한다.
예 20은, 임의의 요소들을 임의적으로 포함하거나 생략하는, 예 17 내지 예 19의 주제를 포함하며, 제1 네트 함수 노드들 중 제1 네트 함수 노드의 완료를 결정하는 단계, 및 완료에 응답하여, 제1 FC 레이어의 출력 함수를 생성하는 제1 출력 망 노드와 병렬적으로 제2 네트 함수 노드들의 제2 네트 함수를 개시하는 단계를 더 포함한다.
본 명세서에서 설명된 양태들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 구현될 수 있다는 것을 이해하여야 한다. 소프트웨어로 구현될 때, 함수들은 컴퓨터 판독가능한 매체 상에 저장될 수 있거나, 컴퓨터 판독가능한 매체 상의 하나 이상의 명령어 또는 코드로서 전송될 수 있다. 컴퓨터 판독가능한 매체는 컴퓨터 프로그램을 한 곳에서 다른 곳으로 전달하는 것을 촉진하는 임의의 매체를 포함하는 컴퓨터 저장 매체 및 통신 매체 둘 다를 포함한다. 저장 매체는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 예로서, 그리고 제한하지 않고, 이러한 컴퓨터 판독가능한 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스들, 또는 명령어들 또는 데이터 구조들의 형태로 원하는 프로그램 코드 수단을 운반하고 저장하는데 이용될 수 있고 범용 또는 특수 목적 컴퓨터, 또는 범용 또는 특수 목적 프로세서에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능한 매체라고 적절하게 명명된다. 예를 들어, 소프트웨어가 웹사이트, 서버, 또는 동축 케이블, 광 섬유 케이블, 트위스티드 페어, 디지털 가입자 회선(DSL), 또는 적외선, 무선, 및 마이크로웨이브와 같은 무선 기술들을 이용하는 다른 원격 소스로부터 전송되면, 동축 케이블, 광 섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 무선, 및 마이크로웨이브와 같은 무선 기술들은 매체의 정의 내에 포함된다. 본 명세서에서 사용되는 디스크(disk 및 disc)는 CD, 레이저 디스크, 광 디스크, DVD, 플로피 디스크 및 블루-레이 디스크를 포함하며, 디스크(disk)들은 보통 자기적으로 데이터를 재생하는 반면, 디스크(disc)들은 레이저들에 의해 광학적으로 데이터를 재생한다. 이러한 것들의 조합들은 또한 컴퓨터 판독가능한 매체의 범위 내에 포함되어야 한다.
본 명세서에 개시된 양태들과 관련하여 설명된 다양한 예시적인 논리들, 논리 블록들, 모듈들, 및 회로들은 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 또는 다른 프로그래머블 논리 디바이스, 이산 게이트 또는 트랜지스터 논리, 이산 하드웨어 컴포넌트들, 또는 본 명세서에서 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현되거나 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 통상적인 프로세서, 제어기, 마이크로제어기, 또는 상태 기계일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들어, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 함께 한 하나 이상의 마이크로프로세서, 또는 임의의 다른 이러한 구성의 조합으로서 구현될 수 있다. 추가적으로, 적어도 하나의 프로세서는 본 명세서에서 설명된 동작들 및/또는 액션들 중 하나 이상을 수행하도록 동작가능한 하나 이상의 모듈을 포함할 수 있다.
소프트웨어 구현을 위해, 본 명세서에서 설명된 기술들은 본 명세서에서 설명된 기능들을 수행하는 모듈들(예를 들어, 절차들, 기능들 등)로 구현될 수 있다. 소프트웨어 코드들은 메모리 유닛들 내에 저장될 수 있고 프로세서들에 의해 실행될 수 있다. 메모리 유닛들은 프로세서 내에서 또는 프로세서 외부에서 구현될 수 있고, 이 경우에 메모리 유닛은 관련 기술분야에 알려진 바와 같은 다양한 수단을 통해 프로세서에 통신 결합될 수 있다. 또한, 적어도 하나의 프로세서는 본 명세서에서 설명된 기능들을 수행하도록 동작가능한 하나 이상의 모듈을 포함할 수 있다.
본 명세서에서 설명된 기술들은 CDMA, TDMA, FDMA, OFDMA, SC-FDMA 및 다른 시스템들과 같은 다양한 무선 통신 시스템들에 이용될 수 있다. 용어들 "시스템"과 "망"은 흔히 상호교환가능하게 사용된다. CDMA 시스템은 UTRA(Universal Terrestrial Radio Access), CDMA2000 등과 같은 무선 기술을 구현할 수 있다. UTRA는 광대역-CDMA(W-CDMA) 및 CDMA의 다른 변형들을 포함한다. 또한, CDMA2000은 IS-2000, IS-95 및 IS-856 표준들을 커버한다. TDMA 시스템은 GSM(Global System for Mobile Communications)과 같은 무선 기술을 구현할 수 있다. OFDMA 시스템은 E-UTRA(Evolved UTRA), UMB(Ultra Mobile Broadband), IEEE 802.11 (Wi-Fi), IEEE 802.16 (WiMAX), IEEE 802.20, Flash-OFDM 등과 같은 무선 기술을 구현할 수 있다. UTRA 및 E-UTRA는 UMTS(Universal Mobile Telecommunication System)의 일부이다. 3GPP LTE(Long Term Evolution)는 E-UTRA를 이용하는 UMTS의 릴리스이며, 다운링크 상에서 OFDMA를 이용하고 업링크 상에서 SC-FDMA를 이용한다. UTRA, E-UTRA, UMTS, LTE 및 GSM은 "3세대 파트너십 프로젝트"(3GPP)로 명명된 기구로부터의 문서들에 설명되어 있다. 추가적으로, CDMA2000 및 UMB는 "3세대 파트너십 프로젝트 2"(3GPP2)로 명명된 기구로부터의 문서들에 설명되어 있다. 또한, 이러한 무선 통신 시스템들은 언페어된 비허가 스펙트럼들을 흔히 이용하는 피어-투-피어(예를 들어, 모바일-투-모바일) 애드혹(ad hoc) 망 시스템들, 802.xx 무선 LAN, 블루투스 및 임의의 다른 단거리 또는 원거리 무선 통신 기술들을 추가적으로 포함할 수 있다.
단일 반송파 변조 및 주파수 영역 등화를 이용하는, 단일 반송파 주파수 분할 다중 액세스(SC-FDMA)는 개시된 양태들로 이용될 수 있는 기술이다. SC-FDMA는 OFDMA 시스템의 것들과 유사한 성능 및 본질적으로 유사한 전체 복잡성을 갖는다. SC-FDMA 신호는 그 고유한 단일 반송파 구조로 인해 낮은 피크 대 평균 전력비(PAPR)를 갖는다. SC-FDMA는 업링크 통신들에서 이용될 수 있고, 낮은 PAPR이 전송 전력 효율의 면에서 모바일 단말기에 이득일 수 있다.
더욱이, 본 명세서에서 설명된 다양한 양태들 또는 특징들은 표준 프로그래밍 및/또는 공학적 기술들을 이용하는 방법, 장치, 또는 제조 물품으로서 구현될 수 있다. 용어 "제조 물품"은 본 명세서에서 이용되는 바와 같이, 임의의 컴퓨터 판독가능한 디바이스, 캐리어 또는 매체로부터 액세스가능한 컴퓨터 프로그램을 포함하는 것으로 의도된다. 예를 들어, 컴퓨터 판독가능한 매체는 자기 저장 디바이스들(예를 들어, 하드 디스크, 플로피 디스크, 자기 스트립들 등), 광학 디스크들(예를 들어, CD, DVD 등), 스마트 카드들, 및 플래시 메모리 디바이스들(예를 들어, EPROM, 카드, 스틱, 키 드라이브 등)을 포함할 수 있지만 이들로 제한되지는 않는다. 추가적으로, 본 명세서에서 설명된 다양한 저장 매체는 정보를 저장하는 하나 이상의 디바이스 및/또는 다른 기계 판독가능한 매체를 나타낼 수 있다. 용어 "기계 판독가능한 매체"는 명령어(들) 및/또는 데이터를 저장, 포함 및/또는 운반할 수 있는 무선 채널들 및 다양한 다른 매체를 제한 없이 포함할 수 있다. 추가적으로, 컴퓨터 프로그램 제품은 컴퓨터로 하여금 본 명세서에서 설명된 기능들을 수행하게 하도록 동작가능한 하나 이상의 명령어 또는 코드를 갖는 컴퓨터 판독가능한 매체를 포함할 수 있다.
또한, 본 명세서에 개시된 양태들과 관련하여 설명된 방법 또는 알고리즘의 동작들 및/또는 액션들은 하드웨어에서, 프로세서에 의해 실행된 소프트웨어 모듈에서, 또는 이들의 조합에서 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 이동식 디스크, CD-ROM, 또는 관련 기술분야에 알려진 저장 매체의 임의의 다른 형태 내에 상주할 수 있다. 예시적인 저장 매체는 프로세서에 결합될 수 있으며, 프로세서는 저장 매체로부터 정보를 판독하고, 이에 정보를 기입할 수 있다. 대안으로, 저장 매체는 프로세서와 일체로 될 수 있다. 또한, 일부 양태들에서, 프로세서 및 저장 매체는 ASIC 내에 상주할 수 있다. 추가적으로, ASIC는 이용자 단말기 내에 상주할 수 있다. 대안으로, 프로세서 및 저장 매체는 이용자 단말기 내에 별도의 컴포넌트들로서 상주할 수 있다. 추가적으로, 일부 양태들에서, 방법 또는 알고리즘의 동작들 및/또는 액션들은 컴퓨터 프로그램 제품 내로 통합될 수 있는, 기계 판독가능한 매체 및/또는 컴퓨터 판독가능한 매체 상에 코드들 및/또는 명령어들의 하나 또는 임의의 조합 또는 그 세트로서 상주할 수 있다.
요약서에서 설명된 것을 포함하는, 주제 개시내용의 예시된 실시예들의 위 설명은 포괄적이거나, 개시된 실시예들을 개시된 정확한 형태들로 제한하려는 것은 아니다. 특정한 실시예들 및 예들이 예시적인 목적을 위해 본 명세서에서 설명되었지만, 관련 기술분야의 통상의 기술자가 인식할 수 있는 바와 같이, 다양한 수정들이 이러한 실시예들 및 예들의 범위 내에서 고려될 수 있다.
이와 관련하여, 개시된 주제가 다양한 실시예들 및 대응하는 도면들과 관련하여 설명되었지만, 적용가능한 경우에, 다른 유사한 실시예들이 이용될 수 있거나 개시된 주제에서 벗어나지 않고서 개시된 주제의 동일한, 유사한, 대안적인, 또는 대체적인 기능을 수행하기 위해 설명된 실시예들에 대해 수정들 및 추가들이 이루어질 수 있다는 것을 이해하여야 한다. 그러므로, 개시된 주제는 본 명세서에서 설명된 임의의 단일 실시예로 제한되지 않아야 하며, 오히려 아래의 첨부된 청구범위에 따른 폭 및 범위 내에서 해석되어야 한다.
특히 전술한 컴포넌트들 또는 구조들(어셈블리들, 디바이스들, 회로들, 시스템들 등)에 의해 수행되는 다양한 기능들과 관련하여, 이러한 컴포넌트들을 설명하는데 사용된 ("수단"에 대한 참조를 포함하는) 용어는 달리 표시되지 않는 한, 본 명세서에서 본 발명의 예시적으로 열거된 구현들에서의 기능을 수행하는 개시된 구조와 구조적으로 동등하지는 않더라도, 설명된 컴포넌트의 지정된 기능을 수행하는 임의의 컴포넌트 또는 구조에 대응하는 것으로 의도된다(예를 들어, 기능적으로 동등하다). 또한, 특정한 특징이 여러 구현들 중 단지 하나에 대해서만 개시될 수 있지만, 이러한 특징은 임의의 주어진 또는 특정한 응용을 위해 바람직하고 유리할 수 있는 것과 같이 다른 구현들의 하나 이상의 다른 특징과 조합될 수 있다.

Claims (20)

  1. 콘볼루션 신경망(CNN)을 위한 시스템으로서,
    하나 이상의 이미지로부터 데이터를 추출하고, 비선형 콘볼루션 출력 데이터를 생성하도록 구성된 하나 이상의 RELU(rectified linear unit)에 상기 데이터를 제공하는 콘볼루션 연산들(convolution operations)을 수행하도록 구성된 콘볼루션 컴포넌트;
    상기 비선형 콘볼루션 출력 데이터의 서브세트에 대한 풀링 윈도우에 기반하여 상기 콘볼루션 연산들과 병렬적으로 파이프라이닝 프로세스를 통해 풀링 출력들을 생성하도록 구성된 풀링 컴포넌트; 및
    상기 풀링 출력들에 기반하여 ANN 출력들을 제공하는 인공 신경망(ANN)을 형성하고, 상기 ANN 출력들에 기반하여 상기 하나 이상의 이미지에서 패턴 인식을 가능하게 하도록 구성된 완전 접속(FC) 컴포넌트
    를 포함하는, 콘볼루션 신경망(CNN)을 위한 시스템.
  2. 제1항에 있어서,
    상기 풀링 컴포넌트는 상기 풀링 윈도우의 이용가능성을 결정하고, 상기 비선형 콘볼루션 출력 데이터의 상이한 서브세트들에 대응하는 복수의 풀링 윈도우들을 처리하도록 추가로 구성되는, 콘볼루션 신경망(CNN)을 위한 시스템.
  3. 제1항에 있어서,
    상기 FC 컴포넌트는 뉴런들의 후속 레이어에 결합된 뉴런들의 제1 레이어를 포함하고, 상기 제1 레이어 및 상기 후속 레이어의 뉴런들은 각각 네트 함수 출력을 제공하도록 구성된 네트 함수 노드, 및 상기 네트 함수 출력으로부터 출력 함수 출력을 생성하도록 구성된 출력 함수 노드를 포함하는, 콘볼루션 신경망(CNN)을 위한 시스템.
  4. 제3항에 있어서,
    상기 뉴런들의 제1 레이어는 상기 풀링 출력들, 상기 콘볼루션 컴포넌트로부터의 상기 데이터 또는 상기 비선형 콘볼루션 출력 데이터 중 적어도 하나를 포함하는 적어도 하나의 선행하는 레이어로부터 출력들을 수신하는 동일한 네트 함수 입력들의 제1 세트를 각각 갖는 제1 뉴런들을 포함하며, 상기 뉴런들의 후속 레이어는 상기 뉴런들의 제1 레이어로부터 동일한 출력들을 수신하는 동일한 네트 함수 입력들의 제2 세트를 각각 갖는 제2 뉴런들을 포함하는, 콘볼루션 신경망(CNN)을 위한 시스템.
  5. 제3항에 있어서,
    상기 네트 함수 노드는 입력들 및 상기 입력들과 각각 연관된 가중치들의 내적 곱셈 및 대응하는 결과들의 합을 수행하도록 구성되고, 상기 출력 함수 노드는 상기 네트 함수 출력에 대해 활성화 함수를 실행하여 FC 컴포넌트의 출력을 제공하도록 구성되며, 제1 뉴런의 상기 출력 함수 노드는 다른 파이프라이닝 프로세스를 통해 제2 뉴런의 상기 네트 함수 노드와 병렬적으로 동작하는, 콘볼루션 신경망(CNN)을 위한 시스템.
  6. 제1항에 있어서,
    상기 풀링 컴포넌트는 상기 비선형 콘볼루션 출력 데이터의 볼륨의 감소를 생성하고, 상기 비선형 콘볼루션 출력 데이터를, 상기 FC 컴포넌트에 제공될 상기 풀링 출력들로서, 스케일링된 불변 데이터로 처리하도록 추가로 구성되는, 콘볼루션 신경망(CNN)을 위한 시스템.
  7. 제1항에 있어서,
    상기 콘볼루션 컴포넌트와의 상기 풀링 컴포넌트의 파이프라이닝 프로세스에 대응하는 하나 이상의 제1 테이블을 포함하는 관찰 유닛 컴포넌트, 및 트랜잭션 워치 컴포넌트를 더 포함하며, 상기 트랜잭션 워치 컴포넌트는, 상기 콘볼루션 컴포넌트에 의한, 상기 하나 이상의 제1 테이블에 있는 메모리 위치에의 기입 동작을 검출하고, 상기 콘볼루션 컴포넌트가 상기 하나 이상의 제1 테이블에서 상기 메모리 위치에의 상기 기입 동작을 수행하는 것에 응답하여 상기 풀링 컴포넌트의 통계 연산을 트리거링하고, 상기 하나 이상의 제1 테이블로부터 상기 풀링 컴포넌트로 복수의 출력들을 생성하도록 구성되는, 콘볼루션 신경망(CNN)을 위한 시스템.
  8. 제7항에 있어서,
    상기 복수의 출력들은, 상기 풀링 윈도우와 연관된 마커들을 식별하는 상기 하나 이상의 제1 테이블의 콘볼루션 워치 어드레스와 연관된 풀링 입력 어드레스, 상기 풀링 컴포넌트의 연산들에 대한 트리거링, 상기 통계 연산의 결과와 함께 상기 하나 이상의 제1 테이블 내의 어드레스를 가리키는 풀링 출력 어드레스, 또는 상기 하나 이상의 제1 테이블을 상기 풀링 컴포넌트에 연관시키는 콘볼루션 레이어 식별자(ID) 중 적어도 하나를 포함하는, 콘볼루션 신경망(CNN)을 위한 시스템.
  9. 제7항에 있어서,
    상기 FC 레이어와 연관된 제2 테이블은, 상기 FC 컴포넌트의 네트 함수 노드의 네트 함수 출력에 대응하는 뉴런 네트 함수 출력 어드레스, 출력 함수 노드의 ANN 출력에 대응하는 뉴런 활성화 출력 어드레스, 및 상기 출력 함수 노드에 의해 실행되는 활성화 함수 중 적어도 하나를 포함하는, 콘볼루션 신경망(CNN)을 위한 시스템.
  10. 콘볼루션 신경망(CNN)을 위한 장치로서,
    하나 이상의 프로세서
    를 포함하며, 상기 하나 이상의 프로세서는,
    상기 하나 이상의 프로세서의 동작들을 실행하기 위한 명령어들을 포함하는 메모리에 결합되며;
    하나 이상의 이미지로부터, 하나 이상의 필터 커널을 통해 콘볼루션 데이터 세트들을 포함하는 데이터 특징들을 추출하고,
    상기 콘볼루션 데이터 세트들을 비선형 출력 데이터의 세트들로 변환하며,
    상기 비선형 출력 데이터의 세트들 중의 비선형 데이터의 제1 세트 또는 상기 콘볼루션 데이터 세트들의 콘볼루션 데이터의 제1 세트가 이용가능하다는 결정에 응답하여, 상기 데이터 특징들의 추출 또는 상기 콘볼루션 데이터 세트들의 변환 중 적어도 하나와 병렬적으로 동작하는 파이프라이닝 프로세스를 통해 상기 비선형 출력 데이터의 세트들에 대한 풀링 연산들로부터 풀링 출력들을 생성하도록 구성되는, 콘볼루션 신경망(CNN)을 위한 장치.
  11. 제10항에 있어서,
    상기 하나 이상의 프로세서는, 상기 하나 이상의 이미지의 부분들 위로 슬라이딩하는 하나 이상의 콘볼루션 윈도우로 슬라이딩 콘볼루션들을 수행함으로써 상기 데이터 특징들을 추출하여 상기 하나 이상의 이미지의 특징 맵들을 생성하고 상기 하나 이상의 콘볼루션 윈도우에 대응하는 데이터 특징의 존재 가능성을 결정하도록 추가로 구성되는, 콘볼루션 신경망(CNN)을 위한 장치.
  12. 제10항에 있어서,
    상기 하나 이상의 프로세서는, 풀링 윈도우에 기반하여 상기 콘볼루션 데이터 세트들의 콘볼루션 데이터의 제1 세트를 콘볼루션 데이터의 스케일링된 불변 세트로 처리하는 풀링 연산과 병렬적으로 콘볼루션 연산을 통해 상기 하나 이상의 이미지로부터 상기 콘볼루션 데이터 세트들의 콘볼루션 데이터의 제2 세트를 추출하도록 추가로 구성되는, 콘볼루션 신경망(CNN)을 위한 장치.
  13. 제10항에 있어서,
    상기 하나 이상의 프로세서는, 상기 비선형 데이터의 세트들에 대응하는 상기 풀링 출력들을 카테고리들로 분류함으로써 완전 접속(FC) 컴포넌트를 통해 상기 풀링 출력들을 처리하도록 추가로 구성되는, 콘볼루션 신경망(CNN)을 위한 장치.
  14. 제13항에 있어서,
    상기 하나 이상의 프로세서는,
    입력들과 가중치들의 내적, 및 제1 FC 컴포넌트에서 상기 풀링 출력들로부터의 가중된 입력들의 합을 포함하는 네트 함수를 수행하여 뉴런 네트 함수 출력을 생성하고,
    다른 내적, 및 후속 FC 컴포넌트에서 상기 풀링 출력들로부터의 입력들의 다른 합을 포함하는 다른 네트 함수를 수행하여 제2 뉴런 네트 함수 출력을 생성하는 것과 병렬적으로 상기 제1 FC 컴포넌트에서 상기 뉴런 네트 함수 출력에 대해 출력 함수를 수행하여 뉴런 활성화 함수 출력을 생성하도록 추가로 구성되는, 콘볼루션 신경망(CNN)을 위한 장치.
  15. 제14항에 있어서,
    상기 제1 FC 컴포넌트 및 상기 후속 FC 컴포넌트는 상기 메모리로부터 명령어를 인출하지 않고 선행하는 FC 컴포넌트 또는 상기 풀링 출력들로부터의 입력 데이터가 뉴런 입력들에서 이용가능하다는 것에 응답하여 동작하는 데이터 흐름 프로세스들을 포함하는, 콘볼루션 신경망(CNN)을 위한 장치.
  16. 제10항에 있어서,
    상기 하나 이상의 프로세서는, 네트 함수 출력에 대응하는 뉴런 네트 함수 출력 어드레스, 뉴런의 출력에 대응하는 뉴런 활성화 함수 출력 어드레스, 및 상기 뉴런의 출력 함수에 의해 실행되는 활성화 함수에 대한 엔트리들을 포함하는 테이블을 채워(populate) 상기 네트 함수 출력에 기반하여 상기 뉴런의 출력을 생성하도록 추가로 구성되는, 콘볼루션 신경망(CNN)을 위한 장치.
  17. 콘볼루션 신경망(CNN)을 위한 방법으로서,
    하나 이상의 프로세서를 통해, 하나 이상의 이미지로부터 데이터를 추출하는 콘볼루션 연산들을 수행하는 단계;
    상기 하나 이상의 프로세서를 통해, 비선형 콘볼루션 출력 데이터를 생성하도록 구성된 하나 이상의 RELU에 상기 데이터를 제공하는 단계;
    상기 하나 이상의 프로세서를 통해, 상기 비선형 콘볼루션 출력 데이터의 서브세트에 대한 풀링 윈도우에 기반하여 상기 콘볼루션 연산들과 병렬적으로 풀링 출력들을 생성하는 단계; 및
    상기 하나 이상의 프로세서를 통해, 상기 풀링 출력들에 기반하여 인공 신경망(ANN)의 ANN 출력들을 제공하는 단계
    를 포함하는, 콘볼루션 신경망(CNN)을 위한 방법.
  18. 제17항에 있어서,
    상기 풀링 윈도우의 이용가능성의 결정을 생성하고, 상기 비선형 콘볼루션 출력 데이터의 상이한 서브세트들에 대응하는 복수의 풀링 윈도우들을 처리하는 단계를 더 포함하는, 콘볼루션 신경망(CNN)을 위한 방법.
  19. 제17항에 있어서,
    상기 ANN의 제1 완전 접속(FC) 레이어에서, 제1 네트 함수 노드들의 제1 네트 함수 출력들을 제1 출력 함수 노드들에 제공하는 단계; 및
    상기 제1 출력 함수 노드들의 제1 출력 함수 출력들을 상기 ANN 출력들을 생성하도록 구성된 후속 FC 레이어의 제2 네트 함수 노드들에 제공하는 단계를 더 포함하는, 콘볼루션 신경망(CNN)을 위한 방법.
  20. 제19항에 있어서,
    상기 제1 네트 함수 노드들 중 제1 네트 함수 노드의 완료를 결정하는 단계; 및
    상기 완료에 응답하여, 상기 제1 FC 레이어의 출력 함수를 생성하는 제1 출력 망 노드와 병렬적으로 상기 제2 네트 함수 노드들의 제2 네트 함수를 개시하는 단계를 더 포함하는, 콘볼루션 신경망(CNN)을 위한 방법.
KR1020180105882A 2017-09-29 2018-09-05 콘볼루션 신경망 계산 처리량의 가속화 KR20190038318A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/719,829 2017-09-29
US15/719,829 US10482337B2 (en) 2017-09-29 2017-09-29 Accelerating convolutional neural network computation throughput

Publications (1)

Publication Number Publication Date
KR20190038318A true KR20190038318A (ko) 2019-04-08

Family

ID=65727803

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180105882A KR20190038318A (ko) 2017-09-29 2018-09-05 콘볼루션 신경망 계산 처리량의 가속화

Country Status (4)

Country Link
US (1) US10482337B2 (ko)
JP (1) JP7280026B2 (ko)
KR (1) KR20190038318A (ko)
DE (1) DE102018123143A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110084363A (zh) * 2019-05-15 2019-08-02 电科瑞达(成都)科技有限公司 一种基于fpga平台的深度学习模型加速方法
KR102243125B1 (ko) * 2020-07-31 2021-04-22 주식회사 웨이센 신경망 모델을 이용한 영상의 복합 특성 분류 방법 및 장치
WO2022255561A1 (ko) * 2021-06-04 2022-12-08 오픈엣지테크놀로지 주식회사 고효율 풀링 방법 및 이를 위한 장치
KR20230007698A (ko) * 2021-07-06 2023-01-13 한국과학기술원 인공지능 기반의 변형가능한 기준 마커 생성 및 인식 방법 및 그 시스템
WO2023090499A1 (ko) * 2021-11-19 2023-05-25 서울과학기술대학교 산학협력단 심층신경망을 위한 희소성 학습 기반 필터 프루닝 기법

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10366328B2 (en) * 2017-09-19 2019-07-30 Gyrfalcon Technology Inc. Approximating fully-connected layers with multiple arrays of 3x3 convolutional filter kernels in a CNN based integrated circuit
US10387740B2 (en) * 2016-10-10 2019-08-20 Gyrfalcon Technology Inc. Object detection and recognition apparatus based on CNN based integrated circuits
US10417527B2 (en) * 2017-09-06 2019-09-17 Irdeto B.V. Identifying an object within content
CN108062780B (zh) * 2017-12-29 2019-08-09 百度在线网络技术(北京)有限公司 图像压缩方法和装置
GB2574372B (en) * 2018-05-21 2021-08-11 Imagination Tech Ltd Implementing Traditional Computer Vision Algorithms As Neural Networks
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
US20200106828A1 (en) * 2018-10-02 2020-04-02 Mellanox Technologies, Ltd. Parallel Computation Network Device
US10726516B2 (en) * 2018-10-11 2020-07-28 Futurewei Technologies, Inc. Arithmetic logic unit (ALU)-centric operations in graphics processing units (GPUs)
US11720997B2 (en) 2018-10-19 2023-08-08 Samsung Electronics Co.. Ltd. Artificial intelligence (AI) encoding device and operating method thereof and AI decoding device and operating method thereof
WO2020080827A1 (en) 2018-10-19 2020-04-23 Samsung Electronics Co., Ltd. Ai encoding apparatus and operation method of the same, and ai decoding apparatus and operation method of the same
WO2020080665A1 (en) 2018-10-19 2020-04-23 Samsung Electronics Co., Ltd. Methods and apparatuses for performing artificial intelligence encoding and artificial intelligence decoding on image
US11640522B2 (en) 2018-12-13 2023-05-02 Tybalt, Llc Computational efficiency improvements for artificial neural networks
US11144282B2 (en) * 2019-01-16 2021-10-12 Mediatek Inc. Mathematical accelerator for artificial intelligence applications
US11625393B2 (en) 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
US11113838B2 (en) * 2019-03-26 2021-09-07 Nec Corporation Deep learning based tattoo detection system with optimized data labeling for offline and real-time processing
JP2020201883A (ja) * 2019-06-13 2020-12-17 キヤノン株式会社 データ処理装置及びその制御方法
US11586943B2 (en) * 2019-08-12 2023-02-21 Micron Technology, Inc. Storage and access of neural network inputs in automotive predictive maintenance
WO2021035079A1 (en) * 2019-08-22 2021-02-25 Google Llc Propagation latency reduction
KR20210036715A (ko) 2019-09-26 2021-04-05 삼성전자주식회사 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크의 풀링을 처리하는 방법
KR20210039197A (ko) 2019-10-01 2021-04-09 삼성전자주식회사 데이터를 처리하는 방법 및 장치
EP4040342A4 (en) * 2019-10-02 2023-08-02 Electronics and Telecommunications Research Institute METHOD OF LEARNING AND SIMPLIFYING DEEP NEURONAL NETWORK STRUCTURE
KR20210056179A (ko) 2019-11-08 2021-05-18 삼성전자주식회사 Ai 부호화 장치 및 그 동작방법, 및 ai 복호화 장치 및 그 동작방법
JP6854969B1 (ja) * 2019-12-04 2021-04-07 三菱電機株式会社 送信装置、送信方法および記憶媒体
CN111047035B (zh) * 2019-12-09 2024-04-19 Oppo广东移动通信有限公司 神经网络处理器、芯片和电子设备
CN111002980B (zh) * 2019-12-10 2021-04-30 苏州智加科技有限公司 基于深度学习的道路障碍物轨迹预测方法和系统
US11687778B2 (en) 2020-01-06 2023-06-27 The Research Foundation For The State University Of New York Fakecatcher: detection of synthetic portrait videos using biological signals
US20210216868A1 (en) * 2020-01-08 2021-07-15 Maxim Integrated Products, Inc. Systems and methods for reducing memory requirements in neural networks
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
CN111275784B (zh) * 2020-01-20 2023-06-13 北京百度网讯科技有限公司 生成图像的方法和装置
CN111260545B (zh) * 2020-01-20 2023-06-20 北京百度网讯科技有限公司 生成图像的方法和装置
US11252027B2 (en) 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
JP7404111B2 (ja) * 2020-03-10 2023-12-25 株式会社東芝 プロセッサ性能測定装置
US11507817B2 (en) 2020-04-17 2022-11-22 Samsung Electronics Co., Ltd. System and method for performing computations for deep neural networks
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
CN112070210A (zh) * 2020-08-20 2020-12-11 成都恒创新星科技有限公司 一种基于fpga的多并行策略卷积网络加速器
CN112488126A (zh) * 2020-11-30 2021-03-12 北京百度网讯科技有限公司 特征图处理方法、装置、设备以及存储介质
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
CN114943635B (zh) * 2021-09-30 2023-08-22 太初(无锡)电子科技有限公司 一种基于异构协同计算核心的融合算子设计与实现方法
KR20230066697A (ko) * 2021-11-08 2023-05-16 한국전자기술연구원 딥러닝 가속기를 위한 풀링 장치
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6314628B2 (ja) 2014-04-28 2018-04-25 株式会社デンソー 演算処理装置
US9373059B1 (en) * 2014-05-05 2016-06-21 Atomwise Inc. Systems and methods for applying a convolutional network to spatial data
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US9514391B2 (en) * 2015-04-20 2016-12-06 Xerox Corporation Fisher vectors meet neural networks: a hybrid visual classification architecture
EP3582151A1 (en) * 2015-08-15 2019-12-18 Salesforce.com, Inc. Three-dimensional (3d) convolution with 3d batch normalization
US9792531B2 (en) * 2015-09-16 2017-10-17 Siemens Healthcare Gmbh Intelligent multi-scale medical image landmark detection
US10115032B2 (en) 2015-11-04 2018-10-30 Nec Corporation Universal correspondence network
US10846591B2 (en) 2015-12-29 2020-11-24 Synopsys, Inc. Configurable and programmable multi-core architecture with a specialized instruction set for embedded application based on neural networks
JP6658033B2 (ja) 2016-02-05 2020-03-04 富士通株式会社 演算処理回路、および情報処理装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110084363A (zh) * 2019-05-15 2019-08-02 电科瑞达(成都)科技有限公司 一种基于fpga平台的深度学习模型加速方法
CN110084363B (zh) * 2019-05-15 2023-04-25 电科瑞达(成都)科技有限公司 一种基于fpga平台的深度学习模型加速方法
KR102243125B1 (ko) * 2020-07-31 2021-04-22 주식회사 웨이센 신경망 모델을 이용한 영상의 복합 특성 분류 방법 및 장치
WO2022255561A1 (ko) * 2021-06-04 2022-12-08 오픈엣지테크놀로지 주식회사 고효율 풀링 방법 및 이를 위한 장치
KR20230007698A (ko) * 2021-07-06 2023-01-13 한국과학기술원 인공지능 기반의 변형가능한 기준 마커 생성 및 인식 방법 및 그 시스템
WO2023090499A1 (ko) * 2021-11-19 2023-05-25 서울과학기술대학교 산학협력단 심층신경망을 위한 희소성 학습 기반 필터 프루닝 기법

Also Published As

Publication number Publication date
JP2019079505A (ja) 2019-05-23
JP7280026B2 (ja) 2023-05-23
US20190102640A1 (en) 2019-04-04
DE102018123143A1 (de) 2019-04-04
US10482337B2 (en) 2019-11-19

Similar Documents

Publication Publication Date Title
KR20190038318A (ko) 콘볼루션 신경망 계산 처리량의 가속화
Srivastava et al. Comparative analysis of deep learning image detection algorithms
US10902615B2 (en) Hybrid and self-aware long-term object tracking
Chen et al. Fast vehicle detection algorithm in traffic scene based on improved SSD
US10318848B2 (en) Methods for object localization and image classification
US10410096B2 (en) Context-based priors for object detection in images
EP3256992A1 (en) Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks
KR20180048930A (ko) 분류를 위한 강제된 희소성
Chen et al. GPU-accelerated real-time stereo estimation with binary neural network
Pei et al. Localized traffic sign detection with multi-scale deconvolution networks
Junos et al. Automated object detection on aerial images for limited capacity embedded device using a lightweight CNN model
Ayachi et al. Real-time implementation of traffic signs detection and identification application on graphics processing units
Bacea et al. Single stage architecture for improved accuracy real-time object detection on mobile devices
Tsai et al. MobileNet-JDE: a lightweight multi-object tracking model for embedded systems
Xu et al. Deepflux for skeleton detection in the wild
Vaidya et al. Hardware efficient modified cnn architecture for traffic sign detection and recognition
Liu et al. Lightweight target detection algorithm based on YOLOv4
US20220066776A1 (en) Accelerating processor based artificial neural network computation
Al-Huda et al. Asymmetric dual-decoder-U-Net for pavement crack semantic segmentation
Asyraf et al. CNN-based YOLOv3 comparison for underwater object detection
Merzoug et al. Deep learning for resource-limited devices
Tseng et al. Image semantic segmentation with an improved fully convolutional network
Chadalawada Real time detection and recognition of construction vehicles: using deep learning methods
Lis et al. PointPillars backbone type selection for fast and accurate LiDAR object detection
KR102127855B1 (ko) 검출 반복성을 최대화 하는 특징점 선별방법