YOLOP


开始之前

安装 YOLOP 依赖项

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

YOLOP:用于全景驾驶感知的实时目标检测网络

模型描述

  • 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:端到端与分步式训练的对比

训练方法召回率(%)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:多任务与单任务的对比

训练方法召回率(%)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 论文

如果您认为我们的论文和代码对您的研究有帮助,请考虑点赞并引用。

在 BDD100K 数据集上预训练的 YOLOP

模型类型: 视觉
提交者: Hust Visual Learning 团队