Загружаем каталог…
Загружаем каталог…
📚 [AI활용 멀티모달&MCP PJ] 멀티모달 (14) - CLIP CLIP은 이미지와 텍스트를 하나의 공통 의미 공간(Common Semantic Space) 에 정렬하기 위해 대비 학습(Contrastive Learning) 을 사용하는 대표적인 Pretrained Vision–Language 모델이다. 이미지와 텍스트를 각각 인코더를 통해 임베딩으로 변환한 뒤, 올바른 이미지–텍스트 쌍은 서로 가깝게 , 관련 없는 쌍은 서로 멀어지도록 학습한다. 이러한 구조를 통해 별도의 태스크별 학습 없이도 텍스트로 정의한 클래스 설명만으로 이미지를 분류하는 Zero-shot Image Classification 이 가능하다. 또한 이미지와 텍스트를 같은 의미 공간에서 비교하기 때문에 다음과 같은 검색 작업에도 강점을 가진다. 🔍 Text-to-Image Retrieval 🔎 Image-to-Text Retrieval 🏷️ Zero-shot Image Classification 다만 CLIP은 이미지와 텍스트의 이해 및 정렬(alignment) 에 초점이 맞춰진 모델이기 때문에, 직접 문장을 생성하는 생성형 모델과는 목적이 다르다. 🌐 1. CLIP이 등장한 배경 기존 컴퓨터 비전 모델은 특정 데이터셋의 고정된 라벨 구조 에 의존하는 경우가 많았다. 예를 들어 학습 데이터에 다음과 같은 클래스가 존재한다고 가정하면, dog cat car 모델은 주어진 클래스에 맞춰 학습하게 된다. 하지만 새로운 클래스가 등장하면 기존 모델을 그대로 사용하는 것이 어렵고, 새로운 데이터를 이용해 다시 학습해야 할 수 있다. 기존 모델의 한계 데이터셋마다 고정된 라벨 구조에 의존 새로운 클래스가 등장하면 재학습 필요 현실 세계의 다양한 개념을 다루는 Open-world 환경에 한계 CLIP은 이러한 문제에 접근하기 위해 대규모 웹 이미지–텍스트 데이터를 활용 한다. 핵심적인 관점은 다음과 같다. 이미지는 언어로 설명될 수 있고, 언어는 이미지와 대응될 수 있다. 즉, 사람이 이미지에 붙인 자연어 설명 자체를 학습에 활용하여 이미지와 언어 사이의 의미적 연결 관계를 학습하는 것이다. 🎯 2. CLIP의 핵심 아이디어 — Contrastive Learning CLIP의 핵심은 Contrastive Learning(대비 학습) 이다. 여러 개의 이미지와 텍스트가 존재할 때, 서로 올바르게 대응되는 쌍과 그렇지 않은 쌍을 구분하면서 이미지와 텍스트의 임베딩 공간을 학습한다. ✅ 올바른 이미지–텍스트 쌍 🐶 강아지 이미지 ↕ "a photo of a dog" → 임베딩 공간에서 가깝게 ❌ 관계없는 이미지–텍스트 쌍 🐶 강아지 이미지 ↕ "a photo of a car" → 임베딩 공간에서 멀어지게 즉, 올바른 쌍 Image ↔ Text ↓ 유사도 ↑ 잘못된 쌍 Image ↔ Text ↓ 유사도 ↓ 이러한 학습을 반복하면서 이미지와 텍스트 사이의 의미적 대응 관계 를 학습하게 된다. 🏗️ 3. CLIP 모델 구조 CLIP은 크게 두 개의 독립적인 인코더로 구성된다. ┌── Vision Encoder ──→ Image Embedding Image ────────┤ │ └── Text Encoder ────→ Text Embedding Text ────────┘ ↓ 공통 임베딩 공간에서 비교 ↓ Cosine Similarity 👁️ Vision Encoder 이미지를 입력받아 하나의 Image Embedding Vector 로 변환한다. CLIP에서는 대표적으로 다음과 같은 구조를 Vision Encoder로 사용할 수 있다. CNN 기반 ResNet Transformer 기반 ViT(Vision Transformer) 즉, Image ↓ Vision Encoder ↓ Image Embedding 과 같은 흐름으로 이미지의 시각적 정보를 벡터로 표현한다. 📝 Text Encoder 텍스트를 입력받아 하나의 Text Embedding Vector 로 변환한다. CLIP에서는 Transformer 기반 Text Encoder를 사용한다. Text ↓ Tokenization ↓ Transformer ↓ Text Embedding 이렇게 변환된 텍스트 임베딩은 Vision Encoder가 만든 이미지 임베딩과 같은 공간에서 비교할 수 있다. 🔗 4. 공통 임베딩 공간 CLIP에서 중요한 개념 중 하나는 이미지와 텍스트가 같은 임베딩 공간에서 비교된다는 것 이다. 각각의 Encoder가 생성한 임베딩을 같은 의미 공간으로 정렬하기 때문에 이미지와 문장의 의미적 유사도를 계산할 수 있다. Common Embedding Space 🐶 Image ● / / 높은 유사도 / ● "a photo of a dog" 반대로 의미가 다른 텍스트는 이미지와 더 멀어지도록 학습된다. 이때 두 임베딩 사이의 유사도를 계산하는 대표적인 방법이 Cosine Similarity(코사인 유사도) 이다. 📊 5. 학습 방식 — Training Objective CLIP은 이미지 임베딩과 텍스트 임베딩 사이의 유사도 행렬(Similarity Matrix) 을 계산한다. 예를 들어 이미지 4개와 텍스트 4개가 있다면 각각의 이미지와 텍스트 사이 유사도를 계산해 행렬을 만들 수 있다. Text 1 Text 2 Text 3 Text 4 Image 1 ● Image 2 ● Image 3 ● Image 4 ● 올바른 이미지–텍스트 쌍에 해당하는 위치의 유사도가 높아지고, 나머지 위치의 유사도는 낮아지도록 학습한다. CLIP에서는 Softmax 기반의 대칭적 Cross-Entropy Loss 를 사용한다. 두 방향 모두 학습한다. 1 Image → Text 하나의 이미지가 주어졌을 때 정답 텍스트를 찾도록 학습 Image ↓ 여러 Text와 유사도 비교 ↓ 가장 잘 맞는 Text 선택 2 Text → Image 하나의 텍스트가 주어졌을 때 정답 이미지를 찾도록 학습 Text ↓ 여러 Image와 유사도 비교 ↓ 가장 잘 맞는 Image 선택 따라서 CLIP은 이미지에서 텍스트를 찾는 방향과 텍스트에서 이미지를 찾는 방향을 동시에 학습 하게 된다. 🚀 6. Zero-shot Image Classification CLIP의 가장 대표적인 특징 중 하나가 Zero-shot Image Classification 이다. 기존 이미지 분류 모델은 새로운 클래스를 추가하려면 해당 클래스의 데이터를 이용해 학습해야 하는 경우가 많았다. 하지만 CLIP은 클래스 이름을 텍스트로 표현한 뒤 이미지와 비교 하는 방식으로 분류할 수 있다. 🧩 Zero-shot Classification 과정 예를 들어 강아지와 고양이를 분류한다고 생각해보자. 1 클래스를 텍스트로 표현 "a photo of a dog" "a photo of a cat" 2 각각의 텍스트를 Text Encoder로 변환 "a photo of a dog" ↓ Text Embedding 1 "a photo of a cat" ↓ Text Embedding 2 3 입력 이미지를 Vision Encoder로 변환 Image ↓ Vision Encoder ↓ Image Embedding 4 이미지와 각 텍스트의 유사도 계산 Image Embedding ↓ ┌───────────────┐ ↓ ↓ Dog Text Cat Text Similarity Similarity 0.92 0.18 5 가장 높은 유사도를 가진 클래스를 선택 Dog Similarity = 0.92 Cat Similarity = 0.18 → Dog 결국 별도의 분류 헤드를 새로 학습하지 않고도 텍스트 프롬프트를 이용해 이미지를 분류 할 수 있다. 💬 7. CLIP에서 중요한 Prompt 개념 CLIP에서는 단순히 클래스 이름만 사용하는 것보다 자연어 문장 형태로 클래스를 표현 할 수 있다. 예를 들어, dog cat car 처럼 사용하는 대신, "a photo of a dog" "a photo of a cat" "a photo of a car" 처럼 문장 형태로 표현할 수 있다. 이렇게 텍스트로 클래스를 정의하고 이미지와 비교하는 방식이 Zero-shot Classification의 핵심적인 아이디어 다. 즉, 클래스 Label ↓ 텍스트 Prompt ↓ Text Encoder ↓ Text Embedding ↓ Image Embedding과 비교 ↓ 가장 높은 유사도의 클래스 선택 이러한 방식은 이후 LLM 기반 멀티모달 모델에서 사용하는 중요한 사고방식 과도 연결된다. 🔎 8. CLIP의 주요 활용 분야 🖼️ Text-to-Image Retrieval 텍스트를 입력하고 관련된 이미지를 찾는 작업이다. "a dog running on the beach" ↓ Text Encoder ↓ Text Embedding ↓ 이미지 임베딩들과 유사도 비교 ↓ 가장 관련 있는 이미지 📝 Image-to-Text Retrieval 이미지를 입력하고 가장 관련성이 높은 텍스트를 찾는 작업이다. Image ↓ Vision Encoder ↓ Image Embedding ↓ 텍스트 임베딩들과 유사도 비교 ↓ 가장 관련 있는 Text 🏷️ Zero-shot Classification 이미지와 여러 텍스트 클래스 설명을 비교해서 가장 유사한 클래스를 선택 한다. 따라서 새로운 클래스에 대해서도 별도의 태스크별 학습 없이 적용할 수 있다는 장점이 있다. 🆚 CLIP의 특징 정리 항목 CLIP 핵심 기술 Contrastive Learning 입력 이미지 + 텍스트 Vision Encoder ResNet / ViT Text Encoder Transformer 핵심 목표 Image-Text Alignment 임베딩 공통 의미 공간 유사도 Cosine Similarity 주요 활용 Retrieval, Zero-shot Classification 생성 능력 없음 핵심 특징 이미지와 텍스트의 이해 및 정렬 🎯 핵심요약 1️⃣ CLIP이란? Contrastive Language–Image Pre-training 대표적인 Pretrained Vision-Language Model 이미지와 텍스트를 하나의 공통 의미 공간으로 정렬 Contrastive Learning 을 이용해 이미지와 텍스트의 관계 학습 2️⃣ 핵심 학습 방식 올바른 Image ↔ Text ↓ 유사도 증가 잘못된 Image ↔ Text ↓ 유사도 감소 3️⃣ 모델 구조 Image ↓ Vision Encoder ↓ Image Embedding ↘ Similarity ↗ Text Embedding ↑ Text Encoder ↑ Text 4️⃣ Training Objective 이미지와 텍스트의 Similarity Matrix 계산 Softmax 기반 대칭적 Cross-Entropy Loss 사용 Image → Text Text → Image 양방향으로 이미지–텍스트 정렬 학습 5️⃣ Zero-shot Classification 이미지 ↓ Image Embedding ↓ ↔ 유사도 비교 ↔ Text Prompt ↓ Text Embedding ↓ 가장 높은 유사도 ↓ Class Prediction 6️⃣ CLIP의 가장 중요한 개념 라벨을 숫자로만 보는 것이 아니라 텍스트 프롬프트로 표현하고, 이미지와 텍스트의 의미적 유사도를 이용해 분류한다. 💭 느낀점 이번 학습에서는 CLIP이 왜 기존 이미지 분류 모델과 다른 방식으로 동작하는지 를 이해할 수 있었다. 기존의 분류 모델은 정해진 클래스와 데이터셋에 맞춰 학습하는 방식이었다면, CLIP은 이미지와 텍스트를 연결해서 학습하기 때문에 훨씬 유연하게 새로운 개념을 다룰 수 있다는 점이 인상적이었다. 특히 Contrastive Learning 의 개념이 중요하게 느껴졌다. 단순히 이미지를 분류하는 것이 아니라, 올바른 이미지–텍스트 쌍은 가까워지게 만들고 관련 없는 쌍은 멀어지도록 학습함으로써 이미지와 언어 사이의 의미 공간 자체를 만드는 과정 이라는 점이 흥미로웠다. 또한 CLIP의 두 개의 Encoder 구조를 보면서 이전에 공부했던 ViT와 Transformer가 실제 Vision-Language 모델의 기반으로 어떻게 연결되는지 를 다시 확인할 수 있었다. Vision Encoder가 이미지 정보를 벡터로 만들고, Text Encoder가 언어 정보를 벡터로 만든 뒤 같은 공간에서 비교하는 구조가 멀티모달 모델의 기본적인 형태라는 것을 이해하게 되었다. 가장 인상적인 부분은 Zero-shot Image Classification 이었다. 별도의 분류 모델을 새로 학습하지 않고 "a photo of a dog" , "a photo of a cat" 처럼 클래스 자체를 텍스트로 표현해서 이미지와 비교한다는 방식이 기존의 지도학습 분류와 상당히 다르게 느껴졌다. 특히 이전에 학습했던 BLIP과 비교했을 때 차이점 도 이해할 수 있었다. BLIP 계열은 이미지와 텍스트를 이해하고 생성하는 방향으로 활용되는 반면, CLIP은 이미지와 텍스트를 같은 의미 공간에 정렬하고 서로의 관계를 이해하는 것 에 더 초점이 맞춰져 있다는 점이 중요하다고 느꼈다. 전체적으로 지금까지 배운 CNN → ViT → Transformer → PLM → VLM → BLIP → CLIP 의 흐름이 점점 하나로 연결되는 느낌이 들었다. 앞으로의 멀티모달 모델도 결국 이미지를 이해하는 Vision Encoder와 언어를 이해하는 Language Model을 어떻게 연결하고, 두 모달리티의 의미를 어떻게 정렬할 것인지가 핵심적인 문제라는 생각이 들었다.
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
AI 멀티모달 - CLIP. 📚 [AI활용 멀티모달&MCP PJ] 멀티모달 (14) - CLIP CLIP은 이미지와 텍스트를 하나의 공통 의미 공간(Common Semantic Space) 에 정렬하기 위해 대비 학습(Contrastive Learning) 을 사용하는 대표적인 Pretrained Vision–Language 모델이다. 이미지와 텍스트를 각각 인코더를 통해 임베딩으로 변환한 뒤, 올바른 이미지–텍스트 쌍은 서로 가깝게 , 관련 없는 쌍은 서로 멀어지도록 학습한다. 이러한 구조를 통해 별도의 태스크별 학습 없이도 텍스트로 정의한 클래스 설명만으로 이미지를 분류하는 Zero-shot Image Classification 이 가능하다. 또한 이미지와 텍스트를 같은 의미 공간에서 비교하기 때문에…
Открыть источник