作者丨半闲@知乎
编辑丨3D视觉工坊
论文名称:
Self-Supervised Pillar Motion Learning for Autonomous Driving
作者信息:https://github.com/qcraftai/pillar-motion
论文连接:https://arxiv.org/abs/2104.08683
代码开源:https://github.com/qcraftai/pillar-motion
2021年的CVPR 使用自监督学习的方式进行训练。以前还没咋关注过自监督领域
1、Motivation
将点云体素化,投影到鸟瞰视图后处理的方法是当前运动估计的重要做法。这种方式运算速度较快,并且可以有效推广到未出现过的领域。但是,这种方式依赖于大量的带标注的点云数据,并且需要在序列中对目标检测和跟踪以获得监督信号,数据获得的成本非常高昂。
所以本文提出一种利用多传感器的自监督学习框架进行点云运动的学习和估计,
2、Method
图1是本文提出框架的结构图
图1 本文提出框架的结构图
2.1 Overview
2.2 基于物体结构一致性的监督信号获得
可以理解为,若下一帧中有与当前帧相同语义的采样点(比如,都来自于汽车的车灯),那么在预测结果和检测结果中,这些点应该具有空间中最近的距离,并且为0。
所以可以很明显的看到这个自监督信号的问题,即点云的采集是稀疏的,上一帧存在的采样点,在下一帧中很有可能没有相同语义的点。比如上一帧扫描到了隔壁汽车的车灯,下一帧没有扫描到,这是很常见的事。
2.3 传感器交互正则化
激光雷达采集的数据是稀疏的,但是摄像头采集到的数据是稠密的,两者的信息可以互补。故可以将在激光雷达上的运动预测投影到图像平面,利用光流估计的方式实现传感器之间的自监督交互正则化。说人话的话就是,利用激光雷达数据进行一次运动估计,利用光流法在图像上计算一次对应点的光流,拿这个光流作为运动估计的监督信号。
图像上的光流由两部分组成,分别是激光雷达自己运动(ego-motion)造成的光流和被检测物体运动(object motion)造成的光流,如下所示:
其中ego-motion部分可以被如下表出:
即该点在下一帧的坐标减去当前帧的坐标。则就可以将object-motion部分分离出来了。
备注:感谢微信公众号「3D视觉工坊」整理。
该object-motion部分可以作为激光雷达运动估计的监督信号。将激光雷达的运动估计投影到图像平面,作为光流的形式,用于损失函数的计算。对应的公式如下所示:
2.4 静态概率掩码
通过ego-motion部分的光流法结果可以获得该点是否静止的概率,公式如下:
显然,当光流为0时,静止概率为1。
该掩码主要用于给2.2节的结构一致性公式添加权重,忽略掉静止的物体(因为抖动等原因,实际静止的物体,通过激光雷达采集出来之后可能会有位移,从而影响到匹配结果)
2.5 损失函数及优化
为了让同一物体的不同点可以预测出相同的Motion,添加了平滑后的局部损失,如下所示:
总的损失函数为:
2.6 特征提取网路
使用类似于PointPillars的网络,将原始数据投影到BEV中的特征图表示。随后将特征图输入到U-net之中。
4、实验
性能超过了MotionNet。其在使用标注数据的同时,还是用自监督的方式获得了其他数据。
5、总结
作者:
在本文中,我们提出了一个自监督学习框架,用于从无标记的点云集合和成对的相机图像中估计柱运动。我们的模型主要基于点云的结构一致性,同时由概率运动掩蔽和交叉传感器运动正则化进行增强的。大量的实验表明,我们的自监督方法取得了优于或可与监督方法相媲美的结果,当我们的模型进一步被监督微调时,其性能优于目前最先进的方法。我们希望这些发现能够促进更多的柱状运动估计和基于点云的自我监督学习的研究。
笔者:
啊,原来自监督是这么玩的。以前没有怎么关注过自监督领域。