1. Abstract

 이 논문은 intrinsic self-supervision과 extrinsic supervision을 결합한 형태입니다. 이 말이 무슨 의미냐면, instrinsic self-supervision은 해당 도메인의 classification하는 능력을 길러주고, extrinsic sueprvsion은 다른 도메인과의 거리를 줄여주는 역할을 하게 됩니다. 자세한 건 뒤에서 살펴보겠습니다.

 

 

 

2. 구조

 

이는 모델구조 입니다. 우선 Triplet loss에 대해서 살펴보겠습니다.

 

 

Triplet loss

 

Triplet loss에 관한 그림입니다. Anchor는 임의이 feature이고, Positive는 feature가 anchor의 label과 같은 경우입니다. negative는 label이 틀린 경우입니다.

손실함수는 이렇습니다. 식을 보시면 아시다시피, anchor와 positvie의 거리는 가깝게, anchor와 negative의 거리는 멀게 학습을 하게 됩니다. 그림의 (a)는 원래 tirplet loss에서 negative sample을 고르는 방법입니다. (a) 같은 경우에는 이미 margin 보다 멀리 있는 negative가 선택되기 때문에 학습에 효율적이지 않다고 합니다. 그래서 논문 저자는 (c)와 같은 방법을 도입합니다. 

 

최종 Triplet loss는 이렇습니다.  이는 feature encoder가 더 discriminative한 정보를 학습을 할 수 있게 됩니다. 이 부분이 extrinsic supervision입니다. 이 triplet pari들을 뽑기 위해서 메모리를 이용합니다. 메모리에는 feature들을 저장하고, 오래된 feature들은 버리게 됩니다.

 

 

하지만 encoder는 학습을 하면서 계속 feature들의 생김새가 달라집니다. 그렇기 때문에 Momentum updated Encoder(MuEncoder)를 도입합니다. 이는 moving average를 통해 업데이트 합니다.

 

 

 Instrinsic self-supervision에 대해서 알아보겠습니다. jigsaw puzzle의 기법을 들고 왔습니다. 이미지를 9개의 patch로 쪼개고, 이를 적절히 섞어서 순서를 맞추도록 합니다. 논문에서는 30개 조합을 사용했습니다.

 

최종 손실함수는 다음과 같습니다

 

 

 

반응형

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

반응형

https://proceedings.neurips.cc/paper/2021/hash/5caf41d62364d5b41a893adc1a9dd5d4-Abstract.html

 

Lifelong Domain Adaptation via Consolidated Internal Distribution

Requests for name changes in the electronic proceedings will be accepted with no questions asked. However name changes may cause bibliographic tracking issues. Authors are asked to consider this carefully and discuss it with their co-authors prior to reque

proceedings.neurips.cc

 

이 논문은 domain Incremental과 관련된 논문입니다.

 

1. Abstract

 이 논문은 unsupervised domain adaptation에 관한 논문입니다. source domain의 data는 label이 있고, target domain 같은 경우에는 label이 없습니다. 이 논문의 핵심은 Internal distribution을 견고하게 만들어서 여러 domain에서도 잘 작동하도록 하는 것입니다.

 

 

2. 구조

 target domain 같은 경우에는 label이 없기 때문에, label을 임의로 달아줘야 합니다. 이 논문에서는 GMM(Guasian Mixture Model)을 이용합니다.

 

 

X는 input Data, Z는 feature, Y는 label이라고 생각하시면 됩니다. 밑 첨자 p는 pseudo를 뜻합니다.

 

 source domain의 data로 학습을 한 후에, 이를 feature들을 바탕으로 GMM을 업데이트합니다. 여기선 실제 label과 예측 label이 맞는 feature만 이용을 합니다.

 

 target domain에서의 pseudo dataset은 GMM에서 임의로 뽑습니다. GMM은 input data가 아닌 feature를 통해 update를 해주게 됩니다.

그렇기 때문에, pseudo dataset은 (feature, label)로 이루어져 있습니다.

 

앞 부분은 일반적인 lossf function입니다. 여기선 pseudo datsaet에 대한 loss입니다.  h는 classifier입니다.

 

D는 distribution discrepancy를 의미합니다. 이 논문에서는 SWD를 이용합니다. D가 의미하는 바는 실제 target doamin의 feature와 GMM에서 뽑은 feature의 거리를 좁히는 역할을 합니다. 

 

GMM인 pj는 sourde domain을 학습시킬 때와는 달리 pseudo-datset을 이용하여 update 해줍니다.

 

 

 

하지만 위 식은 catastrophic forgetting 문제가 있습니다. 새로운 domain에 관해서는 잘 작동을 하지만, 이전 domain에 대한 정보는 잃어버립니다. 

 

그렇기 때문에 기존 incremental learning처럼 이전의 data들을 memory에 저장을 해두는 방법을 이용해야 합니다. memory에 저장하는 data들을 고르는 방법은 cluster mean과 모든 feature 간의 distance를 계산하여, mean과 가장 거리가 가까운 data들을 memory에 넣습니다.

 

 

최종 수식은 이와 같습니다. b가 붙어있는 것들이 buffer memory에 있는 data입니다. 

 

 

반응형

https://arxiv.org/abs/2104.02008

 

1. Domain Generalization(DG) 이란?

우선 domain 이라는 것은 image 의 distribution이 다 다른 것을 뜻합니다. 학습할 때 쓴 domain과 다른 dataset에서는 모델이 잘 작동하지 않는 경우가 발생합니다. 

 

예를 들면, 배경이 낮인 사진으로 모델을 학습했고 현재 환경이 밤이라면 이 모델은 잘 작동하지 않습니다.

 

그래서 제안된 방법이 DG입니다. DG는 여러 domain의 데이터로 학습을 시키면, unseen domain에서도 잘 작동하도록 하는 것입니다. 

 

2.  구조

하늘 색이랑, 파란 색은 서로 다른 data입니다. (a)는 domain label이 있다고 가정한 상황입니다. domain label이 있다면, 이를 inverse해주고, 각 domain 끼리 shuffle 해줍니다. 

 

(b)는 domain label이 없을 때 입니다. random하게 shuffle을 해줍니다.

 

그리고 data의 channel의 평균과 표준편차(instance normalization 을 위해)를 구해줍니다. 람다는 batch size만큼 구합니다. 이 람다 값은 beta(a,a)에서 무작위로 뽑고 논문에서는 a를 0.1로 했다고 합니다.

 

이 데이터를 이용하여 학습을 하게 됩니다. 기존 모델에 추가하기도 매우 쉽습니다.

 

저는 간단한 것 같으면서도 신박하다고 생각했습니다.

 

3. Experiments

 

 

 

이 mixstyle을 어느 layer에다 적용시킬 지 저자들은 실험을 해봤다고 합니다. 일반적으로 resnet의 맨 마지막 layer에서는 classfication에 대한 정보를 담고 있다고 합니다. 그래서 맨 마지막 layer(res4)에 mixstyle을 할 경우에는 성능이 떨어지는 것을 확인할 수 있습니다.

반응형

https://arxiv.org/abs/2103.16788

[DER: Dynamically Expandable Representation for Class Incremental Learning

We address the problem of class incremental learning, which is a core step towards achieving adaptive vision intelligence. In particular, we consider the task setting of incremental learning with limited memory and aim to achieve better stability-plasticit

arxiv.org](https://arxiv.org/abs/2103.16788)

CVPR 2021 논문입니다.

1. Incremental leraning 이란?

기존에는 정해진 class 개수 만큼만 학습을 하고, 새로운 class가 들어오면 처음부터 다시 학습합니다.

Incremental learning은 새로운 class가 들어와도 처음부터 학습하지 않고 이어서 학습을 할 수 있는 방법을 뜻합니다.

cifar100 b0 50step은 하나도 학습하지 않은 상태에서 시작합니다. 50 step 동안 100개의 class를 학습합니다. 그렇기 때문에 step마다 2개의 new class data가 들어옵니다.

old class와 new class를 적절히 memory에 넣고, 이를 이용해서 계속 학습을 하게 됩니다.

2. Main Idea

이 논문의 핵심 아이디어는

1. old class 에 대한 feature는 freeze.(학습 X)

2. new class에 대한 feature를 aug(concat)

입니다.

3. 모델 구조

Feature Extractor는 매 step마다 하나씩 늘어납니다. 그리고 이 feature들을 전부 합친 것을 super feature라고 합니다.

문제는 step이 늘어날 수록 parameter 수도 증가하게 됩니다. parameter를 줄이기 위해서 prunning을 하는데, Mask Layer가 그 역할을 합니다.

Classifier에 대한 loss입니다. Dt는 이전 data 들이 들어있는 memory 입니다. 식을 보시면 간단한 Cross entropy loss라는 것을 확인할 수 있습니다. 여기서는 super feature를 이용합니다.

Auxiliary Classifier는 old class와 new class에 대한 차별성을 학습합니다.

위에서 log 안 쪽 부분을 이 식으로 바꿔주면 됩니다. 앞이랑 달리 new class 에 대한 feature만 이용합니다. 앞의 식은 모든 class(old class 수 + new class 수)에 대한 식이지만, Aux loss 는 new class 개수 + 1 에 대한 식입니다. 여기서 1은 old class인지 판단하는 부분입니다.

 

 

 feature extractor의 추가로 증가된 parameter들을 감소시키는 역할을 하는 것이 mask layer입니다.

fl 은 l번 째 layer의 feature이고, m은 mask입니다. mask의 범위는 sigmoid를 하기 때문에, 0~1 사이입니다.

s는 scaling factor이고, 이 값은 학습을 하면서 조절하게 됩니다. e는 mask parameter입니다. m은 b x c x 1 x 1 이런 꼴로 나와야합니다. channel을 mask하기 때문입니다.

 

s는 이런 식으로 계산합니다. HAT 논문을 보니, smax가 400일 때 성능이 제일 좋았습니다. b는 batch index(1...B)이고 B는 epoch 당 총 batch 수 입니다. s가 무한대에 가까워지면, {0,1} 로 binarized되고, 0이 되면 0.5라는 값이 나옵니다. s를 위의 식으로 계산하는 이유는 학습 처음에는 mask를 하지 않다가 학습을 할 수록 mask를 하게 됩니다. 여기서 의문점은 0~1 범위인데 masking이 잘 될지가 의문이 듭니다(github officail 코드에도 mask 부분은 아직 구현이 안되어있습니다).

 

 

 s값 때문에 sigmoid를 할 시에 gradient가 불안정하다고 합니다. 

그래서 위와 같이 gradient를 계산하게 됩니다. 

 

parameter의 수는 최소화하면서, performance drop도 최소화 하기 위해서 Sparsity Loss를 도입합니다.

 

K는 kernel size입니다. 이는 모든 weight 들 중에서 사용하는 비율을 의미합니다. 

 

 

4. Experiment

 

cifar100 b0 성능입니다. parameter수는 대폭 줄었들었지만, 기존 방법보다 훨씬 좋은 성능이 나오는 것을 알 수 있습니다. 

반응형

+ Recent posts