KR102055645B1 - 고속 딥러닝을 위한 컨볼루션 방법 - Google Patents

고속 딥러닝을 위한 컨볼루션 방법 Download PDF

Info

Publication number
KR102055645B1
KR102055645B1 KR1020180156777A KR20180156777A KR102055645B1 KR 102055645 B1 KR102055645 B1 KR 102055645B1 KR 1020180156777 A KR1020180156777 A KR 1020180156777A KR 20180156777 A KR20180156777 A KR 20180156777A KR 102055645 B1 KR102055645 B1 KR 102055645B1
Authority
KR
South Korea
Prior art keywords
convolution
feature map
point
main control
channel
Prior art date
Application number
KR1020180156777A
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 KR1020180156777A priority Critical patent/KR102055645B1/ko
Priority to US17/291,186 priority patent/US20220222316A1/en
Priority to PCT/KR2019/010624 priority patent/WO2020116745A1/ko
Application granted granted Critical
Publication of KR102055645B1 publication Critical patent/KR102055645B1/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/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/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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

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

Abstract

본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법은 (a) 상기 컨볼루션 시스템의 피쳐 맵 수신부가 N개의 채널로 구성된 피쳐 맵을 수신하는 단계; (b) 상기 컨볼루션 시스템의 주제어부가 N개의 채널로 구성된 피쳐 맵에서 `0`번째 채널을 선택하는 단계; (c) 상기 주제어부가 `0`번째 채널의 피쳐 맵에서 x, y 좌표가 `0`인 좌표를 확인하는 단계; (d) 상기 컨볼루션 시스템의 컨볼루션 계산부가 상기 피쳐 맵에 대해 가로방향 및 세로방향으로 2만큼 이동해가며 컨볼루션 연산과 ReLU(Rectified Liner Unit)연산을 수행하는 코스(coarse)단계; (e) 상기 컨볼루션 시스템의 채널 변경부가 `0`번째 채널의 피쳐 맵에 대해 코스(coarse)단계가 완료되면 다음 채널로 채널을 변경하는 단계; (f) 상기 주제어부가 변경된 채널이 N보다 큰지 작은지 판단하는 단계; 및 (g) 상기 주제어부가 상기 (f)단계에서 변경된 채널이 N보다 큰 경우 모든 채널에 대한 콘볼루션 연산이 완료된 것으로 판단하고 피쳐 맵 출력부를 통해 피쳐맵을 출력하는 단계;를 포함하여 컨볼루션 신경망에서 대부분을 차지하는 컨볼루션 연산을 줄여 딥러닝에서의 추론 속도를 높일 수 있는 효과가 있다.

Description

고속 딥러닝을 위한 컨볼루션 방법{HIGH SPEED CONVOLUTION METHOD FOR DEEP LEARNING}
본 발명은 고속 딥러닝을 위한 컨볼루션 방법에 관한 것으로써, 더욱 상세하게는 coarse 단계에서 연산 지점 간의 차이가 2씩 나도록 하여 convolution 연산과 Rectified Linear Unit (ReLU) 연산을 진행하여 컨볼루션 신경망에서의 컨볼루션 연산을 줄임으로써 딥러닝에서의 추론 속도를 높일 수 있는 고속 딥러닝을 위한 컨볼루션 방법에 관한 것이다.
컨볼루션 연산은 필터의 각 가중치를 이미지에서 sliding 해가면서 픽셀과 곱하고 이를 누적하는, MAC(multiplication and accumulation)연산으로 계산량이 많다. 이미지를 처리하기 위한 컨볼루션 신경망의 컨볼루션 연산은 신경망 연산의 대부분을 차지하고 있으며 이미지의 크기가 커지고 신경망 깊이가 깊어질수록 연산량이 증가하게 되고, 이에 따라 전력소비가 증가하게 되어 이미지의 실시간 처리와 시스템의 효율적 전력관리를 어렵게 하는 문제점이 있다.
대한민국 공개특허공보 제10-2018-0109619호(2018. 10. 08)
본 발명은 상술한 문제점을 해결하기 위해 coarse 단계에서 연산 지점 간의 차이가 2만큼 나도록 하여 convolution 연산과 Rectified Linear Unit (ReLU) 연산을 진행하여 컨볼루션 신경망에서의 컨볼루션 연산을 줄임으로써 딥러닝에서의 추론 속도를 높일 수 있는 고속 딥러닝을 위한 컨볼루션 방법을 제공하는데 목적이 있다.
상술한 목적을 달성하기 위한 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법은 (a) 상기 컨볼루션 시스템의 피쳐 맵 수신부가 N개의 채널로 구성된 피쳐 맵을 수신하는 단계; (b) 상기 컨볼루션 시스템의 주제어부가 N개의 채널로 구성된 피쳐 맵에서 `0`번째 채널을 선택하는 단계; (c) 상기 주제어부가 `0`번째 채널의 피쳐 맵에서 x, y 좌표가 `0`인 좌표를 확인하는 단계; (d) 상기 컨볼루션 시스템의 컨볼루션 계산부가 상기 피쳐 맵에 대해 가로방향 및 세로방향으로 2만큼 이동해가며 컨볼루션 연산과 ReLU(Rectified Liner Unit)연산을 수행하는 코스(coarse)단계; (e) 상기 주제어부가 상기 코스(coarse)단계에서 2만큼 이동함에 따라 한 칸씩 비워진 x, y좌표를 채우는 파인(fine) 단계; (f) 상기 컨볼루션 시스템의 채널 변경부가 파인(fine)단계가 완료되면 다음 채널로 채널을 변경하는 단계; (g) 상기 주제어부가 변경된 채널이 N보다 큰지 작은지 판단하는 단계; 및 (h) 상기 주제어부가 상기 (g)단계에서 변경된 채널이 N보다 큰 경우 모든 채널에 대한 콘볼루션 연산이 완료된 것으로 판단하고 피쳐 맵 출력부를 통해 피쳐맵을 출력하는 단계;를 포함하는 것을 특징으로 한다.
또한, 상술한 목적을 달성하기 위한 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법의 (d)단계는 (d-1) 상기 컨볼루션 계산부가 상기 피쳐 맵의 임의의 지점(x, y)에서 컨볼루션 연산과 ReLU(Rectified Liner Unit)연산을 수행하는 단계; (d-2) 상기 컨볼루션 계산부가 연산한 임의의 지점(x, y)에서의 컨볼루션 연산 값이 `0`보다 큰지 판단하는 단계; (d-3) 상기 주제어부가 지점(x, y)에서의 컨볼루션 연산 값이 `0`보다 큰 경우, 상기 컨볼루션 계산부(130)는 연산지점과 인접한 지점들을 연산하는 단계; (d-4) 상기 주제어부가 지점(x, y)에서의 컨볼루션 연산 값이 `0`보다 크지 않은 경우, x좌표의 연산지점을 이전 연산지점과 2씩 차이가 나는 지점으로 이동시키는 단계; (d-5) 상기 주제어부가 이동한 연산지점의 x좌표와 피쳐 맵의 너비(W)와의 크기를 비교하는 단계; (d-6) 상기 주제어부가 이전 연산지점에서 2만큼 이동한 지점의 x좌표 값이 너비(W)보다 크면, y 좌표를 2만큼 이동 즉, 행을 아래로 2만큼 이동하는 단계; 및 (d-7) 상기 주제어부가 이동한 연산지점의 y좌표와 피쳐 맵의 높이(H)와의 크기를 비교하여 단계;를 포함하는 것을 특징으로 한다.
또한, 상술한 목적을 달성하기 위한 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법의 (d-5)단계에서 상기 주제어부가 비교단계 후, 상기 x좌표 값이 너비(W)보다 작으면, 2만큼 이동한 지점의 x좌표 지점(x, y)에서 컨볼루션 연산을 수행하는 상기 (d-1)단계 이후의 단계를 반복 수행하는 것을 특징으로 한다.
또한, 상술한 목적을 달성하기 위한 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법의 (d-7)단계에서 상기 주제어부가 비교단계 후, 상기 y좌표 값이 높이(H)보다 작으면, 2만큼 이동한 지점의 x좌표 지점(x, y)에서 컨볼루션 연산을 수행하는 상기 (d-1)단계 이후의 단계를 반복 수행하는 것을 특징으로 한다.
또한, 상술한 목적을 달성하기 위한 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법의 (d-7)단계에서 상기 주제어부가 이전 연산지점에서 2만큼 이동한 지점의 y좌표 값이 높이(H)보다 크면 파인(fine) 단계를 수행하는 것을 특징으로 한다.
또한, 상술한 목적을 달성하기 위한 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법의 (e)단계는 (e-1) 상기 주제어부가 피쳐 맵의 x, y 출력 좌표가 1인지 판단하는 단계; (e-2) 상기 주제어부가 상기 x, y 출력 좌표가 1이면 인접한 지점들간 컨본루션을 계산하는 단계; (e-3) 상기 주제어부가 상기 x, y 출력 좌표가 1이 아니면 계산지점에서 1만큼 이동하는 단계; (e-4) 상기 주제어부가 1만큼 이동한 x좌표와 피쳐 맵의 너비(W)와의 크기를 비교하여 단계; 및 (e-5) 상기 주제어부가 상기 너비(W)보다 x좌표가 작으면 상기 (e-1) 단계를 반복 수행하고 너비(W)보다 x좌표가 크면 행을 변경하여 y 좌표를 1만큼 이동 단계;를 포함하는 것을 특징으로 한다.
또한, 상술한 목적을 달성하기 위한 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법의 (e-5)단계 이후, 상기 채널 변경부가 1만큼 이동한 지점의 y좌표 값이 높이(H)보다 크면 채널을 변경하는 상기 (f)단계를 수행하는 것을 특징으로 한다.
또한, 상술한 목적을 달성하기 위한 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법의 (f)단계 이후, (g`) 변경된 채널이 누적된 N번째 채널보다 작으면, 상기 주제어부가 변경된 채널의 피쳐 맵에서 x, y 좌표가 `0`인 좌표를 확인하는 상기 (c)단계 이후의 단계를 반복수행 단계;를 포함하는 것을 특징으로 한다.
또한, 상술한 목적을 달성하기 위한 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법의 (d)단계에서 컨볼루션 계산부는
Figure 112018122758929-pat00001
in_idx : i번째 채널의 입력 피쳐 맵, x, y : 피쳐 맵의 x, y 좌표, n, m : 가중치를 주는 가중필터(weight filter)의 x, y 좌표로 컨볼루션 연산과 ReLU(Rectified Liner Unit)연산을 수행하는 것을 특징으로 한다.
본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법은 컨볼루션 신경망에서 대부분을 차지하는 컨볼루션 연산을 줄여 딥러닝에서의 추론 속도를 높일 수 있는 효과가 있고, 전력소비를 줄일 수 있는 효과가 있습니다.
도 1은 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 시스템의 블록도 이다.
도 2는 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법의 흐름도 이다.
도 3은 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법의 코스(coarse)단계의 흐름도 이다.
도 4는 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법의 파인(fine)단계의 흐름도 이다.
도 5는 본 발명에 따른 고속 딥러닝을 위한 컨볼루션에 사용되는 피쳐 맵 구조를 도시한 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면을 참조하여 상세하게 설명하도록 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재 항목들의 조합 또는 복수의 관련된 기재 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급될 때에는 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
명세서 및 청구범위 전체에서, 어떤 부분이 어떤 구성 요소를 포함한다고 할때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있다는 것을 의미한다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 시스템의 블록도 이다.
도 1에 도시된 바와 같이 본 발명에 따른 고속 딥러닝 위한 컨볼루션 시스템은 피쳐 맵 수신부(110), 주제어부(120), 컨볼루션 계산부(130), 채널 변경부(140), 피쳐 맵 출력부(150)를 포함한다.
도 2는 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 방법의 흐름도 이다.
도 2에 도시된 바와 같이 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 시스템의 피쳐 맵 수신부(110)가 피쳐 맵을 수신하는 단계를 수행한다(S100).
참고로, 상기 피쳐 맵은 복수의 픽셀(pixel)로 구성된 이미지 또는 영상 프레임에 컨볼루션 커널(convolution kernel)을 적용하여 특징값을 추출해낸 결과물로서, 복수의 컨볼루션 값을 포함하는 행렬로 구성된다.
특히, 본 발명에서 상기 피쳐 맵은 도 5에 도시된 바와 같이 가로방향으로 W의 너비를 가지고, 세로방향으로 H의 높이를 가지며, 레이어 형식으로 누적된 N개의 채널로 구성되어 있는 것을 가정한다.
상기 주제어부(120)는 상기 피쳐 맵 수신부(110)가 수신한 복수의 채널로 구성된 피쳐 맵에서 `0`번째 채널을 선택하는 단계를 수행한다(S200).
이후, 상기 주제어부(120)는 선택한 채널의 상기 피쳐 맵에서 x, y 좌표가 `0`인 좌표를 확인하는 단계를 수행한다(S300).
상기 컨볼루션 계산부(130)는 상기 주제어부(120)가 확인한 좌표(x=0, y=0)에서 시작하여 아래의 [표 1]과 같이 가로방향 세로방향으로 2만큼 이동해가며 컨볼루션 연산과 ReLU(Rectified Liner Unit)연산을 수행하는 코스(coarse)단계를 수행한다(S400).
92.3 56.8 33.3 13.9
0 0 0 12.0
특히, 상기 S400 단계에서 컨볼루션 계산부(130)에 의한 계산은 아래의 [수학식 1]에 의해 수행된다.
Figure 112018122758929-pat00002
상기 [수학식 1]에서 in_idx는 i번째 채널의 입력 피쳐 맵, x, y는 피쳐 맵의 x, y 좌표, n,m은 가중치를 주는 가중필터(weight filter)의 x, y 좌표이다.
이하에서 상기 코스(coarse)단계에 대하여, 도 3을 참조하여 좀 더 상세히 설명한다.
상기 컨볼루션 계산부(130)는 상기 피쳐 맵의 임의의 지점(x, y)에서 컨볼루션 연산을 수행하는 단계를 수행한다(S410).
상기 주제어부(120)는 상기 컨볼루션 계산부(130)가 연산한 임의의 지점(x, y)에서의 컨볼루션 연산 값이 `0`보다 큰지 판단하는 단계를 수행한다(S420).
상기 주제어부(120)에 의한 판단결과 임의의 지점(x, y)에서의 컨볼루션 연산 값이 `0`보다 큰 경우, 상기 컨볼루션 계산부(130)는 연산지점과 인접한 지점들을 연산하는 단계를 수행한다.(S430).
92.3 75.3 56.8 42.3 33.3 22.4 13.9 8.6
64.2 61.9 61.3 64.1 62.5 49.7 32.7 26.0
0 0 0 0 0 6.1 12.0 21.0
0 0 0 0 0 0 0 0
<VGG16 NET feature map 의 일부>
일반적으로 자연 이미지에서 대부분의 이웃하는 pixel은 같은 대상(object)에 속해 있어 비슷한 값을 가질 확률이 높다, 또한 인접한 pixel은 값이 비슷하므로 임의의 두 지점의 컨볼루션 연산 값도 비슷하다.
상기 [표 2]는 VGG16의 feature map 일부를 나타낸 것이다. 상기 [표 2]에서 볼수 있듯이 인접한 pixel의 값은 비슷한 경향(줄어드는 경향)을 나타내는 것을 알 수 있다.
따라서, 임의의 지점에서 컨볼루션이 `0` 이상의 값이 나오면 인접한 지점의 컨볼루션 연산 값도 `0`이상의 값이 나올 확률이 높다.
한편, 상기 (S420)단계에서의 상기 주제어부(120)에 의한 판단결과 임의의 지점(x, y)에서의 컨볼루션 연산 값이 `0`보다 크지 않은 경우, 상기 주제어부(120)는 x좌표의 연산지점을 이전 연산지점과 2씩 차이가 나는 지점으로 이동시키는 단계를 수행한다(S440).
상기 주제어부(120)는 이동한 연산지점의 x좌표와 피쳐 맵의 너비(W)와의 크기를 비교하는 단계를 수행한다(S450).
상기 주제어부(120)는 이전 연산지점에서 2만큼 이동한 지점의 x좌표 값이 너비(W)보다 작으면, 2만큼 이동한 지점의 x좌표 지점(x, y)에서 컨볼루션 연산을 수행하는 상기 S410단계 이후의 단계를 반복 수행한다.
상기 주제어부(120)는 이전 연산지점에서 2만큼 이동한 지점의 x좌표 값이 너비(W)보다 크면, y 좌표를 2만큼 이동 즉, 행을 아래로 2만큼 이동하는 단계를 진행한다(S460).
상기 주제어부(120)는 y좌표와 피쳐 맵의 높이(H)와의 크기를 비교하는 단계를 수행한다(S470).
상기 주제어부(120)는 이전 연산지점에서 2만큼 이동한 지점의 y좌표 값이 높이(H)보다 작으면, 2만큼 이동한 지점의 x좌표 지점(x, y)에서 컨볼루션 연산을 수행하는 상기 S410단계 이후의 단계를 반복 수행한다.
상기 주제어부(120)는 이전 연산지점에서 2만큼 이동한 지점의 y좌표 값이 높이(H)보다 크면 파인(fine) 단계를 수행한다(S500)
상기 파인(fine) 단계(S500)는 상기 코스(coarse)단계에서 2만큼 이동함에 따라 한 칸씩 비워진 x, y좌표를 채우는 단계로, 도 4에 도시된 파인(fine) 단계(S500)의 흐름도를 참고하여 상세히 설명한다.
상기 주제어부(120)는 피쳐 맵의 x, y 출력 좌표가 1인지 판단하는 단계를 수행하고(S510), 1이면 인접한 지점들간 컨본루션을 계산하는 단계를 수행하고(S520), 1이 아니면 계산지점에서 1만큼 이동하는 단계를 수행한다(S530).
상기 주제어부(120)는 1만큼 이동한 x좌표와 피쳐 맵의 너비(W)와의 크기를 비교하여 단계를 수행하여(S540), 너비(W)보다 x좌표가 작으면 상기 S510 단계를 반복 수행하고 너비(W)보다 x좌표가 크면 y 좌표를 1만큼 이동 즉, 행을 아래로 1만큼 이동하는 단계를 진행한다(S550).
상기 채널 변경부(140)는 이전 연산지점에서 1만큼 이동한 지점의 y좌표 값이 높이(H)보다 크면 채널을 변경하는 단계를 수행한다(S600)
상기 주제어부(120)는 변경된 채널이 레이어 형식으로 누적된 N번째 채널보다 큰지 작은지 판단하는 단계를 수행한다(S700).
상기 S700 단계에서 판단 결과, 변경된 채널이 누적된 N번째 채널보다 작으면 상기 주제어부(120)는 변경된 채널의 피쳐 맵에서 x, y 좌표가 `0`인 좌표를 확인하는 단계(S300) 단계 이후 단계를 반복수행 한다.
상기 S700 단계에서 판단 결과, 변경된 채널이 누적된 N번째 채널보다 크면 상기 주제어부(120)는 모든 채널에 대한 콘볼루션 연산을 완료하고, 상기 피쳐 맵 출력부(150)를 통해 피쳐 맵을 출력해하는 단계를 수행한다(S800).
본 발명에 따른 본 발명에 따른 고속 딥러닝을 위한 컨볼루션 시스템 알고리즘의 성능을 측정하기 위해 VGG16 network에 적용하였다. VGG16 은 단순한 network 구조를 가지고 있고 많은 convolution 연산을 포함하고 있기 때문에 제안하는 알고리즘의 성능을 보여주기에 매우 알맞다.
또한, convolution layer구현의 용이성을 위해 제안하는 알고리즘은 C++로 구현되었으며 ILSVRC-2012로 pre-trained 된 parameter을 사용하였다. 성능 비교를 위해 ILSVRC-2012에 포함된 이미지 중 1000개의 이미지를 임의로 뽑아 시뮬레이션 하였다.
그 결과를 아래의 표로 나타내면 아래와 같다.
MAC/image(million)
감소량
VGG16 본 발명에 따른 방법발명의 알고리즘
86.7 63.7 26.5
Conv1_2 1849.7 1557.1 15.8
Conv2_1 924.8 777.6 15.7
Conv2_2 1849.7 1471.1 20.5
Conv3_1 924.8 720.4 22.1
Conv3_2 1849.7 1441.6 22.1
Conv3_3 1849.7 1094.3 40.8
Conv4_1 924.8 605.8 34.5
Conv4_2 1849.7 1065.1 42.4
Conv4_3 1849.7 714.0 61.4
Conv5_1 462.4 245.6 46.9
Conv5_2 462.4 209.9 54.6
Conv5_3 462.4 145.0 68.6
total 15346.6 10113.4 34.1
<VGG16와 본 발명에 따른 컨볼루션 방법의 알고리즘 MAC 비교>
상기 [표 3]은 원본 VGG16[1]과 본 발명에 따른 시스템에 사용되는 알고리즘을 적용한 VGG16의 각 convolution layer 마다 MAC 연산량을 비교한 것이다.
각 convolution layer가 높아질수록 MAC 연산 감소량이 점점 증가하는 추세를 보인다. 이를 통하여 본 발명에 따른 시스템에 사용되는 알고리즘은 피쳐 맵의 크기가 큰 저단의 convolution layer에서보다 피쳐 맵의 크기가 작은 고단의 convolution layer에서 더 잘 작용하는 것을 확인할 수 있다.
VGG16 본 발명에 따른 방법발명의 알고리즘
Accuracy Top1 643 618(-2.5%)
Top 5 864 855(-0.9%)
MAC/image(million)in
convolution layer
15346 10113(-34.1%)
<본 발명에 따른 컨볼루션 방법의 알고리즘과 VGG16비교>
상기 [표 4]는 본 발명에 따른 컨볼루션 방법의 알고리즘을 적용한 VGG16과 그렇지 않은 VGG16을 비교한 것이다.
본 발명에 다른 컨볼루션 방법의 알고리즘은 기존의 VGG16 [1]에 비해 Top1, Top5 정확도가 각각 2.5%, 0.9%떨어지나 image당 convolution layer 에서 MAC의 수가 34.1% 가량 감소한다. 본 발명에 다른 컨볼루션 방법의 알고리즘은 parameter을 다시 학습시킬 필요가 없이 기존의 parameter을 그대로 사용할 수 있다. 따라서, 본 발명에 다른 컨볼루션 방법의 알고리즘은 대부분의 다른 CNN에도 적용할 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 사람이라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
110 : 피쳐 맵 수신부
120 : 주제어부
130 : 컨볼루션 계산부
140 : 채널 변경부
150 : 피쳐 맵 출력부

Claims (9)

  1. 고속 딥러닝을 위한 컨볼루션 시스템에 의한 컨볼루션 방법에 있어서,
    (a) 상기 컨볼루션 시스템의 피쳐 맵 수신부가 N개의 채널로 구성된 피쳐 맵을 수신하는 단계;
    (b) 상기 컨볼루션 시스템의 주제어부가 N개의 채널로 구성된 피쳐 맵에서 `0`번째 채널을 선택하는 단계;
    (c) 상기 주제어부가 `0`번째 채널의 피쳐 맵에서 x, y 좌표가 `0`인 좌표를 확인하는 단계;
    (d) 상기 컨볼루션 시스템의 컨볼루션 계산부가 상기 피쳐 맵에 대해 가로방향 및 세로방향으로 2만큼 이동해가며 컨볼루션 연산과 ReLU(Rectified Liner Unit)연산을 수행하는 코스(coarse)단계;
    (e) x, y 출력 좌표에 기초하여, 상기 주제어부가 상기 코스(coarse) 단계에서 상기 컨볼루션 연산이 수행되지 않은 x, y 좌표에서 상기 컨볼루션 연산을 수행하는 파인(fine) 단계;
    (f) 상기 컨볼루션 시스템의 채널 변경부가 파인(fine)단계가 완료되면 다음 채널로 채널을 변경하는 단계;
    (g) 상기 주제어부가 변경된 채널이 N보다 큰지 작은지 판단하는 단계; 및
    (h) 상기 주제어부가 상기 (g)단계에서 변경된 채널이 N보다 큰 경우 모든 채널에 대한 컨볼루션 연산이 완료된 것으로 판단하고 피쳐 맵 출력부를 통해 피쳐맵을 출력하는 단계;를 포함하는 고속 딥러닝을 위한 컨볼루션 방법.
  2. 제 1항에 있어서,
    상기 (d)단계는
    (d-1) 상기 컨볼루션 계산부가 상기 피쳐 맵의 임의의 지점(x, y)에서 컨볼루션 연산과 ReLU(Rectified Liner Unit)연산을 수행하는 단계;
    (d-2) 상기 컨볼루션 계산부가 연산한 임의의 지점(x, y)에서의 컨볼루션 연산 값이 `0`보다 큰지 판단하는 단계;
    (d-3) 상기 주제어부가 지점(x, y)에서의 컨볼루션 연산 값이 `0`보다 큰 경우, 상기 컨볼루션 계산부는 연산지점과 인접한 지점들을 연산하는 단계;
    (d-4) 상기 주제어부가 지점(x, y)에서의 컨볼루션 연산 값이 `0`보다 크지 않은 경우, x좌표의 연산지점을 이전 연산지점과 2씩 차이가 나는 지점으로 이동시키는 단계;
    (d-5) 상기 주제어부가 이동한 연산지점의 x좌표와 피쳐 맵의 너비(W)와의 크기를 비교하는 단계;
    (d-6) 상기 주제어부가 이전 연산지점에서 2만큼 이동한 지점의 x좌표 값이 너비(W)보다 크면, y 좌표를 2만큼 이동 즉, 행을 아래로 2만큼 이동하는 단계; 및
    (d-7) 상기 주제어부가 이동한 연산지점의 y좌표와 피쳐 맵의 높이(H)와의 크기를 비교하여 단계;를 포함하는 고속 딥러닝을 위한 컨볼루션 방법.
  3. 제 2항에 있어서,
    상기 (d-5)단계에서
    상기 주제어부가 비교단계 후, 상기 x좌표 값이 너비(W)보다 작으면, 2만큼 이동한 지점의 x좌표 지점(x, y)에서 컨볼루션 연산을 수행하는 상기 (d-1)단계 이후의 단계를 반복 수행하는 고속 딥러닝을 위한 컨볼루션 방법.
  4. 제 2항에 있어서,
    상기 (d-7)단계에서
    상기 주제어부가 비교단계 후, 상기 y좌표 값이 높이(H)보다 작으면, 2만큼 이동한 지점의 x좌표 지점(x, y)에서 컨볼루션 연산을 수행하는 상기 (d-1)단계 이후의 단계를 반복 수행하는 고속 딥러닝을 위한 컨볼루션 방법.
  5. 제 2항에 있어서,
    상기 (d-7)단계에서
    상기 주제어부가 이전 연산지점에서 2만큼 이동한 지점의 y좌표 값이 높이(H)보다 크면 파인(fine) 단계를 수행하는 고속 딥러닝을 위한 컨볼루션 방법.
  6. 제 1항에 있어서,
    상기 (e)단계는
    (e-1) 상기 주제어부가 상기 피쳐 맵의 x, y 출력 좌표가 1인지 판단하는 단계;
    (e-2) 상기 주제어부가 상기 x, y 출력 좌표가 1이면 인접한 지점들간 컨볼루션을 계산하는 단계;
    (e-3) 상기 주제어부가 상기 x, y 출력 좌표가 1이 아니면 계산지점에서 1만큼 이동하는 단계;
    (e-4) 상기 주제어부가 1만큼 이동한 x좌표와 피쳐 맵의 너비(W)와의 크기를 비교하여 단계; 및
    (e-5) 상기 주제어부가 상기 너비(W)보다 x좌표가 작으면 상기 (e-1) 단계를 반복 수행하고 너비(W)보다 x좌표가 크면 행을 변경하여 y 좌표를 1만큼 이동 단계;를 포함하는 고속 딥러닝을 위한 컨볼루션 방법.
  7. 제 6항에 있어서,
    상기 (e-5)단계 이후,
    상기 채널 변경부가 1만큼 이동한 지점의 y좌표 값이 높이(H)보다 크면 채널을 변경하는 상기 (f)단계를 수행하는 고속 딥러닝을 위한 컨볼루션 방법.
  8. 제 1항 내지 제 7항 중 어느 한 항에 있어서,
    상기 (f)단계 이후,
    (g`) 변경된 채널이 누적된 N번째 채널보다 작으면, 상기 주제어부가 변경된 채널의 피쳐 맵에서 x, y 좌표가 `0`인 좌표를 확인하는 상기 (c)단계 이후의 단계를 반복수행 단계;를 포함하는 고속 딥러닝을 위한 컨볼루션 방법.
  9. 제 1항 내지 제 7항 중 어느 한 항에 있어서,
    상기 (d)단계에서
    상기 컨볼루션 계산부는
    Figure 112018122758929-pat00003

    in_idx : i번째 채널의 입력 피쳐 맵,
    x, y : 피쳐 맵의 x, y 좌표,
    n, m : 가중치를 주는 가중필터(weight filter)의 x, y 좌표
    로 컨볼루션 연산과 ReLU(Rectified Liner Unit)연산을 수행하는 고속 딥러닝을 위한 컨볼루션 방법.
KR1020180156777A 2018-12-07 2018-12-07 고속 딥러닝을 위한 컨볼루션 방법 KR102055645B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180156777A KR102055645B1 (ko) 2018-12-07 2018-12-07 고속 딥러닝을 위한 컨볼루션 방법
US17/291,186 US20220222316A1 (en) 2018-12-07 2019-08-21 Convolution method for high speed deep learning
PCT/KR2019/010624 WO2020116745A1 (ko) 2018-12-07 2019-08-21 고속 딥러닝을 위한 컨볼루션 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180156777A KR102055645B1 (ko) 2018-12-07 2018-12-07 고속 딥러닝을 위한 컨볼루션 방법

Publications (1)

Publication Number Publication Date
KR102055645B1 true KR102055645B1 (ko) 2020-01-22

Family

ID=69368165

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180156777A KR102055645B1 (ko) 2018-12-07 2018-12-07 고속 딥러닝을 위한 컨볼루션 방법

Country Status (3)

Country Link
US (1) US20220222316A1 (ko)
KR (1) KR102055645B1 (ko)
WO (1) WO2020116745A1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9779786B1 (en) * 2016-10-26 2017-10-03 Xilinx, Inc. Tensor operations and acceleration
KR20180109619A (ko) 2017-03-28 2018-10-08 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10360494B2 (en) * 2016-11-30 2019-07-23 Altumview Systems Inc. Convolutional neural network (CNN) system based on resolution-limited small-scale CNN modules
KR20180073118A (ko) * 2016-12-22 2018-07-02 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9779786B1 (en) * 2016-10-26 2017-10-03 Xilinx, Inc. Tensor operations and acceleration
KR20180109619A (ko) 2017-03-28 2018-10-08 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
엄범, 합성곱 신경망(CNN, Convolutional Neural Network, umbum.tistory.com. 2017.3.27.* *

Also Published As

Publication number Publication date
US20220222316A1 (en) 2022-07-14
WO2020116745A1 (ko) 2020-06-11

Similar Documents

Publication Publication Date Title
CN111951153B (zh) 基于生成对抗网络隐空间解构的人脸属性精细化编辑方法
US9183643B2 (en) Apparatus and method for generating typical colors for image coding
US20040264741A1 (en) Region detecting method and region detecting apparatus
US20090214121A1 (en) Image processing apparatus and method, and program
JP5173898B2 (ja) 画像処理方法、画像処理装置、及びプログラム
CN109657600B (zh) 一种视频区域移除篡改检测方法和装置
US11259029B2 (en) Method, device, apparatus for predicting video coding complexity and storage medium
CN106650615A (zh) 一种图像处理方法及终端
CN111931801B (zh) 一种基于路径多样性与一致性的动态路由网络学习方法
CN113781510B (zh) 边缘检测方法、装置及电子设备
CN110162290B (zh) 一种针对OLED屏DeMURA数据的压缩方法
CN112669324B (zh) 基于时序特征聚合和条件卷积的快速视频目标分割方法
CN112001294A (zh) 一种基于yolact++的车身表面损伤检测及掩膜生成方法和存储设备
CN112990420A (zh) 一种用于卷积神经网络模型的剪枝方法
CN114168318A (zh) 存储释放模型的训练方法、存储释放方法及设备
CN113312183B (zh) 面向深度神经网络的边缘计算方法
KR102055645B1 (ko) 고속 딥러닝을 위한 컨볼루션 방법
CN108710881B (zh) 神经网络模型、候选目标区域生成方法、模型训练方法
CN107533760A (zh) 一种图像分割方法和装置
CN111160491B (zh) 一种卷积神经网络中的池化方法和池化模型
JP4516940B2 (ja) 累積和基盤の変化点分析を利用した虹彩認識方法及びその装置
CN114830137A (zh) 用于生成预测模型的方法和***
CN107292840B (zh) 图像复原方法及装置、计算机可读存储介质、终端
CN101268623B (zh) 用于创建可变形状区块的方法和装置
CN114514539A (zh) 剪枝模块的确定方法、装置及计算机可读存储介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant