【多任务YOLO】 A-YOLOM: You Only Look at Once for Real-Time and Generic Multi-Task

You Only Look at Once for Real-Time and Generic Multi-Task

论文链接:http://arxiv.org/abs/2310.01641

代码链接:https://github.com/JiayuanWang-JW/YOLOv8-multi-task

一、摘要

  高精度、轻量级和实时响应性是实现自动驾驶的三个基本要求。本研究引入了A-YOLOM,这是一个自适应、实时且轻量级的多任务模型,旨在同时解决目标检测、可行驶区域分割和车道线分割任务。具体来说,作者开发了一个端到端的多任务模型,具有统一和简化的分割结构。引入了一个可学习的参数,该参数在分割任务中自适应地连接neck和骨干之间的特征,对所有分割任务使用相同的损失函数。这消除了定制化的需求,并增强了模型的一般化能力。还引入了一个仅由一系列卷积层组成的分割头,这减少了参数数量和推理时间。

  在BDD100k数据集上取得了具有竞争力的结果,尤其是在可视化结果方面。性能结果显示,目标检测的mAP50为81.1%,可行驶区域分割的mIoU为91.0%,车道线分割的IoU为28.8%。此外,还引入了真实场景来评估我们的模型在实际场景中的性能,这显著优于竞争对手。这表明,所提模型不仅表现出具有竞争力的性能,而且比现有的多任务模型更加灵活和快速。

二、创新点

  与为每个任务使用单独的模型相比,将三个不同的颈部和头部集成到一个具有共享骨干网络的统一模型中可以显著节省计算资源并减少推理时间。

  • 开发了一个轻量级模型,能够将三个任务集成到一个模型中。这对于需要实时处理的多任务特别有益,从而增强了模型在边缘设备上的部署能力。

  • 设计了一种针对分割架构neck区域的自适应拼接模块。该模块可以自适应地拼接特征,无需手动设计,并实现与精心设计的模块相似或更好的性能,从而进一步增强模型的一般性。

  • 设计了一个轻量级、简单且通用的分割头采用统一的损失函数来处理同类型的任务头,这意味着不需要为特定任务进行定制设计。它仅由一系列卷积层构建而成。

  • 实验表明,该模型在推理时间和可视化方面可以优于现有工作。此外,还进一步使用真实道路数据集进行了实验,这也证明了该模型在性能上显著优于最先进的方法。

目录

  • You Only Look at Once for Real-Time and Generic Multi-Task
    • 一、摘要
    • 二、创新点
    • 三、原理
      • A. Encoder
      • B. Decoder
      • C. Loss Function
      • D. Training Paradigm
    • 四、实验
      • A. Experiment Details
      • B. Experimental results
      • C. Ablation Studies
      • D. Real roads experiments
    • 五、总结

三、原理

  自动驾驶中的分割任务:
可行驶区域通常覆盖图像的大部分区域,但区域数量很少。如图 1所示,只有三个可行驶区域。车道线则相反:一个图像中有许多车道线,但每条线都很小、细长且狭窄。
在这里插入图片描述

  所提模型,包括三个主要组件:骨干网络、neck和head。此外,还包括了损失函数。如图 2所示。A-YOLOM模型是一个单阶段网络,具有简单的编码器-解码器架构。编码器包括骨干网络和neck,而解码器由head组成。值得注意的是,总共有三个neck:一个用于目标检测的检测neck和两个分割neck,一个用于可行驶区域分割,另一个用于车道线分割。该模型具有自适应、简单和高效的结构,这不仅扩大了其应用范围,还确保了实时推理。
在这里插入图片描述

A. Encoder

  本文将一个共享骨干网络和三个neck网络整合成一个单一模型以完成三个不同的任务。

  (1)Backbone:主干网络由一系列卷积层组成,用于从输入数据中提取特征。由于YOLOv8在检测任务中表现出色,主干网络遵循YOLOv8。具体来说,他们对CSPDarknet53进行了优化 [27],它作为YOLOv5的主干。与CSP-Darknet53相比,这个主干网络的关键区别在于用c2f模块替换了c3模块。c2f模块将高级特征与上下文信息相结合,进一步提升了性能。还有一些细微的差异,例如用 3 × 3 3 \times 3 3×3卷积代替了最初的 6 × 6 6 \times 6 6×6卷积,以及移除了第10层和第14层的卷积层。这些改进使得主干网络在YOLO系列的前辈中更加有效。

  (2) Neck:neck负责融合从主干网络提取的特征。在主干网络之后,使用空间金字塔池化融合(SPPF)模块来增加感受野并降低与SPP相比的计算需求。这些特征随后被导向到各个neck。

  所提模型使用了三个neck:一个用于目标检测任务,两个用于分割任务,分别是可行驶区域和车道线。值得注意的是,在图2中,由于有两个分割任务,左侧的分割颈部中的N值等于2。这意味着为不同的分割任务有两个相同的分割颈部。来自不同neck底层的天蓝色和棕色线条分别导向到独立的分割头部。

  检测neck采用了路径聚合网络(PAN)[28]结构,该结构包括自上而下和自下而上的两个特征金字塔网络(FPN) [29]。这种结构将低级细节与高级语义特征合并,丰富了整体特征表征。这对于目标检测至关重要,因为小物体依赖于低级特征,而较大的实体则受益于高级特征提供的更广泛上下文。在检测任务中,通常存在不同尺度的物体。物体尺寸的多样性是选择PAN结构作为检测neck的主要原因。

  分割neck采用了FPN结构,该结构因其有效处理多尺度物体而闻名。此外,在颈部和主干网络之间引入了一个自适应拼接模块。如图1所示,输入包括两个特征图:一个来自前一层的neck,另一个来自相同分辨率的骨干网络。该模块的核心是一个可学习的参数,旨在控制骨干特征的重叠,从而允许模型结构根据不同的分割任务进行自适应调整。该模块在每个分辨率级别上运行。这一添加增强了模型的一般性,使其易于应用于不同的分割任务而无需定制。

B. Decoder

  解码器处理从neck来的特征图以对每个任务进行预测。这包括预测对象类别、相应的边界框以及特定分割对象的掩码。该工作采用了两个不同的头部:检测头部和分割头部

检测头部采用了一种解耦的方法,遵循YOLOv8检测头部,使用卷积层将高维特征转换为类别预测和边界框,而不包含物体分支。这是一个无锚点检测器。其结构如图2中的检测模块所示。请注意,检测头部的输出在训练、验证和预测模式中各不相同。在验证和预测模式下,使用三种不同的分辨率作为输入,输出一个张量,包含类别预测及其相应的边界框。在训练模式下,检测头部循环对每个输入应用卷积层,总共输出三个张量。每个张量包含特定于其分辨率的类别预测和边界框。随后,这些结果用于计算损失函数

分割头部在不同分割任务中是相同的。其结构如图2中的分割模块所示。具体来说,它由一系列卷积层组成,用于提取上下文信息,以及一个反卷积层,用于将分辨率恢复到原始图像大小。最终,获得一个与原始图像大小匹配的像素级二值掩码。0代表背景,1代表对象。算法2说明了分割头部的处理过程。此外,分割头部简洁的架构,仅包含7,940个参数,显著增强了模型的部署能力。
在这里插入图片描述

C. Loss Function

  采用端到端训练方法,并使用多任务损失函数。具体来说,损失函数包含三个部分:一个检测和两个分割。公式如下所示:
L = L d e t + L s e g d a + L s e g l l ( 1 ) L = L_{det} + L_{segda} + L_{segll} \ (1) L=Ldet+Lsegda+Lsegll (1)
其中 L d e t L_{det} Ldet 为目标检测任务, L s e g d a L_{segda} Lsegda 为可行驶区域分割任务, L s e g l l L_{segll} Lsegll 为车道线分割任务。

  对于检测任务,损失函数分为两个主要分支:分类分支和边界框分支。分类分支包括二元交叉熵损失,记为 L B C E L_{BCE} LBCE。边界框分支包括分布焦点损失(DFL) [30],记为 L D F L L_{DFL} LDFL 和完整IoU(CIoU)损失 [31],表示为 L C I o U L_{CIoU} LCIoU。因此,检测损失 L d e c L_{dec} Ldec 可以表示为

L d e t = λ B C E L B C E + λ D F L L D F L + λ C I o U L C I o U ( 2 ) L_{det} = \lambda_{BCE}L_{BCE} + \lambda_{DFL}L_{DFL} + \lambda_{CIoU}L_{CIoU} \ (2) Ldet=λBCELBCE+λDFLLDFL+λCIoULCIoU (2)

其中 λ B C E \lambda_BCE λBCE λ D F L \lambda_DFL λDFL λ C I o U \lambda_CIoU λCIoU 是相应的系数。
L B C E = − [ y n l o g x n + ( 1 − y n ) l o g ( 1 − x n ) ] ( 3 ) L_{BCE} = − [y_{n} log x_{n} + (1 − y_{n}) log (1 − x_{n})] \ (3) LBCE=[ynlogxn+(1yn)log(1xn)] (3)
其中 x n x_{n} xn 是每个对象的预测分类。 y n y_{n} yn 是每个对象的真实值(ground truth)。 L B C E L_{BCE} LBCE 衡量预测值与真实值之间的分类误差。

L D F L ( S i , S i + 1 ) = − ( ( y i + 1 − y ) l o g ( S i ) + ( y − y i ) l o g ( S i + 1 ) ) , S i = y i + 1 − y y i + 1 − y i , S i + 1 = y i − y y i − y i + 1 ( 4 ) L_{DFL} (S_{i}, S_{i+1}) = − ((y_{i+1}− y) log (S_{i}) + (y − y_{i}) log (S_{i+1})), \\ S_{i} = \frac{y_{i+1} − y}{y_{i+1} − y_{i}}, S_{i+1} = \frac{y_{i} − y}{y_{i} − y_{i+1}} \ (4) LDFL(Si,Si+1)=((yi+1y)log(Si)+(yyi)log(Si+1)),Si=yi+1yiyi+1y,Si+1=yiyi+1yiy (4)
其中, y y y 是边界框坐标的真实值,它是一个小数。 y i + 1 y_{i+1} yi+1 是真实值 y y y 的向上取整。 y i y_{i} yi 是真实值 y y y 的向下取整。 L D F L L_{DFL} LDFL 衡量预测值和真实值特征位置之间的位移,以使预测的边界框接近实际值。
L C I o U = 1 − C I o U C I o U = I o U − ρ 2 ( b , b g t ) c 2 − α v v = 4 p i 2 ( a r c t a n w g t h g t − a r c t a n w h ) 2 ( 5 ) α = v ( 1 − I o U ) + v L_{CIoU} = 1 − CIoU \\ CIoU = IoU −\frac{ρ^{2} (b, b^{gt})}{c^{2} − \alpha v} \\ v = \frac{4}{pi^{2}}(arctan \frac{w^{gt}}{h^{gt}} − arctan\frac{w}{h})^{2} \ (5) \\ \alpha = \frac{v}{(1- IoU) + v} LCIoU=1CIoUCIoU=IoUc2αvρ2(b,bgt)v=pi24(arctanhgtwgtarctanhw)2 (5)α=(1IoU)+vv
其中 b b b 是预测框的中心点, b g t b^{gt} bgt 是真实值框的中心点。 ρ ρ ρ是预测点和真实值点之间的欧几里得距离。 c c c两个框的最小外接矩形的对角线长度 v v v α \alpha α 都是用于控制比例的系数。 h h h 是预测框的宽度和高度, w g t w^{gt} wgt h g t h^{gt} hgt 是真实值框的宽度和高度。 L C I o U L_{CIoU} LCIoU 集成了重叠、距离和宽高比一致性的方面,以衡量预测框和真实值框之间的差异。因此,它使模型能够更精确地定位物体的形状、大小和方向。

  对于分割任务,使用相同的损失函数。这意味着 L s e g d a L_{segda} Lsegda L s e g l l L_{segll} Lsegll 具有相同的公式。将统称为 L s e g L_{seg} Lseg。公式如下所示:
L s e g = λ F L L F L + λ T L L T L ( 6 ) L_{seg} = \lambda_{FL}L_{FL} + \lambda_{TL}L_{TL} \ (6) Lseg=λFLLFL+λTLLTL (6)
其中 L F L L_{FL} LFL L T L L_{TL} LTL 分别是焦点损失(focal loss)[24]和 Tversky 损失(Tversky loss) [32]。两者都是分割任务中广泛使用的损失函数。 λ F L \lambda_{FL} λFL λ T L \lambda_{TL} λTL 是相应的系数。

L F L = − α t ( 1 − p t ) γ l o g ( p t ) ( 7 ) L_{FL} = −\alpha_{t} (1 − p_{t})^{\gamma} log (p_{t}) \ (7) LFL=αt(1pt)γlog(pt) (7)
其中 p t p_{t} pt 是模型预测正类概率。 y y y是每个像素的真实值。 α t \alpha_{t} αt 是一个平衡正/负样本重要性的加权因子。 γ \gamma γ是一个调节每个样本对损失贡献的聚焦参数。焦点损失提供了一个鲁棒的解决方案来处理不平衡样本,确保模型不会过度偏向于主导的、易于学习的类别。相反,它更注重挑战性和代表性不足的区域。
L T L = 1 − T P T P + α F N + β F P ( 8 ) L_{TL} = 1 − \frac{TP}{TP + \alpha FN + \beta FP} \ (8) LTL=1TP+αFN+βFPTP (8)
Tversky 损失是 Dice 损失的扩展,引入了两个额外的参数( α \alpha α β \beta β)以分配不同的权重给假阳性和假阴性,从而增强了其处理不平衡任务的能力。

D. Training Paradigm

  训练范式与在全景自动驾驶任务中普遍存在的多任务学习方法不同。采用端到端训练模式,每个批次仅进行一次反向传播。这意味着整个网络是集体优化的,没有冻结特定层或交替优化,从而减少了训练时间。算法3说明了逐步训练过程。在每个轮次中,通过单次正向传播获得所需的预测结果列表 KaTeX parse error: Expected group after '_' at position 5: \hat_̲{y},包括检测边界框、分类信息和分割掩码等信息。随后,计算每个任务的损失并将其汇总为单个损失 L L L。然后,仅进行一次反向传播以优化所有任务中的模型。完成一轮训练后,对模型进行评估。如果与上次50轮相比性能没有改进,则提前终止训练。否则,训练将在训练300轮后停止。

在这里插入图片描述

四、实验

  本章评估模 型在BDD100K数 据 集 上 的 性 能 和 推 理 时 间, 并 将 其与多任务自动驾驶全景感知中使用的经典方法进行了比较。此外,还进行了广泛的消融研究,并提供了实验结果的分析。

A. Experiment Details

  1. Dataset:
      BDD100K数据集是自动驾驶研究中的一个重要资源,包括10万个样本和多任务标注。除了数量上的优势,该数据集的重要性还体现在其多方面特性,涵盖了不同的地理环境、环境背景和天气条件。这些优势确保了在BDD100K上训练的模型具有鲁棒性和通用性,使其成为研究的一个理想选择。该数据集分为三个部分:一个包含70k图像的训练集,一个包含10k图像的验证集,以及一个包含20k图像的测试集。由于测试集的标签不公开,我们在验证集上评估所提模型。与YOLOP类似,检测任务仅关注“车辆”检测,包括汽车、公交车、卡车和火车等类别

  2. Evaluation Metrics:
      使用召回率和mAP50作为目标检测任务的评估指标。这两个指标在检测任务中
    得到了广泛的认可和接受。召回率表示模型准确检测指定类别中所有对象实例的能力。mAP50是通过在IoU阈值为0.5时计算所有类别的平均平均精度得到的。平均精度(AP)量化了精度-召回曲线下的面积。对于分割任务,类似于YOLOP [16],使用mIoU来评估可行驶区域分割任务。对于车道线分割任务,采用准确率和IoU作为评估指标。然而,由于车道线分割中背景和前景像素数量的不平衡,采用一个更有意义的平衡准确率指标进行评估。传统的准确率会通过偏好样本数量较多的类别来扭曲结果。相比之下,平衡准确率通过考虑每个类别的准确率提
    供了一个更公平的指标。公式如下:
    L i n e A c c u r a c y = S e n s i t i v i t y + S p e c i f i c i t y 2 ( 9 ) Line Accuracy = \frac{Sensitivity + Specificity}{2} \ (9) LineAccuracy=2Sensitivity+Specificity (9)

其中 S e n s i t i v i t y = T P T P + F N Sensitivity = \frac{T P}{T P +F N} Sensitivity=TP+FNTP S p e c i f i c i t y = T N T N + F P Specificity = \frac{T N}{T N +F P} Specificity=TN+FPTN.

  还比较了所提模型与其他方法的FPS。所有评估实验均在GTX 1080 Ti GPU上执行。

3)Experimental Setup and Implementation:
  比较了所提模型与几个突出的多任务模型。由于多任务模型的稀缺性,还包括了几个出色的单任务或双任务模型进行比较。YOLOPHybridNet代表了在BDD100K数据集上泛在自动驾驶领域的最先进技术和开源的多任务模型。Faster R-CNNYOLOv8分别 是 两 阶 段 和 单 阶 段 目 标 检 测 网 络 的 典 型 代 表。MultiNetDLT-Net能够解决多个泛在驾驶感知任务,它们在BDD100k数据集上的目标检测和可行驶区域分割中表现出良好的性能。PSPNet [33]由于其聚合全局信息的能力,在语义分割任务中表现出色。鉴于BDD100K数据集中缺乏处理车道线分割的适当多任务网络,将所提模型与Enet [34]、SCNN和EnetSAD [35]进行比较,它们是三个领先的车道检测网络。

  为了提高性能,采用了几种数据增强技术。具体来说,采用了masic增强,这有助于防止过拟合并增强训练数据。此外,为了解决光度失真,修改了图像的色调、饱和度和值参数。还结合了基本的增强技术来处理几何失真,如随机平移、缩放和水平翻转。

  使用SGD优化器以0.01的 学 习 率 (lr)、0.937的动量和0.0005的权重衰减来训练所提模型。最初,该模型进行3轮预热训练。在这个预热阶段,SGD优化器的动量设置为0.8,偏置学习率设置为0.1。训练过程采用线性学习率退火策略。这种策略有助于确保模型在训练的早期阶段快速学习,并在后期阶段更稳定地收敛。此外,将原始图像尺寸从 1280 × 720 1280 × 720 1280×720调整为 640 × 640 640 × 640 640×640。对于损失函数系数,设置 λ F L = 24.0 \lambda_{FL} = 24.0 λFL=24.0 λ T L = 8.0 \lambda_{TL} = 8.0 λTL=8.0 λ D F L = 1.5 \lambda_{DFL} = 1.5 λDFL=1.5 λ C I o U = 7.5 \lambda_{CIoU} = 7.5 λCIoU=7.5 λ B C E = 0.5 \lambda_{BCE} = 0.5 λBCE=0.5。在 L T L L_{TL} LTL中,采用 α = 0.7 \alpha = 0.7 α=0.7 β = 0.3 \beta = 0.3 β=0.3,在 L F L L_{FL} LFL中采用 α t = 0.25 \alpha_{t} = 0.25 αt=0.25 γ = 2 \gamma = 2 γ=2。最后,在三个RTX 4090上以120个批次的规模训练300轮。对于评估,将置信度阈值设置为0.001,将非极大值抑制(NMS)阈值设置为0.6。对于预测,置信度阈值设置为0.25,NMS阈值设置为0.45。遵循YOLOP的置信度阈值和NMS设置。因此,可视化可能略微不同于定量结果。

B. Experimental results

  本节将端到端地训练所提模型,并将其性能与其他先进方法进行比较。

  (1)推理时间:在深度学习应用中,推理时间是主要挑战之一。特别是在自动驾驶任务中,需要在边缘设备上部署模型,而这些设备通常计算资源有限。因此,确保模型既轻量又实时变得至关重要。表I重现并测试了YOLOP1HybridNet2、YOLOv8和所提模型的FPS,所有FPS测试都是在GTX 1080 Ti GPU上进行的,批大小为1和32。FPS的计算方法遵循HybridNet。此外,还提供了每个模型的参数数量作为评估结果之一。
在这里插入图片描述

  深度学习应用的主要挑战之一是推理时间。尤其是在自动驾驶任务中,需要在边缘设备上部署模型,这些设备通常具有有限的计算资源。因此,确保模型的轻量化和实时性至关重要。 表I对YOLOP、HybridNet、YOLOv8以及所提模型进行了FPS的重现和测试,所有FPS测试均在GTX 1080 Ti GPU上进行,批大小为1和32。FPS的计算方法遵循HybridNet。此外,还提供了每个模型的参数数量作为评估结果之一。

  A-YOLOM(n)和A-YOLOM(s)之间的主要区别在于骨干网络的复杂度。A-YOLOM(n)是设计的一个轻量级骨干网络,具有降低的复杂度,非常适合部署在边缘设备上。A-YOLOM(s)的骨干网络更复杂,提供了更强大的性能,但同时也增加了时间开销,尤其是在 b s = 32 bs=32 bs=32的场景中。与其他SOTA的多任务模型和单任务模型相比,A-YOLOM(n)以其轻量级和更高的效率脱颖而出。具体来说,与YOLOP相比,A-YOLOM(n)具有显著更少的参数和更高的FPS。它在 b s = 1 bs=1 bs=1时实现了1.53倍的速度提升,在 b s = 32 bs=32 bs=32时实现了1.28倍的速度提升。这表明所提模型更高效。与HybridNet相比,A-YOLOM(n)在参数和速度上都有显著优势。尽管A-YOLOM(s)的参数比HybridNet多,但它运行速度更快。HybridNet在 b s = 1 bs=1 bs=1 b s = 32 bs=32 bs=32的情况下都无法满足实时性能的要求。

  HybridNet推理时间更长是因为它是一个基于锚点的方法。生成大量的锚框会增加计算开销,从而降低推理的整体速度。在这种情况下,不会在下一节将其性能与所提模型进行比较。YOLOv8是一个单任务模型,意味着它只能在一个模型中实现一个任务。作者列出了两个版本:YOLOv8n(det)和YOLOv8n(seg)。尽管它们都比其他模型,包括所提模型,运行得更快,但它们需要在边缘设备上部署三个单独的模型,这意味着将一个检测模型和两个分割模型组合到一个边缘设备上,总共需要9.68M个参数。这比A-YOLOM(n)多出2.18倍,给边缘设备带来了巨大的压力。此外,YOLOv8在三个任务上的性能远低于所提模型。

  (2)这部分展示了多任务实验的结果,包括目标检测、可行驶区域分割和车道线分割。
在这里插入图片描述

检测任务遵循YOLOP的设置,将汽车、公交车、卡车和火车合并为“车辆”分类。比较结果如表 II所示。根据定量结果,我们的模型在mAP50方面均取得了最佳性能。这表明所提模型在预测检测目标方面的准确性非常出色。特别是与MultiNet和FasterR-CNN相比。 此 外,A-YOLOM(n)在主干网络、 检测neck和head复杂度方面与YOLOv8n(det)相当。然而,A-YOLOM(n)在 召 回 率 和mAP50方 面 都 显 著 优于YOLOv8n(det)。这表明在多任务学习中,各种任务可以隐式地辅助并进一步提高单个任务的性能。另一方面,YOLOv8n(det)优于YOLOv5s,因为’s’尺度模型通常具有更复杂的骨干网络以增强性能。所提模型的一个问题是召回率不令人满意。YOLOP和DLT-Net的召回率比所提模型更好。由于 L d e t L_{det} Ldet中边界框损失的权重较高。这意味着所提模型更加保守,以牺牲召回率性能为代价,专注于实现更高的mAP。相信mAP50更好地反映了检测任务的综合性能。此外,所提模型实现了实时性能。

在这里插入图片描述

  对于可驾驶区域分割任务,表III提供了定量结果。所提模型在mIoU方面取得了第二和第三好的性能。YOLOP的表现优于所提模型,因为它们为分割任务定制了损失函数。在mIoU方面,A-YOLOM(n)和AYOLOM(s)分 别 落 后YOLOP 1%和0.5%。 虽 然该模 型 可 能在 性 能 上 略 有 牺 牲, 但 它 更 加 灵 活 且 更 快。 此外, 该模 型 在 性 能 上 远 优 于 其 他 模 型, 例如YOLOv8n(seg)、MultiNet和PSPNet。值得注意的是,虽然YOLOv8n(seg)比所提模型更快,但其部署成本更高,且其性能显著低于所提模型

  对于可驾驶区域分割任务 (drivable area segmentation task),表 III提供了定量结果。所提模型在mIoU方面取得了第二和第三好的性能。YOLOP(YOLOP)的表现优于所提模型,因为它们为分割任务(segmentation task)定制了损失函数(customized the loss function)。在mIoU方面(In terms of mIoU),AYOLOM(n)和A-YOLO(s)分别落后YOLOP 1%和0.5%。这个结果是可接受的。虽然所提模型可能在性能上略有牺牲,但它更加灵活且更快。此外,该模型在性能上远优于其他模型。例如YOLOv8n(seg)、MultiNet和PSPNet。虽然YOLOv8n(seg)比所提模型更快,但其部署成本更高,且其性能显著低于所提模型。

在这里插入图片描述

  对于车道线分割任务,表 IV提供了定量结果。AYOLOM(s)在准确率和IoU方面均取得了最佳性能。具体来说,与YOLOP相比,A-YOLOM(s)在准确率上具有
竞争力,并且在IoU上高出2.3%。值得注意的是,所提模型在所有分割任务中保持相同的结构和损失函数,消除了在遇到新的分割任务时进行调整的需求。此外,
YOLOv8 (seg)略逊于所提模型。根据表 III和表 IV中的结果,提出的neck和head比YOLOv8(seg)更适合分割任务。由于使用平衡准确率进行评估,Enet、SCNN和ENet-SAD采用了不同的准确率计算方法。因此,无法直接将准确率与它们的进行比较。然而,在IoU指标上的结果显著优于它们。

  (3)Visualization:本节展示了YOLOP与所提模型之间的可视化比较。不仅评估了在良好天气条件下的性能,还评估了在不利条件下的性能,包括强阳光、夜间、雨和雪。将逐一分析每个场景。图 3显示了晴天下的结果。强烈的阳光会影响驾驶员的视线。同样,它会影响摄像头的图像采集,进而影响模型的表现。这对可行驶区域和车道线分割是一个挑战。在这种具有挑战性的场景中,所提模型优于YOLOP。具体来说,在强烈的阳光条件下(如图中左右两侧的图像所示),我们的模型提供了准确的车道线预测,并为可行驶区域提供了更平滑的指示。此外,模型在检测较小和较远的车辆方面表现出更高的准确性。如图中中间和右侧的图像所示,所提模型成功检测到远处道路上的车辆,包括相反行驶方向的车辆和靠近房屋的车辆。根据可视化结果,所提模型在这个场景中优于YOLOP。
在这里插入图片描述

  图 4 展示了夜间场景的结果。在夜间场景中,由于光照有限和迎面车辆的反光,图像质量下降。这对模型进行准确预测是一个挑战。在这种挑战下,模型在车道线和可行驶区域方面始终产生更准确和更平滑的预测。A-YOLOM(s)不仅在分割任务中表现出色,而且在检测任务中也表现出色。具体来说,它通过准确检测到对向行驶的车辆(即使在反光条件下),甚至在与YOLOP抗衡时也表现出色。基于右侧图像的检测结果,YOLOP在夜间检测远距离车辆方面略优于所提模型。然而,与YOLOP相比,所提模型在分割结果方面明显更好。特别是在中间图像中,YOLOP错误地将对向车道预测为可行驶区域。这种误判对自动驾驶任务极为危险。
在这里插入图片描述

  图5显示了雨天的情况。雨水会增加路面的反射,从而影响驾驶员的判断。这个问题也体现在深度学习模型中。此外,由于雨滴的折射和散射效应,挡风玻璃上的雨滴可能会使整个图像模糊,给模型的预测带来相当大的挑战。左侧图像的结果可以观察到YOLOP由于路面反射而无法准确分割可行驶区域。中间图像中也出现了类似的情况。YOLOP甚至难以区分汽车引擎盖和路面。然而,所提模型在这种情况下仍然表现出卓越的性能。特别是对于A-YOLOM(s),它受路面反射的影响较小。所提模型在车道线检测方面也比YOLOP表现出色,如右侧图像所示。然而,**在这个场景中,YOLOP在检测任务上优于所提模型。**如图所示,YOLOP可以在更远的地方检测到更多的车辆。
在这里插入图片描述

在这里插入图片描述

  图6显示了雪天的情况。在雪天条件下,积累的雪可能会遮蔽道路或车道,给模型带来额外的挑战。一些积累的雪被清理到道路两侧的雪堆中,这对模型的车辆预测构成了挑战。例如,在中间图像的左侧,YOLOP错误地将一个雪堆识别为车辆。如果道路上有一个小雪堆,车辆通常可以绕过它。将如此小的雪堆误识别为静止车辆可能是危险的。因此,召回率并不总是越高越好。在召回率和精确度之间取得平衡至关重要。在展示的所有三个结果中,模型在分割任务上显著优于YOLOP,特别是A-YOLOM(s)的表现尤为突出。然而,根据右侧图像的结果,模型在检测远距离车辆方面落后于YOLOP,尤其是在使用A-YOLOM(n)时。在各种天气条件下,模型始终提供更准确和更平滑的分割结果。然而,与YOLOP相比,在恶劣天气条件下,模型检测远距离和小目标的能力略有下降

C. Ablation Studies

  本节引入了一种消融研究,以验证自适应拼接模块的有效性。此外,还评估了分割neck和head对整体模型性能的影响。

  (1) Adaptive concatenation module: 为了评估自适应连接模块的影响,将其性能与有无该模块的情况进行了比较。具体来说,YOLOM(n) 和 YOLOM(s) 作为基线,代表了具有不同骨干的两个不同实验组。A-YOLOM(n) 和 A-YOLOM(s) 都包含了自适应连接模块。它们的分割neck结构完全相同,且没有良好的设计。结果展示在表V中。当比较 AYOLOM(n) 与 YOLOM(n) 时,发现检测和可行驶区域分割的性能相当。然而,车道线准确率和 IoU 均有显著提升。同样,当比较 A-YOLOM(s) 与 YOLOM(s)时,观察到相同的改进趋势。这些结果表明,自适应连接模块能够自适应地连接特征,无需手动设计,并实现与精心设计的分割头部相似或更好的性能,从而进一步增强模型的泛化能力
在这里插入图片描述

  (2) Multi-task model and segmentation structure:为 了 评 估 多 任 务 方 法 对 每 个 单 独 任 务 的 影响, 以 及提 出 的 分 割neck 和 head结 构,在 分 割 任 务 领 域 内 比 较 了YOLOv8(segda)、YOLOv8(segll)、YOLOv8(multi)和YOLOM(n)的性能和head参数。YOLOM(n)与YOLOv8具有相似的骨干网络, 这使得这种比较既公平又合理。 结果展示在表 VI中。YOLOv8(segda)和YOLOv8(segll)分别实现了可 行 驶 区 域 和 车 道 线 分 割 任 务。 YOLOv8(multi)是一 个 集 成 的 多 任 务 学 习 模 型, 将YOLOv8(segda)、YOLOv8(segll)和YOLOv8(det)的neck和head结构整合到一个共享的骨干中。观察到性能有显著提升。这表明多任务学习可以相互增强各个任务的性能。
在这里插入图片描述

  与YOLOv8(multi)相比,YOLOM(n)拥有精心设计的、针对分割任务量身定制的neck结构。此外,它还拥有显著更轻量级的头部结构, 其复杂度仅为0.008倍。这一显著改进归功于独特的头部设计,该设计仅依赖于一系列卷积层,直接输出掩码,无需额外的原型信息。YOLOM(n)在可行驶区域和车道线任务中分别实现了好的mIoU和IoU结果。此外,在车道线任务中实现了具有竞争力的精度。这些结果证明了提出的颈部和头部创新在参数和性能开销最小的情况下取得了更好的结果

D. Real roads experiments

在这里插入图片描述

  本节主要讨论在真实道路数据集上进行的实验。具体来说,使用行车记录仪捕获几个视频,并将它们逐帧转换为图像,以使用所提模型和YOLOP进行预测。每个转换后的图像数据集包含1428张图像,分辨率为 1280 x 720 1280x720 1280x720。这些图像涵盖了三种场景:高速公路、夜间和白天。图7显示了真实道路数据集的结果。然而,所提模型在A-YOLOM(s)上始终维持相对稳定的性能。在所有任务中,A-YOLOM(s)的表现优于YOLOP。同时,与YOLOP相比,A-YOLOM(n)仅在检测任务中略逊一筹。ADS必须能够在不熟悉的场景中平稳运行。这是至关重要的。真实道路上的结果表明,所提模型可以满足真实道路上自动驾驶汽车的需求。

五、总结

  本文介绍了一种针对实时自动驾驶应用的全端到端轻量级多任务模型设计。多任务模型的优势在于每个任务都能隐式地增强其他任务,从而进一步提高所有任务的表现,并增强模型在边缘设备上的部署能力。为了提高模型的一般性,集成了一个自适应拼接模块,并为每种类型的任务提出了统一的损失函数。这使得所提模型更加灵活。与使用BDD100k数据集的其他最先进的实时多任务方法相比,所提模型不仅展示了优越的可视化结果,而且具有更高的FPS。此外,实际道路数据集的评估证明了所提模型在新型环境中的鲁棒性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/380939.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML5实现好看的天气预报网站源码

文章目录 1.设计来源1.1 获取天气接口1.2 PC端页面设计1.3 手机端页面设计 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_4…

深入理解PHP基础【代码审计实战指南】

文章目录 基础语法单双引号的区别前后端分离数据类型PHP常量函数var_dump函数count函数print_r函数**readfile()函数****file_get_contents()函数****file_put_contents()函数**header函数fopen函数fread 函数rename函数copy()函数…

【Android】视图与常用控件总结

文章目录 一、视图基础1.1 设置视图的宽高1.2 设置视图的间距1.3 设置视图的对齐方式1.4 总结 二、控件2.1 TextView2.1.1 设置宽高2.1.2 设置内容2.1.3 设置大小2.1.4 设置颜色 2.2 Button2.3 EditText2.4 ImageView2.5 ProgressBar2.6 AlertDialog2.7 ProgressDialog 本文主要…

EVM-MLIR:以MLIR编写的EVM

1. 引言 EVM_MLIR: 以MLIR编写的EVM。 开源代码实现见: https://github.com/lambdaclass/evm_mlir(Rust) 为使用MLIR和LLVM,将EVM-bytecode,转换为,machine-bytecode。LambdaClass团队在2周…

RICHTEK立锜科技 WIFI 7电源参考设计

什么是WIFI 7? WiFi 7(Wi-Fi 7)是下一代Wi-Fi标准,对应的是IEEE 802.11将发布新的修订标准IEEE 802.11be –极高吞吐量EHT(Extremely High Throughput )。Wi-Fi 7是在Wi-Fi 6的基础上引入了320MHz带宽、4096-QAM、Mu…

手动构建线性回归(PyTorch)

import torch from sklearn.datasets import make_regression import matplotlib.pyplot as plt import random #1.构建数据 #构建数据集 def create_dataset():x,y,coefmake_regression(n_samples100,n_features1,random_state0,noise10,coefTrue,bias14.5)#将构建数据转换为张…

H3CNE(计算机网络的概述)

1. 计算机网络的概述 1.1 计算机网络的三大基本功能 1. 资源共享 2. 分布式处理与负载均衡 3. 综合信息服务 1.2 计算机网络的三大基本类型 1.3 网络拓扑 定义: 网络设备连接排列的方式 网络拓扑的类型: 总线型拓扑: 所有的设备共享一…

# Redis 入门到精通(九)-- 主从复制(1)

Redis 入门到精通(九)-- 主从复制(1) 一、redis 主从复制 – 主从复制简介 1、互联网“三高”架构 高并发高性能高可用 2、你的“Redis”是否高可用? 1)单机 redis 的风险与问题 问题1.机器故障  现…

代码随想录算法训练营第九天 |LeetCode151.翻转字符串里的单词 卡码网:55.右旋转字符串

代码随想录算法训练营 Day 9 代码随想录算法训练营第九天 |LeetCode151.翻转字符串里的单词 卡码网:55.右旋转字符串 目录 代码随想录算法训练营前言LeetCode151.翻转字符串里的单词卡码网:55.右旋转字符串 一、LeetCode151.翻转字符串里的单词1.题目链…

[Cesium for Supermap] 加载3dTiles,点击获取属性

代码: // 设为椭球var obj [6378137.0, 6378137.0, 6356752.3142451793];Cesium.Ellipsoid.WGS84 Object.freeze(new Cesium.Ellipsoid(obj[0], obj[1], obj[2]));var viewer new Cesium.Viewer(cesiumContainer);var scene viewer.scenescene.lightSource.ambi…

python 打包

#导出依赖文件列表 pip freeze > requirements.txt #安装对应文件 pip install -r requirements.txt #将依赖打成对应whl文件 pip wheel --wheel-dir ./dist -r ./requirements.txt #安装whl文件 pip install …whl

个人简约低调主页,三种主题风格源码

一、源码描述 这是一款简约低调的个人主页源码,提供了数百个精美的动画效果,拥有完美的视觉体验和交互体验,可操作性也达到了巅峰,源码支持三种主题风格,白色、黑色和蓝色渐变,所有这些效果都是通过原生Ja…

怎么压缩视频文件?简单的压缩视频方法分享

视频已成为我们日常生活中不可或缺的一部分。但随着视频质量的提高,文件大小也逐渐成为我们分享的阻碍。如何有效压缩视频文件,使其既能保持清晰,又能轻松分享?今天,给大家分享五种实用的视频压缩方法,快来…

Spring Boot 笔记1(启动类与控制器)

采用Spring Tool Suit 4 java jdk 17 学习启动类与控制器 创建Spring Starter Project 如果https://start.spring.io链接无效,可以选择https://start.aliyun.com 项目结构 启动类 启动类是程序的执行入口 例子1 Demo1Application.java package com.example.dem…

《从C/C++到Java入门指南》- 9.字符和字符串

字符和字符串 字符类型 Java 中一个字符保存一个Unicode字符,所以一个中文和一个英文字母都占用两个字节。 // 计算1 .. 100 public class Hello {public static void main(String[] args) {char a A;char b 中;System.out.println(a);System.out.println(b)…

Django cursor()增删改查和shell环境执行脚本

在Django中,cursor()方法是DatabaseWrapper对象(由django.db.connectio提供)的一个方法,用于创建一个游标对象。这个游标对象可以用来执行SQL命令,从而实现对数据库的增删改查操作。 查询(Select&#xff0…

对象存储解决方案:高性能分布式对象存储系统MinIO

文章目录 引言I 自动化数据管理界面1.1 图形用户界面:GUI1.2 命令行界面:MinIO CLI1.3 应用程序编程接口:MinIO APIII 部署集成2.1 建议使用RPM或DEB安装方式2.2 创建环境变量文件2.3 启动MinIO服务2.4 将NGINX用作反向代理,配置负载。III 基础概念3.1 为什么是对象存储?3…

Python入门------pycharm加载虚拟环境

pycharm虚拟环境配置: 在按照前面的办法,配置好虚拟环境后,如果我们需要到虚拟环境开发,就需要给编译器配置虚拟环境 1.打开编译器,点击右下角的interpreter选项 2. 点击ADD Interpreter,添加虚拟环境 3. 因为我们使用的是原始…

CUDA编程00 - 配置CUDA开发环境

第一步: 在一台装有Nvidia显卡和驱动的机器上,用nvidia-smi命令查看显卡所支持cuda版本 第二步: 到Nvidia官网下载CUDA Toolkit并安装,CUDA Toolkit Archive | NVIDIA Developer 安装时按提示下一步即可,安装完成用 …

Linux源码安装的Redis如何配置systemd管理并设置开机启动

文章目录 实验前提实验 实验前提 已完成源码安装并能正常启动redis /usr/local/bin/redis-server能正常启动redis 实验 vim /etc/systemd/system/redis.service内容如下: [unit] Descriptionredis-server Afternetwork.target[Service] Typeforking ExecStart/…