KR20210076687A - 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법 - Google Patents

뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법 Download PDF

Info

Publication number
KR20210076687A
KR20210076687A KR1020190168142A KR20190168142A KR20210076687A KR 20210076687 A KR20210076687 A KR 20210076687A KR 1020190168142 A KR1020190168142 A KR 1020190168142A KR 20190168142 A KR20190168142 A KR 20190168142A KR 20210076687 A KR20210076687 A KR 20210076687A
Authority
KR
South Korea
Prior art keywords
pixel
map
output
summation
layer
Prior art date
Application number
KR1020190168142A
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 KR1020190168142A priority Critical patent/KR20210076687A/ko
Priority to US16/906,326 priority patent/US11410410B2/en
Priority to CN202010623752.9A priority patent/CN112990453A/zh
Priority to EP20190797.9A priority patent/EP3839831A1/en
Publication of KR20210076687A publication Critical patent/KR20210076687A/ko
Priority to US17/846,202 priority patent/US11823029B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법은, 뉴럴 네트워크의 제 1 레이어의 각 채널 별로 생성된 합산 맵들에 대한 누적 연산을 수행함으로써 누적 합산 맵(accumulated integral map)을 생성하고, 제 2 레이어의 사전-출력 피처맵들(pre-output feature maps)을 획득하고, 사전-출력 피처맵들의 픽셀 값들에서 누적 합산 맵에 포함된 누적 값들을 감산함으로써 제 2 레이어의 제 2 출력 피처맵들을 획득한다.

Description

뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법 {Neural processing apparatus and method for processing neural network thereof}
뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법에 관하고, 구체적으로 뉴럴 네트워크의 비대칭 양자화(asymmetric quantization)에 의해 발생된 웨이트 오프셋을 제거하여 컨볼루션 연산을 수행하는 방법에 관한다.
뉴럴 네트워크는 컴퓨터 과학적 아키텍처(computational architecture)를 참조하여 구현된 컴퓨팅 시스템이다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크를 이용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
뉴럴 네트워크를 처리하는 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크의 데이터가 증가하고, 뉴럴 네트워크를 구성하는 아키텍처의 연결성이 복잡해짐에 따라 프로세싱 장치의 연산량 및 메모리 액세스 빈도의 과도한 증가가 초래되어, 소형화 및 상용화에 있어서의 비효율적인 성능이 나타날 수 있다. 따라서, 뉴럴 네트워크의 성능을 유지하면서 뉴럴 네트워크의 구현에 있어서 시스템 비용을 감소시키기 위한 다양한 처리 방법들이 연구되고 있다.
뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법을 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따르면, 뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법은, 뉴럴 네트워크의 제 1 레이어에 포함된 채널들의 제 1 출력 피처맵들로부터, 제 1 출력 피처맵 내 픽셀 값들의 면적 합들(area sums)의 계산에 기초한 각 채널 별 합산 맵(integral map)을 생성하는 단계; 상기 각 채널 별로 생성된 합산 맵들에 대한 누적 연산을 수행함으로써 누적 합산 맵(accumulated integral map)을 생성하는 단계; 상기 제 1 레이어에 뒤이은 제 2 레이어의 입력 피처맵들 및 웨이트 커널들 간 컨볼루션 연산을 수행함으로써 상기 제 2 레이어의 사전-출력 피처맵들(pre-output feature maps)을 획득하는 단계; 및 상기 웨이트 커널들에 존재하는 오프셋들을 제거하기 위하여 상기 사전-출력 피처맵들의 픽셀 값들에서 상기 누적 합산 맵에 포함된 누적 값들을 감산함으로써, 상기 제 2 레이어의 제 2 출력 피처맵들을 획득하는 단계를 포함한다.
다른 측면에 따르면, 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 기록매체를 포함할 수 있다.
또 다른 측면에 따르면, 뉴럴 네트워크를 처리하는 뉴럴 프로세싱 장치는, 메모리; 및 프로그램을 실행함으로써 상기 뉴럴 네트워크를 처리하는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는 뉴럴 네트워크의 제 1 레이어에 포함된 채널들의 제 1 출력 피처맵들로부터, 제 1 출력 피처맵 내 픽셀 값들의 면적 합들(area sums)의 계산에 기초한 각 채널 별 합산 맵(integral map)을 생성하고, 상기 각 채널 별로 생성된 합산 맵들에 대한 누적 연산을 수행함으로써 누적 합산 맵(accumulated integral map)을 생성하고, 상기 제 1 레이어에 뒤이은 제 2 레이어의 입력 피처맵들 및 웨이트 커널들 간 컨볼루션 연산을 수행함으로써 상기 제 2 레이어의 사전-출력 피처맵들(pre-output feature maps)을 획득하고, 상기 웨이트 커널들에 존재하는 오프셋들을 제거하기 위하여 상기 사전-출력 피처맵들의 픽셀 값들에서 상기 누적 합산 맵에 포함된 누적 값들을 감산함으로써, 상기 제 2 레이어의 제 2 출력 피처맵들을 획득한다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 3a 및 도 3b는 뉴럴 네트워크의 컨볼루션 연산을 설명하기 위한 도면들이다.
도 4는 부동 소수점과 고정 소수점을 설명하기 위한 도면이다.
도 5a 및 도 5b는 일 실시예에 따라 부동 소수점들을 고정 소수점들로 양자화하는 방식들을 설명하기 위한 도면들이다.
도 6은 일 실시예에 따라 비대칭 양자화된 웨이트에 의해 발생되는 컨볼루션 연산의 웨이트 오프셋을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 뉴럴 프로세싱 장치의 하드웨어 구성을 도시한 블록도이다.
도 8은 일 실시예에 따라 합산 맵을 이용하여 웨이트 오프셋을 제거하는 것을 설명하기 위한 도면이다.
도 9는 일 실시예에 따라 출력 피처맵으로부터 합산 맵을 생성하는 것을 설명하기 위한 도면이다.
도 10은 일 실시예에 따라 합산 맵들을 이용하여 누적 합산 맵을 생성하는 것을 설명하기 위한 도면이다.
도 11a 및 도 11b는 일 실시예에 따라 누적 합산 맵을 이용하여 사전-출력 피처맵으로부터 오프셋을 제거하여 출력 피처맵을 생성하는 것을 설명하기 위한 도면들이다.
도 12는 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 13은 일 실시예에 따른 뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법의 흐름도이다.
실시예들에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 명세서에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 명세서의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
아래에서는 첨부한 도면을 참고하여 실시예에 대하여 상세히 설명한다. 그러나 실시예는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 예에 한정되지 않는다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 1을 참고하면, 뉴럴 네트워크(1)는 딥 뉴럴 네트워크(Deep Neural Network, DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)의 아키텍처일 수 있다. DNN 또는 n-계층 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(Convolution Neural Network, CNN), 리커런트 뉴럴 네트워크(Recurrent Neural Network, RNN), Deep Belief Network, Restricted Boltzman Machine 등에 해당될 수 있다. 예를 들어, 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크(CNN)로 구현될 수 있으나, 뉴럴 네트워크(1)의 종류는 이에 제한되지 않는다.
뉴럴 네트워크(1)는 입력 이미지, 피처맵들(feature maps) 및 출력을 포함하는 복수 레이어들을 갖는 컴퓨팅 아키텍처로 구현될 수 있다. 뉴럴 네트워크(1)에서 입력 이미지는 웨이트 커널(weight kernel)이라 불리는 필터와의 컨볼루션 연산이 수행되고, 그 결과로서 출력 피처맵들(output feature maps, OFM)이 출력될 수 있다. 이때 생성된 출력 피처맵들은 다음 레이어의 입력 피처맵들(input feature maps, IFM)로서 다시 커널과의 컨볼루션 연산이 수행되고, 새로운 출력 피처맵들이 출력된다. 이와 같은 컨볼루션 연산이 반복적으로 수행된 결과, 최종적으로는 뉴럴 네트워크(1)를 통한 입력 이미지의 특징들에 대한 인식 결과가 출력될 수 있다.
예를 들어, 도 1의 뉴럴 네트워크(1)에 24x24 픽셀 크기의 이미지가 입력된 경우, 입력 이미지는 커널과의 컨볼루션 연산을 통해 20x20 픽셀 크기를 갖는 4채널의 피처맵들로 출력될 수 있다. 이후에도, 20x20 피처맵들은 커널과의 반복적인 컨볼루션 연산을 통해 크기가 줄어들면서, 최종적으로는 1x1 픽셀 크기의 특징들이 출력될 수 있다. 여기서, 뉴럴 네트워크(1)는 여러 레이어들에서 컨볼루션 연산 및 풀링 연산(pooling operation)(또는 서브-샘플링)을 반복적으로 수행함으로써 입력 이미지로부터 이미지 전체를 대표할 수 있는 강인한 특징들을 필터링하여 출력하고, 출력된 최종 특징들을 통해 입력 이미지의 인식 결과를 도출할 수 있다.
도 2는 일 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 2를 참조하면, 뉴럴 네트워크(2)는 입력 레이어, 하나 이상의 히든 레이어들 및 출력 레이어를 포함하는 구조를 가지며, 수신되는 입력 데이터(예를 들어, I1 및 I2)를 기초로 연산을 수행하고, 수행 결과를 기초로 출력 데이터(예를 들어, O1 및 O2)를 생성할 수 있다.
뉴럴 네트워크(2)는 앞서 설명된 바와 같이, 2개 이상의 히든 레이어들을 포함하는 DNN 또는 n-계층 뉴럴 네트워크일 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 뉴럴 네트워크(2)는 입력 레이어(Layer 1), 2개의 히든 레이어들(Layer 2 및 Layer 3) 및 출력 레이어(Layer 4)를 포함하는 DNN일 수 있다. 뉴럴 네트워크(2)가 DNN 아키텍처로 구현된 경우 유효한 정보를 처리할 수 있는 보다 많은 레이어들을 포함할 수 있으므로, 뉴럴 네트워크(2)는 싱글 레이어를 갖는 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크(2)는 4개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)는 더 적거나 많은 레이어들을 포함하거나, 더 적거나 많은 채널들을 포함할 수 있다. 즉, 뉴럴 네트워크(2)는 도 2에 도시된 것과는 다른, 다양한 구조의 레이어들을 포함할 수 있다.
뉴럴 네트워크(2)에 포함된 레이어들 각각은 복수의 채널들을 포함할 수 있다. 채널은 뉴런(neuron), 프로세싱 엘리먼트(Processing element, PE), 유닛(unit) 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들에 해당될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, Layer 1은 2개의 채널들(노드들), Layer 2 및 Layer 3 각각은 3개의 채널들을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)에 포함된 레이어들 각각은 다양한 개수의 채널들(노드들)을 포함할 수 있다.
뉴럴 네트워크(2)의 레이어들 각각에 포함된 채널들은 서로 연결되어 데이터를 처리할 수 있다. 예를 들어, 하나의 채널은 다른 채널들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 채널들로 출력할 수 있다.
채널들 각각의 입력 및 출력 각각은 입력 액티베이션(input activation) 및 출력 액티베이션(output activation)이라고 지칭될 수 있다. 즉, 액티베이션은 한 채널의 출력임과 동시에, 다음 레이어에 포함된 채널들의 입력에 해당되는 파라미터일 수 있다. 한편, 채널들 각각은 이전 레이어에 포함된 채널들로부터 수신된 액티베이션들 및 웨이트들에 기초하여 자신의 액티베이션을 결정할 수 있다. 웨이트는 각 채널에서의 출력 액티베이션을 계산하기 위해 이용되는 파라미터로서, 채널들 간의 연결관계에 할당되는 값일 수 있다. 한편, 입력 액티베이션은 입력 피처맵(IFM), 출력 액티베이션은 출력 피처맵(OFM)에 대응한다.
채널들 각각은 입력을 수신하여 출력 액티베이션을 출력하는 연산 유닛(computational unit) 또는 프로세싱 엘리먼트(processing element)에 의해 처리될 수 있고, 채널들 각각의 입력-출력은 매핑될 수 있다. 예를 들어, σ는 액티베이션 함수(activation function)이고,
Figure pat00001
는 (i-1) 번째 레이어에 포함된 k 번째 채널로부터 i 번째 레이어에 포함된 j번째 채널로의 웨이트며,
Figure pat00002
는 i 번째 레이어에 포함된 j 번째 채널의 바이어스(bias)이고,
Figure pat00003
는 i 번째 레이어의 j 번째 채널의 액티베이션이라고 할 때, 액티베이션
Figure pat00004
는 다음과 같은 수학식 1을 이용하여 계산될 수 있다.
Figure pat00005
도 2에 도시된 바와 같이, 2번째 레이어(Layer 2)의 첫 번째 채널(CH 1)의 액티베이션은
Figure pat00006
로 표현될 수 있다. 또한,
Figure pat00007
은 수학식 1에 따라
Figure pat00008
의 값을 가질 수 있다. 다만, 앞서 설명한 수학식 1은 뉴럴 네트워크(2)에서 데이터를 처리하기 위해 이용되는 액티베이션 및 웨이트를 설명하기 위한 예시일 뿐, 이에 제한되지 않는다. 액티베이션은 이전 레이어로부터 수신된 액티베이션들의 합(sum)에 액티베이션 함수를 적용한 값을 Rectified Linear Unit (ReLU)을 통과시킴으로써 획득된 값일 수 있다.
앞서 설명한 것과 같이, 뉴럴 네트워크(2)에서는 수많은 데이터 집합들이 상호 연결된 복수의 채널들 간에 교환되고, 레이어를 지나면서 수많은 연산 과정을 거친다. 여기서, 데이터들은 다양한 정밀도들의 부동 소수점들에 해당할 수 있으므로, 뉴럴 네트워크(2)는 부동 소수점들과 같은 복잡한 입력 데이터의 처리에 필요한 연산량을 감소시키면서 정확도 손실을 최소화하기 위하여, 뉴럴 네트워크의 파라미터들(예를 들어, 액티베이션들, 웨이트들 등)의 양자화(quantization)를 수행할 수 있다.
도 3a 및 도 3b는 뉴럴 네트워크의 컨볼루션 연산을 설명하기 위한 도면들이다.
도 3a를 참고하면, 입력 피처맵들(201)은 X개의 채널들이 존재하고, 각 채널의 입력 피처맵은 H행 W열의 크기를 가질 수 있다(X, W, H는 자연수). 웨이트 커널들(202) 각각은 R행 S열의 크기를 갖고, 웨이트 커널들(202)은 입력 피처맵들(201)의 채널 수(X) 및 출력 피처맵들(203)의 채널 수(Y)에 대응하는 개수의 채널들을 가질 수 있다(R, S, Y는 자연수). 출력 피처맵들(203)은 입력 피처맵들(201)과 웨이트 커널들(202) 간의 3차원 컨볼루션 연산들을 통해 생성되고, 컨볼루션 연산들에 따라 Y개의 채널들이 존재할 수 있다.
하나의 입력 피처맵과 하나의 웨이트 커널 간의 컨볼루션 연산을 통해 출력 피처맵이 생성되는 과정은 이하 도 3b에서 설명될 것이며, 도 3b에서 설명된 2차원 컨볼루션 연산이 전체 채널들의 입력 피처맵들(201)과 전체 채널들의 웨이트 커널들(202) 간에 반복적으로 수행됨으로써, 전체 채널들의 출력 피처맵들(203)이 생성될 수 있다.
도 3b를 참고하면, 입력 피처맵(210)은 6x6 픽셀 크기이고, 웨이트 커널(220)은 3x3 픽셀 크기이고, 출력 피처맵(230)은 4x4 픽셀 크기인 것으로 가정한다. 하지만, 이에 제한되지 않고, 뉴럴 네트워크는 다양한 크기의 피처맵들 및 커널들로 구현될 수 있다. 또한, 입력 피처맵(210), 웨이트 커널(220) 및 출력 피처맵(230)에 정의된 값들은 모두 예시적인 값들일 뿐이고, 본 실시예들은 이에 제한되지 않는다.
웨이트 커널(220)은 입력 피처맵(210)에서 3x3 픽셀 크기의 윈도우(또는 타일) 단위로 슬라이딩하면서 컨볼루션 연산을 수행한다. 입력 피처맵(210)에서 웨이트 커널(220)에 매핑된 윈도우는, 바운딩 박스(bounding box)의 용어로도 지칭될 수 있다.
컨볼루션 연산은 입력 피처맵(210)의 어느 윈도우의 각 픽셀 값 및 웨이트 커널(220)에서 대응 위치의 각 엘리먼트(또는 각 픽셀)의 웨이트 간의 곱셈을 하여 획득된 값들을 모두 합산하여, 출력 피처맵(230)의 각 픽셀 값을 구하는 연산을 의미한다. 구체적으로, 웨이트 커널(220)은 먼저 입력 피처맵(210)의 제 1 윈도우(또는 제 1 바운딩 박스)(211)와 컨볼루션 연산을 수행한다. 즉, 제 1 윈도우(211)의 각 픽셀 값 1, 2, 3, 4, 5, 6, 7, 8, 9는 각각 웨이트 커널(220)의 각 엘리먼트의 웨이트 -1, -3, +4, +7, -2, -1, -5, +3, +1과 각각 곱해지고, 그 결과로서 -1, -6, 12, 28, -10, -6, -35, 24, 9가 획득된다. 다음으로, 획득된 값들 -1, -6, 12, 28, -10, -6, -35, 24, 9를 모두 더한 결과인 15가 계산되고, 출력 피처맵(230)의 1행1열의 출력 픽셀 값(231)은 15로 결정된다. 여기서, 출력 피처맵(230)의 1행1열의 출력 픽셀 값(231)은 제 1 윈도우(211)에 대응된다. 마찬가지 방식으로, 입력 피처맵(210)의 제 2 윈도우(제 2 바운딩 박스)(212)와 웨이트 커널(220) 간의 컨볼루션 연산이 수행됨으로써 출력 피처맵(230)의 1행2열의 출력 픽셀 값(232)인 4가 결정된다. 최종적으로, 입력 피처맵(210)의 마지막 윈도우인 제 16 윈도우(제 16 바운딩 박스)(213)와 웨이트 커널(220) 간의 컨볼루션 연산이 수행됨으로써 출력 피처맵(230)의 4행4열의 출력 픽셀 값(233)인 11이 결정된다.
즉, 하나의 입력 피처맵(210)과 하나의 웨이트 커널(220) 간의 컨볼루션 연산은 입력 피처맵(210) 및 원본 커널(220)에서 서로 대응하는 각 엘리먼트의 값들의 곱셈 및 곱셈 결과들의 합산을 반복적으로 수행함으로써 처리될 수 있고, 컨볼루션 연산의 결과로서 출력 피처맵(230)이 생성된다.
한편, 앞서 설명된 바와 같이, 이와 같은 2차원 컨볼루션 연산이 복수의 채널들의 입력 피처맵들, 커널들, 출력 피처맵들에 대해 반복적으로 수행됨으로써 3차원 컨볼루션 연산이 수행될 수 있다.
도 4는 부동 소수점과 고정 소수점을 설명하기 위한 도면이다.
도 4의 부동 소수점 예시(410)를 참고하면, 부동 소수점 값은
Figure pat00009
의 형식으로 표현될 수 있고, 여기서 a는 가수부(fraction 또는 significand), b는 지수부(exponent)에 해당된다. 단정밀도(FP32) 부동 소수점 값은 1비트의 부호 비트, 8비트들의 지수부 비트들 및 23비트들의 가수부 비트들을 포함하는 32비트들로 표현될 수 있다.
다음으로, 고정 소수점 예시(420)를 참고하면, 고정 소수점은 1+m+n 비트로(m, n은 자연수) 표현될 수 있고, 여기서 1+m+n 비트는 부호 1 비트, 지수부 m 비트 및 가수부 n 비트일 수 있다. 고정 소수점을 표현하기 위한 비트 길이는, 뉴럴 네트워크의 정밀도(precision), 프로세서 성능 등의 요인들에 의해 다양하게 변경될 수 있다.
도 5a 및 도 5b는 일 실시예에 따라 부동 소수점들을 고정 소수점들로 양자화하는 방식들을 설명하기 위한 도면들이다.
도 5a의 분포 그래프(510)를 참고하면, 부동 소수점 포맷의 웨이트들은 0을 기준으로 하여 대칭적인(symmetric) 분포를 갖도록 양자화될 수 있다. 이는 대칭 웨이트 양자화(symmetric weight quantization)로 지칭될 수 있다. 대칭 웨이트 양자화의 결과, 양자화된 웨이트의 다이내믹 레인지(dynamic range)의 상한 임계값(Wmax)과 하한 임계값(Wmin)의 절대값은 동일하다.
한편, 도 5a의 대칭 웨이트 양자화와 달리, 부동 소수점 포맷의 웨이트들은 을 기준으로 하여 비대칭적인(asymmetric) 분포를 갖도록 양자화될 수 있다. 즉, 비대칭 웨이트 양자화(asymmetric weight quantization)에 따르면, 웨이트 분포의 평균 m은 0이 아닐 수 있다. 비대칭 웨이트 양자화의 결과, 양자화된 웨이트의 다이내믹 레인지의 상한 임계값(Wmax)과 하한 임계값(Wmin)의 절대값은 상이하게 된다.
대칭 양자화된 웨이트들을 이용하여 뉴럴 네트워크의 컨볼루션 연산이 수행되는 경우와 달리, 비대칭 양자화된 웨이트들을 이용하여 뉴럴 네트워크의 컨볼루션 연산이 수행되는 경우에는, 컨볼루션 연산의 결과(즉, 출력 피처맵)에 대한 오프셋 제거가 필요하다. 다시 말하면, 비대칭 양자화된 웨이트들과 입력 피처맵들(또는 입력 액티베이션들) 간의 컨볼루션 연산을 수행하는 경우에는, 컨볼루션 연산의 결과(즉, 출력 피처맵)에 비대칭 양자화된 웨이트의 오프셋만큼의 레지듀얼(residual) 데이터가 존재하게 된다. 따라서, 컨볼루션 연산의 결과로부터 레지듀얼 데이터를 제거하기 위한 연산이 필요하다.
도 6은 일 실시예에 따라 비대칭 양자화된 웨이트에 의해 발생되는 컨볼루션 연산의 웨이트 오프셋을 설명하기 위한 도면이다.
도 6을 참고하면, 입력 피처맵(또는 입력 액티베이션들)과 비대칭 양자화된 웨이트들 간의 컨볼루션 연산은 수학식 2와 같이 표현될 수 있다.
Figure pat00010
Figure pat00011
수학식 2로 표현된 비대칭 양자화된 웨이트에 기반한 컨볼루션 연산에는,
Figure pat00012
의 오프셋(또는 레지듀얼 데이터)의 항목(term)이 포함되어 있다. 따라서, 컨볼루션 연산의 결과로부터
Figure pat00013
에 해당하는 웨이트 오프셋을 감산하는 경우, 대칭 양자화된 웨이트에 기반한 컨볼루션 연산의 결과와 같이 근사화될 수 있다.
이하에서는, 합산 맵(integral map)의 컨셉을 이용하여 보다 효율적으로 컨볼루션 연산의 결과로부터 웨이트 오프셋(또는 레지듀얼 데이터)을 제거하는 방법에 대해 설명하도록 한다.
도 7은 일 실시예에 따른 뉴럴 프로세싱 장치의 하드웨어 구성을 도시한 블록도이다.
도 7을 참고하면, 뉴럴 프로세싱 장치(100)는 적어도 하나의 프로세서(110) 및 적어도 하나의 메모리(120)를 포함한다. 도 7에 도시된 뉴럴 프로세싱 장치(100)에는 본 실시예들와 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 프로세싱 장치(100)에는 도 7에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다.
뉴럴 프로세싱 장치(100)는 뉴럴 네트워크를 실행하는 컴퓨팅 디바이스에 해당될 수 있다. 예를 들어, 뉴럴 프로세싱 장치(100)는 PC(personal computer), 서버 디바이스, 모바일 디바이스 등에 해당되거나 또는 이와 같은 디바이스들 내에서 뉴럴 네트워크 연산을 수행하기 위한 가속기(accelerator)에 해당될 수 있다. 나아가서, 뉴럴 프로세싱 장치(100)는 뉴럴 네트워크를 이용한 음성 인식, 영상 인식 등을 수행하는 자율주행 자동차, 로보틱스, 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스 등에 구비된 장치일 수 있으나, 뉴럴 프로세싱 장치(100)는 이에 제한되지 않고 다양한 종류의 디바이스들이나 또는 이와 같은 디바이스들 내에서 뉴럴 네트워크 연산을 수행하기 위한 프로세싱 장치에 해당될 수 있다.
프로세서(110)는 뉴럴 프로세싱 장치(100)의 동작들을 제어하기 위한 전반적인 제어 기능들을 수행하는 하드웨어 구성이다. 예를 들어, 프로세서(110)는 뉴럴 프로세싱 장치(100) 내의 메모리(120)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행함으로써, 뉴럴 프로세싱 장치(100)를 전반적으로 제어할 수 있다. 프로세서(110)는 뉴럴 프로세싱 장치(100) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor), NPU(neural processing unit), TPU(tensor processing unit) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
메모리(120)는 프로세서(110) 내에서 처리되거나 처리될 각종 뉴럴 네트워크 데이터들을 저장하는 하드웨어이다. 예를 들어, 메모리(120)는 뉴럴 네트워크에서 처리된 입력/출력 피처맵 데이터들, 컨볼루션 데이터들 등을 저장할 수 있다. 또한, 메모리(120)는 프로세서(110)에 의해 구동될 다양한 애플리케이션들, 예를 들어 컨볼루션 처리 애플리케이션 등을 저장할 수 있다.
메모리(120)는 RAM(Random Access Memory), ROM (Read Only Memory), HDD(Hard Disk Drive), SSD(Solid State Drive), CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital), Memory Stick 등의 메모리 디바이스에 해당할 수 있고, 메모리(120)의 종류는 여기에 제한되지 않고 다양할 수 있다.
프로세서(110)는 컨볼루션 연산의 결과로부터 앞서 설명된 웨이트 오프셋(또는 레지듀얼 데이터)을 제거하기 위하여, 합산 맵(integral map)을 생성할 수 있다.
구체적으로, 프로세서(110)는 뉴럴 네트워크의 어느 레이어(예를 들어, Layeri-1, i는 자연수)에 포함된 채널들의 출력 피처맵들로부터, 출력 피처맵 내 픽셀 값들의 면적 합들(area sums)의 계산에 기초한 각 채널 별 합산 맵을 생성한다. 여기서, 합산 맵은 어느 레이어(Layeri-1)의 출력 피처맵의 기준 픽셀로부터 출력 피처맵의 다른 출력 픽셀까지의 영역(area) 내에 포함된 픽셀 값들을 합산한 값을, 이 출력 픽셀의 위치에 대응하는 합산 맵 픽셀에서의 값으로 설정한 데이터이다.
그리고, 프로세서(110)는 각 채널 별로 생성된 합산 맵들에 대한 누적 연산을 수행함으로써 누적 합산 맵(accumulated integral map)을 생성한다. 이때, 누적 합산 맵은 각 채널 별로 생성된 합산 맵들에 대한 픽셀 별(pixel-wise) 누적 연산을 수행함으로써 생성될 수 있다.
프로세서(110)는 그 다음 레이어(예를 들어, Layeri)의 입력 피처맵들 및 웨이트 커널들 간 컨볼루션 연산을 수행함으로써, 다음 레이어(Layeri)의 사전-출력 피처맵들(pre-output feature maps)을 획득한다. 여기서, 본 실시예들에 따른 사전-출력 피처맵의 용어는, 아직 웨이트 오프셋이 제거되지 않은 출력 피처맵을 의미하는 것으로 정의될 수 있다.
프로세서(110)는 웨이트 커널들에 존재하는 오프셋들을 제거하기 위하여 사전-출력 피처맵들의 픽셀 값들에서 누적 합산 맵에 포함된 누적 값들을 감산함으로써, 다음 레이어(Layeri)의 출력 피처맵들을 획득한다.
프로세서(110)는 다음 레이어(Layeri)의 컨볼루션 연산에 이용된 웨이트 커널들이 비대칭 양자화에 의해 획득된 웨이트들인 경우, 이전 레이어(Layeri-1)의 출력 피처맵들로부터 생성된 합산 맵(즉, 누적 합산 맵)을 이용하여 웨이트 오프셋을 제거할 수 있다.
한편, 메모리(120)는 레이어마다 생성된 합산 맵들 및 누적 합산 맵을 저장하고, 프로세서(110)에 의해 현재 레이어의 컨볼루션 연산이 완료된 경우에는 이전 레이어에 대해 저장된 누적 합산 맵을 프로세서(110)로 제공할 수 있다.
도 8은 일 실시예에 따라 합산 맵을 이용하여 웨이트 오프셋을 제거하는 것을 설명하기 위한 도면이다.
도 8을 참고하면, 프로세서(도 7의 110)는 Layeri-1(801)에 대한 컨볼루션 연산을 수행함으로써 각 채널 별 출력 피처맵들(810)을 획득할 수 있다.
프로세서(110)는 Layeri-1(801)에 포함된 채널들의 출력 피처맵들(810)로부터, 출력 피처맵(810) 내 픽셀 값들의 면적 합들(area sums)의 계산에 기초한 각 채널 별 합산 맵(integral map)을 생성한다. 앞서 설명된 바와 같이, 합산 맵은 Layeri-1(801)의 출력 피처맵(810)의 기준 픽셀로부터 출력 피처맵(810)의 다른 출력 픽셀까지의 영역(area) 내에 포함된 픽셀 값들을 합산한 값을, 이 출력 픽셀의 위치에 대응하는 합산 맵 픽셀에서의 값으로 설정한 데이터이다. 여기서, 기준 픽셀은 출력 피처맵(810)의 4개의 모서리 픽셀들 중 하나로 설정될 수 있고, 이에 대해서는 이하에서 도 9를 참고하여 보다 상세히 설명하도록 한다.
프로세서(110)는 각 채널 별로 생성된 합산 맵들에 대한 누적 연산을 수행함으로써 Layeri-1(801)의 누적 합산 맵(accumulated integral map)(815)을 생성한다. 이때, 누적 합산 맵은 각 채널 별로 생성된 합산 맵들에 대한 픽셀 별(pixel-wise) 누적 연산을 수행함으로써 생성될 수 있고, 이에 대해서는 이하에서 도 10을 참고하여 보다 상세히 설명하도록 한다.
합산 맵들 및 누적 합산 맵(815)의 생성과는 별도로, 프로세서(110)는 Layeri(802)의 입력 피처맵들 및 웨이트 커널들 간 컨볼루션 연산을 수행함으로써, Layeri(802)의 사전-출력 피처맵들(pre-output feature maps)(820)을 획득한다. 여기서, Layeri(802)는 Layeri-1(801)에 뒤이은 레이어이므로, Layeri(802)의 입력 피처맵들은 Layeri-1(801)의 출력 피처맵들(810)에 해당한다. 한편, 웨이트 커널들은 뉴럴 네트워크의 비대칭 양자화(asymmetric quantization)에 의해 획득된 웨이트들을 포함할 수 있다. 따라서, Layeri-1(801)로부터 생성된 누적 합산 맵(815)은 뉴럴 네트워크의 비대칭 양자화에 의해 발생된, Layeri(802)의 웨이트 커널들의 오프셋들에 대한 데이터에 해당할 수 있다.
다음으로, 프로세서(110)는 사전-출력 피처맵들(820)로부터, 웨이트 커널들에 존재하는 오프셋들을 제거(remove)하기 위하여 누적 합산 맵(815)을 이용할 수 있다. 즉, 프로세서(110)는 사전-출력 피처맵들(820)의 픽셀 값들에서 누적 합산 맵(815)에 포함된 누적 값들을 감산한다. 앞서 설명된 바와 같이, 누적 합산 맵(815)은 오프셋들에 대한 데이터에 해당하므로, 누적 합산 맵(815)에 포함된 누적 값들은 오프셋들에 관련된다.
구체적으로, 프로세서(110)는 Layeri(802)의 사전-출력 피처맵(820)의 사전-출력 픽셀을 획득하기 위하여 웨이트 커널에 매핑된 입력 피처맵의 바운딩 박스(도 3b를 참고)를 판단하고, 바운딩 박스의 4개의 모서리 픽셀들에 대응하는 누적 합산 맵(815)의 픽셀들에 설정된 픽셀 값들을 획득한다. 그리고 나서, 프로세서(110)는 획득된 픽셀 값들을 이용하여 사전-출력 픽셀의 픽셀 값에 존재하는 오프셋을 계산한다. 이후에, 프로세서(110)는 사전-출력 픽셀의 픽셀 값으로부터 앞서 계산된 오프셋을 감산함으로써, 출력 피처맵(825)의 출력 픽셀을 획득한다. 한편, 바운딩 박스의 모서리 픽셀들을 이용하는 방법에 대해서는, 이하에서 도 11a 및 도 11b를 참고하여 보다 상세히 설명하도록 한다.
도 8에서는, 설명의 편의를 위하여, 두 개의 레이어들 Layeri-1(801) 및 Layeri(802)의 관계에 있어서만 합산 맵을 이용하여 웨이트 오프셋을 제거하는 것을 예로 들어 설명하였다. 하지만, 이에 제한되지 않고, Layeri-1(801)의 출력 피처맵들(810)은 동일한 방식으로 그 이전 레이어(예를 들어, Layeri-2)의 합산 맵을 이용하여 획득될 수 있다. 즉, 본 실시예들은 뉴럴 네트워크에 포함된 다수의 레이어들에 대하여 동일한 방식으로 적용될 수 있다.
도 9는 일 실시예에 따라 출력 피처맵으로부터 합산 맵을 생성하는 것을 설명하기 위한 도면이다.
도 9를 참고하면, 어느 레이어(예를 들어, Layeri-1)에는 3개의 채널들만이 포함된 것으로 도시되어 있으나, 이에 제한되지 않고 레이어에는 다양한 개수들의 채널들이 존재할 수 있다.
출력 피처맵(OFM_ch1)(910)은 4x4 크기의 피처맵일 수 있고, 출력 피처맵(910)의 출력 픽셀들은 OP1 내지 OP16으로 지칭될 수 있다.
도 9의 예시에서는 설명의 편의를 위하여, 합산 맵(Integral Map_ch1)(920)을 생성하기 위한 기준 픽셀은 출력 피처맵(910)의 가장 좌하단 픽셀 OP13인 것으로 가정한다. 하지만, 기준 픽셀은 출력 피처맵(920)의 4개의 모서리 픽셀들 중 어느 하나로 설정될 수 있으므로, 이에 제한되지 않고, 다른 위치의 픽셀(예를 들어, OP1, OP4 또는 OP16)로 설정될 수도 있다.
예를 들어, 합산 맵(920)의 합산 맵 픽셀 IMP7을 계산하는 것을 설명하도록 한다. 합산 맵(920)에서 합산 맵 픽셀 IMP7의 위치는, 출력 피처맵(910)의 출력 픽셀 OP7의 위치에 대응한다. 프로세서(도 7의 110)는 기준 픽셀 OP13으로부터 출력 픽셀 OP7까지의 영역(area)(911) 내에 포함된 픽셀 값들을 모두 합산한다. 그리고, 프로세서(110)는 합산 값을, 출력 픽셀 OP7의 위치에 대응하는 합산 맵 픽셀 IMP7에서의 값으로 설정한다. 즉, IMP7 = OP5 + OP6 + OP7 + OP9 + OP10 + OP11 + OP13 + OP14 + OP15이다.
프로세서(110)는 합산 맵(920)의 각 합산 맵 픽셀에 대하여 마찬가지의 방식으로 픽셀 값을 계산함으로써, 합산 맵(920)을 생성한다. 출력 피처맵(910)에서 기준 픽셀은 OP13인 것으로 설정되었으므로, 합산 맵(920)의 합산 맵 픽셀 IMP13의 픽셀 값은 출력 픽셀 OP13의 픽셀 값과 동일하고, 합산 맵(920)의 합산 맵 픽셀 IMP4의 픽셀 값은 출력 피처맵(910)의 모든 출력 픽셀들의 픽셀 값들의 합에 해당한다.
프로세서(110)는 출력 피처맵(910) 뿐만 아니라, 다른 채널들의 출력 피처맵들에 대해서도 동일한 방식으로 각 채널별 합산 맵들을 생성한다.
한편, 도 9의 예시와 달리, 출력 피처맵(910)의 크기, 합산 맵(920)의 크기, 기준 픽셀 위치 등은 다양하게 변경될 수 있으나, 앞서 설명된 합산 맵의 생성 방식은 유사하게 적용될 수 있다.
도 10은 일 실시예에 따라 합산 맵들을 이용하여 누적 합산 맵을 생성하는 것을 설명하기 위한 도면이다.
도 10을 참고하면, 어느 레이어(예를 들어, Layeri-1)의 출력 레이어들로부터 각 채널 별 합산 맵들(1010)이 생성될 수 있다.
프로세서(도 7의 110)는 합산 맵들(1010)이 생성되는 경우, 각 채널 별로 생성된 합산 맵들(1010)에 대한 픽셀 별(pixel-wise) 누적 연산을 수행함으로써 누적 합산 맵(1020)을 생성할 수 있다. 예를 들어, 누적 합산 맵(1020)의 가장 우상단의 합산 맵 픽셀의 픽셀 값은, 합산 맵들(1010) 각각의 가장 우상단의 합산 맵 픽셀의 픽셀 값들을 누적한 값이다. 따라서, 누적 합산 맵(1020)의 각 합산 맵 픽셀의 픽셀 값은, 합산 맵들(1010)에서 대응하는 합산 맵 픽셀들의 픽셀 값들의 누적을 계산함으로써 획득될 수 있다.
프로세서(110)는 누적 합산 맵(1020)의 모든 합산 맵 픽셀들의 모든 누적 값들이 획득된 경우, 누적 합산 맵(1020)을 해당 레이어(예를 들어, Layeri-1)의 누적 합산 맵으로 정의하고, 누적 합산 맵(1020)을 메모리(도 7의 120)에 저장한다. 앞서 설명된 바와 같이, 메모리(120)에 저장된 누적 합산 맵(1020)은 다음 레이어(예를 들어, Layeri)의 출력 피처맵을 생성하기 위하여 이용될 수 있다.
도 11a 및 도 11b는 일 실시예에 따라 누적 합산 맵을 이용하여 사전-출력 피처맵으로부터 오프셋을 제거하여 출력 피처맵을 생성하는 것을 설명하기 위한 도면들이다.
프로세서(도 7의 110)는 어느 레이어(예를 들어, Layeri)의 사전-출력 피처맵의 어느 사전-출력 픽셀을 획득하기 위하여 웨이트 커널에 매핑된 입력 피처맵의 바운딩 박스를 판단한다. 예를 들어, 프로세서(110)에 의해 판단된 입력 피처맵의 바운딩 박스의 위치는 도 11a에서의 누적 합산 맵 내의 영역(1100)에 대응하는 것으로 가정한다.
프로세서(110)는 누적 합산 맵 내의 영역(1100)에 포함된 합산 맵 픽셀들의 총 누적 값을 계산한다. 여기서, 총 누적 값은 영역(1100)의 면적 값에 해당한다.
총 누적 값의 계산 과정에 대해 자세히 설명하면, 먼저 프로세서(110)는 기준 픽셀의 위치를 판단한다. 앞서 가정한 바와 같이, 도 11a 및 도 11b에서는 기준 픽셀이 가장 좌하단 픽셀인 것으로 가정하도록 한다.
도 11a를 참고하면, 영역(1100)의 면적 값은 아래의 수학식 3과 같이 계산될 수 있다.
Figure pat00014
즉, 영역(1100)의 면적 값은, 면적 값 (xd, yb)에서 영역(1101)의 면적 값 (xc, yb) 및 영역(1103)의 면적 값 (xd, ya)을 빼고, 영역(1103)의 면적 값 (xc, ya)을 더해줌으로써 계산될 수 있다. 여기서, 영역(1103)의 면적 값 (xc, ya)은 영역들(1101, 1102)에 의해 두 번 감산되기 때문에, 더해져야 한다.
이와 같은 방식으로 영역(1100)의 면적 값이 계산되면, 영역(1100)에 대응하는 바운딩 박스에서 수행된 컨볼루션 연산에 포함된 웨이트 오프셋이 계산될 수 있다. 그러므로, 프로세서(110)는 입력 피처맵의 해당 바운딩 박스에서 수행된 컨볼루션 연산의 결과인 사전-출력 피처맵의 사전-출력 픽셀 값으로부터, 영역(1100)의 면적 값을 감산함으로써, 웨이트 오프셋(레지듀얼)이 제거된 출력 피처맵의 출력 픽셀 값을 획득할 수 있다.
도 11b에서는, 도 11a에서 설명된 방식을 피처맵들에 적용하여 설명하도록 한다.
먼저, 프로세서(110)는 이전 레이어(Layeri-1)에서 생성된 누적 합산 맵(1120)을 메모리(도 7의 120)로부터 획득한다.
프로세서(110)는 Layeri에 대하여, 웨이트 커널(1112)과 입력 피처맵(1110)의 바운딩 박스(1111) 간의 컨볼루션 연산을 수행한다. 여기서, 바운딩 박스(1111)는 예를 들어 도 11a의 영역(1100)에 대응하는 바운딩 박스일 수 있다.
컨볼루션 연산의 결과, 프로세서(110)는 Layeri에 대한 사전-출력 피처맵(Pre-OFM)(1130)의 사전-출력 픽셀 Pre-OP2를 획득할 수 있다. 앞서 설명된 바와 같이, 사전-출력 픽셀 Pre-OP2에는 비대칭 양자화된 웨이트에 의한 오프셋(레지듀얼) OFFSETOP2이 존재할 수 있다.
프로세서(110)는 오프셋 OFFSETOP2을 계산하기 위하여, 누적 합산 맵(1120)을 이용할 수 있다. 구체적으로, 프로세서(110)는 사전-출력 픽셀 Pre-OP2를 획득하기 위하여 웨이트 커널(1112)에 매핑된 입력 피처맵(1110)의 바운딩 박스(1111)를 판단하고, 바운딩 박스(1111)의 4개의 모서리 픽셀들에 대응하는 누적 합산 맵(1120)의 픽셀들에 설정된 픽셀 값들을 획득한다.
바운딩 박스(1111)의 4개의 모서리 픽셀들은 바운딩 박스(1111)의 우상단(upper right) 픽셀, 좌상단(upper left) 픽셀, 우하단(lower right) 픽셀 및 좌하단(lower left) 픽셀을 포함한다. 프로세서(110)는 누적 합산 맵(1120)으로부터, 바운딩 박스(1111)의 우상단 픽셀에 대응하는 제 1 합산 맵 픽셀(IMP4)의 픽셀 값, 바운딩 박스(1111)의 좌상단 픽셀에 대응하는 제 2 합산 맵 픽셀(IMP1)의 픽셀 값, 바운딩 박스(1111)의 우하단 픽셀에 대응하는 제 3 합산 맵 픽셀(IMP16)의 픽셀 값 및 바운딩 박스(1111)의 좌하단 픽셀에 대응하는 제 4 합산 맵 픽셀(IMP13)의 픽셀 값을 획득한다. 즉, 프로세서(110)는 바운딩 박스(1111)에 대응하는 누적 합산 맵(1120)의 영역(1121)을 기준으로, 제 1 내지 4 합산 맵 픽셀들(IMP4, IMP1, IMP16, IMP13)의 픽셀 값들을 획득한다.
그리고 나서, 프로세서(110)는 누적 합산 맵(1120)을 생성하기 위한 기준 픽셀이 이전 레이어(Layeri-1)의 출력 피처맵에서 가장 좌하단의 픽셀이었으므로, 제 1 합산 맵 픽셀(IMP4)의 픽셀 값과 제 4 합산 맵 픽셀(IMP13)의 픽셀 값의 합에서, 제 2 합산 맵 픽셀(IMP1)의 픽셀 값과 제 3 합산 맵 픽셀(IMP16)의 픽셀 값을 감산함으로써, 사전-출력 픽셀 Pre-OP2의 픽셀 값에 존재하는 오프셋 OFFSETOP2을 계산한다. 즉, 프로세서(110)는 도 11a에서 설명된 원리를 적용하여 오프셋 OFFSETOP2을 계산할 수 있다.
프로세서(110)는 사전-출력 픽셀 Pre-OP2의 픽셀 값으로부터 앞서 계산된 오프셋 OFFSETOP2을 감산함으로써, Layeri의 출력 피처맵(1140)의 출력 픽셀 OP2를 획득할 수 있다.
한편, 프로세서(110)는 앞서 설명된 방식들을 이용하여, 다른 출력 픽셀들(OP1, OP3, OP4)을 획득할 수 있고, 결국 프로세서(110)는 앞서 설명된 방식들에 따라 비대칭 양자화된 웨이트에 의한 오프셋이 제거된, 출력 피처맵(1140)을 생성할 수 있다.
본 실시예들에서는 설명의 편의를 위하여 특정 크기의 피처맵들, 특정 크기의 웨이트 커널들, 특정 위치의 기준 픽셀을 예로 들어 설명하였으나, 본 실시예들은 이에 제한되지 않고 다양한 크기의 피처맵들, 다양한 크기의 웨이트 커널들, 다양한 위치의 기준 픽셀에 대해서도 동일한 방식으로 수행될 수 있다.
본 실시예들에 따라 합산 맵을 이용하여 출력 피처맵의 오프셋을 제거하는 방식은 아래 수학식 4와 같이, 종래 방식의 복잡도(complexity)
Figure pat00015
에 비하여 3 orders 만큼의 복잡도를 상대적으로 낮출 수 있다.
Figure pat00016
Figure pat00017
도 12는 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 12를 참고하면, 전자 시스템(1200)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 전자 시스템(1200)이 탑재되는 전자 디바이스의 구성들을 제어할 수 있다. 예컨대 전자 시스템(1200)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트폰, 의료 디바이스, 모바일 디바이스, 영상 표시 디바이스, 계측 디바이스, IoT 디바이스 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 디바이스들 중 적어도 하나에 탑재될 수 있다.
전자 시스템(1200)은 프로세서(1210), RAM(1220), 뉴럴 네트워크 장치(1230), 메모리(1240), 센서 모듈(1250) 및 통신 모듈(1260)을 포함할 수 있다. 전자 시스템(1200)은 입출력 모듈, 보안 모듈, 전력 제어 장치 등을 더 포함할 수 있다. 전자 시스템(1200)의 하드웨어 구성들 중 일부는 적어도 하나의 반도체 칩에 탑재될 수 있다. 뉴럴 네트워크 장치(1230)는 앞서 도 7에서 설명된 뉴럴 프로세싱 장치(100)를 포함하는 장치로서, 뉴럴 네트워크 전용 하드웨어 가속기 자체 또는 이를 포함하는 장치일 수 있다.
프로세서(1210)는 전자 시스템(1200)의 전반적인 동작을 제어한다. 프로세서(1210)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 프로세서(1210)는 메모리(1240)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일 실시예에 있어서, 프로세서(1210)는 메모리(1240)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(1230)의 기능을 제어할 수 있다. 프로세서(1210)는 CPU, GPU, AP 등으로 구현될 수 있다.
RAM(1220)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리(1240)에 저장된 프로그램들 및/또는 데이터는 프로세서(1210)의 제어 또는 부팅 코드에 따라 RAM(1220)에 일시적으로 저장될 수 있다. RAM(1220)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.
뉴럴 네트워크 장치(1230)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크는 Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나 이에 제한되지 않는다. 뉴럴 네트워크 장치(1230)는 뉴럴 네트워크를 이용하여 처리를 수행하는 하드웨어로서, 앞서 도 7에서 설명된 뉴럴 프로세싱 장치(100)를 포함하는 뉴럴 네트워크 전용 하드웨어 가속기에 해당될 수 있다.
정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 장치(1230)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 그러나, 이에 제한되는 것은 아니며, 전자 시스템(1200)이 탑재된 전자 장치의 종류 또는 기능에 따라 뉴럴 네트워크 장치(1230)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 인식 신호를 생성할 수 있다.
메모리(1240)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 실시예에 있어서, 메모리(1240)는 뉴럴 네트워크 장치(1230)의 연산 수행 과정에서 생성되는 뉴럴 네트워크 데이터(예컨대, 부동 소수점 타입 또는 고정 소수점 타입의 입력/출력 액티베이션들, 웨이트들 등)을 저장할 수 있다. 실시예에 있어서, 메모리(1240)에는 앞서 설명된 혼합 정밀도(mixed precision) MAC 연산을 위한 파라미터들이 저장될 수 있다. 또한, 메모리(1240)는 확장 비트 포맷에 의해 인코딩된 파라미터들도 저장될 수 있다.
메모리(1240)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(1240)는 휘발성 메모리 또는 불휘발성 메모리 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등을 포함한다. 휘발성 메모리는 DRAM, SRAM, SDRAM, PRAM, MRAM, RRAM, FeRAM 등을 포함한다. 실시예에 있어서, 메모리(1240)는 HDD, SSD, CF, SD, Micro-SD, Mini-SD, xD 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
센서 모듈(1250)은 전자 시스템(1200)이 탑재되는 전자 장치 주변의 정보를 수집할 수 있다. 센서 모듈(1250)은 전자 장치의 외부로부터 신호(예컨대 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 센싱 또는 수신된 신호를 데이터로 변환할 수 있다. 이를 위해, 센서 모듈(1250)은 센싱 장치, 예컨대 마이크, 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서, 바이오 센서, 및 터치 센서 등 다양한 종류의 센싱 장치 중 적어도 하나를 포함할 수 있다.
센서 모듈(1250)은 변환된 데이터를 뉴럴 네트워크 장치(1230)에 입력 데이터로서 제공할 수 있다. 예를 들어, 센서 모듈(1250)은 이미지 센서를 포함할 수 있으며, 전자 장치의 외부 환경을 촬영하여 비디오 스트림을 생성하고, 비디오 스트림의 연속하는 데이터 프레임을 뉴럴 네트워크 장치(1230)에 입력 데이터로서 순서대로 제공할 수 있다. 그러나 이에 제한되는 것은 아니며 센서 모듈(1250)은 다양한 종류의 데이터를 뉴럴 네트워크 장치(1230)에 제공할 수 있다.
통신 모듈(1260)은 외부 장치와 통신할 수 있는 다양한 유선 또는 무선 인터페이스를 구비할 수 있다. 예컨대 통신 모듈(1260)은 유선 근거리통신망(Local Area Network; LAN), Wi-fi(Wireless Fidelity)와 같은 무선 근거리 통신망 (Wireless Local Area Network; WLAN), 블루투스(Bluetooth)와 같은 무선 개인 통신망(Wireless Personal Area Network; WPAN), 무선 USB (Wireless Universal Serial Bus), Zigbee, NFC (Near Field Communication), RFID (Radio-frequency identification), PLC(Power Line communication), 또는 3G (3rd Generation), 4G (4th Generation), LTE (Long Term Evolution), 5G (5th Generation) 등 이동 통신망(mobile cellular network)에 접속 가능한 통신 인터페이스 등을 포함할 수 있다.
실시 예에 있어서, 통신 모듈(1260)은 외부로부터 양자화된 뉴럴 네트워크에 관한 데이터를 수신할 수 있다. 여기서, 외부는 방대한 양의 데이터를 기초로 뉴럴 네트워크 훈련을 수행하고, 훈련된 뉴럴 네트워크를 고정 소수점 타입으로 양자화하고, 양자화된 뉴럴 네트워크 데이터를 전자 시스템(1200)에 제공하는 디바이스일 수 있다. 수신된 양자화된 뉴럴 네트워크 데이터는 메모리(1240)에 저장될 수 있다.
도 13은 일 실시예에 따른 뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법의 흐름도이다. 도 13을 참고하면, 뉴럴 프로세싱 장치(도 7의 100)에서의 부동 소수점 연산의 처리 방법은 앞서 설명된 도면들에서 설명된 실시예들에 관련되므로, 이하 생략된 내용이라 할지라도, 앞서 도면들에서 설명된 내용들은 도 13의 방법에도 적용될 수 있다.
1301 단계에서, 프로세서(도 7의 110)는 뉴럴 네트워크의 제 1 레이어에 포함된 채널들의 제 1 출력 피처맵들로부터, 제 1 출력 피처맵 내 픽셀 값들의 면적 합들(area sums)의 계산에 기초한 각 채널 별 합산 맵(integral map)을 생성한다.
1302 단계에서, 프로세서(110)는 각 채널 별로 생성된 합산 맵들에 대한 누적 연산을 수행함으로써 누적 합산 맵(accumulated integral map)을 생성한다.
1303 단계에서, 프로세서(110)는 제 1 레이어에 뒤이은 제 2 레이어의 입력 피처맵들 및 웨이트 커널들 간 컨볼루션 연산을 수행함으로써 제 2 레이어의 사전-출력 피처맵들(pre-output feature maps)을 획득한다.
1304 단계에서, 프로세서(110)는 웨이트 커널들에 존재하는 오프셋들을 제거하기 위하여 사전-출력 피처맵들의 픽셀 값들에서 누적 합산 맵에 포함된 누적 값들을 감산함으로써, 제 2 레이어의 제 2 출력 피처맵들을 획득한다.
한편, 상술한 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 실시예들에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 실시예가 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예는 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 실시예에 포함된 것으로 해석되어야 할 것이다.

Claims (20)

  1. 뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법에 있어서,
    뉴럴 네트워크의 제 1 레이어에 포함된 채널들의 제 1 출력 피처맵들로부터, 제 1 출력 피처맵 내 픽셀 값들의 면적 합들(area sums)의 계산에 기초한 각 채널 별 합산 맵(integral map)을 생성하는 단계;
    상기 각 채널 별로 생성된 합산 맵들에 대한 누적 연산을 수행함으로써 누적 합산 맵(accumulated integral map)을 생성하는 단계;
    상기 제 1 레이어에 뒤이은 제 2 레이어의 입력 피처맵들 및 웨이트 커널들 간 컨볼루션 연산을 수행함으로써 상기 제 2 레이어의 사전-출력 피처맵들(pre-output feature maps)을 획득하는 단계; 및
    상기 웨이트 커널들에 존재하는 오프셋들을 제거하기 위하여 상기 사전-출력 피처맵들의 픽셀 값들에서 상기 누적 합산 맵에 포함된 누적 값들을 감산함으로써, 상기 제 2 레이어의 제 2 출력 피처맵들을 획득하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 웨이트 커널들은 상기 뉴럴 네트워크의 비대칭 양자화(asymmetric quantization)에 의해 획득된 웨이트들을 포함하는, 방법.
  3. 제 1 항에 있어서,
    상기 합산 맵은
    상기 제 1 출력 피처맵의 기준 픽셀로부터 상기 제 1 출력 피처맵의 제 1 출력 픽셀까지의 영역(area) 내에 포함된 픽셀 값들을 합산한 값을, 상기 제 1 출력 픽셀의 위치에 대응하는 합산 맵 픽셀에서의 값으로 설정한 데이터인, 방법.
  4. 제 3 항에 있어서,
    상기 기준 픽셀은
    상기 제 1 출력 피처맵의 4개의 모서리 픽셀들 중 하나로 설정되는, 방법.
  5. 제 1 항에 있어서,
    상기 누적 합산 맵은
    상기 각 채널 별로 생성된 합산 맵들에 대한 픽셀 별(pixel-wise) 누적 연산을 수행함으로써 생성되는, 방법.
  6. 제 5 항에 있어서,
    상기 제 1 레이어로부터 생성된 상기 누적 합산 맵은
    상기 뉴럴 네트워크의 비대칭 양자화에 의해 발생된, 상기 제 2 레이어의 상기 웨이트 커널들의 상기 오프셋들에 대한 데이터에 해당하는, 방법.
  7. 제 1 항에 있어서,
    상기 제 2 출력 피처맵들을 획득하는 단계는
    상기 제 2 레이어의 사전-출력 피처맵의 사전-출력 픽셀을 획득하기 위하여 웨이트 커널에 매핑된 입력 피처맵의 바운딩 박스를 판단하는 단계;
    상기 바운딩 박스의 4개의 모서리 픽셀들에 대응하는 상기 누적 합산 맵의 픽셀들에 설정된 픽셀 값들을 획득하는 단계;
    상기 획득된 픽셀 값들을 이용하여 상기 사전-출력 픽셀의 픽셀 값에 존재하는 오프셋을 계산하는 단계;
    상기 사전-출력 픽셀의 상기 픽셀 값으로부터 상기 계산된 오프셋을 감산함으로써, 제 2 출력 피처맵의 제 2 출력 픽셀을 획득하는 단계를 포함하는, 방법.
  8. 제 7 항에 있어서,
    상기 바운딩 박스의 상기 4개의 모서리 픽셀들은 상기 바운딩 박스의 우상단(upper right) 픽셀, 좌상단(upper left) 픽셀, 우하단(lower right) 픽셀 및 좌하단(lower left) 픽셀을 포함하고,
    상기 누적 합산 맵의 픽셀들에 설정된 픽셀 값들을 획득하는 단계는,
    상기 누적 합산 맵으로부터, 상기 우상단 픽셀에 대응하는 제 1 합산 맵 픽셀의 픽셀 값, 상기 좌상단 픽셀에 대응하는 제 2 합산 맵 픽셀의 픽셀 값, 상기 우하단 픽셀에 대응하는 제 3 합산 맵 픽셀의 픽셀 값 및 상기 좌하단 픽셀에 대응하는 제 4 합산 맵 픽셀의 픽셀 값을 획득하는, 방법.
  9. 제 8 항에 있어서,
    상기 오프셋을 계산하는 단계는
    상기 누적 합산 맵을 생성하기 위한 기준 픽셀이 상기 제 1 출력 피처맵의 가장 좌하단의 픽셀인 경우, 상기 제 1 합산 맵 픽셀의 픽셀 값과 상기 제 4 합산 맵 픽셀의 픽셀 값의 합에서, 상기 제 2 합산 맵 픽셀의 픽셀 값과 상기 제 3 합산 맵 픽셀의 픽셀 값을 감산함으로써, 상기 사전-출력 픽셀의 상기 픽셀 값에 존재하는 상기 오프셋을 계산하는, 방법.
  10. 제 1 항 내지 제 9 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비일시적인(non-transitory) 기록매체.
  11. 뉴럴 네트워크를 처리하는 뉴럴 프로세싱 장치에 있어서,
    메모리; 및
    프로그램을 실행함으로써 상기 뉴럴 네트워크를 처리하는 적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는
    뉴럴 네트워크의 제 1 레이어에 포함된 채널들의 제 1 출력 피처맵들로부터, 제 1 출력 피처맵 내 픽셀 값들의 면적 합들(area sums)의 계산에 기초한 각 채널 별 합산 맵(integral map)을 생성하고,
    상기 각 채널 별로 생성된 합산 맵들에 대한 누적 연산을 수행함으로써 누적 합산 맵(accumulated integral map)을 생성하고,
    상기 제 1 레이어에 뒤이은 제 2 레이어의 입력 피처맵들 및 웨이트 커널들 간 컨볼루션 연산을 수행함으로써 상기 제 2 레이어의 사전-출력 피처맵들(pre-output feature maps)을 획득하고,
    상기 웨이트 커널들에 존재하는 오프셋들을 제거하기 위하여 상기 사전-출력 피처맵들의 픽셀 값들에서 상기 누적 합산 맵에 포함된 누적 값들을 감산함으로써, 상기 제 2 레이어의 제 2 출력 피처맵들을 획득하는, 뉴럴 프로세싱 장치.
  12. 제 11 항에 있어서,
    상기 웨이트 커널들은 상기 뉴럴 네트워크의 비대칭 양자화(asymmetric quantization)에 의해 획득된 웨이트들을 포함하는, 뉴럴 프로세싱 장치.
  13. 제 11 항에 있어서,
    상기 합산 맵은
    상기 제 1 출력 피처맵의 기준 픽셀로부터 상기 제 1 출력 피처맵의 제 1 출력 픽셀까지의 영역(area) 내에 포함된 픽셀 값들을 합산한 값을, 상기 제 1 출력 픽셀의 위치에 대응하는 합산 맵 픽셀에서의 값으로 설정한 데이터인, 뉴럴 프로세싱 장치.
  14. 제 13 항에 있어서,
    상기 기준 픽셀은
    상기 제 1 출력 피처맵의 4개의 모서리 픽셀들 중 하나로 설정되는, 뉴럴 프로세싱 장치.
  15. 제 11 항에 있어서,
    상기 누적 합산 맵은
    상기 각 채널 별로 생성된 합산 맵들에 대한 픽셀 별(pixel-wise) 누적 연산을 수행함으로써 생성되는, 뉴럴 프로세싱 장치.
  16. 제 15 항에 있어서,
    상기 제 1 레이어로부터 생성된 상기 누적 합산 맵은
    상기 뉴럴 네트워크의 비대칭 양자화에 의해 발생된, 상기 제 2 레이어의 상기 웨이트 커널들의 상기 오프셋들에 대한 데이터에 해당하는, 뉴럴 프로세싱 장치.
  17. 제 11 항에 있어서,
    상기 적어도 하나의 프로세서는
    상기 제 2 레이어의 사전-출력 피처맵의 사전-출력 픽셀을 획득하기 위하여 웨이트 커널에 매핑된 입력 피처맵의 바운딩 박스를 판단하고,
    상기 바운딩 박스의 4개의 모서리 픽셀들에 대응하는 상기 누적 합산 맵의 픽셀들에 설정된 픽셀 값들을 획득하고,
    상기 획득된 픽셀 값들을 이용하여 상기 사전-출력 픽셀의 픽셀 값에 존재하는 오프셋을 계산하고,
    상기 사전-출력 픽셀의 상기 픽셀 값으로부터 상기 계산된 오프셋을 감산함으로써, 제 2 출력 피처맵의 제 2 출력 픽셀을 획득하는, 뉴럴 프로세싱 장치.
  18. 제 17 항에 있어서,
    상기 바운딩 박스의 상기 4개의 모서리 픽셀들은 상기 바운딩 박스의 우상단(upper right) 픽셀, 좌상단(upper left) 픽셀, 우하단(lower right) 픽셀 및 좌하단(lower left) 픽셀을 포함하고,
    상기 적어도 하나의 프로세서는
    상기 누적 합산 맵으로부터, 상기 우상단 픽셀에 대응하는 제 1 합산 맵 픽셀의 픽셀 값, 상기 좌상단 픽셀에 대응하는 제 2 합산 맵 픽셀의 픽셀 값, 상기 우하단 픽셀에 대응하는 제 3 합산 맵 픽셀의 픽셀 값 및 상기 좌하단 픽셀에 대응하는 제 4 합산 맵 픽셀의 픽셀 값을 획득하는, 뉴럴 프로세싱 장치.
  19. 제 18 항에 있어서,
    상기 적어도 하나의 프로세서는
    상기 누적 합산 맵을 생성하기 위한 기준 픽셀이 상기 제 1 출력 피처맵의 가장 좌하단의 픽셀인 경우, 상기 제 1 합산 맵 픽셀의 픽셀 값과 상기 제 4 합산 맵 픽셀의 픽셀 값의 합에서, 상기 제 2 합산 맵 픽셀의 픽셀 값과 상기 제 3 합산 맵 픽셀의 픽셀 값을 감산함으로써, 상기 사전-출력 픽셀의 상기 픽셀 값에 존재하는 상기 오프셋을 계산하는, 뉴럴 프로세싱 장치.
  20. 제 11 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 메모리로부터 리드된(read) 상기 제 1 레이어의 상기 제 1 출력 피처맵들을 이용하여 상기 누적 합산 맵을 생성하고,
    상기 메모리는 상기 생성된 누적 합산 맵을 저장하고,
    상기 적어도 하나의 프로세서는 상기 제 2 레이어의 상기 사전-출력 피처맵들이 획득된 경우, 상기 메모리로부터 상기 생성된 누적 합산 맵을 리드하여 상기 오프셋들의 제거를 수행함으로써 상기 제 2 레이어의 상기 제 2 출력 피처맵들을 획득하는, 뉴럴 프로세싱 장치.
KR1020190168142A 2019-12-16 2019-12-16 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법 KR20210076687A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190168142A KR20210076687A (ko) 2019-12-16 2019-12-16 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법
US16/906,326 US11410410B2 (en) 2019-12-16 2020-06-19 Method and apparatus with neural network processing
CN202010623752.9A CN112990453A (zh) 2019-12-16 2020-07-01 利用神经网络处理的方法和装置
EP20190797.9A EP3839831A1 (en) 2019-12-16 2020-08-13 Method and apparatus with neural network processing
US17/846,202 US11823029B2 (en) 2019-12-16 2022-06-22 Method and apparatus with neural network processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190168142A KR20210076687A (ko) 2019-12-16 2019-12-16 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법

Publications (1)

Publication Number Publication Date
KR20210076687A true KR20210076687A (ko) 2021-06-24

Family

ID=72086684

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190168142A KR20210076687A (ko) 2019-12-16 2019-12-16 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법

Country Status (4)

Country Link
US (2) US11410410B2 (ko)
EP (1) EP3839831A1 (ko)
KR (1) KR20210076687A (ko)
CN (1) CN112990453A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023033360A1 (ko) * 2021-09-02 2023-03-09 삼성전자 주식회사 영상 처리 장치 및 그 동작 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102574449B1 (ko) 2016-11-17 2023-09-04 삼성전자 주식회사 데이터 처리 방법 및 장치
KR20190054454A (ko) 2017-11-13 2019-05-22 삼성전자주식회사 인공 신경망의 양자화 방법 및 장치
US11295208B2 (en) * 2017-12-04 2022-04-05 International Business Machines Corporation Robust gradient weight compression schemes for deep learning applications
US11755901B2 (en) 2017-12-28 2023-09-12 Intel Corporation Dynamic quantization of neural networks
US10678508B2 (en) * 2018-03-23 2020-06-09 Amazon Technologies, Inc. Accelerated quantized multiply-and-add operations
EP3557485B1 (en) * 2018-04-19 2021-05-26 Aimotive Kft. Method for accelerating operations and accelerator apparatus
CN109472353B (zh) 2018-11-22 2020-11-03 浪潮集团有限公司 一种卷积神经网络量化电路及量化方法
CN111382833A (zh) * 2018-12-29 2020-07-07 佳能株式会社 多层神经网络模型的训练和应用方法、装置及存储介质
CN111382832A (zh) * 2018-12-29 2020-07-07 佳能株式会社 多层神经网络模型的训练和应用方法、装置及存储介质
US20210004679A1 (en) * 2019-07-01 2021-01-07 Baidu Usa Llc Asymmetric quantization for compression and for acceleration of inference for neural networks
KR20210004306A (ko) * 2019-07-04 2021-01-13 삼성전자주식회사 뉴럴 네트워크 장치 및 뉴럴 네트워크의 파라미터 양자화 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023033360A1 (ko) * 2021-09-02 2023-03-09 삼성전자 주식회사 영상 처리 장치 및 그 동작 방법

Also Published As

Publication number Publication date
US20220335705A1 (en) 2022-10-20
US11823029B2 (en) 2023-11-21
EP3839831A1 (en) 2021-06-23
US20210182594A1 (en) 2021-06-17
US11410410B2 (en) 2022-08-09
CN112990453A (zh) 2021-06-18

Similar Documents

Publication Publication Date Title
JP7329455B2 (ja) ニューラルネットワーク量子化のための方法及び装置
CN109389219B (zh) 用于对神经网络的参数进行量化的方法和装置
KR102499396B1 (ko) 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
US11836603B2 (en) Neural network method and apparatus with parameter quantization
JP7117280B2 (ja) ニューラルネットワークのパラメータを量子化する方法及びその装置
JP2019102084A (ja) ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置
US11513770B2 (en) Neural network method and apparatus with floating point processing
US11816557B2 (en) Method and apparatus with neural network parameter quantization
US20210174177A1 (en) Method and device with neural network implementation
US11531893B2 (en) Method and apparatus with neural network parameter quantization
KR20210154502A (ko) 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법
KR20220010362A (ko) 뉴럴 네트워크 장치 및 그의 동작 방법
US11823029B2 (en) Method and apparatus with neural network processing
EP3817236A1 (en) Neural network data processing method and apparatus
KR20210053791A (ko) 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치
KR20210121946A (ko) 뉴럴 네트워크 양자화를 위한 방법 및 장치
US20200159495A1 (en) Processing apparatus and method of processing add operation therein
KR20200088198A (ko) 뉴럴 네트워크의 레이어 축소를 이용하여 입력 데이터를 처리하는 방법 및 장치
KR20200139071A (ko) 뉴럴 네트워크에서 파라미터를 양자화하는 방법 및 장치
KR20200056898A (ko) 프로세싱 장치 및 프로세싱 장치에서 덧셈 연산을 처리하는 방법
Morozkin et al. Feature-based image compression

Legal Events

Date Code Title Description
A201 Request for examination