Boostcamp AI Tech

[Boostcamp Day-8] DL Basic - Convolutional Neural Networks

ju_young 2021. 8. 11. 19:38
728x90

Convolution

다음과 같이 데이터 타입에 따라 계산할 수 있다.

  • 연속형(Continuous) convolution

  • 이산형(Discrete) convolution

  • 2D image convolution

여기서 I가 전체 이미지를 의미하고 K가 kernel을 의미한다.

RGB Image Convolution

위 그림을 보면 5 x 5 x 3의 filter와 32 x 32 x 3 image의 연산으로 28 x 28 x 1 크기의 feature가 출력된다는 것을 확인할 수 있다. 만약에 filter(5 x 5 x 3)가 4개라면 28 x 28 x 4 크기의 feature가 출력된다.

Stack of Convolutions

Convolution Layer는 다음과 같이 쌓을 수 있다.

여기서 이미지 크기의 계산은 (이미지 크기 - kernel 크기 + 1)로 하면 된다. 단, stride=1이고 padding은 없을 때이다.

Convolutional Neural Networks

CNN은 convolution layer, pooling layer, fully connnected layer로 구성되어있다. 여기서 convolution layer, pooling layer는 feature를 추출하고 Fully connected layer를 통해 classification과 같은 결과를 만든다.

Stride

stride는 간단히 말해서 얼마나 건너뛸 것 인가를 숫자로 표현한 것이다. 예를 들어서 1칸씩 뛰어서 계산하겠다와 2칸씩 뛰면서 계산하겠다를 다음과같은 그림을 통해서 이해할 수 있다.

Padding

padding은 가장자리에 빈 칸을 추가해주는 것을 말한다. 이것은 입력 사이즈와 출력 사이즈를 동일하게 만들 때 사용한다.

Convolution Arithmetic

다음과 같이 padding=1, stride=1, 3x3 kernel로 40x50x128에 적용하면 40x50x64가 나온다. 이때 parameter의 수를 계산해보자.

하나의 kernel이라고 하면 사이즈가 3x3x128일 것이고 출력 사이즈의 채널이 64이므로 parameter의 개수는 3x3x128x64 = 73,728으로 계산할 수 있다.

1x1 Convolution

1x1 convolution은 차원축소 또는 layer를 깊게 쌓을 수 있음과 동시에 parameter의 수를 줄일 수 있는 역할을 해준다.

728x90