本文改进:SPD-Conv由一个空间到深度(SPD)层和一个无卷积步长(Conv)层组成,特别是在处理低分辨率图像和小物体等更困难的任务时。
1)SPD-Conv完美融合Conv,实现暴力涨点;
1.论文简介
论文:https://arxiv.org/pdf/2208.03641v1.pdf
github:SPD-Conv/YOLOv5-SPD at main · LabSAINT/SPD-Conv · GitHub
摘要:卷积神经网络(CNNs)在计算即使觉任务中如图像分类和目标检测等取得了显著的成功。然而,当图像分辨率较低或物体较小时,它们的性能会灾难性下降。这是由于现有CNN常见的设计体系结构中有缺陷,即使用卷积步长和/或池化层,这导致了细粒度信息的丢失和较低效的特征表示的学习。为此,我们提出了一个名为SPD-Conv的新的CNN构建块来代替每个卷积步长和每个池化层(因此完全消除了它们)。SPD-Conv由一个空间到深度(SPD)层和一个无卷积步长(Conv)层组成,可以应用于大多数CNN体系结构。我们从两个最具代表性的计算即使觉任务:目标检测和图像分类来解释这个新设计。然后,我们将SPD-Conv应用于YOLOv5和ResNet,创建了新的CNN架构,并通过经验证明,我们的方法明显优于最先进的深度学习模型,特别是在处理低分辨率图像和小物体等更困难的任务时。
1.2. SPD- conv
SPD- conv由一个空间到深度(SPD)层和一个非跨步卷积层组成。SPD组件推广了一种(原始)图像转换技术[29]来对CNN内部和整个CNN的特征映射进行下采样:
考虑任意大小为S × S × C1的中间特征映射X,将子特征映射序列切片为:
2.Yolov5-SPD网络结构图
只需更换YOLOv5 stride-2卷积层即可得到YOLOv5- SPD,用SPD-Conv构建块取代原有卷积。有7个这样的替换实例,因为YOLOv5在主干中使用5个stride-2卷积层对特征图进行25倍的下采样,在neck使用2个stride-2卷积层。在YOLOv5 neck中,每一次步长卷积后都有一个连接层;这并没有改变我们的方法,我们只是将其保持在SPD和Conv之间。
YOLOv5-SPD提供多个版本:
YOLOv5-SPD性能:
3.SPD- conv加入 RT-DETR
3.1 SPD- conv加入ultralytics/nn/attention/attention.py
核心代码:
代码语言:javascript复制
###################### SPD-Conv #### start ###############################
import torch
import torch.nn as nn
class space_to_depth(nn.Module):
# Changing the dimension of the Tensor
def __init__(self, dimension=1):
super().__init__()
self.d = dimension
def forward(self, x):
return torch.cat([x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]], 1)
###################### SPD-Conv #### start ###############################
详见:
https://blog.csdn.net/m0_63774211/article/details/134444324
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!