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

相关文章

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

Shell脚本实现自动登录服务器

1.登录脚本 login_server.sh #!/bin/bash# ReferenceLink:https://yq.aliyun.com/articles/516347#show all host infos of serverList.txtif [[ -f ./serverList.txt ]]thenhostNum=`cat ./serverList.txt | wc -l`e

Jenkins 通过 Version Number Plugin 自动生成和管理构建的版本号

步骤 1:安装 Version Number Plugin 登录 Jenkins 的管理界面。进入 “Manage Jenkins” -> “Manage Plugins”。在 “Available” 选项卡中搜索 “Version Number Plugin”。选中并安装插件,完成后可能需要重启 Jenkins。 步骤 2:配置版本号生成 打开项目配置页面。在下方找到 “Build Env

以后写代码都是AI自动写了,Cursor+Claude-3.5-Sonnet,Karpathy 点赞的 AI 代码神器。如何使用详细教程

Cursor 情况简介 AI 大神 Andrej Karpathy 都被震惊了!他最近在试用 VS Code Cursor +Claude Sonnet 3.5,结果发现这玩意儿比 GitHub Copilot 还好用! Cursor 在短短时间内迅速成为程序员群体的顶流神器,其背后的原因在于其默认使用 OpenAI 投资的 Claude-3.5-Sonnet 模型,这一举动不仅改变了代码生成

PRN(20201231):驾驶人驾驶决策机制遵循最小作用量原理

王建强, 郑讯佳, 黄荷叶. 驾驶人驾驶决策机制遵循最小作用量原理[J]. 中国公路学报, 2020, v.33;No.200(04):159-172. 观点: 为提升智能汽车的自主决策能力,使其能够学习人的决策智慧以适应复杂多变的道路交通环境,需要揭示驾驶人决策机制。 依据: 物理学中常用最小作用量原理解释自然界(包括物理和生物行为)极值现象。同时,最小作用量原理还用于解释蚂蚁在觅

在 Qt Creator 中,输入 /** 并按下Enter可以自动生成 Doxygen 风格的注释

在 Qt Creator 中,当你输入 /** 时,确实会自动补全标准的 Doxygen 风格注释。这是因为 Qt Creator 支持 Doxygen 以及类似的文档注释风格,并且提供了代码自动补全功能。 以下是如何在 Qt Creator 中使用和显示这些注释标记的步骤: 1. 自动补全 Doxygen 风格注释 在 Qt Creator 中,你可以这样操作: 在你的代码中,将光标放在

Jenkins自动构建部署项目

1. 楔子 在实际开发中,经常需要编译、静态代码检查、自动化测试、打包、部署、启动等一连串重复机械的动作,浪费时间、而且容易出错,而Jenkins就是专门Continuous integration(CI)/ Continuous Deploy(CD)开源工具,本文简单介绍Jenkins的使用。 在线无安装免费试用Jenkins:http://www.jenkins.org.cn/test

【Spring Boot】 SpringBoot自动装配-Condition

目录 一、前言二、 定义2.1 @Conditional2.2 Condition2.2.1 ConditionContext 三、 使用说明3.1 创建项目3.1.1 导入依赖3.1.2 添加配置信息3.1.3 创建User类3.1.4 创建条件实现类3.1.5 修改启动类 3.2 测试3.2.1 当user.enable=false3.2.2 当user.enable=true 3.3

最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)

文章目录 一、自动配置概念二、半自动配置(误~🙏🙏)三、源码分析1、验证DispatcherServlet的自动配置2、源码分析入口@SpringBootApplication3、@SpringBootConfiguration的@Configuration4、@EnableAutoConfiguration的@AutoConfigurationPackage和@Import5、Auto