Convolution Neural Network

김태준·2023년 2월 11일
0

Deep-Learning

목록 보기
2/10

최근 kaggle competition 준비를 위해 ResNet 공부를 하기 전 기본적인 image recognition을 위해 CNN 학습을 진행하고자 한다.

CNN (합성곱 신경망)

feature 값을 얻기 위해 합성곱 연산을 하는 Convolution layer, Convolution을 거쳐 나온 activation map이 있을 때 이를 이루는 convolution layer를 resizing하여 새로운 layer인 pooling layer, 최종 결과를 생성해내는 fully connected layer로 구성된다.

  • 인간의 시신경을 모방한 기술
  • feature map을 생성하는 filter까지 학습이 가능해 CV 분야에서 성능이 좋음
  • 이미지 인식 위해 패턴 찾기에 유용
  • 데이터 직접 학습하고 패턴 사용해 이미지 분류
  • 이미지 공간 정보를 유지한 상태로 학습이 가능한 모델

구조

Convolution Layer ~ Pooling Layer 과정을 반복적으로 진행해 feature map의 크기를 줄이고 Flatten으로 pooling 결과물을 벡터 형태로 변환하고 Fully-Connected Layer와 softmax를 적용하여 결과물을 출력하는 모델 구조 방식.

layer 별 동작 방식

  • Filter(kernel) 적용
    : 하나의 layer에 입력되는 이미지 채널 수만큼 필터가 존재, 각 채널에 할당된 필터를 적용하여 layer 별 출력 이미지 생성
  • Stride
    : 이미지에 대해 필터 적용 시, 필터의 이동량을 의미하는 stride 설정필요
  • Padding
    : 이미지 가장자리에 있는 픽셀 정보가 사라지는 문제를 해결하기 위해 이용

참고사항

  • Convolution에 ReLU를 사용하여 모델의 비선형성 유지
  • Pooling Layer
    : 이미지 크기를 유지한 채 classification을 진행한다면 연산량이 기하급수적이므로, 크기를 줄이면서 특정 feature를 강조할 수 있는 역할을 함. + 오버피팅 방지
    Max Pooling / Average Pooling / Min Pooling 방식이 존재
  • Fully-Connected Layer
    : Classification 작업을 위해 Flatten layer, softmax layer가 존재.
    Flatten : 데이터 타입을 Fully Connected 네트워크 형태로 변경. 데이터 >> 벡터

Image size computation

  • layer 별 입력 데이터에 대한 출력 feature map 계산
    input height : h
    input width : w
    filter height : fh
    filter width : fw
    stride size : s
    padding size : p

  • Output size
    height : ((h + 2p) - fh) / s + 1
    width : ((w + wp) - fw) / s + 1

profile
To be a DataScientist

0개의 댓글