YOLOP


开始之前

安装 YOLOP 依赖项

pip install -qr https://github.com/hustvl/YOLOP/blob/main/requirements.txt  # install dependencies

YOLOP: You Only Look Once for Panoptic driving Perception(全景驾驶感知)

模型描述

  • YOLOP 是一个高效的多任务网络,可以联合处理自动驾驶中的三个关键任务:目标检测、可行驶区域分割和车道检测。它也是首个在 BDD100K 数据集上保持业界领先性能的同时,在嵌入式设备上达到实时运行速度的模型。

实验结果

交通目标检测结果

模型召回率(%)mAP50(%)速度(fps)
Multinet81.360.28.6
DLT-Net89.468.49.3
Faster R-CNN77.255.65.3
YOLOv5s86.877.282
YOLOP(ours)89.276.541

可行驶区域分割结果

模型mIOU(%)速度(fps)
Multinet71.68.6
DLT-Net71.39.3
PSPNet89.611.1
YOLOP(ours)91.541

车道检测结果

模型mIOU(%)IOU(%)
ENet34.1214.64
SCNN35.7915.84
ENet-SAD36.5616.02
YOLOP(ours)70.5026.20

消融实验 1:端到端 vs 分步训练

训练方法召回率(%)AP(%)mIoU(%)准确率(%)IoU(%)
ES-W87.075.390.466.826.2
ED-W87.376.091.671.226.1
ES-D-W87.075.191.768.627.0
ED-S-W87.576.191.668.026.8
端到端89.276.591.570.526.2

消融实验 2:多任务 vs 单任务

训练方法召回率(%)AP(%)mIoU(%)准确率(%)IoU(%)速度(ms/帧)
检测(仅)88.276.915.7
可行驶区域分割(仅)92.014.8
车道线分割(仅)79.627.914.8
多任务89.276.591.570.526.224.4

注意事项:

  • 在表 4 中,E、D、S 和 W 分别指代编码器(Encoder)、检测头(Detect head)、两个分割头(two Segment heads)和整个网络(whole network)。因此,该算法(首先,我们仅训练编码器和检测头。然后,冻结编码器和检测头并训练两个分割头。最后,联合训练整个网络以完成所有三个任务。)可以标记为 ED-S-W,其他项类推。

可视化

交通目标检测结果

可行驶区域分割结果

车道检测结果

注意事项:

  • 车道检测结果的可视化已通过二次拟合进行后处理。

部署

我们的模型可以在 Jetson Tx2 上配合 Zed Camera 采集图像实现实时推理。我们使用 TensorRT 工具进行加速。我们在 GitHub 代码库 中提供了模型部署和推理的代码。

从 PyTorch Hub 加载

此示例加载预训练的 YOLOP 模型并传入图像进行推理。

import torch

# load model
model = torch.hub.load('hustvl/yolop', 'yolop', pretrained=True)

#inference
img = torch.randn(1,3,640,640)
det_out, da_seg_out,ll_seg_out = model(img)

引用

更多详细信息请参阅 GitHub 代码库ArXiv 论文

如果您觉得我们的论文和代码对您的研究有帮助,请考虑给项目点个 Star 并进行引用。

在 BDD100K 数据集上预训练的 YOLOP

模型类型: 视觉
提交方: 华中科技大学视觉学习团队 (Hust Visual Learning Team)