Introduction

Semantic segmentation 에서 중요한 것은 모델의 output 인 segmentation mask 가 얼마나 clean 한 object boundary 를 추출해내는가입니다. noisy object boundary 는 semantic segmentation 의 성능 검증을 방해하는 요소 중 하나입니다. 따라서 이것을 해결하기 위해 여러 시도들이 있었습니다.

Figure 1. Noisy segmentation mask

Figure 1. Noisy segmentation mask

첫째는 [1] atrous convolution 을 사용하는 것입니다. Atrous convolution 은 vanila convolution 에서 복잡도를 증가하지 않고 receptive fields 를 늘리기 위해 고안된 방법입니다.

Figure 2. Atrous convolution

Figure 2. Atrous convolution

도표와 같이 atrous convolution 은 pixel 사이에 stride 를 두어 연산의 적용범위를 넓힙니다. 이렇게 연산하면 같은 수의 레이어에서도 넓은 receptive fields 를 달성할 수 있고, 레이어를 깊게 쌓으면 생기는 co-adaptation 문제 또한 일정부분 해결할 수 있습니다. 하지만 단순히 atrous convolution 을 semantic segmentation 에 적용하면 문제가 발생합니다.

Figure 3. Deeper atrous convolution

Figure 3. Deeper atrous convolution

Atrous convolution 은 입력 features 의 사이즈를 그대로 유지합니다. 따라서 기존의 네트워크 구조를 유지하면서 output stride 를 8 배, 혹은 16 배로 증가하는데는 한계가 있습니다. 예시로 ResNet-101 모델의 경우, output stride 를 8 배로 설정시 26 개의 residual blocks 를 모두 atrous convolution 으로 바꾸어야 합니다. 이는 연산 속도의 감소를 초래합니다. 그러므로 연산은 줄이면서 동일한 효과를 가져오기 위해 atrous convolution 위에 spatial pyramid pooling 을 더해 multi-scale contexts 를 추출하는 접근을 채택합니다.

둘째로 encoder-decoder 구조입니다. Encoder-decoder 구조는 decoding path 에서 sharp object boundary 를 recover 해냅니다. [2] Dense CRF 와 같이 segmentation mask 의 후처리를 통해 성능을 높이는 접근도 있지만, 이는 encoder 에서 학습된 정보를 활용하지 못하고 학습에 sampling 절차가 포함되므로 실시간 서비스에 사용하기는 부적절한 방법입니다.

따라서 두 접근 모두의 장점을 통합하기 위해 논문에서는 Encoder-Decoder with Atrous Convolution 구조를 제안합니다.

Figure 3. Encoder-Decoder with Atrous Convolution

Figure 3. Encoder-Decoder with Atrous Convolution

Methods

Figure 4. Proposed DeepLab V3+ architecture

Figure 4. Proposed DeepLab V3+ architecture

DeepLab V3+ 는 encoder 로 DeepLab V3 를 사용합니다.

Experiments