Coding/TIL & 배운것들

합성곱 신경망(CNN)

코딩짜는 머글 2024. 11. 1. 19:36

합성곱 신경망이란?

사람의 시각 정보를 모델링한 것이다. 이미지 처리에 성능이 좋으며 주로 이미지 분석, 음성인식, 텍스트 분석에 사용된다.

합성곱 층(Convolutional Layer), 풀링 층(Pooling Layer), 완전 연결 층(Fully Connected Layer)으로 구성된다.

 

합성곱 층 : 필터(이미지에서 특정 패턴을 추출하는 작은 크기의 행렬)와 입력 이미지를 곱한 후 결과를 합산하여 특징맵(Featuer Map)을 생성한다. 특징맵의 크기는 필터의 크기와 이동 폭(stride), 패딩(padding) 설정에 따라 달라진다. 여러 층을 거치며 다양한 특징들을 추출하게 된다.
풀링 층 : 이미지 공간 크기를 줄여 계산량을 줄이고, 특징을 압축하는 역할을 한다. 보통 Max Pooling과 Average Pooling이 많이 사용된다. 
완전 연결 층 : 인공신경망과 비슷하게 작동한다. 최종적으로 학습된 특징을 이용해 이미지를 분류, 회귀 작업을 수행함. 평탄화(Flatten)과정을 통해 합성곱 및 풀링층의 출력을 1차원 벡터로 만들어, 기존의 인공신경망 같은 형태로 입력한다.

 

풀링 레이어의 필요성과 종류

풀링 층은 특징 맵의 크기를 줄이고, 중요한 특징을 추출하는 역할을 한다. 

 

Max Pooling : 필터 크기 내에서 최대 값을 선택한다. 중요한 특징을 강조하고, 불필요한 정보를 제거한다.

Average Pooling : 필터 크기 내에서 평균 값을 계산한다. 특징 맵의 크기를 줄이면서, 정보의 손실을 최소화한다. 

 

여러가지 CNN 아키텍처

 

LeNet (1998)

  • 초기 CNN 구조로, 손글씨 숫자 인식(MNIST 데이터셋) 작업에 사용됨. 
  • 5개의 계층으로 이루어졌으며, 두 개의 컨볼루션 계층과 세 개의 풀링 및 완전 연결 계층으로 구성된다. 
  • 주로 숫자 인식과 같은 단순한 이미지 작업에 사용된다.

AlexNet (2012)

  • ImageNet 대회에서 큰 성과를 내며 CNN의 가능성을 크게 부각한 모델이다. 
  • 8개의 계층으로 구성되었으며, ReLU 활성화 함수와 드롭아웃을 적용하여 과적합을 줄였다.
  • 이미지 분류에 주로 사용되며, 복잡한 CNN 모델의 시초로 볼 수 있다.

VGG (2014)

  • 모델의 깊이를 늘려 성능을 향상시키는 접근을 제안함.
  • 16~19 개의 깊은 계층을 가지며, 3x3의 작은 필터를 여러 개 쌓아 더 깊고 정교한 특정을 추출한다.
  • 이미지 분류 및 특징 추출 작업에 적합하지만, 메모리 사용량이 높아 실행 비용이 크다.

GoogLeNet (Inception) (2014) 

  • 병렬 필터를 사용한 Inception 모듈을 통해 모델 효율성을 높였다.
  • 여러 크기의 필터를 병렬로 적용하여 다양한 크기의 특징을 추출한다.
  • 깊이와 계산 효율을 모두 확보할 수 있어 이미지 인식 작업에서 널리 사용됨.

ResNet (2015)

  • 레지듀얼(Residual) 네트워크로, 네트워크가 깊어질수록 발생하는 성능 저핳 문제를 해결했다.
  • '스킵 연결'을 통해 계층 간의 입력을 이전 계층으로 전달하여 정보 손실을 줄였다.
  • 이미지 분류 및 인식에서 현재도 자주 사용되는 모델로, 높은 정확도를 자랑한다.

DensdNet (2017)

  • 각 계층이 이전의 모든 계층으로부터 입력을 받는 구조이다.
  • 모든 계층이 서로 연결되며, 입력으로 사용된 특징들이 재사용되므로 파라미터 효율이 매우 높다.
  • 고해상도 이미지 분석 및 메디컬 이미지와 같이 세밀한 특징 추출이 필요한 작업에 적합하다.

MobileNet (2017)

  • 모바일과 같은 제한된 자원에서 CNN을 사용할 수 있도록 경량화한 모델이다.
  • 딥스탑 깊이별 분리 합성곱 구조를 사용하여, 계산량을 줄이면서도 높은 성능을 유지한다.
  • 모바일 장치나 IoT 기기에서 실시간으로 이미지 인식을 수행할 수 있는 모델로 사용된다.

EfficientNet (2019) 

  • 네트워크의 크기(깊이, 너비, 해상도)를 효율적으로 조절하여 고성능을 달성한다.
  • '컴파운드 스케일링(compound scaling)'을 사용해 성능과 효율성 모두 갖춘 모델을 설계했다.
  • 다양한 컴퓨팅 리소스에 최적화할 수 있어, 이미지 분류 및 인식에 널리 사용된다.