안녕하세요. 오늘 리뷰할 논문은 CVPR 2024에서 발표된 open-set TTA 분야의 논문입니다.
실험을 classification 에서만 진행하긴 하지만 open-set 키워드에 이끌려 한번 읽어보게 되었습니다.
리뷰 바로 시작하도록 하겠습니다.
1. Introduction
미리 학습된 모델이 real-world로 deploy 된 상황 속에서, 모델이 마주할 수 있는 distribution shift에는 크게 2가지 유형이 존재합니다.
우선 일반적인 UDA 및 TTA 연구들에서 다루는, style/domain과 관련된 i) covariate shift 입니다. 예를들어 clean 날씨 상황에서 학습된 모델을 fog, snow, rain 등의 날씨 상황에 adaptation 하는 경우가 이에 해당합니다.
다음으로는 ii) semantic shift 입니다. 이름에서도 알 수 있다시피 source 상황에서는 보지 못한 unknown classes 로의 shift 상황을 고려하며, out-of-distribution (OOD) detection, open-set recognition 등의 연구에서 해당 문제를 다루고 있습니다.
본 논문에서 언급하길 앞선 대부분의 TTA 연구들에서는 semantic shift는 고려하지 않은 채 covariate shift 만을 다루고 있다고 합니다. 하지만 real-world application 관점을 고려했을 때 test 상황에서 등장할 수 있는 여러 상황에 대해 강건한 scene understanding 을 수행하기 위해선, semantic shift 에 대한 모델링도 필연적으로 수행되어야 합니다.
저자는 위 figure를 통해 기존 연구들이 semantic shift, 즉 open-set 상황에서 TTA 를 효과적으로 수행할 수 없다고 성능적으로 보이고 있습니다. 위 방법론들 중 OSTTA는 ICCV 2023에 발표된 논문으로 open-set 상황을 고려한 TTA 논문이긴 합니다만 위 figure의 실험 세팅에서는 성능 하락이 발생했네요.
아무튼 위 figure를 통해 기존 TTA 방법론(TENT, EATA, OSTTA)에 저자가 설계한 기법인 UniEnt/UniEnt+ 를 적용하였을 때 open-set 상황에서의 TTA 성능이 향상된다고 주장합니다.
아래 그림을 통해 covariate shift와 semantic shift에 대한 직관적인 이해가 가능합니다.
위 그림에서 y축 위쪽 방향으로는 covariate shift 상황을, x축 우측 방향으로는 semantic shift 상황을 나타냅니다. 직관적으로 알 수 있다시피 covariate shift 에서는 이미지 전체의 style 요소가 변경된 것을, semantic shift 에서는 완전히 새로운 class 가 등장하는 것을 확인할 수 있습니다.
저자들이 주장하길 기존 대부분의 TTA 연구들은 위 그림 속 빨간 영역에 해당하는, covariated shift만을 고려한 Closed-Set TTA 를 수행한다고 합니다. 반면 본 논문에서는 이에 semantic shift 까지 고려한 Open-set TTA를 수행함으로써 더 넓은, 파란 영역에 해당하는 TTA가 가능합니다.
이와 관련된 용어 정리를 조금 하자면, 위 그림 속 Covariate-shifted In-distribution 을 csID 라고 칭하겠습니다. 이는 class는 동일하지만, style/domain 이 다른 상황을 의미하죠.
또한 Covariate-shifted Out-of-distribution 을 csOOD 라고 칭하겠습니다. 이는 class와 style/domain 이 모두 상이한 상황을 의미합니다.
본 논문에서 저자들은 csID 뿐 아니라 csOOD 까지 커버하는 open-set TTA 기법을 설계하고자 합니다. 이를 위해 우선 distribution-aware filter 를 제안합니다. test 단계에서 실시간으로 들어오는 입력 sample 이 csID 인지 csOOD 인지를 구분하기 위한 filter라고 생각하시면 됩니다.
그리고 판별된 csID와 csOOD에 대해 효과적으로 optimization (entropy minimization) 을 수행하기 위한 unified entropy optimization framework (UniEnt) 를 제안합니다. method 단락에서 자세히 설명 드리겠지만 csID sample 에 대해서는 entropy minimization을 수행하며, csOOD sample에 대해서는 entropy maximization을 수행합니다. 제안된 UniEnt 기법은 타 TTA 방법론에 plug-in 방식으로 부착이 가능합니다.
마지막으로는 UniEnt 를 조금 개선(?)한 UniEnt+ 를 설계하는데, 이에 대해서도 method에서 설명드리겠습니다.
2. Method
2.1. Preliminaries
대부분의 TTA 방법론에서는 앞선 TENT 에서 제안한 entropy minimization 전략을 목적 함수로 채택합니다.
아래 L_t 중 앞쪽 term 이 entropy 에 해당합니다.
또한 뒤쪽 term은 marginal entropy 를 의미하며, 모든 input sample을 same class로 예측해버리는 model collapse 를 예방하기 위한 loss term 입니다.
- B_t: mini batch at timestamp t
- f_{\theta_t}: adaptation model at timestamp t
2.2. Motivation
test label을 알 수 없는 TTA 세팅 속, 앞선 연구들은 entropy minimization (혹은 self-training) 전략을 주로 채택하였습니다. 하지만 introduction에서도 언급했다시피 대부분은 closed-set 상황만을 다뤘기에, open-set 상황에서는 performance degradation이 발생합니다.
저자들이 언급하길 open-set 에서의 degradation은 아래 2가지 이유에 의해 발생한다고 합니다.
- 입력으로 들어오는 unknown class 에 의해 잘못된 normalization statistics (in batch norm) 가 예측됩니다. 이로 인해 잘못된 방향으로의 model update 가 수행되게 되죠.
- 기존 closed-set 상황에서의 entropy minimization 전략은 예측의 confidence 를 높이는 방향으로 학습이 잘 진행되었습니다. 하지만 unknown class에 대해서 동일한 entropy minimization을 수행할 경우 오히려 model confidence를 destroy 한다고 언급합니다.
(위 2가지 가정이 꽤나 핵심적으로 보여집니다. 물론 직관적이긴 합니다만 가정을 증명하는 실험이 딱히 없는것은 조금 아쉽네요.)
2.3. Distribution-aware Filter
open-set TTA 상황 속 입력으로 들어오는 test sample 로는 앞선 introduction에서 설명 드렸다시피, csID data와 csOOD data 입니다. 이를 기반으로 open-set data distribution을 수식적으로 모델링하면 아래와 같습니다.
csID와 csOOD 의 비율에 해당하는 \pi 는 0~1 사이의 범위를 가지며, 둘 사이의 조합으로 open-set TTA의 전체 distribution이 정의됩니다.
그런데 입력으로 들어오는 test sample 이 known class (csID) 인지 unknown class (csOOD) 인지를 어떻게 구분하여야 할까요? 실시간으로 sample이 들어오다 보니 gt가 당연히 없기 때문에, 추가적인 전략을 통해 input test sample을 판별하여야 하며 이 부분이 open-set TTA에서 1차적으로 핵심적인 부분이라고 개인적으로는 생각합니다.
저자는 이를 위해 csOOD score 를 설계하여 input test sample이 csOOD 에 해당하는 정도를 정량화하였습니다.
g_{\theta_0} 는 timestamp 0에서의 feature vector, 즉 source-pretrained model로 부터 출력되는 input test sample t 의 feature vector 입니다. 또한 p_c 는 source-pretrained model로 부터 사전 구성한 class c의 source domain prototype을 의미합니다.
feature vector g_{\theta_0}와 class-wise prototype vector p_c 사이의 내적을 각 norm 값으로 나눠 줌으로써 두 vector 사이의 cosine similarity 값을 계산할 수 있고, 해당 값을 max로 보내는 (즉 cosine 값 = 1, 각도 = 0) class c를 찾게 됩니다. cosine 값이기 때문에 -1~1 의 범위를 가지는데 이를 min-max normalization 연산 v() 를 통해 0~1 사이의 범위로 바운딩시킵니다.
결과적으로 위 csOOD score S(x) 가 높다는 것은 기존 source prototype 과의 similarity 가 높기 때문에 csOOD data인 확률이 낮다는 것이 됩니다. 반비례 관계이죠.
부가적으로 아래 figure 결과를 통해 설계한 csOOD score S(x) 가 실제로 csID와 csOOD 를 잘 판별/구분하고 있음을 보여줍니다.
csID(빨간색) data와 csOOD(파랑색) data 에 대해 csOOD Score S(x) 별 전체 분포를 나타낸 figure 입니다. 평균적으로 봤을 때 csID data는 상대적으로 높은 score를, csOOD data는 상대적으로 낮은 score를 보이고 있습니다. TTA 과정 속 test gt label 없이도 해당 score function을 통해 어느정도 csID와 csOOD 판별이 가능함을 시사합니다.
위 둘을 구분하는 optimal threshold를 선정하기 위해, 저자는 위 Score S(x) 를 Gaussian mixture model (GMM) 으로 모델링 합니다. gaussian distribution 의 수는 당연히 2가 되겠죠. 아래와 같습니다.
위 확률 모델링은 두 gaussian distribution의 조합(mixture)으로 구성되며, 두 distribution의 비율을 나타내는 \pi_x 는 score S(x)가 csID 에 해당하는 확률을 뜻하게 됩니다. 그리고 Gaussian mixture model (GMM) 을 최적화 하기 위해 주로 사용하는 반복적 알고리즘인 EM algorithm을 통해 \pi_x 를 구할 수 있다고 합니다.
입력 test sample x로 부터 구해진 \pi_x는 해당 sample이 csID 인 확률을 뜻하며, 이를 통해 timestamp t에서의 mini batch B_t 를 csID와 csOOD 로 split 할 수 있습니다.
\pi_x가 0.5 이상인 경우 csID data로, 그 반대일 경우 csOOD data로 판별하는 것을 확인할 수 있습니다.
2.4. Unified Entropy Optimization
UniEnt
2.3 절의 Distribution-aware Filter 를 사용해서 optimization 을 수행하는 단계입니다.
위 filter에 의해 csID 로 판명난 test sample 에 대해서는 앞선 TTA 연구와 동일하게 entropy minimization 을 수행합니다. 그렇다면 csOOD sample에 대해서는 어떻게 optimization을 수행할까요?
introduction에서도 말씀드렸다시피 csOOD sample에 대해서도 동일하게 entropy minimization을 수행할 경우 모든 sample에 대해 동일한 class로 예측해 버리는 collapse 현상이 발생한다고 합니다.
이를 해결하기 위해 저자는 앞선 anomaly/OOD detection 연구들을 참고합니다. model collpase 를 해결하기 위해 csOOD sample에 대해서는 오히려 entropy를 maximization 하여 model의 예측이 collpase 되지 않고 오히려 모든 class 에 대해 균등한(uniform) 분포를 가지도록 합니다.
이를 반영한 수식은 아래와 같습니다.
csOOD sample에 대한 entropy maximization loss의 반영 비율을 의미하는 \lambda_1의 경우 {0.1, 0.2, 0.5, 1.0} 의 값 중 실험적으로 선택하였고, 0.5가 제일 높은 향상폭을 달성합니다.
UniEnt+
위 UniEnt 에서는 distribution-aware filter를 통해 입력 test sample이 csID인지 csOOD 인지를 O/X 문제로 rough 하게 구분하였습니다. 저자는 이에 대해 noise 가 조금 반영될 수 있다고 합니다.
따라서 위처럼 이렇게 hard하게 0/1로 구분하는 것이 아니라 앞서 구한, test sample이 csID 인 확률값 \pi_x 를 사용하여 soft 한 방식으로 weight 을 부여하게 됩니다. 아래 수식처럼 말이죠.
3. Experiment
open-set TTA 평가를 위한 source/target 세팅은 아래와 같습니다.
<source → target>
SVHN-C → CIFAR-10/100-C
ImageNet-O-C → Tiny-ImageNet-C
TTA 수행 시 동일한 수의 csID sample과 csOOD sample로 한 mini-batch를 구성한다고 합니다.
아래 실험 table을 보면 아시겠지만 평가지표를 크게 4가지로 구성하여 리포팅하였습니다.
<Acc>
우선 classification 정확도에 해당하는 Acc 입니다. 해당 지표를 통해 csID data 에 대한 model의 adaptation 능력을 평가합니다. 실험 table에 표기되는 Acc는 csID data 에 대해 평가한 Acc 입니다.
<AUROC>
adaptation 을 수행하는 모델이 csOOD data를 얼마나 잘 찾는지를 평가하기 위한 지표입니다. csOOD data의 판별 유무에 대해 TP/FP 등의 관계를 정의할 수 있고 이를 통해 아래와 같은 ROC Curve를 구성할 수 있습니다. 이 ROC 아래 영역을 AUC 라고 하며 0~1 (혹은 0~100) 의 값을 지닙니다. (아래 Figure의 AOC 는 오타입니다)
<FPR@TPR95>
AUROC와 마찬가지로 csOOD data와 관련된 지표이며, csID samples의 true positive 비율이 95%일때 csOOD samples의 false positive 비율을 의미합니다.
<OSCR>
open-set classification rate의 줄임말로, csID 의 분류 accuracy와 csOOD 의 판별 accuracy 사이의 trade-off 관계를 모델링한 평가 지표입니다. 아래 논문에서 제안된 지표입니다.
(NIPS 2018 – Reducing network agnostophobia)
첫 실험으로 SVHN-C → CIFAR-10/100-C 로의 open-set TTA 실험입니다. 비교군으로는 크게 entropy-free methods (Source, BN Adapt, CoTTA) 와, entropy-based methods (TENT, EATA, OSTTA) 가 있습니다. 이 방법론들 중 OSTTA 만이 open-set 상황을 고려한 방법론이고, 나머지는 모두 closed-set setting 을 위해 설계된 TTA 기법입니다.
intro 와 method 에서 반복적으로 언급했던 말이 있습니다. 이전 closed-set 방법론을 open-set TTA 상황에 적용했을 때 unknown class (open-set) 에 대한 entropy를 단순히 minimization 하는 것은 오히려 model confidence 를 감소시키고 normalization statistics가 unreliabel 해지므로 결론적으로 model collapse 가 일어난단 것이였죠.
위 table에서 entropy-based method인 TENT, EATA 의 경우 TTA 를 수행했음에도 불구하고 Source pretrained 이후 아무런 기법을 적용하지 않은 Source 보다도 성능이 degradation 된 것을 볼 수 있습니다. 또한 OSTTA는 open-set 에 대한 고려를 했음에도 불구하고 AUROC, OSCR 지표에서 Source 보다도 낮은 성능을 보인것으로 보아 효과적으로 open-set 에 대한 고려를 하지 못했음을 주장합니다.
반면 이런 entropy-based 기법에 저자들이 설계산 UniEnt/UniEnt+ 를 적용할 경우 Acc도 성능 향상을 이뤘지만, 특히 csOOD data 를 고려한 평가 지표에서 큰 폭의 성능 향상이 달성된 것을 확인할 수 있습니다.
SVHN-C → CIFAR-10/100-C 에서의 각 loss term 별 향상폭을 분석한 실험입니다.
csID data에 대한 entropy를 minimization 하는 loss인 L_{t,csID}를 적용할 경우 모든 지표에서 성능이 향상되었고, 특히 csID data의 Acc 평가 성능에서 향상 폭이 꽤나 큰 것을 확인할 수 있습니다.
반면 csOOD data에 대한 entropy를 maximization 하는 loss인 L_{t,csOOD}를 적용할 경우 Acc는 이전 대비 아주 조금 하락하긴 하네요. 다만 csOOD data 와 관련된 평가 지표들이 대폭 향상되었습니다.
SVHN-C → CIFAR-10-C 에서의 unknown classes의 수에 따른 성능을 비교한 표입니다.
TENT 의 경우 unknown classes의 수가 늘어남에 따라 성능의 변화폭이 큰 반면, 자신들이 제안한 방법론을 추가했을 때에는 변화폭이 작고 더 안정적이라고 주장합니다.
(TENT에서 수가 늘어남에 따라 성능이 쭉쭉 떨어지는(?) 것을 기대해는데 그렇지는 않네요)
마지막으로 csID 와 csOOD 에 대한 T-SNE 결과입니다. 위 결과에서 노랑색에 해당하는 것이 unknwon class인 csOOD samples 를, 그리고 나머지(red→blue)에 해당하는 것이 known class인 csID samples 를 나타냅니다.
(a), (b)를 비교했을 때 L_{t,csID} 만 적용하였을때도 csID와 csOOD 가 꽤나 잘 구분이 되는 것을 확인할 수 있습니다. 이후 (c), (d)로 나아갈수록 조금 더 효과적으로 두 종류의 samples를 잘 구별하게 되네요.
오늘은 open-set 관점이 적용된 classification 분야를 위한 online TTA 논문을 읽어보았습니다.
method적으로 막 대단하게 없다고 느껴지실수도 있는데, 저는 test gt 가 없는 상황 속에서 known과 unknown class를 구분하기 위한 정량적 지표를 설정하고 그 합당성을 증명해 나가는 과정들이 꽤나 탄탄하고 참신했다고 생각합니다.
그럼 리뷰 마치도록 하겠습니다. 감사합니다.
안녕하세요 권석준 연구원님 좋은 리뷰 감사합니다.
현재 집중하고 있는 task가 real world 에서의 emotion recognition인지라 TTA 분야에 관심이 생겨 읽어보게 되었습니다.
해당 분야에 대해 많이 알지는 못해서 몇 가지 기본적인 질문을 드리고자 합니다.
본 방법론의 핵심적인 부분은 기존 클래스와의 코사인 유사도를 바탕으로 id와 ood를 구분하는 것이며, 여기서 ood로 판명된, 즉, unknown 클래스의 test sample들은 optimize 시 entropy를 최대화하여 기존 model의 모든 class 에 대해 균등한 분포를 가지도록 함으로써 collapse를 방지하는 것으로 이해하였습니다.
방법론의 전체적인 내용은 어느 정도 이해가 되었으나, 실험 부분에서 개인적으로 궁금한 점이 있는데요, id와 ood가 별도의 metric인 ACC, AUROC로 평가되고, 이들의 trade-off를 나타내는 mertic이 별도로 존재하는데 일반적으로 TTA의 성능을 평가할 때는 어떤 metric을 기준으로 보는지 궁금합니다.
댓글 감사합니다.
방법론에서 이해하신 부분은 맞습니다.
추가적으로 metric에 대해 질문주신 부분에 대해서 설명을 드리자면 open-set TTA가 아닌 일반적인 TTA에서는 그냥 단순히 task metric 하나만을 이용합니다. Task metric이라 함은 classification TTA에서는 accuracy (or error rate), segmentation 이라면 mIoU 가 되겠지요.
감사합니다.