基于UFLD-v2的改进:UFLD-v2-plus-pp

不作整理了(网络整体给出来了,下面是思路,谁想用自己去修改代码吧,已经找到工作了。),感兴趣自己去看。代码上已经同步到guihub

# 改进

UFLD-v2是一个非常优秀的车道线检测模型。也有一些问题。

1 参数量太大,一个模型600+M。

2 不能区分车道线。

针对两个问题作了改进

# 1 数据标注

我用的culane数据做的测试。

首先,需要把culane的数据改成labelme的格式,修改标出来的4条车道线的lable。白实线,白虚线,黄实线,黄虚线。

然后在转回到culane数据的格式。

根据原始train_gt.txt以及culane的生成json文件,生成新的train_gt.txt。比如原始的为

```
/driver_23_30frame/05151649_0422.MP4/00000.jpg /laneseg_label_w16/driver_23_30frame/05151649_0422.MP4/00000.png 1 1 0 1
```

生成新得为:

```
/driver_23_30frame/05151649_0422.MP4/00000.jpg /laneseg_label_w16/driver_23_30frame/05151649_0422.MP4/00000.png 1 3 0 2
```

# 2 降低参数量

对模型网络逐层参数量,可以发现,86%(很久之前分析的)的参数集中在最后的两个fc层上。

fc_a+fc_b 拆解成(fc0_a + fc1_a)+(fc0_b + fc1_b).

举例:

```
fc1 = liner(100,200)(...)
fc2 = liner(200,100)(fc1)
```

分解为

```
fc1_a= liner(100,120)(...)
fc1_b= liner(100,80)(...)
fc2_a = liner(120,80)(fc1_a)
fc2_b = liner(80,20)(fc1_b)
```

参数计算

(100*200+200*100)-(100*120+100*80+120*80+80*20)=40000-31200=8800.

## 3 区分车道线类别

判别车道线类别:白实线,白虚线,黄实线,黄虚线,双线。

这里参考的实例分割。有一种实例分割采用的是在语意分割的基础上,添加一个分类头去实现。

如果直接添加在最后一层,将会大大增加模型参数量,经测试,模型到了1.3g大小。

经过测试,backbone为resnet34,在第3个block尾部加入分类器效果最好。

# 4 关于训练

保持和作者的提供的方法一致。注意里面参数,添加了训练方式选择(train_method),需要根据自己情况修改。

## 4.1 训练技巧

分头训练策略。首先训练原始的网络内容,然后凝固参数,再训练分类器参数。

1 重新训练

2 加载作者的模型

2.1 微调检测车道线头

2.2 只训练检测分类车道线头

## 4.2 快速应用

训练这个模型需要很大的现存,我用的p40和V100训练过,收敛并不快。为了快速应用起来,可以在直接在官方提供的网络上修改,只添加车道线分类部分,加载官方模型,然后冻结参数,只训练车道线分类头部分。这里要求,与训练模型数据相同。

------------------

1 待解决问题

UFLD-v2是一个非常优秀的车道线检测模型。也有一些问题。

1 参数量太大,一个模型600+M。

2 不能区分车道线。

2 工作内容

改进方法如下

2.1 降低参数量

对模型网络逐层参数量,可以发现,86%(很久之前分析的)的参数集中在最后的两个fc层上。

fc_a+fc_b 拆解成(fc0_a + fc1_a)+(fc0_b + fc1_b).

举例:

fc1 = liner(100,200)(...)
fc2 = liner(200,100)(fc1)

分解为

fc1_a= liner(100,120)(...)
fc1_b= liner(100,80)(...)
fc2_a = liner(120,80)(fc1_a)
fc2_b = liner(80,20)(fc1_b)

参数计算

(100*200+200*100)-(100*120+100*80+120*80+80*20)=40000-31200=8800.

2.2 区分车道线类别

这里参考的实例分割。有一种实例分割采用的是在语意分割的基础上,添加一个分类头去实现。

如果直接添加在最后一层,将会大大增加模型参数量,经测试,模型到了1.3g大小。

经过测试,backbone为resnet34,在第2个block尾部加入分类器效果最好。

2.3 训练技巧

分头训练策略。首先训练原始的网络内容,然后凝固参数,训练分类器参数。

代码:GitHub - Salary-only-17k/Ultra-Fast-Lane-Detection-v2-pp​​​​​

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颐水风华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值