KR20200132305A - 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법 및 그 방법을 수행하는 전자 장치 - Google Patents
전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법 및 그 방법을 수행하는 전자 장치 Download PDFInfo
- Publication number
- KR20200132305A KR20200132305A KR1020190057604A KR20190057604A KR20200132305A KR 20200132305 A KR20200132305 A KR 20200132305A KR 1020190057604 A KR1020190057604 A KR 1020190057604A KR 20190057604 A KR20190057604 A KR 20190057604A KR 20200132305 A KR20200132305 A KR 20200132305A
- Authority
- KR
- South Korea
- Prior art keywords
- channel data
- input channel
- convolution operation
- kernel
- neural network
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 66
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000013527 convolutional neural network Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 17
- 238000004590 computer program Methods 0.000 description 10
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000011176 pooling Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical 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)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
N개의 입력 채널 데이터를 획득하는 단계; N개의 상기 입력 채널 데이터로부터 선택된 K개의 제1 입력 채널 데이터들을 포함하는 제1 입력 채널 데이터 그룹을, K개의 제1 커널 필터들을 포함하는 제1 커널 필터 그룹에 적용함으로써, 제1 컨볼루션 연산을 수행하는 단계; N개의 상기 입력 채널 데이터로부터 선택된 K개의 제2 입력 채널 데이터들을 포함하는 제2 입력 채널 데이터 그룹을, K개의 제2 커널 필터들을 포함하는 제2 커널 필터 그룹에 적용함으로써, 제2 컨볼루션 연산을 수행하는 단계; 및 상기 제1 컨볼루션 연산 및 상기 제2 컨볼루션 연산에 기초하여, 출력 채널 데이터를 획득하는 단계를 포함하고, K는 N보다 작은 자연수인 것인, 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법이 개시된다.
Description
다양한 실시예들은 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법 및 그 방법을 수행하는 전자 장치에 관한 것으로서, 더욱 상세하게는 N개의 입력 채널 데이터를 획득하고, N개의 상기 입력 채널 데이터로부터 선택된 K개의 제1 입력 채널 데이터들을 포함하는 제1 입력 채널 데이터 그룹을, K개의 제1 커널 필터들을 포함하는 제1 커널 필터 그룹에 적용함으로써, 제1 컨볼루션 연산을 수행하고, N개의 상기 입력 채널 데이터로부터 선택된 K개의 제2 입력 채널 데이터들을 포함하는 제2 입력 채널 데이터 그룹을, K개의 제2 커널 필터들을 포함하는 제2 커널 필터 그룹에 적용함으로써, 제2 컨볼루션 연산을 수행하고, 상기 제1 컨볼루션 연산 및 상기 제2 컨볼루션 연산에 기초하여, 출력 채널 데이터를 획득하는 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법 및 그 방법을 수행하는 전자 장치에 관한 것이다.
컴퓨터 기술의 발달과 함께 데이터 트래픽이 지수함수 형태로 증가하면서 인공지능은 미래 혁신을 주도하는 중요한 트랜드로 자리잡았다. 인공지능은 사람의 사고방식을 모방하는 방식이기 때문에 사실상 전 산업에 무한하게 응용이 가능하다. 인공지능의 대표적인 기술로는 패턴 인식, 기계 학습, 전문가 시스템, 뉴럴 네트워크, 자연어 처리 등이 있다.
뉴럴 네트워크는 인간의 생물학적 신경 세포의 특성을 수학적 표현에 의해 모델링한 것으로, 인간이 가지고 있는 학습이라는 능력을 모방한 알고리즘을 이용한다. 이 알고리즘을 통하여, 뉴럴 네트워크는 입력 데이터와 출력 데이터 사이의 사상(mapping)을 생성할 수 있고, 이러한 사상을 생성하는 능력은 뉴럴 네트워크의 학습 능력이라고 표현될 수 있다. 또한, 뉴럴 네트워크는 학습된 결과에 기초하여, 학습에 이용되지 않았던 입력 데이터에 대하여, 올바른 출력 데이터를 생성할 수 있는 일반화 능력을 가진다.
컨볼루션 뉴럴 네트워크(CNN: Convolution Neural Network) 등에서, 높은 정확도를 얻기 위해 심층화가 이루어져 왔다. 그러나, 심층화는 연산량을 크게 증가시키고 저성능 환경에서 추론 속도가 저하되는 문제점이 있다. 이러한 문제를 해결하기 위해, MobileNet, ShuffleNet과 같은 딥러닝 구조에 대한 연구가 시도되어 왔다.
다양한 실시예들은, N개의 입력 채널 데이터를 획득하고, N개의 상기 입력 채널 데이터로부터 선택된 K개의 제1 입력 채널 데이터들을 포함하는 제1 입력 채널 데이터 그룹을, K개의 제1 커널 필터들을 포함하는 제1 커널 필터 그룹에 적용함으로써, 제1 컨볼루션 연산을 수행하고, N개의 상기 입력 채널 데이터로부터 선택된 K개의 제2 입력 채널 데이터들을 포함하는 제2 입력 채널 데이터 그룹을, K개의 제2 커널 필터들을 포함하는 제2 커널 필터 그룹에 적용함으로써, 제2 컨볼루션 연산을 수행하고, 상기 제1 컨볼루션 연산 및 상기 제2 컨볼루션 연산에 기초하여, 출력 채널 데이터를 획득함으로써, 연산량을 절감하면서도 정확도 손실을 최소화하여 좋은 성능을 가지는, 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법 및 그 방법을 수행하는 전자 장치를 제공할 수 있다.
일 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법은, N개의 입력 채널 데이터를 획득하는 단계; N개의 상기 입력 채널 데이터로부터 선택된 K개의 제1 입력 채널 데이터들을 포함하는 제1 입력 채널 데이터 그룹을, K개의 제1 커널 필터들을 포함하는 제1 커널 필터 그룹에 적용함으로써, 제1 컨볼루션 연산을 수행하는 단계; N개의 상기 입력 채널 데이터로부터 선택된 K개의 제2 입력 채널 데이터들을 포함하는 제2 입력 채널 데이터 그룹을, K개의 제2 커널 필터들을 포함하는 제2 커널 필터 그룹에 적용함으로써, 제2 컨볼루션 연산을 수행하는 단계; 및 상기 제1 컨볼루션 연산 및 상기 제2 컨볼루션 연산에 기초하여, 출력 채널 데이터를 획득하는 단계를 포함하고 K는 N보다 작은 자연수일 수 있다.
일 실시예에 따라, N개의 상기 입력 채널 데이터는, 0부터 N-1까지의 인덱스를 가지고, 상기 제1 입력 채널 데이터 그룹은 0부터 K-1의 인덱스에 대응되는 제1 입력 채널 데이터들을 포함하고, 상기 제2 입력 채널 데이터 그룹은 S부터 S+K-1의 인덱스에 대응되는 제2 입력 채널 데이터들을 포함하고, 상기 S는 기설정된 채널 스트라이드에 의해 결정될 수 있다.
일 실시예에 따라, 상기 제1 입력 채널 데이터들은, 상기 0부터 K-1의 인덱스에 각각 대응되는 입력 채널 데이터들을 포함하고, 상기 제2 입력 채널 데이터들은, 상기 S부터 S+K-1의 인덱스에 각각 대응되는 입력 채널 데이터들을 포함할 수 있다.
일 실시예에 따라, 출력 채널 데이터의 개수는 S 및 K에 기초하여 결정될 수 있다.
일 실시예에 따라, 상기 N개의 입력 채널 데이터는, 기설정된 개수의 패딩 데이터를 포함할 수 있다.
일 실시예에 따라, 상기 입력 채널 데이터들 중에서, 0 내지 P-1의 인덱스에 대응되는 입력 채널 데이터 및 N-P 부터 N-1의 인덱스에 대응되는 입력 채널 데이터들은 패딩 데이터일 수 있다.
일 실시예에 따라, 상기 패딩 데이터는, 상기 입력 채널 데이터들 중에서, 상기 소정 레이어 이전의 레이어에서 연산된 출력 데이터들로부터 선택된 일부와 동일하도록 복사된 것일 수 있다.
일 실시예에 따라, 상기 입력 채널 데이터는, 상기 전자 장치에서 처리하는 이미지 데이터에 기초할 수 있다.
일 실시예에 따라, 상기 컨볼루션 연산은, CNN 네트워크 내에서 수행될 수 있다.
일 실시예에 따른 뉴럴 네트워크의 컨볼루션 연산을 수행하는 전자 장치는 하나 이상의 인스트럭션들을 저장하는 메모리, 및 상기 메모리에 저장된 상기 하나 이상의 인스트럭션들을 실행하는 프로세서를 포함하고, 상기 프로세서는, N개의 입력 채널 데이터를 획득하고, N개의 상기 입력 채널 데이터로부터 선택된 K개의 제1 입력 채널 데이터들을 포함하는 제1 입력 채널 데이터 그룹을, K개의 제1 커널 필터들을 포함하는 제1 커널 필터 그룹에 적용함으로써, 제1 컨볼루션 연산을 수행하고, N개의 상기 입력 채널 데이터로부터 선택된 K개의 제2 입력 채널 데이터들을 포함하는 제2 입력 채널 데이터 그룹을, K개의 제2 커널 필터들을 포함하는 제2 커널 필터 그룹에 적용함으로써, 제2 컨볼루션 연산을 수행하고, 상기 제1 컨볼루션 연산 및 상기 제2 컨볼루션 연산에 기초하여, 출력 채널 데이터를 획득하도록 구성되고, K는 N보다 작은 자연수일 수 있다.
일 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법은 N개의 입력 채널 데이터로부터 선택된 K개의 입력 채널 데이터들을 포함하는 입력 채널 데이터 그룹을 K개의 커널 필터들을 포함하는 커널 필터 그룹에 적용하는 컨볼루션 연산을 이용하여 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행함으로써 커널 필터 파라미터의 수와 커널 필터의 수가 절감되어 연산량이 절감되면서도 성능이 개선될 수 있다.
도 1은 일 실시예에 따른 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 전자 장치를 나타내는 블록도이다.
도 2는 일 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법의 흐름도이다.
도 3은, 뉴럴 네트워크의 구조를 구체적으로 설명하기 위해 참조되는 도면이다.
도 4는, 종래의 컨볼루션 연산을 설명하기 위해 참조되는 도면이다.
도 5a 내지 도 5c는 일 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법을 나타내는 도면이다.
도 6은 다른 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법을 나타내는 도면이다.
도 7은 다른 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법을 나타내는 도면이다.
도 8은 다른 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법을 나타내는 도면이다.
도 9은 일 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법의 성능과 종래 기술들의 성능을 비교한 도면이다.
도 2는 일 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법의 흐름도이다.
도 3은, 뉴럴 네트워크의 구조를 구체적으로 설명하기 위해 참조되는 도면이다.
도 4는, 종래의 컨볼루션 연산을 설명하기 위해 참조되는 도면이다.
도 5a 내지 도 5c는 일 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법을 나타내는 도면이다.
도 6은 다른 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법을 나타내는 도면이다.
도 7은 다른 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법을 나타내는 도면이다.
도 8은 다른 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법을 나타내는 도면이다.
도 9은 일 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법의 성능과 종래 기술들의 성능을 비교한 도면이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 실시예들에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본 명세서에서, "입력 채널 데이터"는 뉴럴 네트워크의 컨볼루션 과정에 이용되는 입력 채널에 포함되는 데이터를 의미하고, "패딩 데이터"는 이전 레이어에서 출력된 채널 데이터 중 일부를 복사하여 입력 채널 데이터로 이용되는 데이터를 의미하고, "출력 채널 데이터"는 뉴럴 네트워크의 컨볼루션 결과인 출력 채널에 포함되는 데이터를 의미한다. 이러한 데이터들은 이미지 데이터, 음성 데이터 등을 포함할 수 있다.
도 1은 일 실시예에 따른 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 전자 장치의 구성을 나타내는 블록도이다.
도 1을 참조하면, 일 실시예에 따른 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 전자 장치(100)는 프로세서(120) 및 메모리(130)를 포함할 수 있다.
일 실시예에 따른 프로세서(120)는 전자 장치(100)를 전반적으로 제어할 수 있다. 일 실시예에 따른 프로세서(120)는 메모리(130)에 저장되는 하나 이상의 프로그램들을 실행할 수 있다.
일 실시예에 따른 메모리(130)는 전자 장치(100)를 구동하고 제어하기 위한 다양한 데이터, 프로그램 또는 어플리케이션을 저장할 수 있다. 메모리(130)에 저장되는 프로그램은 하나 이상의 인스트럭션들을 포함할 수 있다. 메모리(130)에 저장된 프로그램(하나 이상의 인스트럭션들) 또는 어플리케이션은 프로세서(120)에 의해 실행될 수 있다.
일 실시예에 따른 프로세서(120)는 N개의 입력 채널 데이터를 획득하고, N개의 상기 입력 채널 데이터로부터 선택된 K개의 제1 입력 채널 데이터들을 포함하는 제1 입력 채널 데이터 그룹을, K개의 제1 커널 필터들을 포함하는 제1 커널 필터 그룹에 적용함으로써, 제1 컨볼루션 연산을 수행하고, N개의 상기 입력 채널 데이터로부터 선택된 K개의 제2 입력 채널 데이터들을 포함하는 제2 입력 채널 데이터 그룹을, K개의 제2 커널 필터들을 포함하는 제2 커널 필터 그룹에 적용함으로써, 제2 컨볼루션 연산을 수행하고, 상기 제1 컨볼루션 연산 및 상기 제2 컨볼루션 연산에 기초하여, 출력 채널 데이터를 획득할 수 있다.
도 2는 일 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법의 흐름도이다.
도 2를 참고하면, 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 전자 장치(100)의 프로세서(120)는, 단계 s201에서, N개의 입력 채널 데이터를 획득할 수 있다.
일 실시예에 따라, 상기 입력 채널 데이터는, 상기 전자 장치에서 처리하는 이미지 데이터에 기초한 것일 수 있다.
단계 s203에서, N개의 상기 입력 채널 데이터로부터 선택된 K개의 제1 입력 채널 데이터들을 포함하는 제1 입력 채널 데이터 그룹을, K개의 제1 커널 필터들을 포함하는 제1 커널 필터 그룹에 적용함으로써, 제1 컨볼루션 연산을 수행할 수 있다.
본 명세서에서, "제1 입력 채널 데이터들"은 동일한 입력 채널 데이터를 의미하는 것이 아니고, 제1 입력 채널 데이터 그룹에 포함된 입력 채널 데이터들을 다른 입력 채널 데이터와 구분하기 위한 것이다. 마찬가지로, "제2 입력 채널 데이터들" 은 동일한 입력 채널 데이터를 의미하는 것이 아니고, 제2 입력 채널 데이터 그룹에 포함된 입력 채널 데이터들을 다른 입력 채널 데이터와 구분하기 위한 것이다.
단계 s205에서, N개의 상기 입력 채널 데이터로부터 선택된 K개의 제2 입력 채널 데이터들을 포함하는 제2 입력 채널 데이터 그룹을, K개의 제2 커널 필터들을 포함하는 제2 커널 필터 그룹에 적용함으로써, 제2 컨볼루션 연산을 수행할 수 있다. K는 N보다 작은 자연수이다.
일 실시예에 따라, N개의 상기 입력 채널 데이터는, 0부터 N-1까지의 인덱스를 가지고, 상기 제1 입력 채널 데이터 그룹은 0부터 K-1의 인덱스에 대응되는 제1 입력 채널 데이터들을 포함하고, 상기 제2 입력 채널 데이터 그룹은 S부터 S+K-1의 인덱스에 대응되는 제2 입력 채널 데이터들을 포함하고, 상기 S는 기설정된 채널 스트라이드 값에 의해 결정될 수 있다.
일 실시예에 따라, 상기 제1 입력 채널 데이터들은, 상기 0부터 K-1의 인덱스에 각각 대응되는 입력 채널 데이터들을 포함하고, 상기 제2 입력 채널 데이터들은, 상기 S부터 S+K-1의 인덱스에 각각 대응되는 입력 채널 데이터들을 포함할 수 있다.
일 실시예에 따라, 상기 N개의 입력 채널 데이터는, 기설정된 개수의 패딩 데이터를 포함할 수 있다.
일 실시예에 따라, 패딩 데이터는, 상기 입력 채널 데이터들 중에서, 상기 소정 레이어 이전의 레이어에서 연산된 출력 데이터들로부터 선택된 일부와 동일하도록 복사된 것일 수 있다.
일 실시예에 따라, 상기 입력 채널 데이터들 중에서, 0 내지 P-1의 인덱스에 대응되는 입력 채널 데이터 및 N-P 부터 N-1에 대응되는 입력 채널 데이터들은 패딩 데이터일 수 있다.
단계 s207에서, 상기 제1 컨볼루션 연산 및 상기 제2 컨볼루션 연산에 기초하여, 출력 채널 데이터를 획득할 수 있다.
일 실시예에 따라, 상기 컨볼루션 연산은, CNN 네트워크 내에서 수행될 수 있다.
일 실시예에 따라, 출력 채널 데이터의 개수는 S, K에 기초하여 결정되는 것일 수 있다.
구체적으로, 출력 채널 데이터의 개수는 아래 수학식 1에 의해 결정될 수 있다.
[수학식 1]
out_ch = (in_ch - kernel_num + 2*pad)/ch_stride + 1
여기서, out_ch는 출력 채널 데이터의 개수이고, in_ch는 입력 채널 데이터의 개수이고, kernel_num은 커널 필터 그룹에 적용되는 입력 채널 데이터 그룹의 입력 채널 데이터의 개수이고, 2*pad는 패딩 데이터의 개수이고, ch_stride는 커널 필터 그룹을 적용하는 입력 채널 데이터의 인덱스 간격을 의미한다.
도 3은, 뉴럴 네트워크의 일반적인 구조를 구체적으로 설명하기 위해 참조되는 도면이다.
뉴럴 네트워크(300)는 딥 뉴럴 네트워크(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 등에 해당될 수 있다. 예를 들어, 뉴럴 네트워크(300)는 컨볼루션 뉴럴 네트워크(CNN)로 구현될 수 있으나, 이에 제한되지 않는다. 도 3에서는 뉴럴 네트워크(300)의 예시에 해당하는 컨볼루션 뉴럴 네트워크에서는 컨볼루션 레이어 외에도, 서브샘플링 레이어(subsampling layer, 또는 풀링 레이어(pooling layer)), 풀리 커넥티드(fully connected) 레이어 등이 더 포함될 수 있다.
뉴럴 네트워크(300)는 입력 이미지, 피처맵들(feature maps) 및 출력을 포함하는 복수 레이어들을 갖는 아키텍처로 구현될 수 있다. 뉴럴 네트워크(300)에서 입력 이미지는 웨이트(weight) 또는 커널(kernel)이라 불리는 필터와의 컨볼루션 연산이 수행되고, 그 결과 피처맵들이 출력된다. 이때 생성된 출력 피처맵들은 입력 피처맵들로서 다시 커널 필터와의 컨볼루션 연산이 수행되고, 새로운 피처맵들이 출력된다. 이와 같은 컨볼루션 연산이 반복적으로 수행된 결과, 최종적으로는 뉴럴 네트워크(300)를 통한 입력 이미지의 특징들에 대한 인식 결과가 출력될 수 있다.
예를 들어, 도 3의 뉴럴 네트워크(300)에 24x24 픽셀 크기의 이미지가 입력된 경우, 입력 이미지는 커널 필터와의 컨볼루션 연산을 통해 20x20 크기를 갖는 4채널의 피처맵들로 출력될 수 있다. 또한, 서브샘플링 과정을 통해 20x20 크기를 갖는 4채널의 피처맵의 픽셀 값들 중 일부만이 이용되어 10x10 크기를 갖는 4채널의 피처맵들이 출력될 수 있다. 서브샘플링 방식으로는 최대-풀링(max-pooling), 평균-풀링(average-pooling) 등의 방식 등이 적용될 수 있다.
이후에도, 10x10 피처맵들은 웨이트와의 반복적인 컨볼루션 연산 및 서브샘플링 연산을 통해 크기가 줄어들면서, 최종적으로는 글로벌(global)한 특징들이 출력될 수 있다. 뉴럴 네트워크(300)는 여러 레이어들에서 컨볼루션 연산 및 서브샘플링(또는 풀링) 연산을 반복적으로 수행함으로써 입력 이미지로부터 이미지 전체를 대표할 수 있는 강인한 특징들을 필터링하여 출력하고, 출력된 글로벌한 특징들이 풀리 커넥티드 레이어에 입력됨으로써 최종적으로 입력 이미지에 대한 인식 결과를 도출할 수 있다.
도 3의 입력피쳐맵 및 출력피쳐맵은 도 1, 2, 4 내지 8에 기재된 입력 채널 데이터 및 출력 채널 데이터일 수 있다.
도 4는 종래의 컨볼루션 연산을 설명하기 위해 참조되는 도면이다.
도 4를 참고하면, N개의 입력 채널 데이터들에 대하여 M개의 출력 채널 데이터들을 획득하기 위해서는 MxN개의 커널 필터들이 필요하다. 예를 들어, 4개의 입력 채널 데이터들(410, 420, 430, 440)에 대하여 4개의 출력 채널 데이터들(450, 460, 470, 480)을 획득하기 위해서는 4x4의 16개의 커널이 필요하다. 또한, 커널 필터의 너비 및 높이가 WxH라면, 컨볼루션 연산에 MxNxWxH만큼의 필터 파라미터가 요구된다. 예를 들어, 4개의 입력 채널 데이터 및 4개의 출력 채널 데이터가 획득되고 커널 필터의 크기가 3x3이라면, 컨볼루션 연산에 4x4x3x3의 144개의 필터 파리미터가 요구된다. 구체적으로, 4개의 입력 채널들을 4개의 커널 필터(411, 412, 413, 414)들 각각과 컨볼루션하고 더하는 컨볼루션 연산을 수행하여 제1 출력 채널 데이터(450)가 획득되고, 4개의 입력 채널 데이터들을 4개의 커널 필터(421, 422, 423, 424)들 각각과 컨볼루션하고 더하는 컨볼루션 연산을 수행하여 제2 출력 채널 데이터(460)가 획득되고, 4개의 입력 채널 데이터들을 4개의 커널 필터(431, 432, 433, 434)들 각각과 컨볼루션하고 더하는 컨볼루션 연산을 수행하여 제3 출력 채널 데이터(470)가 획득되고, 4개의 입력 채널 데이터들을 4개의 커널 필터(441, 442, 443, 444)들 각각과 컨볼루션하고 더하는 컨볼루션 연산을 수행하여 제4 출력 채널 데이터(480)가 획득될 수 있다.
도 4의 컨볼루션 연산을 통해 획득되는 파라미터의 수는 아래 수학식 2에 의해 결정된다.
[수학식 2]
param_num = in_ch * kernel_W * kernel_H * out_ch
여기서, param_num은 파라미터의 수이고, in_ch은 입력 채널 데이터의 개수이고, kernel_W는 커널 필터의 너비이고, kernel_H는 커널 필터의 높이이고, out_ch은 출력 채널 데이터의 개수이다.
도 5a 내지 5c는 일 실시예에 따른 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법을 나타내는 도면이다.
도 5a 내지 5c를 참고하면, N개의 입력 채널 데이터로부터 선택된 K개의 입력 채널 데이터들을 포함하는 입력 채널 데이터 그룹에 K개의 커널 필터들을 포함하는 커널 필터 그룹에 적용하여 컨볼루션 연산을 복수회 수행하여 출력 채널 데이터가 획득될 수 있다. 도 4의 종래의 컨볼루션 연산과 비교하여 더 적은 커널 필터와 더 적은 커널 필터 파라미터가 이용되므로, 저성능 장치에서 뉴럴 네트워크의 연산량이 절감되면서도 효율이 개선될 수 있다.
도 5a 내지 5c를 참고하면, 일 실시예에 따른 4개의 입력 채널 데이터(510, 520, 530, 540)들에 대하여 4개의 출력 채널 데이터(560, 570, 580, 590)들을 획득하는 과정이 구체적으로 설명된다.
일 실시예에 따라, M개의 입력 채널 데이터들에 기초하여 기설정된 패딩 파라미터 P에 의해 2P개의 패딩 데이터가 생성될 수 있다. 이에 따라, M+2P개의 새로운 입력 채널 데이터가 획득될 수 있다. M개의 입력 채널 데이터들은 이전 레이어에서 컨볼루션 연산의 결과로 출력된 출력 채널 데이터일 수 있다. 예를 들어, 4개의 입력 채널 데이터(510, 520, 530, 540)들에 기초하여, 기설정된 패딩 파라미터 p가 1이면, 2p개인 2개의 패딩 데이터(500, 550)가 획득될 수 있다. 이에 따라, 4개의 입력 채널 데이터(510, 520, 530, 540)와 2개의 패딩 데이터(500, 550)을 포함하는 6개의 새로운 입력 채널 데이터(500, 510, 520, 530, 540, 550)가 획득될 수 있다.
도 5a를 참고하면, 6개의 입력 채널 데이터(500, 510, 520, 530, 540, 550)로부터 선택된 3개의 제1 입력 채널 데이터(500, 510, 520)들을 포함하는 제1 입력 채널 데이터 그룹에 대하여 3개의 제1 커널 필터(501, 502, 503)들을 포함하는 제1 커널 필터 그룹에 적용함으로써, 제1 입력 채널 데이터(500, 510, 520) 각각과 제1 커널 필터(501, 502, 503)들 각각에 대하여 컨볼루션하고 더하는 컨볼루션 연산을 수행함으로써 제 1 출력 채널 데이터(560)가 획득될 수 있다.
5b를 참고하면, 6개의 입력 채널 데이터(500, 510, 520, 530, 540, 550)로부터 선택된 3개의 제2 입력 채널 데이터(510, 520, 530)들을 포함하는 제2 입력 채널 데이터 그룹에 대하여 3개의 제2 커널 필터(511, 512, 513)들을 포함하는 제2 커널 필터 그룹에 적용함으로써, 제2 입력 채널 데이터(510, 520, 530) 각각과 제2 커널 필터(511, 512, 513)들 각각에 대하여 컨볼루션하고 더하는 컨볼루션 연산을 수행함으로써 제 2 출력 채널 데이터(570)가 획득될 수 있다.
도 5c를 참고하면, 6개의 입력 채널 데이터(500, 510, 520, 530, 540, 550)로부터 선택된 3개의 제3 입력 채널 데이터(520, 530, 540)들을 포함하는 제3 입력 채널 데이터 그룹에 대하여 3개의 제3 커널 필터(521, 522, 523)들을 포함하는 제3 커널 필터 그룹에 적용함으로써, 제3 입력 채널 데이터(520, 530, 540) 각각과 제3 커널 필터(521, 522, 523)들 각각에 대하여 컨볼루션 연산을 수행함으로써 제 3 출력 채널 데이터(580)가 획득되고, 6개의 입력 채널 데이터(500, 510, 520, 530, 540, 550)로부터 선택된 3개의 제4 입력 채널 데이터(530, 540, 550)들을 포함하는 제4 입력 채널 데이터 그룹에 대하여 3개의 제4 커널 필터(531, 532, 533)들을 포함하는 제4 커널 필터 그룹에 적용함으로써, 제4 입력 채널 데이터(530, 540, 550) 각각과 제4 커널 필터(531, 532, 533)들 각각에 대하여 컨볼루션 연산을 수행함으로써 제 4 출력 채널 데이터(590)가 획득될 수 있다.
도 4에서 동일한 입력 채널 데이터 및 출력 채널 데이터임에도 16개의 커널 필터가 요구되는 반면에 도 5a 내지 도 5c의 실시예에서는 12개의 커널 필터가 요구된다.
일 실시예에 따른 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법에서 요구되는 커널 필터의 개수는 복수의 커널 필터 그룹에 포함된 K개의 커널 필터의 수와 출력 채널 데이터의 개수의 곱이다. 수학식 1에 기초하여 나타내면, 아래 수학식 3과 같다.
[수학식 3]
kernelfilter_num = kernel_num * ((in_ch - kernel_num + 2*pad)/ch_stride + 1)
여기서, kernelfilter_num는 컨볼루션 연산에 이용되는 전체 커널 필터의 개수이고, in_ch는 입력 채널 데이터의 개수이고, kernel_num은 커널 필터 그룹에 적용되는 입력 채널 데이터 그룹의 입력 채널 데이터의 개수이고, 2*pad는 패딩 데이터의 개수이고, ch_stride는 커널 필터 그룹을 적용하는 입력 채널 데이터의 인덱스 간격을 의미한다.
일 실시예에 따른 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법에 의해 획득되는 파라미터의 수는 다음 수학식 4에 의해 결정된다.
[수학식 4]
param_num = ch_kernel * kernel_W * kernel_H * ((in_ch - kernel_num + 2*pad)/ch_stride + 1)
여기서, param_num은 파라미터의 수이고, ch_kernel은 입력 채널 데이터 그룹에 적용되는 커널 필터 그룹에 포함되는 커널 필터의 개수이고, kernel_W는 커널 필터의 너비이고, kernel_H는 커널 필터의 높이이고, in_ch는 입력 채널 데이터의 개수이고, kernel_num은 커널 필터 그룹에 적용되는 입력 채널 데이터 그룹의 입력 채널 데이터의 개수이고, 2*pad는 패딩 데이터의 개수이고, ch_stride는 커널 필터 그룹을 적용하는 입력 채널 데이터의 인덱스 간격을 의미한다.
커널 필터의 사이즈가 3x3라고 가정하여 도 5a 내지 도 5c의 실시예에 수학식 3을 적용하면, 파라미터의 수는 108개이다. 이는 도 4에서 커널 필터의 사이즈가 3x3라고 가정하여 계산된 파라미터의 수인 144개보다 적은 것이다.
일 실시예에 따라, 도 5c의 입력 채널 데이터는 인덱스를 가질 수 있다. 구체적으로, 입력 채널 데이터(500, 510, 520, 530, 540, 550)들은 0 내지 5의 인덱스를 가질 수 있다. 도 5c의 실시예에서 입력 채널 데이터 중 패딩 데이터(500, 550)의 인덱스는 0 및 5이다.
일 실시예에 따라, 패딩 데이터는 입력 채널 데이터들 중에서 소정 레이어의 이전 레이어에서 연산된 출력 채널 데이터로부터 선택된 일부와 동일하도록 복사될 수 있다. 구체적으로, 인덱스 0을 가지는 패딩 데이터(500)은 인덱스 4를 가지는 입력 채널 데이터(540)과 동일하고, 인덱스 5를 가지는 패딩 데이터(550)는 인덱스 1을 가지는 입력 채널 데이터(510)와 동일할 수 있다. 또한, 인덱스 0을 가지는 패딩 데이터(500)은 인덱스 1을 가지는 입력 채널 데이터(540)과 동일하고, 인덱스 5를 가지는 패딩 데이터(550)는 인덱스 4를 가지는 입력 채널 데이터(510)와 동일할 수 있다.
일 실시예에 따라, 이전 레이어에서 연산된 출력 채널 데이터인 M개의 채널 데이터와 2P개의 패딩 데이터가 새로운 입력 채널 데이터인 경우, 입력 채널 데이터는 0 내지 M+2P-1의 인덱스를 가질 수 있다. 이러한 경우에 N=M+2P-1이라고 하면, 입력 채널 데이터 중 패딩 데이터의 인덱스는 0 내지 P-1의 인덱스와 N-P 내지 N-1의 인덱스를 가질 수 있다.
일 실시예에 따라, 인덱스 0 내지 P-1의 인덱스를 가지는 패딩 데이터는 N-2P 내지 N-P-1의 인덱스를 가지는 입력 채널 데이터와 각각 동일하고, N-P 내지 N-1의 인덱스를 가지는 패딩 데이터는 P 내지 2P-1의 인덱스를 가지는 입력 채널 데이터와 각각 동일할 수 있다. 반대로, 0 내지 P-1의 인덱스를 가지는 패딩 데이터는 P 내지 2P-1의 인덱스를 가지는 입력 채널 데이터와 각각 동일하고, N-P 내지 N-1의 인덱스를 가지는 패딩 데이터는 N-2P 내지 N-P-1의 인덱스를 가지는 입력 채널 데이터와 각각 동일할 수 있다. 또한, 0 내지 P-1의 인덱스를 가지는 패딩 데이터는 모두 P의 인덱스를 가지는 입력 채널 데이터와 동일하고, N-P 내지 N-1의 인덱스를 가지는 패딩 데이터는 모두 N-P-1의 인덱스를 가지는 입력 채널 데이터와 각각 동일할 수 있다. 패딩 데이터들은 미리 설정된 디폴트 값으로 설정될 수도 있다.
도 6은 다른 실시예에 따른 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법을 나타내는 도면이다.
도 6을 참고하면, 일 실시예에 따른 6개의 입력 채널 데이터(600, 610, 620, 630, 640, 650)들에 대하여 4개의 출력 채널 데이터(660, 670, 680, 690)들을 획득하는 과정이 구체적으로 설명된다. 구체적으로, 도 5a 내지 도 5c와 달리 입력 채널 데이터 중 일부를 복사하는 패딩 데이터가 없이 입력 채널 데이터만으로 컨볼루션 연산이 수행되는 과정을 설명한다.
도 4의 종래의 컨볼루션 연산에 따르면, 6개의 입력 채널 데이터에 대하여 4개의 출력 채널 데이터를 획득하는 경우에 4x6의 24개의 커널 필터가 필요하지만, 도 6에서는 후술되는 바와 같이, 12개의 커널 필터가 이용되어 연산량이 절감될 수 있다.
도 6의 컨볼루션 과정은 도 5a 내지 5c의 컨볼루션 과정과 패딩 데이터의 존재를 빼면 동일하다. 구체적으로, 6개의 입력 채널 데이터(600, 610, 620, 630, 640, 650)로부터 선택된 3개의 제1 입력 채널 데이터(600, 610, 620)들을 포함하는 제1 입력 채널 데이터 그룹에 대하여 3개의 제1 커널 필터(601, 602, 603)들을 포함하는 제1 커널 필터 그룹에 적용함으로써, 제1 입력 채널 데이터(600, 610, 620) 각각과 제1 커널 필터(601, 602, 603)들 각각에 대하여 컨볼루션하고 더하는 컨볼루션 연산을 수행함으로써 제 1 출력 채널 데이터(660)가 획득되고, 6개의 입력 채널 데이터로부터 선택된 3개의 제2 입력 채널 데이터(610, 620, 630)들을 포함하는 제2 입력 채널 데이터 그룹에 대하여 3개의 제2 커널 필터(611, 612, 613)들을 포함하는 제2 커널 필터 그룹에 적용함으로써, 제2 입력 채널 데이터(610, 620, 630) 각각과 제2 커널 필터(611, 612, 613)들 각각에 대하여 컨볼루션하고 더하는 컨볼루션 연산을 수행함으로써 제 2 출력 채널 데이터(670)가 획득되고, 6개의 입력 채널 데이터로부터 선택된 3개의 제3 입력 채널 데이터(620, 630, 640)들을 포함하는 제3 입력 채널 데이터 그룹에 대하여 3개의 제3 커널 필터(621, 622, 623)들을 포함하는 제3 커널 필터 그룹에 적용함으로써, 제3 입력 채널 데이터(620, 630, 640) 각각과 제3 커널 필터(621, 622, 623)들 각각에 대하여 컨볼루션하고 더하는 컨볼루션 연산을 수행함으로써 제 3 출력 채널 데이터(680)가 획득되고, 6개의 입력 채널 데이터로부터 선택된 3개의 제4 입력 채널 데이터(630, 640, 650)들을 포함하는 제4 입력 채널 데이터 그룹에 대하여 3개의 제4 커널 필터(631, 632, 633)들을 포함하는 제4 커널 필터 그룹에 적용함으로써, 제4 입력 채널 데이터(630, 640, 650) 각각과 제4 커널 필터(631, 632, 633)들 각각에 대하여 컨볼루션하고 더하는 컨볼루션 연산을 수행함으로써 제 4 출력 채널 데이터(690)가 획득될 수 있다.
도 5a 내지 도 6은 채널 스트라이드(stride)가 1인 경우를 가정하여 설명된 실시예들이다.
도 5a 내지 도 6을 참고하면, 입력 채널 데이터 그룹에 적용되는 커널 필터 그룹의 커널 필터의 개수(K, 예를 들어, K=3)보다 채널 스트라이드(S, 예를 들어, S=1)가 작기 때문에, 입력 채널 데이터 그룹에 포함되는 입력 채널 데이터가 서로 다른 커널 필터 그룹의 커널 필터에 각각 적용되어 컨볼루션 연산을 통해 서로 다른 출력 채널 데이터를 획득하는데 영향을 줄 수 있다. 따라서, 입력 채널 데이터가 서로 다른 출력 채널 데이터를 결정하는데 영향을 주고, 복수의 입력 채널 데이터를 포함하는 입력 채널 데이터 그룹이 커널 필터 그룹에 적용되어 출력 채널 데이터를 결정하므로, 복수의 입력 채널 데이터와 복수의 출력 채널 데이터들이 서로 영향을 주고 받게 된다.
도 7은 다른 실시예에 따른 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법을 나타내는 도면이다.
도 7은 채널 스트라이드가 2인 경우를 나타낸다.
도 7을 참고하면, 9개의 입력 채널 데이터(700, 705, 710, 715, 720, 725, 730, 735, 740)에 대하여 4개의 출력 채널 데이터(745, 750, 755, 760) 가 획득되는 과정이 구체적으로 설명된다.
구체적으로, 9개의 입력 채널 데이터(700, 705, 710, 715, 720, 725, 730, 735, 740)로부터 선택된 3개의 제1 입력 채널 데이터(700, 705, 710)들을 포함하는 제1 입력 채널 데이터 그룹에 대하여 3개의 제1 커널 필터(701, 702, 703)들을 포함하는 제1 커널 필터 그룹에 적용함으로써, 제1 입력 채널 데이터(700, 705, 710) 각각과 제1 커널 필터(701, 702, 703)들 각각에 대하여 컨볼루션하고 더하는 컨볼루션 연산을 수행함으로써 제 1 출력 채널 데이터(745)가 획득되고, 9개의 입력 채널 데이터로부터 선택된 3개의 제2 입력 채널 데이터(710, 715, 720)들을 포함하는 제2 입력 채널 데이터 그룹에 대하여 3개의 제2 커널 필터(711, 712, 713)들을 포함하는 제2 커널 필터 그룹에 적용함으로써, 제2 입력 채널 데이터(710, 715, 720) 각각과 제2 커널 필터(711, 712, 713)들 각각에 대하여 컨볼루션하고 더하는 컨볼루션 연산을 수행함으로써 제 2 출력 채널 데이터(750)가 획득될 수 있다. 여기서, 선택된 제2 입력 채널 데이터들은 제1 입력 채널 데이터들과의 간격의 크기가 상기 채널 스트라이드의 크기 S일 수 있다. 마찬가지로, 9개의 입력 채널 데이터로부터 선택된 3개의 제3 입력 채널 데이터(720, 725, 730)들을 포함하는 제3 입력 채널 데이터 그룹에 대하여 3개의 제3 커널 필터(721, 722, 723)들을 포함하는 제3 커널 필터 그룹에 적용함으로써, 제3 입력 채널 데이터(720, 725, 730) 각각과 제3 커널 필터(721, 722, 723)들 각각에 대하여 컨볼루션하고 더하는 컨볼루션 연산을 수행함으로써 제 3 출력 채널 데이터(755)가 획득되고, 9개의 입력 채널 데이터로부터 선택된 3개의 제4 입력 채널 데이터(730, 735, 740)들을 포함하는 제4 입력 채널 데이터 그룹에 대하여 3개의 제4 커널 필터(731, 732, 733)들을 포함하는 제4 커널 필터 그룹에 적용함으로써, 제4 입력 채널 데이터(730, 735, 740) 각각과 제4 커널 필터(731, 732, 733)들 각각에 대하여 컨볼루션하고 더하는 컨볼루션 연산을 수행함으로써 제 4 출력 채널 데이터(760)가 획득될 수 있다.
도 7의 경우에, 도 4의 종래의 컨볼루션 연산 방법으로 컨볼루션 연산을 수행하면, 입력 채널 데이터의 수인 9와 출력 채널 데이터의 수인 4의 곱인 36개의 커널 필터가 요구되지만, 도 7의 실시예에 따른 컨볼루션 연산을 수행하면, 12개의 커널 필터만 요구된다.
또한, 커널 필터의 크기가 3x3이라 가정하면, 도 4의 종래의 컨볼루션 연산이 적용되면, 컨볼루션 연산에 324개의 파라미터가 요구되지만, 도 7의 실시예에 따라 컨볼루션 연산을 수행하면, 108개의 파라미터만 요구된다.
도 8은 다른 실시예에 따른 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법을 나타내는 도면이다.
도 8을 참고하면, 채널 스트라이드가 1이고, 4개의 입력 채널 데이터(805, 810, 815, 820)와 2개의 패딩 데이터(800, 825)를 포함하는 새로운 입력 채널 데이터에 대하여 8개의 출력 채널 데이터(830, 835, 840, 845, 850, 855, 860, 860)를 획득하는 과정이 구체적으로 설명된다.
6개의 입력 채널 데이터(800, 805, 810, 815, 820, 825)로부터 선택된 3개의 제1 입력 채널 데이터(800, 805, 810)들을 포함하는 제1 입력 채널 데이터 그룹에 대하여 3개의 제1 커널 필터(801, 802, 803)들을 포함하는 제1 커널 필터 그룹에 적용함으로써, 제1 입력 채널 데이터(800, 805, 810) 각각과 제1 커널 필터(801, 802, 803)들 각각에 대하여 컨볼루션 연산을 수행함으로써 제 1 출력 채널 데이터(830)가 획득되고, 상기 제1 입력 채널 데이터 그룹에 대하여 3개의 제2 커널 필터(811, 812, 813)들을 포함하는 제2 커널 필터 그룹에 적용함으로써, 제1 입력 채널 데이터 각각과 제2 커널 필터(811, 812, 813)들 각각에 대하여 컨볼루션 연산을 수행함으로써 제 2 출력 채널 데이터(835)가 획득될 수 있다. 마찬가지로, 6개의 입력 채널 데이터로부터 선택된 3개의 제2 입력 채널 데이터(805, 810, 815)들을 포함하는 제2 입력 채널 데이터 그룹에 대하여 3개의 제3 커널 필터(821, 822, 823)들을 포함하는 제3 커널 필터 그룹에 적용함으로써, 제2 입력 채널 데이터(805, 810, 815) 각각과 제3 커널 필터(821, 822, 823)들 각각에 대하여 컨볼루션 연산을 수행함으로써 제 3 출력 채널 데이터(840)가 획득되고, 6개의 입력 채널 데이터로부터 선택된 3개의 제2 입력 채널 데이터(805, 810, 815)들을 포함하는 제2 입력 채널 데이터 그룹에 대하여 3개의 제4 커널 필터(831, 832, 833)들을 포함하는 제4 커널 필터 그룹에 적용함으로써, 제2 입력 채널 데이터(805, 810, 815) 각각과 제4 커널 필터(831, 832, 833)들 각각에 대하여 컨볼루션 연산을 수행함으로써 제 4 출력 채널 데이터(845)가 획득되고, 6개의 입력 채널 데이터로부터 선택된 3개의 제3 입력 채널 데이터(810, 815, 820)들을 포함하는 제3 입력 채널 데이터 그룹에 대하여 3개의 제5 커널 필터(841, 842, 843)들을 포함하는 제5 커널 필터 그룹에 적용함으로써, 제3 입력 채널 데이터(810, 815, 820) 각각과 제5 커널 필터(851, 852, 853)들 각각에 대하여 컨볼루션 연산을 수행함으로써 제 5 출력 채널 데이터(850)가 획득되고, 6개의 입력 채널 데이터로부터 선택된 3개의 제3 입력 채널 데이터(810, 815, 820)들을 포함하는 제3 입력 채널 데이터 그룹에 대하여 3개의 제6 커널 필터(851, 852, 853)들을 포함하는 제6 커널 필터 그룹에 적용함으로써, 제3 입력 채널 데이터(810, 815, 820)각각과 제6 커널 필터(851, 852, 853)들 각각에 대하여 컨볼루션 연산을 수행함으로써 제 6 출력 채널 데이터(855)가 획득되고, 6개의 입력 채널 데이터로부터 선택된 3개의 제4 입력 채널 데이터(815, 820, 825)들을 포함하는 제4 입력 채널 데이터 그룹에 대하여 3개의 제7 커널 필터(861, 862, 863)들을 포함하는 제7 커널 필터 그룹에 적용함으로써, 제4 입력 채널 데이터(815, 820, 825) 각각과 제7 커널 필터(861, 862, 863)들 각각에 대하여 컨볼루션 연산을 수행함으로써 제 7 출력 채널 데이터(860)가 획득되고, 6개의 입력 채널 데이터로부터 선택된 3개의 제4 입력 채널 데이터(815, 820, 825)들을 포함하는 제4 입력 채널 데이터 그룹에 대하여 3개의 제8 커널 필터(871, 872, 873)들을 포함하는 제8 커널 필터 그룹에 적용함으로써, 제4 입력 채널 데이터(815, 820, 825) 각각과 제8 커널 필터(871, 872, 73)들 각각에 대하여 컨볼루션 연산을 수행함으로써 제 8 출력 채널 데이터(865)가 획득될 수 있다.
도 8의 경우에, 도 4의 종래의 컨볼루션 연산 방법으로 컨볼루션 연산을 수행하면, 입력 채널 데이터의 수인 4와 출력 채널 데이터의 수인 8의 곱인 32개의 커널 필터가 요구되지만, 도 8의 실시예에 따른 컨볼루션 연산을 수행하면, 24개의 커널 필터만 요구된다.
도 8의 경우에, 입력 채널 데이터 그룹에 하나의 커널 필터 그룹이 아니라 복수 개의 커널 필터 그룹을 각각 적용하여 출력 채널 데이터를 획득하는 경우, 획득되는 파라미터의 수는 다음 수학식 5에 의해 결정된다.
[수학식 5]
param_num = ch_kernel * kernel_W * kernel_H * L * ((in_ch - kernel_num + 2*pad)/ch_stride + 1)
여기서, param_num은 파라미터의 수이고, ch_kernel은 입력 채널 데이터 그룹에 적용되는 커널 필터 그룹에 포함되는 커널 필터의 개수이고, kernel_W는 커널 필터의 너비이고, kernel_H는 커널 필터의 높이이고, in_ch는 입력 채널 데이터의 개수이고, kernel_num은 커널 필터 그룹에 적용되는 입력 채널 데이터 그룹의 입력 채널 데이터의 개수이고, 2*pad는 패딩 데이터의 개수이고, ch_stride는 커널 필터 그룹을 적용하는 입력 채널 데이터의 인덱스 간격이고, L은 입력 채널 데이터 그룹에 적용되는 커널 필터 그룹의 수를 의미한다.
예를 들어, 커널 필터의 사이즈가 3x3라고 가정하여 도 8의 실시예에 수학식 4을 적용하면, 파라미터의 수는 216개이다. 이는 동일한 조건에서 도 4의 종래의 컨볼루션 연산을 통해 얻어지는 파라미터의 수인 288개보다 적은 것이다.
도 9는 일 실시예에 따른 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산의 수행 결과와 종래 기술들의 결과를 비교한 도면이다.
다이아 몬드(◇, 810)는 종래 기술의 적용 결과이고, 세모(△, 820)와 엑스(×, 830)는 MobileNet의 적용 결과이고, 별(*, 840) 및 원(○, 850)은 ShuffleNet의 적용 결과이다. 네모(□, 800)는 일 실시예에 따른 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법의 적용 결과이다. 도 9를 참고하면, 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법은 도 6과 같이 종래의 컨볼루션 연산에 비하여 성능 저하가 거의 없으면서, 파라미터의 수(곱셈, 덧셈 연산량)는 1/3 수준이고, 연산량을 절감하기 위한 연구의 결과인 MobileNet 및 ShuffleNet에 비해 동일 연산량 대비 최대 신호 대비 잡음비(Peak Signal to Noise Ratio; PSNR)를 1dB이상 향상할 수 있다.
또한, 도 1의 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 전자 장치(100)의 프로세서(120)의 동작들은 소프트웨어 모듈로 구현될 수 있다. 프로세서(120)가 소프트웨어 모듈(또는, 인스터력션(instruction) 포함하는 프로그램 모듈)로 구현되는 경우, 소프트웨어 모듈은 컴퓨터로 읽을 수 있는 판독 가능한 비일시적 판독 가능 기록매체(non-transitory computer readable media)에 저장될 수 있다. 또한, 이 경우, 적어도 하나의 소프트웨어 모듈은 OS(Operating System)에 의해 제공되거나, 소정의 애플리케이션에 의해 제공될 수 있다. 또는, 적어도 하나의 소프트웨어 모듈 중 일부는 OS(Operating System)에 의해 제공되고, 나머지 일부는 소정의 애플리케이션에 의해 제공될 수 있다.
블록도의 각 구성요소는 실제 구현되는 영상 처리 장치(100)의 사양에 따라 통합, 추가, 또는 생략될 수 있다. 즉, 필요에 따라 2 이상의 구성요소가 하나의 구성요소로 합쳐지거나, 혹은 하나의 구성요소가 2 이상의 구성요소로 세분되어 구성될 수 있다. 또한, 각 블록에서 수행하는 기능은 실시예들을 설명하기 위한 것이며, 그 구체적인 동작이나 장치는 본 발명의 권리범위를 제한하지 아니한다.
일 실시예에 따른 전자 장치(100)가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
또한, 개시된 실시예들에 따른 영상 처리 장치 및 영상 처리 장치의 동작방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다.
컴퓨터 프로그램 제품은 S/W 프로그램, S/W 프로그램이 저장된 컴퓨터로 읽을 수 있는 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 프로그램 제품은 전자 장치의 제조사 또는 전자 마켓(예, 구글 플레이 스토어, 앱 스토어)을 통해 전자적으로 배포되는 S/W 프로그램 형태의 상품(예, 다운로더블 앱)을 포함할 수 있다. 전자적 배포를 위하여, S/W 프로그램의 적어도 일부는 저장 매체에 저장되거나, 임시적으로 생성될 수 있다. 이 경우, 저장 매체는 제조사의 서버, 전자 마켓의 서버, 또는 SW 프로그램을 임시적으로 저장하는 중계 서버의 저장매체가 될 수 있다.
컴퓨터 프로그램 제품은, 서버 및 클라이언트 장치로 구성되는 시스템에서, 서버의 저장매체 또는 클라이언트 장치의 저장매체를 포함할 수 있다. 또는, 서버 또는 클라이언트 장치와 통신 연결되는 제3 장치(예, 스마트폰)가 존재하는 경우, 컴퓨터 프로그램 제품은 제3 장치의 저장매체를 포함할 수 있다. 또는, 컴퓨터 프로그램 제품은 서버로부터 클라이언트 장치 또는 제3 장치로 전송되거나, 제3 장치로부터 클라이언트 장치로 전송되는 S/W 프로그램 자체를 포함할 수 있다.
이 경우, 서버, 클라이언트 장치 및 제3 장치 중 하나가 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 수행할 수 있다. 또는, 서버, 클라이언트 장치 및 제3 장치 중 둘 이상이 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 분산하여 실시할 수 있다.
예를 들면, 서버(예로, 클라우드 서버 또는 인공 지능 서버 등)가 서버에 저장된 컴퓨터 프로그램 제품을 실행하여, 서버와 통신 연결된 클라이언트 장치가 개시된 실시예들에 따른 방법을 수행하도록 제어할 수 있다.
이상에서 실시예들에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속한다.
Claims (15)
- 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법에 있어서,
N개의 입력 채널 데이터를 획득하는 단계;
N개의 상기 입력 채널 데이터로부터 선택된 K개의 제1 입력 채널 데이터들을 포함하는 제1 입력 채널 데이터 그룹을, K개의 제1 커널 필터들을 포함하는 제1 커널 필터 그룹에 적용함으로써, 제1 컨볼루션 연산을 수행하는 단계;
N개의 상기 입력 채널 데이터로부터 선택된 K개의 제2 입력 채널 데이터들을 포함하는 제2 입력 채널 데이터 그룹을, K개의 제2 커널 필터들을 포함하는 제2 커널 필터 그룹에 적용함으로써, 제2 컨볼루션 연산을 수행하는 단계; 및
상기 제1 컨볼루션 연산 및 상기 제2 컨볼루션 연산에 기초하여, 출력 채널 데이터를 획득하는 단계를 포함하고
K는 N보다 작은 자연수인 것인, 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법. - 제 1 항에 있어서,
N개의 상기 입력 채널 데이터는, 0부터 N-1까지의 인덱스를 가지고,
상기 제1 입력 채널 데이터 그룹은 0부터 K-1의 인덱스에 대응되는 제1 입력 채널 데이터들을 포함하고,
상기 제2 입력 채널 데이터 그룹은 S부터 S+K-1의 인덱스에 대응되는 제2 입력 채널 데이터들을 포함하고,
상기 S는 기설정된 채널 스트라이드에 의해 결정되는 것인, 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법. - 제 2 항에 있어서,
상기 제1 입력 채널 데이터들은, 상기 0부터 K-1의 인덱스에 각각 대응되는 입력 채널 데이터들을 포함하고,
상기 제2 입력 채널 데이터들은, 상기 S부터 S+K-1의 인덱스에 각각 대응되는 입력 채널 데이터들을 포함하는, 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법. - 제 2 항에 있어서,
상기 출력 채널 데이터의 개수는 S 및 K에 기초하여 결정되는, 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법. - 제 1 항에 있어서,
상기 N개의 입력 채널 데이터는, 기설정된 개수의 패딩 데이터를 포함하는, 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법. - 제 2 항에 있어서,
상기 입력 채널 데이터들 중에서, 0 내지 P-1의 인덱스에 대응되는 입력 채널 데이터 및 N-P 부터 N-1의 인덱스에 대응되는 입력 채널 데이터들은 패딩 데이터인, 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법. - 제 6 항에 있어서,
상기 패딩 데이터는, 상기 입력 채널 데이터들 중에서, 상기 소정 레이어 이전의 레이어에서 연산된 출력 데이터들로부터 선택된 일부와 동일하도록 복사된 것인, 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법. - 제 1 항에 있어서,
상기 입력 채널 데이터는, 상기 전자 장치에서 처리하는 이미지 데이터에 기초하는, 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법. - 제 1 항에 있어서,
상기 컨볼루션 연산은, CNN 네트워크 내에서 수행되는, 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법. - 하나 이상의 인스트럭션들을 저장하는 메모리; 및
상기 메모리에 저장된 상기 하나 이상의 인스트럭션들을 실행하는 프로세서를 포함하고,
상기 프로세서는:
N개의 입력 채널 데이터를 획득하고,
N개의 상기 입력 채널 데이터로부터 선택된 K개의 제1 입력 채널 데이터들을 포함하는 제1 입력 채널 데이터 그룹을, K개의 제1 커널 필터들을 포함하는 제1 커널 필터 그룹에 적용함으로써, 제1 컨볼루션 연산을 수행하고,
N개의 상기 입력 채널 데이터로부터 선택된 K개의 제2 입력 채널 데이터들을 포함하는 제2 입력 채널 데이터 그룹을, K개의 제2 커널 필터들을 포함하는 제2 커널 필터 그룹에 적용함으로써, 제2 컨볼루션 연산을 수행하고,
상기 제1 컨볼루션 연산 및 상기 제2 컨볼루션 연산에 기초하여, 출력 채널 데이터를 획득하고,
K는 N보다 작은 자연수인 것인, 뉴럴 네트워크의 컨볼루션 연산을 수행하는 전자 장치. - 제 10 항에 있어서,
N개의 상기 입력 채널 데이터는, 0부터 N-1까지의 인덱스를 가지고,
상기 제1 입력 채널 데이터 그룹은 0부터 K-1의 인덱스에 대응되는 제1 입력 채널 데이터들을 포함하고,
상기 제2 입력 채널 데이터 그룹은 S부터 S+K-1의 인덱스에 대응되는 제2 입력 채널 데이터들을 포함하고,
상기 S는 기설정된 채널 스트라이드에 의해 결정되는 것인, 뉴럴 네트워크의 컨볼루션 연산을 수행하는 전자 장치. - 제 11 항에 있어서,
상기 제1 입력 채널 데이터들은, 상기 0부터 K-1의 인덱스에 각각 대응되는 입력 채널 데이터들을 포함하고,
상기 제2 입력 채널 데이터들은, 상기 S부터 S+K-1의 인덱스에 각각 대응되는 입력 채널 데이터들을 포함하는, 뉴럴 네트워크의 컨볼루션 연산을 수행하는 전자 장치. - 제 11 항에 있어서,
상기 출력 채널 데이터의 개수는 S 및 K에 기초하여 결정되는, 뉴럴 네트워크의 컨볼루션 연산을 수행하는 전자 장치. - 제 10 항에 있어서,
상기 N개의 입력 채널 데이터는, 기설정된 개수의 패딩 데이터를 포함하는, 뉴럴 네트워크의 컨볼루션 연산을 수행하는 전자 장치. - 제 1 항의 방법을 컴퓨터에서 실행하기 위한 프로그램을 저장한 컴퓨터로 읽을 수 있는 기록매체.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190057604A KR102432254B1 (ko) | 2019-05-16 | 2019-05-16 | 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법 및 그 방법을 수행하는 전자 장치 |
PCT/KR2020/006434 WO2020231226A1 (en) | 2019-05-16 | 2020-05-15 | Method of performing, by electronic device, convolution operation at certain layer in neural network, and electronic device therefor |
US16/875,214 US12050976B2 (en) | 2019-05-16 | 2020-05-15 | Convolution operations utilizing nonzero padding data copied from input channel data |
EP20805100.3A EP3942481A4 (en) | 2019-05-16 | 2020-05-15 | METHOD OF PERFORMING A CONVOLUTION OPERATION IN A SPECIFIC LAYER OF A NEURAL NETWORK BY AN ELECTRONIC DEVICE AND ELECTRONIC DEVICE THEREFOR |
CN202080036313.6A CN113841159A (zh) | 2019-05-16 | 2020-05-15 | 由电子装置在神经网络中的特定层执行卷积运算的方法及其电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190057604A KR102432254B1 (ko) | 2019-05-16 | 2019-05-16 | 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법 및 그 방법을 수행하는 전자 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200132305A true KR20200132305A (ko) | 2020-11-25 |
KR102432254B1 KR102432254B1 (ko) | 2022-08-12 |
Family
ID=73228706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190057604A KR102432254B1 (ko) | 2019-05-16 | 2019-05-16 | 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법 및 그 방법을 수행하는 전자 장치 |
Country Status (5)
Country | Link |
---|---|
US (1) | US12050976B2 (ko) |
EP (1) | EP3942481A4 (ko) |
KR (1) | KR102432254B1 (ko) |
CN (1) | CN113841159A (ko) |
WO (1) | WO2020231226A1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220095533A (ko) * | 2020-12-30 | 2022-07-07 | 주식회사 쿠오핀 | 네트워크 프로세서와 컨볼루션 처리기를 갖는 디바이스용 신경망 처리기 |
KR102647178B1 (ko) * | 2023-12-28 | 2024-03-13 | 주식회사 모빌린트 | 합성곱 연산을 위한 방법 및 장치 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022139879A1 (en) * | 2020-12-24 | 2022-06-30 | Intel Corporation | Methods, systems, articles of manufacture and apparatus to optimize resources in edge networks |
US12111885B2 (en) * | 2021-06-28 | 2024-10-08 | International Business Machines Corporation | Image dispositioning using machine learning |
KR20240030359A (ko) * | 2022-08-30 | 2024-03-07 | 오픈엣지테크놀로지 주식회사 | 신경망에서의 연산방법 및 이를 위한 장치 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107844828A (zh) * | 2017-12-18 | 2018-03-27 | 北京地平线信息技术有限公司 | 神经网络中的卷积计算方法和电子设备 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2215588B1 (en) * | 2007-11-28 | 2012-04-04 | Honda Research Institute Europe GmbH | Artificial cognitive system with amari-type dynamics of a neural field |
US11157814B2 (en) | 2016-11-15 | 2021-10-26 | Google Llc | Efficient convolutional neural networks and techniques to reduce associated computational costs |
CN108205519B (zh) | 2016-12-20 | 2022-01-25 | 上海寒武纪信息科技有限公司 | 矩阵乘加运算装置和方法、处理装置、芯片、电子装置 |
KR20180073118A (ko) | 2016-12-22 | 2018-07-02 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
US10699160B2 (en) | 2017-08-23 | 2020-06-30 | Samsung Electronics Co., Ltd. | Neural network method and apparatus |
KR102452951B1 (ko) | 2017-08-23 | 2022-10-11 | 삼성전자주식회사 | 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치 |
US10902318B2 (en) * | 2017-11-06 | 2021-01-26 | Neuralmagic Inc. | Methods and systems for improved transforms in convolutional neural networks |
KR102578826B1 (ko) | 2017-11-08 | 2023-09-15 | 삼성전자주식회사 | 뉴럴 네트워크 장치 및 그 동작 방법 |
US11521046B2 (en) | 2017-11-08 | 2022-12-06 | Samsung Electronics Co., Ltd. | Time-delayed convolutions for neural network device and method |
-
2019
- 2019-05-16 KR KR1020190057604A patent/KR102432254B1/ko active IP Right Grant
-
2020
- 2020-05-15 US US16/875,214 patent/US12050976B2/en active Active
- 2020-05-15 CN CN202080036313.6A patent/CN113841159A/zh active Pending
- 2020-05-15 WO PCT/KR2020/006434 patent/WO2020231226A1/en unknown
- 2020-05-15 EP EP20805100.3A patent/EP3942481A4/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107844828A (zh) * | 2017-12-18 | 2018-03-27 | 北京地平线信息技术有限公司 | 神经网络中的卷积计算方法和电子设备 |
Non-Patent Citations (2)
Title |
---|
Numpy Reference, Release 1.11.0 (2016.05.29.) < URL : docs.scipy.org/doc/numpy-1.11.0/numpy-ref-1.11.0.pdf >* * |
Wang, Yunhe, et al. "Learning versatile filters for efficient convolutional neural networks." Advances in Neural Information Processing Systems 31 (2018. 12.)* * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220095533A (ko) * | 2020-12-30 | 2022-07-07 | 주식회사 쿠오핀 | 네트워크 프로세서와 컨볼루션 처리기를 갖는 디바이스용 신경망 처리기 |
KR102647178B1 (ko) * | 2023-12-28 | 2024-03-13 | 주식회사 모빌린트 | 합성곱 연산을 위한 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
CN113841159A (zh) | 2021-12-24 |
US20200364538A1 (en) | 2020-11-19 |
EP3942481A1 (en) | 2022-01-26 |
WO2020231226A1 (en) | 2020-11-19 |
KR102432254B1 (ko) | 2022-08-12 |
EP3942481A4 (en) | 2022-05-18 |
US12050976B2 (en) | 2024-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102432254B1 (ko) | 전자 장치가 뉴럴 네트워크 내의 소정 레이어에서 컨볼루션 연산을 수행하는 방법 및 그 방법을 수행하는 전자 장치 | |
US20210004663A1 (en) | Neural network device and method of quantizing parameters of neural network | |
KR102068576B1 (ko) | 합성곱 신경망 기반 이미지 처리 시스템 및 방법 | |
US20180260709A1 (en) | Calculating device and method for a sparsely connected artificial neural network | |
EP0581828B1 (en) | Improvements in neural networks | |
KR102420104B1 (ko) | 영상 처리 장치 및 그 동작방법 | |
CN111325664B (zh) | 风格迁移方法、装置、存储介质及电子设备 | |
EP3855388A1 (en) | Image processing device and operation method thereof | |
KR20200067631A (ko) | 영상 처리 장치 및 그 동작방법 | |
KR102553146B1 (ko) | 영상 처리 장치 및 그 동작방법 | |
EP4187482A1 (en) | Image processing device and operating method therefor | |
CN116501325A (zh) | 一种算子的处理方法及计算机设备 | |
US12086953B2 (en) | Image processing device and operating method thereof | |
US20220405561A1 (en) | Electronic device and controlling method of electronic device | |
KR102266903B1 (ko) | 영상 처리 장치 및 그 동작방법 | |
US20230169748A1 (en) | Image processing apparatus and operating method thereof | |
CN116997914A (zh) | 图像处理装置及其操作方法 | |
CN111931919B (zh) | 一种基于脉动阵列的稀疏神经网络计算方法及装置 | |
US20230071417A1 (en) | Image processing device and operation method thereof | |
JP7000586B2 (ja) | データ処理システムおよびデータ処理方法 | |
KR20230034127A (ko) | 영상 처리 장치 및 그 동작 방법 | |
US20220284555A1 (en) | Image processing apparatus and operation method thereof | |
KR20220125127A (ko) | 영상 처리 장치 및 그 동작방법 | |
JP6994572B2 (ja) | データ処理システムおよびデータ処理方法 | |
CN115861862A (zh) | 识别图像的方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |