深圳Yolo 视觉
深圳
立即加入
词汇表

深度估计

了解深度估计如何从图像中创建深度图--立体图像、ToF、激光雷达和单目深度学习为机器人、AR/VR 和 3D 感知提供支持。

深度估计是计算机视觉 (CV) 计算机视觉 (CV)中的一项基本任务,涉及确定场景中物体相对于摄像机的距离。 场景中物体相对于摄像机的距离。通过计算图像中每个像素的深度值、 这一过程将标准的二维数据转换为丰富的三维表示,通常称为深度图。 这种能力对于机器感知空间关系至关重要,使它们能够在环境中导航、 这种能力对于机器感知空间关系至关重要,使它们能够像人类视觉系统一样浏览环境、操作物体和理解世界的几何形状。

深度估计机制

深度估算可以通过多种方法实现,从硬件密集型的主动传感到软件驱动的深度学习(DL)方法,不一而足。 软件驱动的深度学习 (DL)方法。

  • 立体视觉受人类双眼视觉的启发、 立体视觉系统采用两个摄像头 相距稍远。通过分析差距--左右图像之间物体水平位置的差异--算法可以用数学方法三角测量距离。 算法可以用数学方法三角测量距离。这种方法在很大程度上依赖于 特征匹配
  • 单目深度估算:该技术可从单张二维图像中估算深度,这是一项具有挑战性的任务,因为单张图像缺乏明确的深度信息。 因为单张图像缺乏明确的深度信息。现代 卷积神经网络 (CNN) 在海量数据集上进行训练,以识别物体大小、透视和遮挡等单目线索。 单目深度预测研究取得了显著进展、 单目深度预测的研究取得了重大进展,使标准相机能够推断三维结构。
  • 有源传感器(激光雷达和 ToF):与被动照相机系统不同,主动传感器发射信号来测量距离。 测量距离。 LiDAR(光探测和测距)使用激光脉冲 创建精确的 3D 点云,而 飞行时间(ToF)照相机 则测量光返回传感器所需的时间。这些技术可提供高精度的地面实况 数据,通常用于训练 机器学习 (ML)模型。

实际应用

感知三维空间的能力为各行各业带来了重要的功能。

自主系统与机器人学

自动驾驶汽车领域,深度 深度估计对安全和导航至关重要。自动驾驶汽车结合摄像头数据和激光雷达来detect 障碍物、 估计与其他车辆的距离,并构建实时道路地图。同样,在 同样,在机器人技术中,深度知觉可以让自动机械臂 在制造自动化工作流程中,通过准确判断物品的位置和形状来执行 "取放 "操作。 在制造自动化工作流程中,深度知觉可让自动机械臂通过准确判断物品的位置和形状来执行 "取放 "操作。

增强现实(AR)

对于 增强现实 要使体验身临其境,虚拟物体必须与物理世界进行逼真的交互。深度估计 使移动设备能够理解房间的几何形状,从而将虚拟家具或角色放置在地板上或隐藏在现实世界的物体后面(遮挡),从而大大改善用户体验。 或隐藏在现实世界的物体后面(遮挡),从而大大改善用户体验。

Python 示例:使用YOLO11进行距离逼近YOLO11

虽然有专门的深度模型,但开发人员通常使用 2D 物体检测 与校准数据一起 近似距离。缆线 ultralytics 库通过其解决方案模块简化了这一过程,允许用户 根据边框位置估算被跟踪物体的距离。

以下代码演示了如何使用 YOLO11来track 物体并计算它们与摄像机之间的大致 距离。

import cv2
from ultralytics import YOLO, solutions

# Load the YOLO11 model for object detection
model = YOLO("yolo11n.pt")

# Initialize the DistanceCalculation solution
# This estimates distance based on bounding box centroids
dist_obj = solutions.DistanceCalculation(names=model.names, view_img=True)

# Open a video file or camera stream
cap = cv2.VideoCapture("path/to/video.mp4")

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break

    # Track objects and calculate distance
    tracks = model.track(im0, persist=True, show=False)
    im0 = dist_obj.start_process(im0, tracks)

    # Display result (or save/process further)
    cv2.imshow("Distance Estimation", im0)
    if cv2.waitKey(1) == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

深度估计与相关概念

将深度估计与人工智能生态系统中的类似术语区分开来非常重要:

  • 3D 物体检测深度估算 深度估算会为每个像素分配一个距离值,而 3D 物体检测则侧重于识别特定的 物体,并在其周围放置一个 3D边界框(立方体) 立方体)。3D 检测会告诉你 "汽车的位置和大小",而深度估算则会提供整个场景的几何图形,包括汽车的位置和大小。 整个场景的几何形状,包括道路和背景。
  • 距离计算这 通常是指测量两个特定点之间的线性空间,或从摄像头到一个不同物体的线性空间(通常使用二维启发式方法 (通常使用二维启发式),如上面的代码示例所示。深度估算是一项高密度、像素化的预测任务。 生成完整的视图地形图。
  • 光流测量 物体在帧间的明显运动。虽然光流可用于推断深度(从运动中推断结构),但它的主要输出是运动矢量场,而不是静态距离图、 其主要输出是运动矢量场,而不是静态距离图。

推进空间人工智能

生成式人工智能和基础模型的最新进展进一步缩小了二维和三维之间的差距。 模型进一步缩小了 2D 和 3D 之间的差距。这些技术包括 神经辐射场 (NeRF)等技术利用稀疏的二维图像来重建复杂的三维场景。 神经辐射场(NeRF)等技术利用稀疏的二维图像来重建复杂的三维场景,这在很大程度上依赖于潜在的深度原理。随着 模型优化的改进、 高精度深度估计在边缘设备上变得可行,为下一代智能无人机、服务机器人和空间设备提供动力、 服务机器人和空间计算设备。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入