[CNN] Padding 무엇인가?

2022. 10. 12. 15:46인공지능,딥러닝,머신러닝 기초

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*n)pixel image가 (f*f) filter을 통해 (n-f+1)*(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의 크기와 동일 한 것을 말함