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/
'Artificial Intelligence > Neural Networks' 카테고리의 다른 글
[ CNN ] 3. Point-wise convolution - PyTorch Code (0) | 2021.08.12 |
---|---|
[ CNN ] 2. Grouped convolution - PyTorch Code (0) | 2021.08.11 |
[ CNN ] 1. 바닐라 합성곱(vanilla convolution) - PyTorch Code (0) | 2021.08.11 |
[ GAN ] GAN(Generative Adversarial Network)의 간단한 이해 (0) | 2021.08.10 |
[ CNN ] pooling이란? (tf.keras.layers.MaxPool2D) (0) | 2020.03.16 |