点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

激光雷达在自动驾驶系统中起着关键作用。利用它,可以准确地对车辆所处环境做3D建模,如高精度地图;也可以准确知道某个3D目标在激光雷达坐标系中的位置、大小及姿态,即:3D目标检测。

在介绍点云特征表达之前,先介绍一下自动驾驶车辆使用的激光雷达成像原理。

激光雷达成像原理

激光雷达是一种综合的光探测与测量系统,通过发射接受激光束,分析激光遇到目标对象后的折返时间,计算出目标对象与车的相对距离。目前常见的有16线、32线、64线激光雷达。激光雷达线束越多,测量精度越高,安全性越高。工作原理如图所示:

激光雷达工作原理

激光雷达点云

多束激光线同时发射,并配合激光雷达的旋转便得到了如上图所示的激光雷达点云。其中激光雷达的线束决定了传感器的垂直视角以及垂直方向的分辨率,如下图所示为禾赛64线激光雷达,其垂直方向最多有64根线,且视场范围为:-25°~+15°。旋转速度决定了水平方向点云角分辨率,如:激光雷达扫描频率为10Hz,水平角分辨率为0.2°,那么扫描的点数为360°/0.2°=1800点;若扫描频率提高到20Hz,此时角分辨率为0.4°,扫描点数也就减半,同样目标上的点云会更稀疏。

禾赛64线激光雷达

点云特征表达

激光雷达的稀疏点云成像与稠密像素点的图像成像不同,点云都是连续的,图像是离散的;点云可以反应真实世界目标的形状、姿态信息,但是缺少纹理信息;图像是对真实世界的目标离散化后的表达,缺少目标的真实尺寸;图像可以直接作为cnn网络的输入,而稀疏则需要做一些预处理。

因此,为了完成3D目标检测任务,需要对稀疏点云做特征表达,这里介绍3种方式:1)离散化后,手动(hand-crafted)提取特征,或者利用深度学习模型提取特征;2)点对点特征(point-wise feature)提取;3)特征融合。

离散化

根据激光雷达的成像原理,可以有两种离散化方式,一种基于旋转平面(即激光坐标系下的xy坐标平面)离散化,可以得到BEV(bird‘s eye view)图,另一种在垂直方向离散化(即z轴),可以得到Camera view的图。

1,BEV图

BEV图由激光雷达点云在XY坐标平面离散化后投影得到,其中需要人为规定离散化时的分辨率,即点云空间多大的长方体范围(Δl*Δw*Δh)对应离散化后的图像的一个像素点(或一组特征向量),如点云20cm*20cm*Δh的长方体空间,对应离散化后的图像的一个像素点。根据长方体空间中点云点特征表达方式不同可以分为hand-crafted feature、voxel-feature

1)hand-crafted feature

使用这种方式做特征表达的典型3D目标检测方法有MV3D、PIXOR、YOLO3D等,通过使用一些统计特征来完成对长方体中点云的特征表达,主要特征包括:最大高度值、与最大高度值对应的点的强度值、长方体中点云点数、平均强度值等。

hand-crafted feature主要问题是丢弃了很多点云的点,缺失了很多信息。当然可以通过设置比较小的长方体范围来弥补,但是同时会增加计算量。如下图所示,通过设置比较小的Δh,MV3D得到了一系列的height maps。

2)voxel-feature

为了使用更多的点信息,以及使用end-to-end模型提取更好的特征,提出了voxel表达方式,广泛应用于second、voxelnet、pointpillar等方法中。voxel的特征表达主要包括3个步骤:点云预处理、点特征表达、voxel特征表达得到BEV图,以voxelnet中的VFE layer为例进行介绍。如下图所示。

  • 点云预处理:在一个voxel中筛选一定量的点,在点云原始信息基础上,提取一些相对位置信息,组合成新的点云单点特征表达。

  • 点特征提取:使用全连接网络提取单点特征,再计算voxel中筛选出来的点云特征的max-pooling,得到上下文特征,与单点特征组合得到新的点云单点的特征表达。

  • voxel特征表达:经过多步的点特征提取后,将最后一次max-pooling得到的特征向量作为一个voxel的特征表达,对应到BEV图中相应坐标下的特征向量。

在voxelnet原文中,一个voxel大小为20cm*20cm*40cm,其中Δh=40cm,而BEV图的高度范围为400cm,从而在同一个xy坐标点,高度方向上也会产生多个voxel,这种方式会增加后面网络的计算量。因此,在pointpillar中,增大了Δh的值,从而几个voxel成为了一个pillar,如在pointpillar实验中,pillar高度为400cm,对应voxelnet中10个voxel,大大提高了整个网络的计算效率。

基于voxel的特征表达,极大的缓解了点云在做BEV投影时信息丢失的问题,提高了整个网络的效果。

2,Camera view图

在这种离散化方式中,激光雷达的垂直分辨率(线数)和水平分辨率(旋转角分辨率)是两个重要的可以依据的参数,分别对应了离散化后的图像的高和宽,如对于一个64线,角分辨率0.2°,10Hz扫描频率的激光雷达,离散化后的图像大小为64*1800*c。

根据激光雷达的硬件配置,每条激光线都有固定的垂直方向的角度θ,通过计算θ便可以得到某个点云点对应的离散化后的图像的横坐标;通过计算水平方向的旋转角度ψ,便可以得到某个点云的点对应离散化后的图像的纵坐标,具体计算方式为:

投影效果如下图所示,图A为原始的激光雷达点云,图B为一系列的camera view的图像,每张图为camera view图中的一个channel,表达了点云不同的特征,如intensity,x坐标,半径r。

这种投影方式和图像成像效果很相似,如图C,所以称为camera view,但也同时会引入图像成像的缺点,如遮挡、缺失深度信息等。

点对点特征(point-wise feature)提取

说到point-wise feature,首先想到的是pointnet系列,如下图为pointnet的处理流程,主要包含两个模块: 全连接(mlp)和特征变换(transform)。pointnet特征提取应用在自动驾驶的激光雷达3D目标检测中时,都是简化的版本,比如voxelnet中的VFE layer,很少有pointnet直接作为目标检测的主网络结构,一般仅作为特征提取的方式。在其他应用领域中,pointnet可以作为主要网络做不同的任务,如kaiming大神的Vote3D使用pointnet++做3D目标检测。

自动驾驶中激光雷达的点云比较稀疏,应用在稠密点云的特征表方法可以借鉴,很难直接使用。另外,大部分point-wise特征提取的方法,只能融合局部信息的特征,与更广的上下文信息的联系比较弱,而BEV或者camera view的表达方式,在使用合适的网络结构做特征提取时,感受野可以覆盖全图。因此,在自动驾驶领域,point-wise特征不会直接用来做3D目标检测任务。

特征融合

其实,不同的激光雷达点云特征提取方法有各自的优缺点,但联合在一起使用时,能发挥更好的作用,如在waymo的文章“End-to-End Multi-View Fusion for 3D Object Detection in LiDAR Point Clouds”中,融合了不同的特征表达方式,对小目标和远处目标的检测效果增益很大,结果如下图所示,具体融合方式和网络结构可以参考原文。

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2

在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

下载3

在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

自动驾驶中,激光雷达点云如何做特征表达相关推荐

  1. 自动驾驶中激光雷达如何检测障碍物

    自动驾驶中激光雷达如何检测障碍物 1. 介绍 1.1 激光雷达-一种三维激光传感器 1.2 激光雷达的优缺点? 1.3 基于激光雷达如何进行障碍物检测? 1.4 点云处理难点 2. 点云处理 2.1 ...

  2. 17篇点云处理综述-点云语义分割、点云物体检测、自动驾驶中的点云处理……

    三维点云是最重要的三维数据表达方式之一. 从技术角度看,在三维重建.SLAM.机器人感知等多个领域,三维点云都是最简单最普遍的表达方式,因为三维点云直接提供了三维空间数据,而图像则需要通过透视几何来反 ...

  3. 【LCC系列】自动驾驶中激光雷达和相机的自动在线标定(2013)

    文章目录 1 动机 2 方法 2.1 提取图像边缘 2.2 提取点云深度不连续 2.3 目标函数 2.4 检测标定误差 2.5 自动在线标定 3 实验 3.1 在线检测标定误差 3.2 在线纠正标定误 ...

  4. 自动驾驶中激光雷达如何检测障碍物?

    激光雷达是利用激光束来感知三维世界,通过测量激光返回所需的时间输出为点云.它集成在自动驾驶.无人机.机器人.卫星.火箭等许多领域. 本文从自动驾驶汽车的角度解释它是如何工作的,然后将探讨如何处理点云, ...

  5. 点云学习在自动驾驶中的研究概述

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 自动驾驶公司的发展 有关自动驾驶的研究最早可以追述到2004年的DARPA Grand Challen ...

  6. 点云数据的类型主要分为_点云学习在自动驾驶中的研究概述

    作者:蒋天园 Date:2020-04-17 来源:点云学习在自动驾驶中的研究概述 自动驾驶公司的发展 有关自动驾驶的研究最早可以追述到2004年的DARPA Grand Challenge和2007 ...

  7. 自动驾驶中的激光雷达目标检测的原理和数据特点

    转自:http://www.elecfans.com/d/892365.html (侵删) 安全性是自动驾驶中人们最关注的问题之一. 在算法层面,无人车对周围环境的准确感知是保证安全的基础,因此感知算 ...

  8. 自动驾驶中的9种传感器融合算法

    来源丨AI 修炼之路 在自动驾驶汽车中,传感器融合是融合来自多个传感器数据的过程.该步骤在机器人技术中是强制性的,因为它提供了更高的可靠性.冗余性以及最终的安全性. 为了更好地理解,让我们考虑一个简单 ...

  9. 【自动驾驶】20.自动驾驶中的各种时空坐标系

    简介 介绍自动驾驶技术中几种常用的坐标系统,以及他们之间如何完成关联和转换,最终构建出统一的环境模型. 所谓时空坐标系,包括三维空间坐标系和一维时间坐标系.在此基础上,用解析的形式(坐标)把物体在空间 ...

最新文章

  1. java swing 架构_Java Swing1 基本框架
  2. WinRAR也能实现智能备份
  3. 平时的你VS面试的你
  4. python3.7安装turtle步骤-Python3安装turtle问题
  5. VB无所不能之五:建立“标准”DLL动态链接库文件(1)
  6. Ubuntu20.04软件源更换
  7. CRNN:端到端不定长文字识别算法
  8. 面试官:DDD如何指导微服务拆分?90%的程序员都答不上来!
  9. 火狐插件youdao word capturer无法删除。
  10. 根据一个数字日期,判断这个日期是这一年的第几天
  11. qt程序部署在linux,Qt应用打包发布,部署真正的Qt程序LinuxWindows-Go语言中文社区...
  12. 【DB】部分MySQL操作记录
  13. mybatis一个怪异的问题: Invalid bound statement (not found)
  14. 高度焦虑、凌晨出没、空中飞人,这些竟是 IT 大佬的日常!
  15. 1.1 API : LinearRegression、Ridge、LASSO、ElasticNet
  16. RHEL 6.4 安装DNS服务(bind-9.8 )
  17. linux cuda 编程指南,CUDA编程指南阅读笔记
  18. Codeforces Round #512 (Div. 2, based on Technocup 2019 Elimination Ro A. In Search of an Easy Proble
  19. UID/DID/SID总结
  20. n++和++n的区别

热门文章

  1. 第八章教材内容总结:异常控制流
  2. 【51CTO学院三周年】51cto学院的大数据培训之心路历程
  3. 控制iptables的nat转发端口的实现
  4. python基础学习笔记(六)
  5. 千万级流量的大型分布式系统架构设计
  6. 缓存穿透与击穿问题解决方案
  7. 突然挂了!Redis缓存都在内存中,这下完了!
  8. 华为某员工感慨:岗位太闲想离职,基本不加班!
  9. 远程办公如何保持高效?这群开发者们是这样做的
  10. 酷讯出来的张一鸣为什么做了新闻不是旅游?