Depth Estimation
Aprende cómo la estimación de profundidad añade una perspectiva 3D a la visión artificial. Descubre técnicas como la estimación monocular de profundidad y la visión estereoscópica con los modelos Ultralytics YOLO26.
La estimación de profundidad es un proceso fundamental de la visión artificial que determina la distancia entre los objetos y una cámara, añadiendo de forma efectiva una tercera dimensión a las imágenes 2D. Al calcular la distancia de cada píxel de una imagen, esta técnica crea un mapa de profundidad, una representación en la que la intensidad de los píxeles corresponde a la distancia. Esta capacidad imita la visión binocular humana y permite a las máquinas percibir relaciones espaciales y geometría. Es una tecnología esencial para que los sistemas autónomos puedan desplazarse con seguridad, comprender su entorno e interactuar con objetos físicos.
Mecanismos y técnicas principales#
Hay varias formas de estimar la profundidad, desde soluciones basadas en hardware hasta enfoques basados exclusivamente en software que utilizan inteligencia artificial.
- Sistemas de visión estéreo: Al igual que los ojos humanos, la visión estéreo utiliza dos cámaras colocadas una junto a otra. Los algoritmos analizan las pequeñas diferencias, o disparidad, entre las imágenes izquierda y derecha para triangular la distancia. Este método depende en gran medida de una correspondencia de características precisa para identificar los mismos puntos en ambos fotogramas.
- Estimación monocular de profundidad: Este método avanzado estima la profundidad a partir de una sola imagen. Como una fotografía 2D aislada carece de datos de profundidad inherentes, los modelos de aprendizaje profundo se entrenan con enormes conjuntos de datos para reconocer indicios visuales como la perspectiva, el tamaño de los objetos y la oclusión. Las arquitecturas modernas, como las redes neuronales convolucionales (CNNs), destacan en esta tarea y permiten obtener estructuras 3D a partir de cámaras estándar.
- LiDAR y tiempo de vuelo (ToF): Los sensores activos, como LiDAR (detección y medición de distancias por luz) y las cámaras de tiempo de vuelo, emiten pulsos de luz y miden el tiempo que tardan en regresar. Estos métodos generan nubes de puntos muy precisas y se utilizan a menudo para recopilar datos de referencia con los que entrenar modelos de aprendizaje automático.
Aplicaciones en el mundo real#
La capacidad de calcular distancias tiene un efecto transformador en numerosos sectores y potencia aplicaciones que requieren conciencia espacial.
- Conducción autónoma: Los coches autónomos dependen de la estimación de profundidad para detectar obstáculos, medir la distancia a otros vehículos y circular con seguridad por redes viarias complejas. Es fundamental para la detección de objetos 3D con la que se identifican peatones y ciclistas.
- Robótica y automatización: Los robots utilizan la percepción de profundidad para tareas como la planificación de rutas y la manipulación de objetos. Por ejemplo, un robot de almacén necesita saber exactamente a qué distancia está una estantería para recoger un paquete sin chocar con ella.
- Realidad aumentada (AR): Para colocar objetos virtuales de forma convincente en una escena real, los dispositivos de AR deben comprender la geometría 3D del entorno. La estimación de profundidad garantiza que los personajes virtuales puedan ocultarse detrás de muebles reales, un concepto conocido como gestión de oclusiones.
Ejemplo de código: estimación monocular de profundidad#
Aunque existen modelos de profundidad especializados, a menudo puedes inferir relaciones espaciales utilizando como aproximación a la distancia las cajas delimitadoras de la detección de objetos en situaciones sencillas (las cajas más grandes suelen indicar que los objetos están más cerca). A continuación se muestra cómo cargar un modelo con el paquete ultralytics para detectar objetos, el primer paso de muchos flujos de trabajo que tienen en cuenta la profundidad.
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Run inference on an image
results = model("path/to/image.jpg")
# Process results
for result in results:
# Get bounding boxes (xyxy format)
boxes = result.boxes.xyxy
# Iterate through detections
for box in boxes:
print(f"Detected object at: {box}")Relación con otros conceptos de visión artificial#
Es importante distinguir la estimación de profundidad de términos relacionados. Mientras que la detección de objetos identifica qué objeto hay y dónde está en el espacio 2D (mediante una caja delimitadora), la estimación de profundidad determina a qué distancia se encuentra (eje Z). Del mismo modo, la segmentación semántica clasifica los píxeles en categorías (p. ej., carretera, cielo, coche), mientras que la estimación de profundidad asigna un valor de distancia a esos mismos píxeles.
Avances en IA espacial#
Los avances recientes en IA generativa están tendiendo un puente entre la visión 2D y la 3D. Técnicas como los campos de radiancia neuronal (NeRF) utilizan varias imágenes 2D para reconstruir escenas 3D complejas y se basan en gran medida en principios de profundidad. Además, a medida que mejoran las técnicas de optimización de modelos, resulta cada vez más viable ejecutar estimaciones de profundidad muy precisas en dispositivos de IA en el borde. Esto permite la computación espacial en tiempo real en dispositivos tan pequeños como drones o gafas inteligentes, con la ayuda de plataformas como la plataforma Ultralytics para entrenar e implementar modelos de forma eficiente.









