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