SSD改进版本来啦!PSSD携实时性与高精度归来!

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【目标检测】技术交流群

后台回复【2D检测综述】获取鱼眼检测、实时检测、通用2D检测等近5年内所有综述!


SSD改进版本来啦!PSSD携实时性与高精度归来!_第1张图片

背景和目标:深度学习在各种任务中表现出色。其中,单阶段目标检测器(SSD)主要依靠分类网络来提取特征,多个特征图来预测,以及分类置信度来指导对重叠预测框的过滤。然而,仍有两个问题导致一些不准确的结果:

  1. 在特征提取过程中,随着语义信息的逐层获取,局部信息逐渐丢失,导致具有代表性的特征图较少;

  2. 在非最大抑制(NMS)算法中,由于分类和回归任务的不一致性,分类置信度和预测检测位置不能准确指示预测框的位置。

方法:为了解决上述问题本文提出了一种新的架构,即SSD的改进版本,称为精确单阶段检测器(PSSD)。首先,通过向SSD添加额外的层来改进特征。其次,构造了一个简单有效的特征增强模块,以逐步扩展每一层的感受野,并增强其局部和语义信息。最后,设计了一个更有效的损失函数来预测预测框和GT框之间的IOU,阈值IOU指导分类训练并衰减NMS算法使用的分数。

主要结果:得益于上述优化,所提出的模型PSSD实现了令人兴奋的实时性能。具体而言,使用Titan Xp的硬件和320像素的输入大小,PSSD在MS COCO基准测试中以45 FPS的速度达到33.8 mAP,在Pascal VOC 2007中以66 FPS的速率达到81.28 mAP。

此外,所提出的模型在较大的输入量下表现良好。在512像素下,PSSD可以在MS COCO上以27 FPS获得37.2 mAP,在Pascal VOC 2007上以40 FPS获得82.82 mAP。

1、简介

近年来,深度学习算法已成为一种强大的工具,可以自动捕获非线性和分层特征,并在各种应用中取得了巨大成功,尤其是在图像领域,如分类、分割、检测等。此外,它还扩展到了不同的分类任务,包括音频分类、文本分类、各种信号分类、多模态对象分类、事件检测和各种其他应用。其中,目标检测一直是绝大多数研究人员的兴趣。

为此,有各种算法,如YOLO、Fast RCNN、Faster RCNN等,多年来已成功用于目标检测。在过去几十年中,用于目标检测的深度学习算法得到了极大的关注。目标检测旨在从自然图像中的大量预定义类别中定位目标实例,是计算机视觉中最基本和最具挑战性的问题之一。

随着CNN的快速发展,目标检测取得了令人瞩目的进展,并逐渐演变为两阶段和单阶段两种主要结构。两阶段算法,如快速递归神经网络(FRCNN),其中第一阶段仅区分大量背景区域,并在不考虑目标的特定类别的情况下获得粗糙目标proposals。接下来是第二阶段,根据从CNN网络提取的特征对每个proposals进行分类并优化位置。

由于存在第二阶段进行的细化,两阶段算法无法实现实时性能。因此,由于实时检测,单阶段算法已成为各种目标检测应用的主要优先事项,因此,这是当前工作的特别兴趣。单阶段算法基于默认框直接执行分类和位置优化。例如,You Look Only Once(YOLO)和SSD实现了快速的实时检测速度,但同时牺牲了检测精度。近年来,单阶段检测器正在提高其精度,但仍然无法在速度和精度之间取得更好的平衡。

在本文中,在保证模型实时性能的前提下,在原始SSD的基础上提出了一种新的架构,称为精确单阶段检测器(PSSD),该架构为以下两个关键问题提供了解决方案:

  1. 如何在不依赖像ResNet-101这样的模型深层骨干的情况下,丰富预测器使用的特征信息?

  2. 在NMS算法的过程中,依靠分类置信度来确定重叠框的过滤是否合理?

1.1、Feature richness

考虑到图像金字塔造成的巨大开销,SSD提出了一种特征金字塔来解决多尺度检测问题。分类网络中的深层特征包含更多的语义信息,适合识别大目标,而浅层特征更适合识别小目标。然而,浅层特征中缺少语义信息以及深层特征中局部细节的丢失会降低SSD的精度。特征金字塔网络(FPN)能够将深度语义信息添加到浅层特征中,以获得更有效的特征金字塔,这提高了小目标检测的效果。

DetNet结合了空洞卷积,通过减少下采样步长来减少局部信息损失,从而提高大目标的定位精度。从上述网络可以看出,每个尺度预测器中使用的特征不仅需要合适的语义信息,还需要局部纹理信息,以实现更准确的定位。每个层次特征的信息丰富度对检测效果有重要影响。但问题是如何以尽可能少的开销构建一个高性能的特征金字塔。

1.2、Filtration of overlapping boxes

通常,为了防止结果重叠,将NMS设置为目标检测的最终操作。在NMS算法中,当两者之间的IOU大于阈值时,保留具有最高分类置信度的预测框,并过滤其他框。如图1所示,这可能导致不准确的结果。IOUNet指导NMS通过预测回归框和它们的GT之间的IOU来缓解这个问题。在此,关键问题出现了——如何使其在单阶段算法中更有效?

SSD改进版本来啦!PSSD携实时性与高精度归来!_第2张图片

1.3、贡献

为了提高检测效果,作者基于SSD模型缓解了上述问题。首先,通过在SSD中引入额外的层来改进特征,使基本特征金字塔更适合于特征融合。其次,将这些特征发送到特征增强模块(FEM)。FEM由两个子模块组成,即感受野扩展模块(RFM)和双向FPN。RFM用于逐步扩展每个特征的感受野,双向FPN用于补充更多的局部和语义信息。最后,设计了一个新的损失函数来预测回归框和它们的GT之间的IOU。然后使用IOU标签来指导分类训练,以提高分类和回归任务的一致性,并使用预测IOU来指导推理,以衰减低质量框的得分。

作者也已经在MS COCO和Pascal VOC基准上验证了本文所提的方法。在输入尺寸为320像素的Titan Xp硬件下,所提出的PSSD可以在COC上以45 FPS获得33.8 mAP,在Pascal VOC 2007上以66 FPS获得81.28 mAP。此外,模型在较大的输入量下也表现得非常好。在512像素下,PSSD可以在MS COCO上以27 FPS获得37.2 mAP,在Pascal VOC 2007上以40 FPS获得82.82 mAP。

2、本文方法

2.1、SSD backbone optimization

SSD的主干由VGG16和额外的层组成,如图3所示,为每个卷积层添加BatchNorm,并用平衡l1损失函数替换平滑l1。为了提高小目标检测的效果,作者尝试了4层FPN结构。然而,实验结果表明,改进并不像预期的那么显著。

因此,定义了从SSD主干获得并由预测器使用的特征图作为基本特征图。SSD主干的一部分如图3(a)所示。基本特征图是。为了获得,执行三次3×3卷积和一次空洞率为6的3×3空洞卷积。大的空洞率导致从到的一些对象语义和局部信息丢失。

同时,FPN使用的基本特征图的感受野扩展是不均匀的。与的空洞率远大于与和与的空洞率。因此,FPN的效果不如预期明显。

因此,在以下条件下重新设计额外的层。

  • 基本特征图的接受范围应均匀扩展。

  • 没有预训练模型的额外层的参数不应急剧增加。

  • 应适当扩大每个特征图的感受野覆盖范围。

SSD改进版本来啦!PSSD携实时性与高精度归来!_第3张图片

图3(b)显示了拟议模型中引入的新额外层。使用空洞率为2的3×3卷积,而不是两个3×3的标准卷积。这样,从到和从到的感受野的延伸率与从到的相似,但网络参数的数量减少。

考虑到第三个方面,使用FEM模块来扩展每个特征图的感受野,而不会影响其他特征图。总体而言,通过这种优化,基本特征图的感受野分布现在更加均匀,适合于多尺度特征融合结构,如FPN。

2.2、Feature Enhancement Module

2.2.1、Receptive field expansion module

RFBNet的成功表明,使用空洞卷积来扩大感受野是有效的。考虑到更大感受野的有效性,作者设计了一个简单但有效的感受野扩展模块(RFM)。

SSD改进版本来啦!PSSD携实时性与高精度归来!_第4张图片

如图4所示,为了防止大的空洞率影响计算速度,作者采用了分离残差结构。首先,使用1×1卷积对原始特征图进行特征转换,然后将X划分为4个块:、、和。其中直接映射到最终特征以防止信息丢失;是通过对进行3×3,d=1卷积得到的,然后将其与相加,并将其和发送到3×3、d=3卷积获得3。类似地,对和的和进行3×3,d=5卷积得到。最后,使用1×1卷积对扩展特征进行跨通道信息集成和降维。

分离的残差设计确保了在参数数量没有显著增加并且尽可能保持原始特征细节的情况下,基本特征的感受野范围大大扩展。这个模块并不昂贵,除了最后一层外,每个层的输入和输出尺寸都相同。

2.2.2、Two-way FPN

特征金字塔的设计决定了特征的丰富性和检测性能。FPN将高级语义信息引入到浅层以丰富特征。然而,由于在特征提取过程中丢失了局部细节,关于高级特征的信息也不够。与DetNet、RSSD、PANet等带来更高维或更多卷积计算的技术不同,本文实现了一个简单的双向FPN来缓解这个问题。

SSD改进版本来啦!PSSD携实时性与高精度归来!_第5张图片

如图5所示,在RFM之后构建了两个信息流。首先,从Y4特征引入传统的FPN来构造向下语义信息流,得到、、和。其次,从VGG 的较浅层构造向上局部信息流,获得、、、、、。

最后,将S特征与L特征相结合,并使用3×3卷积层进行特征转换。为了减少开销并保留每个特征的信息,使用256维构建信息流,双线性插值进行上采样,平均池化进行下采样。最后,生成512个维度特征,用于具有更强预测因子的训练。

3、Loss Settings based on IOU

3.1、IOU branch

分类和回归任务相对独立,分类置信度不能准确地表示预测框的位置。因此,NMS会过滤一些更准确的预测框。作者使用一种成本较低的独立于类别的方法,对NMS中使用的分数进行基于IOU的衰减。

SSD改进版本来啦!PSSD携实时性与高精度归来!_第6张图片

如图6所示,添加了一个分支来预测回归框和它们的GT之间的IOU。结果是通过在增强的特征图上直接应用3×3卷积,然后使用sigmoid函数将其归一化为0-1得到的。计算回归框与GT之间的IOU。

为了确保损失的凸性并增加梯度值,设计了一种新的IOU回归损失(),如下所示:

SSD改进版本来啦!PSSD携实时性与高精度归来!_第7张图片

其中是预测的并集上的交集,是并集上目标交集,分别是IOU和目标IOU的精度。

3.2、Regression Loss

为了使大目标更好地回归,使用由Libra-RCNN提出的balance  ():

SSD改进版本来啦!PSSD携实时性与高精度归来!_第8张图片

其中,默认参数设置为α=0.5和γ=1.5。

3.3、Cross-entropy of joint IOU loss:

对于一般的单阶段检测算法,如RetinaNet,IOU在0.4-0.5范围内的样本被忽略,因为模型很难学习分类边界。然而,仍然存在以下问题:

  • 存在一些假阳性样本(回归结果的IOU小于0.5),模型仍然迫使它们被识别为吗,这导致低质量预测框。

  • 有些样本的IOU在0.4-0.5之间,可以学习,忽略这些样本不利于提高模型的学习能力。

  • 传统的交叉熵损失没有考虑推理过程中NMS中使用的分数生成。

因此,采用了新的正样本规则,并设计了一个新的联合IOU()交叉熵损失,如下所示:

76793d3b8130f256ec6039e20ae2464e.png

其中是梯度值,是预测类概率。将其GT值大于0.4的IOU的默认框设置为正样本。如果可以更准确地回归默认框(≥ 0.5),计算分类损失,否则忽略它们。

因此,该模型不强制对假阳性样本进行分类,可以挖掘出更多潜在的阳性样本。同时,将最终优化目标更改为最大化·,这与推断一致(得分=·)。此外,考虑到平衡未从回归的整体进行优化该损失函数可以将关于IOU的监测信号添加到回归器,以使预测结果更加准确。

4、实验

4.1、Performance evaluation on Microsoft COCO

SSD改进版本来啦!PSSD携实时性与高精度归来!_第9张图片 SSD改进版本来啦!PSSD携实时性与高精度归来!_第10张图片 SSD改进版本来啦!PSSD携实时性与高精度归来!_第11张图片

4.2、Ablation Study

SSD改进版本来啦!PSSD携实时性与高精度归来!_第12张图片 SSD改进版本来啦!PSSD携实时性与高精度归来!_第13张图片

4.3、FEM module

SSD改进版本来啦!PSSD携实时性与高精度归来!_第14张图片

4.4、Performance evaluation on Pascal VOC 2007

SSD改进版本来啦!PSSD携实时性与高精度归来!_第15张图片 SSD改进版本来啦!PSSD携实时性与高精度归来!_第16张图片

5、参考

[1].Precise Single-stage Detector.

往期回顾

超大超全!万字长文详解多领域实时目标检测算法(2022最新)

SSD改进版本来啦!PSSD携实时性与高精度归来!_第17张图片

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、规划控制、模型部署落地、自动驾驶仿真测试、硬件配置、AI求职交流等方向;

加入我们:自动驾驶之心技术交流群汇总!

自动驾驶之心【知识星球】

想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!

SSD改进版本来啦!PSSD携实时性与高精度归来!_第18张图片

你可能感兴趣的:(算法,卷积,大数据,编程语言,python)