이것저것 코딩하는 블로그

[Computer Vision] CNN - Convolution Neural Network 본문

Computer Vision

[Computer Vision] CNN - Convolution Neural Network

2020. 12. 9. 13:24

0.     Fully-connected Layer (완전 연결 신경망)

앞서 신경망의 기초 개념을 살펴보았으니, 이번에는 다양한 신경망의 종류를 살펴보겠다. 가장 기본적인 것은 완전 연결 신경망 (fully-connected layer) 인데, 이는 이전에 살펴본 신경망들과 같이 k-1번째 계층의 모든 뉴런들과 k번째 계층의 모든 뉴런들이 연결되어 있는 신경망을 말한다.

 

[ 그림 1. Fully-connected layer] 출처: https://missinglink.ai/guides/convolutional-neural-networks/fully-connected-layers-convolutional-neural-networks-complete-guide/

 

 

             이러한 계층 (이를 Affine 계층이라고 한다) 쌓고, 하나의 fully-connected layer 뒤에 활성화 계층 (활성화 함수) 연결한 것이 지금까지 살펴본 신경망의 기초 단위였다. 그러나 이는 어마어마한 계산량을 요구한다. 그렇다면 CNN 이런 계층과 어떤 차이가 있을까?

 

1.     CNN 기본 구조 – Convolution

 


CNN 살펴보기에 앞서 알아야 것이 있는데, 바로 Convolution(합성곱) 연산이다. 합성곱 연산의 정의는 합성곱 연산은 함수 f, g 가운데 하나의 함수를 반전(reverse), 전이(shift)시킨 다음, 다른 하나의 함수와 곱한 결과를 적분하는 것을 의미한다.’ 라고 적혀 있는데, 우리에게 적용될 합성곱 연산은 행렬 차원의 합성곱 연산이다. 이는 이미지 처리에서 말하는 필터 연산에 해당하는데, 구체적인 예를 보면서 살펴보자.

 

 

[그림 2. 합성곱 신경망의 예제] 출처: https://ardino-lab.com/합성곱-연산-예제로-알아보기/

 

합성곱 신경망에는 입력 데이터와 필터가 있고, 그로 인해 결과값 (feature map) 나온다. feature map인지는 뒤에 가서 설명하겠다. 그렇다면 어떤 계산 과정을 통해 나오는 것일까? 필터와 동일한 사이즈의 입력 데이터의 부분 행렬과 필터를 연산하여, 값이 결과의 하나의 값이 된다. 위의 예제로
자세히 살펴보자.

 

[그림 3. 합성곱의 과정] 출처: https://ardino-lab.com/합성곱-연산-예제로-알아보기/

2.     CNN 기본 구조 – Pooling


Pooling 행렬에서 세로.가로 방향의 공간을 줄이는 연산이다. Pooling에는 스트라이드라는 개념이 있는데, 스트라이드가 n이면 대상 행렬의 n*n 부분행렬에서 pooling 연산을 수행하여 하나의 값만을 도출한다. 어떤 과정으로 이루어지는지 pooling 중의 하나인 max pooling 예제를 통해 살펴보자.

[그림 4. max pooling] 출처: https://paperswithcode.com/method/max-pooling

 

4*4 행렬에 스트라이드가 2 max pooling 연산을 수행한 결과이다. 스트라이드의 크기가 2이므로 2*2 행렬로 대상 행렬을 나눈 , 2*2 행렬에서의 최댓값을 구한다. 만약 average pooling이라면 2*2 행렬의 평균값을 구하는 다양한 연산으로 바뀔 있다.

 

 

 

3.     CNN 작동 과정

그렇다면 위의 과정을 어떻게 이미지 처리에 이용할까? CNN convolution – activation (ReLU) – pooling 블록이 되어 블록을 쌓아 만들어진다.

 

1)     Convolution

 

이미지는 R, G, B 개의 구성 요소로 이루어져 있다. 각각의 성분을 channel이라고 부른다. 이미지의 크기가 n*m이라면, 초기 데이터는 n*m*3 형태로 입력된다 (화소별 R, G, B 채널값이 각각의 층을 이룬다). convolution 계층에서 R, G, B 채널에 각각 convolution 연산을 적용하여 feature map 뽑는다. Filter 가중치 값은 앞의 글에서 언급한 신경망의 오차역전파법을 통해 이미지의 feature 가장 뽑을 있는 값으로 갱신된다. Channel 개수는 3개에 국한되지 않고, feature 개수에 따라 유동적으로 변할 있다.

 

2)     Activation

 

활성화 함수를 통해 feature map에서 의미 있는 값들만 출력하는 과정을 거친다.

 

3)     Pooling

 

Pooling 계층을 통해 feature map 나타난 특징을 강화할 있다.

 

4.     CNN Overview

 

[그림 5. CNN의 전체적인 과정] 출처: https://jfun.tistory.com/186

 

 

[그림 5]에서와 같이, CNN convolution – activation – pooling 과정을 여러 (이는 사용자가 정의한다) 거친 , 완전 연결 계층을 거친다. Classification 경우 softmax 함수를 통해 각각의 값을 확률로 바꾸는 과정을 거쳐 가장 높은 확률을 가진 label을 답으로 정의한다. 그렇다면 super-resolution (SR) 에서는 어떻게 CNN이 사용될까? 다음 포스트에서 알아보도록 하자.

 

'Computer Vision' 카테고리의 다른 글

[Computer Vision] EDSR review  (0) 2020.12.09
[Computer Vision] ResNet Review  (0) 2020.12.09
[Computer Vision] SRCNN - Super-Resolution CNN  (0) 2020.12.09
Comments