【目标检测】52、YOLOP | 一次就能完成全景驾驶的三大任务

在这里插入图片描述

论文:YOLOP: You Only Look Once for Panoptic Driving Perception

代码:https://github.com/hustvl/YOLOP

作者:华中科大王兴刚团队

时间:2022.03

贡献:

  • 提出了一个高效的多任务网络,能够同时解决自动驾驶中的三个问题:目标检测、可通行区域分割、车道线检测,利于降低计算量并加速推理,首个在 BDD100K 上实现实时且 SOTA 的网络
  • 在消融实验中证明了联合学习的效果,也证明了 grid-based 方法比 region-based 方法更适合检测+分割的多任务学习

一、背景

全景自动驾驶感知系统在自动驾驶系统中非常重要,可以帮助车辆做出正确的决策。

全景驾驶感知系统的两个重要的要求,也是挑战,分别是:

  • High-precision
  • Real-time

但全景驾驶面临的最大的难点在于:系统需要部署到边端设备上,需要优先考虑其有限的计算资源

还有一个隐藏的信息:全景驾驶系统虽然有多个任务,但这些任务面对的对象都是有一定的关联的。车道线通常是可通行区域的边界,可通行区域一般紧密的环绕在车辆等的周围,所以多任务网络非常适合解决这类问题:

  • 多任务网络可以通过同时进行多个任务来加速图像分析
  • 多任务网络可以进行多任务之间的 backbone 抽取特征的信息共享

基于上述讨论,提出了 panoptic driving perception network(YOLOP), 是一个支持多任务学习的全景感知网络,能够同时支持目标检测、可通行区域识别、车道线检测任务。

YOLOP 的构成:

  • 一个 Encoder:用于特征提取
  • 三个 Decoder:用于支持三个不同的任务

在这里插入图片描述

二、方法

在这里插入图片描述

2.1 Encoder

1、Backbone:使用 CSP-Darknet 作为 backbone(YOLOv4 中的)

2、Neck:SPP + FPN,SPP 生成并结合各个不同尺度的特征,FPN 结合各个不同语义尺度的特征,让组合后的特征包含多尺度和多语义层级的信息。

2.2 Decoder

1、Detect Head

和 YOLOv4 类似,使用 anchor-based multi-scale 检测方式:

  • 首先,使用 PAN-FPN 结合的方式,FPN 是 top-down 的方式来传递语义特征,PAN 是 bottom-up 的方式来传递位置特征,两者结合能够让特征更好的融合,然后直接将 PAN 中的特征进行多尺度特征融合,用于检测。
  • 然后,所有尺度的特征图中的每个 grid,都会被分配 3 个不同纵横比的 anchor,然后检测头回预测其位置偏移和宽高、类别得分。

2、Drivable Area Segmentation Head and Lane Line Segmentation Head

这两个头使用的是相同的网络结构,输入 FPN 的最后一层给分割分支,大小为 (W/8, H/8, 256)。

上采样 3 次后,最终的输出为 (W, H, 2),2 是分割类别:前景(可通行区域和车道线)+ 背景

3、Loss

由于有三个 decoder,所以也需要三部分的 loss 函数

① 检测任务的 loss: L d e t L_{det} Ldet

在这里插入图片描述

② 可通行区域分割的 loss: L d a − s e g L_{da-seg} Ldaseg,交叉熵 loss

在这里插入图片描述

③ 车道线分割的 loss: L l l − s e g L_{ll-seg} Lllseg,交叉熵 loss + IoU loss( L I o U = 1 − T P T P + F P + F N L_{IoU}=1-\frac{TP}{TP+FP+FN} LIoU=1TP+FP+FNTP),因为车道线像素比较稀疏,IoU loss 更高效一些

在这里插入图片描述

总的 loss 如下:

在这里插入图片描述

三、效果

数据集:BDD100K

共有 100K 数据,支持 10 个自动驾驶任务

训练,验证,测试 分别为 70k,10k,20k

1、检测效果

在这里插入图片描述

在这里插入图片描述

2、可通行区域分割效果

在这里插入图片描述

在这里插入图片描述

3、车道线分割效果

在这里插入图片描述

在这里插入图片描述
4、消融实验

① 到底端到端训练好呢还是分步训练好呢

表 4 中对比了不同的训练方式:

  • 端到端的训练效果已经很好了,但可以看出先训练检测任务效果会更好一些,这可能因为检测任务的 loss 最难收敛
  • 三步训练略微优于两步训练

在这里插入图片描述

② 多任务效果好还是单任务效果好呢

表 5 对比了两种方式的效果:

  • 多任务和单任务的效果类似
  • 多任务可以节约很多时间

在这里插入图片描述

③ Region-based 方法好还是 Grid-based 方法好呢

作者给 Faster RCNN 添加了两个分割头,得到 R-CNNP,分别使用同时训练和单独训练的方式,结果如表 6。

  • R-CNNP 结构,使用单独训练比联合训练效果好,多任务结合会影响 R-CNNP 这种结构,它是先选择候选区域,然后检测,和分割的过程不一致
  • YOLOP 结构,多任务训练和单任务训练效果类似,作者猜测这是由于 YOLOP 的结构,它的检测和分割都是在整张图上去进行

在这里插入图片描述

构建一个 YOLO(You Only Look Once)语义分割模型是一项复杂的任务,需要进行以下步骤: 1. 数据收集和准备:收集包含各种类别的图像和对应标签。每个图像需要有像素级别的标注,以区分不同的物体。确保数据集具有足够的多样性和数量。 2. 数据预处理:对数据进行预处理,包括图像的大小调整、数据增强(如旋转、翻转、裁剪等)和标签的编码处理。 3. 构建模型架构:选择适当的深度学习架构来构建 YOLO 语义分割模型。可以使用常见的网络架构,如 U-Net、FCN(全卷积网络)或 DeepLab 等。确保模型具有适当的感受野和上下文信息来进行准确的语义分割。 4. 模型训练:使用准备好的数据集对模型进行训练。在训练过程中,需要定义合适的损失函数,如交叉熵损失或 Dice 损失函数,并选择适当的优化算法,如 Adam 或 SGD。通过迭代训练,优化模型参数来提高准确性。 5. 模型评估和调优:使用验证集对模型进行评估,计算准确率、召回率、F1 分数等指标。根据评估结果调整模型架构、超参数或数据集,以提高模型性能。 6. 模型推理和应用:使用经过训练和调优的模型对新的图像进行语义分割。将模型应用于实际场景中,可以通过像素级别的标注来获取物体的位置和类别信息。 请注意,构建 YOLO 语义分割模型是一项复杂的任务,需要深度学习和计算机视觉领域的知识和经验。确保掌握相关基础知识并参考相关文献和代码库来完成这个任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值