Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions clip.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# CLIP

## 배경
OpenAI의 CLIP(Contrastive Language-Image Pre-training)은 이미지→텍스트 방향의 멀티모달 모델이다. 핵심 동기는 NLP처럼 대규모 인터넷 데이터로 범용 시각 모델을 학습하는 것이다.

---

## 선행 연구

**ConVIRT** — CLIP의 아키텍처 기반. 의료 도메인 특화 및 데이터 규모 부족이 한계였다. CLIP은 이를 처음부터 학습(train from scratch), 선형 투영만 사용, 더 적은 augmentation으로 극복했다.

**VirTex** — 이미지 캡셔닝 기반 사전학습. 생성 목적함수와 스케일링 어려움이 한계였다. CLIP은 대조 목적함수(Contrastive Objective)로 학습 효율을 크게 높였다.

---

## 데이터셋
기존 MS-COCO(10만 장)와 YFCC100M(품질 불균일)의 한계를 극복하기 위해 인터넷에서 수집한 WIT(Web Image Text) 4억 쌍을 구축했다.

---

## 학습 방법

**대조 사전학습** — 이미지 인코더(ResNet 또는 ViT)와 텍스트 인코더(CBOW 또는 Transformer)로 임베딩을 추출한 뒤, N×N 유사도 행렬에서 대각선 쌍만 높이는 대칭 손실 함수를 사용한다.

**프롬프트 엔지니어링** — 단순 레이블 대신 `"A photo of a {label}"`로 변환해 ImageNet 정확도를 1.3% 향상시켰다. 여러 프롬프트를 앙상블하면 추가로 3.5% 향상된다.

---

## 실험 결과

**Zero-shot 성능** — StanfordCars +28.9%, Food101 +22.5% 등 다수 데이터셋에서 ResNet50 Linear Probe를 능가한다. 단, MNIST·EuroSAT 등 특수 도메인에서는 성능이 낮다.

**분포 변화 강건성** — ImageNet으로 학습한 ResNet은 분포 변화 시 성능이 크게 떨어지는 반면, CLIP은 다양한 데이터로 학습해 강건성 격차(Robustness Gap)를 최대 75% 줄인다.

**인간 비교** — Oxford IIT Pets 기준 Zero-shot CLIP 93.5% vs 인간 53.7%. 오류 패턴도 인간과 유사하다.

**데이터 중복 분석** — 사전학습 데이터와 평가 데이터 간 중복이 성능에 미치는 영향은 통계적으로 유의미하지 않다(p > 0.05).

---

## 한계

Performance Gap : SOTA 대비 약 1000배 연산 필요
Task Weakness : 세밀한 분류 및 추상적 추론 취약
OOD Sensitivity : 학습 외 데이터 일반화 부족
Data Inefficiency : 128억 장 학습 필요 (405년치)

---

## 사회적 영향

필터링되지 않은 인터넷 데이터의 편향이 그대로 학습된다. 흑인 얼굴 14% 비인간 분류, 남성 16.5% 범죄 카테고리 오분류, 여성→외모/가사 라벨 편중 등의 문제가 확인된다.

향후 과제로 Characterization, Bias Testing, Policy Surfacing, Failure Analysis가 제시된다.
55 changes: 55 additions & 0 deletions sam.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# SAM

## 배경
GPT처럼 프롬프트만으로 zero-shot 수행이 가능한 foundation model을 Image Segmentation에 적용하는 것이 목표다. CLIP/ALIGN이 이미지+텍스트 정렬로 zero-shot을 가능하게 했지만, segmentation 데이터가 부족해 동일한 접근이 어렵다. 이를 해결하기 위해 Task, Model, Data 세 가지를 함께 설계했다.

---

## Task — Promptable Segmentation
Zero-shot 일반화를 가능하게 하는 태스크로 promptable segmentation을 정의한다. 점, 박스, 마스크, 텍스트 등 다양한 프롬프트를 입력받아 segmentation mask를 출력하며, 모호한 입력에도 그럴듯한 결과를 반환한다. 다양한 프롬프트 조합으로 시뮬레이션해 일반화 성능을 높인다.

---

## Model — SAM 아키텍처
세 개의 모듈로 구성된다.

**Image Encoder** — MAE로 사전학습된 ViT를 사용한다. 확장성과 강력한 사전학습을 위해 선택했으며, 이미지당 한 번만 실행해 프롬프트 입력 전에 미리 계산해둔다.

**Prompt Encoder** — 모든 프롬프트를 동일한 벡터 공간으로 변환한다. 점·박스(sparse)는 위치 정보로, 텍스트는 CLIP으로, 마스크(dense)는 Conv로 처리한다.

**Mask Decoder** — Self-Attention으로 프롬프트끼리 이해 → Cross-Attention으로 프롬프트-이미지 관계 이해 → 업샘플링 → 픽셀별 확률 계산 → mask 출력. 모호성 해결을 위해 하나의 프롬프트에 3가지 스케일의 마스크를 동시 출력하고 신뢰도 점수로 순위를 매긴다.

**효율성** — 이미지 임베딩은 미리 계산하고, 이후 프롬프트 인코더+마스크 디코더만 실행해 CPU에서도 약 50ms 내 결과 출력이 가능하다. Loss = focal loss + dice loss.

---

## Data Engine — SA-1B 구축
Segmentation 데이터가 거의 없어 모델이 스스로 데이터를 생성하는 Data Engine을 구축했다. 3단계로 진행된다.

**1단계 Assisted Manual** (4.3M) — 사람 주도, AI 보조. 6번 재학습. 라벨링 시간 34초→14초, 이미지당 객체 수 20→44개.

**2단계 Semi-automatic** (10.2M) — AI 주도, 사람이 어려운 것만 보완. 5번 재학습. 이미지당 객체 수 44→72개, 누적 1020만 마스크.

**3단계 Fully automatic** (1.1B) — AI 완전 자동. 그리드로 점 뿌려 객체 유추, IoU+NMS로 필터링. 최종 **SA-1B 11억 개 마스크** 완성.

데이터 품질 평가 결과 94% IoU 90% 이상으로 대부분 고품질이다. 성별·피부톤 간 성능 차이는 거의 없으나, 유럽·아시아 등 고중간 소득 국가 비중이 높고 아프리카·저소득 국가 데이터는 적다.

---

## 실험 결과
23개의 다양한 데이터셋으로 zero-shot transfer 능력을 평가했다.

**Single Point** — 23개 중 16개 데이터셋에서 SOTA인 RITM보다 높은 성능. human study 평균 7~9점.

**Edge Detection** — 학습 없이 합리적인 엣지 맵 생성. 최신 SOTA(EDETR)보다는 낮고 초기 딥러닝 방법(HED)과 유사한 수준.

**Object Proposals** — SOTA(ViTDet-H)보다 낮지만 경쟁력 있는 수준.

**Instance Segmentation** — COCO/LVIS에서 Mask AP는 SOTA 대비 약간 낮지만, 경계 품질은 정성평가에서 더 높은 평가를 받는다.

**Text-to-Mask** — 텍스트만 입력 시 불안정하며, 추가 프롬프트(점 등)를 함께 줄 때 어느 정도 동작한다.

---

## 한계
세밀한 구조 감지 부족, 고화질 경계에서 전용 방법 대비 열세, 포인트가 많아질수록 전용 interactive 모델이 더 우수, ViT-H 사용 시 실시간 처리 어려움, text-to-mask 불안정이 있다. SAM은 segmentation foundation model이지만 CV 전체의 foundation model은 아니다.