논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

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

Problem

DCNN을 이용한 Semantic image segmentation에서 3가지 문제를 해결하고자 하였다.

  1. 입력 이미지 대비 줄어든 feature map 해상도
  2. 여러 크기의 객체
  3. DCNN의 invariance에 의한 localization accuracy 저하

Essence

첫번째 문제는 max-pooling이나 striding에 의한 downsampling에 의한 것인데, 이는 사실 image classification 에서 디자인된 것이다. 논문에서는 dense feature map을 생성하기 위해 뒤쪽의 몇개 max-pooling 레이어의 downsampling을 제거하고 upsampling filter를 적용하였다. 이 필터는 사이사에 hole를 집어넣은 형태로 atrous convolution이라 부른다. 이렇게 생성된 feature map은 더 dense한 해상도를 가지며 이를 bilinear interpolation을 하여 원래 이미지 크기의 해상도를 생성할 수 있었다. Atrous convolution는 파라미터의 수나 계산량을 늘리지 않으면서도 field of view를 넓게 하는 효과가 있다.

두번째 문제는 보통 여러 스케일의 feature map을 모두 생성하여 사용하는 방법을 사용하나 계산량이 많아지는 단점이 있다. 논문에서는 주어진 feature layer에서 convolution을 할 때 여러 sampling rate로 resampling하여 convolution을 하는 방법을 제안하였다. 효과적인 계산을 위해 실제로 resampling을 하는 것이 아니라 atrous convolutional layer를 여러 sampling rate에 대해 계산하도록 하였다. 이를 atrous spatial pyramid pooling (ASPP) 라고 하였다.

세번째 문제는 fully connected Conditional Random Field (CRF)를 적용하였다. 이 fully connected CRF [22]에 의해 효과적으로 계산될 수 있으며, 세세한 edge detail을 검출할 능력이 있다.

아래 그림은 DeepLab 모델을 나타낸 것이다.

네트워크는 VGG-16과 ResNet-101을 사용하였으며, image classification 용도로 되었던 것을 수정하여 (1) fully connected layer를 모두 fully convolutional layer로 변경하고 (2) atrous convolutional layer를 이용하여 feature resolution 을 증가시킨 뒤, bilinear interpolation을 적용하였다. 그 뒤 fully connected RF를 적용하였다.

Detail

Atrous Convolution for Dense Feature Extraction and Field-of-View Enlargment

Atrous convolution을 설명하기 위해 1차원으로 표현하면 다음과 같다.

y[i] = \sum_{k=1}^{K} x[i+r \cdot k]w[k]

여기서 x[i]는 입력 신호이고 w[k]는 필터이다. r은 rate로 입력 신호를 샘플링할 stride와 관련이 있다.

이를 2차원으로 확장시켜보자.

만약 단순히 stride 2로 downsampling 을 적용한 뒤 어떤 필터를 적용한다면 원래 이미지의 1/4 만큼의 위치에 대한 response를 얻을 수 밖에 없을 것이다. 하지만 downsampling 없이 모든 이미지 위치에 대해 factor of 2를 적용한 atrous convolution을 적용하면 필터 파라미터의 수와 계산량을 늘리지 않은 채로 모든 이미지 위치에 대해서 response를 계산할 수 있다. DCNN의 특성상 convolution layer의 연속으로 이루어져 있기 때문에 적절히 atrous convolution을 적용하면 마지막으로 계산된 feature map 또한 원하는 해상도를 만들어낼 수 있다.

VGG-16이나 ResNet-101의 모든 down sampling 레이어 r=2의 atrous convolutional layer를 적용하면 원래 해상도 크기의 feature를 얻을 수 있으나 너무 계산량이 많아지기 때문에 atrous convolution으로 factor of 4의 density를 갖도록 feature map을 생성하도록 하고 남은 factor of 8은 bilinear interpolation을 적용하여 원래 해상도를 만들도록 하였다.

Atrous convolution은 또한 field-of-view를 확장시키는 효과가 있다. k \times k의 보통 convolution을 rate r을 가지는 atrous convolution으로 변환하면 필터 크기는 k_e = k + (k-1)(r-1)가 된다. 따라서 rate를 조절하면서 최적의 accurate localization을 갖는 크기를 찾을 수 있으며, 이를 적용하여 찾은 모델인 DeepLab-LargeFOV은 VGG-16의 fc6 레이어를 r = 12를 갖는 atrous convolution으로 교체한 모델이다.

실제 atrous convolution을 구현하는 방법은 2가지 방법이 있는, 첫번째는 실제로 필터 내에 0을 넣거나 feature map에서 샘플링하여 곱하는 방버이 있다. 다른 한가지는 feature map을 rate에 따라 deinterlacing한 뒤 일반적인 convolution 계산을 적용하고 다시 원래 이미지로 reinterlacing하는 방법이다.

Multiscale Image Representations using Atrous Sptial Pyramid Pooling

같은 객체인데도 여러 크기를 갖는 경우에 대해 대처하기 위해 여러 sampling rate를 갖는 atrous convolutional layer를 계산한 뒤 하나로 합치는 방법을 사용하였다.

Structured Prediction with Fully-Connected Conditional Random Fields for Accurate Boundary Recovery

자신들의 이전 연구인 [38]의 방법을 그대로 사용하였다.


Add a Comment Trackback