跳过硬件层面也能提高激光雷达帧率?同济、中科大等提出AI算法方案 | AAAI 2021

  • 2021 年 2 月 21 日
  • AI

AI 科技评论长期关注学术,如有学术工作需要分享,欢迎与我们联系(微信:AIyanxishe3)。

作者 | 卢凡

本文为同济大学、中国科学技术大学、慕尼黑工业大学联合发表在人工智能顶级会议AAAI 2021上的论文《PointINet: Point Cloud Frame Interpolation Network》解读。论文第一作者为同济大学汽车学院一年级博士研究生卢凡,通讯作者为同济大学汽车学院陈广研究员。

论文链接://arxiv.org/abs/2012.10066

代码地址://github.com/ispc-lab/PointINet

项目地址://ispc-group.github.io/pointinet.html

激光雷达是自动驾驶车辆上最常用的传感器之一,目前最常用的机械旋转式雷达如Velodyne HDL-64E,Hesai Pandar 64等的帧率普遍仅有10到20Hz。而其他常用的传感器如相机、IMU等的帧率则相对更高,如一般的相机的帧率可以达到30~50Hz,IMU的帧率可以到100Hz以上。

激光雷达的低帧率造成了许多问题,其一,由于两帧点云之间间隔较长,造成了一定的时间和空间上的不连续性,其二,由于激光雷达和其他传感器的帧率差异较大,这给传感器融合也带来了很大的困难。然而,激光雷达的低帧率问题由于其硬件性能的限制很难解决。这篇文章提供了一个新的思路,我们能不能从算法的层面而不是硬件的层面来解决激光雷达的低帧率问题?

在图像领域,视频的插帧算法在目前已经取得了较大的成功。受到视频插帧的启发,我们想到能否对点云进行插帧以将低帧率的点云转换为高帧率的点云?

为此,本文提出了一个新的任务,即点云插帧,其目的在于生成在两帧连续的点云之间在给定时间点的中间帧点云,通过对点云进行插帧,我们可以将原来10~20Hz的点云转换到50~100Hz。在这里也给出了一个demo视频来展示插帧的效果,可以看到插帧之后的点云明显的比原始的点云更加的流畅。

1

方法解读

论文中提出了一下名为PointINet的网络以实现点云的插帧,网络的总体结构如下图所示。

网络的主体部分主要由两个部分组成,分别是Point cloud warping (点云变换)和Points fusion (点融合)。其输入为两帧连续的点云以及给定一个位于(0,1)之间的时间点,输出则为网络所预测的在给定时间点的中间帧点云。网络的总体实现受到了视频插帧算法的很大的启发,并依据点云的特征来设计具体的网络结构。

点云变换的主要目的是将前后两帧点云均变换到给定时间点,而点融合的目的在于融合前后两帧变换后的点云以得到新的点云。

在点云变换模块中我们利用了目前常用的场景流估计网络FlowNet3D来估计前后两帧点云之间的双向场景流,也就是两帧点云之间的逐点运动。在这里我们进行了一个线性运动的假设,即认为点的运动在两帧之间的短时间内是线性的(对于10Hz的点云来说,其两帧之间的时间差约为0.1s,基本可以认为假设成立)。基于该线性运动假设,我们就可以将前后两帧点云均变换到中间的给定时刻。

在点云变换之后,下一步的关键在于如何融合这两帧点云。由于点云具有无序性和非结构化等特征,两帧点云的点之间没有严格的对应关系,其空间位置也不像二维图像的像素有网格化的划分,因此融合是比较困难的一步。

在这里我们给出了一个相对简单但有效的方法来进行融合。首先,我们需要将两帧变换后的点云凑成一个新的点云,当然最简单的方法是分别从两帧点云采样一半的点来组成一个新的点云。

这里我们考虑到在不同的给定时间点前后两帧点云对中间帧点云的贡献度是有不同的,比如在t=0.2的时候,中间帧点云肯定与前一帧点云更加相似,因此我们根据输入的时间点t对点云进行采样,假设两帧点云分别有N个点,我们则从第一帧点云中采样(1-t)*N个点而从第二帧中采样t*N个点来满足两帧点云的不同贡献度的分配。在采样之后我们就得到了一个新的大小为N的点云。

但是这个采样会丢失很大一部分的信息,因此我们采用了一种深度学习的方法来充分利用两帧点云的信息。对这个新的点云中的每一个点我们进行了K近邻的聚类来搜索其在前后两帧点云中的邻近点,与采样过程类似,这里在选取近邻点的时候也是在前一帧点云中选取(1-t)*K个点而在后一帧点云中选取t*K个点。在聚类之后,我们计算了近邻点与聚类中心的相对位置和相对距离作为特征,因此,对每一个聚类我们可以得到一个K×4维的特征图。接下来便是这里的Attentive points fusion 模块,顾名思义,这里我们采用了注意力机制来进行点的融合。该模块的结构图如下所示:

我们首先将这个特征图送入到一个Shared-MLP中来提取高维的特征,然后用一个max-pool以及Softmax函数来得到注意力权重,这个注意力权重是对于一个聚类中的每一个近邻点定义的,即每个点都会对应一个权重,理论上这个注意力机制可以给更符合最后的中间帧点云中的点更高的权重,而其他不重要的点的权重则更低,我们利用注意力权重对这K个近邻点进行加权求和以得到最后的生成的点云中的点。

2

实验验证

为了验证我们的方法,我们在KITTI odometry dataset和NuScenes dataset两个数据集上进行了实验分析。由于缺乏真值的高帧率点云,在训练和定量分析的过程中,我们首先把10Hz(20Hz)的点云下采样到2Hz(4Hz)的点云,并用低帧率的点云作为插帧前的点云,原始的相对高帧率的点云作为真值的插帧点云。在可视化的验证过程中,我们直接使用了在低帧率的点云上训练的模型对相对高帧率的点云(10~20Hz)进行插帧。从上面所展示的demo视频中也可以看到,模型的总体的泛化性较好,插帧也得到了有效的结果。下图展示了点云插帧的一个可视化展示,从左到右分别是时间t在0.25,0.50和0.75时的结果,蓝色、红色和绿色的点云分别是第一帧,中间帧和第二帧。我们也放大了一些区域来展示细节。

在定量的分析中,我们定义了几个基线的算法来与我们的方法进行比较,评价所用到的metric主要包括Chamfer distance(CD)和Earth mover’s distance (EMD)两个,用来评价生成的点云和真值点云的相似程度。下面两个表分别展示了在KITTI数据集和NuScenes数据集上的结果。

此外,为了进一步验证生成点云的质量,我们还在两个应用上面来比较插帧点云和真实点云的性能,分别是Keypoint detection(关键点检测)和Multi-frame ICP(多帧ICP算法)。下面点表格展示了实际算法应用的结果,可以看到使用插帧的点云与真实的点云的结果很接近,这从侧面反映了插帧所获得的点云的质量和相似度。

最后我们进行了一些消融试验来表明网络中各个模块的有效性。可以看到网络中所采用的采样方式、聚类方式以及注意力机制均提高了插帧的精度。


[赠书福利]

AI科技评论本次联合【博文视点】为大家带来12本《深度学习500问:AI工程师面试宝典》正版新书。

在2月18日文章《《深度学习500问》正式出版!GitHub星标数超4.2万的火爆之作 | 赠书〉留言区留言,欢迎大家畅所欲言,谈一谈你对本书的看法和期待或者在学习深度学习时遇到的困难。

AI 科技评论将会在留言区选出 12名读者,每人送出《深度学习500问:AI工程师面试宝典》一本。

活动规则:

1. 在本文留言区留言,在综合留言质量(留言是敷衍还是走心)和留言点赞最高的读者中选出12位读者获得赠书。获得赠书的读者请联系 AI 科技评论客服(aitechreview)。

2. 留言内容会有筛选,例如“选我上去”、“这书写的很棒(仅仅几个字)”等内容将不会被筛选,亦不会中奖。

3. 本活动时间为2021年2月18日 – 2020年2月25日(23:00),活动推送时间内仅允许赠书福利中奖一次。

由于微信公众号试行乱序推送,您可能不再能准时收到AI科技评论的推送。为了第一时间收到AI科技评论的报道, 请将“AI科技评论”设为星标账号,以及常点文末右下角的“在看”。