车道线检测——Ultra Fast Lane Detection和polyLaneNet

参考文章

1、<>
2、<>

相应代码

https://github.com/cfzd/Ultra-Fast-Lane-Detection
https://github.com/lucastabelini/PolyLaneNet

数据集

Dataset Frame Train Validation Test Resolution Lane Scenarios environment
TuSimple 6,408 3,268 358 2,782 1280*720 5 1 highway
CULane 133,235 88,880 9,675 34,680 1640*590 4 9 urban and highway

1、Ultra Fast Lane Detection

将pixel分割转换为grid分类的问题。对H*W的图像划分成h*(w+1)的网格,分割时需要处理H*W个点的进行分类,类别数目(C+1);现在只需要处理h*C个点的分类,类别数目(w+1)。

Variable Definition
H 图像高
W 图像宽
h 横向的anchors数目,step=10像素。(对于Tusimple,取160<=H<=710区域,h=56;对于CULane,取260<=H<=530区域,h=28)
w 竖向的gridding cells数目。(对于Tusimple,取w=100;对于CULane,取w=150)
C 车道线条数
划分成grid示意图

与分割的区别

损失函数:

分类损失(交叉熵)+ “平滑”损失(相邻的两条anchor应该相似)+“二阶差分”损失(车道线为直的,斜率一致)


分类损失

平滑损失

二阶差分损失

此外,在训练时,加入分割辅助支路,因此还有分割的交叉熵损失。

2、polyLaneNet

利用多项式进行道路建模(图中所示多项式系数a,每一条车道线有4个系数,即为3阶多项式)。
s为纵向方向车道线距图像底部的最小距离,h为纵向方向车道线距图像底部的最大距离(所有车道线共享一个h),c为车道线的置信度。


预测网络

多项式损失的计算:取y坐标,通过多项式计算x坐标,计算MSE损失。如果某个点损失小于预设阈值,令损失为0,为了减少对于已经预测准确的点的关注。

threshold = nn.Threshold(threshold**2, 0.)
poly_loss = mse(pred_xs[valid_xs], target_xs[valid_xs]) / valid_lanes_idx.sum()
poly_loss = threshold((pred_xs[valid_xs] - target_xs[valid_xs])**2).sum() / (valid_lanes_idx.sum() * valid_xs.sum())

损失函数

你可能感兴趣的:(车道线检测——Ultra Fast Lane Detection和polyLaneNet)