Depth Estimation
깊이 추정은 각 픽셀과 카메라 사이의 거리를 예측하며, 스테레오 카메라, 능동 센서 또는 단일 이미지에서 깊이 맵을 생성합니다.
깊이 추정은 이미지의 모든 픽셀에 대해 해당 픽셀이 나타내는 표면과 카메라 사이의 거리를 예측하는 컴퓨터 비전 작업입니다. 출력은 평면 사진에 없는 3차원 정보를 더해 주는, 거리값으로 구성된 이미지 크기의 격자인 깊이 맵입니다. 깊이 맵을 사용하면 로봇, 차량, 증강 현실 기기가 일반 카메라로 장면의 3D 구조를 파악할 수 있습니다.
깊이를 얻는 방법#
- 스테레오 비전: 일정한 기준선 간격으로 배치하고 보정한 두 카메라는 각 점을 가로 방향으로 조금씩 다른 위치에서 관측합니다. 이 차이인 시차를 이용해 초점거리 × 기준선 거리 ÷ 시차로 깊이를 구합니다. 따라서 시차가 작은 먼 물체는 측정 정밀도가 낮고, 흰 벽처럼 질감이 없는 표면은 두 이미지 간 대응점을 찾기 어렵습니다.
- LiDAR 및 기타 능동 센서: LiDAR는 레이저 펄스의 왕복 시간을 측정해 장거리에서 정확하지만 희소한 점을 제공합니다. ToF 및 구조광 카메라는 주로 실내의 근거리에서 조밀한 깊이 정보를 제공합니다. 이러한 센서는 학습 모델의 정답 데이터도 생성합니다.
- 단안 깊이 추정: 신경망은 원근감, 익숙한 물체의 알려진 크기, 텍스처 기울기, 가림 현상 등의 단서를 사용해 단일 이미지에서 깊이를 예측합니다. 가까이 있는 장난감 자동차와 멀리 있는 실제 자동차가 같은 이미지를 만들 수 있으므로 이 문제는 잘 정의되어 있지 않으며, 모델은 일반적인 장면에 관해 학습한 내용에 의존합니다.
- 비주얼 SLAM 및 기타 다중 뷰 방식: Structure from Motion과 비주얼 SLAM은 서로 다른 위치에서 촬영한 프레임 간 점을 삼각 측량해 깊이를 복원합니다.
딥러닝 기반 단안 깊이 추정#
학습 기반 깊이 모델에는 두 가지 유형이 있습니다. 상대 깊이 모델은 알 수 없는 스케일과 오프셋을 기준으로 표면의 순서와 형태를 예측하며, 이는 배경 흐림 효과를 적용하거나 더 가까운 대상을 순위화하기에 충분합니다. MiDaS는 3D 영화 등을 포함한 다양한 데이터셋을 혼합해 스케일 및 오프셋 불변 손실로 학습함으로써 매우 다양한 장면에서 이 접근 방식을 구현했고, Depth Anything V2는 2,500만 개에서 13억 개의 파라미터를 가진 모델을 합성 레이블과 대규모 의사 레이블이 지정된 실제 이미지 세트로 학습합니다. 미터 단위의 거리를 예측하는 메트릭 깊이 모델은 로봇과 측정 도구에 필요합니다. Apple의 Depth Pro는 표준 GPU에서 카메라 내부 파라미터 없이 0.3초 만에 225만 픽셀의 메트릭 깊이 맵을 생성합니다.
Ultralytics YOLO26 깊이 모델은 로그 깊이 헤드를 사용해 단일 이미지에서 메트릭 깊이를 예측하며, 출력 범위가 약 0.02~150미터이므로 깊이가 몇 미터인 방부터 최대 80미터까지의 주행 장면까지 동일한 모델로 처리할 수 있습니다. 모델을 로드하고 예측한 뒤 결과를 저장하는 데는 몇 줄의 코드면 충분합니다.
from ultralytics import YOLO
# Load a YOLO26 monocular depth model
model = YOLO("yolo26n-depth.pt")
# Predict a depth map for one image
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Per-pixel depth in meters, at the original image's resolution
depth = result.depth.data
print(f"Nearest {depth.min():.1f} m, farthest {depth.max():.1f} m")
# Save a colorized depth map blended over the photo
result.save(filename="depth_result.jpg")출력된 범위는 모델이 거리 장면에서 감지한 가장 가까운 표면과 가장 먼 표면을 나타내며, 저장된 이미지는 각 픽셀을 예측 거리별로 색상 표시합니다.
정확도 측정#
깊이 모델은 센서 정답 데이터와 비교하여 픽셀 단위로 평가합니다. 절대 상대 오차(AbsRel)는 실제 깊이에 대한 오차 비율의 평균을 계산하고, 평균 제곱근 오차(RMSE)는 오차를 미터 단위로 나타내며, δ1은 예측값이 실제값의 1.25배 이내에 드는 픽셀의 비율입니다. 표준 벤치마크는 Kinect 센서로 촬영한 실내 장면인 NYU Depth V2와 LiDAR 정답 데이터가 있는 주행 장면인 KITTI이며, 일반적으로 최대 80미터까지 평가합니다. 상대 깊이 예측은 평가 전에 스케일과 오프셋을 정답 데이터에 맞추므로, 점수는 형태만 측정합니다. 모든 픽셀의 평균은 예측 깊이가 물체 경계를 넘어 번지는 깊이 번짐 현상도 감출 수 있습니다. 이에 Depth Pro는 경계 정확도를 측정하는 전용 지표를 도입했습니다.
깊이 추정과 관련 작업 비교#
- 3D 객체 탐지: 깊이를 입력으로 사용해 객체마다 위치, 크기, 방향을 나타내는 3D 박스를 예측합니다.
- 시맨틱 세그멘테이션: 각 픽셀에 클래스 레이블을 지정하며, 깊이 맵과 결합하면 로봇은 각 표면의 종류와 거리를 모두 파악할 수 있습니다.
- 3D 재구성: 일반적으로 여러 시점의 깊이 정보를 융합해 장면의 전체 메시 또는 포인트 클라우드를 구성합니다.
실제 적용 사례#
- 운전자 보조 및 자율 주행: 카메라 기반 깊이 추정은 LiDAR를 보완하거나 대체하여 탐지된 자동차와 보행자의 거리를 추정합니다.
- 로보틱스: 물체를 잡고 이동하려면 각 표면까지의 거리를 알아야 하며, 단일 RGB 카메라의 깊이 정보는 소형 로봇에 추가 센서를 장착하지 않아도 되게 합니다.
- 증강 현실: 깊이 맵을 사용하면 가상 객체를 실제 객체 뒤에 올바르게 가리고 실제 표면 위에 배치할 수 있습니다.
- 사진: 스마트폰 인물 사진 모드는 듀얼 카메라, 듀얼 픽셀 센서 또는 단안 모델의 깊이 정보를 사용해 배경을 흐리게 처리하며, 각 픽셀의 예측 거리에 따라 흐림 강도를 설정합니다.










