| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- dementional reduction
- 자연어처리
- 캐글
- Python
- 기초
- 소프트웨어 개발
- CNN
- LangGraph
- ASR
- python 기초
- 데이터 시각화
- SQL
- TTS
- 에이전트
- 랭그래프
- UMAP
- 힙정렬
- 데이터엔지니어
- 객체지향
- CLIP
- 트랜스포머
- 알고리즘
- 생성형 인공지능
- 머신러닝
- Transformer
- RNN
- RDBMS
- 정보처리기사
- 딥러닝
- python기초
- Today
- Total
수달이네 기술 블로그
6. DINO(Zero-shot Object Detection, DETR, Hungarian matching, Swim Transformer) 본문
6. DINO(Zero-shot Object Detection, DETR, Hungarian matching, Swim Transformer)
슬픈 수달이 2026. 3. 18. 15:59Zero-shot Object Detection
학습 데이터에 존재하지 않았던 객체를 텍스트 설명만으로 탐지하는 기술
Object Detection
기존 객체 탐지(Object Detection)은 학습할 때 정의한 고정된 클래스만 예측 가능
- YOLO, Faster R-CNN등
- 이미지 → 특징 추출 → 바운딩 박스 예측 + 고정 클래스 분류
- 학습한 클래스만 탐지 가능
- 새로운 객체를 추가하려면 다시 학습해야함
- 현실 세계의 객체는 무한에 가깝다.→ 이걸 다 학습할 수 없음
- 만약 모자를 쓴 사람을 찾고 싶다? → 모자를 안쓴사람도 학습해야하고, 비슷한 다양한 클래스도 분류해서 학습해야한다.
- 즉, 아닌 걸 보여주어도 학습된 라벨 사이에서 찾으려 한다.
Zero-shot Object Detection
그러나 Zero-shot Object Detection은 텍스트 프롬프트를 이용해 새로운 클래스를 추가 가능.
- Zero-shot: 이미지나 텍스트가 주어졌을 때 어떤 클래스인지 분류 가능.
- CLIP 등
- Zero-shot Object Detection: Zero-shot을 Object Detection의 영역으로 확장
- DINO 등
- 이미지와 텍스트를 같은 의미 공간(embedding space)에 매핑
- 멀티모달 사전학습 모델의 발전으로 가능해짐
- 이미지 → 벡터화 / 텍스트 → 벡터화 이후 유사한 의미를 가까운 공간에 매핑
- Zero-shot과의 차이: 배경 중에서 처음 보는 객체를 객체로 인식하고 묶어내는 과정 필요.
- 이미지 → 박스 후보 생성(배경에서 객체를 묶음) 텍스트 → 텍스트 임베딩 생성 이미지 영역 임베딩 ↔ 텍스트 임베딩 유사도 계산
Open-Vocabulary
모델이 학습할 때 정해진 고정 클래스 집합에 의존하지 않고, 텍스트로 새롭게 정의되는 개념까지 유연하게 인식-예측할 수 있는 능력.
- 이미지와 텍스트를 같은 의미 공간에 매핑하는 멀티모달 학습을 기반으로 학습 시 보지 못한 객체, 개념을 텍스트로 인식 가능
- 닫힌(class-closed)구조가 아닌, 열린(open)개념 체계를 다루는 접근 방식.
DETR(DEtection TRansformer)
Transformer 기반의 End-to-End객체 탐지 모델
- 이미지에서 추출한 특징을 Transforme Encoder-Decoder구조에 입력하고, 학습 가능한 Object Query를 통해 고정 개수의 객체를 직접 예측.
- Query는 하나의 객체에 대응되어 클래스 확률, 바운딩 박스를 동시에 출력
- 예측 결과는 집합(set)단위로 처리됨.
- Hungarian Matching을 이용해 정답 객체와 1:1 매칭하여 학습
- 전역 self-Attention으로 이미지 전체 문맥 정보를 반영 가능
- 탐지 과정을 하나의 통합된 네트워크로 구성

- CNN모델에 이미지를 입력 → 임베딩 → 배치단위로 분리
- Positional encoding으로 순서 정보 입력
- transformer encoder상에서 특징 추출, 벡터화
- transformer decoder에서 쿼리(Object query)를 입력 받음(이 위치엔 뭐가 있을까? 하고 물어봄)
- 해당 입력을 딥러닝 모델에 넣어 정답과 비교하여 loss값 구하며 학습
- 해당 입력을 딥러닝 모델에 넣어 정답과 비교하여 loss값 구하며 학습
Object Query
DETR에서 사용하는 질의 벡터(이미지 안의 객체를 하나씩 예측하기 위한 슬롯 역할)
- 미리 정해진 개수의 Query가 Transformer Decoder에서 입력되어, 하나의 객체 or no Object를 담당
- 이미지 특징과 상호작용하며 확률과 바운딩 박스를 동시에 출력
- 고정된 앵커 박스 대신 객체를 찾아줌
- 객체를 직접 예측하도록 학습되는 추상적인 질문 벡터임
Hungarian matching
DETR에서 모델이 예측한 객체 집합과 실제 정답 집합을 1:1로 최적 매칭하기 위해 사용되는 알고리즘
- 고정 개수의 객체를 한번에 예측하므로, 어떤 예측이 어떤 정답에 해당하는지 정해줘야한다.
- 각 예측과 정답 사이의 비용(분류손실: CE / 바운딩 박스: L1 오차 ,IoU손실 등)을 계산
- 전체 비용의 합이 최소가 되도록 예측과 정답을 한 번씩만 연결해줌.
→ 중복 예측 제거, 별도의 NMS없이 집합 단위로 안정적 학습 가능
손실 함수 계산(분류손실 + 바운딩 박스 손실)
분류 손실: 예측 클래스 확률과 정답 라벨간의 차이
CE: 정답 클래스의 확률이 높을수록 손실이 작아짐.
$$ L=-\sum _iy_i\log (p_i) $$
바운딩 박스: 모델이 예측한 박스와 실제 박스간의 차이
L1 손실: 오차의 절대값(좌표 차이)
$$ L1=∣y−x∣ $$
- 박스가 얼마나 겹쳤는지 반영할 수 없다.
IoU손실: 예측한 박스(A)와 실제 정답 박스(B)의 겹침 정도를 정의
$$ IoU=\frac{|A\cap B|}{|A\cup B|} $$
- 박스가 전혀 안겹치면 무조건 0으로 gradient가 사라진다.
GIoU손실: 두 박스를 모두 포함하는 최소 외접 박스(C)를 추가해 겹치지 않을때도 거리에 따른 페널티 부여 가능
$$ GIoU=IoU-\frac{|C-(A\cup B)|}{|C|} $$
- 박스 크기를 불필요하게 키우는 등의 문제
DINO(Detection with Improved DeNoising Anchor Boxes)
DETR계열의 객체 탐지 모델(Object Detection)을 개선한 Transformer 기반 탐지 기법
- 느린 수렴 문제와 학습 불안정을 해결하기 위한 denoising학습 전략과 개선된 쿼리 초기화 방식을 도입한 모델
기존 Hungarian Matching기반의 집합 예측 구조 + 정답 박스에 노이즈를 섞어 학습
- 모델이 빠르게 정답 위치를 학습하도록 도움(속도)
- 더 정교한 쿼리 설계 + 학습 안정화 기법
- 작은 객체, 복잡한 장면에서도 높은 성능을 보임(성능)
한계
Hungarian Matching기반으로 초반 매칭이 불안정
- 비용행렬 변환 → 점진적으로 개선하므로
Object Query가 어디를 봐야 하는지 모른 채 학습 시작
- Query도 이미지를 여러 장 봐가며 어떤게 Object인지 학습한다. → 점진적으로 질문 수준이 올라감
보통 500epoch이상의 학습이 필요
초기 위치 수렴이 느려 작은 객체에서 성능이 낮음
초반에 잘못된 매칭이 반복되면 학습이 흔들린다.
loss가 안정적으로 감소하지 않는 구간이 발생한다.
DINO 구조
이미지
↓
Backbone (ResNet(CNN) / Swin(ViT) 등)
↓
멀티스케일 특징
↓
Transformer Encoder
↓
Transformer Decoder (Object Query + Denoising Query*)
↓
클래스 + Bounding Box 예측
↓
Hungarian Matching + Denoising Loss
Denoising Training
정답 박스를 복사해 좌표에 노이즈를 추가해 일부 라벨을 교란하고 Query로 함께 입력
- 모델은 이 노이즈를 원래 정답으로 복원하도록 학습
→ 결과적으로 느린 학습 문제 해결
Query/Reference(Anchor-like) 설계 개선
- 더 구조화된 reference point 사용
- 기존: 추상적인 Learned Query(단순 벡터 형태)
- DINO → 명시적 reference point: x,y,width,height
- anchor-like box 표현 활용
- 기존엔 랜덤 고정된 박스를 조정해가며 찾았다면
- object query의 좌표(x,y,w,h)에서 학습된 내용으로 영상을 찾음
- iterative refinement 구조 강화
- 레이어를 통해 이 박스에서 오브젝트가 어디있는지 예측하고, 또 내부에서 예측하기를 반복하며 정밀하게 예측하는 과정으로 빠르고 정확하고 안정적
SWIM Transformer

Vision Transformer를 계층적(hierarchical )구조로 확장한 모델
- 이미지를 작은 패치 단위로 나누고, 고정된 윈도우 내부에서 self-attention을 수행
- 층이 깊어질수록 윈도우를 이동(shift)시켜 전역 정보를 점진적으로 통합하는 방식
- 즉, 여러 크기의 self-attention을 통해 특징을 파악
기존: 전체 패치에 대해 전역 attention
Swim: 지역 윈도우 기반 attention(특징 맵 해상도 감소)
- CNN과 비슷한 피라미드 구조 형성
- 객체 탐지, 세그먼테이션 등의 멀티스케일 정보를 필요로하는 작업에서 강한 성능
Grounding DINO

DINO기반의 Transformer객체 탐지 구조에 텍스트 인코더를 결합해 이미지, 텍스트를 동시에 이해, 텍스트 조건에 맞는 객체를 탐지할 수 있도록 확장한 Open-Vocabulary탐지 모델(DINO에선 텍스트로 탐지 X)
문장으로 객체 탐색
고정된 클래스 집합에 의존하지 않고, 사용자가 입력한 문장이나 단어를 조건으로 받아 해당 표현과 의미적으로 일치하는 객체의 위치를 바운딩 박스로 예측한다.(텍스트 기반 조건부 탐지)
- ex) 위의 이미지 상에서 이미지에서 사자를 찾는게 아닌, 왼쪽 사자를 잘 찾아주는 모습
- 입력: The left lion → 출력: the left lion에 해당하는 박스 + 각 박스의 점수
- 내부적으로 이미지 특징과 텍스트 임베딩을 공동 공간에서 정렬, cross-attention을 통해 텍스트 정보가 탐지 과정에서 직접 반영되도록 설게되어 학습 시 보지 못한 객체도 텍스트 설명 만으로 탐지할 수 있음.
- Grounding은 언어를 이미지의 특정 영역에 연결하는 것(접지라는 의미)
'AI공부 > 멀티모달' 카테고리의 다른 글
| 6.2. GroundingDINO를 활용한 Open-Vocabulary Zero-shot Object Detection모델 테스트 (1) | 2026.03.19 |
|---|---|
| 5. CLIP모델과 UMAP을 이용한 차원축소 시각화 (0) | 2026.03.17 |
| 4. 차원 축소 시각화(t-SNE, UMAP, initialization: random, PCA) (0) | 2026.03.16 |
| 3. 차원 축소(PCA, t-SNE, UMAP...) (0) | 2026.03.15 |
| 2. CLIP모델 구현 (0) | 2026.03.14 |