在自动驾驶汽车穿梭于城市街道、服务机器人在复杂环境中自主导航的背后,LiDAR传感器正扮演着"三维视觉"的关键角色。每秒数十万计的激光点云描绘出环境的空间轮廓,而赋予这些离散点语义信息的能力,直接决定了智能体对环境的理解深度。本文将揭秘RangeNet++技术,看它如何以创新架构破解LiDAR语义分割的难题。
早期的LiDAR语义分割方案面临:
- 信息丢失陷阱:将3D点云投影为2D图像时,因像素分辨率限制导致细碎物体(如电线杆、交通标志)的几何特征被模糊化
- 边缘失真魔咒:传统后处理方法(如CRF)在处理点云边界时,易产生"语义粘连"现象
RangeNet++,之所以叫Rangenet++,是因为它可以广泛应用于各种基于距离图的CNN网络,通用性很强,所以称之为Rangenet++。这个Rangenet++非常经典,比如suma++就是利用了Rangenet++改进suma所得到的。Rangenet++的亮点如下:
- 精准语义分割: RangeNet++能够仅使用LiDAR点云进行精准的语义分割,性能显著超越现有技术。
- 完整标签推断: 它能够推断出完整原始点云的语义标签,避免在任何离散化级别上丢弃任何点。
- 实时运行能力: 该技术可在嵌入式计算机上以Velodyne扫描仪的帧速率运行,易于安装在机器人或车辆中。
但其实,感觉最重要的就是二了,推断完整的语义标签,因为它是在range图上使用CNN预测的,从原始点云到CNN的投影,本身就会有重叠,有缺失问题。如何克服这个问题,如何把网络的预测结果,反着传播回原始点云,非常重要。
算法框架概览
文章中提到了rangeNet与SqueezeSeg的区别,转述一下就是:
首先,投影需要扩展,以包括完整的LiDAR扫描,因为SqueezeSeg框架只使用扫描的前90度区域,在该区域内,原始KITTI数据集的对象通过边界框进行了标注。其次,SqueezeNet骨干网络的描述能力不足以推断数据集中提供的所有19个语义类别。第三,将条件随机场(CRF)替换为一种高效的、基于GPU的最近邻搜索,直接作用于完整的、无序的点云。
这三个改进,我觉得最重要的还是第三点了,将条件随机场(CRF)替换为一种高效的、基于GPU的最近邻搜索,使得整个流程又准又快。
即先将点云球面投影到深度图中,然后对深度图进行语义分割,再将语义结果返回给原始点云,这些我觉得都是简单操作,但关键的操作就在后面,将原始点云中现有的标签进行过滤修正,得到过滤后的filtered标签。
关键技术解析
1. 球面投影(Spherical Projection)
将点云通过球面投影投影到深度图中去,球面投影是这样的一个映射:
R3→R2R3→R2将每个点pi=(x,y,z)pi=(x,y,z)转换为极坐标,最终转换为图像坐标,如下所示:
uv=(12[1−arctan(y,x)π−1]w[1−arcsin(zr−1)+fup]h)uv=(21[1−arctan(y,x)π−1]w[1−arcsin(zr−1)+fup]h)
(u,v)(u,v)就是该点所对应的图像中的坐标了。(h,w)(h,w)是整个的距离图像表示的高度和宽度,ff是fupfup 和fdownfdown表示传感器的垂直视场,rr是∣∣p∣∣2∣∣p∣∣2表示的距离。
然后将每个pipi的rr、xx、yy和zz坐标,以及反射率,存到range图中,就得到一个[5×h×w][5×h×w]的矩阵。
还有一个细节,这里我不太能理解,是想让range更小的点,在后面进行分配,以至于覆盖之前的 range大的 点吗?
由于对扫描数据进行了去扭曲(de-skewing)处理,每个点在分配到其对应的(u,v)(u,v) 像素坐标时,按照测距范围(range)降序进行排序,以确保所有渲染到图像中的点都处于传感器当前的视野范围内。
2. 语义分割网络
基于Darknet53的Encoder-Decoder结构(图2),设计特点如下:
-
Encoder:通过步长卷积逐步下采样,提取多尺度特征
-
Decoder:使用转置卷积上采样,融合跳跃连接(Skip Connections)
-
损失函数:加权交叉熵损失,解决类别不平衡问题
L=−∑c=1Cwcyclog(y^c),wc=1log(fc+ϵ)L=−c=1∑Cwcyclog(y^c),wc=log(fc+ϵ)1
其中wcwc根据类cc的频率fcfc的倒数进行惩罚。例如,在大多数语义分割数据集中,“道路”类别通常表示比“行人”类别更多的点,因此需要加权。
关于雷达呢。64线,2048分辨率,那就是64*2048,但是网络输入不这么大(为啥不能这么大?可能是加速CNN吧)会进行下采样。
3. 从距离图像中重建点云
这里提到了 距离图像是在每个像素的视锥体中采样最近的点,验证了上面为什么要按照range排序的原因猜测。
点击RangeNet++如何重新定义3D点云解析?查看全文