DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs (DeepLabv2)

DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs

DeepLabv2는 DeepLabv1과 굉장히 유사합니다. 그래서, v1을 아직 안읽으신 분은 https://eda-ai-lab.tistory.com/589의 글을 먼저 읽고 v2을 읽으시기 바랍니다. 해당 글에서는 기존 v1과 v2의 차별화 지점에 대해서만 주로 설명할 예정입니다.

DeepLabv1 vs DeepLabv2

DeepLabv1과 v2의 차별화 지점은 두가지가 있습니다.

  • ASPP (Atrous Spatial Pyramid Pooling)을 도입합니다.
  • ResNet101 백본을 도입합니다.

DeepLabv1의 경우에는 아래와 같은 네트워크 구조를 가졌습니다.

ASPP

하지만, 이렇게 할 경우에 Multi Scale의 Object를 잘 잡을 수 있을지에 대해서는 의문이 있습니다. Conv5까지 통과하고 나온 이미지는 원본에 1/8의 크기를 가집니다. 이때, FC6을 통과하는데 Dilated Rate12이면 고정된 크기의 Receptive Field를 가지는 한계가 있습니다.

그림1

논문에서는 그래서, ASPP 라는 방법을 제안해서 Dilated Rate를 다르게해서 DeepLabv1 Large Fov에 붙이는 방법을 적용합니다. 이렇게 하면, 기존의 6인 부분에서 작은 Object를 캐치하고, 24인 부분에서 상대적으로 더 큰 Object를 캐치하는 식이 됩니다.

ResNet101

두번째의 차이점은 백본 네트워크로 ResNet101을 사용한 점입니다.

image-20210923105501773

논문에 따르면, ResNet-101과 VGG-16을 비교했을때 성능이 4.31이 증가했다고 나왔습니다. ASPP까지 비교해보면 성능의 상승폭은 훨씬 큽니다. 사실상 앞단의 이미지 특징 추출을 기존의 Image Classification 네트워크의 백본을 가져와서 사용하기에, 이러한 현상은 당연합니다. 2021년 기준이면 ResNet보다 더 좋은 Xception, ResNext, Se-resnext, efficient 등 더 좋은 백본이 생겼으니 이를 가져와서 더 좋은 특징을 추출하면 Segmentation 성능도 높아집니다.


하지만, DeepLabv1에서도 언급했듯이 Image Classification 네트워크를 가져와서 바로 적용하는 것은 Segmentation과는 맞지 않습니다. 너무 많은 Maxpool은 디테일한 경계를 없애고 정보의 손실을 가져오기 때문입니다.

image-20210923105828581

논문에서는 이를 방지하기 위해서 ResNet101에서 2가지의 차이를 적용합니다.

  • Conv4, Conv5 Block의 Downsampling을 수행하지 않습니다. (기존에는 Strided Convolution을 통해서 Downsampling을 수행하지만 이를 제거합니다.)
  • Conv4, Conv5 Block의 3x3 Conv을 3x3 Dilated Conv으로 대체합니다.

두가지의 차이점을 통해서 입력 이미지를 1/32배만큼 줄이는 것을 1/8로 수정하고, Dilated Conv을 통해서 더 큰 Receptive Field를 가지도록 만들어줍니다. 결과적으로 ASPP까지 적용시에 아래와 같은 모습이 됩니다.

image-20210923112906731


결과적으로 이를 통해서 PASCAL VOC 2012에서 79.7% mIOU를 달성하여 SOTA 알고리즘이 되었고, PASCAL-Context, PASCAL-Person-Part, and Cityscapes에서도 좋은 결과를 달성했습니다.

Results

image-20210923110310581

Conclusion

개인적으로 논문을 읽으면서 아쉬운 점은 성능향상이 ASPP가 아닌 ResNet 에 있지 않았나 생각합니다. ASPP로 변경시에 성능 향상은 mIoU 1에서 2 인 반면에, ResNet 변경은 다른 데이터셋에 대해서 2에서 4 이상이었습니다. 또한, 기존의 DeepLabv1 논문과 내용적인 부분은 전부 같은 반면에 차이점은 ASPP와 ResNet 부분밖에 없는 것도 아쉬운 점이었습니다. 하지만, 실험적인 측면에서는 되게 좋았는데 기존에 DeepLabv1에서는 없었던 Dilated Rate 크기에 따라서 성능이 어떻게 나오는지 ASPP-Small, Large 버전으로 실험하고 Ablation Study를 통해서 각 기법의 실험을 비교한 부분이 좋았습니다. 개인적으로는 좀 더 디테일하게 작은 Object와 큰 Object인 경우에 대해서 많이 좋아질 것 같은데, 이러한 부분이 어떻게 달라졌는지 결과로 보여주면 좋았을 것 같습니다.

댓글(0)

Designed by JB FACTORY