KR20180050928A - 컨볼루션 신경망 처리 방법 및 장치 - Google Patents

컨볼루션 신경망 처리 방법 및 장치 Download PDF

Info

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
Application number
KR1020160147562A
Other languages
English (en)
Other versions
KR102631381B1 (ko
Inventor
손진우
손창용
최창규
한재준
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020160147562A priority Critical patent/KR102631381B1/ko
Priority to CN201710970971.2A priority patent/CN108073981B/zh
Priority to EP17197450.4A priority patent/EP3319015B1/en
Priority to JP2017210622A priority patent/JP7021904B2/ja
Priority to US15/798,461 priority patent/US10755126B2/en
Publication of KR20180050928A publication Critical patent/KR20180050928A/ko
Priority to US16/991,454 priority patent/US11508146B2/en
Application granted granted Critical
Publication of KR102631381B1 publication Critical patent/KR102631381B1/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/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/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
    • 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/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

Abstract

컨볼루션 신경망 처리 방법 및 장치가 개시된다. 일실시예에 따른 컨볼루션 신경망 처리 장치는 컨볼루션 레이어의 커널의 특성 및 컨볼루션 레이어의 입력의 특성 중 적어도 하나에 기초하여, 커널을 재사용하는 제1 연산 모드 및 입력을 재사용하는 제2 연산 모드 중 어느 하나의 연산 모드를 선택하고, 선택된 연산 모드에 따라 컨볼루션 연산을 수행할 수 있다.

Description

컨볼루션 신경망 처리 방법 및 장치{CONVOLUTIONAL NEURAL NETWORK PROCESSING METHOD AND APPARATUS}
아래 실시예들은 컨볼루션 신경망의 처리 기술에 관한 것이다.
뉴럴 네트워크 기반의 딥러닝(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는 일실시예에 따른 컨볼루션 신경망 처리 장치의 구성의 예시도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제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 매트릭스 스칼라 곱(
Figure pat00001
: 2D matrix scalar multiplication), 커널 요소들(w21, w22, ... , w2c)과 임시 버퍼 T2에 저장된 입력 요소들 사이의 2D 매트릭스 스칼라 곱(
Figure pat00002
: 2D matrix scalar multiplication), 커널 요소들(w31, w32, ... , w3c)과 임시 버퍼 T3에 저장된 입력 요소들 사이의 2D 매트릭스 스칼라 곱(
Figure pat00003
: 2D matrix scalar multiplication), 커널 요소들(w41, w42, ... , w4c)과 임시 버퍼 T4에 저장된 입력 요소들 사이의 2D 매트릭스 스칼라 곱(
Figure pat00004
: 2D matrix scalar multiplication)의 연산을 수행하고, 연산 결과들 사이의 2D 매트릭스 와이즈 합(
Figure pat00005
: 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. 컨볼루션 레이어의 커널의 특성 및 상기 컨볼루션 레이어의 입력의 특성 중 적어도 하나에 기초하여, 상기 커널을 재사용하는 제1 연산 모드 및 상기 입력을 재사용하는 제2 연산 모드 중 어느 하나의 연산 모드를 선택하는 단계; 및
    상기 선택된 연산 모드에 따라 컨볼루션 연산을 수행하는 단계
    를 포함하는
    컨볼루션 신경망 처리 방법.
  2. 제1항에 있어서,
    상기 컨볼루션 신경망은 컨볼루션 레이어들을 포함하고,
    상기 컨볼루션 레이어들의 커널들의 특성들 및 상기 컨볼루션 레이어들의 입력들의 특성들에 기초하여, 상기 컨볼루션 레이어들 별로 상기 제1 연산 모드 및 상기 제2 연산 모드 중 어느 하나를 적응적으로 선택하는 단계
    를 더 포함하는,
    컨볼루션 신경망 처리 방법.
  3. 제1항에 있어서,
    상기 커널의 특성은 상기 커널에 포함된 커널 요소들 중 0이 차지하는 비율 및 상기 커널의 크기 중 적어도 하나를 포함하고,
    상기 입력의 특성은 상기 입력에 포함된 입력 요소들 중 0이 차지하는 비율 및 상기 입력의 크기 중 적어도 하나를 포함하는,
    컨볼루션 신경망 처리 방법.
  4. 제1항에 있어서,
    상기 어느 하나의 연산 모드를 선택하는 단계는
    상기 입력에 포함된 입력 요소들 중 0이 차지하는 비율을 획득하는 단계; 및
    상기 획득된 비율 및 상기 커널에 포함된 커널 요소들 중 0이 차지하는 비율 중 큰 값에 대응하는 연산 모드를 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  5. 제1항에 있어서,
    상기 어느 하나의 연산 모드를 선택하는 단계는
    상기 입력의 크기 및 상기 커널의 크기의 비율에 기초하여 연산 모드를 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  6. 제1항에 있어서,
    상기 커널의 특성 및 상기 입력의 특성은 상기 컨볼루션 신경망 내 상기 컨볼루션 레이어의 깊이에 따라 결정되고,
    상기 어느 하나의 연산 모드를 선택하는 단계는
    상기 커널의 특성 및 상기 입력의 특성 중 적어도 하나에 기초하여, 데이터 로드 횟수 및 동작 메모리의 용량 중 적어도 하나와 관련된 제한조건(constraint)을 만족하는 연산 모드를 선택하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  7. 제1항에 있어서,
    상기 어느 하나의 연산 모드를 선택하는 단계는
    상기 제1 연산 모드의 제1 데이터 로드 횟수 및 상기 제2 연산 모드의 제2 데이터 로드 횟수 중 작은 값에 대응하는 연산 모드를 선택하는 단계
    를 포함하고,
    컨볼루션 신경망 처리 방법.
  8. 제7항에 있어서,
    상기 연산 모드를 선택하는 단계는
    상기 제1 데이터 로드 횟수를 획득하는 단계
    를 포함하고,
    상기 제1 데이터 로드 횟수는
    상기 커널의 크기로부터 계산된 상기 커널의 로드 횟수; 및 상기 커널에 포함된 커널 요소들 중 0의 개수와 상기 입력의 크기에 기초하여 계산된 상기 입력의 로드 횟수의 합에 의해 계산되는,
    컨볼루션 신경망 처리 방법.
  9. 제7항에 있어서,
    상기 연산 모드를 선택하는 단계는
    상기 입력에 포함된 입력 요소들 중 0의 개수를 획득하는 단계; 및
    상기 입력의 크기로부터 계산된 상기 입력의 로드 횟수; 및 상기 입력 요소들 중 0의 개수와 상기 커널의 크기에 기초하여 계산된 상기 커널의 로드 횟수의 합을 통해 상기 제2 데이터 로드 횟수를 계산하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  10. 제1항에 있어서,
    상기 컨볼루션 연산을 수행하는 단계는
    상기 제1 연산 모드가 선택되는 경우,
    상기 입력에 포함된 입력 요소들 중에서, 상기 커널에 포함된 커널 요소들에 대응하는 입력 요소들을 특정하는 제1 정보 및 상기 컨볼루션 연산의 출력에 포함된 출력 요소들 중에서, 상기 커널 요소들과 상기 특정된 입력 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 특정하는 제2 정보에 기초하여 컨볼루션 연산을 수행하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  11. 제10항에 있어서,
    상기 컨볼루션 연산을 수행하는 단계는
    상기 커널 요소들 중 어느 하나의 커널 요소를 로딩하는 단계;
    상기 제1 정보에 기초하여, 상기 로딩된 커널 요소와 대응하는 입력 요소들을 로딩하는 단계; 및
    상기 제2 정보에 기초하여, 상기 로딩된 커널 요소 및 상기 로딩된 입력 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 갱신하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  12. 제10항에 있어서,
    상기 제1 정보는 상기 커널 요소들의 위치들, 상기 커널의 크기 및 스트라이드(stride), 상기 입력의 크기 및 패드(pad)에 기초하여 결정되고,
    상기 제2 정보는 상기 커널 요소들의 위치들 및 상기 특정된 입력 요소들의 위치들에 기초하여 결정되는,
    컨볼루션 신경망 처리 방법.
  13. 제1항에 있어서,
    상기 컨볼루션 연산을 수행하는 단계는
    상기 제1 연산 모드가 선택되는 경우,
    상기 커널 요소들 중 어느 하나의 커널 요소를 로딩하는 단계; 및
    상기 로딩된 커널 요소가 0인 경우, 상기 로딩된 커널 요소와 대응하는 입력 요소들의 로딩 또는 상기 로딩된 커널 요소와 관련된 연산들을 스킵(skip)하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  14. 제1항에 있어서,
    상기 컨볼루션 연산을 수행하는 단계는
    상기 제1 연산 모드가 선택되는 경우,
    상기 커널에 포함된 커널 요소들에 대응하는 임시 버퍼를 할당하는 단계;
    상기 커널에 포함된 커널 요소들 중 어느 하나의 커널 요소를 로딩하는 단계; 및
    상기 로딩된 커널 요소 및 상기 로딩된 커널 요소에 대응하는 임시 버퍼에 기초하여, 컨볼루션 연산을 수행하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  15. 제14항에 있어서,
    상기 컨볼루션 연산을 수행하는 단계는
    상기 커널 요소들 중 상기 로딩된 커널 요소와 다른 커널 요소를 로딩하는 단계; 및
    상기 다른 커널 요소가 0과 다른 경우, 상기 다른 커널 요소 및 상기 다른 커널 요소에 대응하는 임시 버퍼에 저장된 입력 요소들 사이의 연산 결과들에 기초하여, 컨볼루션 연산을 수행하는 단계
    를 더 포함하는,
    컨볼루션 신경망 처리 방법.
  16. 제1항에 있어서,
    상기 컨볼루션 연산을 수행하는 단계는
    상기 제1 연산 모드가 선택되는 경우,
    상기 커널에 포함된 커널 요소들 중 어느 하나의 커널 요소를 로딩하는 단계;
    상기 로딩된 커널 요소가 0인 경우 임시 버퍼의 할당을 스킵하는 단계;
    상기 로딩된 커널 요소가 0과 다른 경우, 상기 로딩된 커널 요소의 위치, 상기 커널의 크기 및 스트라이드(stride), 상기 입력의 크기 및 패드(pad)에 기초하여 임시 버퍼를 할당하는 단계;
    상기 로딩된 커널 요소에 대응하는 입력 요소들을 로딩하여, 상기 할당된 임시 버퍼에 저장하는 단계; 및
    상기 로딩된 커널 요소 및 상기 임시 버퍼에 저장된 입력 요소들 사이의 연산 결과들에 기초하여 컨볼루션 연산을 수행하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  17. 제1항에 있어서,
    상기 컨볼루션 연산을 수행하는 단계는
    상기 제2 연산 모드가 선택되는 경우,
    상기 커널에 포함된 커널 요소들 중에서, 상기 입력에 포함된 입력 요소들에 대응하는 커널 요소들을 특정하는 제1 정보 및 상기 컨볼루션 연산의 출력에 포함된 출력 요소들 중에서, 상기 입력 요소들과 상기 특정된 커널 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 특정하는 제2 정보에 기초하여 컨볼루션 연산을 수행하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  18. 제17항에 있어서,
    상기 컨볼루션 연산을 수행하는 단계는
    상기 입력 요소들 중 어느 하나의 입력 요소를 로딩하는 단계;
    상기 제1 정보에 기초하여, 상기 로딩된 입력 요소와 대응하는 커널 요소들을 로딩하는 단계; 및
    상기 제2 정보에 기초하여, 상기 로딩된 입력 요소 및 상기 로딩된 커널 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 갱신하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  19. 제17항에 있어서,
    상기 제1 정보는 상기 입력 요소들의 위치들, 상기 커널의 크기 및 스트라이드(stride), 상기 입력의 크기 및 패드(pad)에 기초하여 결정되고,
    상기 제2 정보는 상기 입력 요소들의 위치들 및 상기 특정된 커널 요소들의 위치들에 기초하여 결정되는,
    컨볼루션 신경망 처리 방법.
  20. 제1항에 있어서,
    상기 컨볼루션 연산을 수행하는 단계는
    상기 제2 연산 모드가 선택되는 경우,
    상기 입력 요소들 중 어느 하나의 입력 요소를 로딩하는 단계; 및
    상기 로딩된 입력 요소가 0인 경우, 상기 로딩된 입력 요소와 대응하는 커널 요소들의 로딩 또는 상기 로딩된 입력 요소와 관련된 연산들을 스킵(skip)하는 단계
    를 포함하는,
    컨볼루션 신경망 처리 방법.
  21. 하드웨어와 결합되어 제1항 내지 제20항 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
  22. 컨볼루션 레이어의 커널의 특성 및 상기 컨볼루션 레이어의 입력의 특성 중 적어도 하나에 기초하여, 상기 커널을 재사용하는 제1 연산 모드 및 상기 입력을 재사용하는 제2 연산 모드 중 어느 하나의 연산 모드를 선택하고,
    상기 선택된 연산 모드에 따라 컨볼루션 연산을 수행하는 프로세서
    를 포함하는
    컨볼루션 신경망 처리 장치.
  23. 제22항에 있어서,
    상기 컨볼루션 신경망은 컨볼루션 레이어들을 포함하고,
    상기 프로세서는
    상기 컨볼루션 레이어들의 커널들의 특성들 및 상기 컨볼루션 레이어들의 입력들의 특성들에 기초하여, 상기 컨볼루션 레이어들 별로 상기 제1 연산 모드 및 상기 제2 연산 모드 중 어느 하나를 적응적으로 선택하는,
    컨볼루션 신경망 처리 장치.
  24. 제22항에 있어서,
    상기 커널의 특성은 상기 커널에 포함된 커널 요소들 중 0이 차지하는 비율 및 상기 커널의 크기 중 적어도 하나를 포함하고,
    상기 입력의 특성은 상기 입력에 포함된 입력 요소들 중 0이 차지하는 비율 및 상기 입력의 크기 중 적어도 하나를 포함하며,
    상기 커널의 특성 및 상기 입력의 특성은 상기 컨볼루션 신경망 내 상기 컨볼루션 레이어의 깊이에 따라 결정되고,
    상기 프로세서는
    상기 커널의 특성 및 상기 입력의 특성 중 적어도 하나에 기초하여, 데이터 로드 횟수 및 동작 메모리의 용량 중 적어도 하나와 관련된 제한조건(constraint)을 만족하는 연산 모드를 선택하는,
    컨볼루션 신경망 처리 장치.
  25. 제24항에 있어서,
    상기 제1 연산 모드의 제1 데이터 로드 횟수를 기록하는 메모리
    를 더 포함하고,
    상기 제1 데이터 로드 횟수는 상기 커널의 크기로부터 계산된 상기 커널의 로드 횟수; 및 상기 커널에 포함된 커널 요소들 중 0의 개수와 상기 입력의 크기에 기초하여 계산된 상기 입력의 로드 횟수의 합에 의해 계산되고,
    상기 프로세서는
    상기 제1 데이터 로드 횟수를 획득하고,
    상기 입력에 포함된 입력 요소들 중 0의 개수를 획득하며,
    상기 입력의 크기로부터 계산된 상기 입력의 로드 횟수; 및 상기 입력 요소들 중 0의 개수와 상기 커널의 크기에 기초하여 계산된 상기 커널의 로드 횟수의 합을 통해 상기 제2 데이터 로드 횟수를 계산하고,
    상기 제1 연산 모드의 제1 데이터 로드 횟수 및 상기 제2 연산 모드의 제2 데이터 로드 횟수 중 작은 값에 대응하는 연산 모드를 선택하는,
    컨볼루션 신경망 처리 장치.
  26. 제22항에 있어서,
    상기 프로세서는
    상기 제1 연산 모드가 선택되는 경우,
    상기 입력에 포함된 입력 요소들 중에서, 상기 커널에 포함된 커널 요소들에 대응하는 입력 요소들을 특정하는 제1 정보 및 상기 컨볼루션 연산의 출력에 포함된 출력 요소들 중에서, 상기 커널 요소들과 상기 특정된 입력 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 특정하는 제2 정보에 기초하여 컨볼루션 연산을 수행하는,
    컨볼루션 신경망 처리 장치.
  27. 제22항에 있어서,
    상기 프로세서는
    상기 제1 연산 모드가 선택되는 경우,
    상기 커널 요소들 중 어느 하나의 커널 요소를 로딩하고,
    상기 로딩된 커널 요소가 0인 경우, 상기 로딩된 커널 요소와 대응하는 입력 요소들의 로딩 또는 상기 로딩된 커널 요소와 관련된 연산들을 스킵(skip)하는,
    컨볼루션 신경망 처리 장치.
  28. 제22항에 있어서,
    상기 프로세서는
    상기 제2 연산 모드가 선택되는 경우,
    상기 커널에 포함된 커널 요소들 중에서, 상기 입력에 포함된 입력 요소들에 대응하는 커널 요소들을 특정하는 제1 정보 및 상기 컨볼루션 연산의 출력에 포함된 출력 요소들 중에서, 상기 입력 요소들과 상기 특정된 커널 요소들 사이의 연산 결과들이 매핑되는 출력 요소들을 특정하는 제2 정보에 기초하여 컨볼루션 연산을 수행하는,
    컨볼루션 신경망 처리 장치.
  29. 제22항에 있어서,
    상기 프로세서는
    상기 제2 연산 모드가 선택되는 경우,
    상기 입력 요소들 중 어느 하나의 입력 요소를 로딩하고,
    상기 로딩된 입력 요소가 0인 경우, 상기 로딩된 입력 요소와 대응하는 커널 요소들의 로딩 또는 상기 로딩된 입력 요소와 관련된 연산들을 스킵(skip)하는,
    컨볼루션 신경망 처리 장치.
KR1020160147562A 2016-11-07 2016-11-07 컨볼루션 신경망 처리 방법 및 장치 KR102631381B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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