본문 바로가기
Artificial Intelligence/Neural Networks

[CNN] Padding 무엇인가?

by SuperMemi 2020. 3. 16.
반응형

Zero Padding

 

  - zero padding이란 image 주위를 0으로 둘러주는 과정을 말한다.

 


padding size

딥러닝을 할때 항상 input과 output의 데이터 사이즈를 잘 알아야 모델을 잘 만들 수 있다.

 

p                        : padding layer의 수

image_size            : (n x n)

padded_image_size : ((n + 2p) x (n + 2p))

convolution-operation (with (f x f) filter) outputs

                          : ((n + 2p – f + 1) x (n + 2p – f + 1))

 

 


왜 padding이 필요한가?

1. 이미지 데이터의 축소를 막기 위해.

  convolution operation에서 input data인 (n x n)pixel image가 (f x f) filter을 통해 (n – f + 1) x (n – f + 1) pixel image로축소된다.

  CNN과정에서 위와같이 여러번의 계산을 해야하는데 초반부터 이미지가 너무 작아져 버리면 더 깊게 학습시킬 데이터가 부족해지는 현상이 만들어진다. 이는 neural network의 성능에 악영향을 미치기 때문에 padding을 이용하여 크기를 조절할 수 있다.

 

2. Edge pixel data를 충분히 활용하기 위해.

  아래의 그림을 보면 이해가 쉬울 것이다. convolution operation과정에서 A나 B의 자료는 C의 자료에 비해 훨씬 적게 사용된다. 만약 중요한 정보가 모서리 쪽 A나 B에 있다면 모델의 성능이 떨어질 것이다.

  Padding을 이용해 모서리 쪽을 0으로 둘러 주면, 실제 정보가 있는 A와 B의 데이터는 그전보다 더 많이 사용될 것이다.

 


Padding의 종류

 

1. Valid Padding : padding하지 않는 것을 의미.

2. Same Padding : output image가 input image의 크기와 동일 한 것을 말한다. 

                        p = (f – 1) / 2 일때,    

                       [(n + 2p) x (n + 2p) image] * [(f x f) filter] —> [(n x n) image]

 


[출처]

https://www.geeksforgeeks.org/cnn-introduction-to-padding/

https://brunch.co.kr/@coolmindory/37#comment

https://www.edwith.org/boostcourse-dl-tensorflow/lecture/43743/

반응형