CV 주요 연구
- Generative Model & Stable Diffusion
- 생성형 모델은 GAN에서부터 점차 발전하여, diffusion 방법의 생성형 모델이 우수한 성능을 보이고 있음
- Midjourney AI : Discord에서 사용가능한 AI 아트 생성기
- DALL-E : OpenAI에서 개발하여 ChatGPT에서 사용 가능한 이미지 생성기 - Machine Unlearning
- Right to be forgotten: EU에서 제정된 ‘잊혀질 권리'에 대한 규제 (General Data Protection Regulation;GDPR)
- 인터넷에서 고객 데이터를 지울 수 있어야 할 뿐 아니라 학습 데이터로도 사용되어서는 안됨
- Membership inference attack으로 누군가의 데이터가 학습에 사용 되었는지 추론이 가능
- 데이터의 privacy 문제가 더욱 심해지고 있음
- Unintentional data
- AI에 대한 poisoning attack으로 학습 데이터에 학습을 방해하도록 설계된 데이터가 포함되어있을 수 있음
- 사용자가 실수로 클릭한 아이템에 대한 데이터를 학습한 추천시스템은 추천 성능이 떨어짐
- 제거하고싶은 데이터 (forget set)을 제외한 나머지 데이터로 재학습
- 하지만, 학습에 오랜 시간이 걸리는 경우, 제거 요청이 들어올 때마다 매번 학습하는 것은 불가능
- 모델의 성능은 유지하면서 forget set만 제거할 수 있도록 고안된 연구가 machine unlearning - Foundation Model
- Self-supervised Learning in CV
- 별도의 label 없이 이미지만을 사용하여 pre-train, 이후 여러 downstream task의 baseline이 되는 모델
- Vision-Language Pretraining
- 이미지와 관련있는 문장을 이용하여 이미지와 텍스트를 함께 pre-train한 모델 (Image, Caption)
- 이미지와 자연어의 임베딩을 같은 공간에 위치하려는 연구
- Segment Anything
- Segmentation 도메인에서 사용될 수 있는 foundation mode
Self-supervised Learning
- Self-supervised Learning
- Supervised learning은 전문가의 label 필요
- 하지만, 이런 데이터는 비용이 매우 비싸며, 구축하는데 시간이 오래 걸림
- 즉, (X, y)가 있을 때, X는 쉽게 구할 수 있지만, y는 구하기 어려움
- 이에 쉽게 구할 수 있는 데이터들만 이용해서 학습 진행
- 즉, X만을 이용해서 학습하는 self-supervised learning 연구의 등장
- Self-supervised learning은 NLP 도메인에서 주로 사용
- 이후 이미지 도메인에서도 이미지만 가지고 학습하는 self-supervised learning 연구가 활발히 진행 - DINO
- Contrastive Learning
- Anchor image가 있을 때, positive sample과 negative sample 필요
- Positive sample: Anchor image와 거리가 가까운 sample
- Negative sample: Anchor image와 거리가 먼 sample
- Anchor와 positive sample 사이의 거리는 가깝게, negative sample과의 거리는 멀어지도록 학습
- 일반적으로 positive, negative sample을 정의하는데 어려움이 있음
- SimCLR
- Positive-negative pair를 따로 사용하지 않음
- 대신 sample에 augmentation을 적용해, 이를 사이의 거리를 가깝게 학습
- 즉, positive sample은 augmentation이 적용된 sample이 됨
- 이때, negative sample은 한 배치 안에서 positive sample을 제외한 모든 샘플 (InfoNCE Loss)
- 모델로부터 계산된 positive sample의 representation간의 차이를 최소화하는 것이 목적
- 배치 사이즈가 커지면 커질수록 성능이 올라감 → Negative sample에 영향을 많이 받음
- Bootstrap Your Own Latent (BYOL)
- Only positive sample !
- SimCLR와 유사하지만 각각의 branch는 같은 모델, 다른 parameter를 사용
- Target 모델은 stop gradient (sg), 대신 online model의 EMA로 parameter 업데이트
- Online model의 불안정성을 감소 - Self-distillation with No Label (DINO)
- Knowledge distillation
- 이미 학습된 teacher model로 부터 새로운 student model을 학습시키는 방법
- Teacher와 student가 동일한 output을 내도록 학습하는 knowledge transferring
- 주로 teacher model이 파라미터 수가 더 많고, student model은 가벼운 모델을 사용
- Self-distillation (BYOL)
- Teacher와 student와 동일한 모델, 다른 parameter를 사용
- Teacher가 선행학습되지 않은 상태이며, student로 부터 간접적으로 학습
- Teacher model은 student model이 안정적으로 학습될 수 있도록 regularizer 역할
- ResNet을 사용한 BYOL과 달리 ViT 사용
- Input strategy
- 두 네트워크는 동일한 이미지로부터 생성된 다른 종류의 augmentation을 사용
- Teacher model은 global view (color jitter, blur 등)만 사용
- Student model은 global view 뿐 아니라 local view 즉, crop 이미지도 사용
- Objective function
- 두 네트워크의 output 차이는 cross-entropy로 계산하여, output들 간의 차이를 줄이는 것이 학습 목표
- Collapse
- 매번 동일한 output을 생산하기만 해도 cross-entropy가 0이 됨 (easy solution)
- 즉, 모델이 상수 함수로 수렴할 수 있는 위험도가 있음
- Avoiding collapse
- Centering: 특정 dimension이 너무 강한 signal을 갖지 않도록 feature들을 global center쪽으로 이동
- Centering만 사용하는 경우 uniform한 output을 내보내게 됨
- Sharpening: Softmax의 exponential 분모 부분 (temperature)값을 조절하여 softmax 효과를 증대
- Low temperature → output 값 사이의 차이 극대화
- Centering과 sharpening이 하나라도 없으면 collapse가 발생 - Image Pre-training with Online Tokenizer (iBOT)
- Masked Language Modeling (MLM)
- NLP에서 token을 masking한 뒤 이를 예측하는 방법으로 학습
- 이를 통해 모델이 문장의 context을 이해하고 더 일반화 되도록 함
- BEiT
- MLM과 같이 이미지 패치의 일부를 masking, 이후 이를 예측
- 모델이 이미지의 context를 이해할 수 있도록 유도(Masked Image Modeling)
- 이 때 image tokenizer는 사전 학습된 DALL-E tokenizer를 사용
- DALL-E tokenizer는 discrete VAE를 사용하여 학습
- 이미지 해상도를 대폭 줄임 → Image quality는 유지하면서, 네트워크 연산량 감소
- 여기서 tokenizer는 추가 학습되지 않고, BEiT는 DALL-E tokenizer의 지식을 MIM으로 학습하는데 그침
- iBOT은 DINO의 형식을 따르지만 patch-level output에 MIM을 적용하여 tokenizer도 학습할 수 있도록 개선
- Tokenizer의 경우 DALL-E tokenizer가 아닌 self-distillation 과정으로 학습되는 online tokenizer 사용 - SEER
- Self-supervision을 통해 뛰어난 pre-training 모델을 만들 수 있다는 것이 확인되었음
- 만약 ImageNet dataset을 넘어 더 큰 모델, 더 많은 데이터를 학습하면 어떻게 될까?
- Instagram에서 수집된 10억개의 이미지 (IG-1B)에 대하여 100억개의 parameter를 가진 큰 CNN 모델 학습
- Uncurated data: 인터넷에서 랜덤하게 수집되고, 어떠한 가공도 되지 않은 wild 이미지
- CNN임에도 불구하고 out-of-domain의 예측 성능이 향상 - DINOv2
- SEER의 uncurated 데이터를 사용하면 결국 학습된 feature의 퀄리티가 떨어짐
- 여러 curated dataset (ImageNet 등)과 uncurated dataset을 합침
- 이후 auto-curation을 통해 양질의 curated dataset을 만듦 (LVD-142M)
Vision-Language Pretraining (VLP)
- Vision-Language Pretraining
- 이미지로만 학습한 모델은 범용성과 사용성에 한계가 있음
- Image-text pair를 학습하여 이미지에 대한 이해도를 더욱 높일 수 있음
- 다양한 Downstream task에 대한 zero-shot transfer가 가능해짐 - Contrastive Language-Image Pre-training (CLIP)
- Image-text pair를 contrastive learning
- 이미지와 텍스트를 각각의 encoder를 사용하여 feature extraction
- 각각의 embedding 간 cosine similarity를 계산
- Real pair들은 cosine similarity를 최대화, Incorrect pair는 cosine similarity를 최소화
- Zero-shot 성능 면에서 기존 모델보다 훨씬 효율적 - OpenCLIP
- CLIP은 OpenAI 모델이며, 사용 관련해서 제한이 있음
- 따라서 오픈 커뮤니티가 CLIP 모델을 재구현한 오픈 소스 프로젝트
- 다양한 데이터셋과 backbone으로 pretrain된 CLIP 모델을 쉽게 사용할 수 있도록 배포된 open source 프로젝트 - Bootstrapping Language-Image Pre-training (BLIP)
- 기존의 연구들은 understanding-based tasks 또는 generation-based tasks 둘 중 하나에 집중
→ Understanding, generation task 모두 수행
- 또한 image-text pair 데이터가 인터넷에서 수집되기 때문에, 데이터에 노이즈가 있을 가능성이 있음
→ Bootstrapping을 통해 quality 정제
- Bootstrapping (CapFilt): captioner와 filter를 학습 -> Noisy caption을 가려내고 새로운 caption를 생성
- Image-text Contrastive (ITC): CLIP과 같이 image-text pair를 학습
- Image-text matching (ITM): Image-text pair가 positive인지 negative인지 학습
- Language Model (LM): 주어진 이미지에 대한 caption을 생성
- Bootstrapping: ITC와 ITM은 filter 역할을 하고, LM은 captioner 역할
Segment Anything Model (SAM)
- Segment Anything Model (SAM)
- DINO, CLIP이 general foundation model 이라면, segmentation specific foundation model 지향
- 이 연구에서 3가지 구성을 제안 (task, model, data) - Prompt
- 하나의 LLM으로 다양한 task를 수행하면서, LLM에 대한 input을 prompt로 정의
- 하나의 형태로 고정돼 있지 않고, 학습에 따라서 다양하게 사용될 수 있음
- 즉, text, image, audio 등 형태가 다양함 - Prompt in Segmentation
- Image → segmentation mask
- Image + something → segmentation mask
- Points, box, text, mask, anything (grid dot) - Prompt Encoder
- ViT로 pre-trained 된 Masked AutoEncoder (MAE) 사용
- Sparse prompt
- Points: Positional encoding with pre-defined embeddings
- Box: Positional encoding with pre-defined embeddings
- Text: Text encoder from CLIP
- Dense prompt
- Mask: Convolutions - Mask Decoder
- Transformer의 decoder block을 변형한 형태
- Token-to-image, image-to-token의 cross-attention : 각각의 encoder를 골고루 학습 - Data
- SA-1B dataset (1.1B mask dataset)
- 데이터 구성은 3단계로 진행
- Model-assisted manual annotation
- 다른 segmentation dataset으로 학습된 SAM을 이용하여 대략적인 foreground/background 선택
- Mrush와 eraser를 사용해서 픽셀 단위의 mask로 정제
- Semi-automatic stage with a mix of automatically predicted mask and model-assisted annotation
- 이 단계를 통해 다양성을 높이는 것이 목적
- SAM의 confident가 낮은 object 위주로 직접 human masking
- Fully automatic stage
- SAM 스스로 annotation을 정제하고 발전해나가는 단계
'Study > 머신러닝' 카테고리의 다른 글
Generation-생성 모델 (0) | 2025.01.09 |
---|---|
CV 모델 성능 높이기 (0) | 2025.01.09 |
Segmentation (0) | 2025.01.09 |
Backbone (1) | 2025.01.06 |
Object Detection (3) | 2025.01.06 |