본문 바로가기
Studying/Machine Learning

[머신러닝] Convolution Layer - Padding, Stride, Dilation

by giem 2022. 7. 21.
반응형

2022.07.21 - [Studying/Machine Learning] - [머신러닝] Convolutional Neural Network 이해하기

 

[머신러닝] Convolutional Neural Network 이해하기

이번 포스트에는 이미지를 다루기 위해 CNN을 정리해보겠다. (이미지만 가능한 것으로 해석될 수 있는데 CNN은 text, sound, 일반 데이터들을 다 다룰 수 있다.) 강아지와 고양이 이미지가 있을 때 사

gm-note.tistory.com

저번 포스트에 CNN을 정리하며 padding, stride, dilation이라는 개념이 나왔었다.

이것을 정리해보겠다.

 


Padding (zero)

 

Padding은 이미지 테두리에 0을 붙여주는 것이다.

필터의 사이즈를 그대로 유지하는 기능을 하기도 한다.

 

이 이미지의 회색 부분이 padding 부분이다.

기존 7*7 padding에 3*3 필터를 걸고 필터를 한 칸씩 움직이면 5*5가 되겠지만

padding을 1개 하면 위와 같이 9*9가 되기 때문에 그대로 7*7이 된다.

더보기

Filter size가 F*F일 때 사이즈를 유지하기 위한 패딩 공식은 다음과 같다.

(F-1)/2

 

예를들어 필터가 3*3이면 zero padding이 1이고

필터가 5*5이면 zero padding이 2이고

필터가 7*7이면 zero padding이 3이 된다.


Stride

 

Stride는 필터를 몇 칸씩 움직일지 이다.

conv layer에서는 보통 1칸씩 움직이며 데이터 손실이 없게 하지만

max pooling 같은 경우에는 특정 데이터 확산 현상을 방지하기 위해 filter size만큼 stride 한다.

 


Dilation

 

Dilation은 일반적으로는 사용을 많이 안 하지만 사용을 하는 모델들도 종종 있다.

 

설명을 위해 사진을 가져와보았다.

 

https://towardsdatascience.com/review-dilated-convolution-semantic-segmentation-9d5a5bd768f5

위 사진은 기존 방식으로 dilation이 1이다.

 

https://towardsdatascience.com/review-dilated-convolution-semantic-segmentation-9d5a5bd768f5

이게 dilation이 2인 conv이다.

dilation이 팽창이란 뜻이 있는데

풍선에 점을 찍고 불어서 팽창시켰을 때 점 사이의 거리가 넓어지는 것을 생각하면 될 것 같다.

 

이를 사용하는 이점은 같은 filter size(parameter 수)로 더 넓은 영역을 볼 수 있는 것이다.

 


이렇게 Convolution layer의 옵션에 대해 정리해 봤다.

 

다음 포스트에서는 이를 Pytorch로 구현해보겠다.

반응형

댓글