CatLIP: CLIP의 대조 학습(CL) 대비 2.7배 빠른 범주 학습(Categorical Learning) 기법에 대한 연구 (feat. Apple)

:pytorch:PyTorchKR:kr:

CatLIP: 대규모 이미지-텍스트 데이터로 2.7배 빠르게 사전학습을 하면서도 CLIP 수준의 인식 정확도를 보이는 범주 학습 기법

Apple이 매주 연구 결과들을 공개하고 있는데, 뭔가 반가우면서도 어색한 미묘한 기분이네요:sweat_smile: (우리 애플이 달라졌어요)
어쨌든, Apple은 Visual Encoder에 진심인건지, 작년 말에는 CLIP보다 작은 크기로 더 나은 성능을 보이는 MobileCLIP에 대한 연구를 공개했었는데, 이번에는 Web Scale의 이미지-텍스트 쌍(Image-Text Pair) 데이터들을 더 빠르게 사전학습하는 CatLIP에 대한 연구를 공개했습니다. CLIP의 대조 학습(Contrastive Learning) 대신 범주 학습(Categorical Learning)을 사용하여 성능은 비슷하면서도 속도는 2.7배 가량 빠르다고 하는데요, 심지어 사전 학습 모델의 가중치와 함께 모델 코드의 공개도 언급하였습니다. :open_mouth:


CatLIP: 대규모 이미지-텍스트 데이터로 2.7배 빠른 사전학습 및 CLIP 수준의 인식 정확도를 달성 / CatLIP: CLIP-level Visual Recognition Accuracy with 2.7× Faster Pre-training on Web-scale Image-Text Data

소개

Apple이 이번에 공개한 CatLIP(Categorical Loss for Image-text Pre-training)은 OpenAI에서 소개한 CLIP(Contrastive Language-Image Pretraining)과 비교하여 약 2.7배 빠른 사전 학습 속도를 보이는 새로운 방법입니다.

OpenAI가 CLIP에서 사용한 Constrastive Pre-Training 기법 설명

OpenAI가 CLIP에서 사용한 Constrastive Pre-Training 기법 (출처: OpenAI 홈페이지)

OpenAI가 CLIP에서 사용한 대조학습(Contrastive Learning) 기법은 엄청난 규모의 이미지들을 사용한 사전학습(Pre-training) 방법입니다. 이전의 지도 학습(Supervised Learning)에서는 학습 데이터로 사용하는 이미지가 어떠한 것인지를 나타내는 레이블(Label, 정답)이 있어야 하기 때문에 대량의 데이터셋을 생성하기가 쉽지 않았습니다. OpenAI에서는 이를 해결하기 위해 인터넷에 공개된 다양한 이미지와 이를 설명하는 텍스트(명시적인 설명 또는 설명으로 추정되는 텍스트 등)를 모은 다음, 사전 학습 시 하나의 배치 내의 여러개의 <Image, Text> 쌍에 대해서 유사성을 학습하였습니다. 즉, 위 그림과 같이 이미지와 텍스트를 각각 인코더에 통과시켜 임베딩(Embedding)을 추출한 뒤, 학습 시 사용하는 하나의 배치(Batch) 내에서 서로 같은 Image-Text 쌍에 대해서는 유사도가 높도록(Positive Sample, 위 그림의 I-T Matrix의 대각 성분), 서로 다른 Image-Text 쌍에 대해서는 유사도가 낮도록(Negative Samples, 위 그림의 I-T Matrix의 대각 성분을 제외한 나머지) 학습하는 방식입니다.

이러한 대조 학습 방식은 잡음(noise)이 많은 대량의 데이터셋을 처리하는데 있어 획기적인 성과를 보였지만, 이미지와 텍스트 임베딩 간의 광범위한 쌍별(pairwise) 유사성을 확인하는 과정에서 다소 많은 연산 작업이 필요합니다. 이를 위해 모델의 일부를 최적화하거나 전처리된 인코더를 사용하는 방법들이 제안되었지만, CatLIP에서는 아예 이러한 과정을 다르게 접근하였습니다.


CatLIP과 CLIP 비교
CatLIP과 CLIP 비교

CatLIP은 CLIP에서 사용했던 전처리 과정을 대조적 방법(Contrastive)이 아닌 분류 작업(Categorical)으로 재구성함으로써, 대조 학습(Contrastive Learning) 시에 사용하던 유사도 계산(Similarity Comptation) 과정을 생략하였습니다. 이를 통해 CatLIP의 사전학습 속도가 CLIP보다 2.7배 가량 빠르게 개선되었으며, 적용하는 작업(Downstream Task)에서의 정확도는 비슷하게 유지함을 보였습니다.

CatLIP의 주요 아이디어

  1. 새로운 사전 학습 접근 방식: CatLIP은 이미지-텍스트 데이터의 사전 학습을 분류 작업으로 처리하여 사전 학습 단계를 가속화하는 방법을 제시합니다. 이 접근 방식은 이 분야에서 처음 시도되는 것으로, 일반적으로 CLIP에서 볼 수 있는 대조적 학습 방법과는 다르게, CatLIP은 이미지-텍스트 전처리를 다중 레이블 분류 작업으로 취급합니다. 이러한 접근 방식을 통해 텍스트에서 파생된 레이블을 이미지에 직접 연결하여 학습 과정을 단순화합니다.

  2. 스케일링 향상: 소개된 방법인 CatLIP은 데이터 및 모델 스케일링 시 정확도를 향상시킵니다. 특히 작은 규모의 이미지-텍스트 데이터셋에서 CatLIP 하에 긴 학습 기간 동안 CLIP을 사용할 때보다 더 나은 성능을 보입니다.

  3. 효율성 및 속도: 사전 학습 시 각 이미지-텍스트 쌍(pair)들 간의 비교를 하지 않아도 됨으로써, CatLIP은 CLIP 대비 연산 오버헤드를 줄일 수 있었습니다. 이를 통해 대규모 데이터셋에서 모델 전처리 속도를 CLIP 대비 2.7배 향상시켰습니다.

  4. 전이 학습: 전통적인 전이 학습 접근 방식은 사전 훈련된 모델 백본을 사용하고 분류기(Classifier)의 가중치를 새로 초기화하는 것이었습니다. CatLIP은 타겟 작업 레이블과 관련된 임베딩을 분류 계층에서 추출할 수 있어, 이렇게 추출한 임베딩을 직접 새 작업의 분류 계층에 초기화하는 것을 가능하게 합니다. 이는 새로운 작업에서 레이블로 사용할 수 있어 효율적인 전이학습이 가능합니다.

  5. 광범위한 검증: 논문은 객체 탐지 및 의미론적 분할과 같은 다양한 하류 작업에 걸쳐 광범위한 실험을 자세히 설명하며, CatLIP이 학습한 표현이 CLIP이 학습한 표현과 비슷한 성능을 보임을 보여줍니다. 특히, CatLIP을 사용한 비전 트랜스포머(ViT B/16)는 COCO 데이터셋에서 평균 정밀도 점수 49.9를 달성하여 CLIP의 성능과 동등하지만 사전 학습 시간은 2.7배 빠르다는 점을 강조합니다.

CatLIP의 구현 및 동작 방식

CatLIP 방법론

CatLIP은 Vision Transformer(ViT)를 이미지 인코더로 사용하여 이미지로부터 특징을 추출합니다. 이 과정에서 ViT는 이미지를 패치로 나누고, 이 패치들을 시퀀스처럼 처리하여 각 패치의 특징을 학습합니다. 또한, 앞에서 설명하였던 것처럼 사전 학습을 이미지에 대한 텍스트 레이블을 분류(Classification)하는 작업으로 보고 접근합니다. 이를 위해 학습 시에는 텍스트 캡션으로부터 명사들을 추출한 뒤, 이를 WordNet을 통해 핵심 키워드나 구(Phrase)를 추출하여 사용하는데, CatLIP의 핵심이 되는 데이터 전처리 부분을 자세히 살펴보면 다음과 같습니다:

CatLIP은 이미지-텍스트 데이터를 분류 작업으로 접근하기 때문에, 데이터 전처리 과정에서 이미지에 해당하는 분류를 만들기 위해 텍스트 데이터로부터 유의미한 레이블들을 추출합니다. 이러한 레이블은 명사나 중요한 키워드, 또는 몇 가지 단어를 포함하는 구(Phrase)로 구성되며, 형태소 분석(POS Tagging) 등을 통해 이뤄집니다. 예를 들어, 'dog catching frisbee'라는 텍스트 데이터를 형태소 분석하면 dog/NN(명사), catching/VBG(동사, 동명사 또는 현재 분사), frisbee/NN(명사)로 나뉘며, 여기에서 명사(Noun)에 해당하는 dog와 frisbee만을 추출합니다.

하지만 이렇게 추출한 레이블은 유사한 의미를 가지는 서로 다른 단어들로 구성될 수 있기 때문에 표준화된 범주로 매핑하는 작업이 필요합니다. WordNet Synset이 바로 이러한 작업을 위해 사용되며, Synset은 Synonym Set, 즉 동의어 집합을 뜻합니다. 이를 통해 앞에서 추출한 레이블들을 표준화된 범주로 매핑시켜 이미지를 분류할 때의 타겟 레이블(Target Label)로 사용합니다.

위와 같은 CLIP에서 진행했었던 [텍스트 데이터 --> 임베딩 벡터 --> (이미지 벡터와의) 유사도 계산] 과정 대신, [텍스트 데이터 --> 표준화된 카테고리 --> (이미지에 대한) 분류]로 바꿔 처리할 수 있게 됩니다.



Synset Pruning Threshold 값(V_\tau)의 비교 및 Top 1000 Synset 시각화

실제 이미지-텍스트 데이터셋에서 Synset의 분포는 Long-tail 분포를 따르고 있어, 발생 빈도가 낮은 Synset은 미리 정해둔 임계값(V_\tau)보다 큰 경우에만 저장하여 사용합니다. CC3M 데이터셋에서 ViT B/16을 사용하여 학습하고 ImageNet-1K 데이터셋을 사용하여 평가하는 실험을 통해 이 임계값(V_\tau)을 100 또는 500으로 설정하는 것이 좋은 임계값임을 확인하였습니다. CatLIP에서는 V_\tau = 500으로 실험을 진행하였습니다.

사전 학습 과정에서의 CatLIP과 CLIP 성능 비교

사전 학습 과정에서의 CatLIP과 CLIP 성능 비교

사전 학습 과정에서 CatLIP과 CLIP의 성능 및 학습 효율성에 대해 몇 가지 차이점이 발견되었습니다. 먼저 학습이 진행되는 정도(epoch)에 따른 정확도의 변화에 대한 부분에서, CatLIP은 학습 시간이 길어질수록 모델의 정확도가 향상되는데 반해, CLIP은 일정 시간 동안 학습한 이후에는 정확도가 정체됩니다. CLIP의 이러한 현상은 사전 학습 데이터셋의 규모가 커야 한다는 이전 연구들의 언급에서도 찾아볼 수 있습니다.

CatLIP 및 CLIP의 ImageNet-1k에 대한 사전 학습 및 전이 학습 비교

또한, 사전 학습 속도에서도 차이를 보이고 있습니다. CatLIP은 사전 학습 과정에서 텍스트 데이터를 임베딩하지 않기 때문에, 이미지 백본만 치적화하게 됩니다. 반면, CLIP은 이미지 백본과 텍스트 백본 모두를 동시에 최적화해야 하기 때문에 CatLIP에 비해 사전 학습에 더 오랜 시간이 걸리게 됩니다.

그 외에도 CatLIP은 CLIP 대비 여러 학습 효율성 측면에서 이점을 가집니다:

  1. 더 적은 네트워크 매개변수를 최적화해야 하기 때문에 더 빠른 스텝 시간(fast step time)을 제공합니다.
  2. 동일한 배치 크기에 대해 더 적은 GPU 메모리를 요구합니다.
  3. GPU 최적화된 손실 함수 구현의 혜택을 받습니다.
  4. 다중 노드 학습에서 GPU 간의 글로벌 쌍별 유사성 계산을 위한 동기화가 필요 없어 통신 오버헤드가 적습니다.

데이터 및 모델 크기 변화에 따른 비교

CatLIP은 또한 데이터 및 모델의 크기를 변화시켜 이미지 분류 및 전이 학습에서 더 나은 성능을 달성할 수 있음을 확인하였습니다. 특히, 모델의 크기를 조절하여 다양한 데이터셋들에 대해 효율적이고 효과적인 사전 학습이 가능함을 시사하고 있습니다.

CatLIP은 공개적으로 사용 가능한 이미지-텍스트 데이터셋인 CC3M과 DataComp-1.3B에서 ViT B/16 이미지 백본을 사용하여 사전 학습을 진행합니다. 데이터 크기를 CC3M의 300만 샘플에서 DataComp-1.3B의 13억 샘플로 증가시키면, 전이 학습 데이터셋에서의 정확도가 향상됩니다. 이는 데이터를 스케일링하면 모델이 더 나은 표현력을 학습할 수 있다는 것을 시사합니다.

또한, 다양한 비전 트랜스포머 모델(ViT-B/16, ViT-L/16, ViT-H/16)을 DataComp-1.3B 데이터셋에서 사전 학습하고, ImageNet-1k와 Places365 데이터셋에서 선형 탐사 평가를 수행합니다. 모델 크기를 증가시킬수록 표현의 질이 향상되지만, 가장 큰 모델(ViT H/16)에서는 성능이 포화 상태에 도달합니다. 이러한 결과는 대규모 감독 데이터셋에서의 ViT 스케일링 법칙과 일치합니다.

기존 사전 학습 방법들과의 비교

CatLIP을 감독 사전 학습(Supervised Pre-training) 및 약한 감독 사전 학습(Weakly Supervised Pre-training) 방법들과 비교해봤을 때, ImageNet-1k와 Place365 모두에서 가장 좋은 성능을 보였습니다.

일반화된 작업 (Task Generalization)

저자들은 CatLIP이 ImageNet-1k와 같은 단일 레이블에 대한 분류 작업이 아닌, 실제 세계의 복잡하고 상세한 시각적 환경을 얼마나 잘 처리하는지에 대해서도 살펴보았습니다. 실제 이미지들은 더 복잡한 배경이나 객체를 포함하고 있으며, 문맥 정보 또한 더 풍부하게 제공합니다. CatLIP 모델의 실제 세계 시나리오에서의 효과를 평가하기 위해, 다음과 같은 세 가지 도전적인 작업에 대한 실험을 수행하였습니다:

  1. 다중 레이블 객체 분류 (Multi-label object classification):

CatLIP 성능 평가: Multi-label object classification on COCO

COCO 데이터셋을 사용하여 다중 객체 분류 작업의 성능을 평가한 결과, CatLIP으로 학습한 모델들은 CLIP과 유사한 성능을 보였으며, 더 복잡한 방법으로 이미지를 분류하는 기존의 방법들과 비교했을 때도 나쁘지 않은 성능을 보였습니다.

  1. 시맨틱 세분화 (Semantic segmentation):

CatLIP 성능 평가: Semantic segmentation on ADE20k

ADE20k 데이터셋에서의 시맨틱 세분화 성능을 평가해본 결과, ViT B/16 이미지 인코더와 DeepLabv3를 세그먼테이션 헤드로 사용한 CatLIP 모델이 CLIP의 ViT B/16을 사용한 경우와 비교하여 비슷하거나 더 나은 성능을 보였습니다. 이는 CatLIP이 다양한 시맨틱 정보를 효과적으로 학습하여 다양한 시각적 상황에서 객체를 정확하게 인식하고 분류할 수 있음을 보여줍니다.

  1. 객체 탐지 및 인스턴스 세분화 (Object detection and instance segmentation):

CatLIP 성능 평가: Object detection and instance segmentation on COCO with Mask R-CNN.

COCO 데이터셋에 대해서 Mask R-CNN으로 객체 탐지 및 인스턴스 세분화 성능을 평가해보았습니다.  * CatLIP의 ViT B/16 이미지 백본을 사용한 Mask R-CNN은 CLIP의 동일한 설정과 비교하여 비슷한 성능을 보였습니다. 이는 CatLIP이 객체의 위치와 유형을 정확하게 파악하고 세분화하는 데 효과적임을 나타냅니다.

결과

지금까지 살펴본 것처럼 CatLIP은 전처리 작업을 재구성함으로써 실제 작업(Downstream Task)에서 CLIP의 정확도를 능가하거나 일치시키면서도 2.7배 더 적은 연산 시간을 필요로 합니다. 또한, COCO 및 ADE20k와 같은 표준 데이터셋에서 객체 탐지 및 의미론적 분할 작업에 CatLIP의 모델이 견고한 성능을 보여줍니다.


(논문에서 모델 코드 및 사전 학습 모델 가중치를 언급한 부분 :open_mouth:)

지금까지 대규모 이미지-텍스트 데이터셋에 대한 사전 학습은 컴퓨터 비전(CV) 및 멀티모달에 이르기까지 다양한 분야에서의 혁신을 이끌어 왔지만, 상당한 연산 자원이 필요하기 때문에 도전적인 과제였습니다. CatLIP은 이러한 사전 학습의 효율성을 높이면서도 성능에 대한 손실이 없는 새로운 방법을 제시하고 있어, 향후 다양한 곳에서 영향을 미칠 것으로 예상합니다.

더 읽어보기

CatLIP 논문

MobileCLIP 논문




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

조금 더 살펴보니, CatLIP 학습에 사용한 CoreNet 저장소 내에 학습 / 추론 코드와 함께 사전학습 모델에 대한 가중치 링크들이 포함되어 있기는 하네요. 실험 결과에 대한 재현을 목적으로 한 것들이기에 곧 Apple에서 조금 더 정리해서 올려줄 것으로 기대하지만, 좀 더 자세한 내용이 궁금하신 분들께서는 아래 문서들을 참고해보시면 좋을 것 같습니다. (아래에는 Pretrained Model 위주로 가져왔으며, 재현을 위한 Evaluation 코드와 설정 등은 출처를 참고해주시기 바랍니다.)

CatLIP Pre-training

Pretraining checkpoints and vocabulary file

The pre-training checkpoints and vocabulary files for DataComp-1.3B can be downloaded using below links:

The pre-training checkpoints are the checkpoints obtained with EMA at the end of training.

출처: corenet/projects/catlip/README-pretraining.md at main · apple/corenet · GitHub

Single-label Object Classification with CatLIP

Pretrained Model Weights for ImageNet-1k

Model Resolution Top-1 Pretrained weights
ViT-B/16 224x224 84.2 Link
ViT-L/16 224x224 86.8 Link
ViT-H/16 224x224 87.1 Link
---- ---- ---- ----
ViT-B/16 512x512 86.1 Link
ViT-L/16 512x512 88.6 Link
ViT-H/16 512x512 88.7 Link

Pretrained Model Weights for Places365

Model Resolution Top-1 Pretrained weights
ViT-B/16 224x224 59.3 Link
ViT-L/16 224x224 60.4 Link
ViT-H/16 224x224 60.3 Link
---- ---- ---- ----
ViT-B/16 512x512 59.4 Link
ViT-L/16 224x224 60.7 Link
ViT-H/16 224x224 61.1 Link

출처: corenet/projects/catlip/README-single-label-object-classification.md at main · apple/corenet · GitHub

Multi-label Object Classification with CatLIP

Pretrained Model Weights on COCO

Model Macro mAP Pretrained weights
ViT-B/16 88.06 Link
ViT-L/16 90.75 Link

출처: corenet/projects/catlip/README-multi-label-object-classification.md at main · apple/corenet · GitHub

Object Detection with CatLIP

Pretrained Model Weights

Model mAP (bbox) mAP (segm) Pretrained weights
Mask R-CNN w/ ViT-B/16 49.9 43.6 Link
Mask R-CNN w/ ViT-L/16 52.8 46.0 Link
Mask R-CNN w/ ViT-H/16 53.3 46.4 Link
출처: corenet/projects/catlip/README-object-detection.md at main · apple/corenet · GitHub

Semantic Segmentation with CatLIP

Pretrained Model Weights

Model mIoU Pretrained weights
Mask R-CNN w/ ViT-B/16 50.1 Link
Mask R-CNN w/ ViT-L/16 54.8 Link
Mask R-CNN w/ ViT-H/16 55.6 Link
출처: corenet/projects/catlip/README-semantic-segmentation.md at main · apple/corenet · GitHub