[CVPR2022] Grounded Language-Image Pre-training(GLIP)

안녕하세요. 오늘 소개 시켜드릴 논문은 Grounded Language-Image Pre-training이란 논문으로 VLM분야의 foundation모델로 GLIP이란 모델과 학습법을 제안한 논문이 되겠습니다.

해당 논문을 읽게 된 이유는 센서과제에서 학습 때 보지 못한 unseen객체를 검출하는 검출기로 Yolo-world를 사용할 예정인데, 해당 논문을 읽던 중 related work로 소개된 방법론이 흥미로워서 읽어보게 되었습니다.

1. Introduction

해당 논문은 CLIP에 영감을 받았는데요.

CLIP은 기존의 fully-supervised방식으로 학습한 분류기가 학습 때 보았던 클래스에 대한 분류 밖에 할 수 없다는 점이 실제 범용적인 분류기를 만드는 것에 버틀넥으로 작용함을 지적합니다. 또한 추가적인 카테고리에 대한 분류를 수행하려면 추가할 카테고리에 대한 annotation이 필요하다는 점이 문제가 되었습니다. 그러한 annotation에 대한 비용을 줄이고자, 방대한 양의 이미지-텍스트 페어들로 부터 사전학습을 진행하여 이미지 레벨의 시각적 표현을 효과적으로 학습하였고, 이를 zero-shot 혹은 few-shot 방법론을 통해서 다운스트림 테스크에 성공적으로 적용하였습니다.

즉, 사전 학습된 CLIP모델은 굉장히 semantically rich해서 제로샷 세팅으로 image classification과 text-image retrieval task 같은 이미지 레벨의 예측을 수행하는 다운 스트림 테스크로의 전이가 굉장히 수월함을 보였습니다.

그러나, object detection, segmentation, pose estimation, scene understanding, vision language understanding 등의 테스크는 이미지의 semantically rich한 정보 뿐만 아니라 fine-grained정보까지 이해하는 것이 중요합니다. 따라서 이미지 레벨의 글로벌한 representation을 학습하는 것이 아닌, 이미지 안의 객체 레벨의 visual representation을 배우는 것이 이미지 단의 더 세부사항을 배우는 관점에서 효과적일 수 있습니다.

저자는 phrase grounding 테스크가 모델이 객체 레벨의 language-aware, semantic-rich visual representation을 배울 수 있는 효과적이고, 확장가능한 사전학습 테스크가 될 수 있다고 주장하며, GLIP(grounded langage-image pretraining)을 제안합니다.

[Phrase Grounding Task]

여기서, phrase grounding 테스크에 대해서 간단히 설명드리자면,

phrase grounding을 구글번역 돌리면 ‘구문 접지’라고 번역합니다.

paperwithcodes의 테스크 소개를 빌리자면,

“Given an image and a corresponding caption, the Phrase Grounding task aims to ground each entity mentioned by a noun phrase in the caption to a region in the image.”

해석하자면, phrase grounding 테스크는 이미지와 그에 대응되는 캡션이 주어지면, 캡션 상에 명사구로 언급된 모든 것들을 이미지 상에 대응되는 부분과 매칭하는 테스크입니다.

즉, 어원 그대로 phrase라는 텍스트 테이터를 이미지에 접지(대응)시키는 테스크입니다.

위 그림은 grounding 모델이 “A man in red pushes his motocross bike up a rock”이라는 문장이 주어졌을 때, 각 명사 혹은 명사구가 이미지 상에 어느 region에 집중하는 지를 heat map으로 시각화 한 것입니다. 이처럼 각 명사구와 대응되는 이미지 상의 위치에 모델이 집중하고 있는 것을 확인 할 수 있습니다.

해당 테스크를 통해, 모델은 이미지에 대한 캡션이 주어졌을 때, 그 캡션이 이미지의 어느 부분을 나타내는 지 알기 위해서, 이미지와 텍스트의 semantic한 정보뿐 만 아니라, 주어진 명사구의 위치를 이미지 상에서 찾기 위해서 detail한 측면도 학습해야 합니다.

저자는 object detection 테스크를 캡션이 주어지지 않은(context-free) phrase grounding 테스크로 볼 수 있다는 측면을 통해서 phrase grounding과 object detection task를 통합하는 방법을 제안합니다.

아래는 해당 논문이 주장하고 있는 contribution들 입니다.

(1) Unifying detection and grounding by reformulating object detection as phrase grounding.

(2) scaling up visual concepts with massive image-text data.

(3) transfrer learning with GLIP : one model for all.

추가적으로 GLIP 방식으로 사전학습한 모델은 few shot이나 zero shot 세팅으로 객체검출이나 grounding task에 대해서도 높은 성능을 달성하였다고 합니다.

3. Grounded Language Image Pre-training

아래 Figure 1.은 Grounded Language Image Pre-training의 파이프라인을 보여주고 있습니다. 해당 내용은 3.3.에서 자세히 다루도록 하겠습니다.

3.1. Unified Formulation

먼저, (1)번 컨트리뷰션에 대한 이야기입니다. OD나 phrase grounding은 굉장히 유사한 테스크인데요.

둘 다 이미지 상에서 객체의 위치를 찾고(localize), 그것에 해당하는 의미론적인 컨셉인 class를 맵핑하는 과정을 수행합니다.(classify)

이러한 두 테스크의 유사성이 저자들로 하여금 OD를 phrase grounding 테스크로 변경하도록 만들었습니다. 왜 OD를 phrase grounding으로 변경하였는 지는 추후(3.3.)에 설명드리겠습니다.

Object detection as (Noun) Phrase grounding.

해당 파트에서는 저자가 OD의 어떤 부분을 바꿔서 phrase grounding 테스크를 수행할 수 있도록 하였는지 설명 드리겠습니다.

먼저 OD이 localization부분은 그대로 두고 classification에 해당하는 부분을 수정하게 되는데요. 기존 OD가 각 제안된 영역 혹은 prior박스에 마다 c개의 class에 대해서 분류를 수행하였다면,

위의 Figure 1.의 Prompt처럼, c개의 class의 이름을 콤마(,)로 나열하거나,

위의 그림처럼 간단한 프롬프트 형식의 텍스트로 클래스 이름에 대한 정보를 모델에게 제공하는 방식으로 바꿉니다. (예를 들어서 COCO가 80개의 카테고리에 대한 OD데이터셋이라면, 80개의 클래스에 대한 이름을 콤마로 나열하게 됩니다.)

그리고 이 프롬프트의 c개의 명사구(c개의 클래스 이름)와 그림 상에 제안된 영역을 매칭하도록 목적을 바꾸게 됩니다.

이 매칭 과정은 그라운딩 모델처럼, 이미지의 제안된 영역의 특징(O_{i})과 프롬프트 상의 단어 토큰(P_{i}) 사이의 dot-product로 alignment scores(S_{ground})를 계산하게 됩니다. 수식으로 표현하면 아래 (3)과 같습니다.

(Enc_{I} : Image 인코더, Enc_{L} : Language 인코더에 해당합니다.)

또한 학습 시그널 면에서는 기존 OD와 동일하게 아래 수식(1)과 같이 classification loss와 localization loss의 합을 사용하게 됩니다.

만약 R-CNN처럼 2stage 계열의 검출기라면 RPN가 존재할 것이고, 이것을 학습하기 위한 RPN loss가 존재할텐데요. 저자들은 RPN이 객체의 클레스에 대한 시멘틱한 정보를 사용하지 않는다는 점에서 단순히 L_{loc}에 합쳐버린다고 합니다.

그리고 수식(2)처럼 이미지를 이미지 인코더에 넣어 시각적 특징을 뽑고, 시각적 특징을 classification head(W^{T})에 넣어서 특정 클래스일 확률 값을 예측하게 되고, 이것으로 target과 비교하여 loss를 산출할텐데요.

grounding에서는 (2)과정의 S_{cls}를 (3)에서 구한 alignment scores(S_{ground})로 대체하여 L_{cls}를 구한다고 합니다.

(여기서 T는 타겟을 의미합니다.)

Equivalence between detection and grounding

저자는 위의 과정을 통해서 OD를 Noun phrase grounding 테스크로 변환하였는데요. 그리고 이 과정의 타당성을 증명하기 위해서, DyHead 라는 검출기를 기준으로 변환 전, 그리고 후의 성능을 COCO 2017 벨리데이션 셋으로 비교하였는데요.

동일한 성능을 보여주는 것을 확인하였다고 합니다.

이를 통해서 사전학습된 phrase grounding 모델이 OD테스크에 곧바로 사용될 수 있다고 합니다.

그리고 인풋 프롬프트를 검출하고자 하는 객체의 class로 주는 방식으로 zero-shot 방식의 추론도 가능하다고 합니다.

3.2. Language-Aware Deep Fusion

기존의 CLIP이나 ALIGN같은 경우는 마지막에서 alignment score를 계산하기 위해서 서로 다른 모달을 퓨전하는 방식을 사용하였습니다. (late fusion)

그러나 아래 Figure 1.을 중앙부를 보시면, 각 모달을 충분히 인코딩 한 후에 인코더의 마지막 몇 개 레이어 이전에서 여러 번 퓨전을 수행합니다.

이런 방식을 deep fusion이라고 하는데, VLM쪽에서 자주 사용하는 방식이라고 하네요.

먼저, 텍스트 인코더를 통해서 프롬프트 상의 각 토큰들에 대한 언어적인 특징인 P^{i} 추출하게 되고, 비쥬얼 인코더를 통해서 이미지 내의 객체 영역에 대한 시각적인 특징인 O^{i}를 추출하게 됩니다.

그리고 (4)번 수식처럼 중간 중간에 서로 다른 모달간의 cross-attention을 수행하여 퓨전을 수행하게 됩니다.

서로 다른 모달 간의 cross-attention은 아래와 같이 수행이 되는데요.

(상첨자 q는 쿼리를 나타내게 되고, I는 이미지, L은 렝귀지를 의미하게 됩니다.)

시각적 특징과, 언어적인 특징을 특정 차원으로 projection 시켜(W^{(q,I)}, W^{(q,L)}), 시각적 특징에 대한 쿼리와 언어적 특징에 대한 쿼리를 각각 뽑고(O^{(q)}, P^{(q)}), 쿼리간의 scaled dot-product를 수행해서 어텐션 스코어(Attn)를 구하게 됩니다.

(상첨자 v는 벨류를 나타내게 되고, out은 아웃풋 이전에 태우는 FC layer를 의미하게 됩니다.)

마찬가지로 시각적 특징과, 언어적인 특징을 특정 차원으로 projection 시켜(W^{(v,I)}, W^{(v,L)}), 시각적 특징에 대한 벨류와, 언어적 특징에 대한 벨류를 각각 뽑게 됩니다(O^{(v)}, P^{(v)}).

그리고 앞서 구했던 어텐션 스코어를 곱하고 fc layer에 태워서 두 가지 모달에 대해서 퓨전된 특징인 (O_{(t2i)}, P_{(i2t)})를 뽑게 됩니다.

마지막으로 residual방식으로 cross-attention을 수행한 반대 모달의 특징을 현재 시점의 나머지 모달의 특징과 더해서, 각 모달의 백본에 넣어주게 됩니다.

이런 방식의 학습을 통해서 visual feature가 language를 이해하게 되고, 모델의 예측이 프롬프트에 의해서 결정되게 됩니다.

3.3. Pre-training with Scalable Semantic-Rich Data

GLIP모델은 object detection 데이터셋과 grounding data셋을 모두 사용해서 사전 학습을 진행하는데요.

그렇다면, OD데이터셋을 늘리는 방법과 grounding 데이터셋을 늘리는 방법잉 있을 텐데, 저자들은 grounding 데이터셋을 늘리는 방식을 고르게 됩니다.

그 이유는 카테고리 이름에 대한 서술밖에 존재하지 않는 OD 데이터 셋보다 객체에 대한 다양한 서술이 존재한다는 점에서 grounding 데이터셋으로 부터 semantic한 정보를 얻기에도 용의하기 때문입니다.

(일 예로, 가장 큰 OD데이터셋은 2000종류의 class이름에 대한 단어들로 구성되어있지만, Flickr30K, VG Caption이란 Grounding 데이터셋은 각각 44,518종류, 110,689 종류의 단어들로 구성되어있다고 합니다)

또한, grounding data셋은 웹 상에서 크롤링한 방대한 양의 이미지-캡션으로부터 self-training방식으로 그 양을 쉽게 늘릴 수 있다는 점에 저자들은 주목하고 있습니다.

그럼 어떤 방식으로 self-training을 통해서 grounding 데이터를 추가적으로 확보하고, 학습하는 지 알아보겠습니다.

먼저, (1) teacher GLIP모델을 사람이 annotation한 OD데이터셋과 grounding데이터셋(Gold data)으로 학습시킵니다.

그리고 (2) 마치 오토라벨러처럼 학습된 teacher모델로 웹 상에서 모은 이미지-텍스트 데이터 셋에 대해서 pseudo 라벨을 생성하게 하는데요.

먼저, NLP parser라는 것을 사용하여 텍스트 안에 명사구(noun phrase)를 검출하고, 그 명사구에 해당하는 객체를 이미지 상에서 바운딩 박스로 찾게 만듭니다.(Noun phrase grounding 테스크를 수행합니다)

그 다음, (3) 최종적으로 얻은 [방대한 데이터와 슈도라벨]과 [사람이 annotation한 OD데이터셋과 grounding데이터셋]을 모두 합쳐서 student GLIP모델을 학습시킵니다.

아래 Figure 2.는 teacher GLIP이 뽑은 pseudo 라벨에 해당하는 데요. 꽤나 의미론적으로 풍부한 명사구들에 대해서 적절한 위치에 바운딩 박스를 치고 있는 것을 확인 할 수 있습니다.

또한 저자들은 student모델이 teacher모델보다 더 성능이 좋을 수 있는 이유에 대해서 언급하는데요.

예를 들어서 위 Figure 2.에서 teacher 모델은 “vaccine”라는 컨셉에 대해서 학습시에 gold data에서 제공되지 않는 한 이해하고 있지 못할 것 입니다.

그러나 주어진 텍스트들을 기반한 문맥정보를 통해서 예측은 수행할 수 있습니다. 가령 “a small vial of vaccine”(작은 백신 약병)에서 “a small vial”(작은 약병)을 검출 할 수 있다면, 문맥을 통해서 “vaccine”==”a small vial”라는 관계를 알 수 있고 “vaccine”을 검출할 수 있게 되는 것입니다.

이러한 문맥 등을 통한 추측의 요소가 슈도라벨링에 포함이 되고, 이것이 student모델에게는 supervision 시그널로서 작용하기 때문에, student모델은 “vaccine”이라는 컨셉에 대해서 추가적으로 배울 수 있게 됩니다.

따라서, teacher모델이 알지 못한 컨셉을 추가적으로 배운다는 점에서 더 좋은 성능을 낼 수 있다고 설명하네요.

4. Experiments

4.0. Transfer to Established Benchmarks

저자들은 grounding, detection 테스크에 대한 밴치마크를 제공하는데요.

  1. MS-COCO, 80개의 클래스에 대한 디텍션 데이터 셋이 되겠습니다.
  2. LVIS, 1203개의 클래스에 대한 디텍션 데이터 셋이 되겠습니다.
  3. Flickr30K, phrase grounding을 위한 이미지-캡션 데이터 셋이 되겠습니다.

아래와 같이 이미지 마다 매칭되는 5개의 캡션이 존재하고, 각 명사구와 그에 해당되는 바운딩 박스가 함께 주어진다고 합니다.

저자가 실험에 사용할 모델에 대한 리스트는 아래 Table 1.과 같습니다.

여기서, GoldG라는 것은 0.8M의 human-annotated grounding data를 의미한다고 합니다.

그리고 Cap4M와 Cap24M은 각각 web상에서 긁어온 4M의 이미지-캡션 데이터와 24의 이미지-캡션 데이터를 teacher모델로 라벨링 한 것에 해당합니다.

마지막으로 FourODs는 4개의 object detection 데이터셋(Objects365, OpenImages, Visual Genome, ImageNetBoxes)으로 2.66M의 OD 데이터셋을 의미합니다.

4.1. Zero-Shot and Supervised Transfer on COCO

저자는 MS-COCO데이터셋으로 모델을 평가하는 실험을 수행하였는데요.

아래 Table 1.은 zero-shot 방법으로 처음 보는 카테고리에 대한 모델의 전이 능력을 평가한 성능에 해당합니다.

맨 마지막 GLIP-L의 경우 pre-train단계에서 GoldG+를 사용하게 되는데요. zero-shot 평가를 위해서 사용된 COCO2017 val의 이미지가 포함된 것에 해당하는 것으로 zero-shot setting에 대한 성능은 리포팅 하지 않았다고 합니다.

(2) GLIP방식으로 사전학습한 모델을 다운스트림 테스크에 맞게 파인튜닝을 하여 성능을 비교하였습니다.

4.2. Zero-Shot Transfer on LVIS

LVIS라는 디텍션 데이터셋으로 zero-shot 성능에 대한 평가를 수행하였습니다.

MDETR논문에서 학습 중에 보지 못한 5000장의 이미지에 대한 성능을 따로 리포팅하는데, 그것에 해당하는 성능이 MiniVal입니다.

그리고, Val v1.0은 LVIS의 validataion set에 해당합니다.

Tabel 3.을 보면, 가장 윗 부분의 3개의 모델은 LVIS에 대해서 fully-supervised방식으로 학습한 모델에 해당합니다.

그리고 중간과 마지막 부분은 저자가 제안한 GLIP에 해당하는 모델이 되겠습니다. 먼저, GLIP-T가 DETR과 MiniVal에서 비슷한 성능을 보이는 것을 확인 할 수 있습니다. 그러나 Val v1.0에서 RFS보다는 좋지 못한 성능을 보이는데요.

swin-L백본과 더 많은 디텍션, 슈도라벨을 사용한 GLIP-L이 RFS를 압도하는 성능을 보여주었고, 심지어 2stage 디텍터인 MaskRCNN보다도 좋은 성능을 MiniVal에서 보여주고 있습니다.

그리고 본 table에서 grounding데이터의 우수성을 볼 수 있는데요.

먼저, GLIP-T(C)모델은 GLIP-T(B)와 다르게 사람이 라벨링한 grounding 데이터셋(GoldG)을 사전학습에 포함한 것에 해당하는데요. MiniVal에서 4.2 point의 큰 상승을 가져오는 것을 확인 할 수 있고, GLIP-T에서 grounding 슈도라벨을 이용해서 추가적인 데이터 확보와 학습을 진행하는 데요. MiniVal에서 추가적인 3.1point 향상을 만들어 냅니다.

이를 통해서 grounding 데이터의 의미론적으로 풍부한 정보가 성능향상에 큰 도움이 되는 것을 확인할 수 있습니다.

4.3. Phrase Grounding on Flickr30K Entities

이번에는 Flickr30K라는 grounding 데이터셋에 대한 성능 평가입니다.

저자의 GLIP모델은 Swin Transformer, DyHead 모듈, 딥 퓨전의 도입 덕분에 GoldG+에서 학습된 MDETR을 능가하는 성능을 달성하였습니다.

또한 추가적으로 Object365에 해당하는 OD데이터를 추가하여 사전학습을 했을 때, 1.8point의 R@1 향상을 보여줍니다. 슈도 라벨을 추가적으로 사용한 Cap4M 을 사전학습 단계에 추가하면서 더 높은 성능을 달성합니다.

마지막으로, GLIP-L로 백본의 크기와 데이터의 규모를 확장하면서 87.1의 R@1을 달성할 수 있으며, 이전 SOTA인 MDETR-ENB5를 2.8 point 앞서는 성능을 보였습니다.

Author: rcvlab

RCV연구실 홈페이지 관리자 입니다.

1 thought on “[CVPR2022] Grounded Language-Image Pre-training(GLIP)

  1. 좋은 리뷰 감사합니다.
    foundation model 관련 글을 읽을 때 종종 GLIP이 등장해서 막연하게 CLIP을 발전시킨것이라고 생각했었는데 덕분에 컨셉을 이해할 수 있었습니다. 좀 더 localization에 집중할 수 있도록 사전학습에 detection을 이용했네요.
    읽다가 궁금한점이 있습니다 GLIP은 학습을 위한 대규모 데이터셋을 확보할 때 수도라벨을 사용했다고 하는데, 수도라벨을 이용해서 학습하는데에 따른 문제점은 없나요?
    문제가 없을 만큼 수도라벨이 잘 생성된다면 애초에 잘 예측하는 모델을 사용하면 되지 굳이 추가적으로 phrase grounding모델을 만들 필요가 있었나 생각이 드는데 이에 대해서 설명해주시면 감사하겠습니다(제가 이해가 부족해서 헷갈린걸수도 있습니다)

    감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다