YOLO Vision 2026:

단안 깊이 추정#

Monocular depth estimation examples

단안 깊이 추정(Monocular depth estimation)은 단일 RGB 이미지에서 픽셀별 깊이 맵을 예측합니다. 각 출력 픽셀은 카메라에서 해당 표면 지점까지의 추정 거리를 나타내는 미터(meter) 단위의 깊이 값을 포함합니다.

깊이 모델의 출력은 입력 이미지에 정렬된 (H, W) 형태의 조밀한 부동 소수점 맵(dense float map)입니다. 이 픽셀별 표현은 단안 깊이 추정(monocular depth estimation)을 3D 장면 재구성, 로봇 내비게이션, AR/VR 콘텐츠 제작, 그리고 단일 카메라로부터 공간 레이아웃을 요구하는 모든 애플리케이션에 이상적으로 적합하게 만듭니다.

단안 깊이 추정을 위해 task=depth 또는 yolo depth CLI 태스크를 사용하십시오. YOLO26 깊이 모델 파일은 yolo26n-depth.pt과 같은 -depth 접미사를 사용합니다.



Watch: Monocular Depth Estimation with Ultralytics YOLO26 | Python Tutorial | Vision AI 🚀

Models#

방대한 멀티 데이터셋 믹스(실내 + 실외, ~219만 개 이미지)로 사전 학습된 YOLO26 깊이 모델은 아래에 나와 있습니다. 지표 열은 NYU Depth V2 Eigen 테스트 분할에서 보고됩니다.

Models는 첫 사용 시 최신 Ultralytics release에서 자동으로 다운로드됩니다.

모델크기
(픽셀)
delta1NYUabs_relNYUrmseNYU속도
CPU ONNX
(ms)
속도
T4 TensorRT10
(ms)
파라미터
(M)
FLOPs
(B)
YOLO26n-depth7680.8820.1090.414272.0 ± 27.22.7 ± 0.16.446.9
YOLO26s-depth7680.8960.1040.399393.7 ± 13.13.8 ± 0.013.267.9
YOLO26m-depth7680.9210.0890.364621.5 ± 49.76.0 ± 0.123.3130.7
YOLO26l-depth7680.9300.0830.351821.9 ± 50.77.7 ± 0.127.7157.2
YOLO26x-depth7680.9330.0800.3441240.9 ± 73.313.6 ± 0.257.0302.0
  • **delta1NYU**는 NYU Depth V2 Eigen 테스트 분할(654개 이미지)에서 다중 스케일(multi-scale) + 수평 뒤집기(horizontal-flip) TTA 및 로그 최소 자승(log-least-squares) 정렬을 사용하여 예측된 깊이가 정답(ground truth)의 1.25배 이내인 픽셀의 비율입니다.
  • TTA가 없는 단일 스케일 정확도는 yolo depth val model=yolo26n-depth.pt data=nyu-depth.yaml imgsz=768 device=0(model=을 각 크기에 대입)을 사용하여 재현할 수 있으며, 이 방식은 중앙값(스케일 전용) 정렬을 사용하고 다음과 같이 더 낮은 점수를 기록합니다: delta1 0.783 (n), 0.793 (s), 0.840 (m), 0.853 (l), 0.860 (x).
  • abs_rel은 예측된 깊이 값과 실제 깊이 값 사이의 평균 절대 상대 오차입니다.
  • rmse는 미터(meter) 단위의 평균 제곱근 오차(root mean squared error)입니다.
  • 속도는 웜업 후 타이밍이 측정된 실행에 대한 평균 ± 표준편차로 보고되는 imgsz=768, batch=1에서의 추론 전용 지연 시간(전처리/후처리 제외)입니다. CPU ONNX는 32코어 Intel Xeon(Skylake)에서의 ONNX Runtime fp32이며, T4 TensorRT10은 Tesla T4에서의 TensorRT fp16입니다.
  • paramsFLOPs는 배포된 가중치의 학습 해상도인 768×768에서 측정되었습니다.

Depth Anything V2와 속도 비교#

Depth Anything V2는 단안 깊이를 위해 널리 사용되는 오픈 소스 베이스라인입니다. DINOv2 vision transformer 백본과 DPT 디코더는 연산 집약적이므로, 동일한 Tesla T4 및 TensorRT fp16 환경에서 출시된 가장 작은 Depth Anything V2 모델은 두 배 이상의 파라미터를 갖는 YOLO26x-depth를 포함한 모든 YOLO26 깊이 모델보다 느립니다.

약 ~768 px — YOLO26의 경우 릴리스된 가중치가 학습된 해상도인 imgsz=768, 그리고 DINOv2 백본이 14의 패치 크기의 배수를 요구하는 Depth Anything V2의 경우 770 px:

모델params (M)FLOPs (B)T4 TensorRT10 (ms)FPSV2 Small 대비 속도 향상V2 Base 대비 속도 향상
Depth Anything V2 Base97.51025.555.4018.1
Depth Anything V2 Small24.8346.920.9947.6
YOLO26x-depth57.0302.013.5773.71.5×4.1×
YOLO26l-depth27.7157.27.68130.22.7×7.2×
YOLO26m-depth23.3130.76.00166.73.5×9.2×
YOLO26s-depth13.267.93.82261.65.5×14.5×
YOLO26n-depth6.446.92.73365.87.7×20.3×

~640 px 기준 — 각각 imgsz=640 및 644 px — 순서는 동일하며, YOLO26n-depth는 Depth Anything V2 Small보다 5.9배 빠릅니다:

모델T4 TensorRT10 (ms)FPS
Depth Anything V2 Base35.1028.5
Depth Anything V2 Small13.6273.4
YOLO26x-depth10.2697.5
YOLO26l-depth6.14162.8
YOLO26m-depth4.71212.1
YOLO26s-depth3.08324.4
YOLO26n-depth2.29436.9
  • 지연 시간은 추론 전용이며, batch=1, Tesla T4의 TensorRT fp16 — 위 모델 테이블과 동일한 하니스이며, 여기서는 소수점 둘째 자리까지 표시됩니다. FPS는 반올림되지 않은 지연 시간의 역수입니다. Speedup 열은 Depth Anything V2 Small(20.99 ms) 및 Base(55.40 ms)의 지연 시간을 YOLO26 지연 시간으로 나눈 값입니다.
  • Depth Anything V2 Small 및 Base는 공개된 ViT-S 및 ViT-B 체크포인트입니다.
  • 이 비교는 레이턴시만을 다루며, 두 모델 패밀리는 공통된 정확도 프로토콜 하에서 평가되지 않았습니다.

깊이 범위 및 로그 깊이 헤드#

깊이 헤드는 exp(logit)무한대(~0.02–150 m) —를 예측하며 장면 모양과 절대 스케일을 분리합니다: 네트워크는 상대적 로그 깊이 필드를 예측하고, 절대 미터는 평가 시 복구되는 별도의 두 파라미터 변환(exp(a·log d + b)), 경량 보정 또는 파인튜닝을 통해 설정됩니다. 일반적인 대안인 유계 sigmoid × max_depth 헤드는 아키텍처에 고정된 상한선을 내장하므로 max_depth을 초과하는 모든 깊이가 잘려나가며, 이로 인해 더 먼 거리의 장면에 대한 학습과 예측이 방해받습니다.

헤드가 비경계(unbounded)인 이유: 깊이 범위 전반에 걸친 증거#

제어된 A/B 테스트 — 동일 데이터, 동일 일정, 오직 헤드만 다름. 실내(≤10 m) 및 실외(≤80 m) 데이터의 동일한 조합으로 두 헤드를 처음부터 학습한 결과:

헤드출력 범위혼합 범위 val δ1학습 동작
sigmoid × max_depth (10 m)0–10 m 범위 제한0.221에포크 1에서 정체
log (무한대)0–~150 m0.367 (+66%)학습 내내 향상됨

유계 헤드는 10m를 초과하는 대다수의 실외 픽셀을 표현할 수 없으므로 거의 즉시 개선이 멈추지만, log 헤드는 전체 범위에서 학습합니다.

해결된 실패 모드 — 범위별로 계층화된 단일 데이터셋 미세 조정. 경계(10 m) 헤드를 개별 데이터셋으로 미세 조정하면 데이터가 제한 범위 내에 있을 때는 잘 작동하지만, 범위를 초과하면 결과가 무너집니다:

데이터셋깊이 범위경계 헤드 δ1
SUN RGB-D≤10 m0.78 ✅
Hypersim대부분 ≤10 m0.74 ✅
KITTI~80 m0.08 ❌ (abs_rel ≈ 7.0 — 80/10 스케일 불일치)
vKITTI280 m0.04 ❌

붕괴 현상은 상한 경계에서 정확히 발생합니다. log 헤드에는 그러한 경계가 없습니다.

출시된 모델 — 교차 범위 성능. 10m(NYU, iBims-1)에서 80m(KITTI)에 이르는 벤치마크에 걸쳐 스케일이 정렬된 δ1으로 평가된, 출고된 log 헤드 제품군:

벤치마크범위YOLO26x-depth (log)이전 경계 모델 릴리스
NYU Eigen10 m0.9330.934
iBims-110 m0.9610.945
ETH3D~60 m0.9590.931
Make3D~70 m0.3020.296
KITTI Eigen80 m0.9420.891
평균0.8190.799

두 열 모두 원본에 게시된 그대로입니다. 나머지 행은 해당 데이터셋 페이지에 설명된 TTA 및 로그 최소 자승 프로토콜을 사용하여 점수가 매겨졌으며, 이 저장소의 검증기는 이를 구현하지 않으므로 KITTI 행은 동일한 조건에서 다시 측정할 수 없습니다. KITTI page에는 표준 652프레임 Eigen 분할에서 측정한 수치가 기재되어 있습니다.

가장 큰 성능 향상은 실내 성능을 유지하면서도 고정된 10 m 제한이 가장 문제가 되는 장거리 실외 벤치마크(KITTI, ETH3D)에서 나타납니다.

학습(Train)#

이미지 크기 640으로 100 epochs 동안 Depth8 데이터셋에서 YOLO26n-depth를 학습시킵니다. 사용 가능한 전체 인자 목록은 Configuration 페이지를 참조하십시오.

예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.yaml")  # build a new model from YAML
model = YOLO("yolo26n-depth.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-depth.yaml").load("yolo26n-depth.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="depth8.yaml", epochs=100, imgsz=640)

전체 train 모드 세부 정보는 Train 페이지에서 확인하세요.

사용자 정의 데이터로 미세 조정#

사전 학습된 깊이 모델을 커스텀 데이터셋에 적응시킬 때는 학습률을 낮추고 AdamW 최적화기를 사용하세요. 기본 최적화기 설정은 처음부터 학습하는 것(lr0=0.01을 사용하는 SGD)에 맞춰져 있으므로, 이미 수렴된 깊이 모델에 적용하면 사전 학습된 지식을 덮어쓰고 결과가 저하될 수 있으며, 특히 단일 도메인에서 파인튜닝할 때 더욱 그렇습니다.

권장 미세 조정 레시피
from ultralytics import YOLO

model = YOLO("yolo26s-depth.pt")  # start from pretrained weights

model.train(
    data="path/to/your_dataset.yaml",
    epochs=20,
    imgsz=640,
    optimizer="AdamW",
    lr0=1e-4,  # ~100x below the from-scratch default
    warmup_bias_lr=1e-4,  # keep warmup gentle too
)

추가 팁:

  • 증강은 표준 인수(degrees, translate, scale, shear, perspective, flipud, fliplr, hsv_h, hsv_s, hsv_v)로 제어됩니다. 기하학적 워프와 대칭 이동은 쌍을 이루는 깊이 맵에도 동일하게 적용됩니다. 출시된 YOLO26-Depth 가중치에 사용된 정확한 레시피를 보려면 체크포인트에 저장된 train_args을 검사하세요. Inspecting YOLO26 Checkpoint Training Args를 참조하세요.
  • mosaic, mixup, cutmix, copy_paste은 깊이(depth)용으로 구현되지 않았습니다. 깊이 데이터셋 로더는 이러한 확률을 자동으로 0으로 설정하므로 전달해도 아무런 효과가 없습니다. 이러한 증강은 여러 이미지를 결합하여 유효하지 않은 쌍을 이룬 깊이 맵을 생성하기 때문에 지원되지 않습니다.
  • 어떤 깊이 범위든 즉시 작동합니다. log 헤드 모델은 무한대 깊이를 예측하므로 변경 없이 단거리(매크로) 또는 장거리(실외/주행) 데이터에 적응합니다. 데이터셋 YAML에 max_depth:(미터 단위)을 설정하면 검증 지표에 카운트될 GT 픽셀의 범위를 제한할 수 있습니다.
  • 일반 성능 유지. 학습 데이터셋을 벗어난 장면에서도 모델이 정확도를 유지해야 한다면, 학습 데이터에 다양한 일반 목적 이미지를 소량(약 5–10%) 섞으십시오. 이는 미세 조정 중 발생하는 망각 현상을 크게 줄여줍니다.
  • 도메인이 매우 다르고 대규모 데이터셋이 있는 경우에만 처음부터 학습(model=yolo26s-depth.yaml)하세요. 이 경우 보존할 사전 학습된 가중치가 없으므로 기본 SGD lr0=0.01이 적절합니다.

깊이 스케일 보정#

깊이 헤드는 모양(상대적 장면 구조)과 스케일(절대 미터)을 분리합니다. 모델이 장면에 대해 이미 좋은 상대적 깊이를 생성하지만 카메라의 절대값이 맞지 않는 경우, 소규모 레이블 지정 세트에 대한 두 파라미터 로그-어핀의 닫힌 형식 적합(closed-form fit)인 model.calibrate()을 사용하여 몇 초 만에 스케일을 수정할 수 있습니다. 그래디언트 학습이 없고 네트워크 가중치가 변경되지 않으므로 상대적 구조가 저하될 수 없습니다.

스케일 보정
from ultralytics import YOLO

model = YOLO("yolo26s-depth.pt")

# Fit scale on a labeled split (~100+ images is enough), then persist it
model.calibrate(data="path/to/your_dataset.yaml")
model.save("yolo26s-depth-calibrated.pt")

보정(calibration)을 수행하려면 맞출 그라운드 트루스(ground-truth) 깊이가 필요하므로 레이블이 지정된 분할에서 실행됩니다. 블라인드 추론 시에는 수행할 수 없습니다. 이는 val 지표가 평가하는 것과 동일한 픽셀에서 적합 및 점수 산정을 수행합니다. 데이터셋 YAML의 max_depth(기본값 100m)에 있거나 그를 초과하는 GT는 제외됩니다. 상대적 깊이는 이미 좋고 스케일/범위만 잘못된 경우에 사용하세요. 도메인에 맞게 상대적 구조 자체가 변경되어야 하는 경우 대신 fine-tune하세요.

학습을 통해 이 작업이 자동으로 수행됩니다. model.train(...)이 완료되면 최고 성능 및 최신 체크포인트가 검증 세트에서 보정되어 즉시 미터 단위로 스케일된 깊이를 출력합니다.

출시된 yolo26*-depth.pt 체크포인트는 사전 학습 검증 믹스에 맞춰 적합된 이 보정이 이미 내장된 상태로 제공됩니다. 이는 모든 도메인에 걸친 단일 글로벌 스케일이므로, 특정 카메라나 장면 유형에서 가장 정확한 절대 깊이를 얻으려면 사용자의 데이터에서 가져온 소규모 레이블 지정 분할에 대해 model.calibrate()을 실행하세요. 이 작업이 내장된 적합을 대체합니다.

데이터셋 형식#

깊이 추정 데이터셋은 각 RGB 이미지와 해당 깊이 파일을 쌍으로 제공합니다. 깊이 타겟은 미터 단위의 float32 값을 포함하는 .npy 배열로 저장됩니다. 데이터셋 YAML은 images/ 디렉토리를 가리키며, 로더는 경로의 images 구성 요소를 depth으로 교체하고 이미지 확장자를 .npy로 교체하여 깊이 파일 경로를 유도합니다.

dataset/
├── images/
│   ├── train/
│   └── val/
└── depth/
    ├── train/
    └── val/

예를 들어, images/train/scene_001.jpg에 있는 이미지는 depth/train/scene_001.npy에 있는 깊이 맵과 쌍을 이룹니다. 전체 형식 사양은 Depth Estimation Dataset Guide를 참조하세요.

검증(Val)#

깊이 추정 데이터셋에서 학습된 YOLO26n-depth 모델의 accuracy를 검증합니다. 검증이 의도된 데이터셋 YAML을 사용하도록 data을 명시적으로 전달하십시오. 출시된 가중치는 imgsz=768에서 학습되었으므로 최상의 정확도를 위해 해당 크기로 검증 및 예측하십시오.

예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val(data="nyu-depth.yaml")
metrics.delta1  # percentage of pixels within threshold δ=1.25
metrics.abs_rel  # mean absolute relative error
metrics.rmse  # root mean squared error (meters)
metrics.silog  # scale-invariant logarithmic error

추론(Predict)#

학습된 YOLO26n-depth 모델을 사용하여 이미지에 대한 예측을 실행하십시오.

예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

# Access the results
for result in results:
    depth_map = result.depth.data.cpu().numpy()  # torch.Tensor -> NumPy float32, shape (H, W), meters

전체 predict 모드 세부 정보는 Predict 페이지에서 확인하세요.

결과 출력#

YOLO 깊이 추정은 이미지당 하나의 Results 객체를 반환합니다. 각 결과는 전체 이미지에 대해 하나의 조밀한 부동 소수점 깊이 맵을 저장합니다.

속성유형형태설명
result.depthDepthMap(H,W)픽셀별 조밀 깊이 맵.
result.depth.datatorch.Tensor(H,W)깊이 값은 미터 단위입니다. NumPy를 사용하려면 .cpu().numpy()을 호출하십시오.
result.boxes--인스턴스 박스 없음.
result.masks--인스턴스 마스크 없음.

모든 작업에 걸친 작업별 Results 필드는 Predict Results by Task 섹션을 참조하십시오.

깊이 맵 컬러화#

원본 깊이 맵은 미터 단위의 단일 채널 float 배열이며 연산에는 유용하지만 직접 읽기는 어렵습니다. 컬러 이미지로 변환하려면 ultralytics.utils.plottingcolorize_depth 헬퍼를 사용하십시오. 이 헬퍼는 (H, W) 깊이 배열을 uint8 BGR (H, W, 3) 이미지로 매핑합니다(유효하지 않은 픽셀인 <= 0는 검정색으로 렌더링됩니다).

result.plot()은 기본값(cmap="jet", mode="disparity")을 사용하여 이 컬러화를 입력 이미지 위에 이미 블렌딩합니다. 독립형 컬러 깊이 이미지나 다른 컬러맵 또는 정규화가 필요한 경우 colorize_depth을 직접 호출하십시오.

예측된 깊이 맵 컬러화
import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import colorize_depth

model = YOLO("yolo26n-depth.pt")
result = model("https://ultralytics.com/images/bus.jpg")[0]

depth = result.depth.data.cpu().numpy()  # (H, W) float32, meters

# Colorize with near = warm and save
cv2.imwrite("depth_colored.png", colorize_depth(depth, cmap="spectral"))  # (H, W, 3) BGR uint8

# Fix the range to 0-20 m so the same color means the same distance across frames
cv2.imwrite("depth_metric.png", colorize_depth(depth, vmin=0.0, vmax=20.0, cmap="inferno", mode="metric"))

# Blended overlay straight from the Results object (uses cmap="jet", mode="disparity")
result.save("depth_overlay.png")

모든 컬러맵은 차가운 색/어두운 색 → 따뜻한 색/밝은 색으로 실행됩니다. mode은 어느 쪽이 가까운지 결정하며, vmin/vmax는 프레임 전반에 걸쳐 범위를 고정하므로 색상이 항상 동일한 거리를 의미합니다.

인수설명
cmapjet (기본값)고대비 파란색 → 초록색 → 빨간색, result.plot()이 사용하는 팔레트입니다.
cmapinferno검정색 → 보라색 → 주황색 → 노란색. 지각적으로 균일하며, 색맹 친화적이고, 그레이스케일에서도 읽기 쉽습니다.
cmapspectral빨간색 → 노란색 → 초록색 → 파란색 (matplotlib Spectral_r).
modedisparity (기본값)2백분위수와 98백분위수 사이에서 역 깊이(1/d)를 정규화합니다. 따뜻한 색상의 근거리 및 원거리 이상값이 흡수됩니다.
modemetricvminvmax 사이에서 미터 단위의 깊이를 선형으로 정규화합니다. 따뜻한 색상은 먼 거리를 나타내므로 색상이 실제 거리를 추적합니다.

내보내기(Export)#

YOLO26n-depth 모델을 ONNX, CoreML 등과 같은 다른 형식으로 내보내십시오.

예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Export the model
model.export(format="onnx")

사용 가능한 YOLO26 깊이 추정 내보내기 형식은 아래 표에 있습니다. format 인수(예: format='onnx' 또는 format='engine')를 사용하여 모든 형식으로 내보낼 수 있습니다. 내보낸 모델에서 직접 예측하거나 검증할 수 있습니다(예: yolo predict model=yolo26n-depth.onnx). 내보내기가 완료된 후 모델에 대한 사용 예시가 표시됩니다.

형식format 인수모델메타데이터인수
PyTorch-yolo26n-depth.pt-
TorchScripttorchscriptyolo26n-depth.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-depth.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-depth_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-depth.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-depth.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-depth_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-depth.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-depth_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-depth_paddle_model/imgsz, batch, device
MNNmnnyolo26n-depth.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-depth_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-depth_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-depth_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-depth_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-depth_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-depth_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-depth_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-depth.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-depth_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-depth_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms

전체 export 세부 정보는 Export 페이지에서 확인하세요.

FAQ#

  • 쌍을 이룬 RGB 이미지와 .npy 깊이 파일을 준비한 다음, images/ 디렉토리를 가리키는 데이터셋 YAML을 생성합니다. 로더는 경로에서 imagesdepth으로 교체하고 이미지 확장자를 .npy로 교체하여 깊이 파일을 자동으로 찾습니다.

    사전 학습된 가중치에서 시작하고 AdamW와 함께 낮은 학습률을 사용하여 파인튜닝이 모델이 이미 알고 있는 내용을 유지하도록 하십시오(이유는 Fine-tuning on your own data 참조):

    예시
    from ultralytics import YOLO
    
    # Load a pretrained YOLO26 depth model
    model = YOLO("yolo26s-depth.pt")
    
    # Fine-tune on a custom depth dataset
    results = model.train(
        data="path/to/your_dataset.yaml",
        epochs=20,
        imgsz=640,
        optimizer="AdamW",
        lr0=1e-4,
        warmup_bias_lr=1e-4,
    )

    사용 가능한 더 많은 인수는 Configuration 페이지를 확인하세요.

  • 깊이 추정 검증은 Depth Anything 및 관련 단안 깊이 연구에서 사용하는 메트릭 세트를 보고합니다:

    • delta1 / delta2 / delta3 — 예측된 깊이와 실제(ground-truth) 깊이(또는 그 역수)의 비율이 각각 1.25, 1.25², 1.25³ 미만인 픽셀의 비율입니다. 높을수록 좋습니다.
    • abs_rel — 평균 절대 상대 오차입니다. 낮을수록 좋습니다.
    • rmse — 미터(m) 단위의 평균 제곱근 오차입니다. 낮을수록 좋습니다.
    • silog — 척도 불변 로그 오차입니다. 낮을수록 좋습니다.

    각 예측은 이미지별로 정답(ground truth)에 중앙값 정렬(median-aligned)되며, 각 측정 항목은 해당 이미지에서 확정되고, 해당 이미지별 결과는 검증 세트 전반에 걸쳐 평균화되므로 유효한 깊이 픽셀 수에 관계없이 모든 이미지는 동일한 가중치를 갖습니다. 유효한 정답 픽셀이 10개 미만인 이미지는 소수의 픽셀 중앙값을 정렬하는 것이 의미가 없으므로 건너뛰어 해당 평균에 포함되지 않으며, 유한하지 않은 예측은 대신 깊이 경계에서 점수가 매겨집니다. 이는 Depth Anything V2에서 사용되는 샘플별 평균화 및 10픽셀 하한값과 일치합니다.

  • 깊이 맵은 각 값이 미터 단위의 예측된 깊이인 (H, W) 형태의 torch.Tensor으로 저장됩니다(NumPy float32 배열의 경우 result.depth.data.cpu().numpy()를 사용하십시오). 예측을 실행한 후 result.depth.data를 통해 접근하십시오. 맵은 입력 이미지 해상도에 정렬됩니다.

  • Ultralytics YOLO26은 NYU Depth V2, KITTI, Hypersim, SUN RGB-D, ARKitScenes를 포함한 여러 깊이 추정 데이터셋에 대한 내장 데이터셋 YAML 구성을 제공합니다. 전체 목록 및 형식 세부 정보는 Depth Estimation Dataset Guide를 참조하십시오.

  • 평가에 사용된 데이터셋 YAML을 제공하여 사전 학습된 YOLO26 깊이 모델을 검증하십시오:

    예시
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n-depth.pt")
    
    # Validate the model
    metrics = model.val(data="nyu-depth.yaml")
    print("delta1:", metrics.delta1)
    print("abs_rel:", metrics.abs_rel)
    print("rmse:", metrics.rmse)
  • Python 또는 CLI를 사용하여 YOLO26 깊이 모델을 ONNX로 내보내십시오:

    예시
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n-depth.pt")
    
    # Export the model to ONNX format
    model.export(format="onnx")

    다양한 형식으로 내보내는 방법에 대한 자세한 내용은 Export 페이지를 참조하십시오.

댓글