sy00n / DL_paper_review

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

[12] Towards Open-Set Object Detection and Discovery #14

Open sy00n opened 1 year ago

sy00n commented 1 year ago

논문 링크: https://openaccess.thecvf.com/content/CVPR2022W/L3D-IVU/papers/Zheng_Towards_Open-Set_Object_Detection_and_Discovery_CVPRW_2022_paper.pdf

image 이 논문도 앞에서 본 논문들과 비슷함. 먼저 처음에 object detector로 known인지 unknown인지 detection을 수행하고(여기서의 디텍터도 faster r-cnn) unknown instances를 working memory에다 저장하고 known instances는 known memory에다 저장한다. 그리고 두번째 stage에서 unsupervised로 memory buffer로 전처리를 수행한다. 그리고 object-wise contrastive learning, constrained k-means clustering을 수행해서 새로운 카테고리르 발견한다.

Object Detector

image [12] issue에서 읽은 논문이랑 똑같이 여기서도 faster rcnn으로 위와 같은 과정으로 prototype이랑 input vector를 비교해서 유사도를 계산한다.

Open Set Classifier

그리고 open set classifier도 똑같이 energy-based model을 쓴다. 그래서 known data에는 낮은 energy value를 할당해준다.

Memory module

여기서는 듀얼 메모리 모듈을 쓴다. 하나는 working memory, 다른 하나는 known memory이다.

Object Category Discovery

k-means clustering 방법을 쓴다.

Representation learning

representation learning을 통해 더 discriminative feature를 만든다. 여기서는 수도레이블을 쓰는게 아니라 augmentation을 시켜서 augmented version은 positive pair로 해서 가까워지는 방향으로 학습하고 다른 object instances들에 대해서는 멀어지는 방향으로 학습한다.

contrastive loss는 아래 (3)와 같이 구성된다. image

Contrastive learning head부분에서 unsupervised augmentation stategy를 통해 모든 샘플들을 mixed sample로 만듦으로써 다양한 패턴을 학습하고 더 많은 학습 데이터를 확보할 수 있다.

각각의 sample queue{k}에서 query object representation q랑 linear interpolation을 통해 합치고 새로운 view k_m,i를 만든다. 결과적으로 수도레이블처럼 virtual label vi를만들어준다.

image q랑 k+는 positive sample pair이고 같은 object instance로부터의 mixing pair일 경우 virtual label은 1로 할당된다.

Novel Category labeling

constrained k-means clustering을 통해 label을 assign해준다. constrained kmeans clustering의 input으로 working/known memory object encoding이 둘 다 들어간다. 그리고 labelled object representatiion이 ground truth class에 hard-assign되도록 함으로써 기존 standard k-means clustering에서 constraint algorithm으로 변환한다. 즉, known memory의 object instances를 labelled sample로 간주한다. 그리고 각각 labelled class마다 cenroid를 다 계산한다. 이 centroid가 k-means 알고리즘에서 initial centoid가 된다. 레이블 없는 새로운 카테고리들에 대해서는 그냥 랜덤 초기화해서 출발한다.(이때는 k-means ++ 알고리즘)

(일단 아무 공간에나 중심점을 k개 찍고 시작하는 게 아니라) 가지고 있는 데이터 포인트 중에서 무작위로 1개를 선택하여 그 포인트를 첫번째 중심점으로 지정한다. 나머지 데이터 포인트들에 대해 그 첫번째 중심점까지의 거리를 계산한다. 두번째 중심점은 각 점들로부터 거리비례 확률에 따라 선택한다. 즉, 이미 지정된 중심점으로부터 최대한 먼 곳에 배치된 데이터포인트를 그 다음 중심점으로 지정한다는 뜻이다.

iteration마다 labelled object들은 pre-defined cluster로 할당되고 unknown object instances들은 최소거리에 해당하는 class로 어싸인된다. 이렇게함으로써 known class임에도 unknown으로 할당되는 문제를 줄여서 centroid update에 영향을 미치지 않도록 효과적으로 방지한다. 그리고 마지막 cluster aggison은 novel centroid만 가지고 클러스터링 한다.