无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv

No More Strided Convolutions or Pooling:A New CNN Building Block for Low-Resolution Images and Small Objects

pdf下载:

卷积神经网络(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)以相同的方式替代卷积步长和池化。综上所述,本文的贡献如下:

图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, _C_1)并对 _X_进行2倍的下采样。

无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv

图3:当scale = 2 时SPD-Conv 的图解(详见文本)

3.2 Non-strided 卷积

在SPD 特征转换层之后,我们添加一个带有C2 过滤器的(即stride=1)无卷积步长层,其中 C 2< scale_2 _C1

无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv,并进一步进行转换 XS scale, S scale, scale_2 _C 1X” (S scale, S scale, C 2)无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv。我们使用无步长卷积的原因是为了尽可能地保留 所有的判别特征信息。否则,例如,使用stride=3 的3 × 3 过滤器,特征图将”缩小”,但每个像素 只采样一次;如果stride=2 ,将发生非对称采样,其中偶数行/列和奇数行/列将被采样不同的次数。一般来说,大于1 的步长会导致信息的非歧视性损失,尽管在表面上,它转换特征映射 XS scale, S scale, scale_2 _C 1X” (S scale, S scale, C 2)无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv(但没有 X无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv)。

4. 如何使用 SPD-Conv: 案例研究

为了解释如何应用我们提出的方法来重新设计CNN 架构,我们使用了两个最具代表性的计算机视觉模型类别:目标检测和图像分类。这几乎没有丧失普遍性,CNN 架构使用步长卷积和/或池化操作来下采样特征图。

4.1 目标检测

YOLO 是一系列非常流行的目标检测模型,其中我们选择最新的YOLOv5[14]进行演示。YOLOv5 使用CSPDarknet53[4],其中SPP[12]模块作为骨干,PANet[23]作为neck ,YOLOv3 head[26]作为检测头。此外,它还使用了各种数据增强方法和YOLOv4 [4]中的一些模块进行性能优化。它采用带sigmoid 层的交叉熵损失计算目标性和分类损失,使用CIoU 损失函数[38]计算定位损失。CIoU 损耗比IoU 损耗考虑的细节更多,如边缘重叠、中心距离和宽高比。

YOLOv5-SPD.我们将第3 节中描述的方法应用到YOLOv5 ,只需更换YOLOv5 stride-2 卷积层即可得到YOLOv5- SPD (图4),用SPD-Conv 构建块取代原有卷积。有7 个这样的替换实例,因为YOLOv5 在主干中使用5 个stride-2 卷积层对特征图进行25 倍的下采样,在neck 使用2 个stride-2 卷积层。在YOLOv5 neck 中,每一次步长卷积后都有一个连接层;这并没有改变我们的方法,我们只是将其保持在SPD 和Conv 之间。

可伸缩性 .YOLOv5- SPD 可以满足不同的应用程序或硬件需求,以与YOLOv5 相同的方式轻松放大和缩小。具体来说,我们可以简单地调整(1)每个无步长卷积层中的滤波器数量和/或(2)C3 模块的重复次数(如图4 所示),得到不同版本的YOLOv5-SPD 。第一种方法称为宽度缩放,它将原始宽度 nw

无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv(通道数量)更改为 [ n w × widt h ___ factor ]_8 无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv (四舍四入到8 的最接近倍数)。第二种被称为深度缩放,它改变了原来的深度 _nd无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv(重复C3 模块的次数,例如,图4 中9 × C3 中的9)到 [ n d × depth_factor]无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv。这样,通过选择不同的宽度/深度系数,我们得到了 nano, small, medium, 和 _large_的YOLOv5- SPD ,如表2 所示,其中系数值的选择与YOLOv5 相同,以便我们在后面的实验中进行比较。

表2:扩展YOLOv5-SPD 以获得适合不同案例的不同版本.

表3:我们的ResNet18-SPD 和ResNet50-SPD 架构.

4.2 图像分类

分类CNN 通常从一个stem 单元开始,该单元由一个stride-2 卷积和一个池化层组成,以降低四倍的图像分辨率。一个流行的模型是ResNet[13],它赢得了ILSVRC 2015 年的挑战赛。ResNet 引入了残差连接,允许训练多达152 层的网络。它还通过仅使用单个全连接层显著减少了参数的总数。最后采用softmax 层对类预测进行规范化。

ResNet18-SPD ResNet50-SPD。ResNet-18 和ResNet-50 都使用了总共4 个stride-2 卷积和一个最大池化的stride-2 层,对每个输入图像进行25 倍的采样。应用我们提出的构建块,我们用SPD-Conv 替换了四个跨步卷积;但另一方面,我们只是删除了最大池化层,因为我们的主要目标是低分辨率的图像,在我们的实验中使用的数据集是相当小的图像(在Tiny ImageNet 中64 × 64 ,在CIFAR-10 中32 × 32),因此池化是不必要的。对于较大的图像,这样的最大池化层仍然可以用SPD-Conv 以同样的方式替换。这两个新的网络结构如表3 所示。

5. 实验

本节使用两个代表性的计算机视觉任务(目标检测和图像分类)评估我们提出的SPD-Conv 方法。

5.1 目标检测

数据集和设置 .我们使用COCO-2017 数据集[1],它分为train2017(118,287 张图像)和val2017(5000 张图像;也称为minival)用于验证,test2017(40,670 张图像)用于测试。我们使用了广泛的最先进的基准模型,如表4 和表5 所示。我们给出了val2017 在不同情况下的平均精度(AP)标准度量IoU 阈值[0.5:0.95]和目标大小(小、中、大)。我们还给出了test-dev2017(20288 张图片)上的AP 指标,它是test2017 的一个子集,具有可访问的标签。然而,这些标签并没有公开发布,但需要将所有预测的标签在JSON 文件中提交给CodaLab COCO Detection 要求[2]检索已计算的指标,我们这样做了。

训练 .我们训练不同版本(nano, small, medium, and large)的YOLOv5-SPD 和train2017 上的所有基准模型。与大多数其他研究不同的是,我们从头开始训练,不使用迁移学习。这是因为我们希望检查每个模型的真正学习能力,而不被从理想(高质量)数据集(如ImageNet)的迁移学习继承的丰富特征表示所掩盖。这是在我们自己的模型(-SPD-n/s/m/l)和所有现有的YOLO 系列模型(v5, X, v4 ,以及它们的缩放版本,如nano, small, large 等)上进行的。其他基准模型仍然使用迁移学习,因为我们缺乏资源(从头开始训练消耗大量GPU 时间)。然而,请注意,这仅仅意味着这些基准被置于比我们自己的模型更有利的位置,因为它们受益于高质量的数据集。

我们选择momentum 为0.937 ,权值衰减为0.0005 的SGD 优化器。在三个热身阶段,学习率从0.0033 线性增加到0.01 ,随后使用余弦衰减策略降低到最终值0.001 。nano 和small 模型训练在4 个V-100 32GB GPU 上,batch size 为128 , _medium_和 _large_训练在batch size 为32 。目标和分类损失函数采用CIoU 损失[38]和交叉熵损失。我们还采用了几种数据增强技术来减轻过拟合,并提高所有模型的性能;这些技术包括(i)色调、饱和度和值的光度失真,(ii)几何失真,如平移、缩放、剪切、左右翻转fliplr 和上下翻转flipup ,以及(iii)多图像增强技术,如马赛克和切割混合cutmix 。注意,在推断时不使用数据增强。超参数采用YOLOv5 ,无需重新调优。

结果 。表4 给出了val2017 上的结果,表5 给出了test-dev 上的结果。两个表中的APS ,_APM ,_APL 指的是小型/中型/大型目标的AP ,不应与模型比例(nano, small,medium, large)混淆。两个表中所示的图像分辨率640 × 640 在目标检测(与图像分类相反)中并不被认为是高的,因为实际物体上的分辨率要低得多,特别是当目标很小的时候。

表4:MS-COCO 验证数据集(val2017)的比较.

val2017 结果.表4 按模型比例表示,用水平线分隔(最后一组是大目标检测模型)。在第一类nano 模型中,我们的YOLOv5-SPD-n 的AP 和APS 性能都是最好:其APS 比第二YOLOv5n 高13.15%,整体AP 比第二名YOLOv5n 高10.7%。

在第二类small 中,我们的YOLOv5-SPD-s 在AP 和APS 上的表现都是最好的,尽管这次YOLOX-S 在AP 上是第二好的。

在第三种medium 中,虽然我们的YOLOv5-SPD-m 仍然优于其他型号,但AP 性能非常接近。另一方面,我们的APS 比第二名有更大的获胜优势(高出8.6%),这是一个好迹象,因为SPD-Conv 对于较小的物体和较低的分辨率尤其有利。

最后,对于large 模型,YOLOX-L 获得了最好的AP ,而我们的YOLOv5-SPD-l 仅略低(3%)(但比底部组中的其他基准模型要好得多)。另一方面,我们的APS 仍然是最高的,这与SPD-Conv 的上述优势相呼应。

表5:MS-COCO 测试数据集的比较(test-dev2017).

test-dev2017 结果 .如表5 所示,我们的YOLOv5-SPD-n 再次成为APS 上nano 模型类别的明显赢家,领先YOLOv5n 19%。对于平均AP ,虽然看起来似乎EfficientDet-D0 比我们的表现更好,这是因为EfficientDet 的参数几乎是我们的两倍,并且使用高分辨率图像进行训练(通过转移学习,如单元中的”Trf”所示),AP 值与分辨率高度相关。这种训练的好处也同样反映在小模型类别中。

尽管其他基准模型获得了这种好处,但我们的方法在下一个类别中,即在AP 和APS 上的中型模型中重新获得了最高排名。最后,在large 类别中,我们YOLOv5-SPD-l 的APS 也是性能最好的,在AP 上的YOLOX-L 非常接近。

总结.很明显,通过简单地用我们提出的SPD-Conv 构建块替换卷积步长和池化层,神经网络可以显著提高其精度,同时保持相同的参数大小水平。当目标很小时,这种改进更加突出,这很好地满足了我们的目标。尽管我们并不是在所有情况下都能够占据第一名的位置,但SPD-Conv 是唯一能够始终保持良好表现的方法;如果不是表现最好的话,它只是偶尔会成为(非常接近的)亚军,而在我们的主要目标指标APS 上,它总是赢家。

最后,回想一下,我们采用了YOLOv5 超参数而没有进行返回调优,这意味着我们的模型在进行专门的超参数调优后可能会表现得更好。还记得所有非YOLO 基准模型(和PP-YOLO)使用迁移学习进行训练,因此受益于高质量的图像,而我们的没有。

视觉对比。为了视觉和直观的理解,我们使用随机选择的两幅图像提供了两个真实的例子,如图5 所示。我们比较YOLOv5-SPD-m 和YOLOv5m ,因为后者是相应(中等)类别中所有基准模型中性能最好的。图5(a)(b)表明YOLOv5-SPD-m 能够检测到被遮挡的长颈鹿,YOLOv5m 没有检测到,图5(c)(d)显示YOLOv5-SPD-m 检测到非常小的目标(一张脸和两个长凳),而YOLOv5m 检测不到。

无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv

5.2 图像分类

数据集和设置。对于图像分类任务,我们使用了Tiny ImageNet[19]和CIFAR-10 数据集[17]。Tiny ImageNet 是一个ILSVRC-2012 分类数据集子集,包含200 个类。每个类都有500 张训练图,50 张验证图,50 张测试图。每张图片的分辨率为64×64×3 像素。CIFAR-10 包含6 万张分辨率32 × 32 × 3 的图像,包括5 万张训练图像和1 万张测试图像。有10 个类,每个类有6000 张图片。我们使用准确率第一作为评价分类性能的指标。

训练。我们在Tiny ImageNet 上训练ReseNet18-SPD 模型。我们执行随机网格搜索来优化超参数,包括学习率、批大小、动量、优化器和权值衰减。图6 展示了使用wandb MLOPs 生成的样本超参数扫描图。结果是选择SGD 优化器,学习率为0.01793 ,动量为0.9447 ,最小批大小为256 ,权值衰减正则化为0.002113 ,训练轮次为200 。接下来,我们CIFAR-10 上训练我们的ResNet50-SPD 模型。超参数采用ResNet50 论文中的超参数,其中SGD 优化器的初始学习率为0.1 ,动量为0.9 ,批大小为128 ,权值衰减正则化0.0001 ,训练轮次为200 。对于ReseNet18-SPD 和ReseNet50-SPD ,我们使用与ResNet 中相同的衰减函数,随着epoch 数的增加而降低学习率。

图6:图像分类中的超参数调节:使用wandb 的扫描图。

测试。Tiny ImageNet 上的准确性是在验证数据集上评估的,因为测试数据集中的基本ground truth 是不可用的。在测试数据集上计算CIFAR-10 的精度。

结果。表6 总结了top-1 精度的结果。结果表明,我们的模型ResNet18-SPDResNet50-SPD 明显优于所有其他基准模型。

最后,我们在图7 中提供了一个使用Tiny ImageNet 的可视化插图。给出了8 个被ResNet18 错误分类和被ResNet18-SPD 正确分类的例子。这些图像的共同特征是分辨率较低,因此对标准ResNet 提出了挑战,后者在卷积步长和池化操作中丢失了细粒度信息。

无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv

图7:绿色标签:ground truth 。蓝色标签:ResNet18-SPD 预测。红色标签:ResNet-18 预测

6. 结论

本文指出了现有CNN 体系结构中一个常见但有缺陷的设计,即使用卷积步长和/或池化层。这将导致细粒度特征信息的丢失,特别是在低分辨率图像和小物体上。然后,我们提出了一个名为SPD-Conv 的新的CNN 构建块,它完全消除了步长和池化操作,取而代之的是一个空间到深度卷积和一个无步长卷积。这种新设计在保留判别特征信息的同时,具有向下采样特征图的优点。它还代表了一种通用的统一方法,可以很容易地应用于任何CNN体系结构,也可以以同样的方式应用于跨步转换和池。我们提供了两个最具代表性的用例,目标检测和图像分类,并通过广泛的评估证明SPD-Conv在检测和分类精度方面带来了显著的性能改进。我们预计它将广泛惠及研究社区,因为它可以很容易地集成到现有的深度学习框架中,如PyTorch和TensorFlow。

链接:https://pan.baidu.com/s/1-YnmEU6d_x0N7S1xspUFeA
提取码:yyds

Original: https://blog.csdn.net/weixin_53660567/article/details/127184416
Author: 长沙有肥鱼
Title: 无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块SPD-Conv

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/624820/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球