Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers(CVPR 2021)
Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers
Most recent semantic segmentation methods adopt a fully-convolutional network (FCN) with an encoder-decoder architecture. The encoder progressively reduces the spatial resolution and learns more abstract/semantic visual concepts with larger receptive field
arxiv.org
1. Abstract
FCN 기반의 segmentation은 CNN을 이용하기 때문에 receptive field의 한계가 있습니다.
https://theaisummer.com/receptive-field/
Understanding the receptive field of deep convolutional networks | AI Summer
An intuitive guide on why it is important to inspect the receptive field, as well as how the receptive field affect the design choices of deep convolutional networks.
theaisummer.com
receptive field의 중요성은 이 사이트에서 잘 설명해주고 있습니다.
FCN 기반을 trasnformer로 바꿈으로써 이러한 문제를 해결했다는 내용의 논문입니다.
2. 구조
ViT를 모르시는 분들은
Vision Transformer (1)
Transformer 관련 포스트 [Machine Learning/Time Series] - Transformer [Machine Learning/Time Series] - Transformer 구현 [Machine Learning/Time Series] - Transformer Positional Encoding Transformer 모..
hongl.tistory.com
이 분의 블로그를 참고하시면 될 것 같습니다.
이 논문에서는 encoder는 ViT 기반을 이용했고, decoder는 총 3개를 언급합니다.
이 decoder들에 대해서 알아보겠습니다.
우선 decoder에 대해 설명하기 전에, feature를 reshape 해주는 것부터 설명하겠습니다.
ViT의 출력은 batch size x (1(cls token) + 196(numbef of patch)) x C(embedding size) 로 이루어져 있습니다.
이 논문에서는 cls token을 이용하지 않았고, input size는 H x W 입니다.
위치 정보를 가지고 있도록 batch size x H/16 x W/16 x C로 바꿔줍니다.
여기서 16은 patch size 입니다.
1. naive decoder
navive decoder는 간단합니다.
1x1 conv + batch norm(w/ReLU) + 1x1 conv
구조로 이루어져 있습니다. 출력으로는 H/16 x W/16 x number of class 의 형태가 나오게 되고, 이를 upsampling을 해준 후에 pixel wise cross entropy를 구하게 됩니다.
2. Progressive Upsampling(PUP)
이러한 구조를 가지고 있습니다. 한번에 upsampling을 하면, noise가 생길 수 있어서 2 배씩 한다고 합니다.
3. Multi-level feature arregation(MLA)
이는 CNN의 FPN이랑 비슷합니다. 총 24개의 layer 중에서 4개의 feature 가져옵니다.
reshape conv는 1x1 conv, channel/2 연산을 적용해주는 연산입니다.
이 결과 값을 element wise addition을 해줍니다. 만약에 이 연산을 했다면 , 3x3 convolution을 적용해줍니다.
conv-conv-4x는 3x3conv, channel/2 + 3x3conv, channel/4 + 4x upsampling을 의미합니다.
이렇게 나온 feature들을 concat해주고, conv1x1, num class 연산을 해주고 4x upsampling을 해줍니다.
CNN의 FPN이랑 정말 비슷해보입니다. CNN 같은 경우에는 layer마다 feature의 size가 다르기 때문에, 이런 연산을 해주면 다양한 크기의 객체를 검출할 수 있다는 것으로 알고 있습니다. 하지만 feature의 size가 동일한 ViT 기반 모델에도 굳이 이러한 연산을 해주는 이유는 잘 모르겠습니다. 논문 저자들도 Experiment 파트에서 이러한 문제를 언급합니다.
3. Experiment
FCN이랑 SETR을 비교해보면, FCN 같은 경우에는 noise가 있지만 SETR은 없는 것을 확일 할 수 있습니다.
decoder 3가지 종류를 비교한 결과입니다. 제 예상과는 달리 MLA를 적용했을 경우에도 성능향상에 도움이 되는 것을 확인할 수 있습니다.
이 결과는 cityscape에 대한 결과입니다. CCNet이라는 구조가 sota 입니다. 이 모델은 CNN + attention 모델입니다.
논문 저자들은 자신들의 encoder구조에 segentation에 관한 정보를 추가하면 성능이 향상될 것이라고 이야기 합니다.
또한, encoder를 먼저 pretrain을 시켜야 한다고 이야기합니다. ViT의 특성 상 학습을 시키려면 dataset이 엄청나게 많이 필요하기 때문이라고 저는 생각합니다.
그리고 여기선 MLA가 아닌 PUP가 있는 것을 확인할 수 있는데, PUP의 성능이 가장 좋기 때문입니다.
논문 저자들은 이 결과에 대해서도 분석을 했습니다.
제가 앞에서 언급했던 CNN의 FPN은 layer마다 feature의 resolution이 다르지만, Transformer기반은 그렇지 않아서 이러한 결과가 나왔다고 합니다.
4. Conclusion
1. seq to seq prediction framewokr를 설계
2. .cnn 기반인 FCN 부분을 제거
3. transformer를 이용하여 receptive field 문제 해결
4. 여러가지 decoder 제안