点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
作者丨巫婆塔里的工程师@知乎
来源丨https://zhuanlan.zhihu.com/p/406674156
编辑丨汽车人
之前在LiDAR点云物体检测算法的综述中提到了四个发展阶段。在最开始的萌芽期中,多视图的方法占据主流。视图(View),也就是点云数据的不同表示方法,常用的包括Bird's Eye View (BEV),Point View(PV)和Range View (RV)。从上一篇文章的介绍中大家可以看到,前些年主流的方法是采用BEV和PV的,分别对应基于Voxel和Point的两个方向。但是,从今年最新的研究论文来看,Range View大有卷土重来之势,在点云物体检测领域刮起了一股复古风。这里有两个代表性的工作,一个是来自中科院和图森的RangeDet,另一个是来自Waymo的Range Sparse Net (RSN)。
点云的不同视图表示
我们先来看看Range View的数据是怎么生成的。我们都知道,激光雷达的点云来自于多条激光扫描线。比如说64线的激光雷达,那么在垂直方向(Inclination)上就有64个离散的角度。激光雷达在FOV内扫描一遍,会有多个水平方向(Azimuth)的角度。比如说水平分辨率是0.2°,那么扫描360°就会产生1800个离散的角度。这里也可以粗略把Inclination和Azimuth理解为地球上的维度和经度。把水平和垂直方向的角度值作为X-Y坐标,就可以得到一个二维图像。图像中的像素值是相应角度下的反射点的特性,比如距离,反射强度等。这些特性可以作为图像的channel,类似于可见光图像中的RGB。
Range View数据的生成示意图
RangeDet
文章一开始就指出:虽然于Voxel相比,RV的表示更为紧致,而且没有量化错误,但是在物体检测上的性能却远远低于基于Voxel的方法。原因有三点:1)RV中不同距离的物体尺度差别很大;2)特征提取是在2D RV,而物体检测是在3D笛卡尔坐标,这二者存在不一致性;3)RV是更紧致的表示方式,特征提取也因此更为高效,但是利用这一点来改进物体检测并没与被充分的研究。
RangeDet网络结构图[22]
针对这三个原因,RangeDet相应的提出了三个改进:
Range Conditioned Pyramid 针对物体尺度变化的问题,传统的图像物体检测采用pyramid结构,不同大小的物体被分配到不同的pyramid层级上处理。这种根据物体大小的方式忽略了RV的特点。比如一辆近处的乘用车和一辆远处的卡车可能面积相似,因此会被分配到同一个pyramid层级,但是它们的扫描特征确是非常不同的(关于这一点我还有些疑问:这个例子在图像层面上一样也成立,为什么图像上就可以按照物体大小来分配呢)。因此,RangeDet提出,将0-80m的距离分为[0, 15), [15, 30), [30, 80]三个区间,每个区间中的物体由一个层级负责处理。
Meta-Kernel Convolution 对于RV图像,每个像素都和3D笛卡尔坐标系有着直接的联系(通过XY坐标和像素值可以恢复3D坐标),因此包含了非常丰富的几何信息。传统的卷积操作是平移不变的,在RV图像的各个位置其操作是一致的,因此无法有效的利用这个局部的几何信息。因此作者提出了一种新的卷积操作,称之为meta-kernel convolution。它与传统卷积最大的区别在于卷积核权重的获取。传统卷积的权重是通过网络学习得到并固定下来,对于图像的不同位置权重也是相同的(平移不变性)。而MK-Conv首先提取卷积中心点和邻域点的几何信息,并由此计算权重。因此,卷积的权重是依赖于数据的,并且是根据位置而变化的。
Meta-Kernel Convolution
Weighted NMS 由于RV图像比BEV更加紧致,因此可以在原始分辨率上输出物体框。而且RV图像中会有很大的物体(近处),这些物体上的检测输出也就会很多。如果采用标准的NMS,那么只能保留一个置信度最大的检测框,这样随机性比较大,检测质量往往会不稳定。因此,作者提出采用加权平均的方式来得到最终的物体框。
下面我们来看看RangeDet的实验结果。有一点需要值得说一下,那就是数据库。由于更大规模的数据库,比如Waymo Open Dataset (WOD)和NuScenes的出现,现在的研究工作更倾向于在这些大规模数据库而不是传统的KITTI数据库上进行测试和对比。这些数据库规模比KITTI至少高一个数量级,包含的场景也更为丰富,因此实用价值更高。这也从一个侧面体现出现在的研究趋势是追求算法的实用性和可落地性。
从下表的消融实验中可以看到,上述的三个模块RCP,Meta-Kernel和WNMS都带来了非常可观的性能提升。此外,IoU Prediction和Data Augmentation也是非常实用的trick。
RangeDet的消融实验结果(WOD Validation Split for Vehicle Detection)
与最新的基于BEV的两阶段检测器Voxel-RCNN相比,RangeDet在车辆检测上的效果略差,但是在行人检测上超过了所有之前的方法。得注意的是,RangeDet在远距离行人的检测上效果非常好,这一点主要归功于Meta-Kernel的使用。Meta-Kernel的想法并不是全新的,之前也有类似的工作,比如Relation-Shape Convolution。另外Waymo在CVPR2021上的一个工作(To the Point)也是关于Kernel设计的:卷积权重由邻域内的深度差来决定,深度差不同,卷积核也不同。从实验结果看,这个工作的效果只能说一般。但是,这类卷积在RV图像上的应用应该会是未来一个值得研究的方向。
速度方面,RangeDet在RTX 2080TI上可以达到12 FPS。
RangeDet与其他算法的对比(WOD Validation Split)
Range Sparse Net (RSN)
Waymo的这个工作出发点是要提高远距离检测的运行效率。传统的基于Voxel的方法,由于其统一的网格大小,在距离方面的可扩展性是比较差的。RSN通过RV和BEV的结合,在80m的检测距离实现了60FPS的检测速度,而且是WOD上的测试结果也是名列前茅。
RSN是一个两阶段的检测器。第一阶段在RV上进行前景分割,过滤背景点,把属于物体上的点分割出来。与一般的点云分割不同,这个前景分割主要关注Recall,也就是说重点是不能漏掉前景点。第二阶段将前景点量化为Voxel,采用稀疏卷积和类似CenterNet的检测器来越策物体的位置和大小。因为只保留了前景点,稀疏卷积需要处理的Voxel数量大大减少,因此效率也就提了上来。
RSN网络结构图
前景分割的部分没有什么特别的,就是一个U-Net。前景点分割出来以后,采用类似于PointPillar的方式来生成稀疏的Voxel数据。文章中采用的是手工设计的点特征,当然也可以像PointPillar一样用PointNet来提取特征。然后稀疏卷积用来做进一步的特征提取。最后的CenterNet也是在稀疏的点特征上来进行的,因此效率也很高。RSN的整个流程可以总结为稠密的RV+稀疏的BEV,这样避免了在BEV大量网格上的计算量。
备注:感谢微信公众号「3D视觉工坊」整理。
此外,RSN还利用了多帧的信息。一般来说,因为Ego-motion补偿带来的累积误差,基于RV的方法很难去做时序融合。但是RSN的第二阶段是在稀疏BEV数据的层面上进行的,因此可以很方便的进行Ego-motion补偿。第一阶段的前景分割是单帧算法,对于每帧来说也只需要做一次,因此可以重复使用。因此,额外的计算量只有将前面帧的点通过Ego-motion补偿移到最后一帧,另外点数量的增加会导致稀疏卷积的计算量增加。
从实验结果来看,在WOD的3D车辆检测的任务上,RSN的AP可以达到74.8(65FPS)或者78.4(15FPS),这与RangeDet(72.8,12FPS)相比都有了可观的提升。当然RSN是在Tesla V100上得到的速度指标,并不完全具备可比性。
RSN与其他方法的对比(WOD Validation Split for Vehicle Detection)
来自海康的RangeRCNN也有类似的思路,那就是在RV上做特征提取,然后将学习到的点特征转换到BEV下,进行物体检测。与RSN相比,不同之处在于没有进行前景点分割,因此BEV部分的计算复杂度会相对较高。
性能对比
最后,我们来对比一下前面介绍的几个方法。这里我们采用LaserNet作为一个Baseline,因为它基本上就是一个纯粹的基于RV的标准物体检测网络,没有其他特别的操作。此外,上一篇文章中介绍的PointPillar和PV-RCNN作为PV和BEV结合的典型方法也用来进行对比。下表是在Waymo validation集合上3D物体检测的结果(3D APH L1)和运行效率的对比。
Method | View | Vehicle | Pedestrian | Latency (ms) |
PointPillar | PV+BEV | 62.7 | 54.7 | 49 |
PV-RCNN | PV+BEV | 76.9 | 68.2 | 300 |
LaserNet | RV | 50.1 | - | 64.3 |
RangeDet | RV | 72.8 | 75.9 | 12 |
To The Point | RV | 65.2 | 73.9 | - |
RangeRCNN | RV+BEV | 75.0 | - | 45.4 |
RSN Small | RV+BEV | 74.4 | 75.2 | 15.5 |
RSN Large | RV+BEV | 75.4 | 76.2 | 25.4 |
尽管测试的硬件平台不尽相同,运行效率的对比并不完全公平,从上面的对比还是可以看出,RV+BEV的方法在准确度和速度的平衡方面做得比较好。尤其是RSN的SmallModel,准确度和速度上基本都处于顶尖的水平。其速度方面的优势主要来源于前景点的分割,这应该也是未来一个值得继续研究的方向。
本文仅做学术分享,如有侵权,请联系删文。
【自动驾驶之心】全栈技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D感知、多传感器融合、SLAM、高精地图、规划控制、AI模型部署落地等方向;
加入我们:自动驾驶之心技术交流群汇总!
自动驾驶之心【知识星球】
想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D感知、多传感器融合、目标跟踪)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!