저는 다시 Vision Language Model (VLM) 에 대한 리뷰를 진행해보도록 하겠습니다. VLM의 근본, 조상 격인 CLIP에 대한 리뷰는 아래 링크에서 확인하실 수 있으니, 아직 CLIP에 대해 잘 모르시는 분들은 반드시 읽어보시는 것을 강력히 권장드립니다.
오늘 리뷰드릴 논문은 Object-centric 하도록 지역적인 정보에 집중한 VLM 방법론인 Grounding DINO 입니다. ICLR 2024에는 아쉽게도 리젝을 받은 것 같은데 리뷰에 대해 궁금하신 분들은 아래 링크를 넣어두었으니 확인하시면 좋을 듯 합니다.
- Conference: ECCV 2024
- Affiliation: IDEA-Research
- Title: Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection
- Author Video: Youtube
- Demo Page: Colab
- Code: Github
Introduction
아시다시피, 보통 Object Detection 모델은 미리 정해진 Category의 물체들만 탐지할 수 있습니다. 예를 들어, ‘고양이’, ‘개’, ‘자동차’와 같은 물체를 인식하도록 학습된 모델은, 학습 데이터에 존재하지 않는 새로운 물체 (ex. ‘호랑이’)를 탐지하지 못합니다. 하지만 현실 세계에서는 우리가 언제 어떤 새로운 물체를 마주할지 알 수 없기 때문에, 이런 제한된 방식으로는 한계가 있을 수 밖에 없습니다.
따라서 본 논문에서는 이 한계를 극복하고자 “Open-Set Object Detection”이라는 개념을 소개하였습니다. 즉, 학습 때 보지 못한 새로운 물체를 인간이 입력한 텍스트를 통해 감지할 수 있도록 하는 것이죠. 예를 들어, “호랑이”이라고 입력하면, 이 모델은 이미지 속에서 랑이를 찾아내려고 시도합니다. 저자가 제안하는 Grounding DINO는 텍스트(언어)와 이미지 정보를 함께 사용해, 미리 정의되지 않은 새로운 물체들도 잘 찾아낼 수 있도록 설계되었습니다.
이 모델을 설계하기 위해, 저자는 기존에 존재하는 Transformer 기반의 Object Detection 모델인 *DINO를 사용하였습니다.
*[ICLR 2023] DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection
(참고로 여기서의 DINO는 Self-Supervised Learning 으로 유명한 [ICCV 2021] DINO 가 아닙니다!!)
저자가 DINO를 사용한 이유는 Object Detection 모델에 Language Model을 결합하기 위함이 가장 큽니다. 이를 이해하기 위해서는 기존의 객체 탐지 모델(Closed-Set Detector)과 저자가 제안하는 Open-set Detector의 차이를 알아야 합니다. 우선, 기존의 Closed-set Object Detection은 세 가지 과정으로 구성됩니다.
- 백본(Backbone): 이미지에서 특징을 추출하는 단계로, 이미지 속에서 색깔이나 모양 등의 중요한 정보들을 뽑아내는 역할을 합니다.
- 넥(Neck): 추출된 특징을 더욱 “강화”하는 단계입니다. 앞서 추출된 정보들을 더 잘 분류할 수 있도록 다듬고, 필요에 따라 추가 정보를 더하는 역할을 합니다.
- 헤드(Head): 마지막으로 어떤 물체가 어디에 있는지를 정확히 찾아내는 단계로, class 혹은 location을 예측하는 역할을 합니다.
이런 Closed-set detection에서 ‘Open-Set’을 감지하기 위해 Language Model을 결합함으로써, 학습되지 않은 새로운 물체도 탐지할 수 있게 만들었습니다. 마치 CLIP처럼 이미지와 언어를 동시에 학습함으로써, 언어 정보를 통해 모델이 더 다양한 물체를 탐지할 수 있도록 하는 것이죠.
Cross Modal Fusion in open-set detector
Object Detection 모델에 텍스트 정보를 동시에 학습하기 위해서는, 기존의 Detector의 여러 단계에서 텍스트 임베딩을 이미지와 결합할 수 있습니다. 다시 말해, 이미지/텍스트의 Fusion 위치가 다양할 수 있다는 뜻입니다. 대표적으로 GLIP은 neck 에서만 fusion을 진행한 VLM 모델이기도 합니다. 상단 그림 중 Neck에서 텍스트/이미지 임베딩을 Contrastive loss로 계산하여 fusion하는 방식이죠.
그러나 저자는 학습 중 Fusion을 여러번 진행해야 cross modal 간 더 좋은 align을 가지면서, 성능도 오를 것이라 생각하였죠. 따라서 저자는 Transformer 기반의 Object Detector 인 DINO를 사용하여, 중간중간 언어와 이미지를 쉽게 여러번 결합하고자 하였습니다.
Large-scale pre-train
대표적인 VLM 모델로는 CLIP과 GLIP이 존재합니다. CLIP 모델은 이미지와 텍스트를 쌍으로 묶어 학습하는 방식으로, 이미지를 보고 그 이미지에 맞는 텍스트를 연결할 수 있습니다. 그러나 이 모델은 주로 이미지 전체와 텍스트 전체를 하나로 묶어서 학습하므로, 이미지 안의 Local한 영역과 텍스트의 일부분(ex. 명사구) 정확히 연결하는 데는 약간의 한계가 있습니다.
GLIP은 CLIP보다 한 단계 더 나아가서, 이미지 속 특정 객체(예: 고양이, 자동차 등)와 그 객체를 설명하는 문구(예: “검은 고양이가 자동차 위에 있다”)를 연결하는 데 초점을 맞추었습니다. CLIP처럼 이미지-텍스트가 매핑되도록 학습하는 것은 동일하지만, “이미지의 일부 영역-텍스트 중 명사구” 처럼 조금 더 세밀한 영역으로 연결된다는 차이가 존재합니다. GLIP에서는 이렇게 영역 별 학습을 위해, Detection 데이터셋을 사용하였는데요, Text 입력에는 Detection의 클래스를 나열하여 프롬프트를 만들었습니다. 예를 들어 ‘자동차’, ‘고양이, ‘강아지’ 라는 클래스가 있다면, “자동차. 고양이. 강아지” 라는 프롬프트를 텍스트 입력이 됩니다.
상단 그림에서 GLIP을 학습하는 과정을 확인할 수 있습니다. Detection 데이터셋에는 이미지 별 instance의 종류와 위치 정보만 포함되어 있습니다. 학습에 필요한 Text 정보가 없기 때문에, 프롬프트에 여러 클래스를 단순히 나열하는 방식으로 만들었습니다. 왼쪽 상단에 있는 “Person. Bicycle. … Hairdryer.”가 Detection에 대한 프롬프트의 예시입니다.
그런 다음, CLIP처럼 서로 대응하는 이미지/텍스트 Feature 사이의 유사도는 커지도록, 그 외의 Feature끼리는 유사도가 작아지도록 학습시키는데요, 여기서 가장 큰 차이점은 GLIP은 이미지 단위가 아닌 Object 단위라는 점입니다. 따라서 GLIP의 Similarity map은 상단 그림처럼 만들어집니다. O1인 첫번째 인스턴스는 Hair-dryer니까, Hair Dryer에 대한 Feature와의 유사도가 커지도록, O2인 두번째 인스턴스는 P1인 Person Feature와의 유사도가 커지도록, 그리고 그 외의 영역은 작아지도록 모델을 학습시키면 됩니다.
그러나 Grounding DINO 저자는 GLIP의 학습 방식은 텍스트를 처리할 때 문제가 있을 수 있다고 지적하였습니다. 예를 들어, “고양이”와 “자동차”라는 단어가 하나의 문장으로 연결되면, 모델이 이 두 단어를 동시에 처리하면서 서로 영향을 주고받을 수 있다는 부분이죠. 이렇게 되면, ‘고양이’와 ‘자동차’가 관련이 없는데도 불구하고, 모델이 잘못된 연관성을 학습할 위험이 있다고 합니다.
따라서 Grounding DINO에서는 이런 문제를 해결하기 위해 텍스트를 더 “세분화”해서 처리하는 방법을 제안하였습니다. 예를 들어, 긴 문장을 한꺼번에 처리하는 대신, 각 단어 또는 짧은 구절을 따로따로 처리합니다. 이렇게 하면, 서로 관련이 없는 단어들 간의 영향을 최소화하면서, 각 단어가 실제로 무엇을 의미하는지 더 정확하게 이해할 수 있다고 합니다.
서론이 좀 길었는데, 정리하자면 Grounding DINO는 인간이 입력한 “언어”를 바탕으로 이미지 속에서 새로운 물체를 찾아내는 모델로, 다양한 Task에서도 높은 성능을 내는 그런 Foundation 모델로써 역할을 수행하기도 합니다. 참고로 Detection 성능은 무려 COCO zero-shot 52.5 AP (training without COCO data) & COCO fine-tune 63.0 AP 라고 합니다. 지금부터 Grounding DINO의 방법론에 대해 알아보도록 하겠습니다.
Method
디테일한 과정에 대해 설명드리기 전에, 대략적으로 Grounding DINO에 대해 알아보겠습니다. 일단, Grounding DINO는 GLIP에서 많은 영감을 받은 만큼, 학습하는 방식의 큰 틀은 앞서 설명드린 GLIP과 동일합니다. 이미지의 영역과 텍스트의 일부 구간 사이의 피처 유사도를 키운다는 측면은 동일합니다.
- Feature Extraction:
- 이미지와 텍스트를 이해하기 위해, 각각의 ‘Backbone’을 통해 이미지와 텍스트의 Feature가 추출됩니다.
- Cross-modality Feature Fusion:
- 추출된 이미지와 텍스트의 Feature를 결합하여 서로의 정보를 잘 이해할 수 있도록 돕는 과정입니다.
- Detector 의 ‘Neck’에 대응하는 부분으로 Feature를 Enhancement 하는 역할을 합니다.
- 이를 통해 이미지 속의 내용이 텍스트가 어떻게 연결되는지 더 잘 파악할 수 있습니다.
- Language-guided Query Selection:
- 텍스트를 바탕으로 이미지에서 중요한 부분(쿼리)을 선택합니다.
- 예를 들어, “검은 고양이”라는 문장이 있을 때, 이미지 속에서 실제로 고양이가 있는 부분을 찾는 과정입니다.
- 이 쿼리는 이후의 “디코더”에서도 사용됩니다.
- 디코더를 통한 최종 예측:
- 선택된 쿼리들은 디코더에 입력되어, 이미지와 텍스트의 정보를 더욱 분석하고 업데이트하는 과정입니다.
- 마지막 단계에서는 이 정보를 바탕으로, 이미지 속의 물체 위치를 예측하고, 그와 관련된 문구를 정확히 추출합니다.
1) Feature Extraction and Enhancer
이미지와 텍스트에 대한 Feature는 각각의 Backbone을 통해 추출됩니다. 이미지는 Swin Transformer, 텍스트는 BERT를 사용하였습니다. 이렇게 추출된 이미지와 텍스트의 feature들을 결합하여, 서로 더 잘 이해하도록 돕는 과정이 필요합니다. 이를 “Enhancer”라고 부릅니다. 앞서 추출한 Feature를 이미지/텍스트 정보를 공유함으로써 보다 풍부한 정보를 가진 Feature로 만들어주는 과정입니다.
이 과정에서는 이미지와 텍스트 사이의 관계를 잘 파악하기 위해 서로의 정보를 주고받습니다. 예를 들어, 텍스트에 “검은 고양이”라는 단어가 있다면, 이미지 속에서 그에 맞는 검은 고양이 부분을 더 명확히 파악하는 부분이 되겠죠. Feature Enhancer Layer는 상단 오른쪽 박스와 같이 Self-Attention과 Cross-Attention Layer로 구성됩니다. Self-attention을 통해 이미지/텍스트 각각 중요한 부분을 강조한 다음, Cross-Attention을 Img-to-text -> text-to-img 를 두번 거쳐 이미지/텍스트 영역 간 관계를 더 긴밀히 연결시켜 향상된 Feature를 생성해내게 됩니다.
2) Language-Guided Query Selection
모델은 텍스트와 이미지 사이의 연관성을 잘 이해한 다음, 원하는 물체를 잘 찾아낼 수 있어야 합니다. 이를 위해 모델은 제공한 텍스트 정보를 잘 활용해서 이미지 속에서 어떤 부분이 중요한지 알아내야하죠.
즉, Text feature를 기반으로 가장 관련있는 image Feature를 선택하고, 이를 쿼리로 사용하였습니다. 저자는 이미지와 텍스트 사이의 관계를 찾아내기 위해, 저자는 이미지의 모든 작은 부분과 텍스트의 모든 단어를 비교하여, 서로 가장 잘 맞는 조합을 찾고자 하였습니다.
우선 X_I, X_T는 앞서 생성된 feature입니다. 이 두 개의 Feature 간 유사도를 파악하고자 dot product를 통해 연산합니다. 그 다음으로, 이미지의 모든 부분과 텍스트의 모든 단어 사이의 비교 결과 중에서 가장 높은 값을 선택합니다. 이 높은 값은 이미지의 특정 부분이 텍스트와 얼마나 잘 맞는지를 나타내는 것입니다. 마지막으로, 이렇게 계산된 결과들 중에서 상위 N개의 중요한 부분들을 선택합니다. 이 때, 선택된 부분들이 이후의 과정에서 이미지 속에서 중요한 쿼리로 사용됩니다.
이에 대한 수도 코드는 아래 이미지와 같습니다.
3) Cross-Modality
Cross-Modality Decoder는 말 그대로, 두 가지 정보(이미지, 텍스트)를 한꺼번에 처리하는 디코더입니다. 이 디코더는 이미지 속에서 입력 텍스트와 관련된 물체를 찾아내고, 그 물체의 위치와 특징을 더 잘 이해하도록 돕게 되죠.
앞서 구한 쿼리 선택 단계에서 이미지 중 중요한 부분들을 선택했죠? 이 Cross-Modality Queries가 디코더로 입력됩니다. (설명드린대로 쿼리는 이미지에서 텍스트와 관련이 있을 것으로 추정되는 부분을 말합니다.) 이제 이 쿼리들에 대해 Self-attention을 수행합니다. 그 다음, Image-cross Attention에서는 Feature Enhancement 과정을 통해 얻은 이미지 Feature와 쿼리를 비교해서 더 정확한 Feature를 얻습니다. 마지막으로 Text Cross-Atttention 과정에서는 Feature Enhancement 과정을 통해 얻은 텍스트 Feature와 쿼리를 비교해서 이미지를 더 정확히 이해합니다. 이 과정을 통해 모델은 텍스트와 이미지 정보를 모두 활용하여 이미지 속 물체 위치를 정확히 예측하고, 그와 관련된 텍스트 정보를 추출할 수 있게 됩니다.
지금까지 Grounding DINO가 학습의 여러 단계에서 이미지/텍스트 feature를 fusion하는 과정에 대해 설명드렸습니다. 확실히 GLIP과는 다르게 보다 많이 텍스트와 이미지 피처가 결합되는 것을 확인할 수 있습니다.
4) Sub-Sentence Level Text Feature
앞서 GLIP은 관련이 없는 class도 프롬프트로 만들어지기 때문에, 관련 없는 클래스가 계산 시 영향을 줄 수도 있다는 단점이 존재한다고 하였습니다. 영향을 주는 이유는 텍스트를 처리하는 방식에 있습니다. 기존에는 문장을 통째로 하나의 덩어리로 처리하는 경우가 많았습니다. 예를 들어, “검은 고양이가 자동차 위에 앉아 있다”라는 문장이 있으면, 이 문장을 하나의 큰 단위로 처리했습니다.
하지만 이렇게 하면 문장 안에 있는 단어들 간의 미묘한 차이나 관계를 잘 반영하지 못할 수 있습니다. “검은 고양이”와 “자동차”이 서로 직접적으로 연결되지 않을 수도 있는데, 문장을 통째로 처리하면 이런 부분이 무시될 수 있습니다. 저자는 이 문제를 해결하기 위해 문장을 더 작은 단위로 나눠서 처리하였습니다. 즉, 문장을 단어 단위나 구(phrase) 단위로 나누어 각각 처리하는 것이죠.
텍스트를 처리하는 방식에는 상단 이미지처럼 크게 3가지 방식이 존재합니다. 앞서 설명드린대로, (a) 문장 수준에서의 접근은 전체 문장을 하나의 덩어리로 처리하기 때문에, 문장 속 세부적인 정보가 사라지고 미세한 의미 차이를 놓칠 수 있습니다. (b) 단어 수준 접근법은 문장을 개별 단어로 나누어 각각 처리하기 때문에, 별로 필요하지 않는 단어임에도 관계를 찾는 “불필요한 상호작용”이 발생되기도 합니다.
따라서 저자는 그 둘 사이의 절충안인 “하위 문장 수준” 접근법을 사용하였습니다. (c) 하위 문장 수준의 접근은 문장을 더 작은 의미 단위로 나누어 처리합니다. 이를 통해 중요한 구절을 독립적으로 처리함으로써 더 정확하고 세밀한 정보를 유지할 수 있다고 합니다. 즉, 관련 없는 단어 사이의 상호작용을 줄이는 (c)와 같은 Attention mask를 사용한 것이죠.
5) Loss Function
마지막으로 Loss 함수에 대한 설명입니다. Grounding DINO 모델에서는 모델이 물체의 위치를 정확히 예측하고, 텍스트와도 잘 일치하도록 하기 위해 여러 가지 Loss를 사용하였습니다. L1 Loss와 GIOU Loss는 물체의 위치와 Box 크기를 정확히 맞추는 데 사용되고, Contrastive Loss는 텍스트와 이미지 Feature 사이의 유사도를 평가하고 최적화하는 데에 사용됩니다.
논문에는 수식이 따로 정의되어 있다기 보다는 이정도의 언급만 하고 넘어가는데요, 그 이유는 grounding DINO는 결국 DINO+GLIP 을 합친 것이기 때문이지 않나 싶습니다. L1과 GIOU Loss는 DINO 세팅을 따랐는데 본 리뷰에서는 DINO가 무엇인지는 따로 다루지 않겠습니다. 자세한 내용이 궁금하신 분들은 논문 혹은 김태주 연구원의 리뷰를 확인하시면 좋을 것 같습니다.
Experiments
Zero-Shot Transfer of Grounding DINO
COCO 데이터셋에 대한 Zero-shot과 Fine-tuning 성능을 확인해보겠습니다. GoldG는 Phrase Grounding 데이터셋이고, O365란 Object365라는 대표적인 Object Detection 데이터셋입니다. Detection 데이터셋만으로 학습했을 때의 zero-shot 성능이 GLIP을 이기는 것은 물론이고, grounding 데이터셋을 합쳤을 때 GLIP보다 훨씬 더 높은 성능을 내는 것을 확인할 수 있습니다. Fine-tuning 역시 마찬가지구요. 게다가 Zero-shot 만으로 Faster R-CNN은 그냥 이기는 것도 확인할 수 있습니다.
다음으로 LVIS는 COCO 데이터셋의 일부에 대해 재레이블링을 수행한 데이터셋입니다. COCO는 80개의 클래스가 존재하는 반면 LVIS는 1200여개의 클래스를 가져 Long-tailed 분포에 대해 확인할 수 있다는 특징을 가집니다. 특히, AP_r 은 클래스 수가 상대적으로 훨씬 적은 rare한 category에 대한 성능을 볼 수 있다는 특징을 가집니다.
Grounding DINO는 Zero-Shot 설정에서 GLIP-T 모델보다 우수한 성능을 발휘하며, AP는 33.9로 나타납니다. 특히 APr에 대한 성능은 DetCLIPv2보다는 낮지만, common object(APc)와 frequenc object (APf)에서는 높은 성능을 보입니다. 파인튜닝 후 Grounding DINO는 AP가 52.1로, 모든 카테고리에서 DetCLIPv2보다 더 높은 성능을 보였습니다. 특히, APf에서 55.7로 가장 높은 성능을 보였습니다.
ODinW는 현실 세계의 다양한 데이터셋에서 객체를 탐지하는 모델의 성능을 평가하는 데 사용되는 벤치마크로 Zero-Shot, Few-Shot, Full-Shot 세 가지 설정에서 모델들의 성능을 비교한 결과를 확인해보겠습니다.
Grounding DINO T와 L은 각각 APaverage가 22.3, 26.1로, Zero-Shot 설정에서 매우 우수한 성능을 보였습니다. 특히, Grounding DINO L은 APmedian이 18.4로 DetCLIP 뿐만 아니라 다양한 상황에서 높은 성능을 보였습니다.
또한 Grounding DINO T는 APaverage가 46.4로, Few-Shot 설정에서 가장 높은 성능을 보였고, Full-shot 에서도 Grounding DINO T 는 APaverage가 70.7로, 최고의 성능을 보였습니다. 그 결과 다양한 데이터셋에서 안정적이고 일관된 성능을 발휘함을 확인할 수 있었습니다.
Referring Object Detection Settings
Grounding DINO 모델이 Referring Expression Comprehension (REC) 작업에서 다른 모델들과 비교한 실험 결과입니다. REC란 이미지 속에서 주어진 텍스트 설명(예: “왼쪽에 있는 빨간 모자를 쓴 사람”)에 해당하는 객체를 정확히 찾아내는 것을 의미합니다. 본 실험에서는 RefCOCO, RefCOCO+, RefCOCOg라는 세 가지 데이터셋을 사용하였습니다.
RefCOCO는 주어진 텍스트 설명은 대부분 짧고 간단합니다. 주로 “빨간 모자를 쓴 사람”처럼 객체를 간단히 지칭하는 문장이 많다고 합니다. RefCOCO+는 RefCOCO와 비슷하지만, 색깔이나 모양 같은 시각적 특징을 더 강조하는 설명들이 포함됩니다. 이는 위치 정보가 제한적이고, 주로 시각적 단서만을 기반으로 객체를 찾아야 한다는 특징이 있습니다. RefCOCOg는 RefCOCO와 RefCOCO+보다 더 길고 복잡한 문장들이 포함되어 있습니다. 위치 정보와 함께 더 자세한 설명이 주어지며, 문장의 길이가 더 길고 다양한 단서를 포함한다고 합니다.
그 결과, Grounding DINO T는 파인튜닝 없이도 GLIP-T 모델보다 더 높은 성능을 보이며, RefCOCO에서 50.41, RefCOCO+에서 51.40, RefCOCOg에서 67.46의 성능을 보였고, 특히 RefCOCO+에서 GLIP-T 모델보다 더 높은 성능을 보여, 파인튜닝 전임에도 불구하고 높은 성능을 호가인할 수 있습니다.
또한 Fine-tuning 이후에도, Grounding DINO L은 모든 모델들 중 가장 높은 성능을 보이며ㅡ 모든 데이터셋에서 가장 훌륭한 성능을 보임을 확인할수 있습니다.
Effects of RefC and COCO Data
다양한 데이터셋 조합이 Grounding DINO 모델의 성능에 미치는 영향을 확ㅇ니해보게습니다. 그 결과 특히 RefC와 COCO를 함께 Pre-train에 사용했을 떄, 모델의 성능이 가장 크게 향상된다는 것을 알 수 있었습니다. . 이는 텍스트와 이미지 간의 관계를 잘 이해하는 동시에, 다양한 객체 탐지 능력을 강화할 수 있음을 의미한다고 합니다.
Ablations
마지막으로 Ablation study 를 보고 마무리 하겠습니다. 저자가 제안하는 각 요소가 얼마나 성능 향상에 도움이 되는 지를 확인할 수 있습니다. 그 결과 텍스트 인코더와 Cross-Modality Fusion은 모델의 성능에 특히 중요한 역할을 하며, 이를 제거하면 성능이 크게 감소함을 알 수 있습니다. 또한, 문장을 작은 단위로 나누어 처리하는 기능(Sub-sentence Level Features)도 모델의 성능 향상에 기여하는 중요한 요소임을 확인할 수 있습니다.
Visualization
먼저 Grounding DINO로 물체를 감지한 다음 Stable Diffusion으로 이미지 인페인팅을 수행한 결과도 확인할 수 있습니다.
최근 VLM까지 리뷰해보았습니다. 방법론은 간단한데 성능은 엄청나네요, 궁금한 점은 댓글로 달아주시면 답변드리겟습니다.
안녕하세요 주영님 리뷰 감사합니다.
텍스트와 이미지를 동시에 학습하는 과정에 대해 질문이 하나 있어 댓글 남깁니다.
기존 연구들에서 텍스트 임베딩을 이미지와 결합하기 위해 Neck에서 텍스트/이미지 임베딩을 Contrastive loss로 계산하여 fusion한다고 말씀해주셨는데 Contrastive loss 설계 과정에서 negative pair를 구성하는 과정은 어떻게 되는지, 이러한 연구에서 보통 유사한 방식을 거치는지 궁금합니다.
감사합니다!
이에 대한 이해를 위해 GLIP에 대한 Similarity map을 계산하는 이미지를 봐주시기 바랍니다.
해당 map은 모든 feature 끼리 유사도를 계산한 행렬입니다.
GLIP/CLIP은 대응하는 이미지와 텍스트 피처 사이의 유사도는 높게, 그 외의 나머지 유사도는 낮아지도록 학습됩니다. 즉, 대응하는 피처는 가까워지고 대응하지 않는 피처는 멀어지기 때문에 Contrastive Loss라고 설명을 하는 것입니다. 이런 측면에서 바라봤을 때, 대응하지 않는 feature 들이 바로 Negative로 처리되는 것을 알 수 있습니다. CLIP, GLIP, Grounding DINO 모두 이러한 방식으로 계산됩니다
안녕하세요 주영님 좋은 리뷰 감사합니다.
상세히 설명해주셔서 이전의 CLIP, GLIP, DINO에 대한 비교와 함께 전반적인 Grounding DINO를 이해하는 데 큰 도움이 되었습니다.
근데 그런 와중에 조금 샛길로 빠진 정도의 개인적으로 되게 멍청할 수도 있는 질문이 있습니다..
사실 저는 전부터 이런 멀티모달 태스크 관련 VLM 기반의 방법론을 볼 때마다 속으론 계속해서 궁금했던 내용인데 그런가보다 하고 넘어간 부분이 있습니다. Cross-modality Feature Fusion 부분에서 대부분 Img-to-txt cross-attention —> txt-to-img cross-attention 으로 순서가 이미지->텍스트 텍스트->이미지 순으로 거의 불문율인 것 같더라구요. 이렇게 하는 이유가 궁금합니다. 두 모달리티간의 cross-attention 시에는 각 모듈 순서가 거꾸로여도 성능에 문제가 없는 건가요.?
감사합니다.
전혀 멍청한 질문은 아니고, 아주 좋은 질문같습니다.
일단 말씀하신대로 많은 연구에서 img2txt → txt2img X-attention을 수행하고, 그 결과가 더 좋음을 보여주었기 때문이 가장 큰 것 같습니다. 시각적으로 복잡한 이미지를 먼저 처리하고, 텍스트를 이용해 이미지를 구체적으로 이해하는 과정을 돕기 때문에 많은 연구에서 이렇게 활용된 것이라곤 하는데.. 결과적으로 실험 상 해당 순서가 더 좋은 성능임을 보였기 때문에 표준처럼 자리잡은 것이 아닌가 싶네요.
또 다른 제 생각은, 이미지가 텍스트보다 상대적으로 복잡하다는 점 때문인 것 같습니다. 하여 이미지에서 중요한 특징을 먼저 파악하고, 텍스트와 연결하여 텍스트에서 그 특징을 이해하고 처리하는 것이 아닐까요?
친절하고 상세한 리뷰 감사합니다!
가독성이 좋아서 읽기 수월 했어요! 이해하기 쉽게 작성하려고 고민하신 흔적들이 보이네요 ㅋㅋ
몇 가지 질문 남기고 가겠습니다.
Q1. Method-(4)에서 Sub-Sentence가 뭔지 이해가 잘 안됩니다. 혹시 가능하다면 예시와 masking을 사용해서 동일한 효과를 얻는다고 했는데 어떻게 했는지 알 수 있을까요?
Q2. Grounding이라는 것을 객체 내 위치를 표시하는 것이라고 이해했는데… intro 내 첫 번째 이미지와 같이 객체의 위치 정보를 Grounding-DINO는 어떻게 이해하는 걸까요? 리뷰를 쭉 읽었을 때는 그 기능을 하는 모듈이 뭔지 모르겠습니다.. 하하.. ㅜㅠ
Q3. BERT와 Swin-Transfomer는 사전 학습된 모델을 사용했는지 궁금합니다.
Q4. 해당 모델이 사용한 컴퓨팅 파워는 뭔지 궁금해요!
1. 특별 토큰 사이에서 텍스트를 작은 단위(구, 단어 등)로 나누고, 각 구간을 독립적으로 처리하기 위한 attention mask와 position ids를 생성해서 Embedding을 수행하는 것으로 이해해주시면 좋을 것 같습니다
2. 좋은 지적이네요, Gronding DINO가 GLIP과 똑같다보니, 다 알거라 생각하고 제가 설명을 생략하였네요. 객체의 위치 정보는 similarity map 산출 시 사용한 image feature로 localization loss를 계산합니다. Detection 수행 시 Classification Loss가 지금 설명드린 것처럼 Alignment Loss로 변형된 것이고, Localization Loss는 기존과 동일합니다.
3. 네, 사전학습된 모델을 사용합니다. VLM 모델에서 Feature를 추출하는 데에 사용하는 Backbone은 항상 사전학습된 모델을 freeze 하여 사용합니다.
4. Tiny model: 16 V100 w/ batch size of 32 || Large model: 64 A100 w/ batch size of 64.