自动驾驶---Perception之IPM图和BEV图

2024-05-27 14:20
文章标签 自动 驾驶 bev perception ipm

本文主要是介绍自动驾驶---Perception之IPM图和BEV图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 前言

        IPM(Inverse Perspective Mapping,逆透视变换)图的历史可以追溯到计算机视觉和图像处理领域的发展。逆透视变换是一种用于消除图像中透视效应的技术,使得原本由于透视产生的形变得以纠正,进而更准确地描述和理解图像中的场景。比如在行车中的车道线检测,泊车中的常见障碍物检测,自动驾驶感知最开始的方案基本都离不开IPM图。

       早期,自动驾驶系统主要依赖于传统的2D感知算法,这些算法通常从单张图像(或者IPM图)中检测或分割目标。然而,随着自动驾驶技术的发展,对车辆周围环境感知的需求越来越高(比如IPM图拼接处的检测准确度较差),需要更全面地理解车辆周围的目标和障碍物。

       因此,研究者们开始探索如何将来自不同摄像头和传感器的数据融合到一个统一的视图中,BEV(Bird's Eye View,鸟瞰图)的概念就是在这样的背景下提出的。通过将来自多个摄像头的数据投影到一个共享的BEV空间中,可以创建一个从上方俯视的二维图像,其中包含了车辆周围环境中的所有目标和障碍物。随着特斯拉将BEV技术量产发布后,国内的自动驾驶公司感知模块也在逐步切换到BEV方案。

2 内容介绍

        在自动驾驶感知中,IPM和BEV是两个重要的概念,它们各自在自动驾驶的感知和理解环境中起着关键作用,下面分别对两者进行介绍,本篇博客不做公式推导,只做概念及应用的阐述,用于区分两者的相同点和不同点

2.1 IPM图

(1)定义

        IPM是一种在自动驾驶中常用的图像处理方法,主要用于将从车辆摄像头捕获的图像中的车道线或其他特征,从透视视角(即摄像头视角)转换到鸟瞰视角(即从上空垂直俯视的视角)。

(2)原理

        逆透视映射的基本原理是将摄像头捕获的图像中的像素点映射回地面上的实际位置。由于摄像头捕获的图像是真实世界的3D坐标到2D平面坐标的投影,因此IPM图通过将2D图像反变换到3D世界坐标,然后在世界坐标系下进行物体检测和分析。这一过程中,单应矩阵(单应矩阵是一个3x3的矩阵,它描述了两个平面之间的投影映射关系)起到了关键作用,它可以通过已知相机内参和地面上的点坐标来计算图片中对应像素点的位置。(IPM公式推导可参考其它文章:Apply IPM in Lane Detection from BEV)

(3)作用

        由于摄像头捕获的图像是透视的,即远处的物体看起来更小,而近处的物体看起来更大。这种透视效果在自动驾驶中可能会导致一些问题,例如难以准确判断物体的实际大小和位置。IPM的作用就是消除这种透视效果,将图像转换为鸟瞰视角,使得物体的大小和位置在图像中更加接近真实情况。

(4)应用

        动态逆投影变换(Dynamic IPM)是一种特殊的IPM技术,它主要用于处理动态场景中的车道线检测。当车辆行驶在弯道或坡道上时,车道线在图像中可能会呈现出一定的倾斜或弯曲。动态IPM可以根据车辆的行驶状态(如速度、加速度、转向角等)实时调整变换参数,以更准确地还原车道线的真实形状和位置。另外还有障碍物的检测(车辆、行人等)以及交通标志的检测(包括限速标志、交通信号灯等)。

(5)技术特点

        IPM图技术具有一些显著的特点。首先,它依赖于平坦地面假设,即假设道路是平坦的且与世界坐标系平行。这一假设在大多数道路场景下是合理的,但在某些特殊情况下(如斜坡或弯道)可能会引入误差。其次,IPM图技术需要准确估计相机的内参和外参,以确保映射的准确性。此外,由于IPM图将2D图像反变换到3D世界坐标,因此它需要处理大量的计算和数据,对计算资源的要求较高。

78caaee0fdee4d36805cf195ea4a5073.png

 图示:行车车道线

37fb662145324b5781d0f66be38b320c.png

  图示:泊车IPM图

2.2 BEV图

(1)定义

        BEV图是一种从多个摄像头或雷达数据中提取信息,并将其融合到一个统一的鸟瞰视角下的图像表示。

(2)作用

        BEV图的作用是将多个摄像头或雷达的数据统一到同一个坐标系下,以便进行更准确的目标检测、跟踪和场景理解。在BEV图中,车辆、行人、道路、交通标志等物体都被表示为一个统一的三维空间中的点或区域,这使得自动驾驶系统可以更容易地理解和分析环境。

(3)生成方式

        BEV图像可以通过多种方式生成,主要包括:

  1. 使用激光雷达:激光雷达可以直接测量物体在三维空间中的位置,然后将这些数据转换为BEV图像。这种方法能够精确地捕捉环境中的物体位置,为自动驾驶系统提供丰富的环境信息。
  2. 使用摄像头:摄像头可以通过计算图像的透视投影来生成BEV图像。虽然这种方法相比激光雷达在精度上可能稍逊一筹,但其成本较低,且可以通过算法优化来提高精度。
  3. 使用混合传感器:结合激光雷达和摄像头的组合可以生成更精确和完整的BEV图像。这种方法结合了两种传感器的优点,能够提供更全面、更准确的环境信息。

(4)生成BEV图的原理

        生成BEV(Bird's Eye View)图的原理主要涉及到多个传感器数据的融合和坐标转换。以下是生成BEV图的基本原理:

  • 数据收集:首先,通过安装在车辆上的各种传感器(如摄像头、激光雷达、毫米波雷达等)收集环境数据。这些传感器能够捕获车辆周围环境的三维信息。
  • 图像到点云投影:对于视觉传感器(如摄像头),通过立体匹配、单目或多目深度估计等技术来获取场景的三维信息。然后,将这些三维信息投影到车辆坐标系下的垂直平面上,生成点云数据。点云数据是环境中物体在三维空间中的位置集合。
  • 坐标变换:由于不同传感器可能使用不同的坐标系,因此需要将它们的数据统一到同一坐标系下。这通常涉及到从各自传感器坐标系到全局或车辆坐标系的坐标变换和校准过程。坐标变换确保了点云数据在空间上的一致性。
  • 特征融合与映射:在将来自不同传感器的数据统一到同一坐标系后,进行特征融合。这意味着将来自不同传感器(如摄像头和激光雷达)的数据中的有用信息结合在一起,以生成更完整、更准确的环境感知结果。然后,在BEV空间上进行特征提取和映射。这可以通过使用卷积神经网络(CNN)或Transformer架构等深度学习技术来实现,以生成BEV特征图。
  • 生成BEV图:最后,根据提取的BEV特征图,可以生成BEV图像。这个图像提供了从车辆上方俯瞰的视图,展示了车辆周围环境的完整视图,包括车辆前方、后方、两侧和顶部的信息。

        整个过程中,关键的技术包括三维重建、坐标变换、特征融合和深度学习等。这些技术共同作用,使得自动驾驶系统能够生成准确、可靠的BEV图,从而更好地理解周围环境,实现更安全的自动驾驶。

(5)应用

        BEV图在自动驾驶中的应用非常广泛,例如用于车辆定位、道路检测、障碍物检测、交通信号识别等任务。通过BEV图,自动驾驶系统可以实时获取周围环境的详细信息,并据此做出准确的决策规划和控制。

f7b26e09204f4a50b05cb4b243e9706e.png

3 总结

        IPM图和BEV图在自动驾驶感知中各自扮演着不同的角色,但它们都是为了提高自动驾驶系统对环境的感知和理解能力而设计的。通过这两种技术,自动驾驶系统可以更准确地识别和理解周围环境中的物体和场景,从而实现更安全、更可靠的自动驾驶。本篇博客的目的是为了让读者了解二者的概念、应用和区别。

        IPM是早期的感知方案,随着自动驾驶感知技术的发展,目前已经被BEV方案所取代,自动驾驶感知技术发展路线可参考《自动驾驶---Tesla的自动驾驶技术进化史(Perception&Planning)》。

 

这篇关于自动驾驶---Perception之IPM图和BEV图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007721

相关文章

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

python利用backoff实现异常自动重试详解

《python利用backoff实现异常自动重试详解》backoff是一个用于实现重试机制的Python库,通过指数退避或其他策略自动重试失败的操作,下面小编就来和大家详细讲讲如何利用backoff实... 目录1. backoff 库简介2. on_exception 装饰器的原理2.1 核心逻辑2.2

Java如何根据文件名前缀自动分组图片文件

《Java如何根据文件名前缀自动分组图片文件》一大堆文件(比如图片)堆在一个目录下,它们的命名规则遵循一定的格式,混在一起很难管理,所以本文小编就和大家介绍一下如何使用Java根据文件名前缀自动分组图... 目录需求背景分析思路实现代码输出结果知识扩展需求一大堆文件(比如图片)堆在一个目录下,它们的命名规

使用Python实现实时金价监控并自动提醒功能

《使用Python实现实时金价监控并自动提醒功能》在日常投资中,很多朋友喜欢在一些平台买点黄金,低买高卖赚点小差价,但黄金价格实时波动频繁,总是盯着手机太累了,于是我用Python写了一个实时金价监控... 目录工具能干啥?手把手教你用1、先装好这些"食材"2、代码实现讲解1. 用户输入参数2. 设置无头浏

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获