인공지능/논문 리뷰 or 진행

CAT-Seg🐱: Cost Aggregation forOpen-Vocabulary Semantic Segmentation 리뷰 및 진행해보기 - 진행 중

이게될까 2024. 5. 20. 14:59
728x90
728x90

https://ku-cvlab.github.io/CAT-Seg/

 

CAT-Seg🐱: Cost Aggregation for Open-Vocabulary Semantic Segmentation

 

ku-cvlab.github.io

 

 

더보기

요약

오픈 보캐뷸러리 의미 분할(Open-Vocabulary Semantic Segmentation)은 이미지 내 각 픽셀을 텍스트 설명에 기반한 클래스 레이블로 지정하는 문제입니다. 이 논문은 CLIP 모델을 기반으로 이미지와 텍스트 임베딩 간의 코사인 유사도 점수(비용 볼륨)를 집계하는 새로운 방법을 제안합니다. 이 방법은 기존 모델들이 보지 못한 클래스에 대한 처리 문제를 해결하며, CLIP의 인코더를 미세 조정하여 세분화 작업에 적응시킵니다.

주요 내용

  1. 오픈 보캐뷸러리 의미 분할의 문제점: CLIP와 같은 사전 학습된 비전-언어 모델은 주로 이미지 수준의 감독을 받아 픽셀 수준의 분할 작업에는 적합하지 않습니다.
  2. 비용 집계 방법 제안: 이미지와 텍스트 임베딩 간의 코사인 유사도(매칭 비용)를 집계하여, CLIP을 미세 조정함으로써 보지 못한 클래스에 대한 성능을 향상시킵니다.
  3. CAT-Seg 프레임워크: 제안된 비용 집계 방법을 사용하여 CLIP의 인코더를 미세 조정하고, 공간 및 클래스 집계를 통해 세분화 작업을 수행합니다.
  4. 성능 향상: 제안된 방법은 기존의 방법들보다 성능이 뛰어나며, 특히 대규모 도메인 차이에도 강인한 성능을 보입니다.

중요한 내용 정리

  1. 오픈 보캐뷸러리 의미 분할(Open-Vocabulary Semantic Segmentation): 텍스트 설명을 기반으로 이미지 내 각 픽셀에 레이블을 지정하는 작업.
  2. CLIP 모델: 이미지와 텍스트 쌍을 학습하여 다양한 텍스트 설명에 강한 인식 능력을 보이는 비전-언어 모델.
  3. 코사인 유사도(Cosine Similarity): 두 벡터 간의 유사도를 측정하는 방법으로, 이미지와 텍스트 임베딩 간의 매칭 비용을 계산하는 데 사용.
  4. 비용 볼륨(Cost Volume): 이미지와 텍스트 임베딩 간의 코사인 유사도 점수의 집합.
  5. 공간 집계(Spatial Aggregation): 이미지 내 각 픽셀의 공간적 정보를 고려하여 비용 볼륨을 집계.
  6. 클래스 집계(Class Aggregation): 텍스트 설명 간의 관계를 고려하여 비용 볼륨을 집계.
  7. 미세 조정(Fine-Tuning): 사전 학습된 모델의 가중치를 특정 작업에 맞게 조정하는 과정.

문제점

  1. 기존 모델의 한계: 기존의 CLIP 기반 방법들은 주로 이미지 수준에서 학습되어 픽셀 수준의 세분화 작업에 적합하지 않음.
  2. 과적합 문제: CLIP 인코더를 미세 조정할 때, 기존 클래스에 과적합되는 문제 발생.
  3. 모델 복잡성: 기존 방법들은 종종 추가적인 디코더 레이어를 사용하여 임베딩 공간을 변경함으로써 복잡성이 증가.

결론

CAT-Seg는 비용 집계 기반 프레임워크를 통해 CLIP을 오픈 보캐뷸러리 의미 분할 작업에 효과적으로 적응시킵니다. 제안된 방법은 다양한 벤치마크에서 기존 최첨단 방법들을 능가하며, 특히 도메인 간 차이가 큰 상황에서도 강력한 성능을 보입니다. 이로써 다양한 도메인에 대한 실용적 응용 가능성을 제시합니다.

논문 제목: CAT-Seg: Cost Aggregation for Open-Vocabulary Semantic Segmentation

요약

이 논문에서는 이미지의 각 픽셀을 광범위한 텍스트 설명을 기반으로 라벨링하는 open-vocabulary semantic segmentation을 다룹니다. 이를 위해, CLIP 모델을 사용하여 이미지와 텍스트 임베딩 간의 코사인 유사성 점수를 집계하는 새로운 비용 집계(cost aggregation) 방식을 제안합니다. 이 방법은 본 논문에서 제안한 CAT-Seg라는 프레임워크로 구현되어, 이미지와 텍스트 간의 비용 볼륨을 공간 및 클래스 차원에서 집계하여 세그먼테이션 성능을 향상시킵니다.

중요한 내용 정리

  1. 문제 정의: Open-vocabulary semantic segmentation은 텍스트 설명으로 정의된 무한한 범위의 클래스 레이블을 이미지의 각 픽셀에 할당하는 작업입니다.
  2. 기존 방법의 한계: 기존의 vision-language 모델(CLIP 등)은 이미지 수준에서 훈련되었으므로, 픽셀 수준의 세그멘테이션 작업에 적용할 때 성능 저하 및 오버피팅 문제가 발생합니다.
  3. 새로운 접근법: 본 논문에서는 CLIP의 임베딩을 사용하여 이미지와 텍스트 간의 코사인 유사성 점수를 집계하는 새로운 비용 집계 프레임워크를 제안합니다. 이를 통해 이미지와 텍스트 간의 비용 볼륨을 효과적으로 집계하고, 픽셀 수준의 세그멘테이션 작업에 적합하게 만듭니다.
  4. CAT-Seg 프레임워크: 제안된 CAT-Seg 프레임워크는 비용 집계를 통해 CLIP 모델을 세그멘테이션 작업에 맞게 미세 조정(fine-tuning)합니다. 이 프레임워크는 공간 집계(spatial aggregation)와 클래스 집계(class aggregation)를 통해 이미지와 텍스트 간의 다중 모달 비용 볼륨을 집계합니다.
  5. 결과: 제안된 방법은 다양한 open-vocabulary 벤치마크에서 기존 방법보다 우수한 성능을 보였습니다. 특히, 새로운 클래스에 대한 일반화 성능이 뛰어납니다.

문제점

  1. 오버피팅: 기존 CLIP 모델을 미세 조정할 때, 본 논문에서 제안한 방법은 오버피팅 문제를 해결하지만, 여전히 일부 케이스에서는 발생할 가능성이 있습니다.
  2. 계산 비용: 대규모 비전-언어 모델을 미세 조정하는 과정은 상당한 계산 자원을 요구합니다.
  3. 데이터 의존성: 제안된 방법은 COCO-Stuff와 같은 대규모 데이터셋에서 훈련되었기 때문에, 데이터셋의 다양성에 따라 성능이 달라질 수 있습니다.

결론

본 논문에서는 open-vocabulary semantic segmentation을 위한 새로운 비용 집계 프레임워크를 제안하였습니다. 제안된 CAT-Seg 프레임워크는 CLIP 모델을 세그멘테이션 작업에 맞게 미세 조정하여, 다양한 벤치마크에서 우수한 성능을 보였습니다. 특히, 공간 및 클래스 집계를 통해 이미지와 텍스트 간의 비용 볼륨을 효과적으로 집계하여, 새로운 클래스에 대한 일반화 성능을 크게 향상시켰습니다. 이 연구는 다양한 도메인에 적용될 수 있는 가능성을 보여주며, open-vocabulary semantic segmentation 분야에서 중요한 발전을 이루었습니다.

일단 제가 CLIP에 대한 기본 개념부터 잘 확립이 안되어서 어렵네요

더보기

CLIP (Contrastive Language-Image Pre-training)은 OpenAI에서 개발한 모델로, 텍스트와 이미지를 함께 학습하여 다양한 비전-언어 작업을 수행할 수 있게 합니다. CLIP의 주요 개념과 작동 방식을 설명하면 다음과 같습니다.

CLIP의 주요 개념

  1. 대규모 데이터셋 학습:
    • CLIP는 수억 개의 이미지-텍스트 쌍으로 이루어진 대규모 데이터셋에서 학습됩니다. 이러한 데이터셋은 웹 크롤링 등을 통해 수집되며, 다양한 텍스트 설명이 포함된 이미지를 사용하여 학습됩니다.
  2. 대조 학습 (Contrastive Learning):
    • CLIP는 대조 학습을 사용하여 이미지와 텍스트 임베딩을 학습합니다. 대조 학습에서는 양성(positive) 쌍과 음성(negative) 쌍을 이용하여 모델을 학습합니다. 양성 쌍은 실제로 서로 관련 있는 이미지와 텍스트 쌍을 의미하고, 음성 쌍은 무작위로 짝지어진 관련 없는 이미지와 텍스트 쌍을 의미합니다.
  3. 임베딩 공간 (Embedding Space):
    • CLIP는 이미지와 텍스트를 공통의 임베딩 공간으로 매핑합니다. 즉, 이미지와 텍스트가 같은 의미를 가지면, 이들의 임베딩 벡터가 임베딩 공간에서 가까운 위치에 있도록 학습됩니다.
  4. 멀티모달 인코더 (Multi-modal Encoder):
    • CLIP는 이미지 인코더와 텍스트 인코더를 각각 사용합니다. 이미지 인코더는 이미지를 임베딩 벡터로 변환하고, 텍스트 인코더는 텍스트를 임베딩 벡터로 변환합니다. 이 두 인코더는 각각의 모달리티에서 정보를 추출하여 공통의 임베딩 공간으로 매핑합니다.

CLIP의 작동 방식

  1. 이미지 및 텍스트 입력:
    • CLIP는 입력으로 이미지와 텍스트 설명을 받습니다. 이미지 인코더는 이미지를, 텍스트 인코더는 텍스트를 각각 임베딩 벡터로 변환합니다.
  2. 임베딩 계산:
    • 이미지 인코더와 텍스트 인코더는 각각 이미지와 텍스트를 고차원 임베딩 벡터로 변환합니다. 이 과정에서 각 인코더는 입력 데이터의 특징을 추출하여 고유한 벡터 표현을 생성합니다.
  3. 대조 학습 (Contrastive Learning):
    • 대조 학습을 통해 이미지와 텍스트 임베딩을 학습합니다. 양성 쌍의 임베딩 벡터는 가까운 거리를 가지도록, 음성 쌍의 임베딩 벡터는 먼 거리를 가지도록 학습됩니다.
    • 이를 위해 대조 손실 함수(contrastive loss)를 사용하여 임베딩 벡터 간의 유사도를 최대화하거나 최소화합니다.
  4. 다양한 비전-언어 작업 수행:
    • 학습된 CLIP 모델은 다양한 비전-언어 작업에 적용될 수 있습니다. 예를 들어, 이미지 검색, 이미지 캡셔닝, 객체 인식, 이미지 분류 등 다양한 작업에서 뛰어난 성능을 발휘합니다.

CLIP의 장점

  1. 범용성:
    • CLIP는 다양한 비전-언어 작업에 적용될 수 있는 범용 모델로, 특정 작업에 맞게 별도의 학습 없이도 잘 작동합니다.
  2. 강력한 성능:
    • 대규모 데이터셋에서 학습된 CLIP는 높은 정확도와 성능을 자랑합니다. 특히, 텍스트 설명과 관련된 이미지를 정확하게 인식하고 매칭할 수 있습니다.
  3. 오픈-도메인 인식:
    • CLIP는 사전에 정의된 클래스가 아닌, 자유로운 텍스트 설명을 기반으로 이미지를 인식할 수 있어 다양한 도메인에 적용 가능합니다.

결론적으로, CLIP는 텍스트와 이미지를 동시에 학습하여 다양한 비전-언어 작업을 수행할 수 있는 강력한 모델입니다. 이 모델은 대조 학습을 통해 이미지와 텍스트를 공통의 임베딩 공간으로 매핑하고, 이를 통해 다양한 작업에서 우수한 성능을 발휘합니다.

네, 정확합니다. CLIP의 주요 작업 중 하나는 이미지와 텍스트가 일치하는지를 판단하는 것입니다. 이 작업을 좀 더 자세히 설명하겠습니다.

CLIP의 주요 작업: 이미지-텍스트 매칭

  1. 입력 처리:
    • 이미지: CLIP의 이미지 인코더는 입력 이미지를 고차원 벡터로 변환합니다. 일반적으로 이 인코더는 CNN(Convolutional Neural Network)이나 Vision Transformer(ViT)와 같은 신경망 구조를 사용합니다.
    • 텍스트: CLIP의 텍스트 인코더는 입력 텍스트를 고차원 벡터로 변환합니다. 텍스트 인코더는 주로 Transformer 구조를 사용하여 텍스트의 의미를 벡터로 표현합니다.
  2. 임베딩 계산:
    • 이미지와 텍스트는 각각의 인코더를 통해 임베딩 벡터로 변환됩니다. 이 임베딩 벡터들은 고차원 공간에서 이미지와 텍스트의 특징을 나타냅니다.
    • 예를 들어, 이미지 인코더는 이미지 (I)를 임베딩 벡터 (DV)로 변환하고, 텍스트 인코더는 텍스트 (T)를 임베딩 벡터 (DL)로 변환합니다.
  3. 유사도 계산:
    • 이미지 임베딩 (DV)와 텍스트 임베딩 (DL) 간의 유사도를 계산합니다. 일반적으로 코사인 유사도(cosine similarity)를 사용합니다.
    • 코사인 유사도는 두 벡터 간의 각도를 측정하여, 두 벡터가 얼마나 유사한지 나타냅니다. 수식으로는 다음과 같이 표현됩니다:
  4. 대조 학습 (Contrastive Learning):
    • 학습 과정에서 이미지-텍스트 쌍이 맞는지 여부를 학습합니다. 맞는 쌍(positive pair)과 틀린 쌍(negative pair)을 대조하여, 맞는 쌍의 유사도는 높이고 틀린 쌍의 유사도는 낮추는 방식으로 모델을 훈련시킵니다.
    • 이를 통해 CLIP는 이미지와 텍스트가 일치하는지 분류하는 능력을 갖추게 됩니다.

예시: 이미지-텍스트 매칭 작업

  • 입력: 한 쌍의 이미지와 텍스트가 주어집니다.
    • 이미지: 고양이 사진
    • 텍스트: "A photo of a cat" (고양이 사진)
  • 처리 과정:
    1. 이미지 인코더는 고양이 사진을 임베딩 벡터 (DV)로 변환합니다.
    2. 텍스트 인코더는 텍스트 "A photo of a cat"을 임베딩 벡터 (DL)로 변환합니다.
    3. 두 임베딩 벡터 간의 코사인 유사도를 계산합니다.
    4. 유사도가 높으면 이미지와 텍스트가 일치한다고 판단하고, 유사도가 낮으면 일치하지 않는다고 판단합니다.

다양한 작업에의 응용

CLIP는 이미지-텍스트 매칭 외에도 다양한 작업에 응용될 수 있습니다:

  • 이미지 검색: 텍스트 설명을 기반으로 관련 이미지를 검색할 수 있습니다.
  • 이미지 캡셔닝: 이미지에 대한 텍스트 설명을 생성할 수 있습니다.
  • 객체 인식: 이미지 내의 객체를 텍스트로 라벨링할 수 있습니다.

이처럼 CLIP는 이미지와 텍스트 간의 관계를 이해하고, 이를 바탕으로 다양한 비전-언어 작업을 수행할 수 있는 강력한 모델입니다.

음 이 논문은 그럼 CLIP의 아이디어를 적용해서 존재하지 않은 class들은 버리고, 존재하는 class만 가지고 segmentation을 적용하는 건가,..?

GPT : 맞아 정확해! 학습에 사용되지 않은 class까지 segmentation을 적용할 수 있는게 핵심이야!

 

그럼 클래스가 많으면 많을 수록 저 cos 유사도를 구하는데 오래걸리겠네...? 모든 class에 대해 구하는 거니까?

GPT : 맞아 그래서 이 논문에선 다양한 방법을 제시하고 있어. 몇 가지의 샘플만 사용하고 나머진 근사치 사용하기, 병렬화, 사전 필터링 등등

 

(a) CLIP (b) Fine-tuned CLIP (c) Aggregated Cost의 비교를 통해 CLIP의 불안정성을 확인할 수 있었고, CAT-Seg가 효율적이고, 일반화 성능이 좋다는 것을 보였다.

 

CAT-Seg는 이미지 input을 받아 이미지 인코더를 진행하고, class에 대한 텍스트 인코더를 들어간 결과 2개에 대해 코사인 유사도를 계산한다. (V는 이미지 임베딩, L은 텍스트 임베딩)

그럼 여기서 몇개의 클래스가 있는지, 그 클래스와 유사도가 높은 사진의 위치가 찍히게 됩니다. -> 초기 비용 볼륨을 형성합니다.

Swin Transformer를 사용하여 초기 비용 볼륨을 공간적으로 집계한다. 픽셀이 서로 가까운지, 동일한 객체의 일부인지 등을 고려한다.

공간 비용 집계(Spatial Cost Aggregation)

Transformer 블록을 활용하여 클래스 간의 관계를 고려하여 초기 비용 볼륨을 집계하여 클래스들이 서로 어떤 관계를 가지는지 고려한다.

클래스 비용 집계 (Class Cost Aggregation)

위의 과정을 통해 집계된 비용 볼륨을 고해상도 segmentation map으로 변환한다.(Upsampling Decoder)

비용 집계 과정을 개선하기 위해 추가적인 공간 구조, 문맥 정보를 추가한다. 유사한 시각적 또는 의미적 특성을 가진 입력 토큰들이 유사한 매칭 비용을 가지도록 가이드한다. (Embedding Guidance)

위의 두 두식이다.

CLIP를 파인튜닝하여 성능을 더 높일 수 있다!

움... 이제 코드를 한번 진행해 볼게요

 

https://github.com/KU-CVLAB/CAT-Seg

 

GitHub - KU-CVLAB/CAT-Seg: Official Implementation of "CAT-Seg🐱: Cost Aggregation for Open-Vocabulary Semantic Segmentation"

Official Implementation of "CAT-Seg🐱: Cost Aggregation for Open-Vocabulary Semantic Segmentation" - KU-CVLAB/CAT-Seg

github.com

아니 리눅스......?

우분투 환경에서 진행해 보도록 하겠습니다..

설치하다 보니까 엔디비아가 있네요,,,?

없어도 제발 천천히라도....

https://cocodataset.org/#download

 

COCO - Common Objects in Context

 

cocodataset.org

여기서 2017년 train, test 데이터를 다운받았습니다.

 

다운만 한시간이네요... 차차....

 

# 사용자 홈 디렉토리로 이동
cd ~

# datasets 폴더 생성
mkdir -p datasets

저기서 다운받지 말고 cmd를 통해 받아봅시다.

 

export DETECTRON2_DATASETS=~/datasets

환경 변수도 설정해 줍시다.

 

cd ~/datasets

# COCO-Stuff 디렉토리 생성
mkdir -p coco/images/train2017 coco/images/val2017 coco/annotations_detectron2/train2017 coco/annotations_detectron2/val2017 coco/annotations/val2017 

# ADE20K-150 디렉토리 생성
mkdir -p ADEChallengeData2016/annotations/validation ADEChallengeData2016/images/validation ADEChallengeData2016/annotations_detectron2/validation

# ADE20K-847 디렉토리 생성
mkdir -p ADE20K_2021_17_01/images/ADE/validation ADE20K_2021_17_01/annotations_detectron2/validation

# PASCAL VOC 디렉토리 생성
mkdir -p VOCdevkit/VOC2012/{Annotations,ImageSets,JPEGImages,SegmentationClass,SegmentationClassAug,SegmentationObject,annotations_detectron2,annotations_detectron2_bg}

# PASCAL Context 디렉토리 생성
mkdir -p VOCdevkit/VOC2010/{Annotations,ImageSets,JPEGImages,SegmentationClass,SegmentationObject,trainval,annotations_detectron2/pc459_val,annotations_detectron2/pc59_val}

만들라는 디렉토리도 다 만들어 줍시다.

 

wget http://images.cocodataset.org/zips/train2017.zip
wget http://images.cocodataset.org/zips/val2017.zip
wget http://calvin.inf.ed.ac.uk/wp-content/uploads/data/cocostuffdataset/stuffthingmaps_trainval2017.zip

데이터도 다운받아주는데.... 여기서도 시간이....

 

어렵네요 ㅠㅠ...

728x90