CNN

이상민·2023년 3월 21일
0
post-custom-banner

CNN이란 신경망의 한 종류이다. 다수의 Convolutional Layer으로 부터 모서리, 선,모양 같은 특징맵(Feature map)을 추출하고 서브샘플링(Subsampling)을 통해 차원을 축소하여 특징맵에서 중요한 부분을 추출한다.

convoltion(합성곱)

합성곱은 이미지와 같은 데이터에서 특징을 추출하는 데 사용된다.


그림을 보면 6x6 행의 입력 이미지가 있을 때 3x3 커널로 합성곱을 진행하면, 4x4의 특징맵이 추출된다.

  • 커널의 파라미터는 Back Propagation을 진행하며 학습되는 파라미터다.

Padding

합성곱을 계속 진행하다 보면 이미지가 축소하게 되고, 가장자리의 픽셀은 한번만 사용 되므로 이미지 윤곽쪽의 정보는 버리는셈이 된다.
이를 해결하기 위해 아래 그림처림 이미지 주위로 추가로 경계를 덧대는 padding을 사용한다.

패딩을 사용한 최종 이미지 크기
(n+2pf+1)(n+2pf+1)(n+2p-f+1)*(n+2p-f+1)
f:f:커널의 크기 p:p: 패딩의 크기 n:n : 이미지의 크기

Stride

스트라이드는 합성곱을 진행하며 커널이 한번에 이동하는 범위를 말한다.

스트라이드를 포함한 특징맵 사이즈
(n+2pfs+1)(n+2pfs+1)(\frac{n+2p-f}{s}+1)*(\frac{n+2p-f}{s}+1)

pooling

convolution layer 이외에도 CNN은 pooling layer를 사용해서 차원을 축소하여 계산시간을 줄이고 특징을 잘 검출할 수 있다

신경망에서 convolution 연산을 사용하는 이유

  • 변수를 적게 사용할 수 있다
    만약 32 x 32 x 3 이미지를 5x5 사이즈의 커널을 이용하여 28x28x6 사이즈의 이미지로 만드는데 필요한 파라미터의 개수는

    Convolution: (5x5x3x6) + 6 = 456개
    Fully connected: (32 x 32 x 3 )x(28x28x6)+(28x28x6) 개

profile
잘하자
post-custom-banner

0개의 댓글