< 목차 >
- 용어정의
- 요약
- 연구배경
- 우수성
- 학습방법
- Partial Convolution
- Partial Convolution based Padding
- Case of Big Padding size
- 결과분석
- Running time
- Task 1: Image classification network
- Task 2: Semantic segmentation network
- 결론
- 출처
1. 용어정의
- 피드백 후 작성예정입니다.
2. 요약
2-1. 연구배경
콘볼루션 연산은 슬라이딩되는 연산필터의 크기가 이미지의 크기와 정확히 일치하지 않을 경우에 패 (Padding)을 필요로 하고, 이때 사용되는 패딩 기법은 아래와 같이 크게 3가지로 나뉜다.
- Zero padding : 가장자리 패딩영역을 0으로 채움
- Reflection padding : 가장자리 기준으로 input값을 패딩영역에 반전하여 복사하여 채움
- Replication padding : 가장자리 근처에 있는 input값을 그대로 복사하여 채움
이 중 계산의 단순함과 모델의 성능을 고려했을 때 zero padding이 가장 널리 쓰이는 패딩 기법이다.
하지만 이 3가지 패딩 기법은 모두 input 값에 관계없는 값을 채워 연산하는 형태로, 모델이 패딩되기 전 input값과 패딩된 값을 동일한 input 값으로 잘못구분하여 모델성능을 저하시킬 가능성이 존재한다.
따라서, 논문에서는 이러한 형태로 인해 발생하는 잠재적 저하요소를 제거하기 위해 Partial convolution based padding 이라는 새로운 패딩 기법을 소개하고있다.
2-2. 우수성
연구를 통해 증명된 Partial convolution based padding 의 우수성은 다음과 같이 정리할 수 있다.
- Zero padding 보다 우수한 학습결과(better accuracy)와 빠른 수렴성(faster convergence)
- 타 padding 기법 적용 및 혼용에 영향을 적게 받음(robust to other parameters)
- Semantic segmentation 적용할 경우, 가장자리 근처에서 zero padding 보다 우수한 성능 보장
3. 학습방법
3-1. Partial Convolution
Partial Convolution은 input 데이터 내 Holes과 같이 패딩되어야 할 영역을 수치적으로 가중하여 모델이 이를 고려할 수 있도록 설계되었다. 수식은 아래와 같고 Y = WX 에서 Y = W(X*M)r 로 확장된 형태이다.
Binary Mask인 M은 빈 영역(패딩되어야할 영역)에 대해 0, 실제 input 값이 존재하는 영역에 대해 1의 값을 가지며, 콘볼루션 연산을 수행하는 (i, j)의 중심좌표에 위치한 window 내에서 input X와 element-wise multiplication 을 수행한다.
이때, Re-weighting factor는 빈 영역에 대해 W(X*M)값의 rescaling을 수행하는데, 이때 r은 해당 window 크기에 all-ones matrix 와 binary mask의 taxicab metric(L1 norm)에 대한 비율로 나타낸다. (수식에서 Bias term은 생략되었다.)
앞서 기술된 콘볼루션 연산 이후, 0과 1의 이진값들로 구성된 Mask를 업데이트하는 과정으로, 위의 수식은 다음과 같이 해석될 수 있는데 만약 콘볼루션 연산에서 슬라이딩되는 윈도우에 포함되는 Mask 값에 1이 하나라도 존재한다면, 해당 윈도우에 포함하는 마스크값을 0에서 1로 변경한다.
즉, "콘볼루션 연산 → 마스크 업데이트" 의 과정을 충분히 stacked 된 콘볼루션 레이어에 forward pass된다면, 반복적 업데이트 과정을 거쳐 매 과정에서 적절한 Feature map을 획득하면서, 마스크에 존재하는 0 값을 모두 1로 서서히 채워나갈 수 있다는 로직이다.
3-2. Partial Convolution based Padding
위에서 설명된 아이디어는 지금까지 0으로 패딩하여 콘볼루션 연산을 수행했던 input값에 적용하여 효과적으로 패딩할 수 있다.
- X(p0) : input에 zero padding을 적용한 2D matrix를 시각적으로 표현한 것
- 1(p0) : input 크기와 동일한 all-ones matrix에 zero padding을 적용한 2D matrix를 시각적으로 표현한 것
- 1(p1) : 동일한 조건에 1을 패딩한 2D matrix를 시각적으로 표현한 것
빨간 박스와 초록 박스는 콘볼루션 연산에서 슬라이딩하는 3 x 3 픽셀크기 윈도우를 시각적으로 표현한 것이며, 상기 정의된 X(p0), 1(p0), 1(p1)에 따라, partial convolution을 padding 기법에 적용한 수식은 아래와 같다.
여기서 Binary Mask 혹은 Padding Mask를 뜻하는 1은 Input 크기와 동일하며 input과 mask는 패딩하고자 하는 영역에 0으로 채우고(zero padding 적용), element-wise multiplication을 수행한다. 이때, Re-weighting factor인 r 값은 1(p1)과 1(p0)의 L1 norm 비율로 W*(X*1) 값을 rescaling 하여 다음 레이어의 입력으로 x'값과 업데이트된 1(p0)을 전달한다.
즉, 위의 그림에서 빨간 윈도우박스를 예로 들자면, rescaling 값은 가장자리에서 9/4 로 가중되며, 업데이트된 1(p0) 값은 윈도우 안에 1이 4개가 존재하기 때문에 나머지 영역의 0이 모두 1로 변경된 채로 다음 레이어로 전달되게 된다.
3-3. Case of Big Padding Size
본 논문에서는 같은 방식으로 패딩 영역이 매우 큰 경우(콘볼루션 연산을 위한 window 크기가 패딩된 영역보다 작을 경우)에 대해서도 고려하였다. 이 경우에는 첫번째 레이어에서 기본적인 zero padding 기법을 따르며 이후부터 가장자리에서 업데이트된 Mask값을 다음 레이어로 전달하며 패딩된 영역을 점차 줄여나가는 방식을 제안하고 있다.
4. 결과분석
본 논문에서는 zero padding 대비 우수성을 입증하기 위해, (1) 연산시간, (2) Tasks별 (Image Classification, Semantic Segmentation)성능을 비교하였다.
4-1. Running time
input tensor X와 동일한 크기를 가지는 single-channel mask와 feature를 사용하였으며, 하나의 input에서 각 레이어당 패딩되는 r값은 변하지 않기 때문에 첫번째 iteration에서 r값은 한번만 계산되고 이후로 계속 연산에 포함된다. 따라서, 두번째 iteration부터는 첫번째 iteration보다 연산시간이 줄어들며, zero padding과 연산속도에서 차이가 크지 않다.
아래 표를 보면, vgg16 모델과 resnet50 모델에서 224 x 224 픽셀크기의 input 이미지를 놓고 NVIDIA V100 GPU(single)를 사용하여 추론했을 때, zero padding과 partial convolution based padding 의 첫번째와 두번째 이후부터의 iteration 속도를 비교한 내용인데 두번째 iteration부터 zero padding 했을 때의 연산시간과 큰 차이가 없음을 보여준다.
4-2. Task 1: Image classification network
Image Classification 에서는 VGG16, VGG19, ResNet50, ResNet101, ResNet152 다섯가지 모델을 partial convolution based padding 과 zero padding 조건에서 Imagenet 데이터셋으로 학습시켜 성능비교하였다. 이때, VGG16와 VGG19 모델은 learning rates 나 weights initialization에 대한 변수영향을 줄이기 위해서 Batch Normalization Layers을 사용하였으며, 모든 모델은 모든 초모수(hyper-parameters) 값을 동일하게 유지한채로 padding 기법만 변경하여 학습을 진행하였다. 모든 모델은 100 epochs 동안 학습하였고, 0.1로 지정한 initial learning rate는 30, 60, 90 epochs에 도달할 때마다 0.01, 0.001, 0.0001로 learning rate가 변경된다.
4-2-1. Better Accuracy
Padding 기법의 성능비교를 위해, 분산정도를 고려하여 모델을 동일한 환경에서 5번씩 학습하였고 마지막 5 epochs 에 대한 정확도의 평균을 계산하여 비교한 표는 아래와 같다. 요약하자면, 5번 학습한 정확도 평균치와 마지막 5 epochs 에서의 정확도 평균치가 partial convolution based padding 기법을 사용했을 때 가장 높다.
4-2-2. Faster Convergence
Partial convolution based padding 기법을 사용했을 때, zero padding 을 사용했을 때보다 더욱 빠른 속도로 모델이 수렴한다.아래 그래프는 ResNet50 으로 학습한 Accuracy 의 5번 평균을 나타낸 그래프이며, Partial convolution based padding에서는 63 epoch에서 74.9% 정확도에 도달한 반면, zero padding 경우에는 68 epoch에 동일한 정확도에 도달하였다.
4-2-3. Cross Testing
상기 소개된 zero, reflection, replication padding 기법은 모델의 학습과 예측에 동일한 padding 조건을 가지지 않으면 심각한 성능저하가 초래될 수 있다는 한계가 있다. 하지만 본 논문에서 소개된 partial convolution based padding 기법은 타 padding 기법과 혼용이 가능하다. (다만, zero padding으로 학습하고 inference를 partial convolution으로 할 경우에 심각한 모델성능 저하가 발생된다.)
따라서, 타 기법과 cross testing이 가능하다는 특징이 있다.
4-3. Task 2: Semantic Segmentation Network
Semantic Segmentation 에서 padding은 동일한 크기의 input-output dimension을 유지하기 위해서 필수적이다. 해당 Task에서는 segmentation에서 state-of-the-art networks인 DeepLabV3+ 기반의 네트워크를 사용하여 CityScapes dataset을 학습하였으며, Network의 encoder로 WideResNet38과 ResNet50을 이용하여 모델의 성능평가를 진행하였다.
각 네트워크 모델은 SGD(Stochastic Gradient Descent)알고리즘을 통해 31,000번의 iteration 동안 학습을 진행하였고, 이때 learning rate는 WideResNet38은 0.01, ResNet50 은 0.03, polynomial learning rate decay는 1.0, momentum 0.9 weight decay 0.0001의 하이퍼파라메터를 두었다.
모델의 성능평가 방법은 cityscapes dataset에 존재하는 19classes에 대한 mIOU(mean IOU)로 평가하였고, 입력이미지를 (1) regular : 비율과 상관없이 무조건 1024 x 2048 픽셀크기로 resize하여 한번에 입력, (2) tile : 이미지를 resize하지않고 1024 x 1024 픽셀크기로 그리드화하여 차례로 입력 하는 방식으로 출력에 대한 mIOU를 계산하였으며, 그 결과 역시 partial convolution based padding이 근소하게 좋게 나오는 것을 알 수 있다.
4-3-1. Focused Evaluation on Border Regions
또한, 가장자리 패딩된 영역에서 모델의 성능변화를 확인하기 위해 입력이미지의 중앙부분 일정 비율의 영역을 삭제한 뒤, Segmentation을 수행해본 결과 partial convolution based padding을 이용한 네트워크 모델이 zero padding 보다 더 우수한 정확도를 보였다.
5. 결론
논문에서는 말그대로 extensive 실험으로 partial convolution based padding이 기존에 널리 사용되던 zero padding보다 좋은 성능을 보여준다는 것을 증명하였다. 이 패딩 기법은 classification 과 segmentation 에 효과적으로 적용될 수 있으며, tensorflow, Pytorch, Keras 등 기존의 drop-in module에 내재된 Conv (**parameters)를 수정하여 PConv(**parameters)와 같이 동일한 방식으로 사용할 수 있다.
6. 출처
'인공지능 > 컴퓨터비전' 카테고리의 다른 글
Loss functions for Image Transformation (1) | 2021.04.20 |
---|---|
EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning (0) | 2021.04.19 |
Image Inpainting for Irregular Holes Using Partial Convolutions (0) | 2021.04.16 |
Deep Convolutional Generative Adversarial Nets(DCGANs) (0) | 2021.04.14 |
Generative Adversarial Nets(GAN) (0) | 2021.04.14 |