본문 바로가기

Study/AI

[머신러닝/딥러닝] 합성곱 신경망(Convolutional Neural Network , CNN)

1. 합성곱 신경망(Convolutional Neural Network, CNN)

합성곱 신경망(Convolutional neural network, CNN)은 시각적 영상을 분석하는 데 사용되는 다층의 피드-포워드적인 인공신경망의 한 종류이다. 딥러닝에서 심층 신경망으로 분류되며, 시각적 영상 분석에 주로 적용된다. 

1-2. CNN의 구조

CNN은 총 3가지 레이어로 구성되있으며, 앞쪽 합성곱 계층(Convolution layer)풀링 계층(Pooling layer)은 특징을 뽑아내는 역할을 수행하고 뒤쪽 완전히 연결된 계층(fully-connected layer)은 분류 연산을 수행한다.

2. 합성곱 계층(Convolution Layer)

이미지 데이터는 높이X너비X채널로 표현되며,

이미지의 색상이 RGB라면 채널의 크기는 3이 된다. 

 

Filter 또한 높이X너비X채널로 표현되며, 특징 별로 존재한다. Filter의 채널은 반드시 입력으로 들어오는 image의 채널 수와 같아야 한다.

 

입력으로 들어오는 image의 채널 수 = Filter의 채널 수

 

 

 

Convolution Layer와 Filter 하나가 연산을 수행하고 나면 출력들을 모은 한 장의 이미지 형태의 출력이 나온다. 이를 Feature map 혹은 Activation map 이라고 부른다.

 

특징은 여러개 존재하므로 Filter은 여러개가 될 수 있다. Filter의 개수 별로 Feature map도 하나씩 증가한다.

 

Filter의 개수 = output Feature map의 채널 수

 

2-1. 합성곱계층(Convolution Layer) 연산

같은 자리에 있는 숫자끼리 곱한다음, 모두 더한 값을 Output feature map에 써주는 방식으로 연산이 진행된다.

그림과 같이 input 채널 수가 여러개이고 필터의 수가 여러개일 때도 같은 방식으로 연산이 진행된다.

 Convolution Layer 연산을 하고 나면, Activation Function을 통과시키게 된다. Activation Function에서는 ReLU 연산을 통해 양수는 그대로 통과하고 음수는 0으로 변환되게 된다.

2-2. Options of Convolution : Stride

이미지에 대해 필터를 적용할 때는 필터의 이동량을 의미하는 스트라이드 (stride)를 설정해야한다. 즉 한 번의 Convolution 연산 이후 옆으로 이동할 때 몇 칸 이동할 지에 대한 부분이다. 

 

2-3. Options of Convolution : Zero Padding

그림과 같이 이미지에 대한 합성곱 연산을 수행하면 출력 이미지의 크기는 입력 이미지 크기보다 작아지는 것을 확인 할 수 있다. 만약 이와 같은 방식이 계속돼서 수행하게 된다면 이미지의 크기는 점점 작아지게 되고, 레이어를 깊게 쌓는데 지장이 발생할 수 있다. 이러한 문제를 해결하기 위해 이용되는 것이 패딩(Padding)이다.

 

 

 

패딩 (Padding)은 그림과 같이 입력 이미지의 가장자리에 특정 값으로 설정된 픽셀들을 추가함으로써 입력 이미지와 출력 이미지의 크기를 같거나 비슷하게 만드는 역할을 한다.

 

예시처럼 이미지의 가장자리에 0의 값을 갖는 픽셀을 추가하는 것을 zero-padding이라고 하며, CNN에서는 주로 이러한 zero-padding이 이용된다.

 

 

 

3. Convolution Layer 실습코드

세 가지 경우의 코드를 살펴 볼 것인데, 첫 번째 코드는 Padding이 vaild인 경우, Padding이 없는 경우의 코드이다.

두 번째 코드는 Padding이 same인 경우, Padding이 있는 경우의 코드이며, 다음과 같이 출력 이미지의 크기가 3X3으로 입력 이미지의 크기와 같은 것을 확인할 수 있다.

마지막 코드는 Filter의 개수가 여러개인 경우인 경우의 코드이며, 아래 코드는 Filter의 개수를 3으로 설정하였다. 이를 통해 출력 이미지의 채널 수가 필터 개수인 3과 같아지는 것을 확인 할 수 있다.