KR20220021704A - 중복성 감축 기반의 컨볼루션 연산 처리 방법 및 장치 - Google Patents

중복성 감축 기반의 컨볼루션 연산 처리 방법 및 장치 Download PDF

Info

Publication number
KR20220021704A
KR20220021704A KR1020200102600A KR20200102600A KR20220021704A KR 20220021704 A KR20220021704 A KR 20220021704A KR 1020200102600 A KR1020200102600 A KR 1020200102600A KR 20200102600 A KR20200102600 A KR 20200102600A KR 20220021704 A KR20220021704 A KR 20220021704A
Authority
KR
South Korea
Prior art keywords
plane
weight
input
target
generating
Prior art date
Application number
KR1020200102600A
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 KR1020200102600A priority Critical patent/KR20220021704A/ko
Priority to CN202110155909.4A priority patent/CN114077886A/zh
Priority to EP21157634.3A priority patent/EP3955165A1/en
Priority to US17/179,781 priority patent/US20220051084A1/en
Publication of KR20220021704A publication Critical patent/KR20220021704A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • 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/50Adding; Subtracting
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/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/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

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

Abstract

중복성 감축 기반의 컨볼루션 연산 처리 방법 및 장치가 개시된다. 일 실시예에 따르면, 그 방법은 웨이트 커널의 가능한 웨이트 값들의 적어도 일부에 기초하여 입력 평면에 관한 곱셈 결과에 대응하는 기본 평면들을 생성하고, 입력 평면 및 기본 평면들 중에 웨이트 평면의 웨이트 엘리먼트 값들에 대응하는 적어도 하나의 평면에 기초하여 누적 데이터를 생성하고, 누적 데이터에 기초하여 출력 특징 맵의 출력 평면을 생성하는 단계들을 포함한다.

Description

중복성 감축 기반의 컨볼루션 연산 처리 방법 및 장치{METHOD AND APPARATUS OF PROCESSING CONVOLUTION OPERATION BASED ON REDUNDANCY REDUCTION}
아래 실시예들은 중복성 감축 기반의 컨볼루션 연산 처리 방법 및 장치에 관한 것이다.
인식 프로세스의 기술적 자동화는, 예를 들어, 특수한 계산 구조로서 프로세서로 구현된 뉴럴 네트워크 모델을 통해 구현되었으며, 이는 상당한 훈련 후에 입력 패턴과 출력 패턴 사이에서 계산상 직관적인 매핑을 제공할 수 있다. 이러한 맵핑을 생성하는 훈련된 능력은 신경망의 학습 능력이라 할 수 있다. 더구나, 특화된 훈련으로 인해, 이와 같이 특화되어 훈련된 신경망은, 예를 들어, 훈련하지 않은 입력 패턴에 대하여 비교적 정확한 출력을 발생시키는 일반화 능력을 가질 수 있다.
일 실시예에 따르면, 뉴럴 네트워크의 레이어에 관한 컨볼루션 연산 처리 방법은 입력 특징 맵의 제1 입력 평면 및 웨이트 커널의 제1 웨이트 평면을 획득하는 단계; 상기 웨이트 커널의 가능한 웨이트 값들의 적어도 일부에 기초하여, 상기 제1 입력 평면에 관한 중간 연산 결과에 대응하는 기본 평면들을 생성하는 단계; 상기 제1 입력 평면 및 상기 기본 평면들 중에 상기 제1 웨이트 평면의 웨이트 엘리먼트 값들에 대응하는 적어도 하나의 평면에 기초하여 제1 누적 데이터를 생성하는 단계; 및 상기 제1 누적 데이터에 기초하여 출력 특징 맵의 제1 출력 평면을 생성하는 단계를 포함한다.
상기 제1 누적 데이터를 생성하는 상기 단계는 상기 제1 입력 평면 및 상기 기본 평면들 중에 상기 제1 웨이트 평면의 제1 웨이트 엘리먼트의 웨이트 값에 대응하는 제1 대상 평면을 결정하는 단계; 상기 제1 웨이트 엘리먼트의 오프셋에 기초하여 상기 제1 대상 평면에서 제1 대상 영역을 결정하는 단계; 및 상기 제1 대상 영역의 대상 엘리먼트들에 기초한 누적 연산을 수행하는 단계를 포함할 수 있다.
상기 제1 대상 영역을 결정하는 단계는 상기 제1 웨이트 엘리먼트의 상기 오프셋에 기초하여 상기 제1 대상 평면의 서로 다른 영역들을 지시하는 포인터들 중에 상기 제1 대상 영역을 지시하는 제1 포인터가 결정하는 단계를 포함할 수 있다. 상기 제1 누적 데이터를 생성하는 상기 단계는 상기 제1 입력 평면 및 상기 기본 평면들 중에 상기 제1 웨이트 평면의 제2 웨이트 엘리먼트의 웨이트 값에 대응하는 제2 대상 평면을 결정하는 단계; 상기 제2 웨이트 엘리먼트의 오프셋에 기초하여 상기 제2 대상 평면에서 제2 대상 영역을 결정하는 단계를 더 포함할 수 있고, 상기 제1 대상 영역의 대상 엘리먼트들과 상기 제2 대상 영역의 대상 엘리먼트들을 엘리먼트 별로 누적하여 상기 제1 누적 데이터를 생성하는 단계를 포함할 수 있다.
상기 제1 대상 영역은 SIMD(single instruction multiple data) 연산을 위한 1차원 벡터 데이터에 대응할 수 있다. 상기 가능한 웨이트 값들의 수는 상기 웨이트 커널의 비트 정밀도에 기초하여 결정될 수 있다. 상기 웨이트 커널의 비트 정밀도는 3-비트 이하일 수 있다. 상기 제1 입력 평면에 관한 상기 중간 연산 결과는 상기 제1 입력 평면에 관한 곱셈 결과에 대응하고, 상기 기본 평면들을 생성하는 상기 단계는 곱셈 연산을 수행하지 않고, 쉬프트 연산 및 덧셈 연산을 통해 상기 중간 연산 결과에 대응하는 상기 기본 평면들을 생성하는 단계를 포함할 수 있다. 상기 제1 입력 평면 및 상기 제1 웨이트 평면은 복수의 입력 채널들 중 제1 입력 채널에 대응할 수 있고, 상기 제1 출력 평면은 복수의 출력 채널들 중 제1 출력 채널에 대응할 수 있다.
상기 컨볼루션 연산 처리 방법은 상기 입력 특징 맵의 제2 입력 평면 및 상기 웨이트 커널의 제2 웨이트 평면에 기초하여 제2 누적 데이터를 생성하는 단계를 더 포함할 수 있고, 상기 제1 출력 평면을 생성하는 상기 단계는 상기 제1 누적 데이터 및 상기 제2 누적 데이터를 누적하여 상기 제1 출력 평면을 생성하는 단계를 포함할 수 있다.
일 실시예에 따르면, 뉴럴 네트워크의 레이어에 관한 컨볼루션 연산 처리 장치는 프로세서; 및 상기 프로세서에서 실행가능한 명령어들을 포함하는 메모리를 포함하고, 상기 명령어들이 상기 프로세서에서 실행되면, 상기 프로세서는 입력 특징 맵의 제1 입력 평면 및 웨이트 커널의 제1 웨이트 평면을 획득하고, 상기 웨이트 커널의 가능한 웨이트 값들의 적어도 일부와 상기 제1 입력 평면 간의 중간 연산 결과에 대응하는 기본 평면들을 생성하고, 상기 제1 입력 평면 및 상기 기본 평면들 중에 상기 제1 웨이트 평면의 웨이트 엘리먼트 값들에 대응하는 적어도 하나의 평면에 기초하여 제1 누적 데이터를 생성하고, 상기 제1 누적 데이터에 기초하여 출력 특징 맵의 제1 출력 평면을 생성한다.
일 실시예에 따르면, 전자 장치는 감지된 시각 정보에 기초하여 입력 영상을 생성하는 카메라; 및 상기 입력 영상에 대응하는 입력 특징 맵의 제1 입력 평면 및 웨이트 커널의 제1 웨이트 평면을 획득하고, 상기 웨이트 커널의 가능한 웨이트 값들의 적어도 일부와 상기 제1 입력 평면 간의 중간 연산 결과에 대응하는 기본 평면들을 생성하고, 상기 제1 입력 평면 및 상기 기본 평면들 중에 상기 제1 웨이트 평면의 웨이트 엘리먼트 값들에 대응하는 적어도 하나의 평면에 기초하여 제1 누적 데이터를 생성하고, 상기 제1 누적 데이터에 기초하여 출력 특징 맵의 제1 출력 평면을 생성하는 프로세서를 포함한다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 레이어에 관한 컨볼루션 연산을 처리하는 처리 장치의 동작을 개략적으로 나타낸다.
도 2은 일 실시예에 따른 웨이트 커널들과 입력 특징 맵 간의 컨볼루션 연산 과정을 나타낸다.
도 3은 일 실시예에 따른 웨이트 평면과 입력 평면 간의 컨볼루션 연산 과정을 나타낸다.
도 4는 일 실시예에 따른 입력 평면 및 가능한 웨이트 값들에 기초하여 기본 평면들이 생성되는 과정을 나타낸다.
도 5는 일 실시예에 따른 각 평면들에 관한 포인터들이 지시하는 대상 지점을 나타낸다.
도 6은 일 실시예에 따른 컨볼루션 연산의 연산 결과에 대응하는 포인터 함수를 나타낸다.
도 7은 도 6의 포인터 함수에 의해 지시되는 대상 영역들을 나타낸다.
도 8은 일 실시예에 따른 컨볼루션 연산을 벡터 데이터 기반으로 처리 과정을 나타낸다.
도 9는 일 실시예에 따른 컨볼루션 연산 처리 방법을 통해 하나의 출력 특징 맵이 생성되는 과정을 나타낸다.
도 10은 일 실시예에 따른 컨볼루션 연산 처리 방법을 통해 하나의 출력 평면이 생성되는 과정을 나타낸다.
도 11은 일 실시예에 따른 뉴럴 네트워크의 레이어에 관한 컨볼루션 연산을 처리하는 처리 장치의 구성을 나타낸다.
도 12는 일 실시예에 따른 처리 장치와 관련된 전자 장치를 나타낸다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
또한, 실시 예의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
어느 하나의 실시 예에 포함된 구성요소와, 공통적인 기능을 포함하는 구성요소는, 다른 실시 예에서 동일한 명칭을 사용하여 설명하기로 한다. 반대되는 기재가 없는 이상, 어느 하나의 실시 예에 기재한 설명은 다른 실시 예에도 적용될 수 있으며, 중복되는 범위에서 구체적인 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 레이어에 관한 컨볼루션 연산을 처리하는 처리 장치의 동작을 개략적으로 나타낸다. 도 1을 참조하면, 처리 장치(100)는 뉴럴 네트워크(110)와 관련된 연산을 처리할 수 있다. 뉴럴 네트워크(110)와 관련된 연산이 처리됨에 응답하여, 뉴럴 네트워크(110)는 뉴럴 네트워크(110)의 트레이닝 목적에 맞는 동작을 수행할 수 있다. 예를 들어, 이러한 뉴럴 네트워크(110)의 동작은 객체 분류, 객체 검출, 객체 추적, 객체 식별, 객체 인식, 사용자 인증 등을 포함할 수 있다.
뉴럴 네트워크(110)는 복수의 레이어들을 포함하는 딥 뉴럴 네트워크(deep neural network, DNN)에 해당할 수 있다. 복수의 레이어들은 입력 레이어(input layer), 적어도 하나의 히든 레이어(hidden layer), 및 출력 레이어(output layer)를 포함할 수 있다. 도 1에 도시된 제1 레이어, 제2 레이어, 및 제n 레이어는 이러한 복수의 레이어들 중 적어도 일부일 수 있다. 뉴럴 네트워크(110)는 완전 연결 네트워크(fully connected network, FCN), 컨볼루셔널 뉴럴 네트워크(convolutional neural network, CNN), 및 리커런트 뉴럴 네트워크(recurrent neural network, RNN) 중 적어도 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크(110) 내 복수의 레이어들 중 적어도 일부는 CNN에 해당할 수 있고, 다른 일부는 FCN에 해당할 수 있다. 이 경우, CNN은 컨볼루셔널 레이어로 지칭될 수 있고, FCN은 완전 연결 레이어로 지칭될 수 있다.
CNN의 경우, 각 레이어에 입력되는 데이터는 입력 특징 맵(input feature map)으로 지칭될 수 있고, 각 레이어에서 출력되는 데이터는 출력 특징 맵(output feature map)으로 지칭될 수 있다. 입력 특징 맵 및 출력 특징 맵은 액티베이션 데이터(activation data)로 지칭될 수도 있다. 컨볼루셔널 레이어가 입력 레이어에 해당하는 경우, 입력 레이어의 입력 특징 맵은 입력 데이터에 대응할 수 있다. 예를 들어, 입력 데이터는 입력 영상일 수 있다.
뉴럴 네트워크(110)는 딥 러닝에 기반하여 트레이닝된 후, 비선형적 관계에 있는 입력 데이터 및 출력 데이터를 서로 매핑함으로써 트레이닝 목적에 맞는 추론(inference)을 수행해낼 수 있다. 딥 러닝은 빅 데이터 세트로부터 영상 또는 음성 인식과 같은 문제를 해결하기 위한 기계 학습 기법이다. 딥 러닝은 준비된 트레이닝 데이터를 이용하여 뉴럴 네트워크(110)를 트레이닝하면서 에너지가 최소화되는 지점을 찾아가는 최적화 문제 풀이 과정으로 이해될 수 있다.
딥 러닝의 지도식(supervised) 또는 비지도식(unsupervised) 학습을 통해 뉴럴 네트워크(110)의 구조, 혹은 모델에 대응하는 웨이트(weight)가 구해질 수 있고, 이러한 웨이트를 통해 입력 데이터 및 출력 데이터가 서로 매핑될 수 있다. 뉴럴 네트워크(110)의 폭과 깊이가 충분히 크면 임의의 함수를 구현할 수 있을 만큼의 용량(capacity)을 가질 수 있다. 뉴럴 네트워크(110)가 적절한 트레이닝 과정을 통해 충분히 많은 양의 트레이닝 데이터를 학습하면 최적의 성능을 달성할 수 있다.
아래에서 뉴럴 네트워크(110)가 '미리' 트레이닝된 것으로 표현될 수 있는데, 여기서 '미리'는 뉴럴 네트워크(110)가 '시작'되기 전을 나타낼 수 있다. 뉴럴 네트워크(110)가 '시작'되었다는 것은 뉴럴 네트워크(110)가 추론을 위한 준비가 된 것을 의미할 수 있다. 예를 들어, 뉴럴 네트워크(110)가 '시작'된 것은 뉴럴 네트워크(110)가 메모리에 로드된 것, 혹은 뉴럴 네트워크(110)가 메모리에 로드된 이후 뉴럴 네트워크(110)에 추론을 위한 입력 데이터가 입력된 것을 포함할 수 있다.
처리 장치(100)는 각 컨볼루셔널 레이어에 관한 연산을 처리하기 위해 각 컨볼루셔널 레이어의 입력 특징 맵과 웨이트 커널(weight kernel) 간의 컨볼루션 연산을 수행할 수 있고, 컨볼루션 연산의 연산 결과에 기초하여 출력 특징 맵을 생성할 수 있다. 뉴럴 네트워크(110)에 관한 연산을 처리하기 위해서는 MAC(Multiplication and Accumulation) 연산을 포함하는 다수의 연산의 처리가 필요할 수 있다. 또한, 이러한 연산 처리를 위해 많은 컴퓨팅 자원 및 시간이 소모될 수 있다. 뉴럴 네트워크 모델의 경량화, 연산 처리의 고속화는 이와 같은 컴퓨팅 자원 및 시간의 소모를 경감시킬 수 있고, 이를 통해 뉴럴 네트워크(110)가 센서 환경, 임베디드 환경과 같은 제한적인 환경에서 실현될 수 있다.
일 실시예에 따르면, 뉴럴 네트워크(110)의 고속화 및 저전력 연산을 위해 액티베이션 및 웨이트에 낮은-비트 정밀도(low-bit precision)가 적용될 수 있다. 이때, 액티베이션에 비해 웨이트에 더 낮은 비트 정밀도가 부여될 수 있다. 예를 들어, 액티베이션 및 웨이트 모두의 비트 정밀도를 낮출 경우 네트워크 성능에 영향을 줄 가능성이 있다. 액티베이션의 비트 정밀도는 가능한 유지하고, 필요한 경우 웨이트의 비트 정밀도는 낮추는 것이 네트워크 성능을 유지하는데 효과적일 수 있다. 예를 들어, 액티베이션은 8-비트로 표현될 수 있고, 웨이트는 3-비트 이하(예: 3-비트 또는 2비트)로 표현될 수 있다.
아래에서 다시 설명되는 것처럼, 웨이트가 낮은-비트 정밀도로 표현되는 경우 컨볼루션 연산 과정에서 많은 중복 연산이 발생될 수 있다. 웨이트가 낮은-비트 정밀도로 표현된다는 것은 해당 비트 정밀도로 표현 가능한 웨이트 값의 경우의 수가 적다는 것을 의미하고, 이에 따라 동일한 웨이트 값에 기초한 연산이 중복적으로 수행될 수 있다. MAC 연산을 반복적으로 수행하는 컨볼루션 연산의 특성 상 이와 같은 중복은 컨볼루션 연산의 많은 부분을 차지할 수 있다. 실시예들에 따르면, 컨볼루션 연산 과정에서 필요할 수 있는 중간 연산 결과들을 미리 확보해 두고 이를 활용하여 컨볼루션 연산을 수행함으로써 컨볼루션 연산 과정에서 발생할 수 있는 중복성을 감축할 수 있다.
도 2은 일 실시예에 따른 웨이트 커널들과 입력 특징 맵 간의 컨볼루션 연산 과정을 나타낸다. 도 2를 참조하면, 웨이트 커널들(210)은 각각 K*K*C의 사이즈를 가지고, 입력 특징 맵(220)은 W*H*C의 사이즈를 가지고, 출력 특징 맵(230)은 W*H*D의 사이즈를 가진다. 웨이트 커널들(210), 입력 특징 맵(220), 및 출력 특징 맵(230)은 각각 미리 정해진 비트 정밀도의 엘리먼트들을 포함할 수 있다. 예를 들어, 웨이트 커널들(210)의 엘리먼트는 웨이트 엘리먼트로 지칭될 수 있고, 입력 특징 맵(220)의 엘리먼트는 입력 엘리먼트로 지칭될 수 있고, 출력 특징 맵(230)의 엘리먼트는 출력 엘리먼트로 지칭될 수 있다. 실시예에 따른 연산들(예: 컨볼루션 연산 등)은 엘리먼트 단위로 수행될 수 있다. W, K, 및 H는 이와 같은 엘리먼트들의 수를 나타낼 수도 있다. 설명의 편의를 위해 웨이트 평면의 폭 및 높이는 K로 동일한 것으로 가정되고, 입력 평면 출력 평면의 사이즈는 W*H로 동일한 것으로 가정된다. 다만, 실시예에 따라 웨이트 평면의 폭과 높이는 서로 다르거나, 입력 평면과 출력 평면의 사이즈는 서로 다를 수 있다.
웨이트 커널들(210), 입력 특징 맵(220), 및 출력 특징 맵(230)은 각각 복수의 평면들을 포함할 수 있다. 예를 들어, 웨이트 커널들(210) 각각은 C개의 웨이트 평면들을 포함할 수 있고, 입력 특징 맵(220)은 C개의 입력 평면들을 포함할 수 있고, 출력 특징 맵(230)은 D개의 출력 평면들을 포함할 수 있다. 이때, C개의 웨이트 평면들 및 C개의 입력 평면들은 각각 입력 채널들에 대응할 수 있고, D개의 출력 평면들은 각각 출력 채널들에 대응할 수 있다. 또한, C는 입력 채널의 수에 대응할 수 있고, D는 출력 채널의 수에 대응할 수 있다.
웨이트 커널들(210) 및 입력 특징 맵(220) 간의 컨볼루션 연산에 따라 출력 특징 맵(230)이 생성된다. 웨이트 커널들(210)은 각각 K*K*C의 사이즈를 가지고, 입력 특징 맵(220)은 W*H*C의 사이즈를 가지므로, 웨이트 커널들(210)과 입력 특징 맵(220) 간의 컨볼루션 연산은 3차원 컨볼루션 연산에 해당하는 것으로 볼 수 있다. 예를 들어, 제1 웨이트 커널(211)과 입력 특징 맵(220) 간의 3차원 컨볼루션 연산의 연산 결과로서 제1 출력 평면(231)이 생성될 수 있다.
웨이트 커널들(210)은 복수의 웨이트 평면들로 분할될 수 있고, 입력 특징 맵(220)은 복수의 입력 평면들로 분할될 수 있으므로, 이러한 3차원 컨볼루션 연산은 복수의 2차원 컨볼루션 연산들의 조합으로 재구성할 수 있다. 예를 들어, 제1 웨이트 커널(211)과 입력 특징 맵(220) 간의 3차원 컨볼루션 연산은 제1 웨이트 커널(211)의 웨이트 평면들과 입력 특징 맵(220)의 입력 평면들 간의 2차원 컨볼루션 연산의 연산 결과들을 누적하는 방식으로 재구성될 수 있다. 이때, 제1 웨이트 평면(212)과 제1 입력 평면(221)과 같이, 동일한 입력 채널의 웨이트 평면과 입력 평면 간에 2차원 컨볼루션 연산이 수행될 수 있다.
예를 들어, 제1 웨이트 평면(212)과 제1 입력 평면(221) 간의 컨볼루션 연산을 통해 제1 연산 결과가 생성될 수 있다. 이러한 연산 결과는 누적 평면으로 지칭될 수 있다. 이와 같이 연산 결과가 2차원 평면 형태로 표현되는 경우 연산 결과는 누적 평면으로 지칭될 수 있고, 연산 결과가 1차원 벡터 형태로 표현되는 경우 연산 결과는 누적 벡터로 지칭될 수 있다. 또한, 누적 평면 및 누적 벡터는 누적 데이터로 통칭될 수 있다.
제1 입력 특징 맵(220)의 다른 입력 평면들과 제1 웨이트 커널(211)의 다른 웨이트 커널들 간의 컨볼루션 연산을 통해 다른 누적 평면들이 생성될 수 있다. 이와 같이 제1 입력 특징 맵(220) 및 제1 웨이트 커널(211)과 관련된 C개의 모든 누적 평면들이 생성되고, C개의 모든 누적 평면들이 서로 누적되어 제1 출력 평면(231)이 생성될 수 있다. 웨이트 커널들(210)의 다른 웨이트 커널과 입력 특징 맵(220) 간의 컨볼루션 연산을 통해 출력 특징 맵(230)의 다른 출력 평면이 생성될 수 있다. 이와 같이 웨이트 커널들(210) 모두에 관한 컨볼루션 연산이 완료되면, 출력 특징 맵(230)이 완성될 수 있다.
도 3은 일 실시예에 따른 웨이트 평면과 입력 평면 간의 컨볼루션 연산 과정을 나타낸다. 도 3a는 슬라이딩 윈도우 기반의 컨볼루션 연산에 해당하고, 도 3b는 누적 기반의 컨볼루션 연산에 해당한다. 누적 기반의 컨볼루션 연산은 윈도우 기반의 컨볼루션 연산의 연산 과정을 재조합한 것으로, 실시예들에 따르면 슬라이딩 윈도우 기반의 컨볼루션 연산을 대신하여 누적 기반의 컨볼루션 연산이 수행될 수 있다.
도 3a를 참조하면, 입력 평면(310)과 웨이트 평면(320) 간의 컨볼루션 연산을 통해 누적 평면(330)이 생성된다. 상술된 것처럼, 누적 평면(330)은 출력 평면을 위한 일부 데이터에 해당하며, 누적 평면(300) 및 다른 누적 평면들이 서로 누적되어 출력 평면이 생성될 수 있다. 입력 평면(310)과 웨이트 평면(320) 간의 컨볼루션 연산은 웨이트 평면(320)이 경로(325)를 따라 슬라이딩하면서 웨이트 평면(320)과 입력 평면(310)이 서로 겹치는 영역에 관해 엘리먼트와이즈(elementwise) 곱셈 결과를 합산하는 과정으로 이해될 수 있다.
도 3a에 경로(325)는 추상적으로 도시되어 있으나, 실제로 경로(325)는 슬라이딩 스트라이드(sliding stride)에 기초하여 슬라이딩될 수 있다. 본 명세서에서 슬라이딩 스트라이드(sliding stride)는 1인 것이 가정되지만, 슬라이딩 스트라이드는 1 이외에 다른 값을 가질 수도 있다. 이 경우, 웨이트 평면(320)은 1의 슬라이딩 스트라이드에 맞추어 하나의 엘리먼트를 단위로 슬라이딩될 수 있다. 또한, 입출력의 사이즈를 유지하기 위해, 입력 평면(310)의 외곽에 제로 엘리먼트 벡터들을 통한 제로 패딩(zero padding)이 적용될 수 있다. 이에 따라 입력 평면(310)은 (W+2)*(H+2)의 사이즈를 가질 수 있다.
웨이트 평면(320)은 웨이트 엘리먼트들(W1 내지 W9)을 포함한다. 웨이트 평면(320)이 경로(325)를 따라 슬라이딩할 때, 웨이트 엘리먼트들(W1 내지 W9) 각각과 입력 평면(310)이 서로 겹치는 영역들은 서로 많은 면적이 중복될 수 있다. 예를 들어, 도 3b의 누적 기반의 컨볼루션 연산은 이러한 중복성을 감축하기에 적합할 수 있다.
도 3b를 참조하면, 도 3a의 경로(325)에 기초하여 입력 평면(310) 상에 웨이트 엘리먼트들(W1, W2, W9)의 대응 영역들(311, 313, 315)이 설정될 수 있다. 대응 영역들(311, 313, 315)은 웨이트 평면(320)이 경로(325)를 따라 슬라이딩할 때, 웨이트 엘리먼트들(W1 내지 W9) 각각과 입력 평면(310)이 서로 겹치는 영역들을 나타낸다. 웨이트 엘리먼트들(W1, W2, W9)과 대응 영역들(311, 313, 315) 간의 곱셈 연산을 통해 중간 평면들(312, 314, 316)이 생성될 수 있다. 도 3b에는 도시되어 있지 않으나, 웨이트 엘리먼트들(W3 내지 W8)에 관해서도 대응 영역들이 설정되고, 이에 관한 중간 평면들이 도출될 수 있다. 웨이트 엘리먼트들(W1 내지 W9) 모두에 관한 모든 중간 평면들이 생성되면, 이들의 누적을 통해 누적 평면(330)이 생성될 수 있다. 이와 같이 곱셈 결과가 2차원 평면 형태로 표현되는 경우 곱셈 결과는 중간 평면으로 지칭될 수 있고, 이와 달리 곱셈 결과가 1차원 벡터 형태로 표현되는 경우 곱셈 결과는 중간 벡터로 지칭될 수 있다. 또한, 중간 평면 및 중간 벡터는 중간 데이터로 통칭될 수 있다.
어느 웨이트 엘리먼트들이 서로 동일한 웨이트 값을 갖는 경우, 이들 웨이트 엘리먼트들의 중간 평면들 간에 많은 중복 데이터가 발생할 수 있다. 예를 들어, 웨이트 엘리먼트들(W1, W2)의 웨이트 값이 '2'로 동일한 경우, 동일한 입력 평면(310) 내의 대응 영역들(311, 313)의 입력 엘리먼트들에 '2'의 웨이트 값을 곱하여 중간 평면들(312, 314)이 생성될 수 있다. 대응 영역들(311, 313)은 많은 면적에서 서로 겹치는데, 여기에 동일한 웨이트 값이 곱해지므로, 중간 평면들(312, 314)에 많은 중복 데이터가 발생할 수 있다. 웨이트 엘리먼트들 웨이트 값은 간단히 웨이트 엘리먼트 값으로 지칭될 수도 있다.
웨이트 엘리먼트들(W1 내지 W9)은 미리 정해진 비트 정밀도로 표현될 수 있다. 예를 들어, 웨이트 엘리먼트들(W1 내지 W9)의 비트 정밀도는 S로 나타낼 수 있다. 이 경우, 웨이트 엘리먼트들(W1 내지 W9)이 가질 수 있는 웨이트 값은 2^S개이다. S가 작아질수록 S를 통해 표현 가능한 웨이트 값의 경우의 수도 작아지고, 이에 따라 웨이트 엘리먼트들이 서로 동일한 값을 가질 확률이 높아질 수 있다. 이 경우, 컨볼루션 연산 과정을 재조합하여 연산의 중복성을 낮출 수 있다. 실시예들에 따르면, 중간 연산 결과로서 입력 평면(310)에 관한 곱셈 결과들을 미리 확보해 두고, 이를 활용하여 컨볼루션 연산을 수행함으로써 컨볼루션 연산 과정에서 발생할 수 있는 중복성을 감축할 수 있다.
도 4는 일 실시예에 따른 입력 평면 및 가능한 웨이트 값들에 기초하여 기본 평면들이 생성되는 과정을 나타낸다. 도 4를 참조하면, 가능한 웨이트 값들(420)은 '-4' 내지 '3'을 포함한다. 도 4는 웨이트의 비트 정밀도가 3인 실시예를 나타낸다. 다만, 도 4는 하나의 실시예를 나타내며 비트 정밀도가 3으로 제한되는 것은 아니다. 비트 정밀도는 3 이외의 다른 다양한 값을 가질 수 있다. 예를 들어, 실시예들에 따른 웨이트의 비트 정밀도는 2, 4 등의 낮은-비트 정밀도로 설정될 수 있다. 도 4에서 '-4' 내지 '3'은 10진수 표현이다. 예를 들어, 이들은 2진수 표현(2의 보수) '100' 내지 '011'에 대응할 수 있다. 이하, 10진수 표현을 기준으로 실시예들이 설명될 수 있다.
실시예들에 따르면, 컨볼루션 연산을 수행하기 위해, 컨볼루션 연산의 중간 연산 결과로서 입력 평면(410)에 관한 곱셈 결과들이 미리 확보될 수 있다. 예를 들어, 가능한 웨이트 값들(420)의 적어도 일부에 기초하여, 입력 평면(410)에 관한 곱셈 결과들이 미리 확보될 수 있다. 이 과정에서 미리 확보되는 곱셈 결과는 기본 평면으로 지칭될 수 있고, 기본 평면을 도출하는데 이용된 웨이트 값은 기본 웨이트 값으로 지칭될 수 있다.
일 실시예에 따르면, 곱셈 결과들의 확보를 위해 필요한 연산 및 확보된 곱셈 결과들을 저장하기 위한 버퍼 공간을 최소화하기 위해, 최소한의 곱셈 결과들이 확보될 수 있다. 예를 들어, '0'의 웨이트 값의 경우 제로 스킵(zero skip)이 수행될 수 있고, '1'의 웨이트 값의 경우 입력 평면(410)이 그대로 활용될 수 있다. 따라서, '0' 및 '1'의 웨이트 값에 관한 곱셈 결과들은 별도로 확보되지 않을 수 있다. 또한, 서로 절대 값이 같은 웨이트 값들(예: -2와 2, -3과 +3)의 경우 두 곱셈 결과들 중 어느 하나만 확보될 수 있다. 확보된 어느 하나의 곱셈 결과에 부호 관련 처리를 수행하여 나머지 하나의 곱셈 결과로 활용될 수 있다.
따라서, 2^(S-1)-1개의 웨이트 값을 통해 확보된 곱셈 결과들을 통해 2^S개의 웨이트 값들에 관한 곱셈 연산이 커버될 수 있다. 이에 따라 도 4의 경우 '2', '3', '4'의 기본 웨이트 값들에 기초하여 입력 평면(410)에 관한 곱셈 결과에 대응하는 기본 평면들(431, 432, 433)이 생성될 수 있다. 가능한 웨이트 값들(420) 중에 최소 값인 '-4'의 경우, 연산의 편의를 위해 그 절대 값인 '4'로 변환되어 기본 웨이트 값으로 이용될 수 있다.
각 기본 평면은 기본 웨이트 값과 입력 평면(410) 간의 곱셈 결과에 대응한다. 예를 들어, 제1 기본 평면(431)은 기본 웨이트 값 '2'와 입력 평면(410) 간의 곱셈 결과에 해당할 수 있다. 또한, 제2 기본 평면(432)은 기본 웨이트 값 '3'과 입력 평면(410) 간의 곱셈 결과에 해당할 수 있고, 제3 기본 평면(433)은 기본 웨이트 값 '3'와 입력 평면(410) 간의 곱셈 결과에 해당할 수 있다. 여기서, 각 곱셈 연산은 엘리먼트와이즈 연산에 해당할 수 있다.
일 실시예에 따르면, 곱셈 연산을 수행하지 않고, 쉬프트 연산 및 덧셈 연산을 통해 각 곱셈 결과(기본 평면)가 생성될 수 있다. 곱셈 연산의 경우 시프트 연산 및 덧셈 연산에 비해 많은 연산을 요구하므로, 곱셈 연산을 시프트 연산 및 덧셈 연산으로 대체하여 기본 평면의 확보에 필요한 연산량을 감축할 수 있다. 예를 들어, 입력 평면(410)을 I라고 할 경우, 쉬프트 연산 I>>1을 통해 제1 기본 평면(431)이 생성될 수 있다. 또한, 쉬프트 연산 및 덧셈 연산에 해당하는 I+(I>>1)을 통해 제2 기본 평면(432)이 생성될 수 있고, 쉬프트 연산 I>>2를 통해 제3 기본 평면(433)이 생성될 수 있다. 여기서, 각 쉬프트 연산 및 각 덧셈 연산은 엘리먼트와이즈 연산에 해당할 수 있다.
기본 평면들이 확보되면, 이들은 버퍼 공간에 저장되어 컨볼루션 연산을 위해 활용될 수 있다. 예를 들어, 제1 기본 평면(431)은 제1 버퍼에 저장될 수 있고, 제2 기본 평면(432)은 제2 버퍼에 저장될 수 있고, 제3 기본 평면(433)은 제3 버퍼에 저장될 수 있다. 이후에,
웨이트 평면의 실제 웨이트 값에 따라 입력 평면(410) 및 기본 평면들(431 내지 433) 중에 적어도 하나의 평면이 선택적으로 활용될 수 있다. 예를 들어, 웨이트 값이 '2'인 경우 제2 버퍼에 저장된 제2 기본 평면(432)에서 적어도 일부의 영역(예: 대상 영역)이 추출되어 중간 데이터로 활용될 수 있다. 또한, 웨이트 값이 '-3'인 경우 제3 버퍼에 저장된 제3 기본 평면(433)에서 적어도 일부의 영역(예: 대상 영역)이 추출되어 중간 데이터로 활용될 수 있다. 이 경우, 중간 데이터의 부호를 반전하거나, 추후 누적 과정에서 덧셈 연산 대신 뺄셈 연산이 적용될 수 있다. 이처럼 웨이트 평면의 각 웨이트 값에 따라 각 기본 평면을 이용하여 중간 데이터를 생성할 수 있고, 중간 데이터를 누적하여 누적 데이터가 생성될 수 있다.
도 5는 일 실시예에 따른 각 평면들에 관한 포인터들이 지시하는 대상 지점을 나타낸다. 기본 평면들(520 내지 540)이 생성되어 버퍼에 저장되면, 입력 평면(510) 및 기본 평면들(520 내지 540)에 관한 포인터를 통해 입력 평면(510) 및 기본 평면들(520 내지 540) 내의 대상 지점들이 지시될 수 있다. 예를 들어, 대상 지점은 메모리 주소를 포함할 수 있다.
도 5를 참조하면, 입력 평면(510) 및 기본 평면들(520 내지 540)에 관해 포인터들(Px_y)이 정의될 수 있다. 여기서, x는 평면 식별자이고, y는 오프셋 식별자이다. 예를 들어, 입력 평면(510)의 경우 x=0이고, 제1 기본 평면(520)의 경우 x=1이고, 제2 기본 평면(530)의 경우 x=2이고, 제3 기본 평면(540)의 경우 x=3일 수 있다. 오프셋은 웨이트 평면 내 각 웨이트 엘리먼트의 위치에 따라 결정될 수 있다. x는 0 내지 X의 정수일 수 있고, 여기서 X는 기본 평면의 수를 나타낼 수 있다. y는 1 내지 Y의 정수일 수 있고, 여기서 Y는 각 웨이트 평면의 웨이트 엘리먼트의 수를 나타낼 수 있다. 예를 들어, 웨이트 평면의 사이즈가 3*3인 경우, Y=9일 수 있다.
어느 웨이트 엘리먼트와 입력 평면(510) 간의 곱셈 연산에 대응하여, 입력 평면(510) 및 기본 평면들(520 내지 540) 중에 해당 웨이트 엘리먼트의 웨이트 값에 대응하는 대상 평면이 선택될 수 있고, 해당 웨이트 엘리먼트의 오프셋에 기초하여 대상 평면의 대상 지점이 결정될 수 있다. 이 과정에서, 포인터는 대상 평면 및 대상 지점을 지시하도록 결정될 수 있다. 예를 들어, 어느 웨이트 엘리먼트의 오프셋에 기초하여 대상 평면의 서로 다른 영역들을 지시하는 포인터들 중에 특정 대상 영역을 지시하는 포인터가 선택될 수 있다. 일례로, 어느 웨이트 엘리먼트의 웨이트 값이 '-2'이고, 오프셋이 '5'라면, P1_5의 포인터를 통해 대상 영역이 지시될 수 있다. 예를 들어, 대상 지점은 대상 영역의 시작 주소에 대응할 수 있다. 이러한 과정을 통해 웨이트 평면의 모든 웨이트 엘리먼트에 관한 대상 영역들이 확인되면, 대상 영역들의 대상 엘리먼트들에 관한 누적 연산을 통해 해당 웨이트 평면에 관한 누적 데이터가 완성될 수 있다.
도 6은 일 실시예에 따른 컨볼루션 연산의 연산 결과에 대응하는 포인터 함수를 나타내고, 도 7은 도 6의 포인터 함수에 의해 지시되는 대상 영역들을 나타낸다. 도 6을 참조하면, 입력 평면(610)과 웨이트 평면(620) 간의 컨볼루션 연산을 통해 연산 결과(630)가 도출될 수 있다. 연산 결과(630)는 누적 데이터에 해당할 수 있다. 예를 들어, 입력 평면(610) 및 입력 평면(610)에 관한 기본 평면들 중에 웨이트 평면(620)의 제1 웨이트 엘리먼트의 웨이트 값 '3'에 대응하는 제2 기본 평면이 제1 대상 평면으로 결정되고, 제1 웨이트 엘리먼트의 오프셋 '1'에 기초하여 제1 대상 평면에서 제1 대상 영역이 결정될 수 있다. 제1 대상 평면 및 제1 대상 영역은 제1 웨이트 엘리먼트에 관한 포인터 P2_1를 통해 지시될 수 있다.
또한, 입력 평면(610) 및 입력 평면(610)에 관한 기본 평면들 중에 웨이트 평면(620)의 제5 웨이트 엘리먼트의 웨이트 값 '1'에 대응하는 입력 평면(610)이 제2 대상 평면으로 결정되고, 제2 웨이트 엘리먼트의 오프셋 '5'에 기초하여 제2 대상 평면에서 제2 대상 영역이 결정될 수 있다. 제2 대상 평면 및 제2 대상 영역은 제2 웨이트 엘리먼트에 관한 포인터 P0_5를 통해 지시될 수 있다.
제1 웨이트 엘리먼트에 및 제5 웨이트 엘리먼트와 마찬가지로, 제6 웨이트 엘리먼트에 관해 P2_6의 포인터가 도출될 수 있고, 제7 웨이트 엘리먼트에 관해 P1_7의 포인터가 도출될 수 있고, 제9 웨이트 엘리먼트에 관해 P1_9의 포인터가 도출될 수 있다. 나머지 웨이트 엘리먼트들의 웨이트 값은 '0'이므로, 이들에 관해 제로 스킵이 수행될 수 있다. 연산 결과(630)는 포인터 함수 f를 포함한다. 포인터 함수 f는 포인터와 대상 영역을 매핑할 수 있다. 도 7을 참조하면, 포인터들(P2_1, P0_5, P1_9, P2_6, P1_7)에 대응하는 각 평면의 대상 영역이 도시되어 있다. 도 7은 대상 영역이 2차원 평면 데이터에 해당하는 예시를 나타낸다. 도 7과 달리 대상 영역은 1차원 벡터 데이터에 해당할 수도 있다. 예를 들어, SIMD(single instruction multiple data) 처리를 위해 대상 영역은 1차원 벡터 데이터로 정의될 수 있다. SIMD는 하나의 명령어로 다수의 데이터를 처리하는 프로세서의 연산 처리 방식을 의미한다.
포인터 함수를 통해 대상 영역들이 도출되면, 대상 영역들의 대상 엘리먼트들에 관한 누적 연산을 통해 웨이트 평면(620)에 관한 누적 데이터가 완성될 수 있다. 누적 연산은 엘리먼트와이즈 연산에 해당할 수 있다. 이때, '3', '1', '2'의 양수 웨이트 값에 대응하는 대상 영역들의 대상 엘리먼트들은 덧셈 연산 기반으로 누적될 수 있고, '-3' 및 '-2'와 같은 음수 웨이트 값의 경우 뺄셈 연산 기반으로 누적될 수 있다.
도 8은 일 실시예에 따른 컨볼루션 연산을 벡터 데이터 기반으로 처리 과정을 나타낸다. 아래에서 상세히 설명되는 것처럼, 실시예에 따른 컨볼루션 연산은 1차원 벡터 데이터 기반의 SIMD 처리를 통해 수행될 수 있다. 도 8의 실시예에서 SIMD의 크기는 입력 특징 맵의 폭 W에 대응할 수 있다.
도 8a를 참조하면, 웨이트 평면(810)과 입력 평면(820) 간의 누적 기반의 컨볼루션 연산이 SIMD 처리를 위해 벡터 데이터 기반으로 수행될 수 있다. 예를 들어, 입력 평면(820)의 제1 입력 영역(821)과 웨이트 평면(810) 간의 누적 기반의 컨볼루션 연산에 따라 누적 평면(800)의 누적 벡터(801)가 생성될 수 있고, 제2 입력 영역(822)과 웨이트 평면(810) 간의 누적 기반의 컨볼루션 연산에 따라 누적 벡터(802)가 생성될 수 있고, 제3 입력 영역(823)과 웨이트 평면(810) 간의 누적 기반의 컨볼루션 연산에 따라 누적 벡터(803)가 생성될 수 있다. 입력 영역들(821 내지 823)의 높이는 웨이트 평면(810)의 높이에 대응한다.
도 8b는 입력 평면(820)에 기초하여 기본 평면들(830 내지 850)이 이미 생성된 상태에서 웨이트 평면(810)과 입력 평면(820) 간의 누적 기반의 컨볼루션 연산이 수행되는 과정을 나타낸다. 예를 들어, 도 8b은 도 8a의 제1 입력 영역(821)과 웨이트 평면(810) 간의 컨볼루션 연산을 나타낼 수 있다.
도 8b을 참조하면, 웨이트 평면(810)의 각 웨이트 엘리먼트들에 대응하여 입력 평면(820) 및 기본 평면들(830 내지 850)에서 대상 영역들이 결정될 수 있다. 보다 구체적으로, 제1 웨이트 엘리먼트 '3'에 대응하여 포인터 P2_1에 의해 지시되는 제2 기본 평면(840)의 제1 대상 영역(841)이 결정될 수 있고, 제5 웨이트 엘리먼트 '1'에 대응하여 포인터 P0_5에 의해 지시되는 입력 평면(820)의 제2 대상 영역(821)이 결정될 수 있고, 제9 웨이트 엘리먼트 '2'에 대응하여 포인터 P1_9에 의해 지시되는 제1 기본 평면(830)의 제3 대상 영역(831)이 결정될 수 있다. 이들 대상 영역들(821, 831, 841)의 대상 엘리먼트들은 레지스터들(r1 내지 r3)에 저장될 수 있다.
또한, 제3 웨이트 엘리먼트 '-4'에 대응하여 포인터 P3_3에 의해 지시되는 제3 기본 평면(850)의 제4 대상 영역(851)이 결정될 수 있고, 제7 웨이트 엘리먼트 '-4'에 대응하여 포인터 P3_7에 의해 지시되는 제3 기본 평면(850)의 제5 대상 영역(852)이 결정될 수 있다. 이들 대상 영역들(851, 852)의 대상 엘리먼트들은 레지스터들(r4, r5)에 저장될 수 있다. 대상 영역들(821, 831, 841, 851, 852) 각각의 대상 엘리먼트들은 1차원 벡터 데이터에 대응할 수 있다.
이후에, 대상 영역들(821, 831, 841, 851, 852) 각각의 대상 엘리먼트들에 기초한 누적 연산이 수행될 수 있다. 예를 들어, 레지스터들(r1 내지 r3)에 저장된 대상 엘리먼트들은 덧셈 연산 기반으로 레지스터(r6)에 누적될 수 있다. 또한, 레지스터들(r4, r5)에 저장된 대상 엘리먼트들은 뺄셈 연산 기반으로 레지스터(r6)에 누적될 수 있다. 레지스터들(r1 내지 r5)에 관한 누적 연산이 완료되면, 레지스터(r6)에 도 8a의 제1 입력 영역(821)과 웨이트 평면(810) 간의 누적 기반의 컨볼루션 연산의 연산 결과에 대응하는 누적 벡터(801)가 저장될 수 있다. 레지스터(r6)의 누적 벡터(801)는 출력 평면(860)의 제1 출력 영역(861)에 대응할 수 있다.
출력 평면(860)의 제1 출력 영역(861)에 기 저장된 누적 벡터가 있는 경우, 기 저장된 누적 벡터가 로드되어 레지스터(r6)에 로드된 이후에 레지스터들(r1 내지 r5)의 대상 엘리먼트들이 레지스터(r6)에 누적될 수 있다. 예를 들어, 어느 출력 채널에 관해 웨이트 평면(810) 이외의 다른 웨이트 평면에 관한 컨볼루션 연산이 기 수행된 경우 제1 출력 영역(861)에 기 저장된 누적 벡터가 있을 수 있다. 만약, 도 8b의 웨이트 평면(810)에 관한 컨볼루션 연산이 해당 출력 채널에 관한 최초의 컨볼루션 연산에 해당한다면, 제1 출력 영역(861)에 기 저장된 누적 벡터가 없을 수 있다. 이 경우, 상술된 로드 동작 없이 레지스터들(r1 내지 r5)의 대상 엘리먼트들이 레지스터(r6)에 누적될 수 있다. 해당 출력 채널에 관한 모든 웨이트 평면들에 관한 컨볼루션 연산이 완료되면, 제1 출력 영역(861)에 완성된 출력 벡터가 저장될 수 있다.
도 9는 일 실시예에 따른 컨볼루션 연산 처리 방법을 통해 하나의 출력 특징 맵이 생성되는 과정을 나타낸다. 도 9를 참조하면, 처리 장치는 단계(910)에서 c번째 입력 평면(
Figure pat00001
)을 획득하고, 단계(920)에서 기본 평면들(
Figure pat00002
)을 생성한다. 처리 장치는 웨이트 커널의 가능한 웨이트 값들의 적어도 일부(예: 기본 웨이트)에 기초하여, 입력 평면(
Figure pat00003
)에 관한 곱셈 결과에 대응하는 기본 평면들(
Figure pat00004
)을 생성할 수 있다. 처리 장치는 입력 평면(
Figure pat00005
) 및 기본 평면들(
Figure pat00006
) 중 적어도 하나를 버퍼에 저장할 수 있다.
처리 장치는 단계(930)에서 웨이트 평면(
Figure pat00007
)을 획득하고, 단계(940)에서 포인터들을 결정한다. 예를 들어, 처리 장치는 입력 평면(
Figure pat00008
) 및 기본 평면들(
Figure pat00009
) 중에 웨이트 평면(
Figure pat00010
)의 제1 웨이트 엘리먼트의 웨이트 값에 대응하는 제1 대상 평면을 결정하고, 제1 웨이트 엘리먼트의 오프셋에 기초하여 제1 대상 평면에서 제1 대상 영역을 결정할 수 있다. 처리 장치는 제1 대상 평면의 식별자 및 대상 영역의 식별자(오프셋 식별자)에 기초하여 포인터를 결정할 수 있다. 이와 같이, 처리 장치는 웨이트 평면(
Figure pat00011
)의 각 웨이트 엘리먼트에 관해 포인터를 결정할 수 있다. 0의 값을 갖는 웨이트 엘리먼트에 관해서는 제로 스킵이 적용될 수 있다.
처리 장치는 단계(950)에서 누적 연산을 수행한다. 예를 들어, 양수 웨이트 값의 엘리먼트의 경우 덧셈 연산을 통해 누적될 수 있고, 음수 웨이트 값의 엘리먼트의 경우 뺄셈 연산을 통해 누적될 수 있다. 처리 장치는 단계(960)에서 출력을 누적한다. 예를 들어, 처리 장치는 단계(950)를 통해 누적된 누적 데이터를 출력 평면의 대응 영역에 누적할 수 있다.
단계(970)에서 처리 장치는 d와 D를 비교한다. d와 D가 다르면, 다시 말해 D개의 웨이트 커널들 중에 아직 입력 평면(
Figure pat00012
) 및 기본 평면들(
Figure pat00013
)에 관한 연산이 완료되지 않은 웨이트 커널이 남아 있다면, d를 1 증가시키고 단계(930)를 수행한다. d와 D가 동일하다면, 다시 말해 D개의 웨이트 커널들 모두에 관해 입력 평면(
Figure pat00014
) 및 기본 평면들(
Figure pat00015
)에 관한 연산이 완료되었다면, 입력 평면(
Figure pat00016
)에 관한 누적 과정이 종료된다. 단계(980)에서 처리 장치는 c와 C를 비교한다. c와 C가 다르다면, 다시 말해 모든 입력 채널에 관한 누적 과정이 완료되지 않았다면, c를 1 증가시키고 단계들(910, 930)을 수행한다. c와 C가 동일하다면, 다시 말해 모든 입력 채널에 관한 누적이 완료되었다면, 해당 레이어에 관한 누적 컨볼루션 연산이 종료된다. 이는 해당 레이어에 관한 출력 특징 맵이 완성되었음을 의미한다.
도 10은 일 실시예에 따른 컨볼루션 연산 처리 방법을 통해 하나의 출력 평면이 생성되는 과정을 나타낸다. 도 10을 참조하면, 처리 장치는 단계(1010)에서 입력 특징 맵의 제1 입력 평면 및 웨이트 커널의 제1 웨이트 평면을 획득하고, 단계(1020)에서 웨이트 커널의 가능한 웨이트 값들의 적어도 일부에 기초하여, 제1 입력 평면에 관한 곱셈 결과에 대응하는 기본 평면들을 생성하고, 단계(1030)에서 제1 입력 평면 및 기본 평면들 중에 제1 웨이트 평면의 웨이트 엘리먼트 값들에 대응하는 적어도 하나의 평면에 기초하여 제1 누적 데이터를 생성하고, 단계(1040)에서 제1 누적 데이터에 기초하여 출력 특징 맵의 제1 출력 평면을 생성한다. 그 밖에, 컨볼루션 연산 처리 과정에 도 1 내지 도 9, 도 11, 및 도 12의 설명이 적용될 수 있으며, 보다 상세한 설명은 생략한다.
도 11은 일 실시예에 따른 뉴럴 네트워크의 레이어에 관한 컨볼루션 연산을 처리하는 처리 장치의 구성을 나타낸다. 도 11을 참조하면, 처리 장치(1100)는 프로세서(1110) 및 메모리(1120)를 포함한다. 메모리(1120)는 프로세서(1110)에 연결되고, 프로세서(1110)에 의해 실행가능한 명령어들, 프로세서(1110)가 연산할 데이터 또는 프로세서(1110)에 의해 처리된 데이터를 저장할 수 있다. 메모리(1120)는 비일시적인 컴퓨터 판독가능 매체, 예컨대 고속 랜덤 액세스 메모리 및/또는 비휘발성 컴퓨터 판독가능 저장 매체(예컨대, 하나 이상의 디스크 저장 장치, 플래쉬 메모리 장치, 또는 기타 비휘발성 솔리드 스테이트 메모리 장치)를 포함할 수 있다.
프로세서(1110)는 도 1 내지 도 10, 및 도 11의 하나 이상의 동작을 실행하기 위한 명령어들을 실행할 수 있다. 예를 들어, 프로세서(1110)는 입력 특징 맵의 제1 입력 평면 및 웨이트 커널의 제1 웨이트 평면을 획득하고, 웨이트 커널의 가능한 웨이트 값들의 적어도 일부에 기초하여, 제1 입력 평면에 관한 곱셈 결과에 대응하는 기본 평면들을 생성하고, 제1 입력 평면 및 기본 평면들 중에 제1 웨이트 평면의 웨이트 엘리먼트 값들에 대응하는 적어도 하나의 평면에 기초하여 제1 누적 데이터를 생성하고, 제1 누적 데이터에 기초하여 출력 특징 맵의 제1 출력 평면을 생성할 수 있다. 그 밖에, 처리 장치(1100)에 도 1 내지 도 10, 및 도 12의 설명이 적용될 수 있으며, 보다 상세한 설명은 생략한다.
도 12는 일 실시예에 따른 처리 장치와 관련된 전자 장치를 나타낸다. 도 12은 일 실시예에 따른 전자 장치의 구성을 나타낸다. 전자 장치(1200)는 도 1의 처리 장치(100) 및/또는 도 11의 처리 장치(1100)를 구조적 및/또는 기능적으로 포함할 수 있다. 일 실시예에 따르면, 전자 장치(1200)는 입력 영상을 획득하고, 뉴럴 네트워크를 이용하여 입력 영상과 관련된 동작들(예: 객체 분류, 객체 검출, 객체 추적, 객체 식별, 객체 인식, 사용자 인증 등)을 수행할 수 있다. 예를 들어, 전자 장치(1200)는 입력 영상에 대응하는 입력 특징 맵을 결정하고, 뉴럴 네트워크의 적어도 하나의 레이어를 통해 입력 특징 맵에 관한 출력 특징 맵을 생성하고, 출력 특징 맵에 기초하여 입력 영상에 관한 분류 결과, 검출 결과, 추적 결과, 식별 결과, 인식 결과 및 인증 결과 중 적어도 하나를 생성할 수 있다.
전자 장치(1200)는 프로세서(1210), 메모리(1220), 카메라(1230), 저장 장치(1240), 입력 장치(1250), 출력 장치(1260) 및 네트워크 인터페이스(1270)를 포함할 수 있다. 프로세서(1210), 메모리(1220), 카메라(1230), 저장 장치(1240), 입력 장치(1250), 출력 장치(1260) 및 네트워크 인터페이스(1270)는 통신 버스(1280)를 통해 서로 통신할 수 있다. 예를 들어, 전자 장치(1200)는 이동 전화, 스마트 폰, PDA, 넷북, 태블릿 컴퓨터, 랩톱 컴퓨터 등과 같은 모바일 장치, 스마트 워치, 스마트 밴드, 스마트 안경 등과 같은 웨어러블 디바이스, 데스크탑, 서버 등과 같은 컴퓨팅 장치, 텔레비전, 스마트 텔레비전, 냉장고 등과 같은 가전 제품, 도어 락 등과 같은 보안 장치, 스마트 차량 등과 같은 차량의 적어도 일부로 구현될 수 있다.
프로세서(1210)는 전자 장치(1200) 내에서 실행하기 위한 기능 및 명령어들을 실행한다. 예를 들어, 프로세서(1210)는 메모리(1220) 또는 저장 장치(1240)에 저장된 명령어들을 처리할 수 있다. 프로세서(1210)는 도 1 내지 도 12의 하나 이상의 동작을 수행할 수 있다.
메모리(1220)는 컨볼루션 연산 처리를 위한 데이터를 저장한다. 메모리(1220)는 컴퓨터 판독가능한 저장 매체 또는 컴퓨터 판독가능한 저장 장치를 포함할 수 있다. 메모리(1220)는 프로세서(1210)에 의해 실행하기 위한 명령어들을 저장할 수 있고, 전자 장치(1200)에 의해 소프트웨어 및/또는 애플리케이션이 실행되는 동안 관련 정보를 저장할 수 있다.
카메라(1230)는 시각 정보를 감지하고, 감시된 시각 정보에 기초하여 입력 영상(예: 사진 및/또는 비디오)을 생성할 수 있다. 예를 들어, 카메라(1230)는 사용자(예: 얼굴)를 포함하는 사용자 영상을 생성할 수 있다. 일 실시예에 따르면, 카메라(1230)는 객체들에 관한 깊이 정보를 포함하는 3D 영상을 제공할 수 있다.
저장 장치(1240)는 컴퓨터 판독가능한 저장 매체 또는 컴퓨터 판독가능한 저장 장치를 포함한다. 일 실시예에 따르면, 저장 장치(1240)는 메모리(1220)보다 더 많은 양의 정보를 저장하고, 정보를 장기간 저장할 수 있다. 예를 들어, 저장 장치(1240)는 자기 하드 디스크, 광 디스크, 플래쉬 메모리, 플로피 디스크 또는 이 기술 분야에서 알려진 다른 형태의 비휘발성 메모리를 포함할 수 있다.
입력 장치(1250)는 키보드 및 마우스를 통한 전통적인 입력 방식, 및 터치 입력, 음성 입력, 및 이미지 입력과 같은 새로운 입력 방식을 통해 사용자로부터 입력을 수신할 수 있다. 예를 들어, 입력 장치(1250)는 키보드, 마우스, 터치 스크린, 마이크로폰, 또는 사용자로부터 입력을 검출하고, 검출된 입력을 전자 장치(1200)에 전달할 수 있는 임의의 다른 장치를 포함할 수 있다.
출력 장치(1260)는 시각적, 청각적 또는 촉각적인 채널을 통해 사용자에게 전자 장치(1200)의 출력을 제공할 수 있다. 출력 장치(1260)는 예를 들어, 디스플레이, 터치 스크린, 스피커, 진동 발생 장치 또는 사용자에게 출력을 제공할 수 있는 임의의 다른 장치를 포함할 수 있다. 네트워크 인터페이스(1270)는 유선 또는 무선 네트워크를 통해 외부 장치와 통신할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.

Claims (20)

  1. 프로세서에 의해 구현되는, 뉴럴 네트워크의 레이어에 관한 컨볼루션 연산 처리 방법에 있어서,
    입력 특징 맵의 제1 입력 평면 및 웨이트 커널의 제1 웨이트 평면을 획득하는 단계;
    상기 웨이트 커널의 가능한 웨이트 값들의 적어도 일부에 기초하여, 상기 제1 입력 평면에 관한 중간 연산 결과에 대응하는 기본 평면들을 생성하는 단계;
    상기 제1 입력 평면 및 상기 기본 평면들 중에 상기 제1 웨이트 평면의 웨이트 엘리먼트 값들에 대응하는 적어도 하나의 평면에 기초하여 제1 누적 데이터를 생성하는 단계; 및
    상기 제1 누적 데이터에 기초하여 출력 특징 맵의 제1 출력 평면을 생성하는 단계
    를 포함하는 컨볼루션 연산 처리 방법.
  2. 제1항에 있어서,
    상기 제1 누적 데이터를 생성하는 상기 단계는
    상기 제1 입력 평면 및 상기 기본 평면들 중에 상기 제1 웨이트 평면의 제1 웨이트 엘리먼트의 웨이트 값에 대응하는 제1 대상 평면을 결정하는 단계;
    상기 제1 웨이트 엘리먼트의 오프셋에 기초하여 상기 제1 대상 평면에서 제1 대상 영역을 결정하는 단계; 및
    상기 제1 대상 영역의 대상 엘리먼트들에 기초한 누적 연산을 수행하는 단계
    를 포함하는, 컨볼루션 연산 처리 방법.
  3. 제2항에 있어서,
    상기 제1 대상 영역을 결정하는 단계는
    상기 제1 웨이트 엘리먼트의 상기 오프셋에 기초하여 상기 제1 대상 평면의 서로 다른 영역들을 지시하는 포인터들 중에 상기 제1 대상 영역을 지시하는 제1 포인터가 결정하는 단계를 포함하는,
    컨볼루션 연산 처리 방법.
  4. 제2항에 있어서,
    상기 제1 누적 데이터를 생성하는 상기 단계는
    상기 제1 입력 평면 및 상기 기본 평면들 중에 상기 제1 웨이트 평면의 제2 웨이트 엘리먼트의 웨이트 값에 대응하는 제2 대상 평면을 결정하는 단계;
    상기 제2 웨이트 엘리먼트의 오프셋에 기초하여 상기 제2 대상 평면에서 제2 대상 영역을 결정하는 단계
    를 더 포함하고,
    상기 누적 연산을 수행하는 상기 단계는
    상기 제1 대상 영역의 대상 엘리먼트들과 상기 제2 대상 영역의 대상 엘리먼트들을 엘리먼트 별로 누적하여 상기 제1 누적 데이터를 생성하는 단계를 포함하는,
    컨볼루션 연산 처리 방법.
  5. 제2항에 있어서,
    상기 제1 대상 영역은 SIMD(single instruction multiple data) 연산을 위한 1차원 벡터 데이터에 대응하는,
    컨볼루션 연산 처리 방법.
  6. 제1항에 있어서,
    상기 가능한 웨이트 값들의 수는 상기 웨이트 커널의 비트 정밀도에 기초하여 결정되는,
    컨볼루션 연산 처리 방법.
  7. 제1항에 있어서,
    상기 웨이트 커널의 비트 정밀도는 3-비트 이하인,
    컨볼루션 연산 처리 방법.
  8. 제1항에 있어서,
    상기 제1 입력 평면에 관한 상기 중간 연산 결과는 상기 제1 입력 평면에 관한 곱셈 결과에 대응하고,
    상기 기본 평면들을 생성하는 상기 단계는
    곱셈 연산을 수행하지 않고, 쉬프트 연산 및 덧셈 연산을 통해 상기 곱셈 결과에 대응하는 상기 기본 평면들을 생성하는 단계를 포함하는,
    컨볼루션 연산 처리 방법.
  9. 제1항에 있어서,
    상기 제1 입력 평면 및 상기 제1 웨이트 평면은 복수의 입력 채널들 중 제1 입력 채널에 대응하고,
    상기 제1 출력 평면은 복수의 출력 채널들 중 제1 출력 채널에 대응하는,
    컨볼루션 연산 처리 방법.
  10. 제1항에 있어서,
    상기 컨볼루션 연산 처리 방법은
    상기 입력 특징 맵의 제2 입력 평면 및 상기 웨이트 커널의 제2 웨이트 평면에 기초하여 제2 누적 데이터를 생성하는 단계를 더 포함하고,
    상기 제1 출력 평면을 생성하는 상기 단계는
    상기 제1 누적 데이터 및 상기 제2 누적 데이터를 누적하여 상기 제1 출력 평면을 생성하는 단계를 포함하는,
    컨볼루션 연산 처리 방법.
  11. 제1항 내지 제10항 중 어느 한 항의 방법을 수행하는 명령어들을 포함하는 하나 이상의 프로그램을 저장한 컴퓨터 판독 가능 저장매체.
  12. 뉴럴 네트워크의 레이어에 관한 컨볼루션 연산 처리 장치에 있어서,
    프로세서; 및
    상기 프로세서에서 실행가능한 명령어들을 포함하는 메모리
    를 포함하고,
    상기 명령어들이 상기 프로세서에서 실행되면, 상기 프로세서는
    입력 특징 맵의 제1 입력 평면 및 웨이트 커널의 제1 웨이트 평면을 획득하고,
    상기 웨이트 커널의 가능한 웨이트 값들의 적어도 일부와 상기 제1 입력 평면 간의 중간 연산 결과에 대응하는 기본 평면들을 생성하고,
    상기 제1 입력 평면 및 상기 기본 평면들 중에 상기 제1 웨이트 평면의 웨이트 엘리먼트 값들에 대응하는 적어도 하나의 평면에 기초하여 제1 누적 데이터를 생성하고,
    상기 제1 누적 데이터에 기초하여 출력 특징 맵의 제1 출력 평면을 생성하는,
    컨볼루션 연산 처리 장치.
  13. 제12항에 있어서,
    상기 프로세서는
    상기 제1 입력 평면 및 상기 기본 평면들 중에 상기 제1 웨이트 평면의 제1 웨이트 엘리먼트의 웨이트 값에 대응하는 제1 대상 평면을 결정하고, 상기 제1 웨이트 엘리먼트의 오프셋에 기초하여 상기 제1 대상 평면에서 제1 대상 영역을 결정하고, 상기 제1 대상 영역의 대상 엘리먼트들에 기초한 누적 연산을 수행하여, 상기 제1 누적 데이터를 생성하는,
    컨볼루션 연산 처리 장치.
  14. 제13항에 있어서,
    상기 프로세서는
    상기 제1 웨이트 엘리먼트의 상기 오프셋에 기초하여 상기 제1 대상 평면의 서로 다른 영역들을 지시하는 포인터들 중에 상기 제1 대상 영역을 지시하는 제1 포인터를 결정하여, 상기 제1 대상 영역을 결정하는,
    컨볼루션 연산 처리 장치.
  15. 제12항에 있어서,
    상기 웨이트 커널의 비트 정밀도는 3-비트 이하인,
    컨볼루션 연산 처리 장치.
  16. 제12항에 있어서,
    상기 제1 입력 평면에 관한 상기 중간 연산 결과는 상기 제1 입력 평면에 관한 곱셈 결과에 대응하고,
    상기 프로세서는
    곱셈 연산을 수행하지 않고, 쉬프트 연산 및 덧셈 연산을 통해 상기 곱셈 결과에 대응하는 상기 기본 평면들을 생성하는,
    컨볼루션 연산 처리 장치.
  17. 감지된 시각 정보에 기초하여 입력 영상을 생성하는 카메라; 및
    상기 입력 영상에 대응하는 입력 특징 맵의 제1 입력 평면 및 웨이트 커널의 제1 웨이트 평면을 획득하고,
    상기 웨이트 커널의 가능한 웨이트 값들의 적어도 일부와 상기 제1 입력 평면 간의 중간 연산 결과에 대응하는 기본 평면들을 생성하고,
    상기 제1 입력 평면 및 상기 기본 평면들 중에 상기 제1 웨이트 평면의 웨이트 엘리먼트 값들에 대응하는 적어도 하나의 평면에 기초하여 제1 누적 데이터를 생성하고,
    상기 제1 누적 데이터에 기초하여 출력 특징 맵의 제1 출력 평면을 생성하는 프로세서
    를 포함하는, 전자 장치.
  18. 제17항에 있어서,
    상기 프로세서는
    상기 제1 입력 평면 및 상기 기본 평면들 중에 상기 제1 웨이트 평면의 제1 웨이트 엘리먼트의 웨이트 값에 대응하는 제1 대상 평면을 결정하고, 상기 제1 웨이트 엘리먼트의 오프셋에 기초하여 상기 제1 대상 평면에서 제1 대상 영역을 결정하고, 상기 제1 대상 영역의 대상 엘리먼트들에 기초한 누적 연산을 수행하여, 상기 제1 누적 데이터를 생성하는,
    컨볼루션 연산 처리 장치.
  19. 제18항에 있어서,
    상기 프로세서는
    상기 제1 웨이트 엘리먼트의 상기 오프셋에 기초하여 상기 제1 대상 평면의 서로 다른 영역들을 지시하는 포인터들 중에 상기 제1 대상 영역을 지시하는 제1 포인터를 결정하여, 상기 제1 대상 영역을 결정하는,
    컨볼루션 연산 처리 장치.
  20. 제17항에 있어서,
    상기 제1 입력 평면에 관한 상기 중간 연산 결과는 상기 제1 입력 평면에 관한 곱셈 결과에 대응하고,
    상기 프로세서는
    곱셈 연산을 수행하지 않고, 쉬프트 연산 및 덧셈 연산을 통해 상기 곱셈 결과에 대응하는 상기 기본 평면들을 생성하는,
    컨볼루션 연산 처리 장치.
KR1020200102600A 2020-08-14 2020-08-14 중복성 감축 기반의 컨볼루션 연산 처리 방법 및 장치 KR20220021704A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200102600A KR20220021704A (ko) 2020-08-14 2020-08-14 중복성 감축 기반의 컨볼루션 연산 처리 방법 및 장치
CN202110155909.4A CN114077886A (zh) 2020-08-14 2021-02-04 电子设备、用于识别图像的方法和设备
EP21157634.3A EP3955165A1 (en) 2020-08-14 2021-02-17 Method and apparatus with convolution operation processing based on redundancy reduction
US17/179,781 US20220051084A1 (en) 2020-08-14 2021-02-19 Method and apparatus with convolution operation processing based on redundancy reduction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200102600A KR20220021704A (ko) 2020-08-14 2020-08-14 중복성 감축 기반의 컨볼루션 연산 처리 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20220021704A true KR20220021704A (ko) 2022-02-22

Family

ID=74666597

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200102600A KR20220021704A (ko) 2020-08-14 2020-08-14 중복성 감축 기반의 컨볼루션 연산 처리 방법 및 장치

Country Status (4)

Country Link
US (1) US20220051084A1 (ko)
EP (1) EP3955165A1 (ko)
KR (1) KR20220021704A (ko)
CN (1) CN114077886A (ko)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10699160B2 (en) * 2017-08-23 2020-06-30 Samsung Electronics Co., Ltd. Neural network method and apparatus

Also Published As

Publication number Publication date
EP3955165A1 (en) 2022-02-16
US20220051084A1 (en) 2022-02-17
CN114077886A (zh) 2022-02-22

Similar Documents

Publication Publication Date Title
KR102415508B1 (ko) 컨볼루션 신경망 처리 방법 및 장치
US11640316B2 (en) Compiling and scheduling transactions in neural network processor
US20180181858A1 (en) Convolutional neural network (cnn) processing method and apparatus
CN106855952B (zh) 基于神经网络的计算方法及装置
EP3788555A1 (en) Systems and methods for assigning tasks in a neural network processor
KR20220009126A (ko) 뉴럴 네트워크 연산 처리 장치 및 방법
US11593628B2 (en) Dynamic variable bit width neural processor
KR20220059194A (ko) 대상 객체에 적응적인 객체 추적 방법 및 장치
KR20230069607A (ko) 셀프 어텐션 기반의 영상 인식 방법 및 장치
US11216281B2 (en) Facilitating data processing using SIMD reduction operations across SIMD lanes
JP7114659B2 (ja) ニューラルネットワーク方法及び装置
KR20230108075A (ko) 객체 인식 방법 및 장치
KR20220039313A (ko) 뉴럴 네트워크 연산 처리 방법 및 장치
KR20220021704A (ko) 중복성 감축 기반의 컨볼루션 연산 처리 방법 및 장치
CN110738175A (zh) 人脸图像处理方法、装置、计算机设备和存储介质
US20190095782A1 (en) Calculation device for and calculation method of performing convolution
CN114090466A (zh) 一种指令处理装置、方法、计算机设备及存储介质
JP2022539554A (ja) 高精度のニューラル処理要素
CN113238821A (zh) 数据处理的加速方法、装置、电子设备及存储介质
KR20220114209A (ko) 연사 영상 기반의 영상 복원 방법 및 장치
KR20210112834A (ko) 뉴럴 네트워크 내 레이어에 관한 컨볼루션 연산의 처리 방법 및 장치
CN111626398B (zh) 运算方法、装置及相关产品
CN112988194A (zh) 基于设备信息的程序优化方法、装置、电子设备及存储介质
KR102424538B1 (ko) 영상 복원 방법 및 장치
KR20210019917A (ko) 뉴럴 네트워크를 위한 데이터 처리 방법 및 장치