No More Strided Convolutions or Pooling:A New CNN Building Block for Low-Resolution Images and Small Objects
原文地址:
https://arxiv.org/pdf/2208.03641v1.pdf
pdf下载:
(67条消息) 无卷积步长或池化:用于低分辨率图像和小物体的新CNN模块SPD-Conv-行业报告文档类资源-CSDN文库https://download.csdn.net/download/weixin_53660567/86737435
无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv
摘要
卷积神经网络(CNNs)在图像分类和目标检测等计算机视觉任务中取得了显著的成功。然而,当图像分辨率较低或物体较小时,它们的性能会迅速下降。在本文中,我们指出这根源为现有CNN常见的设计体系结构中一个有缺陷,即使用卷积步长和/或池化层,这导致了细粒度信息的丢失和较低效的特征表示的学习。为此,我们提出了一个名为SPD-Conv的新的CNN构建块来代替每个卷积步长和每个池化层(因此完全消除了它们)。SPD-Conv由一个空间到深度(SPD)层和一个无卷积步长(Conv)层组成,可以应用于大多数CNN体系结构(如果不是全部的话)。我们从两个最具代表性的计算机视觉任务:目标检测和图像分类来解释这个新设计。然后,我们将SPD-Conv应用于YOLOv5和ResNet,创建了新的CNN架构,并通过经验证明,我们的方法明显优于最先进的深度学习模型,特别是在处理低分辨率图像和小物体等更困难的任务时。我们在https://github.com/LabSAINT/SPD-Conv上开放了源代码。
1.介绍
自AlexNet[18]以来,卷积神经网络(CNNs)在许多计算机视觉任务中表现出色。例如在图像分类方面,CNN的知名模型有AlexNet、VGGNet[30]、ResNet[13]等;在目标检测中,包括R-CNN系列[9,28],YOLO系列[26,4],SSD [24],EfficientDet [34],等等。然而,所有这样的CNN模型在训练和推理中都需要“高质量”的输入(精细图像、中型到大型对象)。例如,AlexNet最初在227×227清晰图像上进行训练和推理,但在将图像分辨率降低到1/4和1/8后,其分类准确率分别下降了14%和30%,[16]。VGGNet和ResNet too[16]上也有类似的情况。在目标检测的情况下,SSD在1/4分辨率的图像或相当于1/4较小尺寸的目标上受到显著的mAP损失34.1,如文献[11]所描述的那样。事实上,小物体检测是一项非常具有挑战性的任务,因为小物体固有的分辨率较低,而且可供模型学习的背景信息也有限。此外,它们经常(不幸地)与同一图像中的大型目标共存,而大型目标往往会主导特征学习过程,从而使小型目标无法被检测到。
在本文中,我们认为这种性能下降的根源在于现有CNN的一个常见的设计缺陷。也就是说,使用卷积步长和/或池化,特别是在CNN体系结构的早期层中。这种设计的负面影响通常不会表现出来,因为大多数被研究的场景都是“和蔼可亲的”,图像有良好的分辨率,物体的大小也适中; 因此,存在大量的冗余像素信息,跨跃卷积和池化可以方便地跳过,模型仍然可以很好地学习特征。然而,在图像模糊或物体很小的更困难的任务中,冗余信息的大量假设不再成立,当前的设计开始遭受细粒度信息丢失和学习特征不足的影响。
为了解决这个问题,我们为CNN提出了一个新的构建模块,称为SPD-Conv,完全替代(从而消除)卷积步长和池化层。SPD- conv是一个空间到深度(SPD)层,后面跟着一个无步长卷积层。SPD层对特征映射X进行下采样,但保留了通道维度中的所有信息,因此没有信息丢失。我们受到了图像转换技术[29]的启发,该技术在将原始图像输入神经网络之前将其缩放,但我们基本上将其推广到整个网络内部和整个网络中的下采样特征映射;此外,我们在每个SPD之后添加了一个无步长卷积操作,以在增加的卷积层中使用可学习参数减少(增加的)通道数量。我们提出的方法既通用又统一,因为SPD-Conv (i)可以应用于大多数(如果不是所有)CNN架构,并且(ii)以相同的方式替代卷积步长和池化。综上所述,本文的贡献如下:
- 我们在现有的CNN体系结构中发现了一个常见的设计缺陷,并提出了一个名为SPD-Conv的新构建块来代替旧的设计。SPD-Conv下采样不丢失可学习信息,完全摒弃了目前广泛使用的步长卷积和池化操作。
- SPD-Conv代表了一种通用和统一的方法,可以很容易地应用于大多数(如果不是所有)基于深度学习的计算机视觉任务。
- 利用目标检测和图像分类这两个最具代表性的计算机视觉任务,对SPD-Conv的性能进行了评价。具体而言,我们构建了YOLOv5-SPD、ResNet18-SPD和ResNet50-SPD,并在COCO-2017、Tiny ImageNet和CIFAR-10数据集上对它们进行了评估,并与几种最先进的深度学习模型进行了比较。结果表明,该算法在AP方面有显著提高,并获得了top-1精度,特别是在小物体和低分辨率图像上。如图1所示。
- SPD-Conv可以很容易地集成到流行的深度学习库中,如PyTorch和TensorFlow,有可能产生更大的影响。我们的源代码可在https://github.com/LabSAINT/SPD-Conv获得。
图1:比较AP中的小目标(APS)。“SPD”表示我们的方法。
本文的其余部分组织如下。第2节介绍了背景并回顾了相关工作。第3节描述了我们提出的方法,第4节介绍了两个使用目标检测和图像分类的案例研究。第5节提供了性能评估。本文的结论在第6部分。
2 前期工作及相关工作
我们首先提供这个领域的概述,更多地关注目标检测,因为它包含了图像分类。
目前最先进的目标检测模型是基于CNN的,可以分为一级和二级检测器,或基于锚框的或无锚框检测器。两阶段检测器首先生成粗区域提取,然后使用一个head(全连接网络)对每个提取进行分类和细化。相比之下,一级检测器跳过区域提取步骤,直接在密集的位置采样上运行检测。基于锚框的方法使用锚框盒,锚框盒是一个预定义的盒子集合,匹配训练数据中对象的宽度和高度,以提高训练过程中的损失收敛性。我们提供了表1,它对一些众所周知的模型进行了分类。
一般而言,一级检测器比二级检测器速度快,基于锚框的模型比无锚框的模型更精确。因此,在后面的案例研究和实验中,我们更多地关注单级和基于锚框的模型,即表1中的第一个行。一个典型的单阶段目标检测模型如图2所示。它由一个基于CNN的视觉特征提取backbone和一个预测每个包含对象的类别和边界框的检测头组成。在这两者之间,添加一个额外的NECK来组合多个尺度的特征,以产生语义上强的特征,用于检测不同大小的目标。
表1:OD模型的分类
图2:一级目标检测通道
2.1小目标检测
传统上,检测小物体和大物体都被视为一个多尺度的物体检测问题。一种经典的方法是图像金字塔[3],它将输入图像调整为多个尺度,并为每个尺度训练专用检测器。为了提高精度,提出了SNIP[31],它根据每个探测器中不同的物体大小进行选择性反向传播。SNIPER[32]提高了SNIP的效率,它只处理每个目标实例周围的背景区域,而不是图像金字塔中的每个像素,从而减少了训练时间。采用另一种提高效率的方法,特征金字塔网络FPN[20]在卷积层中利用横向连接将固有的多尺度特征联系在一起,并使用自顶向下的结构将这些特征结合起来。随后引入PANet[22]和BiFPN[34],利用较短的路径改善FPN的特征信息流。此外,引入SAN[15]将多尺度特征映射到尺度不变换子空间,使检测器对尺度变化具有更强的鲁棒性。所有这些模型都一致使用卷积步长和最大池化,我们完全摆脱了这一点。
2.2低分辨率图像分类
解决这一挑战的早期尝试之一是[6],它提出了一个端到端CNN模型,在分类之前添加一个超分辨率步骤。随后,[25]提出将从高分辨率训练图像中获得的细粒度知识转移到低分辨率测试图像中。然而,这种方法需要对应于特定应用程序(例如,类)的高分辨率训练图像,而这些图像并不总是可用的。
其他一些研究,如[37],也需要对高分辨率训练图像的同样要求。最近,[33]提出了一个包含属性级可分离性(属性表示细粒度、分层的类标签)的损失函数,以便模型能够学习特定于类的鉴别特征。然而,细粒度(分层)类标签很难获得,因此限制了该方法的采用。
3.一个新的构建模块:SPD-Conv
SPD- conv由一个空间到深度(SPD)层和一个非跨步卷积层组成。本节将对此进行详细描述。
我们的SPD组件推广了一种(原始)图像转换技术[29]来对CNN内部和整个CNN的特征映射进行下采样,如下所示。
考虑任意大小为S × S × C1的中间特征映射X,将子特征映射序列切片为:
一般来说,给定任何(原始)特征映射X,子映射fx,y由所有特征映射组成特征图X(i, j) ,i + x和j + y可以被比例整除。因此,每个子图按一个比例因子向下采样X。图3(a)(b)(c)给出了一个例子,当scale = 2时,我们得到四个子映射f0,0,f1,0,f0,1,f1,1,它们的形状为(S/2,S/2,C1)并对X进行2倍的下采样。
接下来,我们沿着通道维度将这些子特征映射连接起来,从而得到一个特征映射X’,它的空间维度减少了一个比例因子,通道维度增加了一个比例因子2。
图3:当scale = 2时SPD-Conv的图解(详见文本)
3.2 Non-strided卷积
在SPD特征转换层之后,我们添加一个带有C2过滤器的(即stride=1)无卷积步长层,其中 C2