KR20180060149A - 컨볼루션 처리 장치 및 방법 - Google Patents

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

Info

Publication number
KR20180060149A
KR20180060149A KR1020160159293A KR20160159293A KR20180060149A KR 20180060149 A KR20180060149 A KR 20180060149A KR 1020160159293 A KR1020160159293 A KR 1020160159293A KR 20160159293 A KR20160159293 A KR 20160159293A KR 20180060149 A KR20180060149 A KR 20180060149A
Authority
KR
South Korea
Prior art keywords
pixel
input
output
mac
row
Prior art date
Application number
KR1020160159293A
Other languages
English (en)
Inventor
모스타파 헤삼
아이마르 알렉산드로
Original Assignee
삼성전자주식회사
우니페르지타에트 취리히
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 우니페르지타에트 취리히 filed Critical 삼성전자주식회사
Priority to KR1020160159293A priority Critical patent/KR20180060149A/ko
Priority to US15/581,872 priority patent/US10296829B2/en
Publication of KR20180060149A publication Critical patent/KR20180060149A/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
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Image Processing (AREA)

Abstract

컨볼루션 처리 장치 및 방법이 개시된다. 일실시예에 따른 컨볼루션 처리 장치는 입력 영상에 포함된 픽셀을 로딩하고, 로딩된 픽셀의 값이 0인 경우 픽셀과 관련된 처리를 스킵(skip)하는 콘트롤러; 적어도 하나의 필터를 포함하고, 픽셀의 인덱스 및 픽셀의 입력 채널에 기초하여 적어도 하나의 필터로부터 픽셀에 대응하는 적어도 하나의 커널 요소를 추출하는 필터 뱅크(filter bank); 및 픽셀의 값 및 커널 요소의 값에 기초하여 컨볼루션 연산을 수행하고, 출력 영상에 대응하도록 연산 결과를 누적적으로 저장하는 적어도 하나의 MAC(Multiply-Accumulator)을 포함한다.

Description

컨볼루션 처리 장치 및 방법{CONVOLUTION PROCESSING APPARATUS AND METHOD}
아래 실시예들은 컨볼루션과 관련된 연산을 처리하는 기술에 관한 것이다.
뉴럴 네트워크 기반의 딥러닝(deep learning) 기술은 다양한 분야에서 활용되고 있다. 예를 들어, 얼굴, 홍채, 음성 등을 인식하는 딥러닝 기반 생체 인식/인증 어플리케이션은 임베디드 단말(예를 들어, 스마트 폰)에 채용된다. 컨볼루션 신경망(Convolutional Neural Network; CNN)은 컨볼루션 연산을 활용하는 다 계층 신경망으로서, 딥러닝 기반 영상 및 음성 인식 분야에서 좋은 성능을 보여준다. 컨볼루션과 관련된 연산을 효율적으로 처리하는 기술 개발이 요구된다.
일실시예에 따른 컨볼루션 처리 장치는 입력 영상에 포함된 픽셀을 로딩하고, 상기 로딩된 픽셀의 값이 0인 경우 상기 픽셀과 관련된 처리를 스킵(skip)하는 콘트롤러; 적어도 하나의 필터를 포함하고, 상기 픽셀의 인덱스 및 상기 픽셀의 입력 채널에 기초하여 상기 적어도 하나의 필터로부터 상기 픽셀에 대응하는 적어도 하나의 커널 요소를 추출하는 필터 뱅크(filter bank); 및 상기 픽셀의 값 및 상기 커널 요소의 값에 기초하여 컨볼루션 연산을 수행하고, 출력 영상에 대응하도록 연산 결과를 누적적으로 저장하는 적어도 하나의 MAC(Multiply-Accumulator)을 포함한다.
일실시예에 따른 컨볼루션 처리 장치는 미리 정의된 픽셀 행(pixel row)들에 대응하는 입력 레지스터들을 더 포함하고, 상기 콘트롤러는 입력 특징 맵 상 상기 픽셀의 행에 대응하는 픽셀 행의 입력 레지스터를 상기 입력 특징 맵 상 상기 픽셀의 열(column) 및 상기 입력 채널을 기록하도록 갱신하고, 상기 픽셀 행 및 상기 입력 채널을 상기 필터 뱅크로 제공(feed)하고, 상기 픽셀의 값을 상기 MAC으로 제공하며, 상기 필터 뱅크는 상기 커널 요소의 값을 상기 MAC으로 제공할 수 있다.
일실시예에 따른 컨볼루션 처리 장치는 최대 열(max column)을 기록하는 레지스터를 더 포함하고, 상기 필터는 커널 맵들을 포함하고, 상기 콘트롤러는 상기 입력 레지스터에 기록된 열 및 상기 최대 열에 기초하여 상기 픽셀의 다음 픽셀을 로딩하고, 상기 최대 열은 상기 커널 맵들의 너비(width)에 기초하여 정의될 수 있다.
일실시예에 따른 컨볼루션 처리 장치는 최대 열(max column)을 기록하는 레지스터를 더 포함하고, 상기 콘트롤러는 상기 입력 레지스터에 기록된 열과 상기 최대 열을 비교하고, 상기 비교 결과에 기초하여 상기 입력 특징 맵과 인터리빙된 입력 특징 맵 상에서 상기 픽셀의 행에 대응하는 다음 픽셀을 로딩하고, 상기 인터리빙된 입력 특징 맵 상 상기 다음 픽셀의 열 및 상기 인터리빙된 입력 특징 맵의 입력 채널을 기록하도록 상기 입력 레지스터를 갱신할 수 있다.
일실시예에 따른 컨볼루션 처리 장치는 최대 열(max column)을 기록하는 레지스터를 더 포함하고, 상기 콘트롤러는 상기 입력 레지스터에 기록된 열과 상기 최대 열을 비교하고, 상기 비교 결과에 기초하여 상기 입력 특징 맵과 인터리빙된 입력 특징 맵 상에서 상기 픽셀의 행의 다음 행에 대응하는 다음 픽셀을 로딩하고, 상기 인터리빙된 입력 특징 맵 상 상기 다음 픽셀의 열 및 상기 인터리빙된 입력 특징 맵의 입력 채널을 기록하도록 상기 인터리빙된 입력 특징 맵 상 상기 다음 픽셀의 행에 대응하는 픽셀 행의 입력 레지스터를 갱신할 수 있다.
일실시예에 따른 컨볼루션 처리 장치는 최대 열(max column)을 기록하는 레지스터를 더 포함하고, 상기 콘트롤러는 상기 입력 레지스터들 중 마지막 픽셀 행에 대응하는 입력 레지스터에 기록된 열과 상기 최대 열을 비교하고, 상기 비교 결과에 기초하여 상기 최대 열보다 큰 최대 열을 기록하도록 상기 레지스터를 갱신할 수 있다.
일실시예에 따른 컨볼루션 처리 장치는 최대 열(max column)을 기록하는 레지스터를 더 포함하고, 상기 MAC은 행들 및 열들에 대응하는 출력 레지스터들을 포함하고, 픽셀들의 값들 및 커널 요소들의 값들 사이의 연산 결과들에 기초하여 출력 픽셀들의 값들을 기록하도록 상기 출력 레지스터들을 갱신하고, 상기 콘트롤러는 상기 입력 레지스터들 중 마지막 픽셀 행에 대응하는 입력 레지스터에 기록된 열과 상기 최대 열을 비교하고, 상기 비교 결과에 기초하여 상기 MAC으로 슬라이드 신호(slide signal)을 전송하고, 상기 MAC은 상기 슬라이드 신호에 응답하여 상기 출력 레지스터들의 일부의 갱신을 완료할 수 있다.
일실시예에 따르면, 상기 입력 영상은 입력 채널들에 대응하는 입력 특징 맵들을 포함하고, 상기 입력 특징 맵들의 각 행들에 대응하는 픽셀들은 인터리빙(interleaving)되어 메모리에 기록될 수 있다.
일실시예에 따르면, 상기 입력 특징 맵들에 대응하는 스파시티 맵(Sparsity Map; SM)(상기 SM은 입력 특징 맵의 픽셀들의 값들이 0인지 여부를 나타내는 맵임)들의 값들은 상기 입력 특징 맵들의 상기 각 행들 별로 인터리빙되어 상기 메모리에 기록되고, 상기 입력 특징 맵들에 대응하는 비-제로 값 리스트(Non-Zero Value List; NZVL)(상기 NZVL은 입력 특징 맵의 픽셀들의 값들 중 0이 아닌 값들의 리스트임)들의 값들(상기 NZVL들의 값들은 상기 입력 채널들과 대응함)은 상기 각 행들 별로 인터리빙되어 상기 메모리에 기록될 수 있다.
일실시예에 따른 상기 각 행들의 NZVL들에 대응하는 시작 주소들은 상기 각 행들에 대응하는 레지스터들에 기록되고, 상기 SM들에 대응하는 시작 주소는 상기 SM들에 대응하는 레지스터에 기록되며, 상기 콘트롤러는 상기 시작 주소들 및 상기 시작 주소에 기초하여 상기 메모리로부터 상기 픽셀을 로딩할 수 있다.
일실시예에 따른 상기 필터는 커널 맵들을 포함하고, 상기 필터 뱅크는 상기 MAC에 대응하는 필터에 포함된 커널 맵들 중에서, 상기 입력 채널에 대응하는 커널 맵으로부터 상기 픽셀 행에 대응하는 적어도 하나의 행의 커널 요소의 값을 상기 MAC으로 제공할 수 있다.
일실시예에 따른 상기 필터는 커널 맵들을 포함하고, 상기 MAC은 행들 및 열들에 대응하는 출력 레지스터들을 포함하고, 상기 픽셀 행들의 수는 상기 커널 맵들의 높이 및 상기 행들의 수에 기초하여 정의될 수 있다.
일실시예에 따른 상기 필터는 커널 맵들을 포함하고, 상기 MAC은 행들 및 열들에 대응하는 출력 레지스터들을 포함하고, 상기 열들의 수는 상기 커널 맵들의 너비(width)에 기초하여 정의되고, 상기 MAC은 상기 픽셀의 값 및 상기 커널 요소의 값 사이의 연산 결과에 기초하여, 출력 픽셀의 값을 기록하도록 출력 레지스터를 갱신할 수 있다.
일실시예에 따른 컨볼루션 처리 장치는 행들 및 열들에 대응하는 버퍼 요소들로 구성된 출력 버퍼(output buffer)를 더 포함하고, 상기 출력 버퍼의 행들의 수는 상기 출력 레지스터들의 행들의 수에 기초하여 정의되고, 상기 출력 버퍼의 열들은 상기 MAC에 대응하며, 상기 MAC은 갱신이 완료된 열의 출력 레지스터들의 각 행들에 기록된 출력 픽셀들의 값들을 상기 MAC에 대응하는 열의 버퍼 요소들의 각 행들로 제공할 수 있다.
일실시예에 따른 컨볼루션 처리 장치는 상기 MAC에 대응하는 적어도 하나의 풀링 블록(pooling block); 및 행들 및 열들에 대응하는 버퍼 요소들로 구성된 출력 버퍼(output buffer)를 더 포함하고, 상기 출력 버퍼의 열들은 상기 MAC에 대응하며, 상기 MAC은 갱신이 완료된 열의 출력 레지스터들에 기록된 출력 픽셀들의 값들을 상기 MAC에 대응하는 풀링 블록으로 제공하고, 상기 풀링 블록은 상기 MAC에 대응하는 열의 버퍼 요소에 기록된 출력 픽셀의 값 및 상기 제공된 출력 픽셀들의 값들에 기초하여 새로운 출력 픽셀의 값을 계산하고, 상기 새로운 출력 픽셀의 값을 상기 버퍼 요소로 제공할 수 있다.
일실시예에 따른 컨볼루션 처리 장치는 미리 정의된 픽셀 행(pixel row)들에 대응하는 입력 레지스터들을 더 포함하고, 상기 콘트롤러는 제1 입력 채널에 대응하는 제1 픽셀 및 제2 입력 채널에 대응하는 제2 픽셀을 로딩하고, 상기 제1 픽셀의 행에 대응하는 제1 픽셀 행의 입력 레지스터를 상기 제1 픽셀의 열 및 상기 제1 입력 채널을 기록하도록 갱신하고, 상기 제2 픽셀의 행에 대응하는 제2 픽셀 행의 입력 레지스터를 상기 제2 픽셀의 열 및 상기 제2 입력 채널을 기록하도록 갱신하고, 상기 제1 픽셀 행 및 상기 제1 입력 채널을 상기 필터 뱅크로 제공하고, 상기 제2 픽셀 행 및 상기 제2 입력 채널을 상기 필터 뱅크로 제공하고, 상기 제1 픽셀의 값을 제1 MAC으로 제공하고, 상기 제2 픽셀의 값을 제2 MAC으로 제공하며, 상기 필터 뱅크는 상기 제1 입력 채널에 대응하는 커널 맵으로부터 상기 제1 픽셀 행에 대응하는 적어도 하나의 행의 커널 요소의 값을 상기 제1 MAC으로 제공하고, 상기 필터 뱅크는 상기 제2 입력 채널에 대응하는 커널 맵으로부터 상기 제2 픽셀 행에 대응하는 적어도 하나의 행의 커널 요소의 값을 상기 제2 MAC으로 제공할 수 있다.
일실시예에 따른 컨볼루션 처리 장치는 상기 필터는 상기 출력 영상의 적어도 하나의 출력 채널에 대응하고, 상기 MAC은 행들 및 열들에 대응하는 출력 레지스터들을 포함하고, 상기 열들의 수는 상기 커널 맵들의 너비(width)에 기초하여 정의되고, 상기 필터 뱅크는 상기 픽셀의 인덱스 및 상기 픽셀의 입력 채널에 기초하여 제1 필터로부터 상기 픽셀에 대응하는 적어도 하나의 제1 커널 요소를 추출하고, 제2 필터로부터 상기 픽셀에 대응하는 적어도 하나의 제2 커널 요소를 추출하며, 상기 MAC은 상기 픽셀의 값 및 상기 제1 커널 요소 사이의 연산 결과에 기초하여, 출력 픽셀의 값을 기록하도록 상기 제1 필터에 대응하는 출력 레지스터를 갱신하고, 상기 픽셀의 값 및 상기 제2 커널 요소 사이의 연산 결과에 기초하여, 출력 픽셀의 값을 기록하도록 상기 제2 필터에 대응하는 출력 레지스터를 갱신할 수 있다.
일실시예에 따른 컨볼루션 처리 방법은 콘트롤러에서, 입력 채널들에 대응하는 입력 특징 맵(상기 입력 특징 맵은 픽셀들을 포함함)들을 포함하는 입력 영상으로부터 픽셀을 로딩하는 단계; 상기 콘트롤러에서, 상기 로딩된 픽셀의 값이 0인 경우 상기 픽셀과 관련된 처리를 스킵(skip)하는 단계; 필터 뱅크(filter bank)에서, 상기 픽셀의 인덱스 및 상기 픽셀의 입력 채널에 기초하여 적어도 하나의 필터로부터 상기 픽셀에 대응하는 적어도 하나의 커널 요소를 추출하는 단계; 및 적어도 하나의 MAC(Multiply-Accumulator)에서, 상기 픽셀의 값 및 상기 커널 요소의 값에 기초하여 컨볼루션 연산을 수행하고, 출력 영상에 대응하도록 연산 결과를 누적적으로 저장하는 단계를 포함한다.
도 1은 일실시예에 따른 컨볼루션 처리 장치의 구성의 예시도이다.
도 2a는 일실시예에 따른 입력 특징 맵의 예시도이다.
도 2b는 일실시예에 따른 입력 영상의 처리 기법을 설명하기 위한 도면이다.
도 3은 일실시예에 따른 입력 영상을 저장하는 동작을 설명하기 위한 도면이다.
도 4는 일실시예에 따른 컨볼루션 처리 장치의 동작을 설명하기 위한 도면이다.
도 5는 일실시예에 따른 컨볼루션 처리 장치의 동작을 설명하기 위한 도면이다.
도 6은 일실시예에 따른 컨볼루션 처리 장치의 동작을 설명하기 위한 도면이다.
도 7은 일실시예에 따른 컨볼루션 처리 방법을 설명하기 위한 순서도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일실시예에 따른 컨볼루션 처리 장치의 구성의 예시도이다.
도 1을 참조하면, 컨볼루션 처리 장치(101)는 콘트롤러(102), 필터 뱅크(filter bank)(103) 및 MAC(Multiply-Accumulator)(104)을 포함한다. 컨볼루션 처리 장치(101)는 컨볼루션을 처리하는 장치로서, 소프트웨어 모듈, 하드웨어 모듈 또는 이들의 조합으로 구현될 수 있다.
기계 학습(machine learning)에 있어서, 신경망(Neural Network)의 일종인 컨볼루션 신경망(Convolutional Neural Network; CNN)은 컨볼루션 연산을 수행하도록 설계된 컨볼루션 레이어들을 포함한다. CNN을 구성하는 컨볼루션 레이어는 커널을 이용하여 입력과 연관된 컨볼루션 연산을 수행할 수 있다. 예를 들어, 컨볼루션 처리 장치(101)는 컨볼루션과 관련된 동작, 연산 및 명령 등을 생성 또는 처리할 수 있고, CNN을 구성하는 컨볼루션 레이어에 입력된 입력 영상을 처리하여 출력 영상을 생성할 수 있다. 일실시예에 따르면, 컨볼루션 처리 장치(101)는 프로세서 및 메모리를 포함하고, 휘발성 또는 비휘발성인 메모리는 컨볼루션 처리 방법이 구현된 프로그램을 저장하며 프로세서는 메모리에 기록된 프로그램을 실행하고 컨볼루션 처리 장치(101)를 제어할 수 있다. 프로세서에 의해 실행되는 프로그램의 코드는 메모리에 저장될 수 있다. 컨볼루션 처리 장치(101)는 입출력 장치를 통하여 외부 장치(예를 들어, 퍼스널 컴퓨터 또는 네트워크)에 연결되고, 데이터를 교환할 수 있다. 일실시예에 따르면 컨볼루션 처리 장치(101)는 CNN과 관련된 연산을 고속으로 처리하는 CNN 가속기, NPU(Neural Processing Unit) 또는 VPU(Vision Processing Unit)에 채용되어 해당 전용 프로세서를 제어할 수 있다. 이하에서는 도 1에 도시된 구성요소들을 중심으로 실시예가 설명되지만, 컨볼루션 처리 장치(101)는 설계 의도에 따라 다양한 하드웨어를 채용하거나 채용될 수 있으며 도시된 구성요소들의 실시예에 한정되지 않는다.
도 1을 참조하면, 콘트롤러(102)는 입력 영상에 포함된 픽셀을 로딩할 수 있다. 여기서, 입력 영상은 입력 채널들에 대응하는 입력 특징 맵들을 포함하고, 입력 특징 맵은 픽셀들을 포함할 수 있는데, 콘트롤러(102)에 의해 로딩된 픽셀은 입력 특징 맵에 포함된 픽셀들 중 어느 하나일 수 있다. 입력 특징 맵은 행(row)들 및 열(column)들에 대응하는 픽셀들을 포함할 수 있다. 행들 및 열들로 식별되는 메트릭스 또는 격자형 구조에서, 행들의 수를 너비(width)라고 하고 열들의 수를 높이(height)라 지칭한다.
콘트롤러(102)는 입력 영상이 저장된 메모리로부터 픽셀을 로딩할 수 있는데, 입력 영상에 포함된 입력 특징 맵들은 서로 인터리빙(interleaving)되어 메모리에 저장될 수 있고, 입력 영상 또는 출력 영상이 저장되는 실시예는 도 2a, 도 2b 및 도 3을 참조하여 설명된다. 콘트롤러(102)가 픽셀을 로딩한다는 것은 메모리에 저장된 픽셀 관련 데이터 또는 정보를 메모리로부터 읽는 동작을 의미하고, 예를 들어 콘트롤러(102)는 메모리로부터 픽셀을 로딩하여, 로딩된 픽셀의 값, 픽셀이 포함된 입력 특징 맵의 입력 채널 및 픽셀의 인덱스(입력 특징 맵 상의 픽셀의 행(row) 또는 열(column))을 레지스터에 올려 놓을 수 있다. 콘트롤러(102)는 레지스터에 올려 놓인 픽셀 관련 정보 또는 데이터를 다른 구성요소들로 제공(feed)하면서 컨볼루션 관련 처리 또는 동작을 제어할 수 있다.
필터 뱅크(103)는 적어도 하나의 필터를 포함한다. 여기서, 커널은 적어도 하나의 필터를 포함하고, 필터는 커널 맵들을 포함할 수 있고, 커널 맵들 각각은 입력 특징 맵들(또는 입력 채널들)과 각각 대응할 수 있다. 커널 맵은 행들 및 열들에 대응하는 커널 요소들을 포함할 수 있다. 또한, 필터들 각각은 출력 영상의 출력 특징 맵들(또는 출력 채널들)과 각각 대응할 수 있다. 컨볼루션 연산 처리에 따르면, 입력 영상이 10개의 입력 채널들에 대응하는 입력 특징 맵들을 포함하는 경우, 각 필터는 입력 채널들에 대응하는 10개의 커널 맵들을 포함할 수 있다. 이러한 환경에서, 커널이 출력 채널들에 대응하는 5개의 필터들을 포함하는 경우, 입력 영상과 5개의 필터들 사이의 연산 결과들에 의해 5개의 출력 특징 맵들이 생성될 수 있고, 그 결과 출력 영상은 5개의 출력 채널들에 대응하는 출력 특징 맵들을 포함할 수 있다.
콘트롤러(102)는 픽셀의 인덱스 및 입력 채널을 필터 뱅크(103)로 제공하고, 픽셀의 값을 MAC(104)으로 제공할 수 있다. 필터 뱅크(103)는 픽셀의 인덱스 및 입력 채널에 기초하여 적어도 하나의 필터로부터 픽셀에 대응하는 적어도 하나의 커널 요소를 추출할 수 있다. 필터 뱅크(103)는 추출된 적어도 하나의 커널 요소를 MAC(104)으로 제공할 수 있다.
MAC(104)은 픽셀의 값 및 적어도 하나의 커널 요소의 값에 기초하여 컨볼루션 연산을 수행하고, 출력 영상에 대응하도록 연산 결과를 누적적으로 저장할 수 있다. MAC(104)은 콘트롤러(102)로부터 제공된 픽셀의 값과 필터 뱅크(103)로부터 제공된 적어도 하나의 커널 요소의 값 사이의 곱셈 연산을 수행하고, 곱셈 연산 결과들 사이의 덧셈 연산을 수행할 수 있고, 연산 결과들이 출력 영상에 적합하게 대응되도록 연산 결과들을 갱신할 수 있다. 컨볼루션 처리 장치(101)의 동작과 관련된 자세한 내용은 도 4 내지 도 6을 참조하여 설명하겠고, 이에 앞서 도 2a, 도 2b 및 도 3을 참조하여 입력 영상 및 출력 영상의 데이터를 효율적으로 관리 또는 저장하는 실시예를 설명한다.
도 2a는 일실시예에 따른 입력 특징 맵의 예시도이다.
입력 영상은 입력 채널들에 대응하는 입력 특징 맵들을 포함할 수 있는데, 도 2를 참조하면, 입력 특징 맵(201)은 행들 및 열들에 대응하는 픽셀들을 포함할 수 있다. 입력 특징 맵(201)의 크기는 5*5이고, 너비는 5이며, 높이는 5이다. 입력 특징 맵(201)은 컨볼루션 레이어들 중 어느 하나의 컨볼루션 레이어로부터 출력되는 출력 영상에 포함되고, 다음번 컨볼루션 레이어로 입력되는 입력 영상에 포함될 수 있다. 일실시예에 따른 컨볼루션 처리 장치의 타겟이 되는 입력 영상은 압축된 형태로 메모리에 저장될 수 있고, 컨볼루션 처리 장치에 의해 생성된 출력 영상도 압축된 형태로 메모리에 저장될 수 있다. 컨볼루션 처리 장치는 일실시예에 따른 압축 기법을 이용하여 입력 영상 또는 출력 영상을 압축하여 메모리에 저장할 수 있다. 또는, 컨볼루션 처리 장치와 별도의 독립된 장치에 의해 입력 영상 또는 출력 영상이 압축되어 메모리에 저장되고 컨볼루션 처리 장치는 메모리로부터 컨볼루션 처리를 위한 픽셀들을 로딩할 수 있다. 또는, 컨볼루션 처리 장치는 입력 영상을 전처리하고, 전처리된 입력 영상의 픽셀들의 컨볼루션 처리를 수행할 수 있다. 입력 영상을 메모리에 저장하기 위해 채용되는 기술을 압축 기법이라 하고, 압축 기법은 컨볼루션 처리 장치 또는 독립된 별도의 장치에 의해 수행될 수 있고, 이하에서는 컨볼루션 처리 장치에 의해 압축 기법이 채용되는 방식으로 기술하겠다.
도 2b는 일실시예에 따른 입력 영상의 처리 기법을 설명하기 위한 도면이다.
컨볼루션 처리 장치는 입력 특징 맵(201)으로부터 비-제로 값 리스트(Non-Zero Value List; NZVL) 및 스파시티 맵(Sparsity Map; SM)(202)을 생성할 수 있다. SM(202)은 입력 특징 맵(201)의 픽셀들의 값들이 0인지 여부를 나타내는 맵으로서, 컨볼루션 처리 장치는 입력 특징 맵(201)의 픽셀들의 값들이 0인지 여부를 나타내는 바이너리 마스크(binary mask)를 통해 SM(202)을 생성할 수 있다. SM(202)의 바이너리 마스크(binary mask)는 수학식 1과 같이 표현될 수 있다.
Figure pat00001
여기서, i는 픽셀의 인덱스이고,
Figure pat00002
는 인덱스가 i인 픽셀의 값이고,
Figure pat00003
는 SM 상에서 인덱스가 i인 픽셀의 값이다.
NZVL은 입력 특징 맵의 픽셀들의 값들 중 0이 아닌 값들의 리스트로서, SM(202) 상에서 1인 픽셀들에 대응하는 값들의 시퀀스를 의미한다. 컨볼루션 처리 장치는 2D(2-dimension) 입력 영상(입력 특징 맵(201))을 NZVL 및 SM(202)와 같이 압축할 수 있다. 컨볼루션 처리 장치는 SM(202)을 이용하여, 입력 영상의 픽셀의 위치를 빠르게 계산하고 메모리의 주소를 제공할 수 있다. 일실시예에 따른 압축 기법은 수학식 2의 조건을 만족하는 경우, 메모리 요구(memory requirement)의 이득(gain)을 제공할 수 있다.
Figure pat00004
여기서, S는 입력 영상의 스파시티(sparsity)이고, N은 입력 영상의 픽셀들의 값들의 비트 너비(bit width)이다. 스파시티는 픽셀들의 값들 중에서 0의 비율로서, 스파시티의 범위(range)는 0에서 1일 수 있다.
수학식 2에 따르면, 서로 다른 데이터의 비트 정밀도(bit precision)에 대응하는 임계 스파시티(threshold sparsity)는 표 1과 같다. 여기서, 데이터 비트 정밀도는 비트 너비에 적용될 수 있다.
Bit Precision Threshold Sparsity
8 12.5%
12 8.33%
16 6.25%
24 4.16%
32 3.12%
표 1에 따르면, 16 비트의 비트 정밀도를 채용하는 하드웨어는 6.25% 이상의 스파시티를 갖는 입력 영상을 처리할 때 이득을 가져올 수 있으므로, 대부분의 컨볼루션 레이어들에서 압축 기법이 채용될 수 있다. 일실시예에 따른 압축 기법에 의해 압축된 영상의 비트 너비들의 크기는 수학식 3과 같이 표현될 수 있다.
Figure pat00005
여기서, "compressed size"는 압축된 영상의 비트 너비들의 크기이고, E는 입력 영상의 픽셀들의 수이고, S는 입력 영상의 스파시티이고, N은 입력 영상의 픽셀들의 값들의 비트 너비이며, 여기서 S와 N은 수학식 2의 S와 N과 같다. SM의 비트 너비들의 크기는 E이고, NZVL의 비트 너비들의 크기는 E*(1-S)*N이므로, 수학식 3이 도출될 수 있다. 컨볼루션 처리 장치는 크기가 큰 입력 특징 맵을 SM과 NZVL로 압축할 수 있으므로, HD(High Definition) 영상을 컨볼루션 처리에 적합한 형태로 압축할 수 있다.
일실시예에 따른 압축 기법은 I/O(Input/Output) 대역폭 요구(bandwidth requirements)를 줄이고, 간편한 하드웨어 인덱싱(hardware indexing)을 제공하여, 컨볼루션 연산 처리 동안에 발생하는 연산 과부하(computational overloading)를 줄일 수 있다. 일실시예에 따르면, 압축 기법을 지원하는 하드웨어는 비-압축 형태의 입력 영상(예를 들어, 첫번째 컨볼루션 레이어)을 압축하기 위해 용이하게 재사용될 수 있다.
도 3은 일실시예에 따른 입력 영상을 저장하는 동작을 설명하기 위한 도면이다.
일실시예에 따른 컨볼루션 처리 장치는 입력 채널들에 대응하는 입력 특징 맵들을 인터리빙(interleaving)하여 메모리에 저장할 수 있다. 예를 들면, 컨볼루션 처리 장치는 도 3과 같이 입력 특징 맵들의 각 행들에 대응하는 픽셀들을 인터리빙하여 메모리에 저장할 수 있다. 도 3을 참조하여, 제1 입력 채널에 대응하는 제1 입력 특징 맵(301)과 제2 입력 채널에 대응하는 제2 입력 특징 맵(302)이 인터리빙되어 SRAM(Static Random Access Memory)(303)에 저장되는 실시예를 설명하겠다. SRAM은 메모리의 일종이고, 다양한 유형의 메모리가 채용될 수 있다.
도 3을 참조하면, 제1 입력 특징 맵(301) 및 제2 입력 특징 맵(302)은 6행들 및 6열들에 대응하는 픽셀들을 포함하고, 픽셀들의 값들에 표시된 "1:"와 "2:"는 각각 제1 입력 채널 및 제2 입력 채널에 대응하는 것을 의미한다. 컨볼루션 처리 장치는 입력 특징 맵들(301 및 302)의 행들을 인터리빙하고, 인터리빙된 행들의 세트(set)를 SRAM(303)에 저장할 수 있다. 인터리빙된 첫번째 행의 set은 1:a, 0, 0, 2:a, 1:b, 2:b, 0, 0, 0, 0, 0, 0이다. 컨볼루션 처리 장치는 입력 특징 맵들(301 및 302)에 대응하는 SM들의 값들을 입력 특징 맵들(301 및 302)의 각 행들 별로 인터리빙하고, 인터리빙된 값들(도 3에서, 1, 0, 0, 1, 1, 1, 0, ...)을 SRAM(303)에 저장할 수 있다. 컨볼루션 처리 장치는 입력 특징 맵들(301 및 302)에 대응하는 NZVL들의 값들을 각 행들 별로 인터리빙하고, 인터리빙된 값들을 각 행들 별로 SRAM(303)에 저장할 수 있다.
일실시예에 따르면 컨볼루션 처리 장치는 인터리빙되어 저장된 NZVL들의 값들의 각 행들에 대응하는 레지스터들(304)에 NZVL들에 대응하는 시작 주소들을 기록할 수 있다. 컨볼루션 처리 장치는 인터리빙되어 저장된 SM들의 값들에 대응하는 레지스터(305)에 SM들에 대응하는 시작 주소를 기록할 수 있다. 레지스터들(304) 및 레지스터(305)는 컨볼루션 처리 장치와 별도의 구성들일 수 있고, 시작 주소의 기록은 컨볼루션 처리 장치와 독립된 장치에 의해 수행될 수 있다. 일실시예에 따르면, 컨볼루션 처리 장치는 오프 칩(off-chip)의 입력 영상을 도 3과 같이 SRAM(303)에 저장할 수 있고, 이 경우 입력 영상의 입력 특징 맵의 행들의 수의 레지스터들(304)은 각 행들의 NZVL들의 시작 주소들을 각각 기록할 수 있다. SM의 크기는 비-가변적(non-variable)이기 때문에 SM들의 시작 주소를 기록하는 레지스터(305)는 하나로 충분할 수 있고, 컨볼루션 처리 장치는 SM들의 시작 주소를 이용하여 SM들의 임의의 행들의 시작 주소들을 쉽게 계산할 수 있다.
일실시예에 따른 컨볼루션 처리 장치는 입력 채널들에 대응하는 입력 특징 맵들을 상술한 바와 같이 메모리에 저장할 수 있고, 입력 영상을 컨볼루션 처리하여 생성된 출력 영상을 상술한 바와 같이 메모리에 저장할 수 있다. 상술한 입력 영상(또는 출력 영상)의 저장 동작은 컨볼루션 처리 장치와 별도의 독립된 장치에 의해 메모리에 저장될 수 있고, 컨볼루션 처리 장치는 메모리로부터 컨볼루션 연산에 필요한 픽셀을 순차적으로 로딩할 수 있다. 이상에서 입력 영상 또는 출력 영상을 압축된 형태(format) 저장하는 압축 기법을 설명하였지만, 일실시예에 따른 압축 기법은 커널(필터들)에 적용될 수 있다. 필터들의 커널 맵들도 상술한 바와 같이 인터리빙되어 저장될 수 있고, 상술한 레지스터들도 채용될 수 있다. 이하 도 4 내지 도 6을 참조하여 메모리(예를 들어, SRAM(303))에 저장된 픽셀들이 컨볼루션 처리 장치에 의해 로딩되어 처리되는 실시예를 설명한다.
도 4는 일실시예에 따른 컨볼루션 처리 장치의 동작을 설명하기 위한 도면이다.
도 4를 참조하면, 컨볼루션 처리 장치는 콘트롤러(401), 필터 뱅크(402), MAC(403)들 및 미리 정의된 픽셀 행(pixel row)들에 대응하는 입력 레지스터들(404)를 포함한다. 커널에 포함된 필터들은 128개이고, 필터에 포함된 커널 맵의 크기는 3*3이고, 커널 맵의 너비는 3이고, 커널 맵의 높이는 3이고, MAC(403)들은 128개인 것으로 가정하고, 필터들의 수가 128이므로 출력 영상의 출력 채널들도 128개이다. 각 MAC(403)들은 각 출력 채널들에 대응하므로, 각 출력 특징 맵들과 관련된 연산들을 처리할 수 있다. 각 MAC(403)들은 곱셈기(multiplier)와 덧셈기(adder)를 포함할 수 있으며, 연산 결과들을 기록하기 위한 출력 레지스터들(409)을 포함할 수 있다. 출력 레지스터들(409)은 행들 및 열들에 대응하고, 일실시예에 따르면 출력 특징 맵(410)의 두 개의 행들과 관련된 연산 결과들을 기록하기 위해 출력 레지스터들(409)의 행들의 수는 2로 설계될 수 있다. MAC(403)은 픽셀들의 값들 및 커널 요소들의 값들 사이의 연산 결과들에 기초하여 출력 픽셀들(o(1, 1), o(2, 1), o(1, 2), o(2, 2), o(1, 3) 및 o(2, 3))의 값들을 기록하도록 출력 레지스터들(409)을 갱신할 수 있다.
출력 버퍼(output buffer)(414)는 행들 및 열들에 대응하는 버퍼 요소들을 포함한다. MAC(403)은 출력 레지스터들(409) 중 일부의 갱신이 완료된 경우, 갱신이 완료된 출력 레지스터들(409)에 기록된 출력 픽셀들의 값들을 MAC(403)에 대응하는 출력 채널과 연관된 버퍼 요소들로 제공할 수 있다.
출력 특징 맵(410)의 두 개의 행들과 관련된 출력 픽셀들의 값들을 생성하기 위해, 입력 특징 맵의 4개의 행들의 픽셀들로부터 픽셀들의 값들이 필요할 수 있다. 일실시예에 따른 컨볼루션 처리 장치는 메모리로부터 입력 특징 맵 상의 특정 행을 로딩하면, 로딩된 비-제로 값의 위치를 추적하기 위해 4 개의 입력 레지스터들(404, 405, 406 및 407)을 이용할 수 있다. 컨볼루션 처리 장치는 스파시티 맵의 값에 따라 입력 레지스터들(404, 405, 406 및 407)을 갱신할 수 있고, 메모리로부터 로딩된 픽셀의 열 및 입력 채널을 입력 레지스터들(404, 405, 406 및 407)에 기록할 수 있다. 이하, 어느 하나의 픽셀이 로딩된 상황에서 각 구성요소들이 동작하는 실시예를 설명한다.
콘트롤러(401)는 입력 채널들에 대응하는 입력 특징 맵(입력 특징 맵은 픽셀들을 포함함)들을 포함하는 입력 영상으로부터 어느 하나의 픽셀을 로딩할 수 있다. 콘트롤러(401)는 입력 특징 맵 상 픽셀의 행에 대응하는 픽셀 행의 입력 레지스터를 입력 특징 맵 상 픽셀이 열 및 입력 채널을 기록하도록 갱신할 수 있다. 여기서, 픽셀의 행은 입력 특징 맵 상에서 픽셀의 행을 의미하고, 픽셀 행(pixel row)는 입력 레지스터들(404, 405, 406 및 407)을 식별하는 인덱스를 의미한다. 픽셀 행은 prow로 지칭된다. prow는 메모리로부터 현재 읽힌 픽셀들의 행들의 세트에서의 상대적인 위치(relative position)일 수 있다. 도 3에서, prow는 prow0, prow1, prow2 및 prow3일 수 있다. 예를 들어, 로딩된 픽셀의 행에 대응하는 픽셀 행이 prow0인 경우 콘트롤러(401)는 prow0에 대응하는 입력 레지스터(404)에 로딩된 픽셀의 열 및 입력 채널을 기록할 수 있다. 픽셀 행들의 수는 커널 맵들의 높이 및 출력 레지스터들(409)의 행들의 수에 기초하여 정의될 수 있다. 예를 들어 출력 레지스터들(409)의 행들의 수가 2이고, 커널 맵들의 높이가 1인 경우 픽셀 행들의 수는 커널 맵들의 높이와 (출력 레지스터들의 행들의 수 - 1)의 합으로 설정될 수 있다.
콘트롤러(401)는 갱신된 입력 레지스터의 픽셀 행(prow)와 로딩된 픽셀의 입력 채널(pch)를 필터 뱅크(402)로 제공하고, 픽셀의 값(pvalue)를 MAC(403)으로 제공할 수 있다. 여기서, 픽셀은 prow, 열(column), pch 및 pvalue으로 정의될 수 있다. 콘트롤러(401)는 픽셀을 로딩하고, prow, pch 및 pvalue를 필터 뱅크(402) 및 MAC(403)으로 제공하기 위해 prow, pch 및 pvalue를 레지스터(408)에 기록할 수 있다.
필터 뱅크(402)는 MAC(403)에 대응하는 필터에 포함된 커널 맵들 중에서, pch에 대응하는 커널 맵으로부터 prow에 대응하는 행들의 커널 요소들의 값들을 MAC(403)으로 제공할 수 있다. 도 4를 참조하면, MAC(403)은 출력 특징 맵(410)의 두 개의 행들과 관련된 연산을 처리하기 때문에, prow에 대응하는 커널 요소들의 행들은 (prow -1)와 prow일 수 있다. 이 경우, 필터 뱅크(402)는 (prow -1)와 prow의 행들의 커널 요소들의 값들을 MAC(403)으로 제공할 수 있다. MAC(403)들은 출력 채널들에 대응하기 때문에, 필터 뱅크(402)는 각 MAC(403)들로 각 필터들에 포함된 (prow -1)와 prow의 행들의 커널 요소들의 값들을 제공할 수 있다. 0번째 필터에 포함된 커널 맵들 중 pch에 대응하는 커널 맵들로부터 추출된 (prow -1)와 prow 행들의 커널 요소들은 각각 ker(0, pch, prow-1, :)와 ker(0, pch, prow, :)로 표기된다.
MAC(403)에 포함된 출력 레지스터들의 열들의 수는 커널 맵들의 너비에 기초하여 정의될 수 있다. 도 4를 참조하면, 출력 레지스터들의 열들의 수는 커널 맵들의 너비인 3으로 설계될 수 있다. 다만, 출력 레지스터들의 열들의 수는 하드웨어의 사양에 따라 다르게 설정될 수 있다. MAC(403)은 한번에 하나의 pvalue를 제공받을 수 있다. 모든 MAC(403)들은 같은 pvalue를 제공받을 수 있다.
MAC(403)이 0번째 출력 채널에 대응한 경우, MAC(403)은 0번째 필터로부터 추출된 ker(0, pch, prow-1, :)와 ker(0, pch, prow, :)를 제공받을 수 있다. MAC(403)은 pvalue 및 ker(0, pch, prow-1, :) 사이의 연산 결과와 pvalue 및 ker(0, pch, prow, :) 사이의 연산 결과에 기초하여 출력 픽셀들의 값들을 기록하도록 출력 레지스터들(409)을 갱신할 수 있다. MAC(403)은 pvalue과 컨볼루션 연산이 필요한 커널 요소들 곱하고 곱한 결과들에 기초하여 출력 레지스터들(409)을 갱신할 수 있다. 예를 들어, MAC(403)은 pvalue와 2*3의 크기인 커널 요소들의 값들을 곱하고, 곱한 결과들에 기초하여 2*3의 크기인 출력 레지스터들(409)을 갱신할 수 있다.
도 3을 참조하면, 2*3의 크기인 출력 레지스터들(409)은 출력 특징 맵(410) 중에서 출력 픽셀들(411)인 o(1, 1), o(2, 1), o(1, 2), o(2, 2), o(1, 3) 및 o(2, 3)에 대응하는 출력 픽셀들의 값들을 기록할 수 있다. 상술한 바와 같이, 필터 뱅크(402)는 prow 및 pch에 기초하여 출력 특징 맵 상 2개의 행들에 대응하는 커널 요소들을 MAC(403)으로 제공하는데, 가장자리 픽셀들(border pixels)(prow0, prow1 또는 가장자리의 열들에 대응하는 픽셀들)의 경우 단일 행의 커널 요소들이 커널 연산에 필요할 수 있다. 따라서, 필터 뱅크(402)는 prow0 또는 prow1에 기초하여 단일 행의 커널 요소들을 MAC(403)으로 제공할 수 있다. 가장자리 픽셀들에 있어서, MAC(403)은 2*3보다 적은 수의 곱셈 연산을 수행할 수 있다. 비-가장자리 픽셀(non-border pixel)에 있어서, MAC(403)은 픽셀의 값과 2*3의 크기인 커널 요소들의 값들을 곱할 수 있다. 모든 MAC(403)들은 위치(x,y)의 픽셀(x행 및 y열에 대응함)을 이용하여 출력 레지스터들을 갱신하기 위해 같은 사이클들(cycles)의 수(ncycles(x,y))가 필요하다. 비-가장자리 픽셀에 있어서, MAC(403)은 출력 레지스터들을 갱신하기 위해 2*3의 사이클들이 필요할 수 있다.
컨볼루션 처리 장치는 최대 열(max column)을 기록하는 레지스터(412)를 포함할 수 있다. 콘트롤러(401)는 최대 열과 입력 레지스터에 기록된 열에 기초하여 다음 픽셀을 로딩할 수 있다. 여기서, 최대 열은 커널 맵들의 너비에 기초하여 정의될 수 있는데, 예를 들면 최대 열은 커널 맵들의 너비로 설정될 수 있다. 콘트롤러(401)는 픽셀과 관련된 정보를 필터 뱅크(402) 및 MAC(403)들로 제공하고, MAC(403)들이 픽셀과 관련된 연산을 처리하는데 필요한 ncycles(x,y)를 대기할 수 있다. 콘트롤러(401)는 ncycles(x,y)이후에 다음 픽셀을 로딩할 수 있다.
일실시예에 따르면 콘트롤러(401)는 입력 레지스터에 기록된 열과 최대 열을 비교하고, 비교 결과에 기초하여 입력 특징 맵과 인터리빙된 입력 특징 맵 상에서 현재 로딩된 픽셀의 행에 대응하는 다음 픽셀을 로딩할 수 있다. 다음 픽셀을 로딩한 콘트롤러(401)는 인터리빙된 입력 특징 맵 상 다음 픽셀의 열 및 인터리빙된 입력 특징 맵의 입력 채널을 기록하도록 다음 픽셀의 행에 대응하는 입력 레지스터를 갱신할 수 있다. 입력 특징 맵 상에서 최대 열보다 큰 열에 대응하는 픽셀은 MAC(403)의 출력 레지스터들(409) 중에서 가장 왼쪽에 있는 출력 픽셀들(o(1, 1) 및 o(2, 1))의 값들에 기여하지 못하므로, 콘트롤러(401)는 로딩된 픽셀의 열이 최대 열에 도달하면 다음 행의 픽셀을 로딩할 수 있다. 도 3과 같이 입력 영상이 저장된 경우, 콘트롤러(401)는 입력 특징 맵(302) 상에서 (1, 2)의 픽셀(픽셀의 값이 a인 픽셀)을 로딩할 수 있다. 콘트롤러(401)는 prow0의 입력 레지스터(404)에 열(2) 및 입력 채널(2)를 기록할 수 있다. 콘트롤러(401)는 현재 로딩된 픽셀과 관련된 연산을 처리하는데 필요한 ncycles(x,y)를 대기하고, 입력 레지스터(404)에 기록된 열(2)이 최대 열(예를 들어, 3)보다 작으므로, 현재 로딩된 픽셀의 행(1)에 대응하는 다음 픽셀을 로딩할 수 있다. 콘트롤러(401)는 인터리빙된 입력 특징 맵(301) 상에서 (1, 3)의 다음 픽셀(픽셀의 값이 b인 픽셀)을 로딩할 수 있다. 콘트롤러(401)는 다음 픽셀의 행에 대응하는 입력 레지스터(404)를 다음 픽셀의 열(3) 및 입력 채널(1)을 기록하도록 갱신할 수 있다.
일실시예에 따르면 콘트롤러(401)는 입력 레지스터에 기록된 열과 최대 열을 비교하고, 비교 결과에 기초하여 입력 특징 맵과 인터리빙된 입력 특징 맵 상에서 현재 로딩된 픽셀의 행의 다음 행에 대응하는 다음 픽셀을 로딩할 수 있다. 예를 들어, 입력 레지스터에 기록된 열이 최대열에 도달한 경우 콘트롤러(401)는 현재 로딩된 픽셀의 행의 다음 행에 대응하는 다음 픽셀을 로딩할 수 있다. 다음 픽셀을 로딩한 콘트롤러(401)는 인터리빙된 입력 특징 맵 상 다음 픽셀의 열 및 인터리빙된 입력 특징 맵의 입력 채널을 기록하도록 다음 픽셀의 행에 대응하는 픽셀 행의 입력 레지스터를 갱신할 수 있다. 도 3과 같이 입력 영상이 저장된 경우, 콘트롤러(401)는 입력 특징 맵(302) 상에서 (1, 3)의 픽셀(픽셀의 값이 b인 픽셀)을 로딩할 수 있다. 콘트롤러(401)는 prow0의 입력 레지스터(404)에 열(3) 및 입력 채널(2)를 기록할 수 있다. 콘트롤러(401)는 현재 로딩된 픽셀과 관련된 연산을 처리하는데 필요한 ncycles(x,y)를 대기하고, 입력 레지스터(404)에 기록된 열(3)이 최대 열(예를 들어, 3)에 도달하였으므로 현재 로딩된 픽셀의 행(1)의 다음 행에 대응하는 다음 픽셀을 로딩할 수 있다. 콘트롤러(401)는 인터리빙된 입력 특징 맵(301) 상에서 (2, 1)의 다음 픽셀(픽셀의 값이 0인 픽셀)을 로딩할 수 있다. 콘트롤러(401)는 다음 픽셀의 행에 대응하는 입력 레지스터(404)를 다음 픽셀의 열(1) 및 입력 채널(1)을 기록하도록 갱신할 수 있지만, 다음 픽셀의 값이 0이므로 다음 픽셀과 관련된 처리, 연산 또는 명령을 스킵(skip)할 수 있다. 콘트롤러(401)는 0인 값의 다음 픽셀과 관련된 처리를 스킵하여, 그 다음 픽셀을 로딩할 수 있다. 또는, 콘트롤러(401)는 메모리에 기록된 스파시티 맵의 값이 0인 경우, 해당 픽셀의 로딩을 스킵할 수 있다.
일실시예에 따르면 콘트롤러(401)는 입력 레지스터들(404, 405, 406 및 407) 중 마지막 픽셀 행(prow3)에 대응하는 입력 레지스터(407)에 기록된 열과 최대 열을 비교하고, 비교 결과에 기초하여 최대 열보다 큰 최대 열을 기록하도록 레지스터(412)를 갱신할 수 있다. 예를 들면, 콘트롤러(401)는 입력 레지스터(407)에 기록된 열이 최대 열에 도달한 경우, 최대 열을 1씩 늘리는 방식으로 레지스터(412)를 갱신할 수 있다. 콘트롤러(401)는 입력 레지스터(407)에 기록된 최대 열을 3으로부터 4로 갱신할 수 있다. 콘트롤러(401)는 로딩된 픽셀에 의해 갱신된 입력 레지스터(407)에 3인 열이 기록된 경우, 입력 레지스터(407)에 기록된 열이 최대열 3에 도달하였으므로, 레지스터(412)를 갱신할 수 있다. 콘트롤러(401)는 커진 최대열에 의해 보다 큰 열(예를 들어, 4)에 대응하는 다음 픽셀을 로딩할 수 있다.
일실시예에 따르면 컨볼루션 처리 장치는 출력 버퍼(output buffer)(414)를 포함할 수 있다. 출력 버퍼(414)는 행들 및 열들에 대응하는 버퍼 요소들을 포함하는데, 출력 버퍼(414)의 행들의 수는 출력 레지스터들(409)의 행들의 수에 기초하여 정의될 수 있다. 예를 들면, 출력 버퍼(414)의 행들의 수와 출력 레지스터들(409)의 행들의 수와 같게 설계될 수 있다. 출력 버퍼(414)의 각 열들은 각 MAC(403)들에 대응한다. 출력 버퍼(414)의 각 열들은 각 출력 채널들에 대응할 수 있다. 예를 들면, 128개의 각 MAC(403)들은 128개의 각 출력 채널들에 대응하는 각 버퍼 요소들(각 출력 특징 맵들에 대응함)로 출력 픽셀들의 값들을 제공할 수 있다. 컨볼루션 처리 장치는 128개의 출력 채널들에 대응하는 출력 특징 맵들을 이용하여 출력 영상을 생성할 수 있다.
일실시예에 따르면 MAC(403)은 갱신이 완료된 열의 출력 레지스터들의 각 행들에 기록된 출력 픽셀들의 값들을 MAC(403)에 대응하는 열의 버퍼 요소들의 각 행들로 제공할 수 있다. 예를 들면, MAC(403)이 map0인 출력 특징 맵에 대응하고, 출력 레지스터들(409) 중 1번째 열의 출력 레지스터들의 갱신이 완료된 경우, MAC(403)은 출력 픽셀들의 값들인 o(1,1) 및 o(2,1)을 map0인 열의 버퍼 요소들의 각 행들로 제공할 수 있다. 이와 유사한 방식으로 map0, map1, ... ,map127에 대응하는 열들의 버퍼 요소들은 MAC(403)들로부터 제공되는 출력 픽셀들의 값들을 저장할 수 있다.
일실시예에 따르면 콘트롤러(401)는 입력 레지스터들(404, 405, 406 및 407) 중 마지막 픽셀 행인 prow3에 대응하는 입력 레지스터(407)에 기록된 열과 최대 열을 비교하고, 비교 결과에 기초하여 MAC(403)으로 슬라이드 신호(slide signal)을 전송할 수 있다. MAC(403)은 슬라이드 신호에 응답하여 출력 레지스터들(409)의 일부의 갱신을 완료할 수 있다. 예를 들면, 콘트롤러(401)는 prow3에 대응하는 입력 레지스터(407)에 기록된 열이 최대 열(예를 들어, 커널 맵의 너비)에 도달한 경우, MAC(403)으로 슬라이드 신호를 전송할 수 있다. MAC(403)은 출력 레지스터들(409) 중 가장 왼쪽에 있는 열의 레지스터들(o(1,1) 및 o(2,1)에 대응하는 레지스터들)의 갱신을 완료할 수 있다. 여기서, 출력 레지스터의 갱신이 완료된 것의 의미는 해당 출력 레지스터에 기록된 출력 픽셀의 값을 MAC(403) 외부로(출력 버퍼(404) 또는 풀링 블록(pooling block)(413)으로) 방출할 수 있는 상태까지 해당 출력 픽셀과 관련된 연산이 완료된 것을 말한다. MAC(403)은 o(1,1) 및 o(2,1)에 대응하는 레지스터들에 기록된 출력 픽셀들의 값들을 출력 버퍼(404) 또는 풀링 블록(pooling block)(413)으로 제공하고, o(1,2), o(2,2), o(1,3), o(2,3)의 값들을 각각 왼쪽 열들(o(i; j) <- o(i; j+1))로 이동시킬 수 있다. MAC(403)은 o(1,3) 및 o(2,3)에 대응하는 출력 레지스터들에 0을 기록할 수 있다. 슬라이드 신호에 의해 컨볼루션 처리 장치는 입력 특징 맵 상에서 커널 맵이 슬라이딩하여 픽셀들의 값들을 필터링하는 동작을 처리할 수 있다.
컨볼루션 처리 장치는 MAC(403)들에 대응하는 풀링 블록(413)들을 포함할 수 있다. 도시되지는 않았지만, 출력 채널들의 수가 128개이면, 풀링 블록(413)들의 수도 128개일 수 있다. MAC(403)은 갱신이 완료된 열의 출력 레지스터들에 기록된 출력 픽셀들의 값들을 MAC(403)에 대응하는 풀링 블록(413)으로 제공할 수 있다. 풀링 블록(413)은 MAC(403)에 대응하는 열의 버퍼 요소에 기록된 출력 픽셀의 값 및 MAC(403)으로부터 제공된 출력 픽셀들의 값들에 기초하여 새로운 출력 픽셀의 값을 계산할 수 있다. 풀링 블록(413)은 새로운 출력 픽셀의 값을 MAC(403)에 대응하는 열의 버퍼 요소로 제공할 수 있다. 예를 들면, MAC(403)은 갱신이 완료된 o(1,1) 및 o(2,1)에 대응하는 레지스터들에 기록된 출력 픽셀들의 값들 풀링 블록(413)으로 제공할 수 있다. MAC(403)이 map0인 출력 특징 맵에 대응하는 경우, 풀링 블록(413)은 map0인 열의 버퍼 요소(예를 들어 map0인 열의 버퍼 요소 중 첫번째 행의 버퍼 요소)에 기록된 출력 픽셀의 값과 o(1,1) 및 o(2,1)의 값들 중 가장 큰 값을 새로운 출력 픽셀의 값으로 결정할 수 있다. 여기서, map0인 열의 버퍼 요소에 기록된 출력 픽셀의 값은 이전에 풀링 블록(413)으로 제공된 출력 픽셀들의 값들 중 가장 큰 값이다. 풀링 블록(413)은 새로운 출력 픽셀의 값을 map0인 열의 버퍼 요소(예를 들어 map0인 열의 버퍼 요소 중 첫번째 행의 버퍼 요소)로 제공할 수 있다. 이러한 방식으로 풀링 블록(413)이 채용되는 경우, 버퍼 요소들 중 하나의 행의 버퍼 요소들만 사용될 수 있다. 출력 버퍼(414)는 버퍼 요소에 기 기록된 값이 풀링 블록(413)으로부터 제공된 값으로 갱신된 이후에, 갱신된 버퍼 요소에 기록된 값을 외부로(예를 들어, 인코더(415)로) 제공할 수 있다. 상술한 풀링 블록(413)은 설계 의도에 따라 채용되지 않을 수도 있고, 풀링 블록(413)이 없는 경우 출력 레지스터들(409)에 기록된 출력 픽셀들의 값들은 출력 버퍼(414)의 각 행들로 그대로 제공될 수 있다.
인코더(415)는 출력 버퍼(414)로부터 제공된 출력 픽셀들의 값들에 기초하여 출력 특징 맵들을 압축할 수 있다. 인코더(415)는 도 2a, 도2b 및 도 3을 참조하여 설명된 압축 기법을 이용하여 압축된 출력 영상을 SRAM 또는 오프 칩(off-chip)으로 제공할 수 있다. 압축된 출력 영상은 SRAM으로부터 다음번 컨볼루션 레이어의 입력 영상으로 제공되거나 오프 칩(off-chip) 방식으로 스트리밍(streamed)될 수 있다.
컨볼루션 처리 장치는 버퍼 모니터 블록(buffer monitor block)(416)을 포함할 수 있다. 버퍼 모니터 블록(416)은 출력 버퍼(414)의 버퍼 요소들이 비어있지(empty) 않으면 중단 신호(HALT signal)를 콘트롤러(401)로 전송할 수 있다. 콘트롤러(401)는 중단 신호에 응답하여 슬라이드 신호를 전송하는 동작을 중단할 수 있다. 예를 들어, 출력 레지스터들(409)에 기록된 출력 픽셀들의 값들이 이동하기 위해서는 버퍼 요소들이 비어있어야 하므로, 콘트롤러(401)는 중단 신호에 응답하여 대기 상태를 유지하고, 중단 신호가 전송되지 않는 경우 슬라이드 신호를 전송할 수 있다.
도 5는 일실시예에 따른 컨볼루션 처리 장치의 동작을 설명하기 위한 도면이다.
도 5를 참조하면, 컨볼루션 처리 장치는 다중(multiple) MAC(503 및 504)들을 이용하여 출력 특징 맵의 부분 합들(partial sums)과 관련된 컨볼루션 연산을 처리할 수 있다. 도 4를 참조하여, 출력 특징 맵들이 128개인 경우를 가정한 실시예가 설명되었는데 이하에서 출력 특징 맵들이 64개인 경우 128개의 MAC들 중 64개의 제1 MAC(503)들 및 나머지 64개의 제2 MAC(504)들에 의해 64개의 출력 특징 맵들의 부분 합들(partial sums)의 연산이 처리되는 실시예를 설명한다. 각 출력 특징 맵은 제1 MAC(503) 및 제2 MAC(504)에 의한 연산 결과들에 기초하여 생성될 수 있다. 출력 채널들이 64개이므로 출력 버퍼(517)의 각 열들의 버퍼 요소들은 각 출력 특징 맵들에 대응할 수 있다.
컨볼루션 처리 장치는 콘트롤러(501), 필터 뱅크(502), 제1 MAC(503)들 및 제2 MAC(504)들을 포함한다. 미리 정의된 픽셀 행들(prow0, prow1, prow2 및 prow3)에 대응하는 입력 레지스터들(505, 506, 507 및 508)과 최대 열을 기록하는 레지스터(513)를 포함할 수 있고, 여기서 입력 레지스터들 및 최대 열을 기록하는 레지스터와 관련된 실시예는 도 4를 참조하여 설명된 실시예가 적용될 수 있다.
콘트롤러(501)는 제1 입력 채널에 대응하는 제1 픽셀 및 제2 입력 채널에 대응하는 제2 픽셀을 로딩할 수 있다. 콘트롤러(501)는 제1 픽셀의 행에 대응하는 제1 픽셀 행의 입력 레지스터를 제1 픽셀의 열 및 제1 입력 채널을 기록하도록 갱신할 수 있다. 콘트롤러(501)는 제2 픽셀의 행에 대응하는 제2 픽셀 행의 입력 레지스터를 제2 픽셀의 열 및 제2 입력 채널을 기록하도록 갱신할 수 있다. 제1 픽셀 행, 제1 픽셀의 값 및 제1 입력 채널을 각각 prow1, pch1 및 pvalue1라 가정하고, 제2 픽셀 행, 제2 픽셀의 값 및 제2 입력 채널을 각각 prow2, pch2 및 pvalue2라 가정하고 설명한다. 여기서, 제2 픽셀 행이 prow2이기 때문에 제2 픽셀의 행은 제1 픽셀의 행의 다음 행일 수 있다. 제2 픽셀의 행과 제1 픽셀의 행이 같다면 콘트롤러(501)는 제1 픽셀 및 제2 픽셀의 로딩에 응답하여 동일한 입력 레지스터를 갱신할 수 있다.
콘트롤러(501)는 prow1 및 pch1을 필터 뱅크(502)로 제공하고, pvalue1을 제1 MAC(503)으로 제공할 수 있다. 콘트롤러(501)는 prow2 및 pch2를 필터 뱅크(502)로 제공하고, pvalue2을 제2 MAC(504)으로 제공할 수 있다. 콘트롤러(501)는 제1 픽셀을 로딩하고, prow1, pch1 및 pvalue1을 필터 뱅크(502) 및 제1 MAC(503)으로 제공하기 위해 prow1, pch1 및 pvalue1를 레지스터(509)에 기록할 수 있다. 이와 마찬가지로, 콘트롤러(501)는 제2 픽셀을 로딩하고, prow2, pch2 및 pvalue2을 필터 뱅크(502) 및 제2 MAC(504)으로 제공하기 위해 prow1, pch1 및 pvalue1를 레지스터(509)에 기록할 수 있다.
필터 뱅크(502)는 pch1에 대응하는 커널 맵으로부터 prow1에 대응하는 적어도 하나의 행의 커널 요소의 값(예를 들어, prow1 - 1 및 prow1의 행에 대응하는 커널 요소들)을 제1 MAC(503)으로 제공할 수 있다. 필터 뱅크(502)는 64개의 출력 채널들에 대응하는 필터들로부터 커널 요소들의 값들을 추출하여 64개의 제1 MAC(503)들로 제공할 수 있다. 이와 마찬가지로, 필터 뱅크(502)는 pch2에 대응하는 커널 맵으로부터 prow2에 대응하는 적어도 하나의 행의 커널 요소의 값(예를 들어, prow2 - 1 및 prow2의 행에 대응하는 커널 요소들)을 제2 MAC(504)으로 제공할 수 있다. 필터 뱅크(502)는 64개의 출력 채널들에 대응하는 필터들로부터 커널 요소들의 값들을 추출하여 64개의 제2 MAC(504)들로 제공할 수 있다.
제1 MAC(503)는 행들 및 열들에 대응하는 출력 레지스터들(511)을 포함하고, 제2 MAC(504)은 행들 및 열들에 대응하는 출력 레지스터들(512)을 포함할 수 있다. 출력 레지스터들이 설계되는 실시예는 상술한 내용이 적용된다. 제1 MAC(503) 및 제2 MAC(504)은 같은 출력 특징 맵에 대응하는 출력 픽셀들의 값들을 기록하도록 출력 레지스터들(511 및 512)을 갱신할 수 있다. 제1 MAC(503) 및 제2 MAC(504)은 갱신이 완료된 출력 픽셀들의 값들을 연산기(514)로 제공할 수 있다. 연산기(514)들은 출력 채널들에 대응한다. 연산기(514)는 제1 MAC(503) 및 제2 MAC(504)으로부터 제공된 출력 픽셀들의 값들에 사이의 연산 결과(예를 들어, 출력 픽셀들의 값들의 합)들을 생성하고, 생성된 연산 결과들을 해당 출력 채널에 대응하는 버퍼 요소로 제공할 수 있다.
콘트롤러(501)는 제1 MAC(503) 및 제2 MAC(504)으로 슬라이드 신호를 전송할 수 있고, 제1 MAC(503) 및 제2 MAC(504)은 슬라이드 신호에 응답하여 출력 레지스터들(511 및 512)의 일부의 갱신을 완료할 수 있고, 갱신이 완료된 출력 레지스터들에 기록된 출력 픽셀들의 값들을 외부로(출력 버퍼(517) 또는 풀링 블록(515 및 516)으로) 제공할 수 있다. 슬라이드 신호와 관련된 동작들은 상술한 실시예가 적용될 수 있다.
컨볼루션 처리 장치는 출력 채널들에 대응하는 풀링 블록들(515 및 516)과 출력 버퍼(517)를 포함할 수 있다. 연산기(514)들로부터 제공된 연산 결과들은 풀링 블록들(515 및 516)을 거쳐 출력 버퍼(517)에 기록될 수 있다. 다만 설계 의도에 따라 컨볼루션 처리 장치는 풀링 블록들(515 및 516)을 포함하지 않을 수 있고, 이 경우 연산기(514)들로부터 제공된 연산 결과들은 출력 버퍼(517)에 그대로 기록될 수 있다. 출력 버퍼(517)에 출력 픽셀들의 값들이 기록되는 실시예는 도 4를 참조하여 설명된 실시예가 적용될 수 있다. 인코더(518)는 출력 버퍼(517)로부터 제공된 출력 픽셀들의 값들에 기초하여 출력 특징 맵들을 압축할 수 있고, 여기에 상술한 압축 기법이 채용될 수 있다.
다중(multiple) MAC들을 채용하는 기법은 출력 영상이 32개 및 16개의 출력 특징 맵들로 구성된 경우에도 적용될 수 있다. 만약, 출력 특징 맵들의 수가 16개인 경우, 콘트롤러는 8개의 픽셀들을 로딩하여 prow1, pch1, pvalue1 내지 prow8, pch8, pvalue8를 8개의 레지스터들에 각각 기록하고, 8 세트의 MAC들을 제어할 수 있다. 8 세트의 MAC들은 16개의 제1 MAC들 내지 16개의 제8 MAC들을 포함한다. MAC은 픽셀을 처리하는데 2*(커널 맵의 너비)(출력 레지스터들의 크기)의 사이클들을 소요하므로, 2*(커널 맵의 너비)(출력 레지스터들의 크기)가 8보다 작은 경우 MAC은 일부 사이클 동안 아이들(idle) 상태를 유지할 수 있다. 이 경우, 일부 MAC들은 스위치 오프(switch off)될 수 있고, 출력 특징 맵들은 줄어든 수의 MAC들에 의해 생성될 수 있다.
도 6은 일실시예에 따른 컨볼루션 처리 장치의 동작을 설명하기 위한 도면이다.
도 6을 참조하면, 컨볼루션 처리 장치는 다중(multiple) 출력 특징 맵들(예를 들어, 2개의 출력 특징 맵들)을 처리하는 MAC(602)들을 이용하여 컨볼루션 연산을 처리할 수 있다. 여기서, MAC(602)들은 출력 채널들에 대응한다. MAC(602)은 행들 및 열들에 대응하는 출력 레지스터들(603)을 포함하고, 여기서 열들의 수는 커널 맵들의 너비에 기초하여 정의될 수 있다. 출력 레지스터들(603)의 열들의 수는 (커널 맵들의 너비)*2 + 1 로 정의될 수 있다. 도 6을 참조하면, 출력 레지스터들(603)의 열들의 수는 7일 수 있다.
콘트롤러는 픽셀을 로딩하고, 로딩된 픽셀에 대응하는 prow 및 pch를 필터 뱅크(601)로 제공하고, pvalue를 MAC(602)으로 제공할 수 있다. 필터 뱅크(601)는 prow 및 pch에 기초하여 제1 필터로부터 제1 커널 요소들을 추출하고, 제2 필터로부터 제2 커널 요소들을 추출할 수 있다. 여기서, 제1 커널 요소들 및 제2 커널 요소들은 서로 다른 필터들로부터 추출되므로, 서로 다른 출력 특징 맵들(또는 출력 채널들)에 대응한다. 필터 뱅크(601)는 제1 커널 요소들 및 제2 커널 요소들을 MAC(602)으로 제공할 수 있다.
MAC(602)은 pvalue와 제1 커널 요소들 사이의 연산 결과들에 기초하여, 출력 픽셀들의 값들을 기록하도록 제1 필터에 대응하는 출력 레지스터들(604)을 갱신할 수 있다. 이와 마찬가지로, MAC(602)은 pvalue와 제2 커널 요소들 사이의 연산 결과들에 기초하여, 출력 픽셀들의 값들을 기록하도록 제2 필터에 대응하는 출력 레지스터들(603)을 갱신할 수 있다. 따라서, MAC(602)은 서로 다른 출력 채널에 대응하는 컨볼루션 연산들을 처리할 수 있다. 커널 맵의 크기가 3*3이라면, MAC(602)은 열들의 수가 7인 출력 레지스터들(603)을 이용하여, 서로 다른 출력 특징 맵들의 출력 픽셀들의 값들을 같은 행들의 출력 레지스터들(603)에 기록할 수 있다. 도 6을 참조하면, 출력 레지스터들(604)은 제1 출력 특징 맵에 대응하고, 출력 레지스터들(603)은 제2 특징 맵에 대응한다. 출력 레지스터들(603)은 출력 레지스터들(604) 및 출력 레지스터들(603)를 분리하는(separate) 출력 레지스터들(606)을 포함할 수 있다. 출력 레지스터들(606)은 단일의 열로 구현될 수 있다.
도 6을 참조하면, MAC(602)은 갱신이 완료된 출력 레지스터들에 기록된 출력 픽셀들 o(1,1) 및 o(2,1)의 값들을 외부로(출력 버퍼(608) 또는 풀링 블록(607)으로) 제공할 수 있다. o(1,1) 및 o(2,1)의 값들이 외부로 제공되면, MAC(602)은 출력 레지스터들(603)에 기록된 출력 픽셀들의 값들을 각각 왼쪽 열들(o(i; j) <- o(i; j+1))로 이동시킬 수 있다. 이 경우, 갱신이 완료된 출력 레지스터들에 기록된 출력 픽셀들 o(1,5) 및 o(2,5)의 값들은 출력 레지스터들(606)에 기록되고, MAC(602)은 출력 레지스터들(606)에 기록된 출력 픽셀들의 값들을 외부로(출력 버퍼(608) 또는 풀링 블록(607)으로) 제공할 수 있다. 출력 레지스터들(606)은 임시 저장소(temporary storage) 역할을 한다. 풀링 블록(607), 출력 버퍼(608) 및 인코더(609)에는 상술한 실시예가 적용될 수 있다.
도 7은 일실시예에 따른 컨볼루션 처리 방법을 설명하기 위한 순서도이다.
일실시예에 따른 컨볼루션 처리 방법에 의하면, 콘트롤러는 입력 채널들에 대응하는 입력 특징 맵(입력 특징 맵은 픽셀들을 포함함)들을 포함하는 입력 영상으로부터 픽셀을 로딩할 수 있다(701). 필터 뱅크는 픽셀의 인덱스 및 픽셀의 입력 채널에 기초하여 적어도 하나의 필터로부터 픽셀에 대응하는 적어도 하나의 커널 요소를 추출할 수 있다(702). 적어도 하나의 MAC은 픽셀의 값 및 커널 요소의 값에 기초하여 컨볼루션 연산을 수행하고, 출력 영상에 대응하도록 연산 결과를 누적적으로 저장할 수 있다(703). 일실시예에 따른 컨볼루션 처리 방법에는 도 1 내지 도 6을 참조하여 설명된 실시예가 적용되므로 중복되는 내용의 설명은 생략한다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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 (20)

  1. 입력 영상에 포함된 픽셀을 로딩하고, 상기 로딩된 픽셀의 값이 0인 경우 상기 픽셀과 관련된 처리를 스킵(skip)하는 콘트롤러;
    적어도 하나의 필터를 포함하고, 상기 픽셀의 인덱스 및 상기 픽셀의 입력 채널에 기초하여 상기 적어도 하나의 필터로부터 상기 픽셀에 대응하는 적어도 하나의 커널 요소를 추출하는 필터 뱅크(filter bank); 및
    상기 픽셀의 값 및 상기 커널 요소의 값에 기초하여 컨볼루션 연산을 수행하고, 출력 영상에 대응하도록 연산 결과를 누적적으로 저장하는 적어도 하나의 MAC(Multiply-Accumulator)
    을 포함하는
    컨볼루션 처리 장치.
  2. 제1항에 있어서,
    미리 정의된 픽셀 행(pixel row)들에 대응하는 입력 레지스터들
    을 더 포함하고,
    상기 콘트롤러는
    입력 특징 맵 상 상기 픽셀의 행에 대응하는 픽셀 행의 입력 레지스터를 상기 입력 특징 맵 상 상기 픽셀의 열(column) 및 상기 입력 채널을 기록하도록 갱신하고,
    상기 픽셀 행 및 상기 입력 채널을 상기 필터 뱅크로 제공(feed)하고,
    상기 픽셀의 값을 상기 MAC으로 제공하며,
    상기 필터 뱅크는 상기 커널 요소의 값을 상기 MAC으로 제공하는,
    컨볼루션 처리 장치.
  3. 제2항에 있어서,
    최대 열(max column)을 기록하는 레지스터
    를 더 포함하고,
    상기 필터는 커널 맵들을 포함하고,
    상기 콘트롤러는
    상기 입력 레지스터에 기록된 열 및 상기 최대 열에 기초하여 상기 픽셀의 다음 픽셀을 로딩하고,
    상기 최대 열은 상기 커널 맵들의 너비(width)에 기초하여 정의되는,
    컨볼루션 처리 장치.
  4. 제2항에 있어서,
    최대 열(max column)을 기록하는 레지스터
    를 더 포함하고,
    상기 콘트롤러는
    상기 입력 레지스터에 기록된 열과 상기 최대 열을 비교하고,
    상기 비교 결과에 기초하여 상기 입력 특징 맵과 인터리빙된 입력 특징 맵 상에서 상기 픽셀의 행에 대응하는 다음 픽셀을 로딩하고,
    상기 인터리빙된 입력 특징 맵 상 상기 다음 픽셀의 열 및 상기 인터리빙된 입력 특징 맵의 입력 채널을 기록하도록 상기 입력 레지스터를 갱신하는,
    컨볼루션 처리 장치.
  5. 제2항에 있어서,
    최대 열(max column)을 기록하는 레지스터
    를 더 포함하고,
    상기 콘트롤러는
    상기 입력 레지스터에 기록된 열과 상기 최대 열을 비교하고,
    상기 비교 결과에 기초하여 상기 입력 특징 맵과 인터리빙된 입력 특징 맵 상에서 상기 픽셀의 행의 다음 행에 대응하는 다음 픽셀을 로딩하고,
    상기 인터리빙된 입력 특징 맵 상 상기 다음 픽셀의 열 및 상기 인터리빙된 입력 특징 맵의 입력 채널을 기록하도록 상기 인터리빙된 입력 특징 맵 상 상기 다음 픽셀의 행에 대응하는 픽셀 행의 입력 레지스터를 갱신하는,
    컨볼루션 처리 장치.
  6. 제2항에 있어서,
    최대 열(max column)을 기록하는 레지스터
    를 더 포함하고,
    상기 콘트롤러는
    상기 입력 레지스터들 중 마지막 픽셀 행에 대응하는 입력 레지스터에 기록된 열과 상기 최대 열을 비교하고,
    상기 비교 결과에 기초하여 상기 최대 열보다 큰 최대 열을 기록하도록 상기 레지스터를 갱신하는,
    컨볼루션 처리 장치.
  7. 제2항에 있어서,
    최대 열(max column)을 기록하는 레지스터
    를 더 포함하고,
    상기 MAC은 행들 및 열들에 대응하는 출력 레지스터들을 포함하고,
    픽셀들의 값들 및 커널 요소들의 값들 사이의 연산 결과들에 기초하여 출력 픽셀들의 값들을 기록하도록 상기 출력 레지스터들을 갱신하고,
    상기 콘트롤러는
    상기 입력 레지스터들 중 마지막 픽셀 행에 대응하는 입력 레지스터에 기록된 열과 상기 최대 열을 비교하고,
    상기 비교 결과에 기초하여 상기 MAC으로 슬라이드 신호(slide signal)을 전송하고,
    상기 MAC은 상기 슬라이드 신호에 응답하여 상기 출력 레지스터들의 일부의 갱신을 완료하는,
    컨볼루션 처리 장치.
  8. 제1항에 있어서,
    상기 입력 영상은 입력 채널들에 대응하는 입력 특징 맵들을 포함하고,
    상기 입력 특징 맵들의 각 행들에 대응하는 픽셀들은 인터리빙(interleaving)되어 메모리에 기록되는,
    컨볼루션 처리 장치.
  9. 제8항에 있어서,
    상기 입력 특징 맵들에 대응하는 스파시티 맵(Sparsity Map; SM)(상기 SM은 입력 특징 맵의 픽셀들의 값들이 0인지 여부를 나타내는 맵임)들의 값들은 상기 입력 특징 맵들의 상기 각 행들 별로 인터리빙되어 상기 메모리에 기록되고,
    상기 입력 특징 맵들에 대응하는 비-제로 값 리스트(Non-Zero Value List; NZVL)(상기 NZVL은 입력 특징 맵의 픽셀들의 값들 중 0이 아닌 값들의 리스트임)들의 값들(상기 NZVL들의 값들은 상기 입력 채널들과 대응함)은 상기 각 행들 별로 인터리빙되어 상기 메모리에 기록되는,
    컨볼루션 처리 장치.
  10. 제9항에 있어서,
    상기 각 행들의 NZVL들에 대응하는 시작 주소들은 상기 각 행들에 대응하는 레지스터들에 기록되고,
    상기 SM들에 대응하는 시작 주소는 상기 SM들에 대응하는 레지스터에 기록되며,
    상기 콘트롤러는 상기 시작 주소들 및 상기 시작 주소에 기초하여 상기 메모리로부터 상기 픽셀을 로딩하는,
    컨볼루션 처리 장치.
  11. 제2항에 있어서,
    상기 필터는 커널 맵들을 포함하고,
    상기 필터 뱅크는
    상기 MAC에 대응하는 필터에 포함된 커널 맵들 중에서, 상기 입력 채널에 대응하는 커널 맵으로부터 상기 픽셀 행에 대응하는 적어도 하나의 행의 커널 요소의 값을 상기 MAC으로 제공하는,
    컨볼루션 처리 장치.
  12. 제2항에 있어서,
    상기 필터는 커널 맵들을 포함하고,
    상기 MAC은 행들 및 열들에 대응하는 출력 레지스터들을 포함하고,
    상기 픽셀 행들의 수는 상기 커널 맵들의 높이 및 상기 행들의 수에 기초하여 정의되는,
    컨볼루션 처리 장치.
  13. 제1항에 있어서,
    상기 필터는 커널 맵들을 포함하고,
    상기 MAC은 행들 및 열들에 대응하는 출력 레지스터들을 포함하고,
    상기 열들의 수는 상기 커널 맵들의 너비(width)에 기초하여 정의되고,
    상기 MAC은
    상기 픽셀의 값 및 상기 커널 요소의 값 사이의 연산 결과에 기초하여, 출력 픽셀의 값을 기록하도록 출력 레지스터를 갱신하는,
    컨볼루션 처리 장치.
  14. 제13항에 있어서,
    행들 및 열들에 대응하는 버퍼 요소들로 구성된 출력 버퍼(output buffer)
    를 더 포함하고,
    상기 출력 버퍼의 행들의 수는 상기 출력 레지스터들의 행들의 수에 기초하여 정의되고,
    상기 출력 버퍼의 열들은 상기 MAC에 대응하며,
    상기 MAC은
    갱신이 완료된 열의 출력 레지스터들의 각 행들에 기록된 출력 픽셀들의 값들을 상기 MAC에 대응하는 열의 버퍼 요소들의 각 행들로 제공하는,
    컨볼루션 처리 장치.
  15. 제13항에 있어서,
    상기 MAC에 대응하는 적어도 하나의 풀링 블록(pooling block); 및
    행들 및 열들에 대응하는 버퍼 요소들로 구성된 출력 버퍼(output buffer)
    를 더 포함하고,
    상기 출력 버퍼의 열들은 상기 MAC에 대응하며,
    상기 MAC은
    갱신이 완료된 열의 출력 레지스터들에 기록된 출력 픽셀들의 값들을 상기 MAC에 대응하는 풀링 블록으로 제공하고,
    상기 풀링 블록은
    상기 MAC에 대응하는 열의 버퍼 요소에 기록된 출력 픽셀의 값 및 상기 제공된 출력 픽셀들의 값들에 기초하여 새로운 출력 픽셀의 값을 계산하고,
    상기 새로운 출력 픽셀의 값을 상기 버퍼 요소로 제공하는,
    컨볼루션 처리 장치.
  16. 제1항에 있어서,
    미리 정의된 픽셀 행(pixel row)들에 대응하는 입력 레지스터들
    을 더 포함하고,
    상기 콘트롤러는
    제1 입력 채널에 대응하는 제1 픽셀 및 제2 입력 채널에 대응하는 제2 픽셀을 로딩하고,
    상기 제1 픽셀의 행에 대응하는 제1 픽셀 행의 입력 레지스터를 상기 제1 픽셀의 열 및 상기 제1 입력 채널을 기록하도록 갱신하고,
    상기 제2 픽셀의 행에 대응하는 제2 픽셀 행의 입력 레지스터를 상기 제2 픽셀의 열 및 상기 제2 입력 채널을 기록하도록 갱신하고,
    상기 제1 픽셀 행 및 상기 제1 입력 채널을 상기 필터 뱅크로 제공하고,
    상기 제2 픽셀 행 및 상기 제2 입력 채널을 상기 필터 뱅크로 제공하고,
    상기 제1 픽셀의 값을 제1 MAC으로 제공하고,
    상기 제2 픽셀의 값을 제2 MAC으로 제공하며,
    상기 필터 뱅크는 상기 제1 입력 채널에 대응하는 커널 맵으로부터 상기 제1 픽셀 행에 대응하는 적어도 하나의 행의 커널 요소의 값을 상기 제1 MAC으로 제공하고,
    상기 필터 뱅크는 상기 제2 입력 채널에 대응하는 커널 맵으로부터 상기 제2 픽셀 행에 대응하는 적어도 하나의 행의 커널 요소의 값을 상기 제2 MAC으로 제공하는,
    컨볼루션 처리 장치.
  17. 제1항에 있어서,
    상기 필터는 상기 출력 영상의 적어도 하나의 출력 채널에 대응하고,
    상기 MAC은 행들 및 열들에 대응하는 출력 레지스터들을 포함하고,
    상기 열들의 수는 상기 커널 맵들의 너비(width)에 기초하여 정의되고,
    상기 필터 뱅크는
    상기 픽셀의 인덱스 및 상기 픽셀의 입력 채널에 기초하여 제1 필터로부터 상기 픽셀에 대응하는 적어도 하나의 제1 커널 요소를 추출하고, 제2 필터로부터 상기 픽셀에 대응하는 적어도 하나의 제2 커널 요소를 추출하며,
    상기 MAC은
    상기 픽셀의 값 및 상기 제1 커널 요소 사이의 연산 결과에 기초하여, 출력 픽셀의 값을 기록하도록 상기 제1 필터에 대응하는 출력 레지스터를 갱신하고,
    상기 픽셀의 값 및 상기 제2 커널 요소 사이의 연산 결과에 기초하여, 출력 픽셀의 값을 기록하도록 상기 제2 필터에 대응하는 출력 레지스터를 갱신하는,
    컨볼루션 처리 장치.
  18. 콘트롤러에서, 입력 채널들에 대응하는 입력 특징 맵(상기 입력 특징 맵은 픽셀들을 포함함)들을 포함하는 입력 영상으로부터 픽셀을 로딩하는 단계;
    상기 콘트롤러에서, 상기 로딩된 픽셀의 값이 0인 경우 상기 픽셀과 관련된 처리를 스킵(skip)하는 단계;
    필터 뱅크(filter bank)에서, 상기 픽셀의 인덱스 및 상기 픽셀의 입력 채널에 기초하여 적어도 하나의 필터로부터 상기 픽셀에 대응하는 적어도 하나의 커널 요소를 추출하는 단계; 및
    적어도 하나의 MAC(Multiply-Accumulator)에서, 상기 픽셀의 값 및 상기 커널 요소의 값에 기초하여 컨볼루션 연산을 수행하고, 출력 영상에 대응하도록 연산 결과를 누적적으로 저장하는 단계
    를 포함하는,
    컨볼루션 처리 방법.
  19. 제18항에 있어서,
    입력 레지스터들은 미리 정의된 픽셀 행(pixel row)들에 대응하고,
    상기 콘트롤러에서, 입력 특징 맵 상 상기 픽셀의 행에 대응하는 픽셀 행의 입력 레지스터를 상기 입력 특징 맵 상 상기 픽셀의 열(column) 및 상기 입력 채널을 기록하도록 갱신하는 단계;
    상기 콘트롤러에서, 상기 픽셀 행 및 상기 입력 채널을 상기 필터 뱅크로 제공(feed)하는 단계;
    상기 콘트롤러에서, 상기 픽셀의 값을 상기 MAC으로 제공하는 단계; 및
    상기 필터 뱅크에서, 상기 커널 요소의 값을 상기 MAC으로 제공하는 단계
    를 더 포함하는
    컨볼루션 처리 방법.
  20. 하드웨어와 결합되어 제18항 내지 제19항 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
KR1020160159293A 2016-11-28 2016-11-28 컨볼루션 처리 장치 및 방법 KR20180060149A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160159293A KR20180060149A (ko) 2016-11-28 2016-11-28 컨볼루션 처리 장치 및 방법
US15/581,872 US10296829B2 (en) 2016-11-28 2017-04-28 Convolution processing apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160159293A KR20180060149A (ko) 2016-11-28 2016-11-28 컨볼루션 처리 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20180060149A true KR20180060149A (ko) 2018-06-07

Family

ID=62190945

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160159293A KR20180060149A (ko) 2016-11-28 2016-11-28 컨볼루션 처리 장치 및 방법

Country Status (2)

Country Link
US (1) US10296829B2 (ko)
KR (1) KR20180060149A (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102023855B1 (ko) * 2018-12-05 2019-09-20 전자부품연구원 딥러닝 하드웨어 가속장치
KR20200002770A (ko) * 2019-12-31 2020-01-08 연세대학교 산학협력단 객체 인식을 위한 자가 학습 장치 및 방법
WO2020153513A1 (ko) * 2019-01-23 2020-07-30 전자부품연구원 딥러닝 가속 하드웨어 장치
KR20210082081A (ko) * 2019-12-24 2021-07-02 서울대학교산학협력단 음수값을 갖는 활성화 함수에서 제로 스키핑을 제공하는 방법 및 장치
US11164040B2 (en) 2018-12-19 2021-11-02 Korea University Research And Business Foundation Operation device of convolutional neural network and operation method thereof
KR20220147280A (ko) * 2021-04-27 2022-11-03 건국대학교 산학협력단 효율적인 메모리 접근 방식을 이용한 뉴럴 네트워크 연산 가속 방법 및 장치
US11551069B2 (en) 2018-12-31 2023-01-10 SK Hynix Inc. Processing system

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180189641A1 (en) 2017-01-04 2018-07-05 Stmicroelectronics S.R.L. Hardware accelerator engine
CN108228696B (zh) * 2017-08-31 2021-03-23 深圳市商汤科技有限公司 人脸图像检索方法和***、拍摄装置、计算机存储介质
CN109063822B (zh) * 2018-07-19 2023-04-07 郑州云海信息技术有限公司 一种计算方法及计算装置
US11676371B2 (en) * 2018-08-17 2023-06-13 Fotonation Limited Apparatus for processing a neural network
CN109559305B (zh) * 2018-11-26 2023-06-30 易思维(杭州)科技有限公司 一种基于soc-fpga的线结构光图像快速处理***
KR20200081044A (ko) 2018-12-27 2020-07-07 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
WO2020168423A1 (en) * 2019-02-19 2020-08-27 Lei Zhang Method and system for convolution model multi-mode hardware accelerator
US11699070B2 (en) * 2019-03-05 2023-07-11 Samsung Electronics Co., Ltd Method and apparatus for providing rotational invariant neural networks
CN110717588B (zh) 2019-10-15 2022-05-03 阿波罗智能技术(北京)有限公司 用于卷积运算的装置和方法
WO2021088569A1 (en) * 2019-11-05 2021-05-14 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Convolution method and device, electronic device
CN113052291B (zh) * 2019-12-27 2024-04-16 上海商汤智能科技有限公司 数据处理方法和装置
US11593609B2 (en) 2020-02-18 2023-02-28 Stmicroelectronics S.R.L. Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks
US20210357748A1 (en) * 2020-05-14 2021-11-18 Samsung Electronics Co., Ltd. Hierarchical weight preprocessing for neural network accelerator
CN111652363B (zh) * 2020-06-08 2023-09-19 中国科学院微电子研究所 存算一体电路
US11531873B2 (en) 2020-06-23 2022-12-20 Stmicroelectronics S.R.L. Convolution acceleration with embedded vector decompression
CN112712457B (zh) * 2021-01-14 2024-05-10 清华大学 数据处理方法以及人工智能处理器
CN115204355A (zh) * 2021-04-14 2022-10-18 蒂普爱可斯有限公司 能够重新使用数据的神经处理单元及其方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0165405B1 (ko) 1995-06-22 1999-03-20 김광호 신경 회로를 이용한 가변장 부호의 비트량 제어 장치
JP3639405B2 (ja) 1997-03-07 2005-04-20 東洋インキ製造株式会社 色再現域圧縮方法および装置
US7418128B2 (en) 2003-07-31 2008-08-26 Microsoft Corporation Elastic distortions for automatic generation of labeled data
US7747070B2 (en) 2005-08-31 2010-06-29 Microsoft Corporation Training convolutional neural networks on graphics processing units
US8275727B2 (en) 2009-11-13 2012-09-25 International Business Machines Corporation Hardware analog-digital neural networks
WO2012018560A2 (en) 2010-07-26 2012-02-09 Kjaya, Llc Adaptive visualization for direct physician use
US20130120424A1 (en) 2011-11-14 2013-05-16 Qualcomm Innovation Center, Inc. Method and apparatus for improved rendering of images
JP6236296B2 (ja) 2013-11-14 2017-11-22 株式会社デンソーアイティーラボラトリ 学習装置、学習プログラム、及び学習方法
US9400925B2 (en) 2013-11-15 2016-07-26 Facebook, Inc. Pose-aligned networks for deep attribute modeling
US9978014B2 (en) * 2013-12-18 2018-05-22 Intel Corporation Reconfigurable processing unit
US10242313B2 (en) 2014-07-18 2019-03-26 James LaRue Joint proximity association template for neural networks
US20160026912A1 (en) * 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks
US10417525B2 (en) 2014-09-22 2019-09-17 Samsung Electronics Co., Ltd. Object recognition with reduced neural network weight precision
WO2017187516A1 (ja) * 2016-04-26 2017-11-02 株式会社日立製作所 情報処理システムおよびその運用方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102023855B1 (ko) * 2018-12-05 2019-09-20 전자부품연구원 딥러닝 하드웨어 가속장치
WO2020116672A1 (ko) * 2018-12-05 2020-06-11 전자부품연구원 딥러닝 하드웨어 가속장치
US11164040B2 (en) 2018-12-19 2021-11-02 Korea University Research And Business Foundation Operation device of convolutional neural network and operation method thereof
US11551069B2 (en) 2018-12-31 2023-01-10 SK Hynix Inc. Processing system
WO2020153513A1 (ko) * 2019-01-23 2020-07-30 전자부품연구원 딥러닝 가속 하드웨어 장치
KR20200091672A (ko) * 2019-01-23 2020-07-31 전자부품연구원 딥러닝 가속 하드웨어 장치
KR20210082081A (ko) * 2019-12-24 2021-07-02 서울대학교산학협력단 음수값을 갖는 활성화 함수에서 제로 스키핑을 제공하는 방법 및 장치
KR20200002770A (ko) * 2019-12-31 2020-01-08 연세대학교 산학협력단 객체 인식을 위한 자가 학습 장치 및 방법
KR20220147280A (ko) * 2021-04-27 2022-11-03 건국대학교 산학협력단 효율적인 메모리 접근 방식을 이용한 뉴럴 네트워크 연산 가속 방법 및 장치

Also Published As

Publication number Publication date
US10296829B2 (en) 2019-05-21
US20180150721A1 (en) 2018-05-31

Similar Documents

Publication Publication Date Title
KR20180060149A (ko) 컨볼루션 처리 장치 및 방법
US11449576B2 (en) Convolution operation processing method and related product
KR102631381B1 (ko) 컨볼루션 신경망 처리 방법 및 장치
US11915119B2 (en) Convolutional neural network (CNN) processing method and apparatus performing high speed and precision convolution operations
US11048997B2 (en) Reduced complexity convolution for convolutional neural networks
US20190303757A1 (en) Weight skipping deep learning accelerator
US20160358069A1 (en) Neural network suppression
US11308647B2 (en) Method and system for improving compression ratio by difference between blocks of image file
US20190340488A1 (en) Compression of kernel data for neural network operations
WO2019084788A1 (zh) 用于神经网络的运算装置、电路及相关方法
CN112219210B (zh) 信号处理装置和信号处理方法
US10922785B2 (en) Processor and method for scaling image
JP6927320B2 (ja) 推論装置、畳み込み演算実行方法及びプログラム
US20200218777A1 (en) Signal Processing Method and Apparatus
CN108073549B (zh) 卷积运算装置及方法
CN112434803A (zh) 用于识别图像的方法和设备
US11539955B2 (en) Method and system for improving compression ratio through pixel conversion of image file
US20180089555A1 (en) Neural network device and method of operating neural network device
CN108073548B (zh) 卷积运算装置及卷积运算方法
KR20220046794A (ko) 신경망 처리 시스템에서 효율적 메모리 접근을 위한 방법 및 장치
EP3712785B1 (en) Operation method, apparatus and related products
CN112257859B (zh) 特征数据处理方法及装置、设备、存储介质
US11741349B2 (en) Performing matrix-vector multiply operations for neural networks on electronic devices
KR102590926B1 (ko) 왜곡 이미지의 이미지 복원 방법 및 장치
CN115456858B (zh) 图像处理方法、装置、计算机设备及计算机可读存储介质