深度学习论文: You Only Look at Once for Panoptic driving Perception及其PyTorch实现
You Only Look at Once for Panoptic driving Perception
PDF: https://arxiv.org/pdf/2108.11250.pdf PyTorch代码: https://github.com/hustvl/YOLOP
1 概述
YOLOP是一种全景驾驶感知网络同时可以进行交通目标检测、驾驶区域分割以及车道线检测。YOLOP包含一个用于特征提取的编码,三个用于处理特定任务的解码器。所提方案在极具挑战的BDD100K数据集上表现非常好,从精度与速度角度来看,所提方法在三个任务上取得了SOTA性能。
YOLOP同时可以在嵌入式设备(Jetson TX2)上实时处理三个视觉任务。
2 Architecture
YOLOP的网络架构示意图,它是一种单阶段网络,包含一个共享编码器,三个用于特定任务的解码器。
2-1 Encoder
- Backbone: 选择yolov4的 CSPDarknet作为骨干网络。
- Neck: 采用了SPP与FPN构建Neck模块。SPP用于生成融合不同尺度的特征;FPN则在不同语义层面融合特征,使得生成特征包含多尺度、多语义级信息。
2-2 Decoders
YOLOP包含三个用于三个不同任务的解码器
- Detect Head: 首先采用PAN对特征进行融合, 接着使用类似yolov4的基于Anchor的多尺度检测机制。
- Drivable Area Segment Head: 将FPN的输出特征(分辨率为H/8 * W/8 * 256)送入到分割分支,通过三次上采样输出特征(分辨率为H * W * 2)。为了降低计算量同时采用了最近邻上采样。
- Lane Line Segment Head: 同上。
2-3 Loss Function
- Detection Loss: 是分类损失、目标检测以及目标框损失的加权和
- 其中,
和
为 focal loss,
- Drivable Area Segmentation Loss: 交叉熵损失
- Lane Line Segmentation Los: 交叉熵损失 + IoU损失
- 最终的损失是由上述三个损失加权得到:
3 Experiments
Traffic Object Detection:
Drivable Area Segmentation:
Lane Detection: