YOLOP: You Only Look Once for Panoptic Driving Perception
YOLOP
论文链接: https://arxiv.org/abs/2108.11250v5
一、 Problem Statement
自动驾驶中,如果使用一个接一个模型来进行图像分析,比如目标检测,语义分割和车道线检测,会增大消耗资源,也有可能无法达到实时性能。
二、 Direction
提出一个通用范式: one encoder backbone + three prediction heads。这个模型分别用于目标检测,可通行区域分割和车道线分割。整体的模型框架如下:
三、 Method
1. Backbone and Neck
作者采用CSPDarknet,SPP和FPN的一个组合作为encoder。
2. Prediction heads
-
Detect Head
类似于YOLOv4,作者使用了path aggregation network(PAN)和anchor-based的检测头。 -
Drivable Area Segment Head & Lane Line Segment Head
可通行区域的检测头和车道线分割的检测头都是同样的网络结构。使用FPN最后一层作为输入,维度为: ( W / 8 , H / 8 , 256 ) (W/8, H/8, 256) (W/8,H/8,256)。使用Nearest Interpolation Method进行上采样,恢复输出分辨率为: ( W , H 2 ) (W, H 2) (W,H2)。
3. Loss function
先来看一下整体的Loss function:
L
a
l
l
=
γ
1
L
d
e
t
+
γ
2
L
d
a
−
s
e
g
+
γ
3
L
l
l
−
s
e
g
L_{all} = \gamma_1 L_{det} + \gamma_2 L_{da-seg} + \gamma_3 L_{ll-seg}
Lall=γ1Ldet+γ2Lda−seg+γ3Lll−seg
上面的式子包含三个部分:
-
L d e t L_{det} Ldet是目标检测的损失函数。包括三个部分:classification loss,object loss,和bounding box loss。
L d e t = α 1 L c l a s s + α 2 L o b j + α 3 L b o x L_{det} = \alpha_1 L_{class} + \alpha_2 L_{obj} + \alpha_3 L_{box} Ldet=α1Lclass+α2Lobj+α3Lbox
其中, L c l a s s , L o b j L_{class}, L_{obj} Lclass,Lobj使用Focal Loss, L b o x L_{box} Lbox是CIoU Loss。 -
L d a − s e g L_{da-seg} Lda−seg和 L l l − s e g L_{ll-seg} Lll−seg都使用Cross Entropy Loss。但是对于车道线分割,它还多了一项IoU Loss: L I o U = T N T N + F P + F N L_{IoU} = \frac{TN}{TN+FP+FN} LIoU=TN+FP+FNTN
L d a − s e g = L c e L l l − s e g = L c e + L I o U L_{da-seg} = L_{ce} \\ L_{ll-seg} = L_{ce} + L_{IoU} Lda−seg=LceLll−seg=Lce+LIoU
四、 Conclusion
同时使用一个backbone,不同的prediction heads来进行end-to-end训练。效果都分别达到SOTA,思路较为简单。