论文:https://arxiv.org/abs/2103.12040
开源代码:https://github.com/sel118/LaneAF
0
动机
车道线检测对于辅助驾驶、自动驾驶至关重要。全球范围内多种多样的车道线以及复杂的道路场景均对车道线检测算法提出了很大的挑战。
使用逐像素二分类的方法是检测车道线的主流方法,然而,二分类的输出结果并不能将不同的车道线分开;虽然有一些聚类或者实例分割的方法能够区分不同的车道线,但是它们都有最大车道线检测数量的限制。上述原因阻碍了车道线检测算法的落地。
作者提出了LaneAF算法,该方法利用Affinity Field结合二分类分割的方法进行车道线检测和实例分割,该方法性能好,且能检测数量变化的车道线。
01
算法结构
网络整体结构如下图所示:
使用DLA-34作为Backbone,网络输出二值的分割结果、Vertical Affinity Field(VAF)和Horizontal Affinity Field(HAF)。
使用HAF、VAF,结合二值分割结果,能够在后处理中对任意数量的车道线进行聚类,得到多个车道线实例。
02
Affinity Field
给定图像中的每个位置 ,HAF和VAF为每个位置分配一个向量,将HAF记作 ,将VAF记作 。
2.1 如何构建Affinity Field
使用ground truth构建HAF和VAF,将ground truth到HAF和VAF的映射函数分别记作 和 。
对于图像第 行中车道线 所包含的每个点 ,HAF由下式得到:
上式中的 表示第 行中属于车道线 的所有点的横坐标平均值。求解HAF的过程如下图所示:
上图中绿色框表示属于车道线 的点,蓝色框表示属于车道线 的点。箭头表示某个位置处HAF中的向量。
对于图像第 行中属于车道线 的每个点 ,VAF由下式得到:
上式中的 表示第 行中属于车道线 的所有点的横坐标平均值。求解VAF的过程如下图所示:
需要注意的是,VAF中每行的向量指向上一行中属于该车道线实例的点的平均位置。
2.2 推理时利用Affinity Field聚类
当网络训练完成后,在推理时利用HAF和VAF、结合二值分割结果进行聚类以得到车道线实例。
推理时的聚类流程如下图所示:
令 表示HAF的预测结果,对于第 行,上图中 的计算公式如下:
上式中的 和 分别表示索引为 和 的聚类中心, 表示像素点 属于哪个聚类中心。
上式表示的含义如下图所示:
上图中红色框内的点属于同一聚类。
上述算法流程图中 的计算公式为:
用来衡量车道线 与聚类中心 的距离,公式如下:
上式中的 表示网络预测的VAF, 表示属于该聚类中心的点的数量。
上式可以用下图表示:
算法流程图中的 表示与车道线 匹配的聚类中心,即:
03
损失函数
对于二值分割分支,使用带权重的二值交叉熵损失函数,权重用来解决前景和背景的类别不均衡问题,损失函数表示如下:
上式中的 表示真值, 为网络输出的结果,该值通过sigmoid函数进行归一化, 为用于平衡类别的权重。
对于分割分支,还使用了IoU损失,表示如下:
对于affinity field分支,使用L1损失函数进行回归,表示如下:
综上,整体的损失函数表示为:
04
实验结果
在具体实现时,将交叉熵损失函数中的权重 设置为9.6。LaneAF在TuSimple数据集上的测试结果如下表所示:
LaneAF在CULane数据集上的测试结果如下表所示:
在推理时,HAF和VAF的表示如下图所示:
上图中不同的颜色表示不同的车道线实例,从上图中可以看出,即使是远处相邻很近的车道线实例,也能够通过Affinity Field聚类的方法分开。
可视化的车道线检测结果如下图所示:
05
总结
这篇论文提出了LaneAF车道线检测方法,该方法在传统二值语义分割的基础上结合了Affinity Field,通过聚类实现了任意数量的车道线实例分割;通过实验证明,LaneAF具有很好的性能。