-
Open-vocabulary Object Detection via Vision and Language Knowledge DistillationContribution 세미나 2024. 4. 17. 09:43
ICLR 2022, 370회 인용

VLM 모델을 object detection에 어떻게 활용하는지 base가 되는 논문
(prompt learning으로 OD를 하는 논문의 ref 논문)ViLD

목적
1. Detector에서 사용되는 이미지 feature값을 기존 VLM의 text feature와 어떻게 align을 시키는게 효과적인지 연구
2. Base class로 학습한 모델이 novel class에서 잘 동작할 수 있는지 연구 (기존 VLM generalization 성능 유지)Contribution
: Knowledge distillation을 적절하게 사용기존 방식
RCNN 컨셉처럼, 모델에서 RPN을 통해 후보군이 나오면 각각 후보군에 대한 이미지를 crop하여 CLIP에 통과시켜 class를 계산
즉 후보군 개수에 비례해서 CLIP 연산이 필요, 매우 비효율적임
Vanilla two-stage detector: Mask R-CNN 설명
ViLD-text
Text에 대한 knowledge distillation은 결국 CLIP의 text embedding 정보가 detector에서 나온 vision embedding 정보와 align이 되도록 학습
CLIP vision embedding 정보와 dimension을 맞춰주기 위해 중간에 projection layer 사용
background에 대한 class도 추가
다만 단순하게 class name에 background를 추가하는건 negative image를 잘 표현하지 못하기 때문에 해당 class에 대해서만 learnable vector로 대체
ViLD-image
Image에 대한 knowledge distillation은 결국 CLIP의 image embedding 정보와 detector에서 나온 vision embedding 정보를 align
(CLIP의 image embedding 정보를 따라가면 기존 CLIP이 가지고 있는 generalization 성능을 유지할 수 있다고 생각)

특이한 점은 bounding box에서 1x, 1.5x에 해당하는 영역에 대한 이미지의 평균 vision embedding 정보를 KD target으로 사용
(region CLIP을 쓰면 굳이 이렇게 안해도 될듯..)Total loss

Model ensemble

앞서 학습한 모델이 novel class에 대해서 좀 더 잘 동작하려면
ViLD-text로 나온 prediction과 실제 CLIP에서 나온 prediction과의 ensemble을 적용해보자
즉 inference 하려는 class가 base면 기존 모델에 가중치가 높게 (2/3)
novel이면 CLIP에 가중치가 높게 설정하여 최종 prediction값 도출하지만 앞서 설명한대로 실제 CLIP에서 나온 prediction을 구하려면 매번 이미지를 crop해서 CLIP에 넣어줘야 함
따라서 이를 대체할 수 있는 방안은?
CLIP의 결과를 ViLD-image의 결과로 대체, 대신 ViLD-text와 ViLD-image는 독립적인 embedding 정보로 따로 학습
참고로 RPN의 경우 기존과 다르게 class 별로 후보군을 생성하는것이 아닌 (기존 class 별 head가 독립적으로 구성)
class-agnostic하게(class가 뭔지 신경쓰지 않음, 하나의 통합 head로 구성) RPN을 구성하면
base class로만 RPN을 학습하면 object일거 같은 객체들을 전부 추출해줌(예전에 비슷한 논문 소개한 적 있음)실험 결과

Base class로만 RPN을 학습해도 novel class에 대한 후보군을 찾는데 큰 차이가 없음

CLIP을 classifier로 사용한 방식, novel class에 대한 성능

'Contribution 세미나' 카테고리의 다른 글