Convolution은 무엇일까?

Jadon·2021년 12월 27일
0

AI를 공부해본 사람이라면 CNN이란 말을 많이 들어봤을 것이다. CNN이란 Convolutional Neural Network의 약자이고 이미지에 관련된 모델에 최적화된 네트워크이다. 본 글에서는 CNN에 사용되는 연산인 Convolution에 대해 다뤄보자.

위 그림은 크게 2 부분으로 나눌 수 있다.

  • Convolution and Pooling layers: feature extraction
  • Fully connected layer: decision making(e.g. classification)

Convolution (합성곱)

  • 필터를 이미지에 씌워서 모든 값을 곱하고, 더해서 하나의 아웃풋이 나온다.

  • 필터에 값을 다르게 주면 다른 feature(특징들)를 추출할 수 있다.

Padding은 왜 사용할까?

  • Input의 크기가 줄어드는 것 방지.
  • Input의 모든 영역을 골고루 Convolution 하기 위해, padding이 없다면 가장자리 부분은 필터가 한 번밖에 지나지 않는다.

모델의 파라미터 개수 구해보기

224x224x3 이미지가 input으로 들어왔을 때, 11x11x3 (필터의 channel은 인풋과 일치해야 함) 필터로 Convolution 연산을 진행하면 11*11*3*48*2 개의 파라미터, 즉 첫 번째 35k만큼의 파라미터를 요구하게 된다. 조금 더 자세하게 설명하자면

  • 11*11*3은 필터가 요구하는 파라미터
  • 이어지는 그림의 채널이 48인것을 보면, 11*11*3 필터를 48개 사용했다는 말이기 때문에 48을 곱해줌
  • 그게 위, 아래로 두개의 Path가 있어서 2를 마지막에 곱해줌. 

1x1 Convolution

왜 사용할까?

  • Dimension reduction
  • To reduce the number of parameters while increasing the depth
  • e.g. bottleneck architecture

0개의 댓글