FCN 이란?
- 최초의 딥러닝 기반 segmentation 모델 이전에도 딥러닝을 사용한 segmentation 모델이 있긴 했지만, 현재 대부분의 segmentation 모델들이 FCN을 베이스로 하기 때문에 FCN을 최초의 딥러닝 기반 segmentation 모델이라 간주한다.
Convolutionalization
- 기존 Image Classification 모델들은 기본적으로 내부 구조와 관계없이 목적인 classificaiton을 수행하기 위해 출력층이 Fully-connected layer로 구성되어 있다.
- 하지만 Semantic segmentation에서는 이러한 FC layer가 한계점을 가진다.
- 이미지 위치 정보가 사라진다.
- 입력 이미지 크기가 고정된다.
- segmentation의 목적은 원본 이비지의 각 픽셀에 대해 클래스를 구분하고 인스턴스 및 배경을 분할하는 것이므로, 위치 정보가 매우 중요하다.
- 이러한 FC-layer의 한계를 보완하기 위해 본 논문에서는 모든 FC-layer를 Conv-layer로 대체하는 방법을 택하였다.
- Convolutionalization을 통해 Feature map이 원본 이미지의 위치 정보를 가질 수 있게 되었다. 하지만, segmentation의 최종 목적인 픽셀 단위 예측과 비교했을 때, Convoluionalization만을 활용한 FCN의 출력 Feature map은 너무 coarse 하다. ⇒ 따라서, 이러한 Feature map(Coarse map)을 원본 이미지에 가까운 Dense map으로 변환해줄 필요가 있다.
Deconvolution
- Coarse map에서 Dense map을 얻는 방법에는 몇가지가 있다.
- Interpolation
- Deconvolution
- Unpooling
- Shift and Stitch
- 물론 Pooling을 사용하지 않거나, Pooling stride를 줄여 Feature map의 크기가 작아지는 것을 처음부터 피할 수도 있지만, 이러한 경우 Receptive Field가 줄어들게 되어, 이미지의 컨텍스트를 놓치게 된다.
- 또한 파라미터 수의 증가로 학습시간이 너무 커지게 된다.
- Bilinear Interpolation
- 이미지를 upsampling 하기 위한 방법으로 Linear interpolation 방법을 2차원으로 확장시킨 방법이다.
- Backwards convolution
- Convolution 연산을 반대로 하는 방법으로 학습 가능한 파라미터들로 이루어진 커널을 input에 convolution 함으로써, output을 도출하는 방법이다.
- FCNs에서는 Bilinear interpolation과 Backwards convolution 두가지 방법을 사용하여 Coarse Feature map으로부터 Dense prediction을 구했다.
- 하지만 Interpolation을 통해 Dense map을 도출하더라도 근본적으로 Featuer map의 크기가 너무 작기 때문에 dense map의 정보도 여전히 coarse할 수 밖에 없다.
Skip Architecture
- 보다 정확한 Segmentation을 얻기 위해 Deep & Coarse layer의 semantic 정보와 Shallow & Fine layer의 appearance 정보를 결합한 Skip Architecture를 구성했다.
- 깊은 층에서는 복잡하고 포괄적인 개체 정보, 즉, global feature를 감지하는 반면에, 얕은 층에서는 local feature를 감지한다는 것을 이용해서 Dense map의 얕은 층의 정보를 결합하는 방식으로 Segmentation의 품질을 향상시켰다.