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은
- 이미 존재하는 pretrained backbone을 econder을 써서 downstream task에 transfer하거나
- 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 세가지:
- pretrained transformer backbone에 semantic context를 추가하는 것은 우리가 처음. 그리고 아무 hierarchical vision transformer에 사용할 수 있는 SeMask block 제안
- 다른 encoder stage에서 온 semantic priors를 모을 수 있는 간단한 semantic decoder를 제안. semantic prior는 per-pixel cross entropy loss로 ground truth의 감시를 받는다
- 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(?)을 준다..
- semantic layer의 의미는 semantic context를 모델링 하는 것에 있음
왜 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 |