KR20200023154A - 컨볼루션 뉴럴 네트워크를 처리하는 방법 및 장치 - Google Patents

컨볼루션 뉴럴 네트워크를 처리하는 방법 및 장치 Download PDF

Info

Publication number
KR20200023154A
KR20200023154A KR1020180158379A KR20180158379A KR20200023154A KR 20200023154 A KR20200023154 A KR 20200023154A KR 1020180158379 A KR1020180158379 A KR 1020180158379A KR 20180158379 A KR20180158379 A KR 20180158379A KR 20200023154 A KR20200023154 A KR 20200023154A
Authority
KR
South Korea
Prior art keywords
difference
windows
window
feature map
neural network
Prior art date
Application number
KR1020180158379A
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 US16/549,002 priority Critical patent/US11836971B2/en
Publication of KR20200023154A publication Critical patent/KR20200023154A/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
    • 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
    • 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)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치는, 복수의 로우 윈도우들로부터 차분 윈도우들을 생성하고, 기준 로우 윈도우와 커널간의 컨볼루션 연산 결과 및 차분 윈도우들과 커널간의 컨볼루션 연산 결과들을 이용하여, 출력 피처맵의 엘리먼트들을 획득한다.

Description

컨볼루션 뉴럴 네트워크를 처리하는 방법 및 장치 {Method and apparatus for processing convolution neural network}
컨볼루션 뉴럴 네트워크에서 입력 피처맵과 커널 간의 컨볼루션 연산을 처리하는 방법 및 장치에 관한다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크(neural network) 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크를 활용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다. 뉴럴 네트워크를 처리하는 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 따라서, 뉴럴 네트워크를 이용하여 대량의 입력 데이터를 실시간으로 분석하여, 원하는 정보를 추출하기 위해서는 뉴럴 네트워크에 관한 연산을 효율적으로 처리할 수 있는 기술이 요구된다.
컨볼루션 뉴럴 네트워크를 처리하는 방법 및 장치를 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따르면, 뉴럴 네트워크 프로세싱 장치에서 컨볼루션 뉴럴 네트워크를 처리하는 방법은 입력 피처맵의 복수의 로우(raw) 윈도우들을 차분 연산을 위한 복수의 차분 그룹들(differential groups)로 그룹핑하는 단계, 그룹핑된 복수의 차분 그룹들 각각에 속한 로우 윈도우들 간의 차분 연산을 통해 차분 윈도우들(differential windows)을 생성하는 단계, 로우 윈도우들 중 기준 로우 윈도우와 커널 간의 컨볼루션 연산을 수행함으로써, 기준 로우 윈도우에 대응하는 출력 피처맵의 기준 엘리먼트를 획득하는 단계, 및 차분 윈도우들 각각과 커널 간의 컨볼루션 연산 결과들에 대하여 기준 엘리먼트와 합산 연산을 수행함으로써, 출력 피처맵의 나머지 엘리먼트들을 획득하는 단계를 포함한다.
다른 측면에 따르면, 뉴럴 네트워크 프로세싱 장치는 입력 피처맵이 저장된 메모리, 및 메모리에 저장된 입력 피처맵을 이용하여 컨볼루션 뉴럴 네트워크를 처리하기 위한 뉴럴 네트워크 프로세서를 포함하고, 뉴럴 네트워크 프로세서는, 입력 피처맵의 복수의 로우(raw) 윈도우들을 차분 연산을 위한 복수의 차분 그룹들(differential groups)로 그룹핑하고, 그룹핑된 복수의 차분 그룹들 각각에 속한 로우 윈도우들 간의 차분 연산을 통해 차분 윈도우들(differential windows)을 생성하고, 로우 윈도우들 중 기준 로우 윈도우와 커널 간의 컨볼루션 연산을 수행함으로써, 기준 로우 윈도우에 대응하는 출력 피처맵의 기준 엘리먼트를 획득하고, 차분 윈도우들 각각과 커널 간의 컨볼루션 연산 결과들에 대하여 기준 엘리먼트와 합산 연산을 수행함으로써, 출력 피처맵의 나머지 엘리먼트들을 획득한다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 2a 및 도 2b는 뉴럴 네트워크의 컨볼루션 연산을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 뉴럴 네트워크 프로세싱 장치의 하드웨어 구성을 도시한 블록도이다.
도 4는 일 실시예에 따른 뉴럴 네트워크 프로세싱 장치에서 컨볼루션 뉴럴 네트워크를 처리하는 방법의 흐름도이다.
도 5는 일 실시 예에 따른 입력 피처맵을 도시한 도면이다.
도 6은 일 실시 예에 따른 차분 그룹 및 차분 윈도우를 설명하기 위한 도면이다.
도 7은 일 실시 예에 따른 캐스케이딩 방식의 합산 연산을 설명하기 위한 도면이다.
도 8은 일 실시 예에 따른 차분 윈도우를 이용한 컨볼루션 연산을 설명하기 위한 도면이다.
도 9는 일 실시 예에 따른 뉴럴 네트워크 프로세싱 장치의 구현 예를 도시한 도면이다.
도 10은 일 실시 예에 따른 차분 윈도우 출력부를 설명하기 위한 도면이다.
도 11은 본 개시에 따른 연산 처리 방식의 연산 처리 속도의 향상을 설명하기 위한 그래프이다.
도 12는 본 개시에 따른 연산 처리 방식의 프레임율(Frame Rate)의 향상을 설명하기 위한 그래프이다.
본 실시예들에서 사용되는 용어는 본 실시예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.
실시예들에 대한 설명들에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 도는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
하기 실시예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시예들의 권리범위에 속하는 것으로 해석되어야 할 것이다. 이하 첨부된 도면들을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 1을 참고하면, 뉴럴 네트워크(1)는 딥 뉴럴 네트워크(Deep Neural Network, DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)의 아키텍처일 수 있다. DNN 또는 n-계층 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(Convolutional Neural Networks, CNN), 리커런트 뉴럴 네트워크(Recurrent Neural Networks, RNN), Deep Belief Networks, Restricted Boltzman Machines 등에 해당될 수 있다. 예를 들어, 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크(CNN)로 구현될 수 있으나, 이에 제한되지 않는다. 도 1에서는 뉴럴 네트워크(1)의 예시에 해당하는 컨볼루션 뉴럴 네트워크에서 일부의 컨볼루션 레이어가 도시되었지만, 컨볼루션 뉴럴 네트워크는 도시된 컨볼루션 레이어 외에도, 풀링 레이어(pooling layer), 풀리 커넥티드 레이어(fully connected layer) 등을 더 포함할 수 있다.
뉴럴 네트워크(1)는 입력 이미지, 피처맵들(feature maps) 및 출력을 포함하는 복수 레이어들을 갖는 아키텍처로 구현될 수 있다. 뉴럴 네트워크(1)에서 입력 이미지는 커널(kernel)이라 불리는 필터와의 컨볼루션 연산이 수행되고, 그 결과 피처맵들이 출력된다. 이때 생성된 출력 피처맵들은 입력 피처맵들로서 다시 커널과의 컨볼루션 연산이 수행되고, 새로운 피처맵들이 출력된다. 이와 같은 컨볼루션 연산이 반복적으로 수행된 결과, 최종적으로는 뉴럴 네트워크(1)를 통한 입력 이미지의 특징들에 대한 인식 결과가 출력될 수 있다.
예를 들어, 도 1의 뉴럴 네트워크(1)에 24x24 픽셀 크기의 이미지가 입력된 경우, 입력 이미지는 커널과의 컨볼루션 연산을 통해 20x20 픽셀 크기를 갖는 4채널의 피처맵들로 출력될 수 있다. 이후에도, 20x20 피처맵들은 커널과의 반복적인 컨볼루션 연산을 통해 크기가 줄어들면서, 최종적으로는 1x1 픽셀 크기의 특징들이 출력될 수 있다. 뉴럴 네트워크(1)는 여러 레이어들에서 컨볼루션 연산 및 서브-샘플링(또는 풀링) 연산을 반복적으로 수행함으로써 입력 이미지로부터 이미지 전체를 대표할 수 있는 강인한 특징들을 필터링하여 출력하고, 출력된 최종 특징들을 통해 입력 이미지의 인식 결과를 도출할 수 있다.
도 2a 및 도 2b는 뉴럴 네트워크의 컨볼루션 연산을 설명하기 위한 도면이다.
도 2a의 예시에서, 입력 이미지에 대한 입력 피처맵(210)은 6x6 픽셀 크기이고, 원본 커널(220)은 3x3 픽셀 크기이고, 출력 피처맵(230)은 4x4 픽셀 크기인 것으로 가정하나, 이에 제한되지 않고 뉴럴 네트워크는 다양한 크기의 피처맵들 및 커널들로 구현될 수 있다. 또한, 입력 피처맵(210), 원본 커널(220) 및 출력 피처맵(230)에 정의된 값들은 모두 예시적인 값들일 뿐이고, 본 실시예들은 이에 제한되지 않는다.
원본 커널(220)은 입력 피처맵(210)에서 3x3 픽셀 크기의 윈도우 단위로 슬라이딩하면서(슬라이딩 윈도우 방식(sliding window fashion)) 컨볼루션 연산을 수행한다. 컨볼루션 연산은 입력 피처맵(210)의 어느 윈도우의 각 픽셀 값 및 원본 커널(220)에서 대응 위치의 각 엘리먼트의 웨이트 간의 곱셈을 하여 획득된 값들을 모두 합산하여, 출력 피처맵(230)의 각 픽셀 값을 구하는 연산을 의미한다. 구체적으로, 원본 커널(220)은 먼저 입력 피처맵(210)의 제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윈도우(212)와 원본 커널(220) 간의 컨볼루션 연산이 수행됨으로써 출력 피처맵(230)의 1행2열의 픽셀 값(232)인 4가 결정된다. 최종적으로, 입력 피처맵(210)의 마지막 윈도우인 제16윈도우(213)와 원본 커널(220) 간의 컨볼루션 연산이 수행됨으로써 출력 피처맵(230)의 4행4열의 픽셀 값(233)인 11이 결정된다.
즉, 하나의 입력 피처맵(210)과 하나의 원본 커널(220) 간의 컨볼루션 연산은 입력 피처맵(210) 및 원본 커널(220)에서 서로 대응하는 각 엘리먼트의 값들의 곱셈 및 곱셈 결과들의 합산을 반복적으로 수행함으로써 처리될 수 있고, 컨볼루션 연산의 결과로서 출력 피처맵(230)이 생성된다.
한편, 도 2a에서는 2차원 컨볼루션 연산에 대하여 설명되었으나, 컨볼루션 연산은 복수의 채널들의 입력 피처맵들, 커널들, 출력 피처맵들이 존재하는 3차원 컨볼루션 연산에 해당될 수 있다. 이에 대해서는 도 2b를 참고하여 설명하도록 한다.
도 2b를 참고하면, 입력 피처맵들(201)은 X개의 채널들이 존재하고, 각 채널의 입력 피처맵은 H행 W열의 크기를 가질 수 있다 (X, W, H는 자연수). 커널들(202) 각각은 R행 S열의 크기를 갖고, 커널들(202)은 입력 피처맵들(201)의 채널 수(X) 및 출력 피처맵들(203)의 채널 수(Y)에 대응하는 개수의 채널들을 가질 수 있다 (R, S, Y는 자연수). 출력 피처맵들(203)은 입력 피처맵들(201)과 커널들(202) 간의 3차원 컨볼루션 연산을 통해 생성되고, 컨볼루션 연산에 따라 Y개의 채널들이 존재할 수 있다.
하나의 입력 피처맵과 하나의 커널 간의 컨볼루션 연산을 통해 출력 피처맵이 생성되는 과정은 앞서 도 2a에서 설명된 바와 같으며, 도 2a에서 설명된 2차원 컨볼루션 연산이 전체 채널들의 입력 피처맵들(201)과 전체 채널들의 커널들(202) 간에 반복적으로 수행됨으로써, 전체 채널들의 출력 피처맵들(203)이 생성될 수 있다.
도 3은 일 실시예에 따른 뉴럴 네트워크 프로세싱 장치(300)의 하드웨어 구성을 도시한 블록도이다.
도 3을 참고하면, 뉴럴 네트워크 프로세싱 장치(300)는 뉴럴 네트워크 프로세서(310) 및 메모리(320)를 포함할 수 있다.
도 3에 도시된 뉴럴 네트워크 프로세싱 장치(300)에는 본 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 프로세싱 장치(300)에는 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당해 기술분야의 통상의 기술자에게 자명하다.
뉴럴 네트워크 프로세서(310)는 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
또한, 메모리(320)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리를 포함할 수 있다.
뉴럴 네트워크 프로세싱 장치(300)는 뉴럴 네트워크 장치에 포함되어, 뉴럴 네트워크를 구동하기 위한 전반적인 기능들을 제어하는 역할을 한다. 예를 들어, 뉴럴 네트워크 프로세싱 장치(300) 뉴럴 네트워크 장치의 입력 피처맵으로부터 출력 피처맵을 추출하는 연산 처리 과정을 제어할 수 있다.
여기서, 뉴럴 네트워크 장치는 PC(personal computer), 서버 디바이스, 모바일 디바이스, 임베디드 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있고, 구체적인 예로서 뉴럴 네트워크를 이용한 음성 인식, 영상 인식, 영상 분류 등을 수행하는 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스, 자율주행 자동차, 로보틱스, 의료기기 등에 해당될 수 있으나, 이에 제한되지 않는다. 나아가서, 뉴럴 네트워크 프로세싱 장치(300)는 위와 같은 디바이스에 탑재되는 전용 하드웨어 가속기(HW accelerator)에 해당될 수 있고, 뉴럴 네트워크 장치는 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등과 같은 하드웨어 가속기일 수 있으나, 이에 제한되지 않는다.
뉴럴 네트워크 장치는 뉴럴 네트워크 프로세싱 장치(300) 및 외부 메모리를 포함할 수 있다. 뉴럴 네트워크 프로세서(310) 및 메모리(320)를 포함하는 뉴럴 네트워크 프로세싱 장치(300)는 단일 칩으로 구현될 수 있으며, 이 경우 뉴럴 네트워크 프로세싱 장치(300)에 포함된 메모리(320)는 온-칩(on-chip) 메모리이며, 외부 메모리는 오프-칩(off-chip) 메모리이다.
칩의 크기 등을 줄이기 위하여, 뉴럴 네트워크 프로세싱 장치(300)에 포함된 메모리(320)는 외부 메모리에 비해 상대적으로 적은 용량을 가질 수 있다.
상대적으로 큰 용량을 가진 오프-칩 메모리 모든 입력 피처맵과 커널의 웨이트 값들 및 출력 피처맵 등을 저장할 수 있다. 뉴럴 네트워크 프로세싱 장치(300)는 외부 메모리에 엑세스(access)하여 연산에 필요한 데이터를 획득하고, 획득된 데이터를 온-칩 메모리인 메모리(320)에 저장할 수 있다. 또한, 뉴럴 네트워크 프로세싱 장치(300)는 출력 피처맵을 생성하기 위한 중간 연산 결과 및 출력 피처맵의 일부를 온-칩 메모리인 메모리(320)에 저장할 수 있다.
온-칩 메모리(320)의 크기가 감소할수록 칩의 크기를 줄일 수 있으나, 오프-칩 메모리에 엑세스 빈도가 증가함에 따라 트래픽이 증가할 수 있다. 따라서, 온-칩 메모리(320)의 용량을 고려하여 중간 연산 결과의 데이터 용량을 감소시키고, 연산 처리 과정에서 발생하는 트래픽을 줄이기 위해 오프-칩 메모리에 엑세스 빈도를 감소시킬 필요가 있다.
뉴럴 네트워크 프로세서(310)는 메모리(320)에 저장된(또는 버퍼링된) 입력 피처맵들의 엘리먼트(element)들, 커널들의 웨이트들 등을 이용하여 입력 피처맵 및 커널 간의 컨볼루션 연산을 처리한다. 이 때, 입력 피처맵은 이미지 데이터에 관한 것을 수 있고, 입력 피처맵의 엘리먼트는 픽셀을 나타낼 수 있으나 이에 제한되지 아니한다.
뉴럴 네트워크 프로세싱 장치(300) 내에서 뉴럴 네트워크 프로세서(310) 및 메모리(320) 각각은 하나 이상씩 구비될 수 있으며, 뉴럴 네트워크 프로세서(310) 및 메모리(320) 각각은 병렬적으로, 독립적으로 컨볼루션 연산을 처리하는데 이용됨으로써 컨볼루션 연산이 효율적으로 처리될 수 있다.
뉴럴 네트워크 프로세서(310) 내에는 컨볼루션 연산을 위한 컨볼루션 연산기(convolution operator)를 구현한 로직 회로가 구비될 수 있다. 컨볼루션 연산기는 시프터(shifter) 또는 곱셈기(multiplier), 덧셈기(adder) 및 누산기(accumulator) 등의 조합으로 구현된 연산기이다. 컨볼루션 연산기 내에서 시프터, 곱셈기 및 덧셈기 각각은 다수의 서브-시프터들, 서브-곱셈기들 및 서브 덤셈기들 각각의 조합으로 구현될 수 있다.
뉴럴 네트워크 프로세서(310)는 입력 피처맵의 복수의 로우(raw) 윈도우들을 차분 연산을 위한 복수의 차분 그룹들(differential groups)로 그룹핑할 수 있다.
윈도우는 피처맵보다 작은 단위의 서브-피처맵을 나타낸다. 예를 들어 입력 피처맵의 복수의 윈도우들 각각은 입력 피처맵을 구성하는 복수의 엘리먼트들 중 일부의 엘리먼트들로 구성될 수 있다.
복수의 윈도우들 각각은 입력 피처맵의 엘리먼트들 중 일부를 중첩적으로 포함할 수 있다. 예를 들어, 입력 피처맵은 엘리먼트들이 다차원 공간에 배열된 블록 데이터일 수 있고, 다차원 공간상에 인접한 두 개의 윈도우들은 입력 피처맵의 일부 엘리먼트들을 중첩적으로 포함할 수 있다. 다른 일 예로서, 복수의 윈도우들은 상호간 중첩되지 않을 수 있다.
입력 피처맵의 다차원 공간은 공간적으로 인접한 엘리먼트들간의 관련성이 높도록 결정될 수 있다. 예를 들어, 입력 피처맵의 다차원 공간에서 인접한 엘리먼트들은 유사한 값을 가질 수 있다. 따라서, 입력 피처맵의 다차원 공간은 입력 피처맵의 종류에 따라 달리 결정될 수 있다. 예를 들어, 입력 피처맵이 이미지 데이터에 관한 것이라면 다차원 공간은 이미지 데이터의 픽셀 공간을 나타낼 수 있다.
로우(raw) 윈도우들은 차분(raw) 윈도우와 달리 윈도우들간의 차분 연산이 수행되지 않은 윈도우를 나타낸다
뉴럴 네트워크 프로세서(310)는 슬라이딩 윈도우 방식(sliding window fashion)에 따라 복수의 로우 윈도우들을 결정할 수 있다. 슬라이딩 윈도우 방식은 미리 결정된 크기 및 모양인, 즉, 미리 결정된 셰이프(shapes)를 가지는 슬라이딩 윈도우가 일정한 슬라이딩 간격으로 입력 피처맵을 슬라이딩하여 복수의 윈도우들을 결정하는 방식이다. 예를 들어, 복수의 슬라이딩 위치들 각각에서 슬라이딩 윈도우의 셰이프에 따라 구획되는 입력 피처맵의 엘리먼트들을 스캐닝함으로써, 복수의 윈도우들 각각이 결정될 수 있다. 이 때, 슬라이딩 방향은 입력 피처맵의 다차원 공간에서 복수의 윈도우들간의 공간적 방향성을 나타낼 수 있다. 그러나, 슬라이딩 방향은 복수의 윈도우들이 결정되거나 획득되는 시간적 선후를 나타내지 않는다. 예를 들어, 슬라이딩 방향으로 선행하는 위치의 윈도우와 후행하는 위치의 윈도우들은 동시적으로 결정되거나 획득될 수 있다.
입력 피처맵의 복수의 윈도우들의 크기 및 모양인 셰이프는 슬라이딩 윈도우의 셰이프에 따라 결정될 수 있다. 예를 들어, 입력 피처맵은 상호간 직교하는 행방향(또는 길이 방향)의 축, 열방향(또는 너비 방향)의 측, 및 깊이 방향의 축으로 정의되는 3차원 공간에 배열된 3차원 블록일 수 있다. 슬라이딩 윈도우가 입력 피처맵의 열방향 및 행방향으로 소정의 크기를 가지는 사각형 셰이프인 경우, 복수의 윈도우들은 열방향 및 행방향으로 슬라이딩 윈도우와 동일한 크기를 가지고, 사각형 형상의 셰이프를 가지는 서브 블록들일 수 있다. 이 때, 슬라이딩 윈도우의 셰이프는 복수의 윈도우들의 깊이 방향의 크기는 결정하지 않는다. 복수의 윈도우들의 깊이 방향의 크기는 입력 피처맵의 깊이 방향의 크기와 동일할 수 있다.
뉴럴 네트워크 프로세서(310)는 입력 피처맵의 복수의 윈도우들을 차분 연산이 수행되는 단위의 복수의 차분 그룹들로 그룹핑(Grouping)할 수 있다. 예를 들어, 뉴럴 네트워크 프로세서(310)는 복수의 윈도우들을 인접한 두 개의 윈도우들로 구성된 차분 그룹들로 그룹핑할 수 있다. 이 때, 차분 그룹은 차분 대상 윈도우(differential subject windows)와 차분 대상 윈도우로부터 차분되는 차분 기준 윈도우(differential reference windows)로 구성될 수 있다. 차분 대상 윈도우는 슬라이딩 방향으로 후행하는 윈도우이며, 차분 기준 윈도우는 차분 대상 윈도우에 대하여 슬라이딩 방향으로 선행하는 윈도우일 수 있다.
서로 다른 두 개의 차분 그룹들 중 하나의 차분 그룹에 속한 차분 대상 윈도우는 다른 차분 그룹에 속한 차분 기준 윈도우와 동일한 윈도우일 수 있다. 예를 들어, 슬라이딩 방향으로 인접하여 배치되는 3 개의 윈도우들인, 선행 윈도우와 중간 윈도우 및 후행 윈도우에 대하여, 두 개의 차분 그룹이 정의될 수 있다. 이 때, 선행 윈도우와 중간 윈도우로 구성된 차분 그룹에서 차분 대상 윈도우인 중간 윈도우는 중간 윈도우와 후행 윈도우로 구성된 다음 차분 그룹의 차분 기준 윈도우일 수 있다.
뉴럴 네트워크 프로세서(310)는 그룹핑된 복수의 차분 그룹들 각각에 속한 로우 윈도우들 간의 차분 연산을 통해 차분 윈도우들(differential windows)을 생성할 수 있다.
뉴럴 네트워크 프로세서(310)는 그룹핑된 복수의 차분 그룹들 각각에 속한 차분 기준 윈도우와 차분 대상 윈도우간의 엘리먼트 단위(element-wise)의 차분 연산을 통해 차분 윈도우들 각각을 생성할 수 있다. 예를 들어, 뉴럴 네트워크 프로세서(310)는 동일한 셰이프를 가지는 차분 대상 윈도우와 차분 기준 윈도우들 각각의 대응하는 위치의 두 엘리먼트들간의 차분 연산을 수행하여, 차분 윈도우를 획득할 수 있다. 따라서, 차분 윈도우의 셰이프는 차분 대상 윈도우 및 차분 기준 윈도우의 셰이프와 동일하다. 뉴럴 네트워크 프로세서(310)는 차분 그룹들의 차분 대상 윈도우들 각각에 대응하는 차분 윈도우들 각각을 생성할 수 있다.
뉴럴 네트워크 프로세서(310)는 로우 윈도우들 중 기준 로우 윈도우와 커널 간의 컨볼루션 연산을 수행함으로써, 기준 로우 윈도우에 대응하는 출력 피처맵의 기준 엘리먼트를 획득할 수 있다.
뉴럴 네트워크 프로세서(310)는 복수의 윈도우들 중 적어도 하나의 기준 로우 윈도우를 결정할 수 있다. 예를 들어, 뉴럴 네트워크 프로세서(310)는 복수의 윈도우들을 복수의 캐스케이딩 그룹들로 그룹핑할 수 있다. 복수의 캐스케이딩 그룹 내에 윈도우들 각각은 캐스케이딩 그룹 내의 적어도 하나의 다른 윈도우와 인접할 수 있다.
뉴럴 네트워크 프로세서(310)는 복수의 캐스케이딩 그룹들 각각에서 기준 윈도우를 결정할 수 있다. 뉴럴 네트워크 프로세서(310)는 기준 로우 윈도우와 커널간의 컨볼루션 연산을 수행하여, 기준 로우 윈도우에 대응하는 출력 피처맵의 기준 엘리먼트를 획득할 수 있다. 출력 피처맵의 기준 엘리먼트는 차분 윈도우와 독립적으로 기준 로우 윈도우와 커널간의 컨볼루션 연산 결과로부터 직접 획득된다.
뉴럴 네트워크 프로세서(310)는 차분 윈도우들 각각과 커널 간의 컨볼루션 연산 결과들에 대하여 출력 피처맵의 기준 엘리먼트와 합산 연산을 수행하여 출력 피처맵의 나머지 엘리먼트들을 획득할 수 있다.
뉴럴 네트워크 프로세서(310)는 복수의 차분 그룹들에 대응하는 복수의 차분 윈도우들 각각과 커널간의 컨볼루션 연산을 수행할 수 있다. 또한, 뉴럴 네트워크 프로세서(310)는 차분 윈도우들 각각과 커널 간의 컨볼루션 연산 결과들의 캐스케이딩 방식(cascading)의 합산 결과에 대하여 기준 엘리먼트와 합산 연산을 수행함으로써, 출력 피처맵의 나머지 엘리먼트들을 획득할 수 있다. 따라서, 뉴럴 네트워크 프로세서(310)는, 복수의 차분 그룹들 각각의 차분 대상 윈도우들 각각에 대응하는 출력 피처맵의 나머지 엘리먼트들을 획득하기 위하여, 로우 윈도우들, 즉, 차분 대상 윈도우들 각각과 커널간의 컨볼루션 연산을 수행할 필요가 없다.
차분 대상 윈도우와 차분 기준 윈도우의 대응하는 위치에서 엘리먼트들간의 유사성에 따라, 차분 윈도우의 엘리먼트들은 로우 윈도우의 엘리먼트들보다 상대적으로 작은 값을 가지므로, 상대적으로 적은 용량의 메모리를 이용하여 차분 윈도우를 저장할 수 있다.
또한, 뉴럴 네트워크 프로세서(310)는 차분 윈도들 각각과 커널간의 컨볼루션 연산 속도를 증가시키기 위하여, 차분 윈도우들의 데이터 포맷을 변환할 수 있다. 예를 들어, 뉴럴 네트워크 프로세서(310)는 차분 윈도우들 각각이 비트 데이터 포맷인 경우, 차분 윈도우들 각각을 비트 값이 1을 나타내는 유효 비트의 자릿수에 대한 정보를 포함하는 데이터 포맷으로 변환할 수 있다. 또한, 뉴럴 네트워크 프로세서(310)는 데이터 포맷을 변환하기 위한 전 처리로서, 유효 비트의 개수를 감소시키기 위한 부스 알고리즘(booth algorithm)에 따라, 차분 윈도우들을 전처리 할 수 있다. 뉴럴 네트워크 프로세서(310)는 변환된 차분 윈도우들 각각의 유효 비트의 자릿수에 대한 정보에 기초하여 비트-시프트 연산을 수행하고, 이로부터 차분 윈도우와 커널간의 컨볼루션 연산 결과를 산출할 수 있다. 컨볼루션 연산 결과를 산출함에 있어서, 상대적으로 적은 정보량을 가지는 데이터 포맷으로 변환을 수행하고, 연산 처리의 부하가 적은 시프트 연산을 이용함으로써 메모리 용량을 줄이고 연산 처리 속도가 증가될 수 있다.
도 4는 일 실시예에 따른 뉴럴 네트워크 프로세싱 장치에서 컨볼루션 뉴럴 네트워크를 처리하는 방법의 흐름도이다.
도 4에 도시된, 컨볼루션 뉴럴 네트워크의 처리 방법은, 앞서 설명된 도면들에서 설명된 뉴럴 네트워크 프로세싱 장치(도 3의 300)에 의해 수행될 수 있으므로, 이하 생략된 내용이라 할지라도, 앞서 도면들에서 설명된 내용들은 도 4의 방법에도 적용될 수 있다.
단계 410에서, 뉴럴 네트워크 프로세싱 장치(300)는 입력 피처맵의 복수의 로우(raw) 윈도우들을 차분 연산을 위한 복수의 차분 그룹들(differential groups)로 그룹핑할 수 있다.
뉴럴 네트워크 프로세싱 장치(300)는 슬라이딩 윈도우 방식에 따라 복수의 로우 윈도우들을 결정할 수 있다.
뉴럴 네트워크 프로세싱 장치(300)는 입력 피처맵의 복수의 윈도우들을 차분 연산이 수행되는 단위의 복수의 차분 그룹들로 그룹핑할 수 있다. 예를 들어, 뉴럴 네트워크 프로세싱 장치(300)는 복수의 윈도우들을 인접한 두 개의 윈도우들로 구성된 차분 그룹들로 그룹핑할 수 있다
단계 420에서, 뉴럴 네트워크 프로세싱 장치(300)는 그룹핑된 복수의 차분 그룹들 각각에 속한 로우 윈도우들 간의 차분 연산을 통해 차분 윈도우들을 생성할 수 있다.
뉴럴 네트워크 프로세싱 장치(300)는 그룹핑된 복수의 차분 그룹들 각각에 속한 차분 기준 윈도우와 차분 대상 윈도우간의 엘리먼트 단위(element-wise) 차분 연산을 통해 차분 윈도우들 각각을 생성할 수 있다. 예를 들어, 뉴럴 네트워크 프로세싱 장치(300)는 동일한 셰이프를 가지는 차분 대상 윈도우와 차분 기준 윈도우들 각각에 대응하는 위치의 두 엘리먼트들간의 차분 연산을 수행하여, 차분 윈도우를 획득할 수 있다. 이에 따라, 뉴럴 네트워크 프로세싱 장치(300)는 차분 그룹들 각각에 대하여, 차분 대상 윈도우에 대응하는 차분 윈도우들 각각을 생성할 수 있다.
단계 430에서, 뉴럴 네트워크 프로세싱 장치(300)는 로우 윈도우들 중 기준 로우 윈도우와 커널 간의 컨볼루션 연산을 수행함으로써, 기준 로우 윈도우에 대응하는 출력 피처맵의 기준 엘리먼트를 획득할 수 있다.
뉴럴 네트워크 프로세싱 장치(300)는 복수의 윈도우들 중 적어도 하나의 기준 로우 윈도우를 결정할 수 있다. 예를 들어, 뉴럴 네트워크 프로세싱 장치(300)는 복수의 윈도우들을 복수의 캐스케이딩 그룹들로 그룹핑할 수 있다. 복수의 캐스케이딩 그룹 내에 윈도우들은 각각은 캐스케이딩 그룹 내의 적어도 하나의 다른 윈도우와 인접할 수 있다. 또한, 뉴럴 네트워크 프로세싱 장치(300)는 복수의 캐스케이딩 그룹들 각각에서 기준 윈도우를 결정할 수 있다.
뉴럴 네트워크 프로세싱 장치(300)는 기준 로우 윈도우의 엘리먼트와 대응하는 위치의 커널의 엘리먼트간의 컨볼루션 연산을 수행하여, 기준 로우 윈도우에 대응하는 출력 피처맵의 기준 엘리먼트를 획득할 수 있다.
단계 440에서, 뉴럴 네트워크 프로세싱 장치(300)는 차분 윈도우들 각각과 커널 간의 컨볼루션 연산 결과들에 대하여 기준 엘리먼트와 합산 연산을 수행하여 출력 피처맵의 나머지 엘리먼트들을 획득할 수 있다.
뉴럴 네트워크 프로세싱 장치(300)는 복수의 차분 그룹들에 대응하는 복수의 차분 윈도우들 각각과 커널간의 컨볼루션 연산을 수행할 수 있다. 또한, 뉴럴 네트워크 프로세싱 장치(300)는 차분 윈도우들 각각과 커널 간의 컨볼루션 연산 결과들의 캐스케이딩 방식(cascading)의 합산 결과에 대하여 기준 엘리먼트와 합산 연산을 수행함으로써, 출력 피처맵의 나머지 엘리먼트들을 획득할 수 있다.
또한, 뉴럴 네트워크 프로세싱 장치(300)는 차분 윈도우들의 데이터 포맷을 변환할 수 있다. 예를 들어, 뉴럴 네트워크 프로세싱 장치(300)는 차분 윈도우들 각각이 비트 데이터 포맷인 경우, 차분 윈도우들 각각에 대하여 비트 값이 1을 나타내는 유효 비트의 자릿수에 대한 정보를 포함하는 데이터 포맷으로 변환을 수행할 수 있다. 또한, 뉴럴 네트워크 프로세싱 장치(300)는 데이터 포맷을 변환하기 위한 전 처리로서, 유효 비트 수를 감소시키기 위한 부스 알고리즘(booth algorithm)에 따라, 차분 윈도우를 전처리 할 수 있다. 뉴럴 네트워크 프로세싱 장치(300)는 변환된 차분 윈도우들 각각의 유효 비트의 자릿수에 대한 정보에 기초하여 비트-시프트 연산 결과에 기초하여, 차분 윈도우와 커널간의 컨볼루션 연산 결과를 산출할 수 있다.
도 5는 일 실시 예에 따른 입력 피처맵(500)을 도시한 도면이다.
도 5에서, 입력 피처맵(500)이 2차원 어레이 데이터인 실시 예가 도시되어 있으나, 입력 피처맵(500)은 3차원 블록 데이터 또는 다른 다양한 형태의 데이터일 수 있으며 본 실시 예에 제한되지 않는다.
도 5를 참조하면, 입력 피처맵(500)은 행방향과 열방향으로 7x6 엘리먼트 크기를 가지는 2차원 어레이 데이터이다. 입력 피처맵(500)은 7X6=42 개의 엘리먼트들로 구성된다. 입력 피처맵(500)이 이미지 데이터에 관한 것인 경우, 엘리먼트들 각각은 픽셀에 대응할 수 있다.
도 5에서, 입력 피처맵(500)의 엘리먼트들 각각은 행을 나타내는 인덱스와 열을 나타내는 인덱스의 조합으로 표현되었다. 예를 들어, 입력 피처맵(500)의 3행2열의 엘리먼트는 X32로 나타낸다.
도 5에서, 입력 피처맵(500)의 로우 윈도우들을 결정하기 위한 슬라이딩 윈도우(510)가 도시된다. 슬라이딩 윈도우 방식에 따라, 슬라이딩 윈도우(510)는 소정의 개수의 엘리먼트 간격으로 입력 피처맵(500)을 슬라이딩 하며, 로우 윈도우들을 추출한다. 본 실시예들에서 달리 차분 윈도우라 지칭하지 않는 경우, 윈도우는 차분 윈도우와 구별되는 로우 윈도우를 나타낸다.
도 5에서, 슬라이딩 윈도우(510)는 행방향과 열방향으로 3X3 엘리먼트 크기를 가진다. 따라서, 입력 피처맵(500)의 윈도우들 각각은 슬라이딩 윈도우의 크기와 동일한 3X3 엘리먼트 크기의 2차원 어레이 데이터이다.
이하 도 6 및 도 7의 실시 예는 도 5의 입력 피처맵(500) 및 슬라이딩 윈도우(510)에 대응하여 결정된 윈도우들에 관한 것이다. 슬라이딩 윈도우(510)는 입력 피처맵을 열 방향으로 1 개의 엘리먼트 간격으로 이동하며, 동일한 행에 속하는 윈도우들을 결정한다. 또한, 슬라이딩 윈도우(510)는 행 방향으로 1 개의 엘리먼트 간격으로 이동하며, 다음 행에 속하는 윈도우들을 결정한다. 이와 같은 방식으로 입력 피처맵으로부터 5X4=20개의 윈도우들이 결정된다.
도 6은 일 실시 예에 따른 차분 그룹 및 차분 윈도우를 설명하기 위한 도면이다.
도 6은 동일한 행에 속하는 4 개의 윈도우들(윈도우11, 윈도우12, 윈도우13, 윈도우14)과 4 개의 윈도우들 중 인접한 2 개의 윈도우들로 구성되는 3 개의 차분 그룹들(차분 그룹11, 차분 그룹12, 차분 그룹13)을 도시한다.
상기 도 5에 도시된 슬라이딩 윈도우가 슬라이딩하는 열 방향에 따라, 윈도우11 및 윈도우12, 윈도우12 및 윈도우13, 그리고 윈도우13 및 윈도우14는 상호간 인접한 윈도우들이며 각각 서로 다른 차분 그룹을 구성한다.
차분 그룹 중 차분 방향으로 선행하는 윈도우는 차분 기준이 되는 윈도우며, 후행하는 윈도우는 차분 대상이 되는 윈도우로서, 차분 대상 윈도우로부터 차분 기준 윈도우를 차분하여 차분 윈도우가 생성된다.
예를 들어, 차분 그룹12에서, 후행하는 윈도우13으로부터 선행하는 윈도우12를 차분하여, 차분 윈도우13이 생성된다.
이 때, 윈도우들간의 차분 연산은 엘리먼트 단위로 수행된다. 예를 들어, 차분 윈도우13은 윈도우13과 윈도우12의 대응하는 위치의 엘리먼트들간의 차분 연산을 통해 생성된다. 예를 들어, 차분 윈도우13의 2행2열의 엘리먼트는 X24-X23으로서, 대응하는 위치인 윈도우13의 2행2열의 엘리먼트 X24로부터 윈도우12의 엘리먼트 X23을 차분하여 획득된다.
로우 윈도우들, 차분 그룹들 및 차분 윈도우들간의 대응 관계와 관련하여, 차분 그룹들 각각의 차분 대상 윈도우인 후행하는 로우 윈도우들 각각은 차분 윈도우들 각각과 대응한다. 예를 들어, 차분 그룹11의 차분 대상 윈도우인 로우 윈도우12는 차분 윈도우12에 대응하며, 차분 그룹12의 로우 윈도우13은 차분 윈도우13에 대응된다. 또한, 차분 윈도우들 각각과 커널간의 컨볼루션 연산 결과, 출력 피처맵의 서로 다른 엘리먼트들이 생성된다. 따라서, 로우 윈도우인 차분 대상 윈도우, 차분 윈도우 및 출력 피처맵의 엘리먼트는 대응 관계를 가진다.
도 6에서, 로우 윈도우인 윈도우11에 대응하는 차분 윈도우는 도시되지 않는다. 이는, 도 7에서 설명하는 바와 같이 윈도우11은 기준 윈도우로서, 별도의 차분 윈도우를 이용하지 않고, 윈도우11 자체와 커널간의 컨볼루션 연산을 수행하여 대응하는 출력 피처맵의 기준 엘리먼트가 획득되기 때문이다. 따라서, 차분 그룹을 그룹핑함에 있어서, 기준 윈도우인 윈도우 11을 차분 대상 윈도우로 포함하는 차분 그룹이 요구되지 않는다.
도 7은 일 실시 예에 따른 캐스케이딩 방식의 합산 연산을 설명하기 위한 도면이다.
도 7에서, 커널은 3X3 엘리먼트 크기를 가지는 가중치들의 2차원 어레이 데이터이다. 커널은 윈도우11, 차분 윈도우12, 차분 윈도우13 및 차분 윈도우14 각각과 컨볼루션 연산이 수행된다.
출력 피처맵의 엘리먼트들을 나타내는 O11, O12, O13 및 O14는 출력 피처맵의 서로 다른 엘리먼트들을 나타내며, 각각 윈도우11, 차분 윈도우12, 차분 윈도우13 및 차분 윈도우14에 대응한다. 도 6에서 상술한 바와 같이 로우 윈도우인 차분 대상 윈도우와 차분 윈도우는 대응관계를 가지므로, 출력 피처맵의 엘리먼트들 O11, O12, O13 및 O14 각각은 윈도우11, 윈도우12, 윈도우13 및 윈도우14 각각에 대응한다.
도 7을 참조하면, 윈도우11에 대응하는 출력 피처맵의 기준 엘리먼트(reference element) O11은 윈도우11과 커널간의 컨볼루션 결과로부터 직접 산출된다. 이와 달리, 출력 피처맵의 나머지 엘리먼트들 O12, O13 및 O14는 출력 피처맵의 기준 엘리먼트 O11과 차분 윈도우들 및 커널간의 컨볼루션 결과들을 캐스케이딩 방식으로 합산하여 산출된다. 예를 들어, 차분 윈도우13에 대응하는 출력 피처맵의 엘리먼트 O13은 기준 엘리먼트 O11에 차분 윈도우12와 커널간의 컨볼루션 연산 결과인 dO12를 합산하고, 합산 결과에 차분 윈도우13과 커널간의 컨볼루션 연산 결과인 dO13을 캐스케이딩 방식으로 합산하여 산출된다.
도 8은 일 실시 예에 따른 차분 윈도우를 이용한 컨볼루션 연산을 설명하기 위한 도면이다.
윈도우0, 윈도우1 및 윈도우2는 로우 윈도우를 나타내며, 차분 윈도우1는 윈도우1로부터 윈도우0을 차분한 윈도우1의 차분 윈도우를 나타내고, 차분 윈도우2는 윈도우2로부터 윈도우1을 차분한 윈도우2의 차분 윈도우를 나타낸다.
도 8에서, 로우 윈도우들 윈도우0, 윈도우1 및 윈도우2, 차분 윈도우들 차분 윈도우1, 차분 윈도우2 및 커널은 모두 2x2 엘리먼트 크기를 가진 2차원 어레이 데이터이다.
일반적인 컨볼루션 연산 처리에서는, 로우 윈도우들 각각과 커널간의 컨볼루션 연산을 수행하여, 출력 피처맵의 엘리먼트들 각각이 산출된다. 예를 들어, 윈도우1의 엘리먼트들 47, 47, 49, 50 각각과 커널의 대응하는 위치의 엘리먼트들 2, 1, 3, 2 각각 간의 곱셈 결과들 47x2, 47x1, 49x3, 50x2를 합하여 윈도우 1에 대응하는 출력 피처맵의 엘리먼트 388이 산출된다.
이와 달리, 차분 윈도우를 이용한 컨볼루션 방식에서는, 로우 윈도우들 중 기준 윈도우인 윈도우0만 커널과 직접 컨볼루션 연산이 수행된다. 예를 들어, 윈도우 1에 대응하는 출력 피처맵의 엘리먼트를 산출하기 위해 차분 윈도우1과 커널간의 컨볼루션 연산 결과를 윈도우 0과 커널간의 컨볼루션 연산 결과인 373(903)에 합산하여 산출된다.
우선, 차분 윈도우1은 윈도우 1의 엘리먼트들 47, 47, 49, 50 각각으로부터 인접한 윈도우 0의 엘리먼트들 45, 47, 46, 49 각각을 차분하여, 차분 윈도우1의 엘리먼트들 2, 0, 3, 1 각각이 산출된다. 또한, 차분 윈도우1의 엘리먼트들 2, 0, 3, 1 각각과 커널의 대응하는 위치의 엘리먼트들 2, 1, 3, 2 각각 간의 곱셈 결과들 2x2, 0x1, 3x3, 1x2를 합산하여 차분 윈도우1과 커널간의 컨볼루션 연산 결과 15(904)가 산출된다. 동일한 방식으로, 차분 윈도우2의 엘리먼트들로부터 인접한 차분 윈도우1의 대응하는 위치의 엘리먼트들 각각을 차분하여, 차분 윈도우 2의 엘리먼트들 0, -1, 1, -2 각각이 산출되며, 차분 윈도우2와 커널간의 컨볼루션 연산 결과 -2가 산출된다.
윈도우1에 대응하는 출력 피처맵의 엘리먼트는 기준 윈도우인 윈도우 1에 대응하는 출력 피처맵의 엘리먼트 373(903)에 차분 윈도우 1과 커널간의 컨볼루션 연산 결과 15(904)를 합산한 388(905)으로 산출된다. 이는, 일반적인 컨볼루션 연산을 이용하여 산출된 윈도우 1에 대응하는 출력 피처맵의 엘리먼트 388(902)와 동일하다.
또한, 윈도우2에 대응하는 출력 피처맵의 엘리먼트는, 기준 윈도우1에 대응하는 출력 피처맵의 엘리먼트 373(903)와 차분 윈도우1과 커널간의 컨볼루션 연산 결과 15(904)를 합산한 결과에, 연쇄적으로 차분 윈도우2와 커널간의 컨볼루션 연산 결과인 -2를 합산하는 캐스케이딩 방식의 합산 결과인 386으로 산출된다.
도 9는 일 실시 예에 따른 뉴럴 네트워크 프로세싱 장치의 구현 예를 도시한 도면이다.
도 9에서 뉴럴 네트워크 프로세싱 장치는 입력 피처맵이 저장된 복수의 입력 피처맵 메모리(Input feature map Memory)들(1200, 1201, 1215), 커널의 가중치들이 저장된 가중치 메모리(1300), 컨볼루션 연산을 수행하는 복수의 컨볼루션 유닛(Convolution Unit: CU)들(1100, 1115) 및 차분 윈도우를 이용한 컨볼루션 연산 결과로부터 출력 피처맵의 엘리먼트를 산출하기 위하여 캐스케이딩 방식의 합산 연산을 수행하는 차분 연산 복원 유닛(Differential reconstruction Unit: DU)들을 포함할 수 있다.
복수의 입력 피처맵 메모리들(1200, 1201, 1215) 각각에는 서로 다른 로우 윈도우들 또는 차분 윈도우들 각각이 저장될 수 있다.
또한, 미리 결정된 개수의 CU들(1100, 1115)이 하나의 열(column)로 그룹핑될 수 있다. 서로 다른 Column들 각각은 출력 피처맵의 서로 다른 열들 각각에 대응될 수 있다. 예를 들어, 출력 피처맵의 열 방향의 크기가 16인 경우, Column0, Column1 및 Column15는 출력 피처맵의 16 개의 열들 각각에 대응될 수 있다. 그러나, Column0 내지 Column15는 IM0(1200), IM1(1201) 내지 IM15(1215) 각각으로부터 입력 데이터 ABin을 입력받아, 병렬적으로 데이터를 처리하기 위한 다양한 방식으로 그룹핑될 수 있으며 본 실시예에 따른 그룹핑 방식에 제한되지 아니한다. 도 9에서, 대응 관계를 나타내기 위해 IM의 인덱스와 Column의 인덱스 및 CU의 괄호 인덱스의 두 번째 인덱스는 모두 동일하게 나타낸다.
Column들 각각은 16 개의 CU들을 포함한다. 동일한 Column에 속한 서로 다른 CU들은 각각 입력 피처맵 및 커널의 복수의 채널들 각각에 대응할 수 있다. 예를 들어, CU(0, 0)(1100)은 IM0(1200)으로부터 입력된 윈도우의 1 번째 채널을 처리하며, CU(15,0)(1115)은 16 번째 채널을 처리할 수 있다. 따라서, 동일한 Column에 속한 16개의 CU들을 이용하여 16개의 채널들이 병렬적으로 처리될 수 있다.
Column들 각각은 버퍼를 포함할 수 있다. 예를 들어, Column들 각각에 입력된 윈도우로부터 산출된 출력 피처맵이 ABout이 버퍼에 저장될 수 있다. 현재 입력된 로우 윈도우 또는 차분 윈도우로부터 산출된 출력 피처맵의 엘리먼트는 이에 대응하는 버퍼(Curr)에 저장되며, 다음 로우 윈도우 또는 차분 윈도우로부터 출력 피처맵의 엘리먼트가 산출됨에 따라 버퍼(Curr)에 저장된 엘리먼트는 버퍼(Prev)로 이동하여 저장되며, 다음 로우 윈도우 또는 차분 윈도우로부터 산출된 출력 피처맵의 엘리먼트가 버퍼(Curr)에 저장된다. 버퍼(Prev)에 저장된 출력 피처맵의 엘리먼트는 다른 Column의 차분 윈도우 및 커널간의 컨볼루션 연산 결과와 캐스케이딩 방식으로 합산될 수 있다. 예를 들어, Column15의 버퍼(Prev)에 저장된 출력 피처맵의 엘리먼트는 Column0의 차분 윈도우와 커널간의 컨볼루션 연산 결과와 합산되어 Column0에 대응하는 출력 피처맵의 엘리먼트가 산출될 수 있다.
복수의 CU들 각각으로부터 산출된 컨볼루션 연산 결과는 대응하는 DU에 입력될 수 있다. CU로부터 산출된 컨볼루션 연산 결과가 로우 윈도우와 커널간의 컨볼루션 연산 결과인 경우, 컨볼루션 연산 결과가 멀티플렉서를 통해 출력되며, CU로부터 산출된 컨볼루션 연산 결과가 차분 윈도우와 커널간의 컨볼루션 연산 결과인 경우 다른 Column에 대응하는 출력 피처맵의 엘리먼트와 합산된 결과가 멀테플렉서를 통해 출력된다. 예를 들어, IM1(1201)으로부터 입력된 ABin이 로우 윈도우인 경우, CU(0,1)을 통해 DU로 입력된 결과(1003)가 그대로 멀티플렉서(1005)를 통해 출력된다. 만약, IM1(1201)으로부터 입력된 ABin이 차분 윈도우인 경우, CU(0,1)로부터 입력된 컨볼루션 연산 결과(1003)와 Column0의 버퍼(Curr)에 저장된 출력 피처맵의 엘리먼트(1002)가 캐스케이딩 방식으로 합산된 결과(1004)가 멀티플렉서(1005)를 통해 출력된다. 또한, 복수의 Column들 각각에서 산출된 출력 피처맵의 엘리먼트들은 현재 레이어의 다음 레이어에 입력 피처맵으로서, IM에 저장될 수 있다.
도 10은 일 실시 예에 따른 차분 윈도우 출력부(1130)를 설명하기 위한 도면이다. 도 10은 도 9에서 설명한 구현 예에 부가되는 차분 윈도우 출력부(1130)를 설명하기 위한 것으로서, 도 9에서 상술한 실시 예가 도 10의 실시 예에 적용될 수 있다.
차분 윈도우 출력부는 멀티플렉서(1150)를 포함할 수 있다. 예를 들어, 멀티 플렉서(1150)는 Column0 내지 Column16 중 하나의 Column을 지정하는 CS(Column Select)에 의해 지정된 Column에 대응하는 출력 피처맵의 엘리먼트를 출력한다. 이 때, 선택적으로 멀티플렉서로부터 출력된 엘리먼트는 엑티베이션(activation) 변화기(1110)를 통해서 엑티베이션 값으로 변환될 수 있다. 멀티플렉서로부터 출력된 출력 피처맵의 엘리먼트는 버퍼(1120)에 저장될 수 있다. 이 때, 버퍼에 저장된 출력 피처맵의 엘리먼트와 현재 선택된 Column의 출력 피처맵의 엘리먼트간의 차분 연산을 수행하는 차분기(1140)에 입력된다. 차분기(1140)는 입력된 엘리먼트들간의 차분 연산을 수행하여, 차분 연산 결과를 IM에 저장한다. 따라서, 다음 레이어에서 별도로 차분 윈도우를 생성하지 않고 현재 레이어에서 다음 레이어에서 이용되는 차분 윈도우들을 생성함으로써, 연산 처리의 효율성을 증가시킬 수 있다.
도 11은 본 개시에 따른 연산 처리 방식의 연산 처리 속도의 향상을 설명하기 위한 그래프이다.
도 11의 가로축은 가로축은 각각 종래 뉴럴 네트워크 연산 처리 방식 PRA와 본 실시예들에 따른 연산 처리 방식인 Diffy가 적용되는 뉴럴 네트워크 모델들을 나타내며 세로축은 속도 향상의 비교 기준이 되는 종래 방식인 VAA 대비 속도의 증가 정도를 나타낸다. 그래프를 참조하면, Diffy는 VAA 대비 속도가 약 6.1배 향상되었으며, PRA 대비 소도가 약 1.16배 향상 되었다. 또한 모든 뉴럴 네트워크 모델에서 본 개시에 따라 구현된 방식인 Diffy가 종래의 PRA 방식에 비해 연산 처리 속도가 향상되었다.
도 12는 본 개시에 따른 연산 처리 방식의 프레임율(Frame Rate)의 향상을 설명하기 위한 그래프이다.
도 12에서 뉴럴 네트워크 모델들(DnCNN, FFDNet, IRCNN, JointNet, VDSR, Geom) 각각에서 종래 연산 처리 방식인 VAA, PRA와 본 개시의 구현 예인 Diffy의 프레임율을 나타내는 FPS(HD Frames per Second)를 비교한 그래프이다. 그래프에서 나타난 바와 같이 Diffy는 종래 방식에 비하여 FPS를 크게 증가시킨다. 또한 JointNet 모델에서 Diffy는 30 FPS에 인접한 성능을 보인다. 이는 Diffy가 다른 비교예에 비하여 스마트폰과 같은 단말기에서 실행되는 이미지 관련 어플리케이션에 더 적합한 방식임을 나타낸다.
Diffy는 CI-DNN(Computational imaging Deep Neural Netork) 및 기타 CNN (convolutional neural network)의 성능 및 에너지 효율을 향상시키는 DC 기반 아키텍처이다. Diffy는 차분 값을 이용함으로써, 온-칩 및 오프-칩 메모리의 필요한 저장 용량을 줄이고 트래픽을 감소시킬 수 있다. 또한, 최첨단 CI-DNN 에 적용됨에 따라, Diffy는 주기 당 1K 16 × 16b 곱셈 누적 연산을 수행할 수 있도록 하며, 이는 VAA 및 PRA 각각에 비하여 성능을 7.1 배 및 1.41 배 향상시킬 수 있다. Diffy는 대상 응용 프로그램에 따라 HD 프레임을 3.9에서 28.5 FPS까지 처리할 수 있도록 한다. 이는, VAA의 0.7 ~ 3.9FPS, PRA 2.6 ~ 18.9FPS에 비해 크게 향상된 성능이다. Diffy는 로우 값(Raw value)에 대하여, 그룹당 정밀도를 동적으로 결정하는 방식과 비교할 때 온-칩 메모리의 저장공간을 32 % 줄이고 오프-칩 트래픽을 1.43x 줄일 수 있다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 본 발명의 실시예에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (16)

  1. 뉴럴 네트워크 프로세싱 장치에서 컨볼루션 뉴럴 네트워크를 처리하는 방법에 있어서,
    입력 피처맵의 복수의 로우(raw) 윈도우들을 차분 연산을 위한 복수의 차분 그룹들(differential groups)로 그룹핑하는 단계;
    상기 그룹핑된 복수의 차분 그룹들 각각에 속한 로우 윈도우들 간의 차분 연산을 통해 차분 윈도우들(differential windows)을 생성하는 단계;
    상기 로우 윈도우들 중 기준 로우 윈도우와 커널 간의 컨볼루션 연산을 수행함으로써, 상기 기준 로우 윈도우에 대응하는 출력 피처맵의 기준 엘리먼트를 획득하는 단계; 및
    상기 차분 윈도우들 각각과 상기 커널 간의 컨볼루션 연산 결과들에 대하여 상기 기준 엘리먼트와 합산 연산을 수행함으로써, 상기 출력 피처맵의 나머지 엘리먼트들을 획득하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 로우 윈도우들은 슬라이딩 윈도우 방식(sliding window fashion)에 따라 상기 입력 피처맵으로부터 결정되고,
    상기 복수의 차분 그룹들 각각은 상기 슬라이딩 윈도우 방식에 따른 슬라이딩 방향에서 인접한 두 개의 로우 윈도우들을 포함하도록 그룹핑되는, 방법.
  3. 제 2 항에 있어서,
    상기 차분 윈도우들을 생성하는 단계는,
    상기 복수의 차분 그룹들 각각에 속한 상기 인접한 두 개의 로우 윈도우들 간의 엘리먼트 단위의(element-wise) 차분 연산을 수행하여 상기 차분 윈도우들을 생성하는, 방법.
  4. 제 2 항에 있어서,
    상기 나머지 엘리먼트들을 획득하는 단계는,
    상기 차분 윈도우들 각각과 상기 커널 간의 상기 컨볼루션 연산 결과들의 캐스케이딩 방식(cascading)의 합산 결과에 대하여 상기 기준 엘리먼트와 합산 연산을 수행함으로써, 상기 출력 피처맵의 상기 나머지 엘리먼트들을 획득하는, 방법.
  5. 제 4 항에 있어서,
    상기 캐스케이딩 방식의 상기 합산 결과는,
    상기 슬라이딩 방향에 따라 현재 차분 윈도우에 선행하는 하나 이상의 이전 차분 윈도우들에 대응하는 컨볼루션 연산 결과들의 합산 결과에 대하여 상기 현재 차분 윈도우와 상기 커널 간의 컨볼루션 연산 결과를 합산한 결과인, 방법.
  6. 제 1 항에 있어서,
    상기 차분 윈도우들 각각이 비트 데이터 포맷인 경우, 상기 차분 윈도우들 각각에 대하여 비트 값이 1을 나타내는 유효 비트의 자릿수에 대한 정보를 포함하는 데이터 포맷으로 변환하는 단계를 더 포함하고,
    상기 차분 윈도우들 각각과 상기 커널 간의 컨볼루션 연산 결과들은,
    상기 데이터 포맷으로 변환된 차분 윈도우들 각각과 상기 커널 간의 컨볼루션 연산 결과들인, 방법.
  7. 제 6 항에 있어서,
    상기 데이터 포맷으로 변환된 차분 윈도우들 각각과 상기 커널 간의 컨볼루션 연산 결과들은
    상기 유효 비트의 자릿수에 대한 정보에 기초하여 비트-시프트 연산 결과에 따라 산출되는 결과들인, 방법.
  8. 제 7 항에 있어서,
    상기 데이터 포맷을 변환하기 위한 전처리로서, 유효 비트 수를 감소시키는 부스 알고리즘(booth algorithm)에 따라 상기 차분 윈도우들을 전처리하는 단계를 더 포함하는, 방법.
  9. 뉴럴 네트워크 프로세싱 장치에 있어서,
    입력 피처맵이 저장된 메모리; 및
    상기 메모리에 저장된 상기 입력 피처맵을 이용하여 컨볼루션 뉴럴 네트워크를 처리하기 위한 뉴럴 네트워크 프로세서를 포함하고,
    상기 뉴럴 네트워크 프로세서는,
    입력 피처맵의 복수의 로우(raw) 윈도우들을 차분 연산을 위한 복수의 차분 그룹들(differential groups)로 그룹핑하고,
    상기 그룹핑된 복수의 차분 그룹들 각각에 속한 로우 윈도우들 간의 차분 연산을 통해 차분 윈도우들(differential windows)을 생성하고,
    상기 로우 윈도우들 중 기준 로우 윈도우와 커널 간의 컨볼루션 연산을 수행함으로써, 상기 기준 로우 윈도우에 대응하는 출력 피처맵의 기준 엘리먼트를 획득하고,
    상기 차분 윈도우들 각각과 상기 커널 간의 컨볼루션 연산 결과들에 대하여 상기 기준 엘리먼트와 합산 연산을 수행함으로써, 상기 출력 피처맵의 나머지 엘리먼트들을 획득하는, 장치.
  10. 제 9 항에 있어서,
    상기 로우 윈도우들은 슬라이딩 윈도우 방식(sliding window fashion)에 따라 상기 입력 피처맵으로부터 결정되고,
    상기 복수의 차분 그룹들 각각은 상기 슬라이딩 윈도우 방식에 따른 슬라이딩 방향에서 인접한 두 개의 로우 윈도우들을 포함하도록 그룹핑되는, 장치.
  11. 제 10 항에 있어서,
    상기 뉴럴 네트워크 프로세서는,
    상기 복수의 차분 그룹들 각각에 속한 상기 인접한 두 개의 로우 윈도우들 간의 엘리먼트 단위의(element-wise) 차분 연산을 수행하여 상기 차분 윈도우들을 생성하는, 장치.
  12. 제 10 항에 있어서,
    상기 뉴럴 네트워크 프로세서는,
    상기 차분 윈도우들 각각과 상기 커널 간의 상기 컨볼루션 연산 결과들의 캐스케이딩 방식(cascading)의 합산 결과에 대하여 상기 기준 엘리먼트와 합산 연산을 수행함으로써, 상기 출력 피처맵의 상기 나머지 엘리먼트들을 획득하는, 장치.
  13. 제 12 항에 있어서,
    상기 캐스케이딩 방식의 상기 합산 결과는,
    상기 슬라이딩 방향에 따라 현재 차분 윈도우에 선행하는 하나 이상의 이전 차분 윈도우들에 대응하는 컨볼루션 연산 결과들의 합산 결과에 대하여 상기 현재 차분 윈도우와 상기 커널 간의 컨볼루션 연산 결과를 합산한 결과인, 장치.
  14. 제 9 항에 있어서,
    상기 뉴럴 네트워크 프로세서는,
    상기 차분 윈도우들 각각이 비트 데이터 포맷인 경우, 상기 차분 윈도우들 각각에 대하여 비트 값이 1을 나타내는 유효 비트의 자릿수에 대한 정보를 포함하는 데이터 포맷으로 변환하고,
    상기 차분 윈도우들 각각과 상기 커널 간의 컨볼루션 연산 결과들은,
    상기 데이터 포맷으로 변환된 차분 윈도우들 각각과 상기 커널 간의 컨볼루션 연산 결과들인, 장치.
  15. 제 14 항에 있어서,
    상기 데이터 포맷으로 변환된 차분 윈도우들 각각과 상기 커널 간의 컨볼루션 연산 결과들은
    상기 유효 비트의 자릿수에 대한 정보에 기초하여 비트-시프트 연산 결과에 따라 산출되는 결과들인, 장치.
  16. 제 15 항에 있어서,
    상기 뉴럴 네트워크 프로세서는,
    상기 데이터 포맷을 변환하기 위한 전처리로서, 유효 비트 수를 감소시키는 부스 알고리즘(booth algorithm)에 따라 상기 차분 윈도우들을 전처리하는, 장치.
KR1020180158379A 2018-08-23 2018-12-10 컨볼루션 뉴럴 네트워크를 처리하는 방법 및 장치 KR20200023154A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/549,002 US11836971B2 (en) 2018-08-23 2019-08-23 Method and device with convolution neural network processing

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862721918P 2018-08-23 2018-08-23
US62/721,918 2018-08-23

Publications (1)

Publication Number Publication Date
KR20200023154A true KR20200023154A (ko) 2020-03-04

Family

ID=69783509

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180158379A KR20200023154A (ko) 2018-08-23 2018-12-10 컨볼루션 뉴럴 네트워크를 처리하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20200023154A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117033988A (zh) * 2023-09-27 2023-11-10 之江实验室 基于神经电信号的癫痫样棘波处理方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117033988A (zh) * 2023-09-27 2023-11-10 之江实验室 基于神经电信号的癫痫样棘波处理方法和装置
CN117033988B (zh) * 2023-09-27 2024-03-12 之江实验室 基于神经电信号的癫痫样棘波处理方法和装置

Similar Documents

Publication Publication Date Title
JP7132824B2 (ja) ニューラルネットワークにおいてデコンボルーション演算を実行する装置及びその方法
KR102452953B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
US12008797B2 (en) Image segmentation method and image processing apparatus
US20220261615A1 (en) Neural network devices and methods of operating the same
US11461684B2 (en) Operation processing circuit and recognition system
EP3349153B1 (en) Convolutional neural network (cnn) processing method and apparatus
CN112308200B (zh) 神经网络的搜索方法及装置
US11836971B2 (en) Method and device with convolution neural network processing
EP3855367A1 (en) Operation accelerator, processing method, and related device
KR102452951B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
CN112236779A (zh) 基于卷积神经网络的图像处理方法和图像处理装置
KR20190066473A (ko) 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치
EP3789892A1 (en) Method and apparatus for processing data
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
TWI719512B (zh) 使用像素通道置亂的卷積神經網路的演算方法與系統
CN111914997A (zh) 训练神经网络的方法、图像处理方法及装置
KR20200081044A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
KR20200049366A (ko) 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
KR20200095300A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
CN113673545A (zh) 光流估计方法、相关装置、设备及计算机可读存储介质
EP3663938B1 (en) Signal processing method and apparatus
CN111931927A (zh) 一种在npu中减少计算资源占用的方法及装置
Wang et al. Image super-resolution via lightweight attention-directed feature aggregation network
US11348336B2 (en) Systems and approaches for learning efficient representations for video understanding
KR20200023154A (ko) 컨볼루션 뉴럴 네트워크를 처리하는 방법 및 장치

Legal Events

Date Code Title Description
N231 Notification of change of applicant