论文:https://arxiv.org/abs/2103.12040
开源代码:https://github.com/sel118/LaneAF
动机
车道线检测对于辅助驾驶、自动驾驶至关重要。全球范围内多种多样的车道线以及复杂的道路场景均对车道线检测算法提出了很大的挑战。
使用逐像素二分类的方法是检测车道线的主流方法,然而,二分类的输出结果并不能将不同的车道线分开;虽然有一些聚类或者实例分割的方法能够区分不同的车道线,但是它们都有最大车道线检测数量的限制。上述原因阻碍了车道线检测算法的落地。
作者提出了LaneAF算法,该方法利用Affinity Field结合二分类分割的方法进行车道线检测和实例分割,该方法性能好,且能检测数量变化的车道线。
算法结构
网络整体结构如下图所示:
使用DLA-34作为Backbone,网络输出二值的分割结果、Vertical Affinity Field(VAF)和Horizontal Affinity Field(HAF)。使用HAF、VAF,结合二值分割结果,能够在后处理中对任意数量的车道线进行聚类,得到多个车道线实例。
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,表示属于该聚类中心的点的数量。
损失函数
对于二值分割分支,使用带权重的二值交叉熵损失函数,权重用来解决前景和背景的类别不均衡问题,损失函数表示如下:
上式中的表示真值,为网络输出的结果,该值通过sigmoid函数进行归一化,为用于平衡类别的权重。对于affinity field分支,使用L1损失函数进行回归,表示如下:
实验结果
在具体实现时,将交叉熵损失函数中的权重设置为9.6。LaneAF在TuSimple数据集上的测试结果如下表所示:
LaneAF在CULane数据集上的测试结果如下表所示:上图中不同的颜色表示不同的车道线实例,从上图中可以看出,即使是远处相邻很近的车道线实例,也能够通过Affinity Field聚类的方法分开。
总结
这篇论文提出了LaneAF车道线检测方法,该方法在传统二值语义分割的基础上结合了Affinity Field,通过聚类实现了任意数量的车道线实例分割;通过实验证明,LaneAF具有很好的性能。
车道线检测等技术,
若已为CV君其他账号好友请直接私信。
在看,让更多人看到