sy00n / DL_paper_review

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

[11] Towards Open World Object Detection #13

Open sy00n opened 1 year ago

sy00n commented 1 year ago

if논문 링크: https://openaccess.thecvf.com/content/CVPR2021/papers/Joseph_Towards_Open_World_Object_Detection_CVPR_2021_paper.pdf

Abstract

Open World Object Detection(OWOD) task에서는 아래와 같이 크게 2가지를 수행한다. 1) unknown instances를 explicit supervision 없이 "unknown 이다." 라고 특정한다. 2) unknown categories에 대해 forgetting 없이 incremental learning 한다. 즉 open set + incremental learning이라고 보면 된다.
본 논문에서는 contrastive clusteringenergy based unknown identification을 통해 OWOD 문제를 푼다.

추가적인 방법론적 노력 없이도 SOTA를 달성하면서 unknown instances를 indentifying하고 characterizing하는 것이 incremental object detection setting에서 confusion을 줄이는 데 도움이 됨을 발견했다.

Introduction

기존의 object detection에서는 모든 class들이 training 단계에서 이미 주어졌다는 강력한 가정이 있지만 실제로는 저 가정이 맞지 않다. 실제로는 test 시에 unknown class를 포함할 수 있고, unknown class에 대한 정보(라벨)이 있을 때 모델은 새로운 클래스를 점진적으로 배워갈 수 있어야 한다.

image fig 1은 기존 연구들의 흐름과 본 연구의 위치를 보여주고 있다. ( 본 연구는 Difficult problem인 Detection을 다루면서 Open Set Learning, Incremental Learning을 모두 가능하게 하는 Open-world Detection을 수행하는 연구임. )

Key Contribution

Open World Object Detector

OWOD를 잘 하려면 명시적인 supervision없이도 unknown instances를 식별할 수 있어야 하고 스크레치부터 학습하지 않고도 이전 instances들을 잊어버리지 않고 새로운 instances를 찾아낼 수 있어야 한다.
본 논문에서는 latent spaces 상에서 클래스들을 확실히 분리시키는 방법의 효과에 대해 크게 두 가지 가정을 한다.

  1. unknonw instance의 feature representation은 known instance들과 어떻게 다른지를 식별하는데 도움이 된다.
  2. 이전에 존재하는 class들의 latent space와 overlap되지 않기 때문에 forgetting 없이 incrementally learning을 수행하는 데 도움이 된다.

이 가정들을 바탕으로 contrastive clustring 방법론을 제안한다. 그런데 contrastive clustering을 하려면 뭐가 unknown instance인지를 알 수 있는 supervision이 필요하다. 따라서 본 논문에서는 Region Proposal Network를 통해 unknown instance에 pseudo-label을 달아준다. 이 auto-labeled 방법을 통해 논문에서 제안하는 energy based classfication head가 known과 unknown을 구별하게 해준다.

image fig2를 보면 전체적인 과정을 보여준다. 백본 detector로 2 stage 모델인 Faster R-CNN을 썼다. (one stage YOLO 보다 좋았기 때문)

첫 번째 stage에서, class-agnostic Region Proposal Network(RPN)을 통과하고 두 번째 stage에서 각 proposed region마다 bounding box coordinates를 분류하고 조정한다. RoI head에 있는 residual block을 통해 생성된 features는 contrastive learning을 통해 클러스터링 된다. RPN과 classification head는 각각 auto-labeling, unknown detection을 잘 하게 되는 방향으로 학습된다. 델타는 얼마나 유사한지/ 유사하지 않은지를 의미힌다. 이 loss를 최소화해가면서 latent space상에서 class separation을 하게 된다.

근데 이 때 class prototype은 어떻게 구할까? end-to-end로 학습하는 과정에서 stochastic gradient descent로 weight를 incremental하게 업데이트 해 갈 때마다 feature가 바뀌면 class prototype도 같이 incremental하게 업데이트 되어야한다. 그래서 이 features들을 저장하기 위해서 fixed length queue qi를 써서 class 별로 feature를 저장한다. (Fstore ={q0 · · · qC})

4.1 Contrastive Clustering

class seperation을 위해 같은 class끼리는 가깝게 먼 class끼리는 게 학습한다. image contrastive loss는 식 (1)과 같다. 각 known class마다 prototype vector p_i를 구한 다음, OD backbone에서의 intermediate layer feature f_c와 비교한다. D는 어떤 distance function이든 다 올 수 있다.

image 수도 코드를 보면 clustering loss를 계산하는 과정에서 어떻게 class prototype을 만들어가는지 알 수 있다. 처음에 Ib(특정 횟수번 만큼 반복) iteration이 완료된 후에만 loss를 계산하기 시작한다. 이렇게 하면 초기 feature embedding 자체로도 class 정보를 encoding 할 수 있다. 모든 Ip iteration을 반복한 후, 새로운 class prototype set P_new가 계산된다(8번째 라인). 그 다음 모멘텀 파라미터 뉴로 P랑 P_new에 가중치를 줘서 업데이트 한다. 이렇게 프로토타입은 점진적으로 이전 context를 추적해갈 수 있다.

4.2 Auto-labeling Unknowns with RPN

clustering loss를 계산할 때 input feature vector랑 prototype vector랑 비교한다. (c ∈ {0, 1, .., C} where 0 refers to the unknown class). 근데 이렇게 할려면 unknown에 대한 실제 class label을 지정해줘야 하는데 이걸 일일히 라벨링하는것은 현실적으로 불가능하다. 대신, 이미지의 일부 object에 potential unknown object라고 automatically labeling해준다. 이를 위해 RPN을 쓴다. RPN은 class agnostic하다.

이미지가 들어오면 RPN은 foreground, background에 대해 각각 bounding box 예측 셋을 만들게 된다. 이 때 high objectness score를 가지면서 ground-truth object와는 overlap되지 않는 그런 애들을 potential object로 달아준다. 즉, objectness scores로 sort한 다음에 top-k background region proposals를 select한다. 이런 단순한 heuristic 방법이 좋은 성능을 달성해줬다.

4.3 Energy Based Unknown Identifier

Energy based model(EBM)처럼 energy function E(F,L)을 학습한다. F는 observed variables이고 L은 possible set of output variables이다. (single scalar 값임.) EBM을 통해 in-distribution data에 대해서는 low energy 값을 주고, 반대로는 높은 값을 주는 방식으로 unknown measure를 수행한다.

그 주에서도 특히 Helmholtz free energy formulation을 쓴다. image image

위 notation 들을 활용해서 본 논문 상황에 맞는 free energy를 아래와 같이 정의했다. image 식 (4)처럼 faster R-CNN classfication head에서 energy function으로 자연스럽게 변환할 수 있다.
Contrastive clustering을 통해 latent space상에서 feature들이 확실히 분리되었기 때문에 energy level도 known/unknown이 뚜렷하게 구별됨을 아래 fig3에서 확인할 수 있다. image weibull distribution에 fitting시킨 모습이다.

Alleviating Forgetting

unknown을 식별하고 나서 중요한건 새로운 클래스를 학습할 수 있어야 한다. 대부분의 이전 연구들은 이 단계를 거치지 않았다. 그냥 단지 new class instances를 학습하는 방법은 이전 class에 대해 catastrophic forgetting 한다는 문제가 있다. 이전 연구들이 이런 forgetting을 피하기 위해서 parameter regularization ,exemplar replay, dynamically expanding networks, meta-learning 등을 활용했다.
우리는 exemplar replay를 활용한다. balanced set을 저장하고 이에 대한 각 incremental step을 거친 후 모델을 fine-tuning 한다. 각 point에서 각 class에 대한 최소 N_ex instances가 exemplar set에 있는지 확인한다.

Experiments and Results

image 데이터 셋팅은 table1처럼 구성했다. task T1에서는 Pascal VOC(known class), 나머지 task들에서는 MS-COCO를 그룹핑하는데 3개로 쪼개서 incremental하게 셋팅했음.

image 너무 많이 늘려가면 성능 떨어짐.

image image image