Autonomous Vehicles
通过自动驾驶探索移动出行的未来。了解 Ultralytics YOLO26 如何为自动驾驶汽车提供实时感知、目标检测和传感器融合支持。
自动驾驶汽车(AVs),通常被称为无人驾驶汽车,是能够感知环境并在没有人类参与的情况下运行的智能交通系统。这些系统代表了汽车中的AI创新的巅峰,将复杂的硬件与先进的软件算法相结合,以解释复杂的周围环境。AV技术的主要目标是通过最大限度地减少人为错误引起的事故来提高道路安全性,同时优化交通效率并为无法驾驶的人提供移动性。在其核心,这些车辆依靠人工智能(AI)来感知刺激、处理信息并做出瞬间的驾驶决定。
感知与传感器技术#
为了安全行驶,自动驾驶车辆必须对周围环境有全面的了解。这是通过一个汇集来自各种传感器数据的感知层来实现的。
- 计算机视觉(CV):摄像头作为主要的视觉传感器,模仿人类的视觉。算法处理视频流以识别车道线、交通信号灯和标志。
- 激光雷达技术:光探测和测距(LiDAR)使用激光脉冲创建精确的高分辨率环境3D地图,这对于深度感知至关重要。
- 目标检测:深度学习模型识别并定位动态障碍物。像YOLO26这样高速的模型对于以低延迟检测行人和其它车辆至关重要。
- 传感器融合:没有单一传感器在所有条件下(例如在大雾中的摄像头)都是完美的。融合算法结合了来自摄像头、雷达和 LiDAR 的数据,从而构建出一个稳健的环境模型。
- 语义分割:该技术对图像中的每个像素进行分类,帮助车辆区分可行驶的路面、人行道和植被。
自动驾驶等级#
自主系统的功能由SAE J3016 驾驶自动化级别分类,该分类定义了计算机控制与人类干预的程度。
- 高级驾驶辅助系统(ADAS):涵盖第 1 级和第 2 级,这些系统协助转向或加速(例如自适应巡航控制),但要求驾驶员保持专注。
- 有条件自动化:在第 3 级,车辆可以在特定条件(如高速公路交通拥堵)下处理大多数驾驶任务,但人类必须准备好在收到警报时接管。
- 高度和完全自动化:第 4 级和第 5 级代表无需人工输入即可运行的车辆。第 4 级限于地理围栏区域,而第 5 级旨在实现任何道路上的完全自主,通常需要强大的边缘AI硬件。
现实世界的 AI 应用#
自动驾驶汽车技术目前正部署在各个部门,依靠大量的机器学习(ML)计算来处理现实世界的复杂性。
-
自动驾驶出租车(Robotaxis):像Waymo这样的公司利用全自动驾驶汽车车队在城市环境中运送乘客。这些车辆使用预测建模来预测复杂城市景观中行人和其它驾驶员的行为。
-
自动驾驶货运:长途物流受益于可预测的高速公路路线上的自动化。像Aurora这样的创新者开发了利用远程感知的自动驾驶卡车,以提高燃油效率和安全性。
-
最后一英里配送:小型自动机器人使用目标跟踪在人行道上导航并运送包裹,从而降低物流成本和碳足迹。
区分相关概念#
将自动驾驶车辆与机器人和汽车领域的相关术语区分开来非常重要。
- 与机器人技术的对比:虽然AV技术上是移动机器人,但机器人领域更广泛,包括固定工业机械臂和人形助手。AV专门针对交通逻辑进行了优化。
- 与网联汽车 (V2X) 的区别:网联汽车相互之间 (V2V) 以及与基础设施 (V2I) 进行通信以共享速度和位置等数据。车辆可以联网但不一定具备自动驾驶能力,尽管联网通常会提高自动驾驶车辆的安全性。
- 与远程操作的对比:远程操作涉及人类远程驾驶车辆。相比之下,真正的AV依赖于车上的神经网络在本地做出决策。
使用 Ultralytics YOLO26 实现感知功能#
任何自主系统的一个关键组成部分是随时间跟踪对象的能力。以下示例演示了如何使用与Ultralytics 平台兼容的 ultralytics 库在视频上执行对象跟踪,从而模拟车辆的感知系统。
from ultralytics import YOLO
# Load the YOLO26 model, optimized for speed and accuracy
model = YOLO("yolo26n.pt")
# Track vehicles and pedestrians in a video stream
# This simulates the continuous perception required by an AV
results = model.track(
source="https://www.ultralytics.com/blog/ultralytics-yolov8-for-speed-estimation-in-computer-vision-projects",
show=True,
)
# Process results (e.g., counting objects or estimating speed)
for r in results:
print(r.boxes.xywh) # Print bounding box coordinates





