본문 바로가기
Paper Review/Image Segmentation

[논문 리뷰] DeepLabV3+: Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation (2018)

by Hwanin99 2024. 8. 27.

Paper: https://arxiv.org/pdf/1802.02611v3


  • Spatial Pyramid Pooling(SPP)와 Encoder-Decoder 구조는 semantic segmentation  분야에서 사용된다.
    • SPP는 multi-scale contextual 정보를 인코딩할 수 있게 하고, Encoder-Decoder 구조는 object의 경계를 더 디테일하게 포착할 수 있게 한다.
  • 본 논문에서는 위 두 방법의 결합을 제안하며, DeepLabV3에 간단하지만 효과적인 decoder를 추가한 DeepLabV3+ 모델을 소개한다. 
    • 또한, Xception 모델의 Depthwise Separable Convolution을 ASPP와 Decoder에 적용하였다.


ASPP

 

  • DeepLabV3+ 모델에서 사용한 SPP는 ASPP이다.
  • ASPP의 경우 여러 비율과 효과적인 Field-of-Views(FoV)에서 filter 혹은 pooling 연산을 수행하여 다양한 크기의 contextual information을 인코딩할 수 있다.

ASPP module

 

  • 일반적인 Conv는 stride와 kernel size를 통해 해상도를 조절할 수 있다.
    • 그러나, stride를 너무 크게 가져가면 디테일이 떨어지고, kernel size를 너무 크게 가져가면 그만큼 학습 파라미터가 많아져 계산 비용이 늘어난다.
  • Atrous Conv는 dilation rate를 통해 해상도를 조절할 수 있다.
    • 이때, 학습 파라미터의 증가 없이 FoV를 조절할 수 있으며, multi-scale information을 포착하는데 도움이 된다. 
  • ASPP는 위 그림과 같이 여러 dilation rate의 atrous conv를 병렬적으로 처리한다.
    • 그렇기에, Input feature map에 대해서 동시에 다양한 스케일로 처리함으로써 보다 다양한 스케일을 가진 객체들에 대비하는 것이 가능해진다.

Encoder-Decoder

  • Encoder-Decoder 구조의 경우 점진적으로 spatial information을 복구하여 object의 경계를 더욱 선명하게 포착할 수 있다. 이는, DeepLabV1~V3에서 feature map을 단순히 bilinear upsampling을 적용한 것과는 차이가 존재한다.
    • 또한, encoder에 Xception 모델을 backbone으로 사용하였으며, Depthwise Separable Convolution을 ASPP와 Decoder에 적용하여 더욱 빠르고 강한 모델을 구축할 수 있었다. 

Encoder

Encoder of DeepLabV3

 

  • 위 그림은 DeepLabV3의 encoder 구조이다.
  • Atrous Conv를 이용해 임의로 조절한 해상도의 feature map을 추출한다.
    • 본 논문에서는 해상도의 조절 비율을 output stride라고 한다.

$$ \text{output stride} = \frac{\text{input image spatial resolution}}{\text{final output resolution}} $$

  • $\text{final output}$은 global pooling 또는 FC layer 이전의 output이다.

 

  • Image Classification의 경우 일반적으로 final feature map의 해상도는 input image 해상도에 비해 32배 정도 작다.
    • 이 경우, output stride는 32이다.
  • Semantic Segmentation의 경우에는 더욱 dense한 feature 추출을 위해 output stride를 16 혹은 8로 한다고 한다.
    • Dense한 feature란 해상도에 비해 의미론적인 정보가 많이 포함된 feature map을 뜻한다.
    • 즉, global contextual information을 고려하기 위해 pooling이나 stride를 통해 해상도를 축소하여 의미론적인 정보를 인코딩하지만, 해상도가 너무 작아지면 디테일한 정보들이 누락된다. 그렇기에 해상도는 크게 가져가되, global contextual information을 가져가기 위해 만들어진 feature map을 뜻한다.

 

  • 본 논문의 Encoder-Decoder 구조에서 DeepLabV3의 마지막 feature map을 Encoder의 output으로 사용한다.
    • 즉, 위 그림의 (a)와 (b)를 concat하고 1x1 Conv를 적용한 feature가 Encoder의 output이다.
    • Encoder의 output의 채널은 256개이며, 풍부한 semantic information을 가진다고 한다.

Decoder

DeepLabV3+ Architecture

 

  • DeepLabV3의 encoder feature들은 output stride가 16이다.
  • DeepLabV3에서는 Segmentation을 수행하기 위해 단순히 16배만큼 다시 bilinear upsampling을 진행한다.
    • 그러나, 한 번에 바로 upsampling을 하는 naive decoder는 object segmentation detail들을 복원하지 못한다.

w/BU) 한 번에 bilinear upsampling, w/Decoder) Proposed Decoder

 

  • 그렇기에, 본 논문의 저자들은 위 그림과 같은 decoder 구조를 제안한다. 과정은 다음과 같다.
    • Encoder feature를 4배만큼 bilinear upsampling을 한다.
    • Backbone 모델 중간에서 나온 feature map(= Low-Level Feature)들을 1x1 Conv를 적용하여 channel을 줄인다.
      • Concat이 가능하기 위해 channel 수를 맞춰주는 것이다.
    • 이 둘을 concat한 다음 3x3 Conv layer를 거친 후 마지막 1x1 Conv를 거쳐 나온 output을 원래 input size로 4배만큼 bilinear upsampling한다.

Depthwise Separable Convolution

Depthwise Separable Convolution

 

  • Depthwise Separable Convolution은 Depthwise Conv와 Pointwise Conv 연산이 연속적으로 이뤄진다.
  • 기존의 Conv 연산은 채널에 대해 한 번에 연산이 진행되는 반면에, Depthwise Separable Convolution은 Depthwise Conv 연산으로 각 채널에 대해 독립적으로 연산을 수행하고 이를 Pointwise Conv로 채널 수를 조정해준다.
    • 이렇게 연산을 할 경우에 채널에 대해 한 번에 연산을 진행하는 것보다 연산량이 줄어들게 된다는 장점이 있다.

 

  • DeepLabV3+ 모델에서는 Atrous depthwise conv와 Pointwise conv를 결합한 Atrous Separable Convolution을 사용하였으며, 이를 ASPP와 Decoder에 적용하였다.
    • 이때, 성능은 비슷하게 유지하면서 계산 비용은 줄여주었다.

Modified Aligned Xception

  • DeepLabV3+ 모델은 backbone으로 Xception 모델을 사용한다.
    • 이때, 그대로 사용하지는 않고 segmentation task에 더 적합하도록 변형을 하여 사용한다.

 

  • Entry flow에서는 빠른 연산과 메모리 효율을 위해 수정을 하지 않았다.
  • Middle flow에서 8번 반복에서 16번 반복으로 층을 더 깊게 쌓았다.

 

  • 모든 Max pooling operation들을 depthwise separable convolution으로 대체하였다.
  • 임의의 해상도를 가진 feature map을 atrous separable convolution으로 추출할 수 있기에 대체할 수 있었다.
    • 정보의 손실을 줄이기 위해 대체한 것으로 보인다.

왼쪽 그림: Standard Conv, 오른쪽 그림: Depthwise Separable Conv

 

  • MobileNet과 동일하게 Depthwise Conv와 Pointwise Conv 사이에 batch normalization과 ReLU를 추가하였다.

Conclusion

 

  • Backbone으로 깊은 모델을 사용할수록 성능이 향상된다.
  • Cityscapes dataset의 경우 Low-Level image feature를 사용하지 않을 때 성능이 더 향상된다.
  • 표 (b)에서 알 수 있듯이 DeepLabV3+의 성능이 가장 좋다.