Guilin Liu, Kevin J. Shih, Ting-Chun Wang, Fitsum A. Reda, Karan Sapra, Zhiding Yu, Andrew Tao, Bryan Catanzaro - NVIDIA Corporation
Technical Report (Technical Report) 2018
https://arxiv.org/abs/1811.11718
없음
padding에 대한 이야기가 많이 없었음.
CNN에서 padding을 쌓음으로써 결과의 사이즈가 입력과 동일하도록 맞출 수 있음.
padding 3가지
1) zero padding : 모든 pad에 0을 넣는 것
2) Replication Padding : 주변 사각형의 pad value가 값을 가지도록 넣는 것
3) Reflection Padding : padding이 옆 value 기점으로 좌우가 같게 padding을 넣는 것
zero padding이 가장 간단하고 계산에 효율적
padding이 가지는 한계점
pad에 우리가 임의의 값으로 채워넣었기 때문에 비현실적인 이미지 패턴이 만들어짐
네트워크가 여백에 대해 똑같은 대우를 하기 때문에 혼란이 있을 수 있음.
padding을 noise로 인식
Zero padding과 비교했을 때 모든 아키텍처에서 본인들의 모델이 높은 정확도를 보임.
구현의 overhead 없이 코드 활용 가능.
https://github.com/NVIDIA/partialconv/blob/master/models/partialconv2d.py
PR-107 "Image Inpainting for Irregular Holes Using Partial Convolutions", 2018 ECCV에서 제안된 Partial Convolution이 그 시초
https://aigong.tistory.com/317
Partial Convolution
Motivation
Image Inpainting할 때 Masking 되었던 부분을 Hole로 0을 사용했는데 Padding 역시도 0으로 되어있으니 이를 Partial Conv에 활용하면 어떨까
Case of Big Padding Size
1) 이미지 사이즈가 다 다른 경우 -> Padding 필요
2) 가장자리에서의 Conv가 유효하지 않음
Results
Pytorch에 사용
Experiments - Image Classification
항상 partial이 zero에 비해 좋은 결과를 보임
평균값이 항상 좋았음, std도 낮아짐
Fast Convergence & Stability
Figure 5는 Figure 4에서 안정적으로 생성한 것을 layer별로 확인한 것
실제로 zero padding이 가지는 noise가 영향을 끼친 것으로 판단됨
zero padding을 훈련시킨 후 Inference를 partial로 한 경우 정확도가 급격하게 떨어짐.
다만 partial로 훈련시킨다면 Inference에서 zero/partial에 상관없이 비교적 안정적인 정확도를 얻을 수 있음
Experiments - Semantic Segmentation
Encoder & Decoder Model인 Semantic Segmentation
padding이 중요함
Dilated convolution를 활용하여 큰 receptive field를 성취함.
DeepLab V3 + model (Dilated conv) on the CityScapes dataset
partial이 성능이 더 좋았음.
올바른 segmentation 결과가 생성됨을 확인
결론
Partial Convolution based Padding outperforms the widely adopted zero padding on Image classification and Semantic Segmentation in terms of accuracy and fast convergence.
https://github.com/NVIDIA/partialconv
https://big-dream-world.tistory.com/78