Day 29/30 - 딥러닝 > CNN

2022. 11. 21. 19:53Python

이번 글에서는 딥러닝 알고리즘 중 CNN에 대해 다룰 것이다.

CNN은 합성곱을 사용하는 신경망으로, 이미지 처리를 위해 여러개의 필터를 사용한다. 필터는 커널의 집합으로, 커널은 특정 부분을 제거, 혹은 추출하는데 쓰이는 가중치 행렬이다.

CNN에서의 합성곱 연산은 원본 이미지의 왼쪽 위에서 오른쪽으로 한 칸씩 합성곱 커널을 옮겨가면서 이루어진다. 이 때 합성곱 커널은 이미지에서 특징 추출을 위한 가중치를 지니고 있으며, 오른쪽 끝까지 도달하면 세로로 한 칸을 내린다. 이렇게 곱한 숫자들을 다 더해서 값을 출력하게 된다. 출력한 값을 특징 맵이라고 하는데, 특징 맵은 결국 합성곱의 결과로부터 나타나는 이미지라고 할 수 있다. 이 합성곱 연산에서, 사용자의 정의에 따라 커널의 이동거리가 정해진다. 이 이동거리를 스트라이드라고 한다.

이러한 합성곱을 한 번 수행하면 특징 하나를 추출하고, 가중치를 달리해서 얻은 여러 개의 특징과 이 특징 맵은 다음 합성곱층의 이미지로 들어가게 된다. 이렇게 합성곱층이 쌓여 있는 것이 CNN이다. 결국 CNN은 이미지에서 특징을 추출하는 것을 반복한 후 MLP를 수행하고 이미지를 예측하게 된다.

CNN의 대표 알고리즘으로 VGG와 ResNet이 있다. VGG는 가장 기본이 되는 CNN으로 3*3 크기의 커널을 이용해서 가중치 개수를 줄인다. ResNet은 입력 이미지와 특징 맵을 더하는 CNN으로 층이 깊어질수록 역전파되는 오차가 작아지는 문제를 어느 정도 해결하여 매우 깊은 층을 가지게 된다. CNN 모델 중 가장 많이 사용하는 알고리즘이기도 하다.

 

VGG와 ResNet을 이틀에 걸쳐 실습하였다.

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

 

'Python' 카테고리의 다른 글

Day 32 - 딥러닝 > LSTM  (0) 2022.11.23
Day 31 - 딥러닝 > U-Net & RNN  (0) 2022.11.22
Day 28 - 딥러닝  (0) 2022.11.17
Day 27 - 머신러닝 9 > K 평균 군집화 (K-Means Clustering)  (0) 2022.11.16
Day 26 - 머신러닝 8 > LightGBM  (0) 2022.11.15