본문 바로가기

DL_general

SeMask

abstract

  • encoder의 backbone 쪽을 finetuining하는 것은 semantic segmentation task에서 흔한 접근 방법인데, 이러한 방법은 encoding stage에서 image가 제공하는 semantic context가 없어진다는 단점이 있다
  • 그러므로 본 논문에서는 finetuning을 할 때 hierarchical transformer-based backbone에 이미지의 semantic한 정보를 포함하는 것이 성능을 올린다고 주장할 것이다.
  • 또한 lightweight semantic decoder를 사용하였다..
    • ‘we use a lightweight semantic decoder during training to provide supervision to the intermediate semantic prior maps at every stage’
  • semantic prior를 포함하는 것이 hierarchicla encoder의 FLOPs를 약간 올렸다

Introduction

  • vision transformer은
    1. 이미 존재하는 pretrained backbone을 econder을 써서 downstream task에 transfer하거나
    2. encoder가 segmentation task를 위해 pretrained된 새로운 encoder-decoder network를 디자인하거나 둘 중 하나
  • 둘 다 어쨌든 encoder backbone을 finetuning해야함
  • finetuning을 해도 dataset의 사이즈와 segmentation task의 특성 때문에 semantic context를 전부 잡을 수 없음
  • hierarchical vision transformer는 feature progressive downsampling로 해결하려고 했음
    • …등등의 다른 논문들 소개

  • 하지만 이런 논문들은 이미지 전체의 semantic level contextual information은 잡지 못했음
    • 이렇게되면 작은 물체들은 더 큰 물체들에 합쳐져 잘못된 예측으로 이어짐
  • 이러한 문제를 해결하기 위해 우리는 hierarcical vision transformer architecture에 semantic information을 포함하는 SeMask framework를 제안한다.
    • hierarcical transformer을 backbone으로 바로 사용하는 게 아니라 backbone의 각 stage마다 transformer layer 이후에 semantic layer를 넣는 모양
  • 그래서 이 논문의 contribution 세가지:
    1. pretrained transformer backbone에 semantic context를 추가하는 것은 우리가 처음. 그리고 아무 hierarchical vision transformer에 사용할 수 있는 SeMask block 제안
    2. 다른 encoder stage에서 온 semantic priors를 모을 수 있는 간단한 semantic decoder를 제안. semantic prior는 per-pixel cross entropy loss로 ground truth의 감시를 받는다
    3. SeMask block의 ADE20K와 Cityscapes에 대한 효과

Method

구성

  • input image를 겹치지 않게 4x4 block으로 자른다.
    • 더 작으면 segmentation prediction을 더 dense하게 잘 할수 있기 때문
    • 이 input patch들은 hierarchical vision transformer encoder의 input으로 들어감
  • encoding stage는 4 개의 hierarchical feature modeling stage로 나뉘게 됨 (위 그림의 가운데)
    • 매 stage는 transformer layer(N_A개의 Swin transformer block으로 이루어짐)와 Semantic Layer(N_S개의 Semask Attention block으로 이루어짐)으로 이루어졌음 → 이 stage 한 개를 SeMask Block이라고 부름
    • 각 stage에서 hierarchical representation을 위해 patch merging을 통 4, 8, 16, 32배 feature map을 줄임

무엇을 하는지

  • Transformer layer
    • hierarchical feature map을 만듦
    • 겹치지 않게 4x4x3=48개의 patch로 나눔 (first stage). first stage는 patch token의 feature dimension을 바꿀 linear embedding layer를 가지고 있음
    • transformer 내부의 self attention을 계산하는 식은 다음과 같다

  • Semantic layer
    • semantic layer의 의미는 semantic context를 모델링 하는 것에 있음
      • 이미지에 있는 semantic한 의미로부터 feature map을 update하기 위해 segmentation score를 계산하기 전에 모델링을 함
    • SeMask attention block에도 self attention을 계산하기 전에 input을 쪼개서 입력으로 줌
      • SeMask block이 semantic context를 잡는 역할
    • transformer에서 넘어온 feature를 update하고 training 중 semantic modeling을 위한 semantic prior map(?)을 준다..

왜 SeMask의 성능이 좋을까? (결론)

  • abstract에서 말하기를,
    • encoder의 backbone 쪽을 finetuning하는 것은 semantic segmentation task에서 흔한 접근 방법인데, 이러한 방법은 encoding stage에서 image가 제공하는 semantic context가 없어진다는 단점이 있다
    • SeMask는 hierarchical transformer-based backbone에 이미지의 semantic한 정보를 포함하였으므로 기존의 모델보다 성능이 높다
  • semantic한 정보를 포함한 방법은, encoder에 transformer layer만 있는 것이 아니라 semantic layer를 추가한 것
    • transformer layer에는 swin transformer가 있고 semantic layer에는 SeMask attention block이 있다.
    • semantic layer이 transformer에서 넘어온 feature 정보를 update하고 semantic prior map이라는 정보를 뽑아서 훈련 중에 모델에게 제공하는 것

'DL_general' 카테고리의 다른 글

cosine similarity  (0) 2023.03.08
auto encoder  (0) 2023.03.07
Federated learning  (0) 2023.03.06
[simplified] GAN 종류  (0) 2023.03.04
attention과 self attention  (0) 2023.03.02