부트캠프와 다른 AI학교,
AI는 아이펠에서 배우세요
#인공지능 

Padding (패딩)을 사용하는 이유

심층 신경망에서 중요한 역할을 하는 Convolution(볼루션) 연산과 Padding (패딩)에 대해 자세히 알아보도록 하겠습니다.

2024-03-19 | 김태헌

안녕하세요! 심층 신경망에서 중요한 역할을 하는 Convolution(볼루션) 연산과 Padding (패딩)에 대해 자세히 알아보도록 하겠습니다.

이미지가 작아지는 문제

Convolution 연산은 이미지의 특징을 추출하기 위해 사용되는데, 작은 필터(Filter)를 이미지 위에 올려놓고 이동시키면서 연산을 수행합니다. 그런데 이 과정에서 이미지의 크기가 점점 작아지게 되는데, 이는 심층 신경망을 구축할 때 문제가 될 수 있습니다.

예를 들어, 5×5 크기의 이미지를 3×3 필터로 Convolution 연산을 수행하면 3×3 크기의 출력 이미지가 생성됩니다. 수학적으로 입력 이미지의 크기가 nxn이고 필터의 크기가 fxf라면, 출력 이미지의 크기는 (n-f+1)x(n-f+1)이 됩니다. 즉, 다음 그림에서는 (5-3+1)x(5-3+1)의 크기(3×3)가 됩니다.

(출처: http://deeplearning.stanford.edu/tutorial/supervised/FeatureExtractionUsingConvolution/)

 

이런 식으로 Convolution 연산을 반복하다 보면 이미지의 크기가 급격히 작아지게 되고, 심층 신경망의 깊이가 깊어질수록 정보 손실이 커집니다. 게다가 이미지의 가장자리에 있는 픽셀들은 필터와 겹치는 영역이 적기 때문에 충분히 활용되지 못하는 문제도 있습니다.

Padding 적용 (이미지 크기 유지)

이러한 문제를 해결하기 위해 우리는 Padding을 사용합니다. Padding은 입력 이미지 주변에 일정한 크기의 테두리를 추가하는 것인데, 보통 0으로 채워진 픽셀을 사용합니다. 예를 들어, 5×5 이미지에 1 픽셀 크기의 Padding을 적용하면 7×7 크기의 이미지가 됩니다.

(출처: https://commons.wikimedia.org/wiki/File:Convolution_arithmetic_-_Same_padding_no_strides_transposed.gif)

이제 7×7 이미지에 3×3 필터로 Convolution 연산을 수행하면, 출력 이미지의 크기는 5×5이 됩니다. 즉, 입력 이미지와 동일한 크기를 유지할 수 있는 것이죠. 수학적으로 Padding의 크기를 p라 했을 때, 출력 이미지의 크기는 (n+2p-f+1)x(n+2p-f+1)이 됩니다.

Padding을 적용함으로써 얻을 수 있는 또 다른 이점은 이미지의 가장자리 정보를 잘 보존할 수 있다는 것입니다. Padding 없이 Convolution 연산을 수행하면 가장자리 픽셀들이 연산에 적게 기여하게 되지만, Padding을 적용하면 가장자리 픽셀들도 충분히 활용될 수 있습니다.

Padding 활용

Padding의 크기를 결정할 때는 Valid Convolution과 Same Convolution 중 하나를 선택할 수 있습니다. Valid Convolution은 Padding을 적용하지 않는 것이고, Same Convolution은 출력 이미지의 크기가 입력 이미지와 동일하도록 Padding을 적용하는 것입니다.

Same Convolution을 사용할 때 필요한 Padding의 크기 p는 (f-1)/2로 계산할 수 있습니다. 여기서 f는 필터의 크기인데, 일반적으로 홀수 크기의 필터를 사용합니다. 짝수 크기의 필터를 사용하면 비대칭적인 Padding이 필요하고, 필터의 중심 위치를 정의하기 어렵기 때문이죠.

필터 크기

마지막으로 Convolution 연산에서 자주 사용되는 필터의 크기는 3×3, 5×5, 7×7 등의 홀수 크기입니다. 1×1 필터도 가끔 사용되는데, 이는 차원 축소에 유용합니다.

 

정리

Convolution 연산과 Padding에 대해 알아보았습니다. Padding은 심층 신경망에서 이미지의 크기를 유지하고 가장자리 정보를 잘 보존하기 위해 꼭 필요한 기술입니다. 여러분도 심층 신경망을 구축할 때 상황에 맞는 적절한 Padding 기법을 활용해 보시기 바랍니다. 감사합니다!