自动驾驶⻋辆环境感知:多传感器融合

2024-06-23 19:12

本文主要是介绍自动驾驶⻋辆环境感知:多传感器融合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、多传感器融合技术概述

二、基于传统方法的多传感器融合

三、基于深度学习的视觉和LiDAR的目标级融合

四、基于深度学习的视觉和LiDAR数据的前融合方法

概念介绍

同步和配准

时间同步

标定

摄像机内参标定(使用OpenCV)

摄像机与LiDAR外参标定

空间同步

具体应用

4.1 BEV-LaneDet

4.2 BEVFormer v2


一、多传感器融合技术概述

为什么需要多传感器融合?

  • 自动驾驶需要:传感器 + 智能算法,算法能力的提升较难,传感器上做些增强是可行的
  • 单一传感器测量结果不够全面,不够精准,适用场景不够广,智能算法还不够智能
  • 多个传感器相互配合共同构成汽⻋的感知系统。不同传感器的优势各不相同,主要解决不同的问题

二、基于传统方法的多传感器融合

  • 基于规则和模型:传统的传感器融合方法通常基于预定义的规则和物理模型。它们利用几何关系和统计方法来融合来自不同传感器的数据。例如,卡尔曼滤波和粒子滤波在融合多传感器数据(如雷达和摄像机)方面非常常见。
  • 特征手工设计:传统方法依赖于手工设计的特征提取和匹配算法。这些特征提取过程需要专家知识,并且对于复杂场景可能表现不佳。

三、基于深度学习的视觉和LiDAR的目标级融合

定义

目标级融合方法是在各自传感器数据已经处理并生成高层次目标检测结果后进行的融合。这意味着,视觉和LiDAR数据各自独立进行目标检测,然后将检测结果进行融合。

流程

  1. 独立检测:使用深度学习模型分别处理视觉数据(如摄像机图像)和LiDAR数据,生成目标检测结果(例如物体的类别和位置)。
  2. 结果融合:将来自视觉和LiDAR的检测结果进行融合。这通常涉及匹配和整合两个传感器的检测结果,如通过最近邻匹配或IoU阈值进行匹配,然后综合这些结果以获得最终的检测结果。

优点

  • 模块化处理:可以分别优化视觉和LiDAR的检测模型。
  • 简单高效:融合过程较为简单,因为只需处理少量的检测结果。

缺点

  • 信息利用不充分:无法在早期阶段结合两个传感器的数据,可能会错过一些有用的信息。
  • 精度有限:独立处理可能导致一些目标在一个传感器上检测到而另一个传感器未能检测到,从而影响最终融合结果的准确性。

四、基于深度学习的视觉和LiDAR数据的前融合方法

概念介绍

定义

前融合方法是在对各自传感器数据进行目标检测之前,将视觉和LiDAR数据在特征提取阶段就进行融合。这样可以在早期阶段就结合两个传感器的数据,利用多模态数据的互补性来提高检测性能。

流程

  1. 数据预处理:将视觉数据和LiDAR数据进行同步和配准(对齐),使它们在空间和时间上对应。
  2. 特征提取与融合:使用深度学习模型提取和融合来自视觉和LiDAR的特征。可以通过多模态神经网络同时处理这两种数据,生成联合特征表示。
  3. 目标检测:基于融合后的特征进行目标检测,生成最终的检测结果。

优点

  • 信息最大化利用:在早期阶段结合多模态数据,能够更全面地利用来自视觉和LiDAR的信息,提高检测性能。
  • 更高的检测精度:通过联合特征表示,模型能够更好地理解场景中的目标,从而提高检测精度。

缺点

  • 计算复杂度高:需要更多的计算资源,因为必须同时处理和融合两个传感器的数据。
  • 模型复杂度高:设计和训练多模态融合网络更加复杂。

同步和配准

时间同步

时间同步是指对来自不同传感器的数据进行时间对齐,使它们的时间戳在同一时间参考系下同步。

标定

标定是空间同步的前提。通过标定确定各传感器的内参和外参后,可以实现空间同步,确定各传感器相对于一个公共参考系的位置和方向的过程。标定通常包括内参标定(传感器自身参数)和外参标定(传感器之间的相对位置和方向)。

摄像机内参标定(使用OpenCV)
  • 摄像机内参标定:使用棋盘格或其他标定板,拍摄多张图像,利用标定算法(如OpenCV中的张正友标定法)计算摄像机的内参矩阵和畸变系数。
  • LiDAR内参标定:LiDAR通常不需要复杂的内参标定,但需要确保LiDAR的安装角度和扫描范围正确。
import cv2
import numpy as np# 读取标定图像
images = [cv2.imread(image_path) for image_path in image_paths]# 设置棋盘格大小
pattern_size = (9, 6)
obj_points = []
img_points = []# 准备棋盘格的世界坐标系下的点
objp = np.zeros((np.prod(pattern_size), 3), np.float32)
objp[:, :2] = np.mgrid[0:pattern_size[0], 0:pattern_size[1]].T.reshape(-1, 2)# 提取角点
for img in images:gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)ret, corners = cv2.findChessboardCorners(gray, pattern_size)if ret:img_points.append(corners)obj_points.append(objp)# 进行标定
ret, camera_matrix, dist_coeffs, rvecs, tvecs = cv2.calibrateCamera(obj_points, img_points, gray.shape[::-1], None, None)print("相机内参矩阵:", camera_matrix)
print("畸变系数:", dist_coeffs)
摄像机与LiDAR外参标定
  1. 使用ROS采集数据。
  2. 使用PCL库处理LiDAR点云数据。
  3. 通过ICP算法配准特征点。
#include <pcl/point_cloud.h>
#include <pcl/io/pcd_io.h>
#include <pcl/registration/icp.h>pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_source (new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_target (new pcl::PointCloud<pcl::PointXYZ>);// 加载点云数据
pcl::io::loadPCDFile ("source.pcd", *cloud_source);
pcl::io::loadPCDFile ("target.pcd", *cloud_target);// ICP配准
pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp;
icp.setInputSource(cloud_source);
icp.setInputTarget(cloud_target);
pcl::PointCloud<pcl::PointXYZ> Final;
icp.align(Final);std::cout << "Has converged: " << icp.hasConverged() << " score: " <<
icp.getFitnessScore() << std::endl;
std::cout << "变换矩阵:\n" << icp.getFinalTransformation() << std::endl;

空间同步

空间同步是指将不同传感器的数据转换到同一坐标系下,使它们在空间上对齐。

具体应用

BEV(Bird's-Eye View,鸟瞰视角)技术属于基于深度学习的前融合(Early Fusion)方法。具体来说,BEV方法在对各自传感器数据进行目标检测之前,将视觉(摄像机)和LiDAR数据在特征提取阶段就进行融合。

4.1 BEV-LaneDet

a Simple and Effective 3D Lane Detection Baseline

这篇文章的主要观点是介绍了一种名为Bev-lanedet的高效且强大的单目3D车道检测方法。这种方法主要包括三个创新点:

  1. 虚拟摄像机模块:该模块通过统一不同车辆摄像机的内外参数,确保了摄像机之间空间关系的一致性,从而促进了学习过程。
  2. 关键点表示:提出了一种简单但高效的3D车道表示方式,更适合表示复杂多样的3D车道结构。
  3. 空间变换金字塔模块:这是一个轻量级且易于部署的模块,用于将多尺度前视特征转换为鸟瞰视角(BEV)特征。

实验结果表明,Bev-lanedet在F-score方面优于最先进的方法,在OpenLane数据集上高出10.6%,在Apollo 3D合成数据集上高出5.9%,且检测速度达到185 FPS。文章还强调了该方法的实时性和计算效率,适合在自动驾驶中进行部署。

4.2 BEVFormer v2

Adapting Modern Image Backbones to Bird’s-Eye-View Recognition via Perspective Supervision

  • 鸟瞰视角(BEV)检测器的优化:论文介绍了一种新的鸟瞰视角(BEV)检测器,称为BEVFormer v2,通过引入透视监督来更好地适应现代图像骨干网络。这种方法旨在克服现有BEV检测器在优化过程中遇到的问题,并实现更快的收敛。

  • 透视监督的引入:论文提出了通过透视监督(perspective supervision)来指导图像骨干网络学习3D知识,从而克服BEV检测器的复杂结构问题。这种监督方式直接应用于骨干网络,帮助其适应3D场景。

  • 两阶段BEV检测器:论文提出了一种两阶段的BEV检测器BEVFormer v2。第一阶段的透视检测头生成物体提案,这些提案被编码为对象查询,然后与第二阶段的BEV检测头的学习对象查询结合,进行最终预测。

  • 实验验证与性能提升:通过在nuScenes数据集上的广泛实验,验证了提出方法的有效性。结果表明,使用透视监督的BEVFormer v2在检测性能和模型收敛速度方面都有显著提升。

这篇关于自动驾驶⻋辆环境感知:多传感器融合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次

韦季李输入法_输入法和鼠标的深度融合

在数字化输入的新纪元,传统键盘输入方式正悄然进化。以往,面对实体键盘,我们常需目光游离于屏幕与键盘之间,以确认指尖下的精准位置。而屏幕键盘虽直观可见,却常因占据屏幕空间,迫使我们在操作与视野间做出妥协,频繁调整布局以兼顾输入与界面浏览。 幸而,韦季李输入法的横空出世,彻底颠覆了这一现状。它不仅对输入界面进行了革命性的重构,更巧妙地将鼠标这一传统外设融入其中,开创了一种前所未有的交互体验。 想象

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

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

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

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

Go Playground 在线编程环境

For all examples in this and the next chapter, we will use Go Playground. Go Playground represents a web service that can run programs written in Go. It can be opened in a web browser using the follow