参考文章
1、<<Ultra Fast Structure-aware Deep Lane Detection>>
2、<<PolyLaneNet: Lane Estimation via Deep Polynomial Regression>>
相应代码
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 | 车道线条数 |
损失函数:
分类损失(交叉熵)+ “平滑”损失(相邻的两条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())