参考代码:LaneAF
1. 概述
导读:这篇文章提出了通过语义分割(2分类)检测车道线的算法,不过在其中添加了affinity fields用于区分不同的车道线(从语义分割演变实现“实例分割”)。文中对每条车道线预测两个affinity fields,分别是水平方向和垂直方向。其中水平方向的affinity fields用于归纳当前车道线行的中心点,垂直的affinity fileds用于推断当前车道线下一行预测集合的位置,也就是在图像的行维度上使用水平和垂直的affinity fields进行耦合,从而将不同的车道线区分开来。因而文章的算法后处理相对来讲会复杂一些,经过测试其平均耗时为15~20ms(CPU)。
文章方法新颖点在分割的基础上引入affinity fields用以在语义分割基础上实现“实例分割”的效果。其主要流程见下图所示:
左边的部分就是传统的语义分割的编解码单元,只是在输出的时候同时输出语义分割结果和两个方向上的affinity fields,之后通过后处理得到最后的结果。
2. Affinity Fileds和Loss
2.1 Affinity Fileds
预测标签的生成:
对于水平方向的affinity fileds是用于完成当前行所在车道线中心点的预测,那么当前行所在车道线上的点指向中心的向量就可以表示为:
H ⃗ g t ( x i l , y ) = ( x ˉ y l − x i l ∣ x ˉ y l − x i l ∣ , y − y ∣ ∣ y − y ) T = ( x ˉ y l − x i l ∣ x ˉ y l − x i l ∣ , 0 ) T \vec{H}_{gt}(x_i^l,y)=(\frac{\bar{x}_y^l-x_i^l}{|\bar{x}_y^l-x_i^l|},\frac{y-y}{||y-y})^T=(\frac{\bar{x}_y^l-x_i^l}{|\bar{x}_y^l-x_i^l|},0)^T Hgt(xil,y)=(∣xˉyl−xil∣xˉyl−xil,∣∣y−yy−y)T=(∣xˉyl−xil∣xˉyl−xil,0)T
其中, x ˉ y l \bar{x}_y^l xˉyl代表当前车道线所在行的中心点, y y y代表当前所在的图片行, l l l代表当前所在的车道线, x i l x_i^l xi