KR20190048073A - 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치 - Google Patents

뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치 Download PDF

Info

Publication number
KR20190048073A
KR20190048073A KR1020170142570A KR20170142570A KR20190048073A KR 20190048073 A KR20190048073 A KR 20190048073A KR 1020170142570 A KR1020170142570 A KR 1020170142570A KR 20170142570 A KR20170142570 A KR 20170142570A KR 20190048073 A KR20190048073 A KR 20190048073A
Authority
KR
South Korea
Prior art keywords
pruning
kernels
index
processor
feature map
Prior art date
Application number
KR1020170142570A
Other languages
English (en)
Other versions
KR102452953B1 (ko
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 KR1020170142570A priority Critical patent/KR102452953B1/ko
Priority to US16/168,418 priority patent/US11521039B2/en
Publication of KR20190048073A publication Critical patent/KR20190048073A/ko
Application granted granted Critical
Publication of KR102452953B1 publication Critical patent/KR102452953B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • 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
    • 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
    • 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/156Correlation function computation including computation of convolution operations using a domain transform, e.g. Fourier transform, polynomial transform, number theoretic transform
    • 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
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/046Forward inferencing; Production systems
    • 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/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

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

Abstract

복수의 커널들에 대해 공통된 프루닝 인덱스에 따라 프루닝을 수행하여, 위노그래드 기반 컨볼루션 연산을 수행하는 방법 및 이를 위한 뉴럴 네트워크 장치를 개시한다.

Description

뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치 {Method and apparatus for performing convolution operation in neural network}
본 개시는 뉴럴 네트워크에서 위노그래드 기반 컨볼루션 연산을 수행하는 방법 및 장치에 관한 것이다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크(neural network) 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
뉴럴 네트워크 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크 장치가 고화질 입력을 실시간으로 분석하고, 정보를 추출하기 위해서 뉴럴 네트워크 연산을 효율적으로 처리할 수 있는 기술이 요구된다.
뉴럴 네트워크의 위노그래드 기반 컨볼루션 연산을 수행하는 방법 및 장치를 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따라, 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법은, 위노그래드 컨볼루션 레이어(winograd convolution layer) 상의 복수의 커널들(kernals) 및 입력 피처 맵(input feature map)을 획득하는 단계; 복수의 커널들 내에서 공통적으로 프루닝이 수행될 웨이트를 나타내는 프루닝 인덱스를 결정하는 단계; 및 복수의 커널들 각각에 대해 결정된 프루닝 인덱스에 대응되는 웨이트를 프루닝하여, 위노그래드 기반 컨볼루션 연산을 수행하는 단계;를 포함할 수 있다.
다른 측면에 따라, 뉴럴 네트워크 장치는, 적어도 하나의 프로그램이 저장된 메모리; 및 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크를 구동하는 프로세서를 포함하고, 프로세서는, 위노그래드 컨볼루션 레이어(winograd convolution layer) 상의 복수의 커널들(kernals) 및 입력 피처 맵(input feature map)을 획득하고, 복수의 커널들 내에서 공통적으로 프루닝이 수행될 웨이트를 나타내는 프루닝 인덱스를 결정하고, 복수의 커널들 각각에 대해 결정된 프루닝 인덱스에 대응되는 웨이트를 프루닝하여, 위노그래드 기반 컨볼루션 연산을 수행할 수 있다.
또 다른 측면에 따르면, 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 기록매체를 포함할 수 있다.
본 실시예들에 따르면, 뉴럴 네트워크 장치는 복수의 커널들에 대해 공통된 프루닝 인덱스에 따라 프루닝을 수행하는 바, 위노그래드 기반의 컨볼루션 연산의 수를 줄일 수 있으며 연산 속도를 향상시킬 수 있다. 구체적인 예로, 뉴럴 네트워크 장치는 위노그래드 컨볼루션 레이어의 요소 곱(elementwise multiplication) 연산의 수를 줄일 수 있으며 연산 속도를 향상시킬 수 있다.
또한, 뉴럴 네트워크 장치는 위노그래드 기반 컨볼루션 연산을 수행함에 있어서, 프루닝 인덱스와 관련된 일부 연산을 생략할 수 있는 바, 위노그래드 기반 컨볼루션 연산의 속도를 향상시킬 수 있다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 뉴럴 네트워크에서 입력 피처맵 및 출력 피처맵의 관계를 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
도 4는 프로세서가 위노그래드 기반 컨볼루션 연산을 수행하는 실시예를 나타낸다.
도 5는 프로세서가 복수의 커널들을 그룹화하여 프루닝 인덱스를 결정하는 실시예를 나타낸다.
도 6은 일 실시예에 따라, 프로세서가 웨이트 값을 이용하여 프루닝 인덱스를 결정하는 실시예를 나타낸다.
도 7은 다른 실시예에 따라, 프로세서가 중간 연산 값을 이용하여 프루닝 인덱스를 결정하는 실시예를 나타낸다.
도 8은 프로세서가 위노그래드 기반 컨볼루션을 수행하는 구체적인 실시예를 나타낸다.
도 9는 일 실시예에 따라, 뉴럴 네트워크 장치의 동작 방법을 설명하기 위한 도면이다.
본 실시예들에서 사용되는 용어는 본 실시예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.
실시예들에 대한 설명들에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
하기 실시예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시예들의 권리범위에 속하는 것으로 해석되어야 할 것이다. 이하 첨부된 도면들을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다.
도 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) 레이어 등을 더 포함할 수 있다.
뉴럴 네트워크(1)는 입력 이미지, 피처맵들(feature maps) 및 출력을 포함하는 복수 레이어들을 갖는 아키텍처로 구현될 수 있다. 뉴럴 네트워크(1)에서 입력 이미지는 커널(kernel)이라 불리는 필터와의 컨볼루션 연산이 수행되고, 그 결과 피처맵들이 출력된다. 이때 생성된 출력 피처맵들은 입력 피처맵들로서 다시 커널과의 컨볼루션 연산이 수행되고, 새로운 피처맵들이 출력된다. 이와 같은 컨볼루션 연산이 반복적으로 수행된 결과, 최종적으로는 뉴럴 네트워크(1)를 통한 입력 이미지의 특징들에 대한 인식 결과가 출력될 수 있다.
예를 들어, 도 1의 뉴럴 네트워크(1)에 24ⅹ24 픽셀 크기의 이미지가 입력된 경우, 입력 이미지는 커널과의 컨볼루션 연산을 통해 20ⅹ20 크기를 갖는 4채널의 피처맵들로 출력될 수 있다. 이후에도, 20ⅹ20 피처맵들은 커널과의 반복적인 컨볼루션 연산을 통해 크기가 줄어들면서, 최종적으로는 1ⅹ1 크기의 특징들이 출력될 수 있다. 뉴럴 네트워크(1)는 여러 레이어들에서 컨볼루션 연산 및 서브샘플링(또는 풀링) 연산을 반복적으로 수행함으로써 입력 이미지로부터 이미지 전체를 대표할 수 있는 강인한 특징들을 필터링하여 출력하고, 출력된 최종 특징들을 통해 입력 이미지의 인식 결과를 도출할 수 있다.
도 2는 일 실시예에 따른 뉴럴 네트워크에서 입력 피처맵 및 출력 피처맵의 관계를 설명하기 위한 도면이다.
도 2를 참고하면, 뉴럴 네트워크의 어느 레이어(2)에서, 제1피처맵(FM1)은 입력 피처맵에 해당될 수 있고, 제2피처 맵(FM2)는 출력 피처맵에 해당될 수 있다. 피처맵은 입력 데이터의 다양한 특징들이 표현된 데이터 세트를 의미할 수 있다. 피처맵들(FM1, FM2)은 2차원 매트릭스의 엘리먼트들을 갖거나 또는 3차원 매트릭스의 엘리먼트들을 가질 수 있고, 각각의 엘리먼트에는 픽셀 값이 정의될 수 있다. 피처 맵들(FM1, FM2)은 너비(W)(또는 칼럼이라고 함), 높이(H)(또는 로우라고 함) 및 깊이(C)를 가진다. 이때, 깊이(C)는 채널들의 개수에 해당될 수 있다.
제1피처맵(FM1) 및 커널의 웨이트맵(WM)에 대한 컨볼루션 연산이 수행될 수 있고, 그 결과 제2피처맵(FM2)이 생성될 수 있다. 웨이트맵(WM)은 각 엘리먼트에 정의된 웨이트로 제1피처맵(FM1)과 컨볼루션 연산을 수행함으로써 제1피처맵(FM1)의 특징들을 필터링한다. 웨이트맵(WM)은 제1피처맵(FM1)을 슬라이딩 윈도우 방식으로 시프트하면서 제1피처맵(FM1)의 윈도우들(또는 타일이라고도 함)과 컨볼루션 연산을 수행한다. 각 시프트 동안, 웨이트맵(WM)에 포함된 웨이트들 각각은 제1피처맵(FM1) 내 중첩된 윈도우의 픽셀 값들 각각과 곱해지고 더해질 수 있다. 제1피처맵(FM1)과 웨이트맵(WM)이 컨볼루션됨에 따라, 제2피처맵(FM2)의 하나의 채널이 생성될 수 있다. 도 1에는 하나의 커널에 대한 웨이트맵(WM)이 도시되었으나, 실제로는 복수의 커널들의 웨이트 맵들이 제1피처맵(FM1)과 각각 컨볼루션되어, 복수의 채널들의 제2피처맵(FM2)이 생성될 수 있다.
한편, 제2피처맵(FM2)은 다음 레이어의 입력 피처맵에 해당될 수 있다. 예를 들어, 제2피처맵(FM2)은 풀링(또는 서브샘플링) 레이어의 입력 피처맵이 될 수 있다.
도 1 및 도 2에서는 설명의 편의를 위하여 뉴럴 네트워크(1)의 개략적인 아키텍처에 대해서만 도시되어 있다. 하지만, 뉴럴 네트워크(1)는 도시된 바와 달리, 보다 많거나 적은 개수의 레이어들, 피처맵들, 커널들 등으로 구현될 수 있고, 그 크기들 또한 다양하게 변형될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
도 3은 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
뉴럴 네트워크 장치(10)는 PC(personal computer), 서버 디바이스, 모바일 디바이스, 임베디드 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있고, 구체적인 예로서 뉴럴 네트워크를 이용한 음성 인식, 영상 인식, 영상 분류 등을 수행하는 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스, 자율주행 자동차, 로보틱스, 의료기기 등에 해당될 수 있으나, 이에 제한되지 않는다. 나아가서, 뉴럴 네트워크 장치(10)는 위와 같은 디바이스에 탑재되는 전용 하드웨어 가속기(HW accelerator)에 해당될 수 있고, 뉴럴 네트워크 장치(10)는 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등과 같은 하드웨어 가속기일 수 있으나, 이에 제한되지 않는다.
도 3을 참고하면, 뉴럴 네트워크 장치(10)는 프로세서(120) 및 메모리(110)를 포함한다. 도 3에 도시된 뉴럴 네트워크 장치(10)에는 본 실시예들와 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 장치(10)에는 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당해 기술분야의 통상의 기술자에게 자명하다.
프로세서(120)는 뉴럴 네트워크 장치(10)를 실행하기 위한 전반적인 기능들을 제어하는 역할을 한다. 예를 들어, 프로세서(120)는 뉴럴 네트워크 장치(10) 내의 메모리(110)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(10)를 전반적으로 제어한다. 프로세서(120)는 뉴럴 네트워크 장치(10) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
메모리(110)는 뉴럴 네트워크 장치(10) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 메모리(110)는 뉴럴 네트워크 장치(10)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(110)는 뉴럴 네트워크 장치(10)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 메모리(110)는 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), 또는 플래시 메모리를 포함할 수 있다.
프로세서(120)는 메모리(110)로부터 뉴럴 네트워크 데이터, 예를 들어 이미지 데이터, 피처맵 데이터, 커널 데이터 등을 읽기/쓰기(read/write)하고, 읽기/쓰기된 데이터를 이용하여 뉴럴 네트워크를 실행한다. 뉴럴 네트워크가 실행될 때, 프로세서(120)는 출력 피처맵에 관한 데이터를 생성하기 위하여, 입력 피처맵과 커널 간의 컨볼루션 연산을 반복적으로 수행한다. 이때, 입력 피처맵의 채널 수, 커널의 채널 수, 입력 피처맵의 크기, 커널의 크기, 값의 정밀도(precision) 등의 다양한 팩터들에 의존하여 컨볼루션 연산의 연산량이 결정될 수 있다. 도 1에 도시된 뉴럴 네트워크(1)와 달리, 뉴럴 네트워크 장치(10)에서 구동되는 실제 뉴럴 네트워크는 보다 복잡한 아키텍처로 구현될 수 있다. 이에 따라 프로세서(120)는 수억에서 수백억에 다다를 정도로 매우 많은 연산량(operation count)의 컨볼루션 연산들을 수행하게 되고, 프로세서(120)가 컨볼루션 연산을 위해 메모리(110)에 액세스하는 빈도가 함께 비약적으로 증가될 수 있다.
프로세서(120)는 위노그래드 기반 컨볼루션(Winograd-Based-Convolution) 연산을 수행할 수 있다. 위노그래드 기반 컨볼루션은, 효율적인 컨볼루션 알고리즘으로써, 컨볼루션 연산들을 실행하기 위해 요구되는 곱셈 연산의 개수를 상당히 감소시킬 수 있다. 구체적으로, 프로세서(120)는 컨볼루션 레이어 상의 입력 피처 맵 및 복수의 커널들에 대해 위노그래드 변환(Winograd Transform)을 수행하여, 위노그래드 기반 컨볼루션 연산을 수행할 수 있다.
예를 들어, 컨볼루션 레이어 상의 입력 피처 맵이 1Ⅹ4 매트릭스인
Figure pat00001
인 경우, 프로세서(120)는
Figure pat00002
에 대해 위노그래드 변환을 수행하여, 위노그래드 컨볼루션 레이어 상의 입력 피처 맵인
Figure pat00003
를 획득할 수 있다. 또한, 컨볼루션 레이어 상의 커널이 1Ⅹ3 매트릭스인
Figure pat00004
인 경우, 프로세서(120)는
Figure pat00005
에 대해 위노그래드 변환을 수행하여, 위노그래드 컨볼루션 레이어 상의 커널인
Figure pat00006
를 획득할 수 있다. 이어서, 프로세서(120)는 하기 수학식 1에 따라 위노그래드 기반 컨볼루션 연산을 수행하여, 출력 피처 맵
Figure pat00007
를 획득할 수 있다.
Figure pat00008
프로세서(120)는 위노그래드 컨볼루션 레이어 상의 복수의 커널들 및 입력 피처 맵을 획득할 수 있다. 일 실시예에 따라, 프로세서(120)는 컨볼루션 레이어 상의 입력 피처 맵 및 복수의 커널들을 메모리(110)로부터 획득할 수 있고, 획득된 컨볼루션 레이어 상의 입력 피처 맵 및 복수의 커널들에 대해 위노그래드 변환을 수행하여, 위노그래드 컨볼루션 레이어 상의 복수의 커널들 및 입력 피처 맵을 획득할 수 있다. 다른 실시예에 따라, 프로세서(120)는 메모리(110)로부터 직접적으로 위노 그래드 컨볼루션 레이어 상의 복수의 커널들 및 입력 피처 맵을 획득할 수 있다.
프로세서(120)는 위노그래드 컨볼루션 레이어 상의 복수의 커널들 내에서 공통적으로 프루닝(pruning)이 수행될 웨이트를 나타내는 프루닝 인덱스를 결정할 수 있다. 프루닝은, 커널 내 웨이트의 값을 0(zero)으로 설정하는 과정을 의미할 수 있다. 또한, 프루닝은, 넓은 의미에서, 커널 내의 웨이트를 0으로 설정하여 컨볼루션 연산을 수행하고, 추가 학습을 통해 잃어버린 정확도를 보상하는 과정을 의미할 수 있다. 인덱스는, 맵 또는 커널 내에서, 구성요소의 공간적 위치를 의미할 수 있다. 예를 들어, 커널이 웨이트를 구성요소로 갖는 2차원 매트릭스인 경우, 인덱스는 매트릭스의 [로우(row), 칼럼(column)]을 의미할 수 있다. 프루닝 인덱스는 복수의 커널들 내에서 공통적으로 프루닝이 수행될 웨이트의 공간적 위치를 의미할 수 있다. 예를 들어, 복수의 커널들 각각이 mⅹn 매트릭스(여기서, m 및 n은 자연수)이고, 프루닝 인덱스가 [로우, 칼럼]=[x, y](여기서, x는 m 이하의 정수, y는 n 이하의 정수)인 경우, 프로세서(120)는 복수의 커널들 각각에서 [x, y]에 대응되는 웨이트들을 프루닝할 수 있다.
프로세서(120)는 커널 내 웨이트들 각각의 위치를 나타내는 인덱스들 중에서 프루닝 인덱스를 결정할 수 있다. 다시 말해, 프로세서(120)는 인덱스들 중에서 적어도 하나의 인덱스를, 복수의 커널들 각각에 일괄적으로 프루닝을 수행하기 위한 프루닝 인덱스로 결정할 수 있다.
일 실시예에 따라, 프로세서(120)는 복수의 커널들 내의 동일한 인덱스에 대응되는 웨이트들의 대표값을, 커널 내 인덱스들 각각에 대해, 계산할 수 있다. 웨이트들의 대표값은 웨이트들의 평균치, 제곱평균제곱근(Root-means square), 중간치 중 적어도 하나가 될 수 있으나, 이에 제한되지 않는다.
이어서, 프로세서(120)는 인덱스들 각각에 대해 계산된 대표값에 기초하여, 인덱스들 중에서 프루닝 인덱스를 결정할 수 있다. 일 실시예에 따라, 프로세서(120)는 인덱스들 중에서 기 설정된 임계치 미만의 대표값을 갖는 인덱스를 프루닝 인덱스로 결정할 수 있다. 다른 실시예에 따라, 프로세서(120)는 전체 인덱스의 개수의 기 설정된 비율 미만의 개수를 기준으로, 프루닝 인덱스 개수를 결정할 수 있다. 또 다른 실시예에 따라, 프루닝에 따른 위노그래드 컨볼루션 결과의 오차율이 존재할 수 있는 바, 프로세서(120)는 기 설정된 값 미만의 오차율을 만족하기 위한 프루닝 인덱스의 개수를 결정할 수 있다.
다른 실시예에 따라, 프로세서(120)는, 위노그래드 컨볼루션 레이어 상에서, 복수의 커널들 각각과 입력 피처 맵 간의 요소별 곱(elementwise multiplication) 연산을 수행하여 복수의 중간 맵들을 획득할 수 있다. 프로세서(120)는, 요소별 곱 연산을 수행하는 바, 복수의 커널들 각각과 대응되는 복수의 중간 맵들을 획득할 수 있다.
이어서, 프로세서(120)는 복수의 중간 맵들의 동일한 인덱스에 대응되는 요소들의 대표값을, 중간 맵 내 인덱스들 각각마다, 계산할 수 있다. 요소들의 대표값은 요소들의 평균치, 제곱평균제곱근(Root-means square), 중간치 중 적어도 하나가 될 수 있으나, 이에 제한되지 않는다. 이어서, 프로세서(120)는 인덱스들 각각에 대해 계산된 대표값에 기초하여, 인덱스들 중에서 프루닝 인덱스를 결정할 수 있다.
프로세서(120)는 복수의 커널들 각각에 대해 기 결정된 프루닝 인덱스에 대응되는 웨이트를 프루닝하여, 위노그래드 기반 컨볼루션 연산을 수행할 수 있다.
또한, 프로세서(120)는 위노그래드 컨볼루션 레이어 상의 복수의 커널들을 복수의 커널 그룹들로 그룹화할 수 있다. 일 실시예에 따라, 프로세서(120)는 기 설정된 개수를 기준으로 복수의 커널들을 복수의 커널 그룹들로 그룹화할 수 있다. 기 설정된 개수는, 병렬로 처리 가능한 커널들의 개수가 될 수 있다. 또한, 프로세서(120)가 복수의 프로세서들로 구성될 수 있는 바, 복수의 프로세서들의 개수에 따라 일 그룹 당 커널들의 개수가 결정될 수 있다. 이어서, 프로세서(120)는 복수의 커널 그룹들 각각에 적용될 프루닝 인덱스들 각각을 결정할 수 있고, 복수의 커널 그룹들 각각을 기 결정된 프루닝 인덱스들 각각에 따라 프루닝하여, 위노그래드 컨볼루션 연산을 수행할 수 있다.
도 4는 프로세서가 위노그래드 기반 컨볼루션 연산을 수행하는 실시예를 나타낸다.
프로세서(120)는 위노그래드 컨볼루션 레이어 상의 복수의 커널들(W_Kernals) 및 입력 피처 맵(W_IFM)을 획득할 수 있다. 일 실시예에 따라, 프로세서(120)는 컨볼루션 레이어(Convolution Layer) 상의 입력 피처 맵(IFM) 및 복수의 커널들(Kernals)을 획득할 수 있고, 획득된 컨볼루션 레이어 상의 입력 피처 맵(IFM) 및 복수의 커널들(Kernals)에 대해 위노그래드 변환(Winograd Transform)을 수행하여, 위노그래드 컨볼루션 레이어 상의 복수의 커널들(W_Kernals) 및 입력 피처 맵(W_IFM)을 획득할 수 있다. 위노그래드 변환 시, 컨볼루션 레이어 상의 커널의 웨이트들은, 위노그래드 컨볼루션 레이어 상의 커널의 웨이트들로 변환될 수 있다.
예를 들어, 입력 피처 맵(IFM)이 4ⅹ4 매트릭스이고, 복수의 커널들(Kernals) 각각이 3ⅹ3 매트릭스인 경우, 프로세서(120)는 하기 수학식 2를 이용하여, 위노그래드 컨볼루션 상의 입력 피처 맵(W_IFM) 및 복수의 커널들(W_Kernals)을 획득할 수 있다.
Figure pat00009
Figure pat00010
Figure pat00011
Figure pat00012
프로세서(120)는 위노그래드 컨볼루션 레이어 상의 복수의 커널들(W_Kernals) 내에서 공통적으로 프루닝이 수행될 웨이트를 나타내는 프루닝 인덱스를 결정할 수 있다. 다시 말해, 프로세서(120)는, 프루닝이 수행될 복수의 커널들(W_Kernals) 상의 공통적인 공간적 위치로써, 프루닝 인덱스를 결정할 수 있다. 예를 들어, 도 4에 도시된 바와 같이, 복수의 커널들(W_Kernals) 각각이 웨이트들로 구성된 4ⅹ4의 매트릭스인 경우, 프로세서(120)는 복수의 커널들(W_Kernals) 상의 공통적인 프루닝 인덱스로써, 매트릭스의 [로우, 칼럼]인 [1, 1] 및 [3, 3]을 결정할 수 있다.
일 실시예에 따라, 프로세서(120)는, 복수의 커널들(W_Kernals)의 동일한 인덱스에 대응되는 웨이트들의 대표값을 계산할 수 있다. 이어서, 프로세서(120)는 인덱스들 각각에 대해 계산된 대표값에 기초하여, 프루닝 인덱스를 결정할 수 있다. 구체적인 실시예는 이하 도 6에서 살펴보기로 한다.
다른 실시예에 따라, 프로세서(120)는 복수의 커널들(W_Kernals) 각각과 입력 피처 맵(W_IFM) 간의 요소별 곱 연산을 수행하여 복수의 중간 맵들을 획득할 수 있다. 이어서, 프로세서(120)는 복수의 중간 맵들의 동일한 인덱스에 대응되는 요소들의 대표값을, 중간 맵 내 인덱스들 각각마다, 계산할 수 있다. 이어서, 프로세서(120)는 인덱스들 각각에 대해 계산된 대표값에 기초하여, 인덱스들 중에서 프루닝 인덱스를 결정할 수 있다. 구체적인 실시예는 이하 도 7에서 살펴보기로 한다.
프로세서(120)는 복수의 커널들(W_Kernals) 각각에 대해 기 결정된 프루닝 인덱스에 대응되는 웨이트를 프루닝하여, 위노그래드 기반 컨볼루션을 수행할 수 있다.
따라서, 뉴럴 네트워크 장치(10)는 복수의 커널들에 대해 공통된 프루닝 인덱스에 따라 프루닝을 수행하는 바, 종래에 비해 위노그래드 기반의 컨볼루션 연산의 수를 줄일 수 있으며 연산 속도를 향상시킬 수 있다. 구체적인 예로, 복수의 커널들 각각이 4ⅹ4 매트릭스인 경우, 복수의 커널들 각각과 입력 피처 맵 간의 요소별 연산이 병렬로 처리되는 시간은 16 싸이클(cycle)이 걸릴 수 있으나, 뉴럴 네트워크 장치(10)는, 복수의 커널들 내에서 프루닝 인덱스에 대응되는 웨이트에 대한 연산은 생략할 수 있으므로, 복수의 커널들 각각와 입력 피처 맵 간의 요소별 연산이 병렬로 처리되는 시간을 16 싸이클(cycle) 보다 줄일 수 있다. 예를 들어, 도 4에서, 뉴럴 네트워크 장치(10)는 복수의 커널들(W_Kernals) 각각에서 공통적으로 프루닝 인덱스 [1, 1] 및 [3, 3]에 대응되는 웨이트를 프루닝하는 바, 복수의 커널들(W_Kernals) 각각과 입력 피처 맵(W_IFM) 간의 요소별 연산이 병렬로 처리되는 시간은 14 싸이클이 걸릴 수 있다.
도 5는 프로세서가 복수의 커널들을 그룹화하여 프루닝 인덱스를 결정하는 실시예를 나타낸다.
프로세서(120)는 위노그래드 컨볼루션 레이어 상의 복수의 커널들(W_Kernals)을 복수의 커널 그룹들(W_Kernals_1, W_Kernals_2,...)로 그룹화할 수 있다. 일 실시예에 따라, 프로세서(120)는 기 설정된 개수를 기준으로 복수의 커널들(W_Kernals)을 복수의 커널 그룹들(W_Kernals_1, W_Kernals_2,...)로 그룹화할 수 있다. 예를 들어, 복수의 커널들(W_Kernals)의 개수가 28개인 경우, 프로세서(120)는 기 설정된 개수인 10개를 기준으로, 복수의 커널들(W_Kernals)을 10개의 커널들로 구성된 제 1 커널 그룹 및 제 2 커널 그룹, 그리고 8개의 커널들로 구성된 제 3 커널 그룹으로 그룹화할 수 있다.
프로세서(120)는 복수의 커널 그룹들(W_Kernals_1, W_Kernals_2, ...) 각각에 적용될 프루닝 인덱스를 결정할 수 있다. 구체적으로, 프로세서(120)는 제 1 커널 그룹(W_Kernals_1) 내 커널들에서 공통적으로 프루닝이 수행될 웨이트를 나타내는 제 1 프루닝 인덱스를 결정할 수 있고, 제 2 커널 그룹(W_Kernals_2) 내 커널들에서 공통적으로 프루닝이 수행될 웨이트를 나타내는 제 2 프루닝 인덱스를 결정할 수 있고, 나머지 커널 그룹에 대해서도 마찬가지로 프루닝 인덱스를 결정할 수 있다. 예를 들어, 도 5에 도시된 바와 같이, 프로세서(120)는, 제 1 커널 그룹(W_Kernals_1)에 적용될 제 1 프루닝 인덱스로써, [1, 1] 및 [4, 3]을 결정할 수 있고, 제 2 커널 그룹(W_Kernals_2)에 적용될 제 2 프루닝 인덱스로써, [1, 2], [2, 3], 및 [4, 1]을 결정할 수 있다.
프로세서(120)는 복수의 커널 그룹들(W_Kernals_1, W_Kernals_2, ...) 각각을 기 결정된 프루닝 인덱스에 따라 프루닝하여, 위노그래드 컨볼루션 연산을 수행할 수 있다. 구체적으로, 프로세서(120)는, 제 1 커널 그룹(W_Kernals_1)을 제 1 프루닝 인덱스 [1, 1] 및 [4, 3]에 따라 프루닝하여, 위노그래드 컨볼루션 연산을 수행할 수 있고, 제 2 커널 그룹(W_Kernals_2)을 제 2 프루닝 인덱스 [1, 2], [2, 3], 및 [4, 1]에 따라 프루닝하여, 위노그래드 컨볼루션 연산을 수행할 수 있다.
도 6은 일 실시예에 따라, 프로세서가 웨이트의 값을 이용하여 프루닝 인덱스를 결정하는 실시예를 나타낸다.
프로세서(120)는 위노그래드 컨볼루션 레이어 상의 복수의 커널들(WK_1,WK_2,...,WK_n)을 획득할 수 있다.
프로세서(120)는 복수의 커널들(WK_1,WK_2,...,WK_n)의 동일한 인덱스에 대응되는 웨이트들의 대표값을, 커널 내 인덱스들 각각마다, 계산할 수 있다. 예를 들어, 도 6에 도시된 바와 같이, 프로세서(120)는 복수의 커널들(WK_1,WK_2,...,WK_n)의 인덱스 [1, 1]에 대응되는 웨이트들(a11,b11,...,n11)의 대표값(T11)을 계산할 수 있다. 마찬가지로, 도 6에 도시된 바와 같이, 프로세서(120)는 커널 내 다른 15개의 인덱스들 각각에 대해서도 대표값(T12,T13,...,T44)을 계산할 수 있다.
프로세서(120)는 인덱스들 각각에 대해 계산된 대표값(T11,T12,...,T44)에 기초하여, 16개의 인덱스들 중에서 프루닝 인덱스를 결정할 수 있다. 일 실시예에 따라, 프로세서(120)는 인덱스들 중에서 기 설정된 임계치 미만의 대표값(T23)을 갖는 인덱스 [2, 3]을 프루닝 인덱스로 결정할 수 있다. 다른 실시예에 따라, 프로세서(120)는 전체 인덱스의 개수의 기 설정된 비율 미만의 개수를 기준으로, 프루닝 인덱스 개수를 결정할 수 있다. 예를 들어, 프로세서(120)는, 전체 인덱스의 개수(16개)의 10프로 미만의 개수(1개)에 따라, 가장 작은 대표값(T23)을 갖는 인덱스 [2, 3]를 프루닝 인덱스로 결정할 수 있다.
도 7은 다른 실시예에 따라, 프로세서가 중간 연산 값을 이용하여 프루닝 인덱스를 결정하는 실시예를 나타낸다.
프로세서(120)는 위노그래드 컨볼루션 레이어 상의 복수의 커널들(WK_1,WK_2,...,WK_n)을 획득할 수 있다.
프로세서(120)는 복수의 커널들(WK_1,WK_2,...,WK_n) 각각과 입력 피처 맵(W_IFM) 간의 요소별 곱 연산을 수행하여 복수의 중간 맵들(M_1,M_2,...,M_n)을 획득할 수 있다. 예를 들어, 도 7에 개시되어 있듯이, 프로세서(120)는 커널(WK_1)과 입력 피처 맵(W_IFM) 간의 서로 대응되는 요소 간 곱셈 연산을 수행하여 중간 맵(M_1)을 획득할 수 있다. 구체적으로, 중간 맵(M_1)의 인덱스 [1, 1]의 요소 'x*a11'은 입력 피처 맵(W_IFM)의 인덱스 [1, 1]의 'x'와 커널(WK_1)의 인덱스 [1, 1]의 'a11' 간의 곱셈 연산을 통해 계산될 수 있다.
프로세서(120)는 복수의 중간 맵들(M_1,M_2,...,M_n)의 동일한 인덱스에 대응되는 요소들의 대표값을, 중간 맵 내 인덱스들 각각마다, 계산할 수 있다. 예를 들어, 도 7에 도시된 바와 같이, 프로세서(120)는 복수의 중간 맵들(M_1,M_2,...,M_n) 각각에서 인덱스 [1, 1]에 대응되는 요소들(x*a11,x*b11,...,x*n11)의 대표값(R11)을 계산할 수 있다. 마찬가지로, 도 7에 도시된 바와 같이, 프로세서(120)는 커널 내 다른 15개의 인덱스들 각각에 대해서도 대표값(R12,R13,...,R44)을 계산할 수 있다.
프로세서(120)는 인덱스들 각각에 대해 계산된 대표값(R11,R12,...,R44)에 기초하여, 인덱스들 중에서 프루닝 인덱스를 결정할 수 있다. 일 실시예에 따라, 프로세서(120)는 인덱스들 중에서 기 설정된 임계치 미만의 대표값(R33)을 갖는 인덱스 [3, 3]을 프루닝 인덱스로 결정할 수 있다. 다른 실시예에 따라, 프로세서(120)는, 전체 인덱스의 개수(16개)의 10프로 미만의 개수(1개)에 따라, 가장 작은 대표값(R33)을 갖는 인덱스 [3, 3]를 프루닝 인덱스로 결정할 수 있다.
도 8은 프로세서가 위노그래드 기반 컨볼루션을 수행하는 구체적인 실시예를 나타낸다.
프로세서(120)는, 출력 피처 맵(OFM)을 획득하기 위해, 컨볼루션 레이어 상에서 입력 피처 맵(IFM) 및 커널(Kernal) 간의 컨볼루션을 수행할 수 있으며, 또한, 위노그래드 컨볼루션 레이어 상에서, 입력 피처 맵(IFM) 및 커널(kernal) 간의 위노그래드 기반 컨볼루션을 수행할 수 있다. 도 8에서는 설명의 편의를 위해, 입력 피처 맵(IFM)은 1ⅹ4 매트릭스인
Figure pat00013
로 설명되고, 커널(kernel)은 1ⅹ3 매트릭스인
Figure pat00014
로 설명되고, 출력 피처 맵(OFM)은 1ⅹ2 매트릭스인
Figure pat00015
로 설명되고 있으나, 이에 한정되지 않는다.
위노그래드 기반 컨볼루션을 수행하기 위해, 프로세서(120)는 입력 피처 맵(IFM)에 대해 위노그래드 변환을 수행하여 변환된 입력 피처 맵(W_IFM)을 획득할 수 있다. 또한, 프로세서(120)는 커널(Kernal)에 대해 위노그래드 변환을 수행하여 변환된 커널(W_Kernal)을 획득할 수 있다. 이어서, 프로세서(120)는 변환된 입력 피처 맵(W_IFM) 및 변환된 커널(W_Kernal) 간의 요소별 연산을 수행하여, 중간 맵(M)을 획득할 수 있다. 이어서, 프로세서(120)는 중간 맵(M)과 기 설정된 행렬 간의 연산을 통해, 출력 피처 맵(OFM)을 획득할 수 있다.
프로세서(120)는 전술한 방법을 이용하여 프루닝 인덱스를 결정할 수 있고, 결정된 프루닝 인덱스를 통해 위노그래드 기반 컨볼루션의 일부 연산의 수를 줄일 수 있다. 예를 들어, 프로세서(120)는 인덱스 [1, 1]를 프루닝 인덱스로 결정함에 따라, 인덱스 [1, 1]에 대응되는 웨이트를 0으로 설정할 수 있고, 마찬가지로 중간 맵의 인덱스 [1, 1]에 대응되는 요소 '
Figure pat00016
'또한 0으로 설정할 수 있다. 중간 맵의 인덱스 [1, 1]에 대응되는 요소 '
Figure pat00017
'가 0으로 설정되므로, 프로세서(120)는, 입력 피처 맵(IFM)에 대해 위노그래드 변환을 수행하는 연산 중 일부 연산인 '
Figure pat00018
'에서, 뺄셈 연산을 생략할 수 있다. 또한, 프로세서(120)는, 입력 피처 맵(W_IFM) 및 커널(W_Kernal) 간의 요소별 연산 중 일부 연산인 '
Figure pat00019
'에서, 곱셈 연산을 생략할 수 있다. 또한, 프로세서(120)는, 중간 맵(M)과 기 설정된 행렬간의 연산 중 '
Figure pat00020
'에서, 덧셈 연산을 생략할 수 있다. 따라서, 인덱스 [1, 1]가 프루닝 인덱스로 결정되는 경우, 프로세서(120)는, 중간 맵(M)의 요소 '
Figure pat00021
'가 0이므로, 전체 위노그래드 컨볼루션을 위한 연산들 중에서, 뺄셈 연산, 곱셈 연산, 및 덧셈 연산 각각을 1회씩 줄일 수 있다.
따라서, 뉴럴 네트워크 장치(10)는, 위노그래드 기반 컨볼루션 연산을 수행함에 있어서, 프루닝 인덱스와 관련된 일부 연산을 생략할 수 있는 바, 연산의 속도를 향상시킬 수 있다.
도 9는 일 실시예에 따라, 뉴럴 네트워크 장치의 동작 방법을 설명하기 위한 도면이다.
도 9에 도시된 방법은, 도 3의 뉴럴 네트워크 장치(10)의 각 구성요소에 의해 수행될 수 있고, 중복되는 설명에 대해서는 생략한다.
단계 910에서, 뉴럴 네트워크 장치(10)는, 위노그래드 컨볼루션 레이어(winograd convolution layer) 상의 복수의 커널들(kernals) 및 입력 피처 맵(input feature map)을 획득할 수 있다. 일 실시예에 따라, 뉴럴 네트워크 장치(10)는 컨볼루션 레이어 상의 입력 피처 맵 및 복수의 커널들을 획득할 수 있고, 획득된 컨볼루션 레이어 상의 입력 피처 맵 및 복수의 커널들에 대해 위노그래드 변환을 수행하여, 위노그래드 컨볼루션 레이어 상의 복수의 커널들 및 입력 피처 맵을 획득할 수 있다.
단계 920에서, 뉴럴 네트워크 장치(10)는, 복수의 커널들 내에서 공통적으로 프루닝이 수행될 웨이트를 나타내는 프루닝 인덱스를 결정할 수 있다.
뉴럴 네트워크 장치(10)는 커널 내 웨이트들 각각의 위치를 나타내는 인덱스들 중에서 프루닝 인덱스를 결정할 수 있다.
일 실시예에 따라, 뉴럴 네트워크 장치(10)는 복수의 커널들 내의 동일한 인덱스에 대응되는 웨이트들의 대표값을, 커널 내 인덱스들 각각에 대해, 계산할 수 있다 뉴럴 네트워크 장치(10)는 인덱스들 각각에 대해 계산된 대표값에 기초하여, 인덱스들 중에서 프루닝 인덱스를 결정할 수 있다.
다른 실시예에 따라, 뉴럴 네트워크 장치(10)는, 위노그래드 컨볼루션 레이어 상에서, 복수의 커널들 각각과 입력 피처 맵 간의 요소별 곱(elementwise multiplication) 연산을 수행하여 복수의 중간 맵들을 획득할 수 있다. 이어서, 뉴럴 네트워크 장치(10)는 복수의 중간 맵들의 동일한 인덱스에 대응되는 요소들의 대표값을, 중간 맵 내 인덱스들 각각마다, 계산할 수 있다. 이어서, 뉴럴 네트워크 장치(10)는 인덱스들 각각에 대해 계산된 대표값에 기초하여, 인덱스들 중에서 프루닝 인덱스를 결정할 수 있다.
단계 930에서, 뉴럴 네트워크 장치(10)는, 복수의 커널들 각각에 대해 결정된 프루닝 인덱스에 대응되는 웨이트를 프루닝하여, 위노그래드 기반 컨볼루션 연산을 수행할 수 있다.
또한, 뉴럴 네트워크 장치(10)는 위노그래드 컨볼루션 레이어 상의 복수의 커널들을 복수의 커널 그룹들로 그룹화할 수 있다. 이어서, 뉴럴 네트워크 장치(10)는 복수의 커널 그룹들 각각에 적용될 프루닝 인덱스들 각각을 결정할 수 있고, 복수의 커널 그룹들 각각을 기 결정된 프루닝 인덱스들 각각에 따라 프루닝하여, 위노그래드 컨볼루션 연산을 수행할 수 있다.
상기 살펴 본 실시 예들에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. "매커니즘", "요소", "수단", "구성"과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
본 실시 예에서 설명하는 특정 실행들은 예시들로서, 어떠한 방법으로도 기술적 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다.
본 명세서(특히 특허청구범위에서)에서 "상기"의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 한정되는 것은 아니다. 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 기술적 사상을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.

Claims (17)

  1. 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법에 있어서,
    위노그래드 컨볼루션 레이어(winograd convolution layer) 상의 복수의 커널들(kernals) 및 입력 피처 맵(input feature map)을 획득하는 단계;
    상기 복수의 커널들 내에서 공통적으로 프루닝(pruning)이 수행될 웨이트를 나타내는 프루닝 인덱스를 결정하는 단계; 및
    상기 복수의 커널들 각각에 대해 상기 결정된 프루닝 인덱스에 대응되는 웨이트를 프루닝하여, 위노그래드 기반 컨볼루션 연산을 수행하는 단계;를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 결정하는 단계는,
    커널 내 웨이트들 각각의 위치를 나타내는 인덱스들 중에서 상기 프루닝 인덱스를 결정하는, 방법.
  3. 제 1 항에 있어서,
    상기 결정하는 단계는,
    상기 복수의 커널들 내의 동일한 인덱스에 대응되는 웨이트들의 대표값을, 커널 내 인덱스들 각각에 대해, 계산하는 단계; 및
    상기 인덱스들 각각에 대해 계산된 대표값에 기초하여, 상기 인덱스들 중에서 상기 프루닝 인덱스를 결정하는 단계;를 포함하는, 방법.
  4. 제 3 항에 있어서,
    상기 결정하는 단계는,
    상기 인덱스들 중에서 기 설정된 임계치 미만의 대표값을 갖는 적어도 하나의 인덱스를 상기 프루닝 인덱스로 결정하는, 방법.
  5. 제 3 항에 있어서,
    상기 대표값은, 상기 웨이트들의 제곱평균제곱근(Root-Mean Square)인, 방법.
  6. 제 1 항에 있어서,
    상기 결정하는 단계는,
    상기 복수의 커널들 각각과 상기 입력 피처 맵 간의 요소별 곱(elementwise multiplication) 연산을 수행하여, 복수의 중간 맵들을 획득하는 단계;
    상기 중간 맵들 내의 동일한 인덱스에 대응되는 요소들의 대표값을, 중간 맵 내 인덱스들 각각에 대해, 계산하는 단계; 및
    상기 인덱스들 각각에 대해 계산된 대표값에 기초하여, 상기 인덱스들 중에서 상기 프루닝 인덱스를 결정하는 단계;를 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 결정하는 단계는,
    상기 복수의 커널들을 복수의 커널 그룹들로 그룹화하고, 상기 복수의 커널 그룹들 각각에 적용될 프루닝 인덱스들 각각을 결정하고,
    상기 수행하는 단계는,
    상기 복수의 커널 그룹들 각각을 상기 결정된 프루닝 인덱스들 각각에 따라 프루닝하여, 상기 위노그래드 기반 컨볼루션 연산을 수행하는 단계를 포함하는, 방법.
  8. 제 1 항에 있어서,
    상기 획득하는 단계는,
    컨볼루션 레이어(convolution layer) 상의 복수의 커널들 및 입력 피처 맵을 획득하는 단계; 및
    상기 획득된 컨볼루션 레이어 상의 복수의 커널들 및 입력 피처 맵에 대해 위노그래드 변환(winograd transform)을 수행하여, 상기 위노그래드 컨볼루션 레이어 상의 복수의 커널들 및 입력 피처 맵을 획득하는 단계를 포함하는, 방법.
  9. 제 1 항 내지 제 8 항 중 어느 한 항의 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.
  10. 적어도 하나의 프로그램이 저장된 메모리; 및
    상기 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크를 구동하는 프로세서를 포함하고,
    상기 프로세서는,
    위노그래드 컨볼루션 레이어(winograd convolution layer) 상의 복수의 커널들(kernals) 및 입력 피처 맵(input feature map)을 획득하고,
    상기 복수의 커널들 내에서 공통적으로 프루닝(pruning)이 수행될 웨이트를 나타내는 프루닝 인덱스를 결정하고,
    상기 복수의 커널들 각각에 대해 상기 결정된 프루닝 인덱스에 대응되는 웨이트를 프루닝하여, 위노그래드 기반 컨볼루션 연산을 수행하는, 뉴럴 네트워크 장치.
  11. 제 10 항에 있어서,
    상기 프로세서는,
    커널 내 웨이트들 각각의 위치를 나타내는 인덱스들 중에서 상기 프루닝 인덱스를 결정하는, 뉴럴 네트워크 장치.
  12. 제 10 항에 있어서,
    상기 프로세서는,
    상기 복수의 커널들 내의 동일한 인덱스에 대응되는 웨이트들의 대표값을, 커널 내 인덱스들 각각에 대해, 계산하고,
    상기 인덱스들 각각에 대해 계산된 대표값에 기초하여, 상기 인덱스들 중에서 상기 프루닝 인덱스를 결정하는, 뉴럴 네트워크 장치.
  13. 제 12 항에 있어서,
    상기 프로세서는,
    상기 인덱스들 중에서 기 설정된 임계치 미만의 대표값을 갖는 적어도 하나의 인덱스를 상기 프루닝 인덱스로 결정하는, 뉴럴 네트워크 장치.
  14. 제 12 항에 있어서,
    상기 대표값은, 상기 웨이트들의 제곱평균제곱근(Root-Mean Square)인, 뉴럴 네트워크 장치.
  15. 제 10 항에 있어서,
    상기 프로세서는,
    상기 복수의 커널들 각각과 상기 입력 피처 맵 간의 요소별 곱(elementwise multiplicaiton) 연산을 수행하여, 복수의 중간 맵들을 획득하고,
    상기 중간 맵들 내의 동일한 인덱스에 대응되는 요소들의 대표값을, 중간 맵 내 인덱스들 각각에 대해, 계산하고,
    상기 인덱스들 각각에 대해 계산된 대표값에 기초하여, 상기 인덱스들 중에서 상기 프루닝 인덱스를 결정하는, 뉴럴 네트워크 장치.
  16. 제 10 항에 있어서,
    상기 프로세서는,
    상기 복수의 커널들을 복수의 커널 그룹들로 그룹화하고, 상기 복수의 커널 그룹들 각각에 적용될 프루닝 인덱스들 각각을 결정하고,
    상기 복수의 커널 그룹들 각각을 상기 결정된 프루닝 인덱스들 각각에 따라 프루닝하여, 상기 위노그래드 기반 컨볼루션 연산을 수행하는, 뉴럴 네트워크 장치.
  17. 제 10 항에 있어서,
    상기 프로세서는,
    컨볼루션 레이어(convolution layer) 상의 복수의 커널들 및 입력 피처 맵을 획득하고,
    상기 획득된 컨볼루션 레이어 상의 복수의 커널들 및 입력 피처 맵에 대해 위노그래드 변환(winograd transform)을 수행하여, 상기 위노그래드 컨볼루션 레이어 상의 복수의 커널들 및 입력 피처 맵을 획득하는, 뉴럴 네트워크 장치.
KR1020170142570A 2017-10-30 2017-10-30 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치 KR102452953B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170142570A KR102452953B1 (ko) 2017-10-30 2017-10-30 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
US16/168,418 US11521039B2 (en) 2017-10-30 2018-10-23 Method and apparatus with neural network performing convolution

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170142570A KR102452953B1 (ko) 2017-10-30 2017-10-30 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20190048073A true KR20190048073A (ko) 2019-05-09
KR102452953B1 KR102452953B1 (ko) 2022-10-11

Family

ID=66243050

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170142570A KR102452953B1 (ko) 2017-10-30 2017-10-30 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치

Country Status (2)

Country Link
US (1) US11521039B2 (ko)
KR (1) KR102452953B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020262825A1 (ko) * 2019-06-27 2020-12-30 에스케이텔레콤 주식회사 위노그라드 알고리즘에 기반한 행렬 곱셈 방법 및 장치
KR20210086840A (ko) * 2019-12-30 2021-07-09 주식회사 써로마인드 자동차의 주변 상황이 위험상황인지를 판단하고 주행가이드를 생성하여 경보하여 주는 방법 및 이를 이용한 장치
US11899741B2 (en) 2019-09-19 2024-02-13 Samsung Electronics Co., Ltd. Memory device and method

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3051990C (en) 2017-02-23 2021-03-23 Cerebras Systems Inc. Accelerated deep learning
US11488004B2 (en) 2017-04-17 2022-11-01 Cerebras Systems Inc. Neuron smearing for accelerated deep learning
JP6860694B2 (ja) 2017-04-17 2021-04-21 セレブラス システムズ インク. 加速化ディープラーニングのタスクアクティベーション
US10990648B2 (en) * 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
US11966839B2 (en) * 2017-10-25 2024-04-23 Deepmind Technologies Limited Auto-regressive neural network systems with a soft attention mechanism using support data patches
JP6821009B2 (ja) * 2017-12-25 2021-01-27 ▲図▼▲霊▼通▲諾▼(北京)科技有限公司Yi Tunnel (Beijing) Technology Co.,Ltd. 会計方法、装置及びシステム
US11423312B2 (en) * 2018-05-14 2022-08-23 Samsung Electronics Co., Ltd Method and apparatus for universal pruning and compression of deep convolutional neural networks under joint sparsity constraints
JP2019200675A (ja) * 2018-05-17 2019-11-21 東芝メモリ株式会社 演算デバイス及びデータの処理方法
BR112019008055B1 (pt) * 2018-10-24 2022-02-01 Advanced New Technologies Co., Ltd Método implementado por computador, meio não transitório, legível por computador e sistema implementado por computador
US11880760B2 (en) 2019-05-01 2024-01-23 Samsung Electronics Co., Ltd. Mixed-precision NPU tile with depth-wise convolution
CN112446474B (zh) 2019-08-31 2022-11-22 安徽寒武纪信息科技有限公司 芯片和多芯片系统及电子设备和数据传输方法
CN112446464B (zh) * 2019-08-31 2023-05-30 安徽寒武纪信息科技有限公司 一种神经网络卷积运算方法、装置以及相关产品
CN110737473A (zh) * 2019-09-24 2020-01-31 北京小米移动软件有限公司 数据处理方法及装置、终端、存储介质
US11403486B2 (en) 2019-11-13 2022-08-02 Huawei Technologies Co., Ltd. Methods and systems for training convolutional neural network using built-in attention
CN111126595A (zh) * 2019-11-29 2020-05-08 苏州浪潮智能科技有限公司 一种神经网络的模型压缩的方法和设备
US20210182025A1 (en) * 2019-12-12 2021-06-17 Samsung Electronics Co., Ltd. Accelerating 2d convolutional layer mapping on a dot product architecture
US11308090B2 (en) 2019-12-26 2022-04-19 Snowflake Inc. Pruning index to support semi-structured data types
US10769150B1 (en) * 2019-12-26 2020-09-08 Snowflake Inc. Pruning indexes to enhance database query processing
US11372860B2 (en) 2019-12-26 2022-06-28 Snowflake Inc. Processing techniques for queries where predicate values are unknown until runtime
US11567939B2 (en) 2019-12-26 2023-01-31 Snowflake Inc. Lazy reassembling of semi-structured data
KR20210082970A (ko) * 2019-12-26 2021-07-06 삼성전자주식회사 컨볼루션 연산을 수행하는 방법 및 장치
US10997179B1 (en) 2019-12-26 2021-05-04 Snowflake Inc. Pruning index for optimization of pattern matching queries
US11681708B2 (en) 2019-12-26 2023-06-20 Snowflake Inc. Indexed regular expression search with N-grams
KR20210107288A (ko) * 2020-02-24 2021-09-01 삼성전자주식회사 전자 장치 및 그 제어 방법
CN111476174B (zh) * 2020-04-09 2023-04-04 北方工业大学 一种基于人脸图像的情绪识别方法及装置
KR20220009126A (ko) * 2020-07-15 2022-01-24 삼성전자주식회사 뉴럴 네트워크 연산 처리 장치 및 방법
WO2022034542A1 (en) * 2020-08-14 2022-02-17 Cerebras Systems Inc. Weight sparsity techniques for accelerated deep learning
TWI812888B (zh) * 2020-10-14 2023-08-21 財團法人工業技術研究院 影像辨識方法及影像辨識系統
CN113407904B (zh) * 2021-06-09 2023-04-07 中山大学 兼容多维度卷积神经网络的Winograd处理方法、系统及介质
CN113724219A (zh) * 2021-08-27 2021-11-30 重庆大学 基于卷积神经网络的建筑物表面病害检测方法及系统
CN113986816B (zh) * 2021-12-09 2023-05-02 北京奕斯伟计算技术股份有限公司 可重构计算芯片
WO2024040421A1 (en) * 2022-08-23 2024-02-29 Intel Corporation Fractional-bit quantization and deployment of convolutional neural network models
US11880369B1 (en) 2022-11-21 2024-01-23 Snowflake Inc. Pruning data based on state of top K operator

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5288645A (en) 1992-09-04 1994-02-22 Mtm Engineering, Inc. Hydrogen evolution analyzer
US10460230B2 (en) 2015-06-04 2019-10-29 Samsung Electronics Co., Ltd. Reducing computations in a neural network
US11423311B2 (en) 2015-06-04 2022-08-23 Samsung Electronics Co., Ltd. Automatic tuning of artificial neural networks
US11244225B2 (en) 2015-07-10 2022-02-08 Samsung Electronics Co., Ltd. Neural network processor configurable using macro instructions
JP6750203B2 (ja) 2015-10-20 2020-09-02 富士通株式会社 畳み込みニューラルネットワークの演算方法及び演算プログラム、情報処理装置
US10885437B2 (en) * 2016-05-18 2021-01-05 Nec Corporation Security system using a convolutional neural network with pruned filters

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Hyunsun Park et al., Zero and Data Reuse-aware Fast Convolution for Deep Neural Networks on GPU, CODES '16, (2016. 10.)* *
SAJID ANWAR et al., Structured Pruning of Deep Convolutional Neural Networks, ACM Journal on Emerging Technologies in Computing Systems, Vol. 13, No. 3, Article 32, 1-32pages (2017. 2.)* *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020262825A1 (ko) * 2019-06-27 2020-12-30 에스케이텔레콤 주식회사 위노그라드 알고리즘에 기반한 행렬 곱셈 방법 및 장치
US11899741B2 (en) 2019-09-19 2024-02-13 Samsung Electronics Co., Ltd. Memory device and method
KR20210086840A (ko) * 2019-12-30 2021-07-09 주식회사 써로마인드 자동차의 주변 상황이 위험상황인지를 판단하고 주행가이드를 생성하여 경보하여 주는 방법 및 이를 이용한 장치

Also Published As

Publication number Publication date
US20190130250A1 (en) 2019-05-02
US11521039B2 (en) 2022-12-06
KR102452953B1 (ko) 2022-10-11

Similar Documents

Publication Publication Date Title
KR102452953B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
KR20190051697A (ko) 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법
KR20190066473A (ko) 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치
CN111476719B (zh) 图像处理方法、装置、计算机设备及存储介质
KR102141163B1 (ko) Sar 영상 생성을 위한 뉴럴 네크워크 학습 방법 및 장치.
CN111860398B (zh) 遥感图像目标检测方法、系统及终端设备
CN109996023B (zh) 图像处理方法和装置
KR102452951B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
EP3789892A1 (en) Method and apparatus for processing data
KR102637733B1 (ko) 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
KR20200144398A (ko) 클래스 증가 학습을 수행하는 장치 및 그의 동작 방법
US11836971B2 (en) Method and device with convolution neural network processing
KR20200081044A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
KR20200095300A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
CN112001923B (zh) 一种视网膜图像分割方法及装置
JP2021528726A (ja) ポイントクラウドデータの処理方法、装置、電子機器及び記憶媒体
CN111652921A (zh) 一种单目深度预测模型的生成方法及单目深度预测方法
CN113838067A (zh) 肺结节的分割方法和装置、计算设备、可存储介质
CN111985617A (zh) 3d卷积神经网络在神经网络处理器上的处理方法和装置
CN116206196A (zh) 一种海洋低光环境多目标检测方法及其检测系统
CN115994892A (zh) 一种基于ghostnet的轻量级医学图像分割方法及系统
CN113496228A (zh) 一种基于Res2Net、TransUNet和协同注意力的人体语义分割方法
KR20200023154A (ko) 컨볼루션 뉴럴 네트워크를 처리하는 방법 및 장치
CN114902240A (zh) 神经网络通道数搜索方法和装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant