参考文章
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 | 车道线条数 |
划分成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())
损失函数














网友评论