KR20180050928A - 컨볼루션 신경망 처리 방법 및 장치 - Google Patents
컨볼루션 신경망 처리 방법 및 장치 Download PDFInfo
- Publication number
- KR20180050928A KR20180050928A KR1020160147562A KR20160147562A KR20180050928A KR 20180050928 A KR20180050928 A KR 20180050928A KR 1020160147562 A KR1020160147562 A KR 1020160147562A KR 20160147562 A KR20160147562 A KR 20160147562A KR 20180050928 A KR20180050928 A KR 20180050928A
- Authority
- KR
- South Korea
- Prior art keywords
- kernel
- input
- elements
- convolution
- neural network
- Prior art date
Links
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 99
- 238000003672 processing method Methods 0.000 title claims abstract description 24
- 238000013528 artificial neural network Methods 0.000 claims description 85
- 238000000034 method Methods 0.000 claims description 50
- 239000000872 buffer Substances 0.000 claims description 48
- 238000004364 calculation method Methods 0.000 claims description 33
- 238000004590 computer program Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 12
- 239000011159 matrix material Substances 0.000 description 9
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000001914 filtration Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000003709 image segmentation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/95—Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
Abstract
컨볼루션 신경망 처리 방법 및 장치가 개시된다. 일실시예에 따른 컨볼루션 신경망 처리 장치는 컨볼루션 레이어의 커널의 특성 및 컨볼루션 레이어의 입력의 특성 중 적어도 하나에 기초하여, 커널을 재사용하는 제1 연산 모드 및 입력을 재사용하는 제2 연산 모드 중 어느 하나의 연산 모드를 선택하고, 선택된 연산 모드에 따라 컨볼루션 연산을 수행할 수 있다.
Description
아래 실시예들은 컨볼루션 신경망의 처리 기술에 관한 것이다.
뉴럴 네트워크 기반의 딥러닝(deep learning) 기술은 다양한 분야에서 활용되고 있다. 예를 들어, 얼굴, 홍채, 음성 등을 인식하는 딥러닝 기반 생체 인식/인증 어플리케이션은 임베디드 단말(예를 들어, 스마트 폰)에 채용된다. 컨볼루션 신경망(Convolutional Neural Network; CNN)은 컨볼루션 연산을 활용하는 다 계층 신경망으로서, 딥러닝 기반 영상 및 음성 인식 분야에서 좋은 성능을 보여준다.
일 실시예에 따른 CNN을 이용한 인식 기술은 제한된 리소스의 단말 환경에서 구동이 가능하며, 다양한 환경에서 강인한 성능을 제공한다. 예를 들어, 일 실시예에 따른 CNN의 처리 기법은 얼굴 인식기를 스마트 폰의 트러스트존(Trust-Zone) 내에서 제한된 시간 내에 반응하도록 구현될 수 있다. CNN의 처리 기법은 싱글-코어로 구동되는 등 제한된 컴퓨팅 자원만 이용하여 구현될 수도 있다. 주어진 데이터에 행렬 곱셉 연산을 적용하는 CNN에 있어서, 일 실시예에 따른 CNN의 처리 기법은 데이터 로드와 연산 횟수를 줄여 메모리 사용을 절감하고, CNN의 고속 처리를 제공한다.
일실시예에 따른 컨볼루션 신경망 처리 방법은 컨볼루션 레이어의 커널의 특성 및 상기 컨볼루션 레이어의 입력의 특성 중 적어도 하나에 기초하여, 상기 커널을 재사용하는 제1 연산 모드 및 상기 입력을 재사용하는 제2 연산 모드 중 어느 하나의 연산 모드를 선택하는 단계; 및 상기 선택된 연산 모드에 따라 컨볼루션 연산을 수행하는 단계를 포함한다.
일실시예에 따르면, 상기 컨볼루션 신경망은 컨볼루션 레이어들을 포함하고, 컨볼루션 신경망 처리 방법은 상기 컨볼루션 레이어들의 커널들의 특성들 및 상기 컨볼루션 레이어들의 입력들의 특성들에 기초하여, 상기 컨볼루션 레이어들 별로 상기 제1 연산 모드 및 상기 제2 연산 모드 중 어느 하나를 적응적으로 선택하는 단계를 더 포함할 수 있다.
일실시예에 따르면, 상기 커널의 특성은 상기 커널에 포함된 커널 요소들 중 0이 차지하는 비율 및 상기 커널의 크기 중 적어도 하나를 포함하고, 상기 입력의 특성은 상기 입력에 포함된 입력 요소들 중 0이 차지하는 비율 및 상기 입력의 크기 중 적어도 하나를 포함한다.
일실시예에 따르면, 상기 어느 하나의 연산 모드를 선택하는 단계는 상기 입력에 포함된 입력 요소들 중 0이 차지하는 비율을 획득하는 단계; 및 상기 획득된 비율 및 상기 커널에 포함된 커널 요소들 중 0이 차지하는 비율 중 큰 값에 대응하는 연산 모드를 선택하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 어느 하나의 연산 모드를 선택하는 단계는 상기 입력의 크기 및 상기 커널의 크기의 비율에 기초하여 연산 모드를 선택하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 커널의 특성 및 상기 입력의 특성은 상기 컨볼루션 신경망 내 상기 컨볼루션 레이어의 깊이에 따라 결정되고, 상기 어느 하나의 연산 모드를 선택하는 단계는 상기 커널의 특성 및 상기 입력의 특성 중 적어도 하나에 기초하여, 데이터 로드 횟수 및 동작 메모리의 용량 중 적어도 하나와 관련된 제한조건(constraint)을 만족하는 연산 모드를 선택하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 어느 하나의 연산 모드를 선택하는 단계는 상기 제1 연산 모드의 제1 데이터 로드 횟수 및 상기 제2 연산 모드의 제2 데이터 로드 횟수 중 작은 값에 대응하는 연산 모드를 선택하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 연산 모드를 선택하는 단계는 상기 제1 데이터 로드 횟수를 획득하는 단계를 포함하고, 상기 제1 데이터 로드 횟수는 상기 커널의 크기로부터 계산된 상기 커널의 로드 횟수; 및 상기 커널에 포함된 커널 요소들 중 0의 개수와 상기 입력의 크기에 기초하여 계산된 상기 입력의 로드 횟수의 합에 의해 계산될 수 있다.
일실시예에 따르면, 상기 연산 모드를 선택하는 단계는 상기 입력에 포함된 입력 요소들 중 0의 개수를 획득하는 단계; 및 상기 입력의 크기로부터 계산된 상기 입력의 로드 횟수; 및 상기 입력 요소들 중 0의 개수와 상기 커널의 크기에 기초하여 계산된 상기 커널의 로드 횟수의 합을 통해 상기 제2 데이터 로드 횟수를 계산하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 컨볼루션 연산을 수행하는 단계는 상기 제1 연산 모드가 선택되는 경우, 상기 입력에 포함된 입력 요소들 중에서, 상기 커널에 포함된 커널 요소들에 대응하는 입력 요소들을 특정하는 제1 정보 및 상기 컨볼루션 연산의 출력에 포함된 출력 요소들 중에서, 상기 커널 요소들과 상기 특정된 입력 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 특정하는 제2 정보에 기초하여 컨볼루션 연산을 수행하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 컨볼루션 연산을 수행하는 단계는 상기 커널 요소들 중 어느 하나의 커널 요소를 로딩하는 단계; 상기 제1 정보에 기초하여, 상기 로딩된 커널 요소와 대응하는 입력 요소들을 로딩하는 단계; 및 상기 제2 정보에 기초하여, 상기 로딩된 커널 요소 및 상기 로딩된 입력 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 갱신하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 제1 정보는 상기 커널 요소들의 위치들, 상기 입력의 크기 및 패드(pad), 상기 커널의 크기, 및 스트라이드(stride)에 기초하여 결정되고, 상기 제2 정보는 상기 커널 요소들의 위치들 및 상기 특정된 입력 요소들의 위치들에 기초하여 결정될 수 있다.
일실시예에 따르면, 상기 컨볼루션 연산을 수행하는 단계는 상기 제1 연산 모드가 선택되는 경우, 상기 커널 요소들 중 어느 하나의 커널 요소를 로딩하는 단계; 및 상기 로딩된 커널 요소가 0인 경우, 상기 로딩된 커널 요소와 대응하는 입력 요소들의 로딩 또는 상기 로딩된 커널 요소와 관련된 연산들을 스킵(skip)하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 컨볼루션 연산을 수행하는 단계는 상기 제1 연산 모드가 선택되는 경우, 상기 커널에 포함된 커널 요소들에 대응하는 임시 버퍼를 할당하는 단계; 상기 커널에 포함된 커널 요소들 중 어느 하나의 커널 요소를 로딩하는 단계; 및 상기 로딩된 커널 요소 및 상기 로딩된 커널 요소에 대응하는 임시 버퍼에 기초하여, 컨볼루션 연산을 수행하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 컨볼루션 연산을 수행하는 단계는 상기 커널 요소들 중 상기 로딩된 커널 요소와 다른 커널 요소를 로딩하는 단계; 및 상기 다른 커널 요소가 0과 다른 경우, 상기 다른 커널 요소 및 상기 다른 커널 요소에 대응하는 임시 버퍼에 저장된 입력 요소들 사이의 연산 결과들에 기초하여, 컨볼루션 연산을 수행하는 단계를 더 포함할 수 있다.
일실시예에 따르면, 상기 컨볼루션 연산을 수행하는 단계는 상기 제1 연산 모드가 선택되는 경우, 상기 커널에 포함된 커널 요소들 중 어느 하나의 커널 요소를 로딩하는 단계; 상기 로딩된 커널 요소가 0인 경우 임시 버퍼의 할당을 스킵하는 단계; 상기 로딩된 커널 요소가 0과 다른 경우, 상기 로딩된 커널 요소의 위치, 상기 커널의 크기 및 스트라이드(stride), 상기 입력의 크기 및 패드(pad)에 기초하여 임시 버퍼를 할당하는 단계; 상기 로딩된 커널 요소에 대응하는 입력 요소들을 로딩하여, 상기 할당된 임시 버퍼에 저장하는 단계; 및 상기 로딩된 커널 요소 및 상기 임시 버퍼에 저장된 입력 요소들 사이의 연산 결과들에 기초하여 컨볼루션 연산을 수행하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 컨볼루션 연산을 수행하는 단계는 상기 제2 연산 모드가 선택되는 경우, 상기 커널에 포함된 커널 요소들 중에서, 상기 입력에 포함된 입력 요소들에 대응하는 커널 요소들을 특정하는 제1 정보 및 상기 컨볼루션 연산의 출력에 포함된 출력 요소들 중에서, 상기 입력 요소들과 상기 특정된 커널 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 특정하는 제2 정보에 기초하여 컨볼루션 연산을 수행하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 컨볼루션 연산을 수행하는 단계는 상기 입력 요소들 중 어느 하나의 입력 요소를 로딩하는 단계; 상기 제1 정보에 기초하여, 상기 로딩된 입력 요소와 대응하는 커널 요소들을 로딩하는 단계; 및 상기 제2 정보에 기초하여, 상기 로딩된 입력 요소 및 상기 로딩된 커널 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 갱신하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 제1 정보는 상기 입력 요소들의 위치들, 상기 커널의 크기 및 스트라이드(stride), 상기 입력의 크기 및 패드(pad)에 기초하여 결정되고, 상기 제2 정보는 상기 입력 요소들의 위치들 및 상기 특정된 커널 요소들의 위치들에 기초하여 결정될 수 있다.
일실시예에 따르면, 상기 컨볼루션 연산을 수행하는 단계는 상기 제2 연산 모드가 선택되는 경우, 상기 입력 요소들 중 어느 하나의 입력 요소를 로딩하는 단계; 및 상기 로딩된 입력 요소가 0인 경우, 상기 로딩된 입력 요소와 대응하는 커널 요소들의 로딩 또는 상기 로딩된 입력 요소와 관련된 연산들을 스킵(skip)하는 단계를 포함할 수 있다.
일실시예에 따른 컨볼루션 신경망 처리 장치는 컨볼루션 레이어의 커널의 특성 및 상기 컨볼루션 레이어의 입력의 특성 중 적어도 하나에 기초하여, 상기 커널을 재사용하는 제1 연산 모드 및 상기 입력을 재사용하는 제2 연산 모드 중 어느 하나의 연산 모드를 선택하고, 상기 선택된 연산 모드에 따라 컨볼루션 연산을 수행하는 프로세서를 포함한다.
일실시예에 따른 컨볼루션 신경망 처리 장치는 상기 제1 연산 모드의 제1 데이터 로드 횟수를 기록하는 메모리를 더 포함할 수 있다.
도 1은 일실시예에 따른 컨볼루션 신경망 처리 방법을 설명하기 위한 순서도이다.
도 2는 일실시에에 따른 컨볼루션 신경망의 예시도이다.
도 3은 일실시예에 따른 컨볼루션 연산을 설명하기 위한 도면이다.
도 4는 일실시예에 따른 제1 연산 모드를 설명하기 위한 도면이다.
도 5는 일실시예에 따른 제2 연산 모드를 설명하기 위한 도면이다.
도 6은 일실시예에 따른 연산 모드 선택의 동작을 설명하기 위한 도면이다.
도 7a 내지 도 7c는 일실시예에 따른 제1 연산 모드를 설명하기 위한 도면이다.
도 8a 내지 도 8b는 일실시예에 따른 제2 연산 모드를 설명하기 위한 도면이다.
도 9는 일실시예에 따른 컨볼루션 신경망 처리 장치의 구성의 예시도이다.
도 2는 일실시에에 따른 컨볼루션 신경망의 예시도이다.
도 3은 일실시예에 따른 컨볼루션 연산을 설명하기 위한 도면이다.
도 4는 일실시예에 따른 제1 연산 모드를 설명하기 위한 도면이다.
도 5는 일실시예에 따른 제2 연산 모드를 설명하기 위한 도면이다.
도 6은 일실시예에 따른 연산 모드 선택의 동작을 설명하기 위한 도면이다.
도 7a 내지 도 7c는 일실시예에 따른 제1 연산 모드를 설명하기 위한 도면이다.
도 8a 내지 도 8b는 일실시예에 따른 제2 연산 모드를 설명하기 위한 도면이다.
도 9는 일실시예에 따른 컨볼루션 신경망 처리 장치의 구성의 예시도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일실시예에 따른 컨볼루션 신경망 처리 방법을 설명하기 위한 순서도이다.
도 1을 참조하면, 컨볼루션 신경망 처리 장치는 컨볼루션 레이어의 커널의 특성 및 컨볼루션 레이어의 입력의 특성 중 적어도 하나에 기초하여, 커널을 재사용하는 제1 연산 모드 및 입력을 재사용하는 제2 연산 모드 중 어느 하나의 연산 모드를 선택할 수 있다(101). 기계 학습(machine learning)에 있어서, 신경망(Neural Network)의 일종인 컨볼루션 신경망(Convolutional Neural Network; CNN)은 컨볼루션 연산을 수행하도록 설계된 컨볼루션 레이어들을 포함한다. CNN을 구성하는 컨볼루션 레이어는 커널을 이용하여 입력과 연관된 컨볼루션 연산을 수행할 수 있다.
컨볼루션 신경망 처리 장치는 컨볼루션 신경망을 처리하는 장치로서, 소프트웨어 모듈, 하드웨어 모듈 또는 이들의 조합으로 구현될 수 있다. 예를 들어, 컨볼루션 신경망 처리 장치는 컨볼루션 신경망과 관련된 동작, 연산 및 명령 등을 생성 또는 처리할 수 있다.
컨볼루션 신경망 처리 장치는 컨볼루션 레이어들 별로 제1 연산 모드 및 제2 연산 모드 중 어느 하나를 적응적으로 선택할 수 있는데, 여기서 제1 연산 모드는 해당 컨볼루션 레이어의 커널을 재사용하는 방식으로 연산을 수행하는 모드이고, 제2 연산 모드는 해당 컨볼루션 레이어의 입력을 재사용하는 방식으로 연산을 수행하는 모드이다. 제1 연산 모드와 관련된 실시예는 도 3, 도 4, 도 7a, 도 7b 및 도 7c를 참조하여 설명되고, 제2 연산 모드와 관련된 실시예는 도 3, 도 5, 도 8a 및 도 8b를 참조하여 상세히 설명될 것이다.
커널 또는 입력을 재사용한다는 의미는 기 로딩된 커널 또는 입력을 반복적으로 사용하여 컨볼루션 레이어에서 컨볼루션 연산이 수행된다는 것이다. 컨볼루션 신경망 처리 장치는 미리 구축된 데이터베이스로부터 커널 또는 입력을 로딩할 수 있고, 데이터베이스는 컨볼루션 신경망 처리 장치에 포함된 메모리로 구현되거나 컨볼루션 신경망 처리 장치와 유선, 무선, 또는 네트워크 등으로 연결 가능한 서버 등의 외부 장치로 구현될 수 있다.
도 2는 일실시에에 따른 컨볼루션 신경망의 예시도이다. 도 2를 참조하면, 컨볼루션 신경망(200)은 복수의 컨볼루션 레이어들(201, 202 및 203)을 포함할 수 있다. 컨볼루션 신경망 처리 장치는 컨볼루션 레이어들의 커널들의 특성들 및 입력들의 특성들에 기초하여, 컨볼루션 레이어들 별로 연산 모드를 선택할 수 있으므로, 각 컨볼루션 레이어들에 적용되는 연산 모드는 해당 컨볼루션 레이어의 입력과 커널에 따라 달라질 수 있다.
여기서, 컨볼루션 레이어의 입력은 해당 컨볼루션 레이어에 입력으로 채용되는 데이터로서, 최초 입력 데이터 또는 이전 레이어에 의해 생성된 출력인 특징 맵(feature map)을 포함한다. 예를 들어, 도 2에 도시된 컨볼루션 레이어 1(201)의 입력은 CNN(200)의 최초 입력(204)이고, 컨볼루션 레이어 2(202)의 입력은 서브-샘플링 레이어(Sub-sampling layer)의 출력(206)일 수 있다. 여기서, 컨볼루션 레이어 2(202)의 입력(206)은 컨볼루션 레이어 1(201)의 출력(205)에 기초하여 서브-샘플링 레이어에 의해 생성된 것일 수 있다. 컨볼루션 레이어(203)의 입력은 W*H*C의 크기인 특징 맵(208)일 수 있다. 컨볼루션 신경망 처리 장치는 컨볼루션 레이어(203)의 커널을 이용하여 특징 맵(208)에 컨볼루션 연산을 수행할 수 있다. 컨볼루션 레이어(203)의 연산 결과, W*H*D의 크기인 특징 맵(209)이 생성될 수 있다.
컨볼루션 레이어의 커널은 해당 컨볼루션 레이어에서 컨볼루션 연산을 수행하기 위해 채용되는 커널로서, 예를 들어 3차원의 복수개의 필터들로 구성될 수 있다. 예를 들어, 컨볼루션 레이어(203)는 W*H*C의 크기인 특징 맵(208)에 컨볼루션 연산을 적용하기 위한 커널로서, D 개의 필터들을 포함하는 커널을 채용할 수 있다.
컨볼루션 신경망(200)은 복수의 컨볼루션 레이어들(201, 202 및 203)을 포함하며, 각 컨볼루션 레이어들(201, 202 및 203)의 입력(204, 206 및 208)의 특성과 커널의 특성(예를 들어, feature map의 크기 및 필터의 개수, 크기)은 서로 다를 수 있다. 예를 들어, 컨볼루션 레이어들(201, 202 및 203) 중 컨볼루션 레이어(201)의 깊이가 가장 작고, 컨볼루션 레이어(203)의 깊이가 가장 크다. 이 경우, 컨볼루션 레이어의 입력의 특성 및 커널의 특성은 컨볼루션 신경망(200) 내 해당 컨볼루션 레이어의 깊이에 따라 결정될 수 있다.
컨볼루션 신경망 처리 장치는 컨볼루션 레이어들(201, 202 및 203)의 커널들 및 입력들(204, 206 및 208)에 따라 컨볼루션 레이어들(201, 202 및 203) 별로 연산 모드를 적응적으로 선택할 수 있고, 이를 통해 컨볼루션 연산에 필요한 데이터의 로드 횟수, 연산(예를 들어, MAC(Multiply-accumulate) operation) 횟수를 줄여 메모리 사용을 절감하고 CNN의 고속 처리를 제공할 수 있다.
다시 도 1을 참조하면, 컨볼루션 신경망 처리 장치는 선택된 연산 모드에 따라 컨볼루션 연산을 수행할 수 있다(102). 컨볼루션 신경망 처리 장치는 제1 연산 모드 및 제2 연산 모드 중 선택된 연산 모드에 따라 해당 컨볼루션 레이어의 컨볼루션 연산을 수행할 수 있다.
이하, 도 2의 컨볼루션 레이어(203)의 입력(208) 및 출력(209)을 예시로 들면서, 컨볼루션 연산이 수행되는 실시예를 도 3 내지 도 5를 참조하여 설명한다.
도 3은 일실시예에 따른 컨볼루션 연산을 설명하기 위한 도면이다.
도 3을 참조하면, 컨볼루션 신경망 처리 장치는 커널(301)의 특성 및 입력(208)의 특성에 기초하여, 컨볼루션 레이어(203)에 대응하는 연산 모드를 선택할 수 있다. 여기서, 커널(301)은 컨볼루션 레이어(203)에서 컨볼루션 연산을 수행하기 위해 채용되는 커널이고, D 개의 필터들을 포함하며 각 필터의 크기는 K*K*C이다. 이 경우, 커널(301)의 크기는 K*K*C*D이다.
입력(208)의 크기는 W*H*C이므로, 입력(208)은 각각의 크기가 W*H인 데이터를 C 개 포함할 수 있다. 여기서, 입력(208)은 패딩(padding)이 적용된 특징 맵일 수 있는데, 패딩이란 입력의 일부 영역(예를 들어, 일반적으로 가장자리를 가리키지만 설계 의도에 따라 달라질 수 있음)를 특정 값으로 채우는 기법을 의미한다. 구체적으로, 패드(pad)의 크기를 1로 하여 입력에 패딩을 적용한다는 것은 특징 맵의 각 프레임의 가장자리에 특정 값(예를 들어, 0)을 채우는 동작을 의미하고, 제로 패딩(zero padding)은 그 특정 값을 0으로 설정하는 것을 의미한다. 예를 들어, X*Y*Z의 크기인 입력에 패드(pad)의 크기가 1인 제로 패딩(zero padding)이 적용된다면, 패딩이 적용된 입력은 가장자리가 0이고, 크기가 (X+1)*(Y+1)*Z인 데이터가 된다.
연산 모드가 선택되면, 컨볼루션 신경망 처리 장치는 D 개의 필터들을 이용하여 입력(208)을 필터링할 수 있고, 각각의 필터들에 대응하는 필터링 결과들로부터 출력(209)을 생성할 수 있다. 도 3을 참조하면, K*K*C의 크기인 각 필터에 의해 입력(208)이 필터링되므로, W*H의 크기인 필터링 결과들의 개수는 D 개이고, D 개의 필터링 결과들로부터 W*H*D의 크기인 출력(209)이 생성될 수 있다.
여기서, 출력(209)은 D 개의 채널들에 의해 생성된 D 개의 필터링 결과들을 포함할 수 있다. 구체적으로, K*K*C 크기의 D 번째의 필터(302)에 의해 W*H*C 크기의 입력(208)이 필터링되어, W*H 크기의 필터링 결과(303)가 생성된다. 보다 구체적으로, D 번째의 필터(302)는 C 개의 가중치 맵들을 포함하고, 각 가중치 맵의 크기는 K*K이다. 컨볼루션 신경망 처리 장치는 입력(208)에 포함된 W*H의 크기인 각 프레임 상에서 K*K의 크기인 각 가중치 맵을 특정 스트라이드(stride)로 슬라이딩하여, D 번째의 필터(302) 및 입력(208) 사이의 필터링 결과(303)를 생성할 수 있다. 여기서, 스트라이드(stride)란 컨볼루션 연산 시 가중치 맵을 슬라이딩하는 간격을 의미한다.
일반적으로 K*K*C*D의 크기인 커널(301)과 W*H*D의 크기인 입력(208)을 이용하여 스트라이드가 1인 컨볼루션 연산을 수행하는 경우, 커널(301)의 각 필터들은 W*H 번만큼 슬라이딩되기 때문에 커널(301)은 W*H 번만큼 중복되어 로딩될 필요가 있다. 따라서, 커널(301)의 데이터는 총 K*K*C*D*W*H 번 로딩된다(K*K*C*D의 크기인 커널(301)의 데이터가 W*H 번 중복되어 로딩되기 때문이다). 또한, 입력(208)의 데이터는 가중치 맵의 크기인 K*K 번 중복되어 로딩되고, 필터들의 개수(출력(209)의 채널들의 수)인 D 번 중복되어 로딩될 필요가 있다. 따라서, 입력(208)의 데이터는 총 K*K*C*D*W*H 번 로딩된다(W*H*C의 크기인 입력(208)의 데이터가 K*K*D 번 중복되어 로딩되기 때문이다). 이 때, 컨볼루션 연산을 수행하기 위한 데이터 로드 횟수는 2*K*K*C*D*W*H(커널(301)의 로드 횟수와 입력(208)의 로드 횟수의 합)가 된다.
일실시예에 따르면 컨볼루션 신경망 처리 장치는 제1 연산 모드에 따라 컨볼루션 연산 시 커널(301)을 재사용하여 데이터 로드 횟수와 연산 횟수를 줄일 수 있는데, 제1 연산 모드와 관련된 실시예를 도 4를 참조하여 설명한다. 다른 실시예에 따르면 컨볼루션 신경망 처리 장치는 제2 연산 모드에 따라 컨볼루션 연산 시 입력(208)을 재사용하여 데이터 로드 횟수와 연산 횟수를 줄일 수 있는데, 제2 연산 모드와 관련된 실시예를 도 5를 참조하여 설명한다.
도 4는 일실시예에 따른 제1 연산 모드를 설명하기 위한 도면이다. 제1 연산 모드는 커널 재사용 모드일 수 있다.
일실시예에 따르면, 컨볼루션 신경망 처리 장치는 커널(301)에 포함된 커널 요소들을 로딩하고, 로딩된 커널 요소들을 재사용하여 컨볼루션 연산을 수행할 수 있다. 도 4를 참조하면, 컨볼루션 신경망 처리 장치는 커널(301)에 포함된 커널 요소(401)를 로딩할 수 있다. 컨볼루션 신경망 처리 장치는 입력(208)에 포함된 입력 요소들 중에서 로딩된 커널 요소(401)에 대응하는 입력 요소들(402)을 특정하는 제1 정보에 기초하여, 입력 요소들(402)을 로딩할 수 있다. 컨볼루션 신경망 처리 장치는 로딩된 커널 요소(401)와 로딩된 입력 요소들(402) 사이의 연산을 수행할 수 있다.
컨볼루션 신경망 처리 장치는 출력(209)에 포함된 출력 요소들 중에서 로딩된 커널 요소(401)와 입력 요소들(402) 사이의 연산 결과들이 매핑되는 출력 요소들(403)을 특정하는 제2 정보에 기초하여, 출력 요소들(403)을 갱신할 수 있다. 컨볼루션 신경망 처리 장치는 로딩된 커널 요소(401)와 로딩된 입력 요소들(402) 사이의 연산 결과들을 이용하여 출력 요소들(403)을 갱신할 수 있다.
일실시예에 따른 제1 연산 모드에 있어서, 제1 정보는 입력(208)에 포함된 입력 요소들 중에서, 커널(301)에 포함된 커널 요소들에 대응하는 입력 요소들을 특정한다. 제1 정보는 커널(301)에 포함된 커널 요소들의 위치들, 커널(301)의 크기(K*K*C*D) 및 스트라이드, 입력(208)의 크기(W*H*C) 및 패드에 기초하여 결정될 수 있다. 예를 들어, 패딩이 적용된 입력(208)의 크기가 W*H*C이고, 스트라이드를 1로 가정하자. 이 경우, 제1 정보는 커널 요소(401)의 위치에 기초하여, 입력 요소들 중에서 커널 요소(401)와 대응하는 입력 요소들(402)을 특정한다.
일실시예에 따른 제1 연산 모드에 있어서, 제2 정보는 출력(209)에 포함된 출력 요소들 중에서, 커널 요소들과 특정된 입력 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 특정한다. 제2 정보는 커널(301)에 포함된 커널 요소들의 위치들 및 제1 정보에 의해 특정된 입력 요소들의 위치들에 기초하여 결정될 수 있다. 예를 들어, 제2 정보는 커널 요소(401)의 위치와 입력 요소들(402) 사이의 연산 결과들이 매핑되는 출력 요소들(403)을 특정한다. 커널 요소(401)와 관련된 연산 결과들에 의해 갱신된 출력 요소들(403)은 커널 요소(401)와 다른 커널 요소들에 의해 갱신될 수 있으므로, 도 4에 도시된 출력 요소들(403)은 최종 출력이 아닐 수 있다는 취지에서 점선으로 표시되었다.
컨볼루션 신경망 처리 장치는 로딩된 커널 요소(401)와 연관된 연산들을 수행하였으므로, 다음 커널 요소를 로딩할 수 있다. 컨볼루션 신경망 처리 장치는 제1 정보에 기초하여, 로딩된 다음 커널 요소에 대응하는 입력 요소들을 로딩할 수 있다. 컨볼루션 신경망 처리 장치는 제2 정보에 기초하여, 로딩된 다음 커널 요소와 로딩된 입력 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 갱신할 수 있다. 제1 연산 모드에 따르면, 컨볼루션 신경망 처리 장치는 커널(301)에 포함된 커널 요소들을 각각 한번씩 로딩할 수 있다. 컨볼루션 연산 수행시, 컨볼루션 신경망 처리 장치는 로딩된 커널 요소에 대응하는 입력 요소들의 수만큼 로딩된 커널 요소를 재사용할 수 있다. 예를 들어, 제1 연산 모드에서 컨볼루션 신경망 처리 장치는 커널(301)의 커널 요소들을 한번씩만 로딩하면 되기 때문에 커널(301)의 로드 횟수는 K*K*C*D(커널(301)의 크기)가 된다. 제1 연산 모드에서 컨볼루션 신경망 처리 장치는 입력(208)의 입력 요소들을 K*K*D 번 만큼 중복하여 로딩하기 때문에, 스트라이드가 1인 경우 입력(208)의 로드 횟수는 K*K*C*D*W*H가 된다. 이 경우, 제1 연산 모드의 데이터 로드 횟수(이하, 제1 데이터 로드 횟수라 함)는 K*K*C*D(1 + W*H) 가 되므로, 컨볼루션 신경망 처리 장치는 제1 연산 모드를 이용하여 데이터 로드 횟수를 줄일 수 있다.
일실시예에 따른 제1 연산 모드에서, 컨볼루션 신경망 처리 장치는 로딩된 커널 요소(401)가 0인지 여부를 판단할 수 있다. 컨볼루션 신경망 처리 장치는 로딩된 커널 요소(401)가 0인 경우, 커널 요소(401)와 대응하는 입력 요소들(402)의 로딩 또는 커널 요소(401)와 관련된 연산들을 스킵(skip)할 수 있다. 로딩된 데이터가 0인 경우, 해당 데이터와 관련된 추가 로딩 또는 연산을 스킵하는 기법을 제로 스키핑(zero skipping)이라 한다. 컨볼루션 신경망 처리 장치는 제로 스키핑을 이용하여, 제1 연산 모드의 데이터 로드 횟수를 줄일 수 있다. 예를 들어, 커널에 포함된 커널 요소들 중 0인 커널 요소의 개수를 Zk라 하면, 컨볼루션 신경망 처리 장치는 0인 커널 요소에 대응하는 입력 요소들의 로딩을 스킵할 수 있으므로, 스트라이드가 1인 경우 입력(208)의 로드 횟수는 W*H*(K*K*C*D - Zk)일 수 있다. 이 경우, 제1 데이터 로드 횟수는 K*K*C*D + W*H*(K*K*C*D - Zk)가 되고, 컨볼루션 신경망 처리 장치는 제로 스키핑을 통해 Zk 개의 커널 요소들과 관련된 연산들을 스킵할 수 있다.
도 5는 일실시예에 따른 제2 연산 모드를 설명하기 위한 도면이다. 제2 연산 모드는 입력 재사용 모드일 수 있다.
일실시예에 따르면, 컨볼루션 신경망 처리 장치는 입력(208)에 포함된 입력 요소들을 로딩하고, 로딩된 입력 요소들을 재사용하여 컨볼루션 연산을 수행할 수 있다. 도 5를 참조하면, 컨볼루션 신경망 처리 장치는 입력(208)에 포함된 입력 요소(501)를 로딩할 수 있다. 컨볼루션 신경망 처리 장치는 커널(301)에 포함된 커널 요소들 중에서 로딩된 입력 요소(501)에 대응하는 커널 요소들(502)을 특정하는 제1 정보에 기초하여, 커널 요소들(502)을 로딩할 수 있다. 컨볼루션 신경망 처리 장치는 로딩된 입력 요소(501)와 로딩된 커널 요소들(502) 사이의 연산을 수행할 수 있다.
컨볼루션 신경망 처리 장치는 출력(403)에 포함된 출력 요소들 중에서 로딩된 입력 요소(501)와 커널 요소들(502) 사이의 연산 결과들이 매핑되는 출력 요소들(503)을 특정하는 제2 정보에 기초하여, 출력 요소들(503)을 갱신할 수 있다. 컨볼루션 신경망 처리 장치는 로딩된 입력 요소(501)와 로딩된 커널 요소들(502) 사이의 연산 결과들을 이용하여 출력 요소들(503)을 갱신할 수 있다.
일실시예에 따른 제2 연산 모드에 있어서, 제1 정보는 커널(301)에 포함된 커널 요소들 중에서, 입력(208)에 포함된 입력 요소들에 대응하는 커널 요소들을 특정한다. 제1 정보는 입력(208)에 포함된 입력 요소들의 위치들, 커널(301)의 크기(K*K*C*D) 및 스트라이드, 입력(208)의 크기(W*H*C) 및 패드에 기초하여 결정될 수 있다. 예를 들어, 패딩이 적용된 입력(208)의 크기가 W*H*C이고, 스트라이드를 1로 가정하자. 이 경우, 제1 정보는 입력 요소(501)의 위치에 기초하여, 커널 요소들 중에서 입력 요소(501)와 대응하는 커널 요소들(502)을 특정한다.
일실시예에 따른 제2 연산 모드에 있어서, 제2 정보는 출력(209)에 포함된 출력 요소들 중에서, 입력 요소들과 특정된 커널 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 특정한다. 제2 정보는 입력(208)에 포함된 입력 요소들의 위치들 및 제1 정보에 의해 특정된 커널 요소들의 위치들에 기초하여 결정될 수 있다. 예를 들어, 제2 정보는 입력 요소(501)의 위치와 커널 요소들(502) 사이의 연산 결과들이 매핑되는 출력 요소들(503)을 특정한다. 입력 요소(501)와 관련된 연산 결과들에 의해 갱신된 출력 요소들(503)은 입력 요소(501)와 다른 입력 요소들에 의해 갱신될 수 있으므로, 도 5에 도시된 출력 요소들(503)은 최종 출력이 아닐 수 있다는 취지에서 점선으로 표시되었다.
컨볼루션 신경망 처리 장치는 로딩된 입력 요소(501)와 연관된 연산들을 수행하였으므로, 다음 입력 요소를 로딩할 수 있다. 컨볼루션 신경망 처리 장치는 제1 정보에 기초하여, 로딩된 다음 입력 요소에 대응하는 커널 요소들을 로딩할 수 있다. 컨볼루션 신경망 처리 장치는 제2 정보에 기초하여, 로딩된 다음 입력 요소와 로딩된 커널 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 갱신할 수 있다. 제2 연산 모드에 따르면, 컨볼루션 신경망 처리 장치는 입력(208)에 포함된 입력 요소들을 각각 한번씩 로딩할 수 있다. 컨볼루션 연산 수행시, 컨볼루션 신경망 처리 장치는 로딩된 입력 요소에 대응하는 커널 요소들의 수만큼 로딩된 입력 요소를 재사용할 수 있다. 예를 들어, 제2 연산 모드에서 컨볼루션 신경망 처리 장치는 입력(208)의 입력 요소들을 한번씩만 로딩하면 되기 때문에 입력(208)의 로드 횟수는 W*H*C(입력(208)의 크기)가 된다. 제2 연산 모드에서 컨볼루션 신경망 처리 장치는 커널(301)의 커널 요소들을 W*H 번 만큼 중복하여 로딩하기 때문에, 스트라이드가 1인 경우 커널(301)의 로드 횟수는 K*K*C*D*W*H가 된다. 이 경우, 제2 연산 모드의 데이터 로드 횟수(이하, 제2 데이터 로드 횟수라 함)는 W*H*C(1 + K*K*D)가 되므로, 컨볼루션 신경망 처리 장치는 제2 연산 모드를 이용하여 데이터 로드 횟수를 줄일 수 있다.
일실시예에 따른 제2 연산 모드에서, 컨볼루션 신경망 처리 장치는 로딩된 입력 요소(501)가 0인지 여부를 판단할 수 있다. 컨볼루션 신경망 처리 장치는 로딩된 입력 요소(501)가 0인 경우, 입력 요소(501)와 대응하는 커널 요소들(502)의 로딩 또는 입력 요소(501)와 관련된 연산들을 스킵(skip)할 수 있다. 컨볼루션 신경망 처리 장치는 제로 스키핑을 이용하여, 제2 연산 모드의 데이터 로드 횟수를 줄일 수 있다. 예를 들어, 입력에 포함된 입력 요소들 중 0인 입력 요소의 개수를 Zi라 하면, 컨볼루션 신경망 처리 장치는 0인 입력 요소에 대응하는 커널 요소들의 로딩을 스킵할 수 있으므로, 스트라이드가 1인 경우 커널(301)의 로드 횟수는 K*K*D*(W*H*C - Zi)일 수 있다. 이 경우, 제2 데이터 로드 횟수는 W*H*C + K*K*D*(W*H*C - Zi)가 되고, 컨볼루션 신경망 처리 장치는 제로 스키핑을 통해 Zk 개의 커널 요소들과 관련된 연산들을 스킵할 수 있다.
일실시예에 따르면 입력 요소들 중 0인 입력 요소는 컨볼루션 신경망의 활성화 함수(activation function)로 채용된 ReLU(Rectified Linear Unit) 함수에 의해 생성될 수 있다. 컨볼루션 신경망의 중간의 컨볼루션 레이어에 ReLU가 채용되면, 그 다음 컨볼루션 레이어의 입력은 0인 입력 요소들을 포함할 수 있다. 보다 구체적으로, ReLU 함수는 F(x) = max(0, x)로 표현될 수 있다. x는 컨볼루션 결과이고, F(x)는 ReLU 함수에 의한 출력 값이다. 음수인 컨볼루션 결과는 ReLU 함수에 의하여 0으로 출력된다. 학습 완료된 컨볼루션의 커널은 정규분포를 따르고, 입력 영상에 대하여 컨볼루션 결과는 확률적으로 50%는 음수, 50%는 양수일 수 있다.
일실시예에 따르면, 입력 요소들 중 0인 입력 요소는 컨볼루션 신경망의 프로세스 중 이용되는 업-스케일링(up-scaling)에 의하여 생성될 수 있다. 업-스케일링은 입력의 해상도를 증가시키는 기법으로, 예를 들어 기존 입력에 포함된 각 픽셀 주변에 새로운 픽셀들을 생성하는 방식으로 업-스케링일이 구현될 수 있다. 이 경우, 새롭게 생성된 픽셀들은 0으로 설정될 수 있다. 일 예로, 이미지 세그멘테이션(image segmentation)에서, 풀링(pooling) 또는 샘플링(sampling)으로 해상도가 감소되었다가 언풀링(unpooling) 또는 언샘플링(unsampling)으로 원래 해상도가 복원될 수 있다. 이 때, 해상도 복원 과정에서 새롭게 생성된 픽셀들은 0으로 설정될 수 있다. 언풀링 또는 언샘플링 결과, 75% 이상의 픽셀 값이 0일 수 있다.
도 6은 일실시예에 따른 연산 모드 선택의 동작을 설명하기 위한 도면이다.
도 6을 참조하면, 컨볼루션 신경망 처리 장치는 컨볼루션 연산 모드 선택 모듈을 포함할 수 있고, 컨볼루션 연산 모드 선택 모듈은 컨볼루션 레이어들 별로 연산 모드를 선택하는 모듈이다. 컨볼루션 신경망 처리 장치는 특정 컨볼루션 레이어의 연산 모드를 선택하기 위해 해당 컨볼루션 레이어의 커널의 특성과 입력의 특성을 고려한다. 여기서, 커널의 특성은 커널에 포함된 커널 요소들 중 0이 차지하는 비율 및 커널의 크기 중 적어도 하나를 포함하고, 입력의 특성은 입력에 포함된 입력 요소들 중 0이 차지하는 비율 및 입력의 크기 중 적어도 하나를 포함할 수 있다. 컨볼루션 신경망 처리 장치는 커널의 특성 및 입력의 특성 중 적어도 하나에 기초하여, 데이터 로드 횟수 및 동작 메모리의 용량 중 적어도 하나와 관련된 제한조건(constraint)을 만족하는 연산 모드를 선택할 수 있다.
일실시예에 따르면, 컨볼루션 신경망 처리 장치는 컨볼루션 레이어의 입력으로부터 입력에 포함된 입력 요소들 중 0이 차지하는 비율(Iz)을 획득할 수 있다. 컨볼루션 신경망 처리 장치는 컨볼루션 레이어의 커널에 포함된 커널 요소들 중 0이 차지하는 비율(Kz)을 획득할 수 있다. 예를 들어, Iz는 해당 컨볼루션 레이어의 입력에 따라 달라질 수 있기 때문에, 컨볼루션 신경망 처리 장치는 입력으로부터 Iz를 동적으로 추출할 수 있고, Kz는 미리 설계된 컨볼루션 신경망에 의해 결정된 값이기 때문에 데이터베이스로부터 획득할 수 있다. 컨볼루션 신경망 처리 장치는 획득된 Iz 및 Kz 중 큰 값에 대응하는 연산 모드를 선택할 수 있다. 컨볼루션 신경망 처리 장치는 Iz 및 Kz 의 대소 관계에 따라 도 6에 도시된 바와 같이 컨볼루션 레이어의 연산 모드를 선택할 수 있다.
일실시예에 따르면, 컨볼루션 신경망 처리 장치는 입력의 크기 및 커널의 크기의 비율에 기초하여 연산 모드를 선택할 수 있다. 예를 들어, 컨볼루션 신경망 처리 장치는 입력에 포함된 프레임의 크기와 커널에 포함된 가중치 맵의 크기의 비율을 획득하고, 획득된 비율과 미리 정의된 비율을 비교하여 연산 모드를 선택할 수 있다. 프레임의 크기와 가중치 맵의 크기는 컨볼루션 신경망이 설계됨에 따라 결정될 수 있으므로, 컨볼루션 신경망 처리 장치는 데이터베이스로부터 해당 비율, 해당 비율과 미리 정의된 비율의 비교 결과 및 선택된 연산 모드 중 적어도 하나를 획득할 수 있다.
일실시예에 따르면, 컨볼루션 신경망 처리 장치는 제1 데이터 로드 횟수 및 제2 데이터 로드 횟수 중 작은 값에 대응하는 연산 모드를 선택할 수 있다. 데이터 로드 횟수가 상대적으로 작은 연산 모드를 채용하기 위함이다. 예를 들면, 제1 데이터 로드 횟수는 커널의 크기로부터 계산된 커널의 로드 횟수와 커널 요소들 중 0의 개수와 입력의 크기에 기초하여 계산된 입력의 로드 횟수의 합에 의해 계산될 수 있다. 여기서, 제1 데이터 로드 횟수는 입력 요소들 중 0의 개수의 고려 없이 계산된 값이므로 컨볼루션 신경망이 설계됨에 따라 결정될 수 있고, 컨볼루션 신경망 처리 장치는 데이터베이스로부터 제1 데이터 로드 횟수를 획득할 수 있다. 컨볼루션 신경망 처리 장치는 입력으로부터 입력에 포함된 입력 요소들 중 0의 개수를 동적으로 획득할 수 있다. 컨볼루션 신경망 처리 장치는 입력의 크기로부터 계산된 입력의 로드 횟수 및 입력 요소들 중 0의 개수와 커널의 크기에 기초하여 계산된 커널의 로드 횟수의 합을 통해 제2 데이터 로드 횟수를 계산할 수 있다. 입력의 0의 개수는 미리 저장된 값이 아니기 때문에, 컨볼루션 신경망 처리 장치는 컨볼루션 레이어 별로 제2 데이터 로드 횟수를 계산할 수 있다. 컨볼루션 신경망 처리 장치는 데이터베이스로부터 획득된 제1 데이터 로드 횟수와 동적으로 계산된 제2 데이터 로드 횟수를 비교하여 해당 컨볼루션 레이어에 적합한 연산 모드를 선택할 수 있다.
도 7a 내지 도 7c는 일실시예에 따른 제1 연산 모드를 설명하기 위한 도면이다.
일실시예에 따르면, 컨볼루션 신경망 처리 장치는 제1 연산 모드에 따른 컨볼루션 연산을 수행하기 위해 임시 버퍼를 할당하고, 할당된 임시 버퍼에 입력 요소들을 저장할 수 있다. 컨볼루션 신경망 처리 장치는 임시 버퍼에 저장된 입력 요소들을 이용하여 커널 요소별로 컨볼루션 연산을 수행할 수 있는데, 도 7a 내지 도 7c에 도시된 예시를 참조하여, 임시 버퍼 할당에 기반한 제1 연산 모드의 실시예를 설명한다.
도 7a를 참조하면, 제1 연산 모드에 따른 컨볼루션 신경망 처리 장치는 2*2*C의 크기인 필터(701)와 3*3*C의 크기인 입력(702) 사이의 컨볼루션 연산을 수행할 수 있다. 필터(701)는 2*2의 크기인 가중치 맵들을 포함하고, 가중치 맵들의 개수는 C이다. 입력(702)은 3*3의 크기인 프레임들을 포함하고, 프레임들의 개수는 C이다. 패딩 입력(703)은 입력(702)에 패드가 1인 패딩이 적용된 입력으로서, 그 크기는 5*5*C이다. 필터(701)의 스트라이드는 1인 경우를 가정하여 실시예를 설명한다.
컨볼루션 신경망 처리 장치는 필터(701)에 포함된 커널 요소들에 대응하는 임시 버퍼(704)를 할당할 수 있다. 필터(701)의 가중치 맵의 크기는 2*2이고, 스트라이드가 1이기 때문에, 패딩 입력(703) 중에서 필터(701)의 각 커널 요소(예를 들어, 가중치)와 대응하는 입력 요소들은 4*4의 크기로 한정된다. 컨볼루션 신경망 처리 장치는 필터(701)의 각 커널 요소에 대응하는 입력 요소들을 저장하기 위한 임시 버퍼(704)를 할당한다. 예를 들어, 컨볼루션 신경망 처리 장치는 커널 요소(w11)에 대응하는 입력 요소들(705)을 위한 임시 버퍼 T1의 일부(가장 앞쪽에 도시된 영역)를 할당하고, 커널 요소(w2c)에 대응하는 입력 요소들(706)을 위한 임시 버퍼 T2의 일부(가장 뒤쪽에 도시된 영역)를 할당하고, 입력 요소들(705 및 706)을 로딩하여, 할당된 임시 버퍼에 저장할 수 있다. 필터(701)의 가중치 맵의 크기가 2*2이기 때문에, 컨볼루션 신경망 처리 장치는 임시 버퍼 T1 내지 T4를 할당할 수 있다. 여기서, 임시 버퍼 T1은 커널 요소들(w11, w12, ... , w1c)에 대응하고, 임시 버퍼 T2는 커널 요소들(w21, w22, ... , w2c)에 대응하고, 임시 버퍼 T3는 커널 요소들(w31, w32, ... , w3c)에 대응하고, 임시 버퍼 T4는 커널 요소들(w41, w42, ... , w4c)에 대응한다.
가중치 맵의 크기가 2*2이고, 패딩 입력(703)의 각 프레임의 크기가 5*5이고, 스트라이드가 1이기 때문에, 컨볼루션 신경망 처리 장치는 각 입력 요소와 연산이 일어나는 입력 요소들의 크기를 4*4로 결정하여, 4*4*C의 크기인 임시 버퍼 T1 내지 T4를 할당할 수 있다. 그 결과, 컨볼루션 신경망 처리 장치는 4*4*C*4의 크기인 임시 버퍼(704)를 할당할 수 있다.
도 7b를 참조하면, 컨볼루션 신경망 처리 장치는 커널 요소들을 로딩하고, 로딩된 커널 요소들과 임시 버퍼에 기초하여 컨볼루션 연산을 수행할 수 있다. 컨볼루션 신경망 처리 장치는 로딩된 커널 요소들과 임시 버퍼에 저장된 입력 요소들 사이의 연산 결과들에 기초하여 출력을 생성할 수 있다. 컨볼루션 신경망 처리 장치는 커널 요소들(w11, w12, ... , w1c)과 임시 버퍼 T1에 저장된 입력 요소들 사이의 2D 매트릭스 스칼라 곱(: 2D matrix scalar multiplication), 커널 요소들(w21, w22, ... , w2c)과 임시 버퍼 T2에 저장된 입력 요소들 사이의 2D 매트릭스 스칼라 곱(: 2D matrix scalar multiplication), 커널 요소들(w31, w32, ... , w3c)과 임시 버퍼 T3에 저장된 입력 요소들 사이의 2D 매트릭스 스칼라 곱(: 2D matrix scalar multiplication), 커널 요소들(w41, w42, ... , w4c)과 임시 버퍼 T4에 저장된 입력 요소들 사이의 2D 매트릭스 스칼라 곱(: 2D matrix scalar multiplication)의 연산을 수행하고, 연산 결과들 사이의 2D 매트릭스 와이즈 합(: 2D matrix wise addition)의 연산을 통해 출력을 생성할 수 있다. 예를 들어, 컨볼루션 신경망 처리 장치는 필터(701)에 포함된 커널 요소들 중 커널 요소(w11)를 로딩하고, 커널 요소(w11)에 대응하는 입력 요소들(712)을 로딩하여 임시 버퍼 T1에 저장하고, 임시 버퍼 T1에 저장된 입력 요소들(713)과 커널 요소(w11) 사이의 연산을 수행할 수 있다. 이 경우, 컨볼루션 신경망 처리 장치는 커널 요소들을 한번씩만 로딩할 수 있고, 임시 버퍼는 T1 내지 T4로 분류되므로 입력 요소들을 4회 중복하여 로딩할 수 있다.
도 7c를 참조하면, 컨볼루션 신경망 처리 장치는 크기가 W*H*C인 입력(722)에 패딩을 적용한 패딩 입력(723)과 K*K*C*D의 크기인 커널(721)에 기초하여, 임시 버퍼(724)를 할당할 수 있다. 컨볼루션 신경망 처리 장치는 패딩 입력(723)과 임시 버퍼(724)에 기초하여, 출력(725)을 생성할 수 있는데, D개의 필터별로 도 7b를 참조하여 설명된 연산들이 적용될 수 있다.
컨볼루션 신경망 처리 장치는 커널 요소들 중 로딩된 커널 요소와 다른 커널 요소를 로딩할 수 있다. 컨볼루션 신경망 처리 장치는 다른 커널 요소가 0과 다른 경우, 다른 커널 요소 및 다른 커널 요소에 대응하는 임시 버퍼에 저장된 입력 요소들 사이의 연산 결과들에 기초하여, 컨볼루션 연산을 수행할 수 있다. 이 때, 기 로딩된 커널 요소와 대응하는 입력 요소들과 다른 커널 요소와 대응하는 입력 요소들이 서로 같은 경우, 컨볼루션 신경망 처리 장치는 임시 버퍼에 기 저장된 입력 요소들을 이용하여 컨볼루션 연산을 수행할 수 있다.
일실시예에 따르면, 컨볼루션 신경망 처리 장치는 로딩된 커널 요소가 0인지 여부를 판단하고, 로딩된 커널 요소가 0인 경우 0인 커널 요소와 관련된 임시 버퍼의 할당을 스킵하거나 해당 커널 요소와 관련된 연산을 스킵할 수 있다. 로딩된 커널 요소가 0과 다른 경우, 컨볼루션 신경망 처리 장치는 상술한 실시예에 따라 임시 버퍼를 할당할 수 있다. 임시 버퍼의 할당과 관련하여 제1 연산 모드의 동작을 설명하였지만, 상술한 실시예는 제2 연산 모드에도 적용될 수 있다. 제2 연산 모드에서 임시 버퍼가 할당된 경우, 컨볼루션 신경망 처리 장치는 할당된 임시 버퍼에 커널 요소들을 저장할 수 있다. 또한, 제1 연산 모드 및 제2 연산 모드는 별도의 임시 버퍼 할당 없이 수행될 수 있다.
도 8a 내지 도 8b는 일실시예에 따른 제2 연산 모드를 설명하기 위한 도면이다.
도 8a를 참조하면, 커널(801)의 크기가 3*3이고 스트라이드가 1이며 입력(802)의 패드가 1인 경우, 제1 정보(803)는 커널(801)에 포함된 커널 요소들(w1, ... , w9) 중에서 입력 요소에 대응하는 커널 요소들을 특정한다. 예를 들면, 제1 정보(803)는 Left Top에 위치한 입력 요소에 대응하는 커널 요소들(w1, w2, w3, w4)을 특정하고, 도 8a에 도시된 바와 같이 제1 정보(803)는 각 입력 요소 별로 대응 커널 요소들을 특정한다. 제1 정보(801)는 커널의 크기(3*3) 및 스트라이드(1), 입력(802)의 크기 및 패드(1)에 기초하여 입력 요소들의 위치들(Left Top, First Row, ... , Right Bottom)에 대응하는 커널 요소들을 특정할 수 있다. 컨볼루션 신경망 처리 장치는 입력(802)에 포함된 어느 하나의 입력 요소를 로딩하고, 제1 정보에 기초하여 로딩된 입력 요소와 대응하는 커널 요소들을 로딩할 수 있다.
도 8b를 참조하면, 제2 정보(804)는 출력(805)에 포함된 출력 요소들 중에서 로딩된 입력 요소와 커널 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 특정한다. 입력(802)의 크기가 W*H이고, 1인 패드로 패딩이 적용된 패딩 입력(812) 상에서 커널(801)이 슬라이딩(스트라이드= 1)하는 경우, 컨볼루션 신경망 처리 장치는 입력 요소 A(806)를 로딩하고, 제1 정보(803)에 기초하여 커널 요소들(807)을 로딩할 수 있다. 컨볼루션 신경망 처리 장치는 로딩된 입력 요소 A(806)와 로딩된 커널 요소들(807) 사이의 연산 결과들이 매핑되는 출력 요소들((HA, WA), (HA, WA +1), (HA+1, WA) 및 (HA+1, WA+1))을 특정하는 정보(808)에 기초하여, 출력 요소들을 갱신할 수 있다. 도 8b의 출력 요소의 인덱스에서 HA 및 WA는 각각 입력 요소 A(806)의 행과 열을 가리키는 인덱스이다. 같은 방식으로, 컨볼루션 신경망 처리 장치는 입력 요소 B(809)와 커널 요소들(810)을 로딩하고, 로딩된 입력 요소 B(809)와 로딩된 커널 요소들(810) 사이의 연산 결과들이 매핑되는 출력 요소들을 특정하는 정보(811)에 기초하여, 출력 요소들을 갱신할 수 있다. 제2 연산 모드에 따른 컨볼루션 신경망 처리 장치는 입력 요소를 로딩하고 재사용하는 기법을 통해 데이터 로드 횟수 및 연산 횟수를 줄일 수 있고, 예를 들어 로딩된 입력 요소가 0인 경우 제1 정보에 따른 데이터 로드와 제2 정보에 따른 연산을 스킵할 수 있다. 제1 정보 및 제2 정보에 기반한 제2 연산 모드의 실시예는 제1 연산 모드에도 적용될 수 있다.
도 9는 일실시예에 따른 컨볼루션 신경망 처리 장치의 구성의 예시도이다.
도 9를 참조하면, 컨볼루션 신경망 처리 장치(901)는 프로세서(902) 및 메모리(903)를 포함한다. 프로세서(902)는 도 1 내지 도 8b을 통하여 전술한 적어도 하나의 장치들을 포함하거나, 도 1 내지 도 8b을 통하여 전술한 적어도 하나의 방법을 수행할 수 있다. 메모리(903)는 컨볼루션 레이어들의 입력들의 특성들, 커널들의 특성들, 데이터 로드 횟수들 중 적어도 하나를 저장하거나 컨볼루션 신경망 처리 방법이 구현된 프로그램을 저장할 수 있다. 메모리(903)는 휘발성 메모리 또는 비휘발성 메모리일 수 있다.
프로세서(902)는 프로그램을 실행하고, 컨볼루션 신경망 처리 장치(901)를 제어할 수 있다. 프로세서(902)에 의하여 실행되는 프로그램의 코드는 메모리(903)에 저장될 수 있다. 컨볼루션 신경망 처리 장치(901)는 입출력 장치(도면 미 표시)를 통하여 외부 장치(예를 들어, 퍼스널 컴퓨터 또는 네트워크)에 연결되고, 데이터를 교환할 수 있다.
일실시예에 따르면 컨볼루션 신경망 처리 장치(901)는 CNN과 관련된 연산을 고속으로 처리하는 CNN 가속기, NPU(Neural Processing Unit) 또는 VPU(Vision Processing Unit)에 채용되어 해당 전용 프로세서를 제어할 수 있다. 컨볼루션 신경망 처리 장치(901)는 설계 의도에 따라 다양한 하드웨어를 채용하거나 다양한 하드웨어에 채용될 수 있으며 도시된 구성요소들의 실시예에 한정되지 않는다. 컨볼루션 신경망 처리 시 상술한 실시예들을 적용하는 경우, 컨볼루션 신경망의 처리에서 요구되는 데이터 로드 횟수, 연산 횟수(예를 들어, MAC의 연산 횟수)를 줄여 메모리를 절감하고 처리 속도를 높일 수 있으므로, 상술한 실시예들은 제한된 리소스를 사용하는 환경이나 임베디드 단말에 적합할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Claims (29)
- 컨볼루션 레이어의 커널의 특성 및 상기 컨볼루션 레이어의 입력의 특성 중 적어도 하나에 기초하여, 상기 커널을 재사용하는 제1 연산 모드 및 상기 입력을 재사용하는 제2 연산 모드 중 어느 하나의 연산 모드를 선택하는 단계; 및
상기 선택된 연산 모드에 따라 컨볼루션 연산을 수행하는 단계
를 포함하는
컨볼루션 신경망 처리 방법.
- 제1항에 있어서,
상기 컨볼루션 신경망은 컨볼루션 레이어들을 포함하고,
상기 컨볼루션 레이어들의 커널들의 특성들 및 상기 컨볼루션 레이어들의 입력들의 특성들에 기초하여, 상기 컨볼루션 레이어들 별로 상기 제1 연산 모드 및 상기 제2 연산 모드 중 어느 하나를 적응적으로 선택하는 단계
를 더 포함하는,
컨볼루션 신경망 처리 방법.
- 제1항에 있어서,
상기 커널의 특성은 상기 커널에 포함된 커널 요소들 중 0이 차지하는 비율 및 상기 커널의 크기 중 적어도 하나를 포함하고,
상기 입력의 특성은 상기 입력에 포함된 입력 요소들 중 0이 차지하는 비율 및 상기 입력의 크기 중 적어도 하나를 포함하는,
컨볼루션 신경망 처리 방법.
- 제1항에 있어서,
상기 어느 하나의 연산 모드를 선택하는 단계는
상기 입력에 포함된 입력 요소들 중 0이 차지하는 비율을 획득하는 단계; 및
상기 획득된 비율 및 상기 커널에 포함된 커널 요소들 중 0이 차지하는 비율 중 큰 값에 대응하는 연산 모드를 선택하는 단계
를 포함하는,
컨볼루션 신경망 처리 방법.
- 제1항에 있어서,
상기 어느 하나의 연산 모드를 선택하는 단계는
상기 입력의 크기 및 상기 커널의 크기의 비율에 기초하여 연산 모드를 선택하는 단계
를 포함하는,
컨볼루션 신경망 처리 방법.
- 제1항에 있어서,
상기 커널의 특성 및 상기 입력의 특성은 상기 컨볼루션 신경망 내 상기 컨볼루션 레이어의 깊이에 따라 결정되고,
상기 어느 하나의 연산 모드를 선택하는 단계는
상기 커널의 특성 및 상기 입력의 특성 중 적어도 하나에 기초하여, 데이터 로드 횟수 및 동작 메모리의 용량 중 적어도 하나와 관련된 제한조건(constraint)을 만족하는 연산 모드를 선택하는 단계
를 포함하는,
컨볼루션 신경망 처리 방법.
- 제1항에 있어서,
상기 어느 하나의 연산 모드를 선택하는 단계는
상기 제1 연산 모드의 제1 데이터 로드 횟수 및 상기 제2 연산 모드의 제2 데이터 로드 횟수 중 작은 값에 대응하는 연산 모드를 선택하는 단계
를 포함하고,
컨볼루션 신경망 처리 방법.
- 제7항에 있어서,
상기 연산 모드를 선택하는 단계는
상기 제1 데이터 로드 횟수를 획득하는 단계
를 포함하고,
상기 제1 데이터 로드 횟수는
상기 커널의 크기로부터 계산된 상기 커널의 로드 횟수; 및 상기 커널에 포함된 커널 요소들 중 0의 개수와 상기 입력의 크기에 기초하여 계산된 상기 입력의 로드 횟수의 합에 의해 계산되는,
컨볼루션 신경망 처리 방법.
- 제7항에 있어서,
상기 연산 모드를 선택하는 단계는
상기 입력에 포함된 입력 요소들 중 0의 개수를 획득하는 단계; 및
상기 입력의 크기로부터 계산된 상기 입력의 로드 횟수; 및 상기 입력 요소들 중 0의 개수와 상기 커널의 크기에 기초하여 계산된 상기 커널의 로드 횟수의 합을 통해 상기 제2 데이터 로드 횟수를 계산하는 단계
를 포함하는,
컨볼루션 신경망 처리 방법.
- 제1항에 있어서,
상기 컨볼루션 연산을 수행하는 단계는
상기 제1 연산 모드가 선택되는 경우,
상기 입력에 포함된 입력 요소들 중에서, 상기 커널에 포함된 커널 요소들에 대응하는 입력 요소들을 특정하는 제1 정보 및 상기 컨볼루션 연산의 출력에 포함된 출력 요소들 중에서, 상기 커널 요소들과 상기 특정된 입력 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 특정하는 제2 정보에 기초하여 컨볼루션 연산을 수행하는 단계
를 포함하는,
컨볼루션 신경망 처리 방법.
- 제10항에 있어서,
상기 컨볼루션 연산을 수행하는 단계는
상기 커널 요소들 중 어느 하나의 커널 요소를 로딩하는 단계;
상기 제1 정보에 기초하여, 상기 로딩된 커널 요소와 대응하는 입력 요소들을 로딩하는 단계; 및
상기 제2 정보에 기초하여, 상기 로딩된 커널 요소 및 상기 로딩된 입력 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 갱신하는 단계
를 포함하는,
컨볼루션 신경망 처리 방법.
- 제10항에 있어서,
상기 제1 정보는 상기 커널 요소들의 위치들, 상기 커널의 크기 및 스트라이드(stride), 상기 입력의 크기 및 패드(pad)에 기초하여 결정되고,
상기 제2 정보는 상기 커널 요소들의 위치들 및 상기 특정된 입력 요소들의 위치들에 기초하여 결정되는,
컨볼루션 신경망 처리 방법.
- 제1항에 있어서,
상기 컨볼루션 연산을 수행하는 단계는
상기 제1 연산 모드가 선택되는 경우,
상기 커널 요소들 중 어느 하나의 커널 요소를 로딩하는 단계; 및
상기 로딩된 커널 요소가 0인 경우, 상기 로딩된 커널 요소와 대응하는 입력 요소들의 로딩 또는 상기 로딩된 커널 요소와 관련된 연산들을 스킵(skip)하는 단계
를 포함하는,
컨볼루션 신경망 처리 방법.
- 제1항에 있어서,
상기 컨볼루션 연산을 수행하는 단계는
상기 제1 연산 모드가 선택되는 경우,
상기 커널에 포함된 커널 요소들에 대응하는 임시 버퍼를 할당하는 단계;
상기 커널에 포함된 커널 요소들 중 어느 하나의 커널 요소를 로딩하는 단계; 및
상기 로딩된 커널 요소 및 상기 로딩된 커널 요소에 대응하는 임시 버퍼에 기초하여, 컨볼루션 연산을 수행하는 단계
를 포함하는,
컨볼루션 신경망 처리 방법.
- 제14항에 있어서,
상기 컨볼루션 연산을 수행하는 단계는
상기 커널 요소들 중 상기 로딩된 커널 요소와 다른 커널 요소를 로딩하는 단계; 및
상기 다른 커널 요소가 0과 다른 경우, 상기 다른 커널 요소 및 상기 다른 커널 요소에 대응하는 임시 버퍼에 저장된 입력 요소들 사이의 연산 결과들에 기초하여, 컨볼루션 연산을 수행하는 단계
를 더 포함하는,
컨볼루션 신경망 처리 방법.
- 제1항에 있어서,
상기 컨볼루션 연산을 수행하는 단계는
상기 제1 연산 모드가 선택되는 경우,
상기 커널에 포함된 커널 요소들 중 어느 하나의 커널 요소를 로딩하는 단계;
상기 로딩된 커널 요소가 0인 경우 임시 버퍼의 할당을 스킵하는 단계;
상기 로딩된 커널 요소가 0과 다른 경우, 상기 로딩된 커널 요소의 위치, 상기 커널의 크기 및 스트라이드(stride), 상기 입력의 크기 및 패드(pad)에 기초하여 임시 버퍼를 할당하는 단계;
상기 로딩된 커널 요소에 대응하는 입력 요소들을 로딩하여, 상기 할당된 임시 버퍼에 저장하는 단계; 및
상기 로딩된 커널 요소 및 상기 임시 버퍼에 저장된 입력 요소들 사이의 연산 결과들에 기초하여 컨볼루션 연산을 수행하는 단계
를 포함하는,
컨볼루션 신경망 처리 방법.
- 제1항에 있어서,
상기 컨볼루션 연산을 수행하는 단계는
상기 제2 연산 모드가 선택되는 경우,
상기 커널에 포함된 커널 요소들 중에서, 상기 입력에 포함된 입력 요소들에 대응하는 커널 요소들을 특정하는 제1 정보 및 상기 컨볼루션 연산의 출력에 포함된 출력 요소들 중에서, 상기 입력 요소들과 상기 특정된 커널 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 특정하는 제2 정보에 기초하여 컨볼루션 연산을 수행하는 단계
를 포함하는,
컨볼루션 신경망 처리 방법.
- 제17항에 있어서,
상기 컨볼루션 연산을 수행하는 단계는
상기 입력 요소들 중 어느 하나의 입력 요소를 로딩하는 단계;
상기 제1 정보에 기초하여, 상기 로딩된 입력 요소와 대응하는 커널 요소들을 로딩하는 단계; 및
상기 제2 정보에 기초하여, 상기 로딩된 입력 요소 및 상기 로딩된 커널 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 갱신하는 단계
를 포함하는,
컨볼루션 신경망 처리 방법.
- 제17항에 있어서,
상기 제1 정보는 상기 입력 요소들의 위치들, 상기 커널의 크기 및 스트라이드(stride), 상기 입력의 크기 및 패드(pad)에 기초하여 결정되고,
상기 제2 정보는 상기 입력 요소들의 위치들 및 상기 특정된 커널 요소들의 위치들에 기초하여 결정되는,
컨볼루션 신경망 처리 방법.
- 제1항에 있어서,
상기 컨볼루션 연산을 수행하는 단계는
상기 제2 연산 모드가 선택되는 경우,
상기 입력 요소들 중 어느 하나의 입력 요소를 로딩하는 단계; 및
상기 로딩된 입력 요소가 0인 경우, 상기 로딩된 입력 요소와 대응하는 커널 요소들의 로딩 또는 상기 로딩된 입력 요소와 관련된 연산들을 스킵(skip)하는 단계
를 포함하는,
컨볼루션 신경망 처리 방법.
- 하드웨어와 결합되어 제1항 내지 제20항 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
- 컨볼루션 레이어의 커널의 특성 및 상기 컨볼루션 레이어의 입력의 특성 중 적어도 하나에 기초하여, 상기 커널을 재사용하는 제1 연산 모드 및 상기 입력을 재사용하는 제2 연산 모드 중 어느 하나의 연산 모드를 선택하고,
상기 선택된 연산 모드에 따라 컨볼루션 연산을 수행하는 프로세서
를 포함하는
컨볼루션 신경망 처리 장치.
- 제22항에 있어서,
상기 컨볼루션 신경망은 컨볼루션 레이어들을 포함하고,
상기 프로세서는
상기 컨볼루션 레이어들의 커널들의 특성들 및 상기 컨볼루션 레이어들의 입력들의 특성들에 기초하여, 상기 컨볼루션 레이어들 별로 상기 제1 연산 모드 및 상기 제2 연산 모드 중 어느 하나를 적응적으로 선택하는,
컨볼루션 신경망 처리 장치.
- 제22항에 있어서,
상기 커널의 특성은 상기 커널에 포함된 커널 요소들 중 0이 차지하는 비율 및 상기 커널의 크기 중 적어도 하나를 포함하고,
상기 입력의 특성은 상기 입력에 포함된 입력 요소들 중 0이 차지하는 비율 및 상기 입력의 크기 중 적어도 하나를 포함하며,
상기 커널의 특성 및 상기 입력의 특성은 상기 컨볼루션 신경망 내 상기 컨볼루션 레이어의 깊이에 따라 결정되고,
상기 프로세서는
상기 커널의 특성 및 상기 입력의 특성 중 적어도 하나에 기초하여, 데이터 로드 횟수 및 동작 메모리의 용량 중 적어도 하나와 관련된 제한조건(constraint)을 만족하는 연산 모드를 선택하는,
컨볼루션 신경망 처리 장치.
- 제24항에 있어서,
상기 제1 연산 모드의 제1 데이터 로드 횟수를 기록하는 메모리
를 더 포함하고,
상기 제1 데이터 로드 횟수는 상기 커널의 크기로부터 계산된 상기 커널의 로드 횟수; 및 상기 커널에 포함된 커널 요소들 중 0의 개수와 상기 입력의 크기에 기초하여 계산된 상기 입력의 로드 횟수의 합에 의해 계산되고,
상기 프로세서는
상기 제1 데이터 로드 횟수를 획득하고,
상기 입력에 포함된 입력 요소들 중 0의 개수를 획득하며,
상기 입력의 크기로부터 계산된 상기 입력의 로드 횟수; 및 상기 입력 요소들 중 0의 개수와 상기 커널의 크기에 기초하여 계산된 상기 커널의 로드 횟수의 합을 통해 상기 제2 데이터 로드 횟수를 계산하고,
상기 제1 연산 모드의 제1 데이터 로드 횟수 및 상기 제2 연산 모드의 제2 데이터 로드 횟수 중 작은 값에 대응하는 연산 모드를 선택하는,
컨볼루션 신경망 처리 장치.
- 제22항에 있어서,
상기 프로세서는
상기 제1 연산 모드가 선택되는 경우,
상기 입력에 포함된 입력 요소들 중에서, 상기 커널에 포함된 커널 요소들에 대응하는 입력 요소들을 특정하는 제1 정보 및 상기 컨볼루션 연산의 출력에 포함된 출력 요소들 중에서, 상기 커널 요소들과 상기 특정된 입력 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 특정하는 제2 정보에 기초하여 컨볼루션 연산을 수행하는,
컨볼루션 신경망 처리 장치.
- 제22항에 있어서,
상기 프로세서는
상기 제1 연산 모드가 선택되는 경우,
상기 커널 요소들 중 어느 하나의 커널 요소를 로딩하고,
상기 로딩된 커널 요소가 0인 경우, 상기 로딩된 커널 요소와 대응하는 입력 요소들의 로딩 또는 상기 로딩된 커널 요소와 관련된 연산들을 스킵(skip)하는,
컨볼루션 신경망 처리 장치.
- 제22항에 있어서,
상기 프로세서는
상기 제2 연산 모드가 선택되는 경우,
상기 커널에 포함된 커널 요소들 중에서, 상기 입력에 포함된 입력 요소들에 대응하는 커널 요소들을 특정하는 제1 정보 및 상기 컨볼루션 연산의 출력에 포함된 출력 요소들 중에서, 상기 입력 요소들과 상기 특정된 커널 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 특정하는 제2 정보에 기초하여 컨볼루션 연산을 수행하는,
컨볼루션 신경망 처리 장치.
- 제22항에 있어서,
상기 프로세서는
상기 제2 연산 모드가 선택되는 경우,
상기 입력 요소들 중 어느 하나의 입력 요소를 로딩하고,
상기 로딩된 입력 요소가 0인 경우, 상기 로딩된 입력 요소와 대응하는 커널 요소들의 로딩 또는 상기 로딩된 입력 요소와 관련된 연산들을 스킵(skip)하는,
컨볼루션 신경망 처리 장치.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160147562A KR102631381B1 (ko) | 2016-11-07 | 2016-11-07 | 컨볼루션 신경망 처리 방법 및 장치 |
CN201710970971.2A CN108073981B (zh) | 2016-11-07 | 2017-10-18 | 处理卷积神经网络的方法和设备 |
EP17197450.4A EP3319015B1 (en) | 2016-11-07 | 2017-10-20 | Convolutional neural network processing method and apparatus |
JP2017210622A JP7021904B2 (ja) | 2016-11-07 | 2017-10-31 | 畳み込み神経網処理方法及び装置 |
US15/798,461 US10755126B2 (en) | 2016-11-07 | 2017-10-31 | Convolutional neural network processing method and apparatus |
US16/991,454 US11508146B2 (en) | 2016-11-07 | 2020-08-12 | Convolutional neural network processing method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160147562A KR102631381B1 (ko) | 2016-11-07 | 2016-11-07 | 컨볼루션 신경망 처리 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180050928A true KR20180050928A (ko) | 2018-05-16 |
KR102631381B1 KR102631381B1 (ko) | 2024-01-31 |
Family
ID=60182358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160147562A KR102631381B1 (ko) | 2016-11-07 | 2016-11-07 | 컨볼루션 신경망 처리 방법 및 장치 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10755126B2 (ko) |
EP (1) | EP3319015B1 (ko) |
JP (1) | JP7021904B2 (ko) |
KR (1) | KR102631381B1 (ko) |
CN (1) | CN108073981B (ko) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110880034A (zh) * | 2018-09-06 | 2020-03-13 | 三星电子株式会社 | 使用卷积神经网络的计算装置及其操作方法 |
KR20200059153A (ko) * | 2018-11-20 | 2020-05-28 | 한국과학기술원 | 룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기 |
WO2020231006A1 (ko) * | 2019-05-16 | 2020-11-19 | 삼성전자주식회사 | 영상 처리 장치 및 그 동작방법 |
CN112200300A (zh) * | 2020-09-15 | 2021-01-08 | 厦门星宸科技有限公司 | 卷积神经网络运算方法及装置 |
KR20210082081A (ko) * | 2019-12-24 | 2021-07-02 | 서울대학교산학협력단 | 음수값을 갖는 활성화 함수에서 제로 스키핑을 제공하는 방법 및 장치 |
CN113269298A (zh) * | 2020-02-15 | 2021-08-17 | 财团法人工业技术研究院 | 卷积神经网络运算装置及其运算的方法 |
US11188796B2 (en) | 2019-10-01 | 2021-11-30 | Samsung Electronics Co., Ltd. | Method and apparatus with data processing |
WO2022010064A1 (ko) * | 2020-07-10 | 2022-01-13 | 삼성전자주식회사 | 전자 장치 및 그의 제어 방법 |
WO2023277585A1 (ko) * | 2021-06-29 | 2023-01-05 | 삼성전자 주식회사 | 신경망을 통해 이미지를 처리하는 방법 및 그 전자 장치 |
US11568243B2 (en) | 2018-12-12 | 2023-01-31 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network convolution operations |
US11580393B2 (en) | 2019-12-27 | 2023-02-14 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network data input and output control |
US11586886B2 (en) | 2018-12-24 | 2023-02-21 | Samsung Electronics Co., Ltd. | Neural network apparatus and method with bitwise operation |
WO2023048827A1 (en) * | 2021-09-24 | 2023-03-30 | Intel Corporation | Methods, apparatus, and articles of manufacture to increase data reuse for multiply and accumulate (mac) operations |
US11769037B2 (en) | 2018-12-27 | 2023-09-26 | Samsung Electronics Co., Ltd. | Method and apparatus for processing convolution operation in neural network |
US11971823B2 (en) | 2020-11-24 | 2024-04-30 | Samsung Electronics Co., Ltd. | Computing method and device with data sharing |
Families Citing this family (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10433748B2 (en) | 2013-09-25 | 2019-10-08 | Bardy Diagnostics, Inc. | Extended wear electrocardiography and physiological sensor monitor |
US10806360B2 (en) | 2013-09-25 | 2020-10-20 | Bardy Diagnostics, Inc. | Extended wear ambulatory electrocardiography and physiological sensor monitor |
US10463269B2 (en) * | 2013-09-25 | 2019-11-05 | Bardy Diagnostics, Inc. | System and method for machine-learning-based atrial fibrillation detection |
US10820801B2 (en) | 2013-09-25 | 2020-11-03 | Bardy Diagnostics, Inc. | Electrocardiography monitor configured for self-optimizing ECG data compression |
US20190167139A1 (en) | 2017-12-05 | 2019-06-06 | Gust H. Bardy | Subcutaneous P-Wave Centric Insertable Cardiac Monitor For Long Term Electrocardiographic Monitoring |
US10624551B2 (en) | 2013-09-25 | 2020-04-21 | Bardy Diagnostics, Inc. | Insertable cardiac monitor for use in performing long term electrocardiographic monitoring |
US10433751B2 (en) | 2013-09-25 | 2019-10-08 | Bardy Diagnostics, Inc. | System and method for facilitating a cardiac rhythm disorder diagnosis based on subcutaneous cardiac monitoring data |
US10799137B2 (en) | 2013-09-25 | 2020-10-13 | Bardy Diagnostics, Inc. | System and method for facilitating a cardiac rhythm disorder diagnosis with the aid of a digital computer |
US10736531B2 (en) | 2013-09-25 | 2020-08-11 | Bardy Diagnostics, Inc. | Subcutaneous insertable cardiac monitor optimized for long term, low amplitude electrocardiographic data collection |
DE202016009107U1 (de) | 2015-02-19 | 2022-04-27 | Magic Pony Technology Limited | Visuelle Verarbeitung durch zeitliche und räumliche Interpolation |
GB201603144D0 (en) | 2016-02-23 | 2016-04-06 | Magic Pony Technology Ltd | Training end-to-end video processes |
GB201604672D0 (en) | 2016-03-18 | 2016-05-04 | Magic Pony Technology Ltd | Generative methods of super resolution |
WO2017178808A1 (en) | 2016-04-12 | 2017-10-19 | Magic Pony Technology Limited | Visual data processing using energy networks |
US10366302B2 (en) * | 2016-10-10 | 2019-07-30 | Gyrfalcon Technology Inc. | Hierarchical category classification scheme using multiple sets of fully-connected networks with a CNN based integrated circuit as feature extractor |
US10387740B2 (en) * | 2016-10-10 | 2019-08-20 | Gyrfalcon Technology Inc. | Object detection and recognition apparatus based on CNN based integrated circuits |
JP2018093325A (ja) * | 2016-12-01 | 2018-06-14 | ソニーセミコンダクタソリューションズ株式会社 | 情報処理装置、情報処理方法、及びプログラム |
US10261903B2 (en) | 2017-04-17 | 2019-04-16 | Intel Corporation | Extend GPU/CPU coherency to multi-GPU cores |
US11290617B2 (en) * | 2017-04-20 | 2022-03-29 | Hewlett-Packard Development Company, L.P. | Document security |
CN107124609A (zh) * | 2017-04-27 | 2017-09-01 | 京东方科技集团股份有限公司 | 一种视频图像的处理系统、其处理方法及显示装置 |
WO2018224437A1 (en) * | 2017-06-05 | 2018-12-13 | Siemens Aktiengesellschaft | Method and apparatus for analysing an image |
US11308361B1 (en) | 2017-07-07 | 2022-04-19 | Twitter, Inc. | Checkerboard artifact free sub-pixel convolution |
US10951850B2 (en) * | 2017-07-14 | 2021-03-16 | Semiconductor Energy Laboratory Co., Ltd. | Imaging device and electronic device |
US10691975B2 (en) * | 2017-07-19 | 2020-06-23 | XNOR.ai, Inc. | Lookup-based convolutional neural network |
US10083375B1 (en) * | 2017-10-13 | 2018-09-25 | StradVision, Inc. | Method and device for performing activation and convolution operation at the same time and learning method and learning device for the same |
US10049323B1 (en) * | 2017-10-13 | 2018-08-14 | StradVision, Inc. | Method and device for performing activation and convolution operation at the same time and learning method and learning device for the same |
CN107895174B (zh) * | 2017-11-09 | 2020-01-07 | 京东方科技集团股份有限公司 | 图像分类和转换方法、装置以及图像处理系统 |
US11637331B2 (en) * | 2017-11-20 | 2023-04-25 | The Trustees Of Columbia University In The City Of New York | Neural-network state-of-charge and state of health estimation |
US10552664B2 (en) * | 2017-11-24 | 2020-02-04 | International Business Machines Corporation | Image feature classification and localization using discriminative representations for robotic surgical control |
EP3499415A1 (en) * | 2017-12-14 | 2019-06-19 | Axis AB | Method and image processing entity for applying a convolutional neural network to an image |
DE102018200534A1 (de) * | 2018-01-15 | 2019-07-18 | Robert Bosch Gmbh | Verfahren zum Betreiben eines künstlichen neuronalen Netzes |
US10140553B1 (en) * | 2018-03-08 | 2018-11-27 | Capital One Services, Llc | Machine learning artificial intelligence system for identifying vehicles |
WO2019190449A1 (en) * | 2018-03-26 | 2019-10-03 | Hewlett-Packard Development Company, L.P. | Generation of kernels based on physical states |
CN108875904A (zh) * | 2018-04-04 | 2018-11-23 | 北京迈格威科技有限公司 | 图像处理方法、图像处理装置和计算机可读存储介质 |
US11875557B2 (en) * | 2018-04-27 | 2024-01-16 | Carnegie Mellon University | Polynomial convolutional neural network with early fan-out |
US11340936B2 (en) | 2018-05-04 | 2022-05-24 | Apple Inc. | Compiling and scheduling transactions in neural network processor |
JP2019207458A (ja) * | 2018-05-28 | 2019-12-05 | ルネサスエレクトロニクス株式会社 | 半導体装置及びメモリアクセス設定方法 |
CN110088777B (zh) * | 2018-07-18 | 2023-05-05 | 深圳鲲云信息科技有限公司 | 反卷积实现方法及相关产品 |
CN109325918B (zh) * | 2018-07-26 | 2022-05-13 | 京东方科技集团股份有限公司 | 一种图像处理的方法、装置及计算机存储介质 |
US11010308B2 (en) | 2018-08-10 | 2021-05-18 | Lg Electronics Inc. | Optimizing data partitioning and replacement strategy for convolutional neural networks |
KR102043376B1 (ko) * | 2018-08-16 | 2019-11-11 | 한국과학기술연구원 | 심층 신경망 알고리즘을 이용하는 실시간 스트레스 분석 방법 |
US11265446B2 (en) * | 2018-10-18 | 2022-03-01 | Sony Corporation | Frame handling for ML-based upscaling |
US11037030B1 (en) * | 2018-10-29 | 2021-06-15 | Hrl Laboratories, Llc | System and method for direct learning from raw tomographic data |
KR20200053886A (ko) * | 2018-11-09 | 2020-05-19 | 삼성전자주식회사 | 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템 |
KR20200057814A (ko) * | 2018-11-13 | 2020-05-27 | 삼성전자주식회사 | 뉴럴 네트워크를 이용한 데이터 처리 방법 및 이를 지원하는 전자 장치 |
US20200184319A1 (en) * | 2018-12-05 | 2020-06-11 | Apical Limited | Systems and devices for configuring neural network circuitry |
US11544522B2 (en) * | 2018-12-06 | 2023-01-03 | University Of Tennessee Research Foundation | Methods, systems, and computer readable mediums for determining a system state of a power system using a convolutional neural network |
US10810725B1 (en) | 2018-12-07 | 2020-10-20 | Facebook, Inc. | Automated detection of tampered images |
US20200202622A1 (en) * | 2018-12-19 | 2020-06-25 | Nvidia Corporation | Mesh reconstruction using data-driven priors |
KR20200082613A (ko) | 2018-12-31 | 2020-07-08 | 에스케이하이닉스 주식회사 | 프로세싱 시스템 |
US11048935B2 (en) * | 2019-01-28 | 2021-06-29 | Adobe Inc. | Generating shift-invariant neural network outputs |
CN109993825B (zh) * | 2019-03-11 | 2023-06-20 | 北京工业大学 | 一种基于深度学习的三维重建方法 |
US11003909B2 (en) * | 2019-03-20 | 2021-05-11 | Raytheon Company | Neural network trained by homographic augmentation |
EP3948685A1 (en) * | 2019-03-26 | 2022-02-09 | Mipsology SAS | Accelerating neuron computations in artificial neural networks by skipping bits |
CN111708448B (zh) * | 2019-05-08 | 2023-11-03 | 义隆电子股份有限公司 | 用于触控装置的控制系统及方法 |
JP7242903B2 (ja) * | 2019-05-14 | 2023-03-20 | ドルビー ラボラトリーズ ライセンシング コーポレイション | 畳み込みニューラルネットワークに基づく発話源分離のための方法および装置 |
CN111988609A (zh) * | 2019-05-22 | 2020-11-24 | 富士通株式会社 | 图像编码装置、概率模型生成装置和图像解码装置 |
US20190392296A1 (en) * | 2019-06-28 | 2019-12-26 | John Brady | Hardware agnostic deep neural network compiler |
US11096579B2 (en) | 2019-07-03 | 2021-08-24 | Bardy Diagnostics, Inc. | System and method for remote ECG data streaming in real-time |
US11116451B2 (en) | 2019-07-03 | 2021-09-14 | Bardy Diagnostics, Inc. | Subcutaneous P-wave centric insertable cardiac monitor with energy harvesting capabilities |
US11696681B2 (en) | 2019-07-03 | 2023-07-11 | Bardy Diagnostics Inc. | Configurable hardware platform for physiological monitoring of a living body |
US20210011732A1 (en) * | 2019-07-09 | 2021-01-14 | MemryX Inc. | Matrix Data Reuse Techniques in Processing Systems |
US11222092B2 (en) | 2019-07-16 | 2022-01-11 | Facebook Technologies, Llc | Optimization for deconvolution |
US11410000B2 (en) * | 2019-08-08 | 2022-08-09 | Beijing Boe Health Technology Co., Ltd. | Computer-implemented method, computer-implemented diagnosis method, apparatus for classifying image, and computer-program product |
KR102147912B1 (ko) * | 2019-08-13 | 2020-08-25 | 삼성전자주식회사 | 프로세서 칩 및 그 제어 방법들 |
US20210049474A1 (en) * | 2019-08-13 | 2021-02-18 | Samsung Electronics Co., Ltd. | Neural network method and apparatus |
CN110490154B (zh) * | 2019-08-23 | 2020-09-15 | 集美大学 | 一种多维泄漏信息检测方法、终端设备及存储介质 |
US11151416B2 (en) * | 2019-09-11 | 2021-10-19 | Expedera, Inc. | Method and apparatus for efficiently processing convolution neural network operations |
CN110704197B (zh) * | 2019-10-17 | 2022-12-09 | 北京小米移动软件有限公司 | 处理内存访问开销的方法、装置及介质 |
KR102624027B1 (ko) * | 2019-10-17 | 2024-01-11 | 삼성전자주식회사 | 영상 처리 장치 및 방법 |
US11507702B2 (en) * | 2019-11-05 | 2022-11-22 | Apple Inc. | Secure mode switching in neural processor circuit |
US11699081B2 (en) * | 2019-12-20 | 2023-07-11 | Meta Platforms, Inc. | Systems and methods for reducing data movement during convolution operations in artificial neural networks |
US11301705B2 (en) | 2020-02-27 | 2022-04-12 | Western Digital Technologies, Inc. | Object detection using multiple neural network configurations |
US20230109524A1 (en) * | 2020-03-27 | 2023-04-06 | Semiconductor Energy Laboratory Co., Ltd. | Imaging device and electronic device |
CN114090470B (zh) * | 2020-07-29 | 2023-02-17 | 深圳市中科元物芯科技有限公司 | 数据预加载装置及其预加载方法、存储介质和计算机设备 |
US11586442B2 (en) * | 2020-08-06 | 2023-02-21 | Nxp Usa, Inc. | System and method for convolving image with sparse kernels |
TWI762055B (zh) * | 2020-11-30 | 2022-04-21 | 鴻海精密工業股份有限公司 | 卷積神經網路、運算優化方法、裝置、電子設備及介質 |
KR20220090104A (ko) | 2020-12-22 | 2022-06-29 | 삼성전자주식회사 | 컨벌루션 연산을 위한 데이터 전송 방법, 페처 및 컨벌루션 연산 장치 |
US20220253692A1 (en) | 2021-02-05 | 2022-08-11 | Samsung Electronics Co., Ltd. | Method and apparatus of operating a neural network |
TWI797985B (zh) * | 2021-02-10 | 2023-04-01 | 國立成功大學 | 卷積運算的執行方法 |
US20230148225A1 (en) * | 2021-11-05 | 2023-05-11 | Intel Corporation | Joint denoising and supersampling of graphics data |
CN114611685A (zh) * | 2022-03-08 | 2022-06-10 | 安谋科技(中国)有限公司 | 神经网络模型中的特征处理方法、介质、设备和程序产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050065673A (ko) * | 2002-11-06 | 2005-06-29 | 노키아 코포레이션 | 연산을 수행하기 위한 방법, 시스템 및 장치 |
US8374955B1 (en) * | 2006-04-28 | 2013-02-12 | Alpha Vision Services, Llc | Methods and systems related to trading engines |
KR20150145167A (ko) * | 2014-06-18 | 2015-12-29 | 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 | 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5048100A (en) * | 1988-12-15 | 1991-09-10 | Michael Kuperstein | Self organizing neural network method and system for general classification of patterns |
US5647027A (en) * | 1994-10-28 | 1997-07-08 | Lucent Technologies Inc. | Method of image enhancement using convolution kernels |
US6760486B1 (en) * | 2000-03-28 | 2004-07-06 | General Electric Company | Flash artifact suppression in two-dimensional ultrasound imaging |
US6901422B1 (en) | 2001-03-21 | 2005-05-31 | Apple Computer, Inc. | Matrix multiplication in a vector processing system |
US7016529B2 (en) | 2002-03-15 | 2006-03-21 | Microsoft Corporation | System and method facilitating pattern recognition |
US20060277041A1 (en) * | 2005-06-06 | 2006-12-07 | Stig Stuns | Sparse convolution of multiple vectors in a digital signal processor |
US7634137B2 (en) | 2005-10-14 | 2009-12-15 | Microsoft Corporation | Unfolded convolution for fast feature extraction |
JP5121506B2 (ja) * | 2008-02-29 | 2013-01-16 | キヤノン株式会社 | 画像処理装置、画像処理方法、プログラム及び記憶媒体 |
JP5376920B2 (ja) | 2008-12-04 | 2013-12-25 | キヤノン株式会社 | コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置 |
JP5777367B2 (ja) | 2011-03-29 | 2015-09-09 | キヤノン株式会社 | パターン識別装置、パターン識別方法及びプログラム |
KR101976048B1 (ko) * | 2011-08-25 | 2019-05-09 | 코넬 유니버시티 | 머신 비전용 망막 인코더 |
CN102592258B (zh) * | 2012-01-04 | 2014-07-09 | 复旦大学 | 一种适用于指纹图像增强的可配置Gabor滤波硬件加速单元 |
US9190053B2 (en) * | 2013-03-25 | 2015-11-17 | The Governing Council Of The Univeristy Of Toronto | System and method for applying a convolutional neural network to speech recognition |
US9411726B2 (en) | 2014-09-30 | 2016-08-09 | Samsung Electronics Co., Ltd. | Low power computation architecture |
KR102276339B1 (ko) | 2014-12-09 | 2021-07-12 | 삼성전자주식회사 | Cnn의 근사화를 위한 학습 장치 및 방법 |
US10223635B2 (en) * | 2015-01-22 | 2019-03-05 | Qualcomm Incorporated | Model compression and fine-tuning |
US9786036B2 (en) * | 2015-04-28 | 2017-10-10 | Qualcomm Incorporated | Reducing image resolution in deep convolutional networks |
US11099918B2 (en) * | 2015-05-11 | 2021-08-24 | Xilinx, Inc. | Accelerating algorithms and applications on FPGAs |
US10489703B2 (en) * | 2015-05-20 | 2019-11-26 | Nec Corporation | Memory efficiency for convolutional neural networks operating on graphics processing units |
US20160358069A1 (en) * | 2015-06-03 | 2016-12-08 | Samsung Electronics Co., Ltd. | Neural network suppression |
US10460230B2 (en) * | 2015-06-04 | 2019-10-29 | Samsung Electronics Co., Ltd. | Reducing computations in a neural network |
US11423311B2 (en) * | 2015-06-04 | 2022-08-23 | Samsung Electronics Co., Ltd. | Automatic tuning of artificial neural networks |
EP3380859A4 (en) * | 2015-11-29 | 2019-07-31 | Arterys Inc. | AUTOMATED SEGMENTATION OF CARDIAC VOLUME |
AU2016374520C1 (en) * | 2015-12-14 | 2020-10-15 | Motion Metrics International Corp. | Method and apparatus for identifying fragmented material portions within an image |
US10089717B2 (en) * | 2016-04-05 | 2018-10-02 | Flipboard, Inc. | Image scaling using a convolutional neural network |
WO2018067603A1 (en) * | 2016-10-04 | 2018-04-12 | Magic Leap, Inc. | Efficient data layouts for convolutional neural networks |
WO2019090325A1 (en) * | 2017-11-06 | 2019-05-09 | Neuralmagic, Inc. | Methods and systems for improved transforms in convolutional neural networks |
US11534136B2 (en) * | 2018-02-26 | 2022-12-27 | Siemens Medical Solutions Usa, Inc. | Three-dimensional segmentation from two-dimensional intracardiac echocardiography imaging |
-
2016
- 2016-11-07 KR KR1020160147562A patent/KR102631381B1/ko active IP Right Grant
-
2017
- 2017-10-18 CN CN201710970971.2A patent/CN108073981B/zh active Active
- 2017-10-20 EP EP17197450.4A patent/EP3319015B1/en active Active
- 2017-10-31 JP JP2017210622A patent/JP7021904B2/ja active Active
- 2017-10-31 US US15/798,461 patent/US10755126B2/en active Active
-
2020
- 2020-08-12 US US16/991,454 patent/US11508146B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050065673A (ko) * | 2002-11-06 | 2005-06-29 | 노키아 코포레이션 | 연산을 수행하기 위한 방법, 시스템 및 장치 |
US8374955B1 (en) * | 2006-04-28 | 2013-02-12 | Alpha Vision Services, Llc | Methods and systems related to trading engines |
KR20150145167A (ko) * | 2014-06-18 | 2015-12-29 | 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 | 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치 |
Non-Patent Citations (2)
Title |
---|
H. Park 등, 'Zero and Data Reuse-aware Fast Convolution for Deep Neural Networks on GPU', Proc. of 11th IEEE/ACM/IFIP Int. Conf. on Hardware/Software Codesign and System Synthesis, 2016.10.01 * |
Y. Chen 등, ‘Eyeriss: A Spatial Architecture for Energy-Efficient Dataflow for Convolutional Neural Networks’, 2016 ACM/IEEE 43rd ISCA, 2016.06.01. 1부.* * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110880034A (zh) * | 2018-09-06 | 2020-03-13 | 三星电子株式会社 | 使用卷积神经网络的计算装置及其操作方法 |
KR20200059153A (ko) * | 2018-11-20 | 2020-05-28 | 한국과학기술원 | 룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기 |
US11853888B2 (en) | 2018-12-12 | 2023-12-26 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network convolution operations |
US11568243B2 (en) | 2018-12-12 | 2023-01-31 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network convolution operations |
US11586886B2 (en) | 2018-12-24 | 2023-02-21 | Samsung Electronics Co., Ltd. | Neural network apparatus and method with bitwise operation |
US11769037B2 (en) | 2018-12-27 | 2023-09-26 | Samsung Electronics Co., Ltd. | Method and apparatus for processing convolution operation in neural network |
WO2020231006A1 (ko) * | 2019-05-16 | 2020-11-19 | 삼성전자주식회사 | 영상 처리 장치 및 그 동작방법 |
US11188796B2 (en) | 2019-10-01 | 2021-11-30 | Samsung Electronics Co., Ltd. | Method and apparatus with data processing |
KR20210082081A (ko) * | 2019-12-24 | 2021-07-02 | 서울대학교산학협력단 | 음수값을 갖는 활성화 함수에서 제로 스키핑을 제공하는 방법 및 장치 |
US11580393B2 (en) | 2019-12-27 | 2023-02-14 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network data input and output control |
US11790232B2 (en) | 2019-12-27 | 2023-10-17 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network data input and output control |
CN113269298A (zh) * | 2020-02-15 | 2021-08-17 | 财团法人工业技术研究院 | 卷积神经网络运算装置及其运算的方法 |
WO2022010064A1 (ko) * | 2020-07-10 | 2022-01-13 | 삼성전자주식회사 | 전자 장치 및 그의 제어 방법 |
CN112200300A (zh) * | 2020-09-15 | 2021-01-08 | 厦门星宸科技有限公司 | 卷积神经网络运算方法及装置 |
CN112200300B (zh) * | 2020-09-15 | 2024-03-01 | 星宸科技股份有限公司 | 卷积神经网络运算方法及装置 |
US11971823B2 (en) | 2020-11-24 | 2024-04-30 | Samsung Electronics Co., Ltd. | Computing method and device with data sharing |
WO2023277585A1 (ko) * | 2021-06-29 | 2023-01-05 | 삼성전자 주식회사 | 신경망을 통해 이미지를 처리하는 방법 및 그 전자 장치 |
US11789646B2 (en) | 2021-09-24 | 2023-10-17 | Intel Corporation | Methods, apparatus, and articles of manufacture to increase data reuse for multiply and accumulate (MAC) operations |
WO2023048827A1 (en) * | 2021-09-24 | 2023-03-30 | Intel Corporation | Methods, apparatus, and articles of manufacture to increase data reuse for multiply and accumulate (mac) operations |
Also Published As
Publication number | Publication date |
---|---|
US20180129893A1 (en) | 2018-05-10 |
US10755126B2 (en) | 2020-08-25 |
CN108073981A (zh) | 2018-05-25 |
EP3319015B1 (en) | 2022-03-23 |
JP2018077842A (ja) | 2018-05-17 |
US11508146B2 (en) | 2022-11-22 |
CN108073981B (zh) | 2023-09-05 |
EP3319015A1 (en) | 2018-05-09 |
US20200372276A1 (en) | 2020-11-26 |
KR102631381B1 (ko) | 2024-01-31 |
JP7021904B2 (ja) | 2022-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20180050928A (ko) | 컨볼루션 신경망 처리 방법 및 장치 | |
CN107403221B (zh) | 用于实现卷积神经网络的方法和硬件、制造方法和系统 | |
JP6798021B1 (ja) | 畳み込みニューラルネットワークの高速計算 | |
KR20180109619A (ko) | 컨볼루션 신경망 처리 방법 및 장치 | |
US11816559B2 (en) | Dilated convolution using systolic array | |
KR20180073118A (ko) | 컨볼루션 신경망 처리 방법 및 장치 | |
JP6015658B2 (ja) | 匿名化装置、及び、匿名化方法 | |
CN111295675B (zh) | 用于使用内核来处理卷积运算的设备和方法 | |
KR20180136720A (ko) | 다채널 특징맵을 이용하는 영상 처리 장치 및 방법 | |
US20240062054A1 (en) | Storage of input values across multiple cores of neural network inference circuit | |
US20200218777A1 (en) | Signal Processing Method and Apparatus | |
KR20230130591A (ko) | 정보 처리장치, 정보 처리방법, 비일시적인 컴퓨터 판독가능한 기억매체 | |
CN112651485A (zh) | 识别图像的方法和设备以及训练神经网络的方法和设备 | |
CN111523642B (zh) | 用于卷积运算的数据重用方法、运算方法及装置、芯片 | |
US20230019151A1 (en) | Implementation of pooling and unpooling or reverse pooling in hardware | |
US11501145B1 (en) | Memory operation for systolic array | |
US11610128B2 (en) | Neural network training under memory restraint | |
KR102494565B1 (ko) | 콘볼루션 신경망의 하드웨어 구조 최적화 방법 | |
KR20210111677A (ko) | 뉴럴 네트워크의 클리핑 방법, 뉴럴 네트워크의 컨벌루션 계산 방법 및 그 방법을 수행하기 위한 전자 장치 | |
CN112884138A (zh) | 神经网络的硬件实现方式 | |
US20240104375A1 (en) | Method and system for lightweighting artificial neural network model, and non-transitory computer-readable recording medium | |
KR102592346B1 (ko) | 영상 분할 장치 및 방법 | |
EP4120143A1 (en) | Implementation of pooling and unpooling or reverse pooling in hardware | |
WO2021257313A1 (en) | Analytic techniques for improved super tiling machine learning processing | |
CN115398444A (zh) | 用于提供计算高效神经网络的设备和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |