안녕하세요. 지난 포스팅의 [IS2D] Pyramid Scene Parsing Network (CVPR2017)에서는 Pyramid Pooling Module을 기반으로 Semantic Segmentation을 수행한 PSPNet에 대해서 소개하였습니다. 오늘은 Multi-Scale의 특성을 한껏 활용한 RefineNet에 대해서 소개하도록 하겠습니다.
Background
기본적으로 Semantic Segmentation은 픽셀별 classification을 수행해야하기 때문에 dense prediction problem 또는 object parsing이라고도 부릅니다. 대표적으로 VGG와 ResNet은 영상 분류 (Image Classification) 문제에서는 높은 성능을 달성하였지만 dense prediction problem에서는 한계가 존재했죠.
일단 딥 러닝 기반의 Semantic Segmentation을 수행하기 위해서는 feature extraction 단계를 거친 후 feature restoration을 통해 입력 영상과 동일한 크기로 복원하는 과정이 필요합니다. 이때 많은 논문들에서 Deconvolutional Filter를 사용하였지만 이 방법은 high-level feature부터 시작하기 때문에 입력 영상이 가지고 있던 low-level feature까지는 복원할 수 없습니다. 다른 방법으로는 DeepLab 계열의 모델에서 사용했던 Atrous Convolution 기반의 ASPP 모듈도 고려해볼 수 있지만 이는 연산량이 높기 때문에 사용하기 조금꺼려진다는 문제점이 있습니다.
이러한 문제를 해결하기 위해서 본 논문에서는 RefineNet을 제안합니다. 해당 모델은 multi-path refinement network로 구성되어 있으며 identity mapping 기반의 residual connection를 이용합니다. 핵심 모듈로 Chained Residual Pooling (CRP)를 제안하여 고해상도 영상으로부터 안정적으로 전체 문맥정보를 추출할 수 있다고 합니다. 또한, RefineNet은 7개의 다양한 Semantic Segmentation benchmark 데이터셋 (PASCAL VOC 2012, PASCAL-Context, NYUDv2, SUN-RGBD, CityScapes, ADE20K, Object Parsing Person-Parts dataset)에서 높은 성능을 달성하였습니다.
Method
그림 2에서 (a)는 ResNet, (b)는 Dilated Convolution을 적용했을 때 결과를 보여주고 있습니다. (c)와 같은 구조를 가진 RefineNet은 feature extractor를 이용해 얻은 특징 맵을 UNet과 같이 각 scale path에 넘겨주게 됩니다. 이 과정에서 각 path에 존재하는 RefineNet이 입력된 특징 맵의 context 정보를 더 강조해준 뒤 더 큰 해상도의 feature과 융합을 해줍니다. 이를 여러번 반복하여 저희가 원하는 prediction을 얻을 수 있죠.
한 개의 RefineNet은 그림 3과 같이 정의됩니다. 핵심 모듈은 Residual Conv Unit (RCU), Multi-Resoludion Fusion, 그리고 Chained Residual Pooling입니다.
RCU는 기존 ResNet에서 영감을 받은 블록입니다. 입력되는 다양한 스케일의 개수만큼 정의되어 residual 연산을 수행하죠. 이를 통해, 좀 더 안정적인 학습을 기대할 수 있을 것 입니다. 이때, Adaptive Conv에서는 각 스케일 경로별로 2개의 RCU로 정의되어 있다는 점에 유의하시길 바랍니다.
Multi-Resoludion Fusion은 역시 여러 개의 스케일 경로가 입력되면 일단 $3 \times 3$ 합성곱 연산과 업샘플링을 수행하여 동일한 개수의 채널과 해상도를 가질 수 있도록 만들어줍니다. 그리고 단순히 원소별 합으로 하나로 더해줍니다.
다음으로 Chained Residual Pooling은 고해상도 영상에서 receptive field를 증가시켜 넓은 영역에서 합성곱 연산을 수행하기 위한 새로운 풀링 연산입니다. 기본적으로 2개의 경로로 구성되어 있죠. 아래 경로는 RCU와 동일하게 identity path로 구성되어 다른 path의 연산의 결과와 더해주면서 refinement를 수행합니다. 위 경로는 $5 \times 5$ 풀링과 $3 \times 3$ 합성곱 연산을 수행한 뒤 identity path로 더해주거나 다시 한번 $5 \times 5$ 풀링과 $3 \times 3$ 합성곱 연산을 수행하죠. 이와 같이 여러번 반복하며 residual pooling을 수행하기 때문에 chained라는 말이 붙게 되었습니다.
Experiment Results