과제: 하나의 월드 카메라로 월드 영상의 x,y,z(깊이) 좌표 맵을 생성한다.
사람은 두 눈의 시차를 이용해서 사물의 깊이감을 판단한다. 다만 본 프로젝트는 월드 카메라(눈)의 개수가 하나이므로 시차를 알 수 없다. 따라서 하나의 월드 카메라로 깊이를 알 수 있는 AI 모델이 필요하다.
월드 깊이맵 파이프라인:
- 제약: 하나의 world카메라로 2D 이미지에서 깊이를 구해야 함.
- 모델: Depth-Anything(2024)
- 1. MediaPipe FaceMesh로 양쪽 홍채 4점을 얻는다.
- 2. 각 홍채 4점으로 홍채 평면을 추정하고 법선(= 시선방향 근사)을 구한다.
- 3. 홍 채 반지름으로 눈알(구형) 중심을 근사한 후 시선벡터를 구한다.
- 4. 좌/우 눈에서 나온 두 시선벡터의 최근접점 중점(P_mid)을 3D 응시점으로 사용.
이론적 배경:
Depth-Anything은 단일 이미지만으로 깊이(Depth)를 예측하는 모노큘러(단안) 깊이 추정 파운데이션 모델이다.
- 핵심 아키텍처: DPT(decoder) + ViT 백본(※ DINOv2로 사전학습) 조합.
- 데이터 전략
- V1: 150만 라벨 + 약 6,200만 장 비라벨 이미지를 자체 데이터 엔진으로 수집·유사 라벨링(의사라벨)하여 학습. 학습을 어렵게 만드는 강한 증강과, 사전학습 인코더의 의미론(semantic) 프라이어를 이어받는 보조 손실을 도입.
- V2: 라벨된 실사 대신 59.5만 장 합성 라벨 데이터로 교체, 더 큰 티처 모델로 학생을 가르치는 Teacher-Student 학습, 그리고 대규모 실사 의사라벨 브리지를 결합. SD계열 기반 모델보다 더 빠르고 정확하다고 보고됨.
- 모델 스케일: Small / Base / Large
출력은 “상대 깊이”가 기본, “절대(미터) 깊이”는 선택
- 기본 모델(“relative”)은 장면 내 깊이 순서/대비만 올바르면 된다. 따라서 결과는 스케일/시프트가 임의라서, 실제 미터 단위가 아니다.
- 메트릭 모델(“metric”)은 NYU/KITTI 같은 실측 라벨로 파인튜닝해, 미터 단위에 가깝게 보정된 출력을 낸다.(여전히 카메라/도메인 차이에 따른 오차는 존재)
절대 깊이로 측정 방법
- 메트릭 전용 체크포인트 사용
- 한 장면에서 한 번의 스케일·시프트 보정: D_corr = a * D_pred + b를, 알려진 평면(예: 체커보드) 거리/크기로 robust 회귀하여 추정.
- 동영상이면 EMA/가이던스 평활화 또는 Video Depth Anything 같은 영상 일관성 버전을 고려.
아키텍처 한 장 설명
- 백본: ViT-S/B/L(±G) (DINOv2 사전학습) → 다단계 피처 맵 생성
- 디코더(DPT): 트랜스포머 피처를 멀티스케일로 집계·업샘플링해 밀집(depth) 맵 예측
- V2 변경점: DINOv2의 중간 계층 피처를 사용하는 등 세부 해부가 약간 수정
언제 특히 잘 쓰이나 / 한계는?
장점
- 실내·실외, 다양한 카메라/장면에서 제로샷 일반화가 강함.
- 경계·질감 보존이 좋아 합성(예: ControlNet-Depth)이나 영상 편집 파이프라인에 바로 투입 가능.
주의할 점
- 반사/투명/무패턴(하늘·유리·거울·광택 금속) 영역은 어떤 모노큘러 모델도 불확실.
- 초광각·왜곡은 사전 언디스토션이 안정적.
- 실제 길이·거리 사용 시엔 내부파라미터/베이스라인이 없으므로 위의 스케일·시프트 보정 또는 메트릭 모델이 필요.
파이프라인 단계별 분류
'Projects > AI 아이트래킹 모델 프로젝트' 카테고리의 다른 글
| [프로젝트] 5. 음성인식. Porcupine(웨이크워드) + Whisper(STT) + webrtcvad(발화구간) 파이프라인 (0) | 2025.09.22 |
|---|---|
| [프로젝트] 4. 시선벡터 - 월드맵 정합 (0) | 2025.09.16 |
| [프로젝트 A-EYE] 2. 시선추적_시선벡터 구하기 (0) | 2025.09.16 |
| [프로젝트 A-EYE] 1. 개요 (0) | 2025.09.16 |
| [도메인 공부 ] 8. 홍채 세그맨테이션 경량 CNN 모델 (0) | 2025.09.15 |