Polydesk-logotype
Polydesk.ai — Header

Depth Estimation (Estimation de Profondeur)

La depth estimation (ou estimation de profondeur) est une tâche de vision par ordinateur qui consiste à prédire la distance entre la caméra et chaque pixel d’une image, produisant une carte de profondeur (depth map) qui représente la structure 3D de la scène.

Vous utilisez le mode Portrait de votre smartphone pour flouter l’arrière-plan. Un véhicule autonome évalue la distance des obstacles sans LiDAR. Un logiciel de retouche photo isole un objet de son arrière-plan automatiquement. Une application AR place un meuble virtuel à la bonne échelle dans votre salon. Toutes ces applications reposent sur l’estimation de profondeur, une brique fondamentale qui donne à l’ordinateur la capacité de percevoir la troisième dimension à partir d’images 2D.

Le domaine a connu une accélération spectaculaire : les foundation models comme Depth Anything V2 et Depth Pro (Apple, ICLR 2025) produisent des cartes de profondeur haute résolution en zero-shot, sans calibration caméra, en moins d’une seconde. Le marché de la vision 3D continue de croître, porté par les besoins de la conduite autonome, de la réalité augmentée et de la reconstruction 3D.

Depth Estimation en bref
Catégorie
Vision par ordinateur / Perception 3D
Types
Monoculaire (1 image), stéréo (2 images), multi-vues, capteur actif (LiDAR, ToF)
Sortie
Relative (ordre proche/loin) ou métrique (distance absolue en mètres)
Modèles clés
Depth Anything V2, Depth Pro, Marigold, MiDaS, DepthCrafter, FoundationStereo
Benchmarks
KITTI, NYU Depth V2, Sintel, DA-2K
Métriques
AbsRel, δ₁ (threshold accuracy), RMSE, F1 (boundary)

Comment fonctionne l’estimation de profondeur

Une carte de profondeur (depth map) est une image en niveaux de gris où l’intensité de chaque pixel encode sa distance à la caméra. Les pixels clairs sont proches, les sombres sont lointains (ou l’inverse, selon la convention). Cette information transforme une image 2D en une représentation quasi-3D exploitable par d’autres algorithmes.

Profondeur relative vs métrique

Profondeur relative. Le modèle prédit l’ordre de profondeur (quel pixel est plus proche que quel autre), normalisé entre 0 et 1. C’est suffisant pour des applications comme le flou d’arrière-plan, l’édition d’images et les effets visuels. La plupart des modèles foundation (Depth Anything V2, Marigold, MiDaS) produisent par défaut de la profondeur relative.

Profondeur métrique (MMDE). Le modèle prédit la distance absolue en mètres. C’est indispensable pour la conduite autonome, la robotique, le SLAM visuel et la reconstruction 3D à l’échelle réelle. Le challenge est plus difficile car le modèle doit inférer l’échelle absolue sans connaître les paramètres de la caméra (focale). Depth Pro (Apple) est le premier foundation model à prédire la profondeur métrique en zero-shot avec une estimation intégrée de la focale.

Les grandes approches

Monoculaire. Un seul réseau de neurones prédit la profondeur à partir d’une seule image RGB. C’est le problème le plus étudié car il n’exige qu’une caméra standard. Le modèle s’appuie sur des indices visuels appris (perspective, taille relative, occultation, gradient de texture) pour inférer la profondeur. Les approches modernes utilisent des Vision Transformers (ViT) entraînés sur des millions d’images.

Stéréo. Deux images prises simultanément depuis deux positions légèrement différentes (comme les yeux humains) permettent de calculer la profondeur par triangulation. La disparité (décalage horizontal) entre les deux vues est inversement proportionnelle à la profondeur. FoundationStereo (NVIDIA, CVPR 2025, nominé Best Paper) est le foundation model de référence pour le stereo matching zero-shot, avec le 1er rang sur les leaderboards Middlebury et ETH3D.

Multi-vues et SfM. Structure from Motion (SfM) reconstruit la profondeur à partir de multiples vues d’une même scène, typiquement extraites d’une vidéo. COLMAP est l’outil de référence. Combiné avec les modèles monoculaires, le SfM alimente les pipelines de reconstruction 3D et de Gaussian Splatting.

Capteurs actifs. Les capteurs LiDAR (impulsions laser), Time-of-Flight (ToF) et à lumière structurée (Face ID d’Apple) mesurent directement la profondeur. Ils sont précis mais coûteux, sensibles aux conditions extérieures, et produisent des cartes souvent éparses. Les approches hybrides combinent capteurs actifs et estimation par deep learning pour obtenir des cartes denses et précises.


Modèles clés

ModèleTypeSortieVitesseForce
Depth Anything V2 (2024)MonoculaireRelatif (+ metric fine-tune)~60 ms (ViT-S, V100)Meilleur rapport qualité/vitesse, 25M-1,3B params
Depth Pro (Apple, ICLR 2025)MonoculaireMétrique (zero-shot)~0,3 s (GPU standard)Meilleure précision frontières (F1 0,409), estimation focale intégrée
Marigold (2024)MonoculaireRelatif~2-5 s (V100)Génératif (Stable Diffusion), bonne généralisation
MiDaS v3.1 (Intel)MonoculaireRelatifRapidePionnier cross-dataset, robuste, largement adopté
DepthFM (AAAI 2025, Oral)MonoculaireRelatif~213 ms (V100)Flow matching en 1 step, rapide pour un modèle génératif
DepthCrafter (CVPR 2025)VidéoRelatifPlus lent (diffusion)Cohérence temporelle, jusqu’à 110 frames
FoundationStereo (NVIDIA, CVPR 2025)StéréoMétrique~26 FPS (Jetson, basse rés.)1er Middlebury + ETH3D, zero-shot stereo SOTA
Metric3D v2MonoculaireMétriqueModéréBon compromis metric accuracy

Depth Anything V2

Depth Anything V2 (NeurIPS 2024) est le modèle monoculaire de référence pour la profondeur relative. Son approche : un teacher model ViT-Giant entraîné sur des images synthétiques précises génère des pseudo-labels sur des millions d’images réelles, puis des modèles students de tailles variées (25M à 1,3B paramètres) apprennent à partir de ces pseudo-labels. Le résultat est un modèle robuste et rapide, 10x plus rapide que les approches basées sur Stable Diffusion (Marigold) avec une meilleure précision. Sur le benchmark DA-2K (scènes diversifiées), même le plus petit modèle (ViT-S) atteint 95,3% d’accuracy contre 86,8% pour Marigold. Le modèle peut être fine-tuné pour la profondeur métrique avec des datasets synthétiques (Hypersim, Virtual KITTI).

Depth Pro (Apple)

Depth Pro (ICLR 2025) est le premier foundation model qui produit des cartes de profondeur métriques en zero-shot, sans nécessiter les paramètres intrinsèques de la caméra. Son architecture multi-échelle à base de Vision Transformer génère des depth maps de 2,25 mégapixels en 0,3 seconde avec une netteté des contours inégalée. Sur le benchmark Sintel, Depth Pro atteint un score F1 de 0,409 pour la précision des frontières, contre 0,228 pour Depth Anything V2 et 0,068 pour Marigold. Le modèle inclut une estimation de la focale à partir de l’image, ce qui le rend utilisable sur n’importe quelle photo sans métadonnées. Depth Pro est open-source (504M paramètres, ~6 Go VRAM).

Marigold

Marigold reprend une approche radicalement différente : fine-tuner un modèle de diffusion (Stable Diffusion) pour l’estimation de profondeur. L’idée est de réutiliser les « priors visuels » riches appris par les modèles génératifs sur des milliards d’images. La profondeur est traitée comme un problème de génération conditionnelle : étant donné une image, le modèle génère la carte de profondeur par débruitage itératif. Le résultat offre une bonne généralisation et des détails fins, mais au prix d’une latence élevée (2 à 5 secondes, car plusieurs étapes de débruitage). La variante LCM (Latent Consistency Model) réduit ce temps à environ 2 secondes.

MiDaS

MiDaS (Intel, 2020, mis à jour en v3.1) a marqué un tournant en démontrant qu’on pouvait entraîner un modèle sur un mélange de datasets hétérogènes (KITTI, NYU, ReDWeb, etc.) avec des loss functions invariantes à l’échelle et au shift. Cette approche a permis une généralisation cross-domain sans précédent. Bien que dépassé en performance brute, MiDaS reste largement utilisé grâce à sa robustesse, sa simplicité d’intégration, et son rôle fondateur dans le domaine.

DepthCrafter (vidéo)

DepthCrafter (CVPR 2025) étend l’estimation de profondeur aux vidéos en assurant la cohérence temporelle entre frames. Le modèle, entraîné à partir d’un modèle de diffusion image-to-video, traite des séquences allant jusqu’à 110 frames et produit des cartes de profondeur temporellement stables, sans nécessiter de poses caméra ou de flux optique en entrée. Un mécanisme de stitching permet de traiter des vidéos arbitrairement longues par segments.

FoundationStereo (stéréo)

FoundationStereo (NVIDIA, CVPR 2025, nominé Best Paper) est le foundation model pour l’estimation de profondeur stéréo. Entraîné sur 1 million de paires stéréo synthétiques de haute qualité, il utilise un backbone hybride CNN + ViT avec un module Attentive Hybrid Cost Volume pour le filtrage de la disparité. Le modèle a atteint le 1er rang sur les leaderboards Middlebury et ETH3D en zero-shot. Sa version optimisée avec TensorRT atteint 26 FPS sur NVIDIA Jetson AGX Orin en basse résolution, permettant un déploiement temps réel sur des plateformes embarquées.


Utilisation en pratique

Depth Anything V2 (Python)

# pip install transformers torch pillow
from transformers import pipeline
from PIL import Image

# Charger le pipeline (modèle Small, rapide)
pipe = pipeline(
    task="depth-estimation",
    model="depth-anything/Depth-Anything-V2-Small-hf"
)

# Estimer la profondeur
image = Image.open("photo.jpg")
result = pipe(image)
depth_map = result["depth"]  # Image PIL en niveaux de gris

# Sauvegarder la carte de profondeur
depth_map.save("depth_map.png")

# Pour la version métrique (fine-tuned)
pipe_metric = pipeline(
    task="depth-estimation",
    model="depth-anything/Depth-Anything-V2-Metric-Indoor-Small-hf"
)
result_metric = pipe_metric(image)
# result_metric["predicted_depth"] contient les distances en mètres

Depth Pro (Apple)

# pip install depth-pro
import depth_pro

# Charger le modèle et les transformations
model, transform = depth_pro.create_model_and_transforms()
model.eval()

# Charger et préparer l'image
image, _, f_px = depth_pro.load_rgb("photo.jpg")
image = transform(image)

# Inférence
prediction = model.infer(image, f_px=f_px)
depth = prediction["depth"]       # Carte de profondeur métrique (en mètres)
focallength_px = prediction["focallength_px"]  # Focale estimée

print(f"Focale estimée : {focallength_px:.1f} px")
print(f"Profondeur min : {depth.min():.2f} m, max : {depth.max():.2f} m")

MiDaS (rapide et universel)

import torch

# Charger MiDaS via PyTorch Hub
model = torch.hub.load("intel-isl/MiDaS", "DPT_Large")
model.eval()

midas_transforms = torch.hub.load("intel-isl/MiDaS", "transforms")
transform = midas_transforms.dpt_transform

import cv2
img = cv2.imread("photo.jpg")
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

input_batch = transform(img_rgb)

with torch.no_grad():
    prediction = model(input_batch)
    prediction = torch.nn.functional.interpolate(
        prediction.unsqueeze(1),
        size=img_rgb.shape[:2],
        mode="bicubic"
    ).squeeze()

depth_map = prediction.numpy()
# Valeurs relatives : plus élevé = plus proche
Quel modèle choisir ? Pour la vitesse et le déploiement, Depth Anything V2 (Small ou Base). Pour la profondeur métrique sans calibration, Depth Pro. Pour la vidéo avec cohérence temporelle, DepthCrafter. Pour le stéréo, FoundationStereo. Pour l’intégration rapide dans un pipeline existant, MiDaS. Pour la plus haute qualité visuelle (édition créative), Marigold.

Benchmarks et métriques

Métriques principales

AbsRel (Absolute Relative Error). Erreur relative moyenne entre la profondeur prédite et la vérité terrain. Plus bas est mieux. C’est la métrique standard pour comparer les modèles monoculaires.

δ₁ (Threshold Accuracy). Pourcentage de pixels où la profondeur prédite est à moins de 25% de la vérité terrain (max(pred/gt, gt/pred) < 1,25). Plus haut est mieux. Une δ₁ de 0,89 signifie que 89% des pixels sont correctement estimés.

RMSE (Root Mean Square Error). Erreur quadratique moyenne en mètres. Pénalise davantage les grosses erreurs. Utilisée principalement pour l’évaluation métrique.

F1 (Boundary Accuracy). Métrique introduite par l’équipe Depth Pro pour évaluer la netteté des contours dans les cartes de profondeur. Mesure la précision des transitions de profondeur aux limites des objets (cheveux, grillages, structures fines).

Datasets de référence

DatasetTypeScènesUsage
KITTIExtérieur, LiDARConduite autonome, routesBenchmark métrique extérieur
NYU Depth V2Intérieur, Kinect464 scènes intérieuresBenchmark métrique intérieur
SintelSynthétiqueScènes animées complexesÉvaluation frontières (F1)
DA-2KDiversifié, sparse2000 images variées (IA, météo, sous-marin, aérien)Évaluation relative cross-domain
MiddleburyStéréo, intérieurScènes contrôlées haute résolutionBenchmark stereo matching
ETH3DStéréo, variéIntérieur + extérieurBenchmark stereo matching
SUN-RGBDIntérieur, multi-capteur10K images RGBDÉvaluation métrique indoor

Comparaison des modèles

ModèleDA-2K AccuracySintel F1 (boundary)SUN-RGBD δ₁Latence (V100)
Depth Anything V2 (ViT-S)95,3%0,2280,724~60 ms
Depth Pro (Apple)N/A0,4090,890~300 ms
Marigold86,8%0,068N/A~5,2 s
DepthFMN/AN/AN/A~213 ms
MiDaS v3.1N/A0,181N/ARapide

Depth Pro domine sur la précision des frontières et la profondeur métrique zero-shot. Depth Anything V2 offre le meilleur rapport qualité/vitesse pour la profondeur relative. Marigold génère des détails fins mais reste lent à cause du processus de diffusion multi-étapes.


Applications

Conduite autonome. L’estimation de profondeur monoculaire est une alternative low-cost au LiDAR pour la perception 3D des véhicules autonomes. Elle permet la détection d’obstacles, l’évaluation des distances de sécurité, et la planification de trajectoire. Les approches hybrides combinant caméra monoculaire et profondeur estimée par deep learning gagnent du terrain pour les systèmes de conduite ADAS et autonomie de niveau 2-3.

Réalité augmentée. L’estimation de profondeur permet de placer des objets virtuels à la bonne échelle et de gérer les occlusions (un objet virtuel disparaît derrière un meuble réel). Depth Pro est particulièrement adapté grâce à sa profondeur métrique zero-shot : l’application sait que le mur est à 3,2 mètres sans avoir besoin de calibrer la caméra.

Photographie computationnelle. Le mode Portrait (bokeh artificiel) des smartphones utilise l’estimation de profondeur pour séparer le sujet du fond et appliquer un flou progressif. L’édition photo assistée par IA (suppression d’arrière-plan, relighting, effets 3D) exploite aussi les depth maps.

Reconstruction 3D et NeRF/Gaussian Splatting. Les techniques de Novel View Synthesis (NeRF, 3D Gaussian Splatting) utilisent des depth maps estimées comme supervision supplémentaire pour accélérer l’entraînement et améliorer la qualité géométrique. Depth Pro et Depth Anything V2 sont intégrés dans de nombreux pipelines de reconstruction.

Robotique et navigation. Les robots mobiles et drones utilisent l’estimation de profondeur pour la navigation, l’évitement d’obstacles et le SLAM visuel (Simultaneous Localization and Mapping). La profondeur métrique est indispensable pour calculer des trajectoires en unités réelles.

Conversion 2D vers 3D (vidéo stéréo). L’estimation de profondeur permet de convertir des vidéos 2D en vidéo stéréoscopique pour les casques VR. DepthCrafter, combiné avec StereoCrafter, génère des vidéos 3D stéréo à partir de vidéos monoculaires, ouvrant la voie à la conversion massive de contenu existant.


Défis techniques

Ambiguïté d’échelle. À partir d’une seule image, il est impossible de déterminer l’échelle absolue sans information supplémentaire (paramètres caméra, objet de taille connue). C’est pourquoi la plupart des modèles monoculaires ne produisent que de la profondeur relative. Depth Pro résout partiellement ce problème en estimant la focale, mais des erreurs d’échelle persistent dans les scènes ambiguës.

Surfaces réfléchissantes et transparentes. Les miroirs, vitres, surfaces d’eau et objets transparents violent les hypothèses sur lesquelles s’appuient les modèles : un miroir devrait être à 2 mètres, mais le modèle peut prédire la profondeur de la scène réfléchie. Depth Anything V2 montre une robustesse améliorée sur ces cas, mais le problème reste ouvert.

Cohérence temporelle en vidéo. Appliquer un modèle frame par frame à une vidéo produit des cartes de profondeur qui scintillent (flickering). DepthCrafter et Video Depth Anything adressent ce problème avec des architectures temporellement cohérentes, mais au prix d’une latence accrue.

Précision des frontières. Les transitions de profondeur aux bords des objets (contours, cheveux, grillages) sont souvent floues ou imprécises, créant des artefacts visibles dans les applications de view synthesis et de bokeh. Depth Pro excelle sur ce critère (F1 de 0,409 vs 0,228 pour Depth Anything V2), mais le problème reste un axe de recherche actif.

Généralisation cross-domain. Les modèles entraînés en intérieur (NYU) échouent en extérieur (KITTI) et inversement. Les foundation models (Depth Anything V2, Depth Pro) améliorent la généralisation par l’entraînement sur des mélanges massifs de données synthétiques et réelles, mais certains domaines spécifiques (sous-marin, aérien, médical) nécessitent encore un fine-tuning.


Tendances récentes

Foundation models zero-shot. La tendance dominante est le développement de modèles « fondation » capables d’estimer la profondeur sur n’importe quelle image sans fine-tuning domain-specific. Depth Anything V2, Depth Pro et FoundationStereo incarnent cette approche. L’entraînement sur des mélanges massifs de données synthétiques de haute qualité et de pseudo-labels sur des images réelles est la recette du succès.

Approches génératives. Marigold a démontré que les priors des modèles de diffusion (Stable Diffusion) sont transférables à l’estimation de profondeur. DepthFM (AAAI 2025, Oral) utilise le flow matching (au lieu de la diffusion) pour réduire l’inférence à une seule étape. DepthART (IJCAI 2025) explore les transformers autorégressifs (Visual AutoRegressive) comme alternative plus rapide à la diffusion.

Estimation vidéo temporellement cohérente. DepthCrafter, Video Depth Anything et ChronoDepth s’attaquent à la cohérence temporelle, indispensable pour la conversion 3D, les effets visuels et la reconstruction 4D. Les architectures intègrent des couches de self-attention temporelle et des loss de cohérence gradient.

Caméras non standard. Depth Any Camera (DAC, 2025) étend les modèles calibrés sur des caméras perspectives à des objectifs fisheye et des caméras 360°, démontrant la faisabilité de l’estimation de profondeur cross-projection sans données d’entraînement spécifiques.


Questions fréquentes sur la depth estimation

Quelle est la différence entre profondeur relative et profondeur métrique ?

La profondeur relative indique l’ordre de profondeur (quel pixel est plus proche ou plus loin), normalisé entre 0 et 1, sans unité de mesure. C’est suffisant pour l’édition d’images, le bokeh ou la séparation plan/arrière-plan. La profondeur métrique fournit la distance absolue en mètres (ce mur est à 3,2 m, cette voiture à 15,7 m). Elle est indispensable pour la conduite autonome, la robotique, le SLAM et la reconstruction 3D à l’échelle. La profondeur métrique est plus difficile à estimer car elle nécessite de connaître (ou d’inférer) l’échelle absolue de la scène. Depth Pro est le premier modèle à résoudre ce problème en zero-shot en estimant la focale.

L’estimation de profondeur monoculaire peut-elle remplacer le LiDAR ?

Pas complètement, mais les deux convergent. Le LiDAR mesure la profondeur directement avec une précision de l’ordre du centimètre, ce qui reste inaccessible aux modèles monoculaires (précision de l’ordre de 5 à 15% d’erreur relative selon le dataset). Cependant, pour les applications où une précision modérée suffit (ADAS, AR, photographie, effets visuels), l’estimation monoculaire est une alternative crédible et beaucoup moins coûteuse (une simple caméra vs un LiDAR à plusieurs milliers d’euros). La tendance est à la fusion : LiDAR sparse + profondeur monoculaire dense pour obtenir le meilleur des deux mondes.

Depth Anything V2 ou Depth Pro : lequel choisir ?

Cela dépend de votre besoin. Depth Anything V2 est plus rapide (60 ms vs 300 ms), plus léger (à partir de 25M paramètres), et excellent pour la profondeur relative (95,3% sur DA-2K). Choisissez-le pour les applications temps réel, l’édition d’images, ou comme backbone dans un pipeline plus large. Depth Pro est supérieur pour la profondeur métrique (δ₁ 0,89 sur SUN-RGBD), la netteté des contours (F1 0,409), et les cas où vous avez besoin de distances absolues sans calibration. Choisissez-le pour l’AR, la reconstruction 3D, et le view synthesis.

Peut-on estimer la profondeur en temps réel sur mobile ?

Oui, mais avec des compromis. Depth Anything V2 en version Small (25M paramètres) tourne à moins de 10 ms par frame sur un GPU A100, soit plus de 100 FPS. Sur mobile, avec une exportation en ONNX ou TFLite et de la quantization, des performances de 30+ FPS sont atteignables sur des smartphones récents. MiDaS en version small et MoveNet sont aussi des options légères. La précision est réduite par rapport aux modèles full-size, mais suffisante pour le bokeh, les filtres AR et la navigation basique.

Comment fonctionne Marigold et pourquoi est-il plus lent ?

Marigold traite l’estimation de profondeur comme un problème de génération conditionnelle. Il prend un modèle de diffusion pré-entraîné (Stable Diffusion) et le fine-tune pour générer des cartes de profondeur au lieu d’images. L’inférence nécessite plusieurs étapes de débruitage (typiquement 10 à 50), ce qui explique une latence de 2 à 5 secondes par image, contre 60 ms pour Depth Anything V2. L’avantage est que les priors visuels du modèle de diffusion (forme des objets, structure des scènes) permettent une généralisation robuste avec très peu de données de fine-tuning (uniquement des données synthétiques). DepthFM et DepthART explorent des alternatives plus rapides (flow matching, autorégressif) pour conserver ces avantages génératifs sans la lenteur de la diffusion.

Polydesk.ai — Footer