专栏首页我爱计算机视觉更快更精准的感知,元戎启行提出基于LiDAR的3D物体检测新框架|CVPR 2020

更快更精准的感知,元戎启行提出基于LiDAR的3D物体检测新框架|CVPR 2020

近日,L4级自动驾驶解决方案提供商元戎启行的一篇关于3D物体检测的论文被CVPR2020收录,论文题为“HVNet: Hybrid Voxel Network for LiDAR Based 3D Object Detection”。

CVPR(Conference on Computer Vision and Pattern Recognition,即 IEEE 国际计算机视觉与模式识别会议)是全球计算机视觉顶级学术会议。今年,CVPR共收到6656篇投稿,只有1470篇论文被接收,接受率仅有22%,创下了CVPR十年来的最低接收率。本届CVPR 的评审阵容包括198位领域主席和3664位审稿人。

元戎启行也将亮相于2020年6月16-18日在美国西雅图举办的CVPR,与全球学者共同探讨CV议题,展位号:Island in Booth 645。在盛会召开前,元戎启行也针对该论文进行了解读。

简介

3D目标检测是当前自动驾驶感知模块重要的一个环节,如何平衡3D物体检测的精度以及速度更是非常重要的一个研究话题。本文提出了一种新的基于点云的三维物体检测的统一网络:混合体素网络(HVNet),通过在点级别上混合尺度体素特征编码器(VFE)得到更好的体素特征编码方法,从而在速度和精度上得到提升。

与多种方法相比,HVNet在检测速度上有明显的提高。在KITTI 数据集自行车检测的中等难度级别(moderate)中,HVNet 的准确率比PointPillars方法高出了8.44%。

图 1 3D物体检测

在KITTI数据集上,HVNet网络在KITTI数据集上提交结果的所有已有方法中获得了最好的mAP,并且实时推理速度可以达到31 Hz

图 2 KITTI测试集上的速度-精度对比图,其中O为HVNet

研究背景

在当前点云检测模块,格网化(voxelization)是一个重要的方式。许多已有的方式都是通过格网化,然后进行离散的卷积操作。但是,在应对大规模的场景下,一个关键参数是格网voxel的大小:较小的voxel scale捕获更精细的几何体特征,并更好地定位对象,但需要较长的推理时间。较大的voxel scale导致较小的特征图和较快的推理速度,但性能较差,特别是对于较小的物体。

图 3 常见的体素特征提取网络(VFE)

为了应对上面问题带来的挑战,我们通过多尺度的点云信息,利用注意力机制(attention),提取更加细粒度的点云特征,然后映射到更大格网粒度上,从而保证速度跟精度的平衡。

传统体素特征提取网络(VFE)方法通常包含三个步骤:1.体素化:将点云指定给二维体素网格。2.体素特征提取:为每个点计算依赖于网格的逐点特征,并将其送入PointNet风格的特征编码器。3.投影:将逐点特征聚合到体素级特征,并投影回其原始网格,形成伪图像特征图。HVNet中提出的HVFE方法则将混合比例尺度下的点级别的特征聚合到全局上下文中,然后投影到动态目标尺度中的特征图上。

图 4 本文提出的HVFE方法

算法设计

整个HVNET包括:HVFE特征提取模块;2D卷积模块;以及检测的head模块,用来输出最后的预测结果。下图中第一行是HVNet的整个结构。第二行是混合体素特征提取器的结构,由四部分组成:a) x-y平面多尺度预体素化;b) 并行多流的注意力机制体素特征编码层(AVFE)编码多尺度点云特征;c) 编码特征聚合;d) 注意力机制体素特征编码输出层(AVFEO)层结合聚合特征和目标尺度信息进行动态特征投影。

图 5 网络框架图

1. HVFE layer方面,我们提取了不同尺度的voxel下点云的特征,为了融合不同尺度下的点云的特征,我们提出了attentive layer,利用原始的geometry信息,对不同尺度的点云进行特征映射以及融合,形成最终的2.5D上的特征图。在整个过程,我们提出了index-based的高效操作,使得整个聚集(scatter),以及分散(gather)的操作能够充分利用GPU并行,相比与之前方法的操作,我们的方式可以有效减少信息的损失以及GPU显存的使用。

图 6 AVFE和AVFEO层。索引张量用于索引操作:聚集(Gather)和分散(Scatter)

2. 2D 卷积部分,我们利用HVFE layer提出的多尺度的feature map,在特征图上面也进行多尺度的融合。由于点云的稀疏性和伪特征图的低分辨率性,我们提出了尺度融合金字塔网络(FFPN)来进行进一步的特征融合。多尺度特征首先在主干网络中浅层融合,然后在提出的FFPN网络中进行深度融合。

图 7 主干网络

3. detection head部分,我们利用不同层的feature map感受野不同的特性,对不同的层设计相应的anchor box进行预测。具体来说,对于不同层的feature map,在detection head部分只会对相对应的尺度的类别进行预测,这样的方式可以有效减少类别间的混淆。

结果

KITTI数据集是自动驾驶是目前自动驾驶领域最重要的测试集之一,我们在KITTI上进行了实验验证。实验结果证明了我们方法的有效性,我们的算法在KITTI上做到了Cyclist当时的最好成绩,并且在当时的leaderboard上超越了第二名2个点,同时在Car上面我们做到了第六名。

图8 HVNet 在KITTI 测试上的BEV成绩(自行车,2019年11月)

图9 HVNet 在KITTI 测试上的BEV成绩(汽车,2019年11月)

值得注意的是,很多方法在处理多类别物体检测中训练多个模型来检测不同的类别,我们仅通过单一的网络完成输出。在KITTI的多类别检测任务中,我们取得了当时最好的mAP(平均精度),同时保证了实时的效率。相比于PointPillars、Second等算法,HVNet在效率也有很大的突破。

图 10 KITTI test上的BEV成绩

相比于PointPillars、Second等算法,我们调整了Voxel的尺度,对比了和这些方法在相似的Voxel尺度下的效率和准确率。结果表明我们的方法在性能和效率方面都超过了现有方法。

图 11 KITTI val数据集中BEV上的不同Voxel设置下结果对比

思考总结

在这项工作中,我们提出了一种新型的单级三维目标探测网络HVNet。HVNet将混合尺度体素聚合成统一的逐点特征,然后在注意力特征的引导下将其投影成不同尺度的伪图像特征。HVNet的关键是对特征提取尺度和伪图像投影尺度进行解耦。此外,特征融合金字塔网络的主干获取伪图像并融合特征,以生成不同类别的紧凑表达。实验研究表明,该方法取得了目前最先进的效果,并且具有较高的实时性。

论文地址:

https://arxiv.org/abs/2003.00186

END

本文分享自微信公众号 - 我爱计算机视觉(aicvml),作者:元戎启行

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 漂亮!商汤EDVR算法获NTIRE 2019 视频恢复比赛全部四项冠军,代码将开源!

    在CVPR 2019 Workshop NTIRE 2019 视频恢复比赛中,来自商汤科技、港中文、南洋理工、深圳先进技术研究院的联合研究团队获得了全部四个赛道...

    CV君
  • ECCV18|人脸对齐与跟踪如何克服遮挡、姿态变化带来的特征点跳变?

    人脸对齐与特征点跟踪的过程中,遮挡和大的姿态变化是无可避免的,在跟踪过程中这往往带来特征点的跳变,影响用户体验。

    CV君
  • LFFD:轻量级人脸检测器,不止是快

    上面的gif图展示的是LFFD人脸检测算法,在Nvidia GPU上对1080P的图像可以跑到16ms左右。

    CV君
  • CVPR 2020丨基于点云的3D物体检测新框架

    本文介绍的是CVPR2020入选论文《HVNet: Hybrid Voxel Network for LiDAR Based 3D Object Detecti...

    深度学习技术前沿公众号博主
  • Text Reverse HDU - 1062 字符串处理,空格切分。

    该题目的意思就是说要字符串反转,也就是说对于用空格分开的每一个字符串,需要对这个单独的字符串执行反转操作,这是我最初的理解,即每个字符串中间有一个空格,但是,事...

    种花家的奋斗兔
  • [计算机视觉论文速递] ECCV 2018 专场3

    Amusi 将日常整理的论文都会同步发布到 daily-paper-computer-vision 上。名字有点露骨,还请见谅。喜欢的童鞋,欢迎star、for...

    Amusi
  • [计算机视觉论文速递] ECCV 2018 专场4

    Amusi 将日常整理的论文都会同步发布到 daily-paper-computer-vision 上。名字有点露骨,还请见谅。喜欢的童鞋,欢迎star、for...

    Amusi
  • Java解释器模式(Interpreter)

    用户4919348
  • linux的命令操作

    查看有谁在线(哪些人登陆到了服务器) who 查看当前在线 last 查看最近的登陆历史记录

    我的小熊不见了丶
  • 一文让你彻底搞懂`__str__`和`__repr__`?

    我们都知道,Python的内置函数repr()能够把对象用字符串的形式表达出来,方便我们辨认。这就是“字符串表示形式”。repr()就是通过__repr__这个...

    宇宙之一粟

扫码关注云+社区

领取腾讯云代金券