본문 바로가기
바삭한 인공지능

바삭한 인공지능(Convolutional Neural Network)

by Oceanlighth AI 2023. 1. 31.

목차

1. 머리글

2. CNN(Convolutional Neural Network)

3. Zero Padding

4. Pooling

5. Fully Connected Layer

6. CNN의 프로세스

7. 마치며

안녕하세요. 오션라이트에이아이 백승기연구원입니다. 

머리글

이번 글에서는 Deep Learning의 알고리즘 중 CNN(Convolutional Neural Network)에 대하여 알아보겠습니다.

CNN(Convolutional Neural Network)

CNN(Convolutional Neural Network)는 합성곱 신경망이라고 하며 Convolution 연산을 통해서 이미지의 공간적인 정보를 유지하며 이미지 분류에서 높은 성능을 보이는 구조입니다.

 

이미지가 픽셀마다 가지고 있는 특성들을 Convolution Filter를 통해 연산하여 결과값을 하나씩 배치시켜 새로운 특성을 가진 데이터를 만들어 냅니다.

 

Filter - 연산을 위해 적용하는 값
Stride - Filter가 Image에서 얼마나 움직이는지 정해주는 값

그림 1. CNN의 기본 알고리즘 (출처 : http://deeplearning.stanford.edu/wiki/index.php/Feature_extraction_using_convolution)

 

그림 1.와 같이  CNN은 3x3으로 이루어진 Filter가 Image를 통과하면서 해당 곱의 합들을 하나씩 배치시키는 구조로 이루어 집니다. 이때, Filter의 사이즈와 수치에 따라 다른 결과값이 나오게 됩니다.

 

그림 2. CNN

그림 2.의 경우에는 3x3사이즈의 이미지를 2x2 Filter를 거쳐 2x2의 Output이 나오게 됩니다. 

 

그림 2.에서 보다시피 3x3이었던 원본 이미지 사이즈가 Filter를 거쳐 2x2가 되었는데 이렇게 되면 이미지 사이즈가 변하게 되고 각 픽셀이 가지고 있던 정보가 충분히 활용되지 않을 수 있습니다.

 

그러한 문제점을 해결하기 위해 다음과 같은 방식을 사용합니다.

 

Zero Padding

위에서 설명했던것처럼 이미지 사이즈가 변경되거나 이미지 픽셀이 가지고 있는 정보의 변화를 줄이기 위해 원래 데이터에는 없던 0의 데이터를 가지는 테두리를 만드는 것을 Zero Padding이라고 합니다.

 

그림 3. Zero Padding

그림 3.과 같이 원본 데이터가 가지고 있지 않던 0이라는 데이터를 가진 테두리를 사용하여 Filter를 통과시켜도 원본 이미지 데이터의 정보의 소실을 줄일 수 있고, 이미지 크기에도 영향을 미치지 않을 수 있습니다.

 

Pooling

그림 4. Max Pooling

 

 

Pooling이란 Convolution Layer를 통과한 이미지 데이터에서 특정 영역 내에 있는 데이터들 중 필요한 데이터만 가져와서 배치시키기 위해서 사용하는 과정입니다.

 

Pooling에는 영역 내에서 가장 큰 값을 가져오는 Max Pooling, 평균값을 가져오는 Average Pooling등이 있습니다.

 

Pooling의 목적은 다음과 같습니다.

1. 학습에 필요하지 않은 Parameter를 줄일 수 있어 Overfitting을 방지할 수 있습니다.
2. Pooling을 사용하여 특징을 더 잘 잡아낼 수 있습니다.

 

Fully Connected Layer

Fully Connected Layer는 Convolution과 Pooling 프로세스를 마친 결과를 취하여 이미지를 미리 정의된 라벨로 분류하기 위해 사용합니다.

그림 5. Fully Connectted Layer (출처 : https://m.blog.naver.com/bananacco/221928562116)

그림 5.와 같이 이미지의 픽셀 데이터를 1차원 배열로 나열하여 각각의 픽셀값들을 계산하여 결과값을 만들어 냅니다.

 

Flatten Layer는 분류작업을 위해 2차원의 데이터를 1차원 배열로 나열해주는 Layer 입니다. 

 

CNN의 프로세스

위에서 살펴본 바와 같이, CNN의 프로세스를 요약하면 다음과 같습니다.

 

 

그림 6. LeNet - 5 (출처 : https://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf)

 

그림 6.과 같이 Input 이미지를 Convolution을 통해 특징을 추출하고 Subsampling(Pooling등)을 통해 원하는 특징들을 다시 추출합니다. 
위의 과정을 반복한 뒤 마지막에 Fully Connected Layer를 통해 이미지 데이터를 나열하여 최종적으로 원하는 결과를 도출해 냅니다.

 

마치며

이번 글에서는 CNN의 전체적인 구조와 프로세스 과정을 알아보았습니다.

다음 글에서는 CNN 알고리즘의 종류에 대해서 알아보도록 하겠습니다.

댓글