티스토리 뷰

Semantic segmentation분야에서
높은 accuracy와 적은 inference time을 동시에 잡은 Network

 

Abstract

semantic segmentation 분야의 경우 low-level detail과 high-level semantics가 중요하다.

 

기존의 논문들은 inference 속도를 향상시키기 위해 low-level detail을 포기하게 된다. 본 논문에서는 spatial detail과 categorical semantics를 모두 충족시키는 네트워크를 제안하며 real-time으로 semantic segmentation을 진행한다.

Detail branch에서는 넓은 channel과 얕은 layer를 이용해 high resolution을 얻고,

Semantic branch에서는 좁은 channel과 깊은 layer를 쌓아 high level의 semantic context를 얻을 수 있다.

이 두가지 branch를 적절하게 fuse할 수 있도록 Guided Aggregation Layer를 디자인했다.

 

NVIDIA GeForce GTX1080 Ti에서 input 크기 2048 X 1024를 이용해 156 FPS의 속도로 inference를 달성했으며 Cityscape test에서 Mean IOU를 72.6%를 달성했다.


Introduction

semantic segmentation은 각 픽셀마다 의미있는 class로 분류하는 작업이다. 이 기술은 컴퓨터 비전에서

핵심적인 부분 중 하나이며, scene understanding, autonomous driving, human-machine interaction 등에서 적용할 수 있다. 딥러닝이 발전됨에 다라 semantic segmentation의 정확도가 향상되었다. 하지만 inference 속도를 위해 low level detail을 포기하거나, high accuracy를 위해 inference 속도를 포기하는 방식만 존재했다.

따라서 이 논문에서는 두 가지를 모두 다루는 Bilateral Segmentation Network를 제안한다.

 

Semantic Branch

  • categorical semantics

Detail Branch

  • spatial detail

Guided Aggregation Layer

  • Semantic Branch와 Detail Branch를 효과적으로 결합

booster

  • inference complexity를 증가시키지 않고 성능을 향상하기 위해 추가

이전 버전에 비해 훨씬 간단하게 구성했으며 time-consuming이 존재하는 cross-layer connection을 제거했다. 또한 전체적인 아키텍처를 더욱 compact하게 새로 디자인했으며 이에 따라 성능도 더욱 향상되었다.

 


Core Concepts of BiSeNet V2

BiSeNet V2의 전체 구조

  1. Detail Branch
    1. low-level의 정보들이 담겨야 하므로 풍부한 channel 양을 가져야 한다. 따라서 채널 양은 많게 하면서 Layer의 수를 줄인다. 넓은 spatial size를 가지고 있으므로 residual connection을 진행하지 않는다.
  2. Semantic Branch
    1. Detail branch와는 반대로 적은 채널 양을 가지며 layer를 깊게 쌓는다. 이때 넓은 receptive field 넓히고 feature representation의 level을 높이기 위해 fast-down sampling 방법을 이용한다.
  3. Aggregation Layer
    1. 위 두 가지 branch를 merge 하기 위한 layer이다. semantic branch에서 fast-down sampling을 사용했기 때문에 detail branch에 비해 output이 작다. 따라서 semantic branch의 output feature map을 upsampling 한다. 이후 각각 element-wise product를 진행한 후 더한다.
receptive field가 클수록 공간적 정보가 풍부해지며 계산 시간이 줄어들어 Real time-segmentation에서는 필수적이다.

Bilateral Segmentation Network

Instantiation

Bisenet의 구체적인 구조를 설명한다.

  1. Detail Branch
    1. 총 3개의 layer로 이루어져 있으며 각각 convolution과 batch normalization, 그리고 ReLu 활성화 함수가 포함되어있다.
    2. 최종적으로 input의 1/8 크기의 feature map을 뽑을 수 있다.
  2. Semantic Branch
    - Semantic Branch는 Stem Block과 Context Embedding Block, Gather and Expansion Layer 구조를 이용한다. 
    1. Stem Block
      1. 서로 다른 방식의 downsampling을 진행한 이후에 두 branch를 concat 한다. 다음과 같은 전략을 사용함으로써 computation cost를 줄이고 효과적으로 feature를 뽑을 수 있었다.
    2. Context Embedding Block
      1. global contextual 정보를 효율적으로 얻기 위해서 average pooling과 resisual connection을 사용했다.
      Stem Block과 Context Embedding Block의 구조
    3. Gather and Expansion Layer
      1. depth-wise convolution을 이용하며 마지막에 1X1 convolution을 이용해 depth-wise conv의 output을 projection 시킨다.
      2. 기존 mobilenet v2의 구조와는 다르게 GE layer는 3X3 convolution을 하나 더 사용함으로써 더 좋은 feature quality를 얻을 수 있었다.
      a는 mobilenet v2에서 제안된 구조이며 b,c는 본 논문에서 제안된 GE구조.
    4. Booster Training Strategy
      1. segmentation accuracy를 위해서 booster strategy를 도입했다. 트레이닝 시, feature representation을 향상시키며 inference 시에는 computation cost는 그리 크지 않다. semantic branch 사이사이에 삽입시킨다.
        Booster 구조
depth-wise convolution은 각 채널마다 독립적인 filter(커널)을 가지고 있다. 따라서 입력과 출력의 채널 수가 동일하고 각 채널마다 고유의 spatial 정보를 학습할 수 있는 장점을 가지고 있다.

Experimental Result

output visualization

Cityscapes dataset을 사용했으며 training시에는 2975개, validation 시 500개, test시에는 1525개의 data를 사용했다. dataset의 resolution은 2048 X 1024이다.

Loss의 경우 논문에서는 따로 언급이 되어있지 않지만 공식 github를 통해서 Cross Entopy loss를 사용하는 것으로 확인됐다.

 

기존 SOTA 논문들과의 비교 표

기존 SOTA 논문들에 비해 높은 mIoU와 FPS를 얻은 것을 확인할 수 있었다.

 


현재 이 segmentation output을 이용해서 연구를 진행하고 있다. 곧 새로운 연구 결과로 포스트를 올려볼 예정이다.

 

 

reference

https://arxiv.org/abs/2004.02147

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함