一、简介
CLRNet充分利用了低层次特征和高层次特征,因为两者是互补的,先基于高层次特征侦测道路,再基于底层次特征进行调优;由于遮挡的存在,使用ROIGather进行全局信息的收集,在ROI道路特征和全局特征图之间建立联系;损失函数使用Line IOU loss,将车道线作为一个整体来进行回归,从而提高定位的准确率。
如下是车道检测中会出现的问题。
二、模型
2.1 车道表示
使用Lane Prior(192个)进行标识,每个Lane Prior包含四个信息:
(1)前景和背景的概率;
(2)长度;
(3)路线的起点以及与x轴的角度(x、y、θ);
(4)N(72个)个偏移量,即预测值和 ground truth 之间的水平距离。
Lane Prior在空间上是等距的。
2.2 Cross Layer Refinement
在神经网络中,高层次的特征能更好的反应包含更多语义信息的目标特征,但低层次的特征具有更多的局部信息。
R 代表refine三个参数(x, y, θ)的过程。
2.3 ROIGather
代码定义了两种 lane prior,一种是72个点的 prior,一种是在72个点上间隔采样得到的36个 priors_on_featmap。
首先用 ROIAlign 取每个lane prior的36个采样点特征,然后在L1(L2)层这里要串联上一次的36个特征(增加特征表征能力),此时特征的维度为 Cx36。接着,过一个kernel=9的一维卷积和全连接层,得到 Cx1 的表达(Xp)。
为了获得全局信息特征,作者会用 Xp 与全局的 feature map(Xf)做一个attention操作,output直接与原来的Xp向量相加。为了节省memory,作者在L1,L2层做 attention 的 feature map 都是resize到 L0 相同尺寸的。
参考:https://zhuanlan.zhihu.com/p/532815560
2.4 损失函数
将lane作为一个整体。e=15。
总损失如下:第一项是分类loss,第二项是起始点+角度+长度的回归loss,第三项损失如上所示。
三、代码仓库中有用的issue
(1)https://github.com/Turoad/CLRNet/issues/4
(2)conf_threshold的设置:
Higher conf_threshold will keep higher precision, but the recall will be lower. For your own custom images, it is better to turn down the conf_theshold to keep higher recall.
recall = TP / (TP + FN):所有正样本中被预测为正样本的概率
precision = TP / (TP + FP):预测正样本中是gt的概率