sy00n / DL_paper_review

issues에 논문 요약
0 stars 0 forks source link

[13] Learning to Discover and Detect Objects #15

Open sy00n opened 1 year ago

sy00n commented 1 year ago

논문 링크 : https://arxiv.org/pdf/2210.10774.pdf

기존 object discovery 논문들은 대부분 representation learning을 위해 contrastive learning을 수행하고 k-means와 같은 clustering알고리즘을 쓰는 방식이 많았지만, 본 논문은 offline clustering 알고리즘 없이 head를 추가하는 등의 과정을 거쳐 end-to-end로 접근하는 새로운 방법론을 시도했고, 결론적으로 더 좋은 성능을 보였다는 점에서 큰 의미가 있다고 생각함. (SwAV와 접근방식이 비슷하고 Sinkhorn-Knopp algorithm을 사용했음)

Abstract

Introduction

Object class discovery는 visual pattern을 그룹핑할때 유사한 패턴(색상 또는 방향)들이 많기 때문에 어려운 task이다. Novel Class Discovery는 어느 정도 supervision을 사용해서 semantic classes를 그룹화하는 방법에 prior knowledge를 주입함으로써 data-driven manner로 잘 배치시킬 수 있다. 그러나 기존 방법들은 대부분 curated 된 데이터셋을 가정한다. 여기서 object of insterests는 pre-cropped되고 semantic class들은 fairly balanced 되어 있다. 반면에 본 논문에서는 raw, unlabeled, uncurated data에 대해 novel class discovery와 localization을 동시에 다룬다. 이미지에는 항상 labeled, unlabeled class가 섞여 있는 더 어려운 셋팅을 다룬다.

전체적인 과정을 간단하게 요약해보면,

Contribution

(i) pre-localize하지 않고 object가 rougly centered되었다는 가정 없이 (strong photographer bias 없이) in-the-wild using standard object detection datasets으로 novel object discovery, localization을 수행한다.
(ii) We propose a simple yet effective and scalable method that can be trained end-to-end on the unlabeled domain.

Method Overview

image two-stage Faster/Mask R-CNN을 기반으로 해서 label이 있는 dataset에 대해서는 supervised manner로 학습해서 각 localized RoI 마다 object-centered feature representation이 만들어진다. 그러면 novel class를 discover하기 위해 간단한 방법으로 feature space상에서 clustering을 수행할 수 있다 (k-means). 그런데 novel instance에 대해서는 하나의 background class로 분류(collapse문제)되는 방향으로 학습되었기 때문에 novel instances에 대해 not discriminative enough하기 때문에 다른 접근법이 필요하다.

따라서 본 논문에서는 source domain, target domain의 region proposal을 모두 end-to-end로 jointly training시킨다.

image

Supervised training on the source domain(Labeled)

먼저 self-supervised backbone training on ImageNet으로 R-CNN backbone을 initialize한다. 그리고 source (labeled) domain을 학습시키는데 C^k개의 known class supervision을 사용한다. (80 COCO classes)
Shared feature extractor(backbone)이랑 1) class-agnostic RPN, 2) class-agnostic box regression head, 3)classification head for the categorization of C^k classes를 학습시키는 데 labeled data를 사용한다. 각각을 좀더 구체적으로 보면 1) RPN을 학습시켜서 각 이미지마다 class-agnostic proposal를 예측하고 2) RoIAlign을 통해 back본으로부터 RoI feature를 crop하고 최종 예측을 얻는다. 3) class-agnostic box head를 학습시켜서 각각의 RoI를 K class 중 하나로, 또는 background class로 분류한다.

loss는 아래와 같이 standard R-CNN loss를 쓴다. image

Discovery on the target Domain(Unlabeled)

먼저, weight matrix에서 background class를 버려서 primary (known) classification head를 수정한다. 그리고 RoI box features 끝에 secondary(novel) classification head를 붙였다.(이 head는 MLP랑 linear classification layer로 구성되어 있음).
이 단계에서 classification heads만 빼고 모든 layer를 freeze시키고 아래 loss와 같이 self sup classification loss 'L_ss'랑 supervised classification loss 'L_cls'를 써서 classification head를 jointly train 시킨다. image 위 식에서 알파는 supervised loss scale coefficient 하이퍼파라미터여서 알파를 downscale할수록 known class에 대해 weight forgetting을 완화하는 반면 알파를 크게 줄 경우 RoI를 known class로 분류할 때 unwanted bias를 유도할 수 있다.

이 때 Classification loss는 둘다 CE loss이다. L_cls는 provided label로 학습되는 반면 L_ss는 pseudo-label로 학습된다.

간단히 말해 이 loss는 네트워크가 모든 region proposal를 multiple transformation 하에서 일관되게 분류하도록 하고, 중요한 것은 마지막 배치에 대한 predicted class assignments의 marginal distribution이 long-tail distribution을 따른다는 제약 조건 하에서 라는 것이다. annotation-matched region proposal에 대해서만 supervised loss를 계산한다. 이렇게 joint training objective를 통해 네트워크는 known object를 분류하는 기능과 함께 RPN으로 샘플링된 지역에 존재하는 다양한 클래스를 구별하는 기능 또한 갖도록 학습하게 되는 것이다.

Secondary classification head

discovery 단계에서 box features f^이 frozen되면, several non-linear projection layer를 거친다. image 여기서 g^n은 MLP+ReLU 구조이다. 이렇게 transformation을 거침으로써 RoI box features f^에 영향 없이 novel class 구별을 위한 disentangle feature를 학습한다. projection feature 끝부분에서 cosine classification layer를 써서 novel-class logits를 구한다. image 여기서 I는 predicted novel-class logits이다.

Self-Supervision via Online Constrained Clustering

Self-sup을 위해 online model training 동안 constrained clustering을 통해 pseudo-labeling을 수행해서 각 RoI마다 soft pseudo-label을 할당한다. 모든 input image의 RoI에 대해 pseudo-label Q을 생성해준다. (SwAV처럼) 이 수도라벨 q를 supervisory signal로 사용해서 CE loss Lss를 학습한다.

Pseudo Label 생성 시 standard clustering method(k-means)를 쓰는 방법을 생각해볼 수 있는데, offline clustering 방법은 학습 시간도 오래걸리고 unstable한 결과를 보였다. 대신에, 우리는 최근 self-supervised representation learning, minimize clustering energy function online during the mode training을 따른다. (cross entropy loss) image

즉, 현재 network weight에 기반해서 constrained clustering method를 통해 pseudo label q를 생성하고, p^을 optimizing해가는 과정에서 weight를 업데이트해간다.

class pseudo-label를 생성하기 위해 먼저 target clusters의 marginal probability distribution(prior distribution)을 선택한다. 경험적으로, non-symmetrical log-normal distribution을 선택했다. 이 분포는 right-skewed 되어있기 때문에 long-tail 모델링에 적합했다. q는 choson marginals에 가깝게 매치되어야 하고 E를 최소화해야 한다. 기존 연구에서는 이를 constrained optimization문제로 보고 fast online Sinknorn-knopp algorithm을 사용해서 optimal transport problem으로 해결할 수 있음을 보여주었다. 본 논문에서도 이 방식을 차용했다. image

Memory module

pseudo label을 더 잘 만들기 위해서 메모리 모듈을 둔다. small set feature를 쓰면 noisy cluster assignments될 수 있기 때문이다. 1000 class 이상을 discover하는 시나리오를 위해, Memory module을 두고 RoI box features를 저장한다. queue로 구현해서 각 iteration 마지막마다 oldest set의 sotred feature를 현재 배치로 대체한다. pseudo-labeling 과정에서 extended set의 feature들을 Sinkhorn algorithm에 통과시킨다. 특히, 현재 배치의 RoI feature extract를 한 후 메모리 모듈에 저장된 feature랑 concat하고 logit을 계산해서 Sinkhorn algorithm에 넣는다. image 메모리 feature로부터 만들어진 수도라벨은 버리고 현재 배치 proposal에서 생성된 라벨만 쓴다. 즉, 이 메모리 모듈의 역할은 오직 현재 배치의 수도 라벨 퀄리티를 향상시키기 위함으로 쓰인다.

Swapping multi-view cluster assignments

image 사진 출처: SWAV paper

self sup 방식에서는 같은 이미지에서 다른 augmentation이 적용된 이미지를 생성하고 그들끼리는 가깝게, 다른 이미지로부터 생성된 augmentated image와는 멀게 학습하는 것이 기본적인 방식이다. 하지만 모든 instance끼리 비교하기는 불가능하기에 batch안의 instance끼리 비교하거나 clustering을 통해 instance discrimination을 수행한다. SwaV라는 논문에서는 같은 이미지로부터 다른 augmentation을 적용한 code끼리의 consistency는 유지하면서 online 방식으로 code를 계산한다. 즉, k prototype set에 매시켜 code qt와 qs를 계산한다. loss는 prototypes에 softmax를 취해서 얻은 확률과 code간의 CE loss이다. image

본 논문에서도 마찬가지로 이미지 한장 당 two augmented views를 생성한다.

위 사진처럼 하나의 이미지에 다른 augmentation을 적용해서 인코더에 통과시켜 representation을 얻는다. 그리고 z를 trainable한 prototype matrix를 통해 q,q'를 생성한다. 이 때 다른 aug를 적용했더라도 한 이미지에서 나온 code이기 때문에 swap해도 z로 q'를 예측할 수 있어야 하고 z'으로 q'을 예측할 수 있어야 한다는 아이디어이다. multiple augmentation을 통해 additional supervisiory signal을 사용한다. 그리고 각각의 view마다 Sinkhorn algorithm을 통해 각각 pseudo-label을 생성한다. augmentation에 대한 feature invariance를 강화하고 proposal의 semantic similairty를 캡쳐하기 위해 두 view의 pseudo label을 swap하고 E loss를 계산한다. image

그래서 total loss는 두 view loss의 평균으로 계산된다. 각각의 view마다 각각 다른 memory module을 쓴다.

Inference and Evaluation

Inference시에는 각 이미지마다 RoI를 뽑고 localization refinement, class prediction head에 통과시킨다. image 그리고 두 classification head로부터 나온 logit을 concatenate해서 k known, N novel semantic classes의 output class p probabilities를 구한다.

Semantic Class assigments

이 방법론은 novel class에 대해 오직 분류만 수행한다. class ID는 직접적으로 class로 매핑되지 않기 때문에 predicted class ID를 groud truth에 매핑해야 한다. 이를 위해 기존 연구들의 전략을 따른다. 네트워크를 학습하면 evaluation set의 GT annotation에 대한 분류 예측이 만들어진다. 그런 다음 hungarian 알고리즘을 사용해서 GT 레이블과 valication class 사이의 1:1 매핑을 구한다. 이때 GT class에 매핑되지 않은 predicted class의 instance는 무시한다. 그 다음, 생성된 매핑을 적용하고 standard R-CNN post processing /evaluation으로 inference를 수행한다.

Experiments

image Table3을 보면 projection MLP ablation이 an MLP feature projector on top of RoI box features for novel head classification 효과를 보여주고 있다. 그리고 swap의 효과도 보여주는데 생각보다 큰 차이는 없었다. (전체적으로 0.18정도, 그리고 novel에 대해서는 오히려 떨어짐) image image