1. Introduction

이 논문은 모델의 robustness를 키우기 위한 논문입니다. robustness를 키워서 out of domain에서 잘 작동을 하면, in domain에서의 성능이 어느 정도 떨어지는 점을 해결했습니다. 

 사람은 texture보다 shape을 중점으로 보는 것에 영감을 받아, shape-focused augmentation 방법을 제안합니다. texture bias를 줄일 뿐만이 아니라, shape bias에 더 집중을 할 수 있게끔 합니다.

2. Method

방법은 매우 간단합니다. original image에 각각 다른 augmentation 방법을 적용합니다. 그리고 segmentation model을 이용하여 foreground를 추출하고, 이를 이용하여 background와 foreground에 다른 augmentation 방법을 취하도록 할 수 있습니다.

 

매우 간단하죠.

 

위 데이터를 통해서 하게 되면, in-domain에서의 성능은 떨어지게 되지만 robustness는 증가한 것을 확인할 수 있습니다.

 

이 논문의 방법을 적용하면, in-domain에서 성능이 감소하기 하지만, 큰 폭으로 줄어듭니다. 그리고 robustness는 매우 좋아집니다.

 

 

CNN은 shape에 관한 정보를 바로 배울 수 없습니다. 이 방법들만 이용하면 단순한 data augmentation 입니다.

CNN이 shape에 대한 정보도 배울 수 있도록, contrastive learning 방법을 도입합니다.

 

무작위로 선정한 이미지 Anchor를 random resize crop이나 horizantal flip 해준 데이터를 positive로 합니다. 그리고 각각 shape-focused aug를 하고, 이들 간의 거리는 좁히고, 다른 클래스인 negative와는 멀리 떨어트리도록 학습을 하게 됩니다.

 

이 방법을 도입하면, shape 에 대한 common representation을 배울 수 있습니다.

 

좀 아쉬운 점은 negative에도 positive나 anchor와 똑같은 값으로 shape-focused augmentation을 하면 좀 더 shape에 집중할 수 있지 않을까라는 생각이 듭니다. texture가 흡사하고, foreground만 다르기 때문에 좀 더 성능이 올라갈 것 같은데, 궁금하네요.

 

3. Experiment

 

 

 

다른 논문의 contrastive learning 방법에 이 논문의 방법을 더하면, in-domain의 성능이 오히려 올라가고 robustness도 올라가는 것을 확인할 수 있습니다.

 

단순히 augmentation을 여러 번 하는 것으로 in-domain과 out-domain 간의 trade-off를 해결할 수 없다고 말합니다.

 

 

 

제가 작년에 생각했던 아이디어와 비슷한 논문이 CVPR에 accept 된 것을 보니 엄청 신기하네요. 작년에 연구할 때는 잘 안 되는 것 같아서 하다가 관뒀는데, 끝까지 해볼 걸 그랬네요.

반응형

 

이 논문은 조금 오래된 논문입니다. 푸리에 변환을 이용한 논문에 요즘 관심이 있어서 읽었습니다.

1. Introduction

 기존 모델은 conv 후에, fuly-connected layer(fc layer)를 이용합니다. 이는 shape / spatial 정보를 유지하고 있습니다. 하지만 이는 object의 위치나 크기에 영향을 받습니다. 이를 해결하기 위해, 당시에는 average pooling 을 이용합니다. resnet을 보면 알 수 있죠. 하지만 이는 channel 별로 평균을 내주기 때문에, spatial 한 정보를 잃어버립니다.

 

 average pooling은 translation에 강합니다. 그 이유는 h x w의 평균을 이용하기 때문입니다. 하지만 다른 패턴은 구별하지 못합니다. 이 문제점을 해결하기 위해 Discrete Fourier Transform(DFT)을 이용합니다. DFT magnitude pooling은 translation에 강하면서도 shape에 관한 정보를 유지합니다.

 

2. Method

 

phase가 shift되어 있더라도, magnitude는 같다는 것을 증명합니다.

 

이미지를 푸리에 변환하면, 공간을 주파수 영역으로 바꿉니다. 이미지에서 주파수가 높다는 것은 픽셀 값이 급격하게 변하는 부분을 의미하고, 낮은 곳은 서서히 변하는 부분을 의미합니다. 

 

그렇기 때문에, 오브젝트의 위치가 변경되더라도, 픽셀 분포는 변하지 않기 때문에 magnitude는 변하지 않습니다.

 

 

translation에 영향을 받지 않으면서 spatial 정보는 어느 정도 포함하고 있는 dft를 이용하게 됩니다. 여기서 좀 흥미로운 점은 높은 주파수 부분을 잘라내고, N 만큼의 크기로 pooling 합니다. 그 이유가 파라미터는 줄이면서 spatial 정보는 유지할 수 있다고 합니다.

 

여기서 의문점이 들었는데, 반대로 높은 주파수만 골라내면 어떻게 될 지 궁금하네요. 제 개인적인 생각으론, 푸리에 변환에서 높은 주파수로 복원하면, 픽셀이 급격하게 변하는 부분인 edge 정보 위주로 나옵니다.  하지만 낮은 주파수로 복원한 이미지를 보면, edge가 좀 흐릿해지긴 하지만 texture도 포함하고 있어서 그런 것 같습니다. 근데 어떤 논문에선 서로 다른 이미지의 low frequency 부분을 섞어서 다양한 도메인의 데이터를 만든다고 하는데, 헷갈리네요.

 

-> 물어보니, low frequency에 shape에 관련된 정보도 좀 있어서 이용한다고 합니다.

 

 

 

Late Fusion in DFT +

 

cnn 구조를 보면, 맨 마지막 layer의 output을 fc layer에 넣습니다. 하지만 중간에 있는 layer들도 visual 정보를 담고 있기 때문에, 이 논문에서는 중간 layer의 output도 같이 이용하는 방법을 제안합니다.

 

 

 

 

 

 

3. Experiment

 

N 은 pooling size입니다. 이처럼 pooling size가 작더라도 성능이 올라갑니다.

반응형

semanticGAN에서 이 논문의 loss를 다루어서, 읽게 된 논문. 생각보다 인용이 많이 됐음.

 

1. Abstract

 이 논문의 주제는 사람의 관점에서 이미지가 얼마나 비슷한지 어떻게 측정을 할까 입니다. 이 문제가 왜 어렵냐면, 이미지는 차원이 높고 서로 픽셀들이 연관이 있어서 기존의 distance 개념들을 사용하기 어렵습니다. 그리고 비슷하다는 개념이 애매합니다. 예를 들면, 빨간 원이 빨간 사각형이랑 비슷한지, 파란 원이랑 비슷한지 정의하기 어렵습니다. 

 이러한 점을 해결하기 위해 새로운 데이터셋을 제안하고, pretrain 된 모델을 이용하여 distance를 계산합니다.

 

2. method

데이터셋에 대해서는 다루지 않겠습니다.

 

채널마다 feature들을 normalize 해주고, 뺍니다. 그 후에, activation 으로 scale 해주고, l2 distance를 구합니다. 코드를 보니, w는 1x1 convolution으로 구현했네요.

 

 

perceptual한지 판단하기 위해 세 가지 variant를 고려합니다.

 

lin : pretrain 네트워크 가중치를 F 로 고정하고, linear weight w를 학습한다고 합니다. 예시로 VGG가 1472 파라미터만 학습을 한다고 하니까, 위 수식에서 w부분만 학습을 한다고 보면 될 것 같습니다. 

 

tune: pretrain된 network를 들고와서 F를 fine tune을 한다고 합니다.

 

scratch : network를 random gaussian weight으로 초기화 후, 학습한다고 합니다.

 

이 세가지를 Learned Perceptual Image Patch Similarity(LPIPS)라고 한다고 하네요.

 

 

반응형

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를 모르시는 분들은

https://hongl.tistory.com/232

 

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 제안

반응형

+ Recent posts