이번에 소개할 논문은 Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles 를 이용한 self-supervised 논문입니다. 

 

 

1. Self-Supervised Learning of Pretext-Invariant Representations(CVPR 2020)

이 논문은 input image와 patch들을 서로 비슷하게 해주도록 하는 것이 목표입니다.

그렇게 해주기 위해서 nce loss를 이용합니다. I' 은 negative sample인데, 여기선 다른 이미지의 feature를 뜻 합니다.

s는 cosine similarity 입니다.  Dn 은 데이터셋의 부분집합입니다. 

-log를 취해줌으로써 분모는 작게, 분자는 크게 해주도록 합니다. 즉, 다른 이미지와 이미지 patch들간의 유사도는 높이고, 다른 이미지와의 유사도는 낮춤으로써 이미지의 특징을 알 수 있습니다. 

 

또한 negative sample을 뽑기 위해 memory bank를 이용합니다. 여기서 backbone은 resnet50을 이용합니다. res5는 backbone을 통해 나온 feature 2048 dim을 128로 줄어주는 역할(linear projection)을 합니다. patch들을 전부 concat해주고 다시 이를 128 차원이 나오도록 해줍니다. 128로 줄이면 계산 효율을 높일 수 있습니다. 메모리는 epoch 전에 ema 방법을 통해 업데이트 해줍니다.

최종 loss입니다. 첫번째 식은 위의 식과 동일하게 작동합니다. negative sample도 memory에 있는 것을 이용합니다.

두번째 식은 메모리와 이미지의 feature를 서로 비슷하게 해주고,  다른 이미지와는 다르게 해줍니다. 간단하면서도 기발한 아이디어인 것 같습니다.

 

2. Jigsaw Clustering for Unsupervised Visual Representation Learning(CVPR 2021)

 

이 방법은 다른 이미지의 patch와 서로 섞어줍니다. 섞은 이미지에서 해당 patch가 어느 이미지에 해당하는 지와 해당 patch가 이미지에서 몇 번째 patch인지 맞추도록 합니다.

이 식은 같은 클래스의 patch 간의 유사도는 높이고, 다른 class의 patch와의 유사도는 낮추도록 해줍니다.

 

L은 모델을 통해서 예측한 patch의 위치입니다. 

 

 

Jigsaw puzzle을 이렇게 다양하게 이용하는 것을 보면, 되게 신기하네요. 이전 논문들을 참고하여 좀 더 좋은 아이디어를 생각하면 좋을 것 같습니다.

반응형

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가 작더라도 성능이 올라갑니다.

반응형

1. Introduction

기존 MAE 같은 경우에는 computational cost가 높고 pretraing-finetuning discrepancy를 유발한다고 합니다.

이를 해결하기 위해서 convolution block의 정보 누출을 막아주는 masked convolution을 적용합니다. 또한 multi-scale feature를 제공하기 때문에, object detection과 segmentation의 성능도 올라간다고 말합니다.

2. method

The Hybrid Convolution-transformer Encoder

encoder의 구조는 총 3개의 stage로 이루어져 있습니다. convolution block은 self-attention 대신, 5 x 5 depthwise convolution을 이용합니다. 여기서 depthwise convolution을 이용하는 이유는 CoAtNet의 구조를 참고한 것 같습니다. 코드를 보니 CoAtNet의 구조와 비슷하네요. 그리고 모든 stage 사이사이마다 stride 2 conv를 이용하여 downsampling을 해줍니다.

 

1,2 stage에서는 local 적인 정보를 보게 되고, stage 3에서는 global하게 보기 됩니다. 기존의 vit(swin 등)는 absolute position embbeding 대신 relative postion embedding이나 zero-padded conv를 이용하지만, stage 3의 input에 absolute position embbeding을 더하는 것이 성능이 좋다고 이야기 합니다. cls token은 제거합니다.

 

Block-wise Masking with Masked Convolution

stage 1에서 masking token을 적용하게 되면, stage 3의 patch에서 일부 정보가 보여질 수 있습니다. 그 이유는 앞에서 convolution을 하게 되면, masking된 지역 주변의 픽셀 정보는 남아있기 때문에 이런 말을 한 것 같습니다. 이를 해결하기 위해, 위 그림처럼 stage 3의 input token의 일정 비율을 masking하고 이를 upsample하는 방법을 이용한다고 합니다.

 

첫 2 stage의 5 x 5 dconv는 masked patch보다 receptive field가 크기 때문에, 정보가 유출된다고 합니다.(2배, 4배를 하기 때문에 5보다 작아서 그런 것 같은데, 사실 왜 큰지 잘 이해가 안 가네요. stage 2의 feature 1 pixel을 하나의 patch로 보지느 않을 것 같은데...) 이를 해결하기 위해 masked convolution을 적용한다고 합니다. 이 방법이 성능에 큰 영향을 끼쳤다고 합니다.  코드를 보면 단순히 mask(0,1)와  곱하는 것 같습니다.

 

The Multi-scale Decoder and Loss

multi-scale feature decoder에 줄 때는, 윗 그림의 파란 박스 부분을 보면 됩니다. 단순히 upsample하고 다 더 해줍니다.

3. ablation study

 

 

epoch을 클수록 성능이  좋다고 합니다.

 

앞에서 말한 masked conv의 영향이 매우 큰 것을 알 수 있습니다. 근데 block masking은 무엇인지 모르겠네요. 논문에 검색해봐도 저거 하나만 뜨네요.

 

기존 mae보다 훨씬 빠르게 convergence하는 것을 확인할 수 있습니다.

반응형

'computer vision > self-supervised' 카테고리의 다른 글

jigsaw puzzle 을 이용한 self-supervised  (0) 2022.07.20

 이 논문은 Federated learning과 domain generalization을 합친 느낌입니다.

 

 Federated learning(FL)은 privacy를 지켜줄 수 있는 방법입니다.

서버에서 최근 모델을 불러와서, local client들이 자신들의 데이터로 모델을 학습합니다.

그 후에 서버에서는 client들의 파라미터 값을 합쳐서 모델을 업데이트합니다.

 

1. Introduction

 기존 FL은 internal client에서 성능을 향상하는 것을 목적으로 합니다. 문제는 이렇게 하면 unseen domain에서 잘 작동을 하지 않습니다. 특히 medical에서는 scanner나 protocol이 다양하기 때문에 data distribution이 꽤 다를 수 있어서 문제가 됩니다.

 이 논문은 각 클라이언트들이 privacy를 지키면서 다른 클라이언트의 data distribution에 접근할 수 있도록 합니다. 그러기 위해서 이미지를 frequency space로 바꾼 후에, amplitude와 phase를 이용합니다.

 

2. Method

2.1 Federated Domain Generalization

 K 개의 client들은 서버에서 global model의 파라미터를 받습니다. 그리고 각자의 local data를 이용하여 E epoch동안 모델의 파라미터를 업데이트합니다. 서버는 모든 클라이언트로부터 파라미터를 받고, 이들을 합쳐서 global model을 업데이트합니다.

합칠 때는 데이터의 개수가 더 많은 것에 가중치를 많이 주어서 업데이트합니다. N은 데이터의 개수입니다.

 

하지만 이 알고리즘에는 문제가 있습니다.

 

1. 클라이언트들은 각각 자신만의 데이터들로 학습을 했기 때문에, generalizable parameter를 배울 수가 없습니다.

 

2. 다른 clinical site로부터 얻은 medical image는 큰 이질성이 있습니다. 그래서 invariance한 것을 얻기 힘듭니다.

 

3. medical anatomises(해부학)의 구조는 꽤 모호한 boundary가 나타납니다. 이러한 문제에서는 domain invariance 한 것을 찾기 힘들다고 합니다.

 

2.2 Continuous Frequency Space Interpolation

흩어진 데이터의 한계점을 해결하기 위해서, 클라이언트끼리 data distribution을 서로 주고 받습니다. 하지만 privacy 때문에 raw data를 직접 주고받는 것은 금지되어 있기 때문에, frequency space의 정보를 이용하자고 저자들은 제안합니다.

 frequency space로 이동하기 위해서 푸리에 변환을 이용합니다.

frequency space의 signal은 ampiltude(A) 와 phase(P)로 나눌 수 있습니다. amplitude는 low-level distribution(style)을, phase는 high-level semantics(object)를 가지고 있습니다. 서로 distribution information을 교환하기 위해서 A를 저장하는 bank를 만듭니다.

 

 그 다음으로는 다른 도메인의 distiribution information을 local client로 주기 위해서, bank에서 랜덤으로 하나 선택해서, 그 amplitude의 low frequency로 바꿔줍니다. phase는 semantic 정보를 유지시켜주기 때문에, phase는 바꾸면 안 됩니다. 

 

 

A_k와 A_n을 서로 섞어 줍니다. M은 low frequency에서는 1이고, 아닌 곳에서는 0입니다. local client의 data는 k입니다. 다른 client의 데이터는 n입니다. 람다는 [0.0, 1.0]에서 랜덤으로 뽑습니다.

 

이미지는 섞은 amplitude와 local client의 phase를 통해서 다시 이미지로 바꿉니다.

 

 

2.3 Boundary-oriented Episodic Learning

 

 Episodic learning at local client

여기서 episodic learning을 이용합니다. raw input인 x를 meta-train, frequency odmain을 ㅗ부터 만들어진 t는 meta-test로 합니다.

 

 우선 meta-trian으로 L seg(dice loss)를 최소화하는 방향으로 학습합니다.

그리고 meta-test로 L meta를 최소화하는 방향으로 학습하게 됩니다.

 

 

 

 Boundary-oriented meta optimization

위에서 언급했다시피, anatomy의 애매한 boundary 때문에 다른 domain의 데이터에서는 잘 안됩니다. 이를 해결하기 위해서, boundary-related feature와 background-related feature의 cluster가 겹치지 않으면서 domain에 상관없이 잘 되도록 regularize를 해줍니다.

이 점이 왜 중요하나면 boundary의 근처의 feature를 잘 뽑아내지 못하면, distribution-independent 하고 class-specific하지 않게 됩니다.

 

우선 boundary-related하고 background-related 한 feature를 뽑아냅니다.

 

이는 ndimage.binary_erosion, ndimage.binary_dilation을 이용하여 뽑아냅니다.

 

 

 

z는 feature이고, i_bd는 boundary, i_bg는 background입니다. 이 식을 이용하여 각 feature의 평균을 구해줍니다.

 

 

이를 infoNCE를 통해 같은 class의 cluster는 서로 밀접하도록 하고 다른 class는 멀리 떨어트립니다. p는 positive, 즉 같은 class를 의미하고, m은 무작위 anchor입니다. F는 쌍이 negative pair라면 1을, 아니면 0을 반환하도록 합니다.

 

동그라미 두 개는 cosine similarity입니다. k가 2인 이유는 (boundary, background) * k(client 수) 이기 때문입니다.

타우는 temperature로 hyper parameter입니다. 

 

 

앞에서 meta-train 데이터셋으로 구한 파라미터를 이용하여 meta loss를 계산합니다. t는 meta-test 데이터입니다.

 

 

 

최종으로 이렇게 학습을 하게 됩니다.

 

 

 

 

3. Experiment

 

 

데이터 셋은 2가지 이용합니다. 각 데이터 셋은 다양한 domain의 데이터로 구성되어 있습니다.

 

 

FedAvg는 각 클라이언트를 학습한 후에, 단순하게 평균을 내준 것 입니다. 

 

위의 4가지는 DG방법입니다. jigen은 jigsaw를 이용한 방법이고, Epi-FCR은 episodic learning을 이용한 방법입니다. RSC는 기울기가 높은 것을 점차 마스킹하면서 다른 부분을 찾게 하는 방법입니다. BigAug는 제가 잘 모르겠네요...

 

 

 

 

 

CFSI는 fouriere를 이용한 방법, BEL은 episodic learning을 이용한  방법입니다. 모두 사용했을 때가 성능이 제일 좋습니다. 둘 다 사용하지 않은 것보다 하나를 이용했을 경우가 1~2퍼센트 정도 성능이 오릅니다.

 

이는 amplitude를 어떻게 섞느냐에 대한 해석입니다. fix value로 하게 되면, 다양한 domain이 나오지 않지만, uniform distribution인 [0,1]에서 무작위 하게 뽑으면, 다양한 domain이 나오게 됩니다.

 

이는 boundary와 backgroud간의 distance를 계산한 것입니다. source domain에서 이 논문의 방법이 평균을 한 것보다 확실히 distance가 큽니다. unseen domain에서도 더 큰 것을 확인할 수 있습니다.

 

 

이는 client의 개수에 따른 성능입니다. 당연히 client가 많아지면, 데이터가 많아지기 때문에 성능은 오릅니다. 하지만 이 논문의 방법이 좀 더 성능이 좋은 것을 확인할 수 있습니다.

반응형

1. Introduction

이 논문은 푸리에 변환을 이용한 data augmentation에 관한 논문입니다. 푸리에 변환은 이미지를 주파수 도메인으로 나타낼 수 있습니다. 이미지에서 주파수는 픽셀 값이 얼마나 빨리 변하는지를 의미합니다. 

푸리에 변환에서 phase는 high-level statistic을 가지고 있고, amplitude 는 low-level statistic을 가지고 있습니다.

이 논문에서는 phase는 유지하고 amplitude를 바꿈으로써, semantic한 정보는 유지하면서 다른 domain의 데이터를 생성하도록 합니다. 또한 Co-teacher regularization을 통해 두 데이터 간의 class relationship을 유지시켜 줍니다.

 

 

2. Method

2.1 Fourier-based data augmentation

 

이 식은 이미지의 푸리에 변환 식입니다.

 

A는 amplitude, P는 phase입니다. 이미지 각 채널의 phase와 amplitude를 구합니다.

기존 방법들은 low frequency 부분의 일정 부분을 섞어줬습니다. 그게 위 그림의 (a) AS 입니다. 이 방법의 문제점은 middle, high frequency에 대해서 overfit이 일어난다고 합니다.

그래서 이 논문은 (b) AM 방법처럼 전체를 섞어서 data augmentation을 합니다.

 

다른 domain의 이미지의 amplitude와 섞어줍니다.

섞은 amplitude와 기존 이미지의 phase를 이용하여 푸리에 변환을 구하고, 이를 다시 inverse해서 데이터를 복원합니다.

 

2.2 Co-teacher Regularization

위 방법에도 문제점이 존재합니다. 말을 augment했다면, augment한 데이터가 기린에 더 가깝다고 모델은 판단할 수 있씁니다. 이러한 문제를 막기 위해서 dual consistency loss로 explicit constraint를 추가해줍니다.

 

EMA 방법을 통해 teacher model을 업데이트 해줍니다. teacher모델은 따로 학습하지 않습니다.

 

또한, 이 식을 이용하여 augment한 데이터와 original 데이터의 예측 값을 서로 비슷하게 해줍니다.

전 사실 여기서 왜 teacher모델을 도입했는 지 잘 이해가 안갔습니다.

 

최종 loss는 이와 같습니다.

 

 

 

3. Experiment

teacher까지 이용했을 시에, 성능이 가장 높은 것을 확인할 수 있습니다.

 

phase를 이용하여 학습한 것이 전체적으로 성능은 더 좋습니다. 이는 phase가 smentic한 정보를 포함하고 있고, amplitude는 semantic한 정보가 적다는 것을 확인할 수 있습니다.

신기하게도 phase에서 photo에서는 성능이 좀 낮은 것을 확인할 수 있씁니다. photo domain은 amplitude한 정보도 필요하다는 것을 의미합니다.

 

 

CV에서 basic한 것을 이용하여 하는 논문이라 재미있게 봤습니다. AI 모델 뿐만이 아니라, CV에 대한 공부도 중요한 것 같습니다.

 

반응형

이 논문은 kakao brain의 논문입니다. 수식이 좀 있습니다.

 

1. Introduction

 source domain만 이용하면, domain이 급격하게 변할 때 domain invariant한 representation을 학습할 수 없습니다. oracle model의 mutual information을 이용하여 이와 같은 문제를 해결합니다. oracle model에 대해서는 뒤에서 살펴보겠습니다.

 이 논문은 domain-invariant feature를 학습하는 대신에, "oracle" representation이랑 비슷한 feature를 배우도록 합니다. oracle model(어떤 도메인에서든 잘 작동하는 모델로 전 이해했습니다.)의 representation과 target model의 representation의 mutual informaion을 최대화하는 것이 목표입니다. 

하지만 oracle model은 현실적으로 불가능합니다. 그렇기 때문에 ImageNet 같은 데이터셋으로 미리 학습된 모델을 이용하여, 근사화합니다.

 

2. Method

f* 은 oracle model의 feature extractor입니다. 두 모델의 mutual information을 최대화 하는 것이 목표입니다.

 

mutual information의 lower bound는 이와 같습니다. q는 variational distribution입니다. 

 

이 과정을 통해 이와 같은 식이 나오게 됩니다.

 

KL divergence는 항상 양수이기 때문에, 이와 같은 lower bound가 나오게 됩니다.

 

하지만 앞에서 f*을 실제로 구하는 것은 불가능하다고 했습니다.

 

그래서 근사화하기 위해서

 

이와 같은 식을 이용합니다. f0는 pretrained model 입니다.  C는 constant입니다. 이 식의 유도과정은 논문의 appendix에 있습니다. 

d2의 값이 작다는 것은 true lower bound와 근사화한 것이 비슷하다는 것을 의미합니다. 

 

요약하자면,

E[logq(zf0|zf)] 부분을 최대화시키면, lower bound가 최대화됩니다.

 

아까 제일 위에 있던 식에 라그랑주 승수법을 적용하면, 이와 같은 objective function이 나옵니다.

 

라그랑주 승수법은

https://datascienceschool.net/02%20mathematics/05.02%20%EC%A0%9C%ED%95%9C%EC%A1%B0%EA%B1%B4%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%EC%B5%9C%EC%A0%81%ED%99%94%20%EB%AC%B8%EC%A0%9C.html

 

5.2 제한조건이 있는 최적화 문제 — 데이터 사이언스 스쿨

.ipynb .pdf to have style consistency -->

datascienceschool.net

이 사이트를 보고 공부하면 좋습니다.

 

이 모델의 variational distribution은 가우시안 분포입니다. mean은 Zf의 평균, covariance는 Zf의 sum입니다.

최종 loss function입니다. 이 식이 왜 나왔는지는 이해를 못했습니다...

 

 

 

 

 

이 표는 oracle model와의 mutual information을 의미합니다. ERM- 는 random으로부터 fine-tuning한 것이고, ERM+는 imagenet과 instagram데이터로 학습한 모델(pre-trained)를 fine-tuning한 것입니다. MIRO가 제일 mutual information이 높은 것을 확인할 수 있습니다.

큰 모델이 좀 더 oracle model과 가깝다고 해석할 수 있습니다. b에서 fine-tuning한 것이 pre-trained 된 것보다 작은 것을 볼 수 있습니다. 이 부분이 좀 의외였습니다.

large model의 fine-tuning에 관한 논문도 있다고 합니다.

 

3. Experiment

 

 

반응형

1. Introduction

  기존의 방법들은 pretrained model을 가져와서 fine-tuning하는 방법을 많이 이용합니다. fine-tuning의 문제점은 모델이 커질 수록, 계산이 매우 많아집니다. 그리고 source domain에 overfitting 됩니다.

이 그래프를 보면, fine tuning을 하게 되면 학습하는 parameter가 엄청나게 많은 것을 알 수 있습니다.

 

 

 일반적으로, preatrinaed model은 gerneralization ability를 어느 정도는 가지고 있고, specific한 domain의 성능은 좋습니다.

세로는 모델들이고 가로는 각 도메인과 클래스에 대한 성능입니다. 표는 도메인,클래스 간의 KL-divergence입니다.

 

이러한 문제를 해결하기 위해 논문 저자들은 finetuning을 하지 않는 방법을 소개합니다.

 

2. Method

K개의 pretrained model이 있고, 이들은 같은 데이터 셋으로 학습을 했습니다.

 

adapter는 pretrained model의 label space를 현재 task의 label space로 바꿔주는 역할을 합니다. 

 

pretrained model
adapter

즉, pretrained model이 C0개의 class에 대한 model이였다면, 이를 C개의 class에 대해 예측하도록 바꿔줍니다.

 

 

 

 앞에서 pretrained model은 각자만의 specialty를 가지고 있습니다. 어떤 model이 해당 sample에 잘 맞는지 학습해야합니다.

 

c_i의 모양은 1 x d_v이고, C_m의 모양은 K x d_v 입니다. 

 

이 두 개를 matrix 곱을 해서, score를 구합니다. 

 

W는 k x k 입니다. layer라고 생각하면 됩니다.

layer를 통과한 후에, activation function을 적용해주고, softmax를 취해줍니다.

 

weight을 결과값에 곱해줌으로써, label을 예측합니다.

 

 

이는 적합한 모델에 좀 더 가중치를 주도록 하는 loss function입니다. 쉬운 식입니다.

label space adapter 학습하는 부분입니다.

classifier 학습하는 부분입니다.

 

 

3. Experiment

model pool-A는 imagenet으로 학습한 모델 15개 이용합니다.

model pool-B는 앞의 모델 15개와 YFCC100M 데이터셋으로 학습시킨 ViT 16, 32를 추가해서 총 17개나 이용합니다.

 

전 모델을 엄청나게 많이 이용하는 점이 현실적인 문제에서는 적합하지 않다고 생각합니다.

 

실제로 learnable parameter가 적어서 학습속도는 엄청나게 빠릅니다. 하지만 inference 시간은 좀 긴 편입니다. 그 이유는 여러 개의 pretrain model을 이용하기 때문이라고 전 생각합니다. 실제 컴퓨터 사양에 좀 영향을 많이 받을 것 같습니다.

 

반응형

1. Abstract

 CNN의 inductive bias는 image style(texture)를 중점으로 할 경우가 많습니다. 이 논문은 CNN의 intrinsic style bias를 줄여서 domain 사이의 gap을 가깝게 하는 것이 목접입니다. Style-Agnostic Networks(SagNets)는 class 정보로부터 style 인코딩을 분리하여 style biased 예측을 방지하고 content(class)에 좀 더 집중하도록 한다고 합니다.

2. Introduction

 사람은 content를 기준으로 사물을 인식합니다. 강아지가 art이든, 흑백이든, photo이든 저흰 다 구별을 할 수 있습니다.

하지만 CNN은 style에 중점을 두기 때문에, 인식을 잘 못합니다. 이러한 inductive bias를 제어하여 도메인이 달라지더라도 잘 인식을 할 수 있도록 하는 것이 SagNets의 목적입니다.

 

 이 모델은 content-biased와 style-biased network로 이루어져 있습니다. content-biased는 style을 randomizing하여 content에 좀 더 집중하게 하고, style-biased는 반대로 작동합니다. 또한 feature extractor가 어느 클래스에 속하는지 모르도록 속입니다. 

3. Method

3.1 Content-Biased Learning

 content-biased한 feature를 style randomization(SR)을 이용하여 학습합니다. 

 

SR을 하기 위해서 training image x하나와 랜덤으로 x'을 하나 선택해서 두 이미지의 feature(z, z')의 style 을 섞어줍니다.

그러기 위해서 AdaIN의 방법을 이용합니다.

z의 content는 유지하면서, z'의 style로 바꿔주는 역할을 하게 됩니다. 알파는 섞는 비율 입니다.

 

Gf는 feature extractor, Gc는 content-biased network입니다. k는 클래스 개수입니다. y는 {0,1} 입니다. 그냥 cross entropy 함수입니다.

 

3.2 Adversarial Style-Biased Learning

 

feature extractor로 encoding된 style은 어느 class에 속하는 지 몰라야 합니다.

식을 보면 앞이랑 반대인 것을 알 수 있습니다. 무작위로 뽑은 image의 feature z'을 z의 style과 섞어줍니다. 그러면 style은 z인데, content는 z'이게 됩니다.

앞이랑 다르게 feature extracotr는 학습을 하지 않습니다.

여기서 class를 잘 분류하지 못하도록 feature extractor를 학습하게 됩니다. 여기서 좀 신기했던 것은 원래 gradient flip같은 것으로 학습을 해주는 경우가 많은데, 그냥 uniform dstribution을 label로 씁니다. 이렇게 하는 경우가 수렴이 좀 더 안정적으로 된다고 합니다.

4. Experiment

 

반응형

1. Abstract

 이 논문은 여러가지 normalization 기법을 이용하여 해결합니다. batch normalization(BN)은 도메인 이동이 큰 곳에서는 한계가 있습니다. 그렇기 때문에 domain specific style을 제거할 필요가 있습니다. 이를 하기 위해서 Instance normalization(IN)을 이용합니다.

 

2. Method

F는 feature extractor입니다. 

normalization 파트를 제외한 나머지 parameter들은 domain끼리 서로 공유합니다.

 

D는 classifier입니다. 하나만 이용합니다.

모든 도메인의 loss를 더해서 최종으로 학습하게 됩니다.

 

2.1 Instance Normalization for Domain Generalization

 

 

table1을 보면, BN은 cross domain 시나리오에서는 적절하지 않습니다. ImageNet으로 학습된 resnet을 PACS 데이터에 맞게끔 BN layer를 학습한 것이 아래결과입니다. 오히려 성능이 떨어지는 것을 확인할 수 있습니다.

 

이러한 문제를 해결하기 위해서 IN을 도입합니다. 이는 domain-agnostic 한 feature를 얻을 수 있다고 합니다.

IN은 sytle normalization하는 능력이 있기 때문에, style trasnfer에 주로 이용됩니다. AdaIN, MixStyle 등 다양한 곳에서 이를 활용했습니다. IN은 각 도메인의 style information을 줄여줍니다.

 하지만 IN도 문제점이 있습니다. semantic한 정보가 많이 줄어들게 됩니다. 위 그림은 3가지 class에 대한 분포를 나타냅니다. a, b같은 경우에는 같은 class 끼리 잘 뭉쳐있습니다. 하지만 c는 그렇지 않습니다. inter-class varaince가 감소하게 되어서, 서로 잘 구분을 못합니다. 

 

이 논문에서는 BN, IN 두 가지를 결합합니다.

 

2.2 Optimization for Domain-Specific Normalization

x는 각 채널에 대해서, H x W x N입니다. h는 세로, w는 가로, N은 batch입니다. 감마와 베타는 affine parameter입니다. 각 도메인마다 하나 씩 있습니다.

 

우선 BN에 이용되는 변수를 구합니다.

 

IN에 사용되는 변수도 구합니다. 식을 보면, IN의 평균은 B x C x 1 이런 형태인데, BN은 1 x C x 1 이런 모양입니다.

 

위해서 구한 것을 w만큼 서로 섞어줍니다. mixstyle의 수식이랑 조금 비슷한 모양인 것을 확인할 수 있습니다.

 

이렇게 normalization을 해준 후에, 맨 위의 식을 이용하여 affine translation을 해줍니다.

 

2.3 Inference

unseen domain에서는 나온 결과를 전부 평균을 내주고, softmax를 적용합니다.

3. Experiment

 

이 논문은 접근방법이 되게 신기해서 인상깊네요.

반응형

+ Recent posts