성장通

[Paper Review] Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs (Chen & Papandreou et al., 2015) 본문

리뷰/논문 리뷰

[Paper Review] Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs (Chen & Papandreou et al., 2015)

백악기작은펭귄 2022. 7. 21. 17:57

Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs

Liang-Chieh Chen, George Papandreou, Iasonas Kokkinos, Kevin Murphy, Alan L. Yuille; Published as a conference paper at ICLR 2015

 

* 위 논문에서 처음 제안된 구조인 DeepLab은 몇 번의 수정을 거치며 발전하였고, 이에 따라 v1부터 v3+까지 버전이 나뉘어있다. 이하 리뷰는 v1을 기준으로 한다.


Abstract

Deep Convolution Neural Networks(이하 DCNNs)는 Image Classification, Object Detection 등 다양한 이미지 처리 분야에서 널리 사용된다. 하지만 Semantic Segmentation에 있어서는 다소 부족함을 보이는데, 이는 DCNNs의 마지막 층의 출력 결과가 정확한 object segmentation을 위한 충분한 localization을 제공하지 못하기 때문이다. 입력 위치가 달라져도 동일한 출력을 보장하는 DCNNs의 invariance property는 image classification이나 object detection 등 high-level task에서는 손쉽게 높은 성능을 낼 수 있는 장점이 되지만, 픽셀 단위의 정확한 예측(dense prediction)을 수행해야 하는 Semantic Segmentation에서는 되려 단점으로 작용한다.

 

따라서 저자들은 이러한 poor localization property 문제를 해결하기 위해 DCNN 층의 출력에 fully-connected Conditional Random Field(이하 CRF)를 결합한 구조를 제안하였다.

 

해당 논문에서 제안한 DeepLab 시스템은 일반적인 Convolution 대신 Atrous Convolution을 사용하여 Receptive Field를 확장 시켰고, 출력된 Coarse Score map에 Bilinear interpolation을 이용해 resolution을 증가시켰다. 이 결과에 CRF를 추가로 적용함으로써 Localize Segementation을 가능하게 한 것이 이 논문의 핵심이라고 할 수 있다.

 

DeepLab은 PASCAL VOC-2012 데이터셋에 대하여 IoU 71.6%를 달성했으며, Atrous 알고리즘을 활용하여 Receptive Field 크기 대비 계산 코스트 효율 또한 크게 향상 시켰다는 점에서 의의가 있다.

 

Network Design

DeepLab에서는 입력 이미지가 Atrous 알고리즘을 사용한 DCNNs를 통과한다. 이후 출력된 결과는 Bilinear interpolation에 의해 resolution이 8배 증가하고, 이렇게 증강된 resolution을 가지는 score map이 CRF를 거치게 된다.

 

 

위 구조 내 요소 각각을 좀 더 살펴보도록 하자.

 

1. Atrous Convolution

'Atrous'는 프랑스어 'à trous'에서 파생된 말로, '구멍(hole)'이라는 뜻을 가지고 있다. 이에 따라 atrous 알고리즘은 hole 알고리즘이라고도 불린다. 이는 주로 wavelet transform 분야에서 많이 사용되며, 여기서는 DCNNs에서의 Convolution에 활용된다.

 

아래와 같은 Convolution 수식이 있을 때, r이 1보다 큰 경우를 Atrous Convolution이라고 한다.

 

$$
y [i] = \Sigma^K_{k=1} x [i+r*k] w [k]
$$

 

Atrous Convolution은 합성곱 영역 사이에 stride를 두는 방식으로, 다음과 같이 진행된다. 이때 모습이 마치 구멍이 나 있는 것처럼 보여 atrous(hole)라는 이름이 붙었다.

 

 

이와 같은 커널 사이 간격이 1인 경우(겹침 없이 붙어있는 경우)를 일반적인 Convolution이라고 하며, 이것이 1보다 커져 중간에 (0으로 채워진) 빈 공간이 생기는 경우를 Atrous Convolution이라고 한다. (논문에 따라, Dilated Convolution이라고 하기도 한다.)

 

이처럼 커널 사이 간격을 둘 경우, 일반적인 Convolution과 동일한 computational cost로 더 큰 receptive field를 가질 수 있다. 위 GIF에서 실제 Convolution이 계산되는 것은 3 X 3, 즉 9개 픽셀이지만 만들어지는 receptive field는 5 X 5가 되는 것이다.

 

일반적인 이미지 처리 task(대표적으로 Classification)의 경우, detail 한 정보보다는 global 한 정보에 집중을 하는 것이 더 좋은 성능을 낼 수 있다. 반면 Semantic Segmentation의 경우 픽셀 단위의 dense prediction이 필수적이므로 detail 한 정보를 사용해야 할 필요성이 있다. 다만, 일반적인 Convolution 방법에서는 합성곱 층과 풀링 층을 거치면서 feature map의 크기가 계속 줄어들기 때문에 detail 한 정보를 얻기 어려워진다. 즉, accurate localization과 context assimilation 사이 trade-off가 있게 된다.

 

따라서 해당 논문의 저자들은 FCN에서 풀링 층을 없애고 Astrous Convolution을 이용하여 receptive field를 확장시키는 효과를 얻었다. 아래 그림은 kernel size가 3, input stride가 2, 그리고 output stride가 1일 때의 1-D hole 알고리즘을 나타낸 그림이다.

 

 

이로써 출력 결과가 기존보다 훨씬 크게 나올 수 있게 되었고, Bilinear interpolation을 이용해 8배만 Upsampling 해주면 원본 이미지와 동일한 크기를 얻을 수 있었기에 더 나은 performance를 낼 수 있게 되었다.

 

2. Fully-connected CRF

Bilinear interpolation에 의해 resolution 증가까지 이루어진 출력에 fully-connected CRF를 적용한다.

 

$$
E(x) = \Sigma_i \theta_i(x_i) + \Sigma_{ij} \theta_{ij} (x_i, x_j)
$$
$$
\theta_i(x_i) = -logP(x_i)
$$
$$
\theta_{ij}(x_i, x_j) = \mu(x_i, x_j)[w_1 exp(-{{||p_i - p_j||}^2\over {2\sigma^2_\alpha}}-{{||I_i - I_j||}^2\over {2\sigma^2_\alpha}}) + w_2 exp(-{{||p_i - p_j||}^2\over {2\sigma^2_\gamma}})]
$$

 

위 수식에서 $x$는 픽셀에 대한 label assignment이다. $P(x_i)$는 픽셀 $i$에 대한 label assignment probability이며 $\theta_i(x_i)$는 픽셀 i의 log probability이다.

 

$\theta_{ij}$는 필터로, $x_i = x_j$일 때 $\mu=0$, $x_i \neq x_j$일 때 $\mu=1$이다. 대괄호 안의 내용은 두 커널의 weighted sum이다. 첫 번째 커널은 픽셀 값 차이와 픽셀 위치 차이에 근거하는데, 이러한 방식을 Bilateral filter라고 한다. Bilateral filter는 edge를 보존하는 특성을 가진다. 두 번째 커널은 픽셀 위치 차이에만 의존한다. 이를 Gaussian filter라고 한다.

 

위 식에서 $\sigma$와 $w$는 cross validation에 의해 찾아진다.

 

 

CRF를 10회 반복한 결과, 물체 근처 작은 디테일을 잘 잡아내는 것을 확인할 수 있다.

 

Results

논문의 저자들은 PASCAL VOC 2012 데이터셋을 활용해 DeepLab을 검증했다. 해당 데이터셋은 앞서 리뷰한 논문들에서도 사용한 유명 벤치마크 데이터셋으로, 20종의 foreground object class와 1개의 background class를 가진다. 기존 데이터셋에 대하여 augmentation을 수행해 데이터 개수를 두 배 이상 늘린 후 사용하였으며, 평가 지표로는 IoU를 사용하였다.

 

ImageNet에 대하여 pre-train 된 VGG-16을 backbone으로 사용하여 DCNN을 학습시켰고, 이를 PASCAL VOC 2012 데이터셋으로 fine-tuning 하여 pixel-classification task를 수행할 수 있도록 하였다.

 

기본 DeepLab 구조에 몇 가지 추가적인 방법을 적용하여 성능을 측정하였는데, 각 방법에 대한 설명은 다음과 같다. 

 

  1. MSc: Multi-scale input
  2. COCO: COCO 데이터셋으로 pre-train
  3. Aug: 입력 이미지를 0.5~1.5 사이 랜덤 값으로 스케일링하여 augmentation
  4. LargeFOV: sinlge-pass atrous convolution 사용
  5. CRF: post-processing으로 fully-connected CRF 적용

 

다음 결과는 VOC 데이터셋의 validation set에 대해 수행된 결과이다.

 

이 중 CRF를 사용한 모델 구조를 다른 SOTA 방법론과 비교하여 본 결과는 다음과 같다. 이 결과는 VOC의 test set에 대해 수행되었다.

 

 

다음은 FCN-8s와 DeepLab-CRF를 비교한 결과이다. 위에서부터 순서대로 입력 이미지, Ground-truth, FCN-8s, DeepLab-CRF이다.

 

 

Conclusion & Opinion

해당 논문은 DCNNs에 fully-connected CRF를 결합하여 새로운 메서드를 제안했다는 점에서 의의가 있다. 후속 논문에서는 multi-scale에 더 강건하도록 atrous conv를 위한 확장 계수를 여러 개 설정하여 적용하고, 각 결과를 취합(concat)하는 Atrous Spatial Pyramid Pooling(ASPP) 메서드를 추가하여 DeepLabv2를 제안했다.

 

DeepLab의 의의는 Receptive Filed를 늘리기 위해 Atrous Convolution이라는 새로운 방식을 제안했음에 있다. 이로써 기존 풀링 층 연산에 의한 위치 정보 소실을 최소화할 수 있었고, short-range CRF 대신 fully-connected CRF를 사용함으로써 detail 정보를 온전히 보전할 수 있었다.

 

다음 논문으로는 Receptive Field를 키우기 위해 DeepLab과는 다른 아이디어를 적용한 Dilated Convolution에 대해 리뷰해보도록 하겠다.


Reference

[1] Chen & Papandreou et al., Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs, 2015, ICLR
https://arxiv.org/abs/1412.7062

 

[2] 'CNN의 stationarity와 locality', Seongkyun Han
https://seongkyun.github.io/study/2019/10/27/cnn_stationarity

 

[3] 'An Introduction to different Types of Convolutions in Deep Learning', Paul-Louis Pröve
https://towardsdatascience.com/types-of-convolutions-in-deep-learning-717013397f4d

 

[4] '[연구노트] Semantic Segmentation 살펴보기', 연구하는 포송
https://ambitious-posong.tistory.com/101