딥러닝/컴퓨터비전

[컴퓨터비전1]CNN(Convolution Neural Network) 한 장 요약 정리!

데이터요리사 2021. 12. 13. 11:13

1. CNN이란?

"이미지 처리에 탁월한 성능을 보이는 인공신경망"

'셀마다 특정 자극에 반응하는 생물학적 구조를 반영한 지도 학습 기반의 피드 포워드 신경망'이라는 표현을 이해할 수 있다면 이 표현이 CNN에 대한 좋은 정의라 할 수 있겠다. 이게 무슨 멍멍이 소리냐 싶으면, '이미지 처리 할 때 자주 쓰는 신경망이다'라고 기억해두시길.

 

(참고) 이미지 처리?

이도 엄밀히 말하면 '컴퓨터 비전' 분야라고 표현하는 것이 올바르다. 사람의 눈(시각, vision)에 해당하는 역할을 컴퓨터에 구현한 것이니 다루는 데이터의 유형이 '이미지'인 것이다. '컴퓨터 비전' 분야에서 연구하는 대표적인 분야는 이미지 분류(Classification), 이미지 분할(Segmentation), 객체 인식(Object Detection) 등이 있다. 

하나의 사진을 보고 '강아지 이미지'라고 판단하는 문제가 이미지 분류 문제,

그 사진에서 강아지가 있는 부분을 잘 도려낼 수 있다면 이미지 분할 문제,

하나의 사진에 있는 여러 개의 객체가 무엇인지(classification), 어디에 있는지(localization) 판단할 수 있다면 객체 인식(Object detection) 문제를 해결한 것이다.

Classification → Segmentation → Object Detecion 순으로 처리해야할 문제의 난이도가 점점 높아진다. 특별한 언급이 없다면 이미지 처리를 'Classifiacion을 위한 알고리즘'이라고 이해하시길..


 

2. CNN의 구성

CNN은 다른 신경망과 마찬가지로 입력층, 연산층, 출력층로 구성된다. '입력층'은 이미지를 넣는 부분, '출력층'은 입력 이미지가 어떤 카테고리인지(강아지인지? 고양인지?)를 출력한다.

 

'연산층'은 크게 '이미지에서 특징을 추출(Feature Extraction)하는 부분'과 추출한 특징을 활용하여 '분류(classifier)하는 방법을 학습하는 부분'으로 나뉜다. 이미지 특징 추출부는 컨볼루션 계층과 풀링 계층으로 구성되고, 분류 계층은 기본적인 신경망 구조인 FC(fully connected) 계층으로 구성된다. 

(참고) CNN이 이미지에서만 활용가능한 것은 아니다. 수치형 데이터, 텍스트 등에도 활용 가능하다.

1) 이미지의 특징을 추출하는 'Convolution Layer'

  • 입력 데이터에 '필터(filter)'를 적용하여 합성곱(convolution) 연산을 수행하여 특징맵(feature map)을 도출 
    • Local connectivity
      • 하나의 필터가 훑어가는 영역은 연관성이 높다(locally correlated)
      • RF(Receptive Field) : '하나의 필터'가 '한 번에' 입력 이미지를 얼마파악할 수 있는지를 나타냄, RF가 이미지 전체를 커버할 수 있을 수준으로 conv. layer를 쌓아야 함
    • Weight Sharing
      • 하나의 특징맵(feature map)에 대해 동일한 가중치를 가짐
  • 필터는 항상 입력의 depth 만큼 확장
  • 필터는 분류의 손실(loss)값을 역전파(back propagation)하여 학습
  • 필터의 크기는 보통 3X3, 5X5, 7X7 ... 형태를 사용
  • 특징맵(feature map)은 MLP(multi layer perceptron)의 뉴런(neuron)에 상응하는 값으로 특징맵 사이즈는 입력 이미지의 크기, 패딩 사이즈, 커널 사이즈, 스트라이드 정도에 따라 달라짐( o =  └ (i+2p-k)/s ┘+1 )

2) 특징 정보를 요약하는 'Pooling Layer'

  • 특징맵(feature map)의 차원 축소를 수행, 일반적으로 max pooling을 사용
    • average pooling
  • 차원 축소 = 공간 차원에서 다운 샘플링 수행
    • 변화(노이즈, 시프트, 왜곡)에 강함(robust)
    • 파라미터의 수와 계산양을 줄임
    • 오버피팅 제어
  • 차원 축소하는 방법
    • max pooling
    • stride > 1로 설정

3) 이미지 분류를 위한 'Fully connected Layer'

  • 모든 뉴런이 연결되어 이전 레이어에 있었던 노드들이 모두 활성화
  • 가중치는 분류의 손실(loss)값을 역전파(back propagation)하여 학습
728x90