본문 바로가기
AIML 분야/Segmentation

Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers 읽어보기

by 포숑은 맛있어 2021. 1. 5.
반응형

글 작성에 앞서, 필자는 segmentation을 해보지 않았음을 밝힘.

구경하려고 읽어보았다.

 

 

What is the paper about?

Task : Semantic Segmentation

Main idea : Transformer를 적용하자! 최근 핫했던 연구인 ViT의 방식을 따른다.

 

# Keywords

Semantic Segmentation, Transformer

 


 

서론.

 

무려 4일 전에 아카이브에 뜬 따끈한 논문이다. 어디에 accept되었다는 말은 못봤다.

 

저번에 회사에서 16*16 word images (ViT) 논문을 리뷰하여 발표할때 우스갯소리로 내 분야에도 적용한다음에 깃발 꽂으면 논문 한편 뚝딱이라고(?) 했던 기억이 난다. 그 당시 나는 저 논문이 BERTS와 더 유사하다고 생각해서, decoder 헤드를 얹으면 GAN같은 다른 application에 적용하거나 (BERTS가 주목받았던 이유인) self-supervised하게 활용할 수 있을 것 같다고 언급했었다. 그런데 벌써 트랜스포머가 object detection과 semantic segmentation에 나와버렸다!

 

여담으로, 요즘 아카이브를 보면 transformer를 활용한 것 뿐만 아니라 transformer 아키텍쳐 자체를 바꾼 논문도 꽤 보인다. 읽어보진 않았는데 performer, reformer, reservoir transformer 등 '어 이거 뭐야 또 새로운 트랜스포머야?' 싶은 제목을 몇개 봤다.

 

본문으로 들어가기에 앞서 16*16 word images (ViT) 논문은 선행지식으로 필요하다고 생각하기 때문에 미리 링크를 건다.

openreview.net/pdf?id=YicbFdNTTy

 

 

 

 

어쨌거나 이 논문은 학회에 accept되지 않았기 때문에 "정말로 잘 될까? 그냥 아키텍쳐만 새로 만든거 아니야?" 싶을 수도 있는데, 리더보드에서 1위를 달성하였다. 이 데이터셋이 널리 쓰이는 데이터셋인지는 잘 모르겠다. Affiliation으로 Tencent를 달고있는데 학교에서 나온 논문같다.

 

스크롤이 아래에도 쭉 있다. 1위 달성한 모습.

 

위와 같은 이유로, 이 논문은 그냥 디코더 구성을 새로 어떻게 했는지 관심있게 보고 넘어가면 될 것 같다.

 


 

"Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with  Transformers"

arxiv.org/pdf/2012.15840.pdf

 

 

Abstract.

  • 먼저 semantic segmentation은 거의 FCN 구조를 애용하는데, 이게 encoder-decoder 모습이다.
    대부분 아키텍쳐들이 context modeling때문에 receptive field를 늘리기 위해서, 1. dilated/atrous convolution을 쓰거나, 2. attention을 얹는다고 한다.
  • 그런데 encoder-decoder 모델 자체는 크게 변화가 없었다고 한다.
  • 따라서, 이 논문에서는 encoder-decoder에 transformer 아키텍쳐를 사용한다.
    전에 크게 이슈가 되었던 '16*16 word images (ViT)' 논문과 마찬가지로 pure transformer를 도입했기에 이와 유사한 형태로 아키텍쳐를 구성했다고 한다.

 

이외에 다른 특징은 abstract에서 크게 부각된 점이 없다. 여기까지만 읽으면 16*16 논문에다가 그냥 디코더 transformer 아키텍쳐 넣었겠구나 싶다. 실제로 abstract에서 decoder 구조는 심플하다고 언급하였다.

 

 

Related Works 봤는데 거의 segmentation 기존 연구들에 대한 내용, 그리고 위에 언급한 ViT, DETR 얘기 나오기 때문에 스킵했다.

 

Method.

a. 아키텍쳐. 디코더는 세가지를 제안했기 때문에 b,c에서 각기 다른 종류를 소개한다. 하나는 naive approach라 스킵함. b. progressive upsampling (PUP). c. multilevel feature aggregation. (MLA)

 

ViT 논문을 보길 추천한다. 아래 1, 2는 (거의) 똑같다.

익숙한 수식들이 반길 것이다.

전에 슬라이드 자료 만든것 정리해서 포스팅 해야겠다.

 

 

 

1. Input 처리하기 (image -> Sequential input)

image patch 단위로 자른 다음 positional embedding 더한다.

 

2. Transformer

인코더는 multi-head self-attention (MSA)와 Multilayer Perceptron (MLP) blocks으로 구성 되어있다.

당연히 W는 learnable parameter.
익숙한 self attention 수식. residual connection 있음.

3. Decoder.

ViT를 읽어봤다면 역시 이 논문에서 가장 궁금한 점은 디코더일 것이다.

이 논문은 3가지 접근법을 제시한다.

 

(1) Naive upsampling (Naive)

간단하게 1*1 conv와 sync batch norm 연산을 적용하고, bilinear한 upsampling을 적용하고, 픽셀단위로 classification 한다고 한다.

픽셀단위의 CE loss 사용.

2 layer 구성.

본문 캡쳐.

 

(2) Progressive UPsampling (PUP)

upsampling을 한번에 하지 않는다고 한다.

4 layer 구성.

 

(3) Multi-Level feature Aggregation (MLA)

pyramid 형태로 multi-level feature를 뽑는다. 그림을 보면 트랜스포머 중간 블록들에서 뽑아오는걸 알 수 있다.

kernel size 1 × 1, 3 × 3, and 3 × 3의 3-레이어 연산 후 특정 레이어의 채널 수를 줄이고, bilinear upsampling (x4) 한다. 이걸 top-down 방향으로 aggregation한다.

 

셋다 디코더를 왜 이렇게 구성하는지는 segmentation을 안 해서 모르겠으나, 전부 단순하고 일반적인 연산들로 구성한 것 같다.

 

 

 

논문 마감하고나서 이어씀.........

 

Experiment.

Dataset.

 

 

반응형

댓글