논문

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

Design of Real-time Semantic Segmentation Decoder for Automated Driving

Intro

  • 여기서 제안하는 non-bottleneck 레이어는 residual learning을 기반으로 한다.
  • Cascaded skip connection을 이용하여 non-bottleneck 레이어가 high gradient flow를 다룰 수 있게 하면서도 임베디드 플랫폼에서 실시간으로 실행할 수 있게 한다.

Encoder

  • 특별한 태스크에 의존적이지 않은 인코더를 만들고자 하였다. 이는 하나의 공유된 인코더에서 여러 태스크를 위한 디코더를 붙여서 사용하도록 설계되었음을 뜻한다.
  • 때문에 VGG 스타일의 인코더를 디자인하였다.
    • 10개의 레이어로 구성하였으며 dilated convolution과 같은 특별한 기법은 사용하지 않았다.
    • 첫번째 레이어에서 5x5, stride 2 convolution 이후 곧바로 max-pooling을 적용하면 하이퍼 파라미터와 연산량을 줄일 수 있다.
    • 이것은 당연히 semantic segmentation의 accuracy와의 trade-off가 있지만, 다른 태스크에는 해당되지 않는 trade-off 이기 때문에, 태스크에 의존적이지 않는 인코더라는 측면에서는 개별 태스크에서 극복해야하는 부분이다.
    • Convolution 레이어를 연속적으로 적용하면서 width는 늘리고 space는 일정하게 줄어들게 된다.
    • 모든 Convolution은 5x5의 크기이며 BatchNormalization과 ReLU를 적용하였다.
    • 마지막 레이어는 256 크기의 feature map을 가지게 된다.

Decoder

  • 디코더는 기존의 residual learning (He et al., 2016)과 non-bottleneck layers (Romera et al., 2017)을 수정한 버전이다.
  • 연구 (Das and Yogamani, 2018)에서는 residual learning이 depth가 충분하지 않을 경우 학습이 비효율적이라는 것을 보였다. 이는 네트워크가 high gradient flow를 다루지 못해 발생하는 문제였다.
    • 이를 해결하기 위해 기존의 residual learning을 수정하여 high gradient를 여러 skip connection으로 분산하는 구조를 가지도록 하였다.
  • 한편, 최근의 연구처럼 디코더가 적은 deconvolution 레이어를 가질 경우 segmentation 성능이 떨어질 것이다.
    • 이는 디코더의 성능이 인코더로부터 공유받은 지식에 좌우되기 때문인데, 지금의 인코더가 가지는 정보는 generic encoder 이기 때문에 semantic segmentation에 유용한 정보가 아닐 가능 성이 높다. 때문에 인코더가 semantic 정보를 학습할 수 있도록 하여야 한다.
    • 따라서 non-bottleneck 블록을 deconvolution 레이어 사이에 위치시켰다.
  • non-bottleneck 레이어의 디자인은 Figure 2와 같다.
    • 1D, 3D 커널로 구성되는데, 1D 커널은 한 방향으로만의 정보를 얻고자 사용되고 3D는 큰 receptive area로부터 정보를 얻고자 사용된다.
    • 1D, 3D 표현이 이상함, 실제로는 1x3, 3x1 Convolution을 적용한다.
    • 다음 이어지는 1x1, 3x3, 5x5의 여러 크기의 커널로부터 얻어진 feature들을 더하여 하나의 feature로 통합하였다.
    • 통합된 feature는 다시 non-bottleneck 레이어의 입력에 더하여 정보를 통합한다.
    • 이러한 여러 개의 skip connection은 high gradient가 여러 경로로 분산되어 이를 다룰 수 있게 한다.
    • 왼쪽과 오른쪽의 차이는 dilated convolution을 사용할지 말지의 차이이다.

Encoder - Decoder

  • 인코더로부터 넘어온 feature는 첫번째 deconvolution 이후 type-1 non-bottleneck 레이어를 두번 거친다.
  • 다음 deconvolution 레이어 2개를 거친 다음에, type-2 non-bottleneck 레이어를 두번 거치게 된다.
  • 이후 deconvolution 레이어들에는 non-bottleneck를 적용하지 않았다.


Add a Comment Trackback