논문

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

Rethinking Atrous Convolution for Semantic Image Segmentation

Problem

Semantic segmentation에서 DCNNs을 사용할 때에 맞닥뜨리는 두가지 문제가 있다.

첫번째는 계속적인 pooling operation에 의한 feature resolution의 저하 문제이다. 이는 점점 추상화된 feature representation을 얻을 수 있게 하지만 오히려 지역적인 디테일한 정보를 얻는 것을 방해한다.

두번째 문제는 여러 크기의 객체가 존재한다는 점이다.

Essence

첫번째 문제를 해결하기 위해 atrous convolution을 이용하였다. Dilated convolution으로도 알려진 이것을 이용하면 이를 이용하면 별도의 파라미터 추가 없이 feature response의 해상도를 조절할 수 있다.

두번째 문제를 해결하기 위한 방법으로 크게 4가지 종류로 분류하였다. (1) 각 스케일 입력에 대하여 별도의 feature map을 생성하는 image pyramid 방법, (2) encoder-decoder 구조를 이용하여 encoder에서 추출된 여러 스케일의 정보를 decoder에서 다시 복원하는 방법, (3) 네트워크의 추가로 모듈들을 추가하여 long range information을 이용할 수 있도록 하는 것, (4) 여러 스케일의 필터 혹은 pooling operation으로 생성된 feature map을 이용하는 spatial pyramid pooling 방법이 그것이다.

논문에서는 여러 rate를 가지는 atrous convolution를 이용한 (3)의 방법과 을 이용하여 (3)의 방법과 batch normalization layer를 추가한 Atrous Spatial Pyramid Pooling (ASPP) 모듈을 이용한 (4)의 방법을 제안하고, 이를 이용한 Deeplabv3 모델을 제안하였다.

Detail

Atrous Convolution for Dense Feature Extraction

Atrous convolution은 저자의 기존 연구 [10, 11]의 그것과 동일한 것으로, 기존 convolution filter의 weight들 사이에 0을 넣어 크기를 늘린 것이다. 여기서 rater은 얼마나 많은 0을 넣는지를 의미한다.

이를 이용하면 최종 계산된 feature response의 해상도를 조절할 수 있는데, 입력 이미지 대비 feature response의 비율을 output stride라고 지칭하기로 하였다.

Going Deeper with Atrous Convolution

Atrous convolution을 cascade하게 이용할 수 있게 하기위해 모듈을 만들기로 하였다. 기존의 ResNet의 마지막 block을 복제하여 기존 네트워크에 추가로 붙였다. ResNet block 내에는 stride 2가 적용되어있기 때문에 점점 feature map의 크기가 작아져 output stride가 256이 되어버린다. 이는 detail information을 줄여 semantic segmentation에서는 좋지 않은 결과를 가져온다. 따라서 추가로 붙인 모듈에 atrous convolution을 이용하여 output stride를 16으로 줄일 수 있었다.

Multi-grid Method

block4에서 block7의 내에 있는 3개의 convolution layer에 대한 rate를MultiGrid=(r_1, r_2, r_3)로 지정하도록 하였다. 예를 들어MultiGrid=(1,2,4)인 경우 block4의 rate는2 \cdot (1, 2, 4) = (2, 4,8)이 된다.

Atrous Spatial Pyramid Pooling

ASPP는 기존 연구 [11]에서 제안된 것으로 여러 rate의 atrous convolution을 병렬로 적용하여 이를 통합하는 방법이다. 이는 각기 다른 스케일에서 효과적으로 feature를 샘플링하여 성능을 높일 수 있다. [11] 에서와는 달리 batch normalization을 추가하였다.

ASPP의 sampling rate가 커지면 실제 padding 영역에서 적용되는 filter weight들이 많아지므로 성능이 떨어지게 된다. 실험적으로 보면 극단적으로 rate를 크게 하면 결국 중앙을 제외한 모든 부분이 padding에 해당되어 1x1 convolution과 다를바 없게 된다.

이를 해결하기 위해 global context를 모델에 추가하도록 하였다. 먼저 global average pooling을 적용하고 1x1의 256개 필터와 batch normalization 을 통과시킨다. 그 다음 bilinear interpolation을 통해 원하는 크기로 upsampling 한다.

제안하는 ASPP 모듈은 1개의 1x1 convolution과 rate = (6, 12, 18)의 3x3 convolution들, 그리고 앞서 설명한 image-level feature로 구성된다. 모든 convolution은 256개의 필터를 가진다. 모든 브랜치에서 나온 feature들은 concatenate 되어 다시 1x1 convolution과 batch normalization을 통과한 뒤, 마지막으로 1x1 convolution을 적용하여 logit을 생성하게 된다.


Add a Comment Trackback