Segment Anything (arxiv 2023)

카테고리 없음 2023. 9. 30. 23:30 Posted by 3neutronstar

안녕하세요, KDST 팀 강민수입니다.

 

오늘 소개해드릴 논문은 "Segment Anything," 이고 Meta AI에서 공개한 논문입니다.

 

Segment anything은 모델과 데이터셋을 제안한 논문으로 foundation 모델을 지향하는 논문입니다.

NLP에서는 prompt engineering으로 이를 달성할 수 있었고, web-scale dataset이 있었기에 가능했습니다. 하지만, vision field에서는 이것이 매우 어렵습니다. CLIP이나 ALIGN도 language-vision model을 통해서 비슷하게 가능하게 했지만, foundation모델로 인정받지 못하는 것이 그것입니다.

 

본 논문의 목표는 segmentation task에서 foundation model을 만드는 것으로 3가지 방향으로 이를 가능하게 해보고 싶은 것입니다. 이를 위해서 3가지 의문점을 던집니다.

1. zero-shot generalization이 가능하게 되는 task는 어떤 것인가?

2. model architecture는 어떤 것을 선택해야하는가?

3. 어떤 데이터로 해당 task와 model을 학습시킬 것인가?

 

각 요소별로 살펴보면 첫번째는 promptable model을 생각해보아야 하고, architecture를 학습시키기 위해 broad dataset이 필요해집니다.

 

본 논문에서는 크게 4가지 task를 제안합니다.

1. 포인터 (이미지 내의 점을 찍는 prompt)

2. bounding box (detection의 bounding box)

3. region (ppt 그물)

4. text

 

모델을 구성하기 위해서 논문에서는 2가지를 고려했다고 합니다. Real-time과 ambiguity aware인데, real-time은 prompt encoder를 경량화해서 활용하고, web에서도 빠르게 돌 수 있는 모델을 제안했다고 합니다. 일단 이미지의 embedding만 되면 50ms 이내로 경량화해서 prediction에 활용할 수 있다고 합니다.

 

ambiguity aware는 각 prompt가 1개의 답만을 고르지 않게 하는 것을 말합니다. 아래 예시 이미지를 보시면 가방에 prompt를 찍었다고 해서 가방 사람, 지퍼 등 어떤 group으로 하느냐에 따라 prediction이 다를 수 있습니다. 해당 논문에서는 이를 한 개의 답안으로만이 아닌 여러 개의 답안이 나올 수 있도록 학습해야함을 의미합니다.

 

마지막으로는 이러한 architecture 를 학습할 수 있게 만드는 데이터를 어떻게 수집할 것인가에 대한 부분입니다. Real world에는 dataset이 부족하기 때문에 이를 효과적으로 늘릴 수 있는 engine을 제안합니다. 크게 3가지 stage로 구성되며, stage를 거듭할수록 사람이 annotation을 해줄 필요성이 적어집니다.

이를 통해서 지금까지는 없었던 dataset size를 만들 수 있었고, 이를 통해서 SAM을 최종적으로 학습시키게 됩니다.

위 이미지 처럼, 더 나은 annotation을 만들어 내기도 하고, 아래 이미지처럼 데이터셋에 대한 정보를 공개하기도 하니 자세한 내용은 원문을 참조해주시기 바랍니다. 감사합니다.

Energy-based Out-of-distribution Detection(NeurIPS 2020)

카테고리 없음 2023. 9. 27. 17:59 Posted by 김치말이삼겹살

안녕하세요. KDST에서 현장실습을 하고 있는 성균관대학교 데이터사이언스융합전공 김지환이라고 합니다.

 

제가 오늘 소개드릴 논문은 2020년 NeurIPS에 나온 논문으로, OOD 탐지할 때 사용할 수 있는 score로 Energy score를 제시합니다. 기존에 사용하였던 softmax score의 단점인 overconfidence를 줄일 수 있는 차별화된 방법이라고 저자들은 주장합니다.

 

NeurIPS 버전과 아카이브 버전이 달라서 두 버전 모두 링크를 달아두겠습니다.

 

[NeurIPS 버전]

https://proceedings.neurips.cc/paper/2020/file/f5496252609c43eb8a3d147ab9b9c006-Paper.pdf

 

[아카이브 버전]

https://arxiv.org/pdf/2010.03759.pdf

 

저자들은 이 논문의 contribution으로 아래와 같은 점들을 주장합니다.

 

1. Energy score는 기존 OOD score 보다 학습 데이터 x에 대한 확률적 분포를 잘 잡아낼 수 있다.

2. Energy score는 inference 시에 사용하여 OOD를 잘 탐지한다.

3. Energy score로 fine-tuning 시의 loss 함수로도 사용하여 OOD detection을 할 수 있으며, 성능도 준수하다.

 

 


1. Preliminary

 

리뷰에 앞서, 알아야 할 것들이 몇 가지 있습니다.

 

1. OOD가 무엇인지?

2. Energy가 무엇인지?

 

1-1. OOD detection

 

출처: https://hoya012.github.io/blog/anomaly-detection-overview-2/

 

0부터 9까지의 숫자가 적힌 사진 데이터로 0부터 9까지 분류할 수 있는 모델이 있다고 생각해볼 수 있습니다.

 

이때 모델에 고양이 사진이 들어간다면, 모델은 어떤 값을 결과값으로 도출해야할까요?

 

당연히 0부터 9까지 숫자 중 어떤 값으로라도 결과값으로 도출해서는 안될 것입니다.

 

모델이 0부터 9까지의 확률값으로 결과를 뱉어낸다면, [0.1, 0.1, 0.1, ..., 0.1]로 모두 동일하게 도출해내야 할 것입니다.

 

위와 같이 모델이 학습했던 0~9 사이의 숫자 사진이 아닌 고양이 사진을 모델이 학습했던 데이터의 분포에 바깥에 있다는 의미에서 Out of Distribution이라고 합니다.

 

모델의 결과값으로 아무런 결과를 도출해내지 않는 (각 라벨에 동일한 확률값을 뱉어내는) 것을 OOD를 탐지해낸다고 합니다.

 

1-2. Energy

 

Statistical learning이나 machine learning의 주요 목적을 "여러 변수들(X,Y)간의 상관관계를 어떻게 하면 잘 인코딩해볼까" 라고 합니다.

 

이렇게 변수들간의 상관관계(X, Y 간의 상관관계)를 데이터로부터 잘 학습하고 나면, 모르는 변수의 값이 들어왔을 때 이미 알고 있는 변수들의 값을 바탕으로 모델이 질문에 답을 할 수 있을 것입니다.

 

따라서 학습을 energy의 관점에서 얘기해보면, 데이터를 바탕으로 어떤 energy surface를 만들어 나가되 데이터가 살고 있는 부분 혹은 공간에 대해서는 낮은 energy를 할당하고 다른 부분에는 높은 energy를 할당하도록 하는 그런 과정이라고 생각할 수 있습니다.

 

즉, 인코딩을 해줄 값 = energy가 되는 것이고 이를 인코딩하는 함수 = energy function이 되는 것입니다.

 

energy function이 학습되는 과정, 즉 energy surface가 만들어지는 과정은 아래와 같이 생각해볼 수 있습니다.

 

(a) -> (d) 방향으로 읽어주세요

 

여기서 학습한 데이터와 가까울 때 에너지가 낮은 이유는, 에너지가 낮을수록 안정적이라는 물리적 개념을 차용하기 위함이라고 합니다.

 

현재 우리가 하고자 하는 OOD detection task를 떠올려보면, 우리는 ID와 OOD를 구분하는 energy surface를 만들어주는 energy function을 학습하고자 하는 것으로 이해할 수 있습니다.

 

이때 에너지 값은 스칼라 값으로, 우리는 이 값을 이용해서 특정 threshold보다 작으면 ID로, 이보다 크면 OOD로 판별할 것입니다.

 

이해를 돕기 위해 위 논문에서 발췌한 그림을 첨부하겠습니다.

 

 

1-3. Energy function

 

이 논문에서 사용하는 Energy function은 흔히 사용하는 logit에 temperature scaling을 한 버전입니다.

 

저자들은 이전에 나온 ODIN이라는 논문에서 제안한 temperature scaling이 OOD detection에 효과적이었다는 아이디어를 착안하여, temperature scaling을 제안한다. 이때 temperature T는 1보다 큰 값으로 해서 1/T를 logit에 곱해 softmax를 취합니다.

 

위의 식은 K개의 클래스, 즉 K차원의 logit vector의 output에 T의 역수를 곱하고, 이를 Negative Log Likelihood를 계산합니다.

 

그리고 energy based model의 pdf는 아래와 같습니다. (T가 1인 상황에서)

 

그리고 이를 우리가 사용하고자 하는 pdf로 변환하면 아래와 같이 표현할 수 있습니다.

이때 분모의 경우는 전체 데이터 x에 대한 energy를 더하는 항(partition function)인데, 이를 우리가 구할 수 없습니다. 따라서 로그 연산을 취해 분모의 영향을 지워버립니다.

위 식이 중요한 이유는 softmax와는 달리, x의 확률적 분포와 일치하게 energy 함수를 사용할 수 있다는 것에 있습니다. 또한, 두번째 term이 모든 x에 대해 상수값이므로 ID에 대해 낮은 에너지를 부여할 수 있고, OOD에 대해 높은 에너지를 부여할 수 있습니다.

 

그리고 분류기를 하나 두어서, 에너지가 특정 threshold를 넘으면 OOD로 그렇지 않으면 ID로 판별할 수 있도록 구성합니다.

 


 

2. Energy Score vs. Softmax Score

 

이전에 OOD를 탐지할 때는 softmax를 취해 가장 높은 값을 score로 두고, 이 값을 threshold와 비교하여 OOD를 판별했습니다.

 

하지만 저자들은 이 방법에 문제가 있다고 합니다.

 

아래에 우리가 알고 있는 softmax값 중 가장 큰 값을 뽑아내는 softmax confidence score로부터 enegy score를 유도해보도록 하겠습니다. (이때 energy score의 T는 1이라고 가정합니다.)

 

 

앞선 공식에서,

를 이용해 softmax confidence를 다시 한번 써보면 아래와 같이 쓸 수 있습니다.

우리의 OOD score는 ID에 대해 낮고, OOD에 대해 높길 원하는데, 위의 식에서 뒤의 두 항은 ID에 대해 높은 값을 부여할 수 있습니다.

 

때문에 Energy score에 비해 bias가 생길 수밖에 없다.

 

 


3. Energy-bounded Learning for OOD Detection 

 

저자들은 fine-tuning 시에 OOD를 탐지할 수 있도록 기존 cross entropy loss 함수에 새로운 term을 제시합니다. 

 

fine-tuning할 때는 ID 데이터와 보조 OOD data가 쌍으로 동시에 들어가는 상황입니다.

 

이 규제항은 아래와 같습니다.

이 항은 hinge loss로, ID data가 m_in이라는 ID data에 대한 energy threshold(m_in)보다 크면 loss를 부여하고, 반대로 OOD data가 OOD data에 대한 energy threshold(m_out)보다 작으면 loss를 부여하는 방식입니다.

 


4. Experiment

 

실험 결과를 보기 전, FPR95라는 metric을 소개하고자 합니다.

 

이 논문에서 FPR95는 ID 샘플에 대해 true positive 비율이 95%일 때, OOD 샘플의 false positive 비율을 뜻합니다.

 

저자들은 CIFAR10으로 사전학습한 WideResNet에 대해 SVHN 데이터셋으로 inference할 때의 OOD Metric인 FPR95와 softmax score(a)와 energy score(b), 그리고 사전학습한 WideResNet에 대해 CIFAR10과 SVHN 쌍으로 inference 할 때의 FPR95와 softmax score(c)와 energy score(d)를 보여주는 figure를 제시했습니다.

 

 

확실히 softmax score의 overconfidence를 줄여주는 것을 (a)와 (b)를 통해 알 수 있습니다.

 

그리고 다양한 데이터셋으로 실험하였을 때의 FPR95 performance를 제시하였습니다.

 

 

fine-tuning한 것과 inference 결과를 같이 report 해둔 figure도 함께 첨부합니다.

 

 


이렇게 Energy-based Out-of-distribution Detection 논문에 대한 리뷰를 마쳐보도록 하겠습니다.

 

읽어주셔서 감사합니다.

안녕하세요, KDST 김동진입니다.

 

오늘 소개해드릴 논문 “LAST LAYER RE-TRAINING IS SUFFICIENT FOR ROBUSTNESS TO SPURIOUS CORRELATIONS ICLR2023 Spotlight 선정되었습니다.

 

주요 내용은 아래와 같습니다. 

논문은 딥러닝 모델이 학습하기 쉬운 spurious correlation을 기반으로 class label 예측 하더라도 label 관련된 core feature feature extractor에서 추출되는 것을 다양한 비율의 spurious correlation이 존재하는 데이터셋들에서 실험을 통해 보였습니다또한, 저자들은 feature extractor가 core feature를 추출하더라도 모델이 class를 잘못 예측하는 이유는 classifier spurious feature 맞춰져 있다는 것을 발견하였습니다. 이러한 발견을 통해 classifier를 biasing 되어 있지 않은 데이터셋(group balanced dataset)을 통해 re-weighting 해주는 방식인 Deep Feature Re-weighting (DFR) 방식을 제안하고, 이를 통해 가벼운 학습만으로 Group robustness task에서 SOTA를 달성하였으며, ImageNet-trained model에서의 background texture 특징에 대한 의존도를 DFR 활용하여 연구하였습니다.

 

흥미로운 내용의 논문이라 다른 분들도 읽어보시면 좋을 것 같습니다.

 

감사합니다.

One paper accepted at ICCV 2023

카테고리 없음 2023. 8. 1. 08:04 Posted by KDST

올해 10월에 파리에서 열리는 ICCV 2023에 아래 논문이 채택되었습니다. 
이미지 생성 모델의 품질을 측정하는 향상된 metric(precision & recall)을 제안하는 논문입니다. 
기존의 improved precision & recall 보다는 확실히 더 나아졌다고 말씀드릴 수 있으니 관련 연구 하시는 분들은 한번 사용해 보시길 추천드립니다. 

Probabilistic Precision and Recall Towards Reliable Evaluation of Generative Models

 

안녕하세요, 학부연구생 박윤아입니다.

지난 4월에 처음으로 논문 리뷰 발표를 했었는데, 오늘 7월 21일 두번째 발표를 하게 되었습니다. 

 

이 논문의 핵심 아이디어는, Attention Similarity Knowledge Distillation (A-SKD)로 Teacher model의 attention map을 student model로 전달하여, 저해상도 이미지에서도 얼굴인식 성능을 내도록 하는것 입니다. 

attention map을 distillation할 때 '고해상도 모델의 channel과 저해상도 모델의 channel의 역할(혹은 파라미터)가 다를텐데, attention map을 바로 전달해도 되는건지' 에 대해 질문하셨는데, 답하지 못했습니다.

논문에서 CBAM attention module을 사용했다고 나와있는데, 이 논문을 통해 실마리를 얻을 수 있을것 같아 공부해볼 예정입니다. 

 

[31] Woo, S., Park, J., Lee, J.Y., Kweon, I.S.: CBAM: Convolutional Block Attention Module. Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) 11211 LNCS, 3–19 (jul 2018), http://arxiv.org/abs/1807.06521

 

 

 

A-SKD의 loss는 다음 두가지 term으로 이루어집니다. 그 중 arcface loss에 대해 자세히 다루어보려고 합니다. 

arcface loss는 addictive angular margin loss라고도 불리는데요, 각에 margin term을 추가하여 feature와 class 중심 사이의 각도가 충분히 줄어들도록 학습하게 됩니다. 

 

자세한 과정은 다음과 같습니다.(민수님이 이해에 도움을 주셨습니다 감사합니다!)

아래 식에서 j가 정답 class 일때 log~ 식은 1에 가까워지도록 학습됩니다.

그러면 s* cosine θ _j 의 값은 0에 가까워지고 θ _j는 커집니다. 그래서 input feature와 정답이 아닌 class의 대표벡터(W_j)간의 각도가 커집니다. 그러면 그 영향으로 intra class간의 각도가 작아집니다. 

 

L_acrface

 

 

여기에서 클래스마다 같은 m값을 사용하는것이 맞는지, 그렇다면 intra class들의 거리가 줄어드는것이 맞는지에 대해 질문하셨습니다. 유진님께서 m은 360/class개수로 사용된다고 답변해주셨습니다. 

 

 


실험결과

 

다양한 distillation methoddown sample 비율을 조합한 모델의 저해상도 얼굴인식 성능을 보여줍니다.
Resolution 1x 이고 Base인 모델은 teacher 모델이고 Resolution 1x 이고 Base인 모델은 student 모델입니다.
A-SKD 방법이 모든 method보다 높은 verification 성능을 보이고 있습니다.