自动驾驶---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

相关文章

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

IDEA如何让控制台自动换行

《IDEA如何让控制台自动换行》本文介绍了如何在IDEA中设置控制台自动换行,具体步骤为:File-Settings-Editor-General-Console,然后勾选Usesoftwrapsin... 目录IDEA如何让控制台自http://www.chinasem.cn动换行操作流http://www

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Spring使用@Retryable实现自动重试机制

《Spring使用@Retryable实现自动重试机制》在微服务架构中,服务之间的调用可能会因为一些暂时性的错误而失败,例如网络波动、数据库连接超时或第三方服务不可用等,在本文中,我们将介绍如何在Sp... 目录引言1. 什么是 @Retryable?2. 如何在 Spring 中使用 @Retryable

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心