设计衣服网站,广东品牌网站设计专家,国外优秀海报设计网站,十大软件免费下载网站排行榜专栏介绍#xff1a;YOLOv9改进系列 | 包含深度学习最新创新#xff0c;主力高效涨点#xff01;#xff01;#xff01; 一、改进点介绍 HWD是一种下采样模型#xff0c;应用了小波变换的方法。 ADown是YOLOv9中的下采样模块#xff0c;对不同的数据场景具有一定的可学… 专栏介绍YOLOv9改进系列 | 包含深度学习最新创新主力高效涨点 一、改进点介绍 HWD是一种下采样模型应用了小波变换的方法。 ADown是YOLOv9中的下采样模块对不同的数据场景具有一定的可学习能力。 二、HWD-ADown模块详解 2.1 模块简介 HWD-ADown的主要思想 使用HWD替换ADown中的Conv模块。 三、 HWD-ADown模块使用教程
3.1 HWD-ADown模块的代码
try:from mmcv.cnn import build_activation_layer, build_norm_layerfrom mmcv.ops.modulated_deform_conv import ModulatedDeformConv2dfrom mmengine.model import constant_init, normal_init
except ImportError as e:pass
论文地址https://arxiv.org/pdf/2208.03641v1.pdf
class HWD_ADown(nn.Module):def __init__(self, c1, c2): # ch_in, ch_out, shortcut, kernels, groups, expandsuper().__init__()self.c c2 // 2# self.cv1 Conv(c1 // 2, self.c, 3, 2, 1)self.cv1 HWD(c1 // 2, self.c, 3, 1, 1)self.cv2 Conv(c1 // 2, self.c, 1, 1, 0)def forward(self, x):x nn.functional.avg_pool2d(x, 2, 1, 0, False, True)x1, x2 x.chunk(2, 1)x1 self.cv1(x1)x2 torch.nn.functional.max_pool2d(x2, 3, 2, 1)x2 self.cv2(x2)return torch.cat((x1, x2), 1)class HWD(nn.Module):def __init__(self, in_ch, out_ch, k, s, p):super(HWD, self).__init__()from pytorch_wavelets import DWTForwardself.wt DWTForward(J1, modezero, wavehaar)self.conv Conv(in_ch * 4, out_ch, k, s, p)def forward(self, x):yL, yH self.wt(x)y_HL yH[0][:, :, 0, ::]y_LH yH[0][:, :, 1, ::]y_HH yH[0][:, :, 2, ::]x torch.cat([yL, y_HL, y_LH, y_HH], dim1)x self.conv(x)return x3.2 在YOlO v9中的添加教程
阅读YOLOv9添加模块教程或使用下文操作 1. 将YOLOv9工程中models下common.py文件中的最下行增加模块的代码。
2. 将YOLOv9工程中models下yolo.py文件中的第681行可能因版本变化而变化增加以下代码。 RepNCSPELAN4, SPPELAN, HWD_ADown}:3.3 运行配置文件
# YOLOv9
# Powered bu https://blog.csdn.net/StopAndGoyyy# parameters
nc: 80 # number of classes
#depth_multiple: 0.33 # model depth multiple
depth_multiple: 1 # model depth multiple
#width_multiple: 0.25 # layer channel multiple
width_multiple: 1 # layer channel multiple
#activation: nn.LeakyReLU(0.1)
#activation: nn.ReLU()# anchors
anchors: 3# YOLOv9 backbone
backbone:[[-1, 1, Silence, []], # conv down[-1, 1, Conv, [64, 3, 2]], # 1-P1/2# conv down[-1, 1, Conv, [128, 3, 2]], # 2-P2/4# elan-1 block[-1, 1, RepNCSPELAN4, [256, 128, 64, 1]], # 3# avg-conv down[-1, 1, ADown, [256]], # 4-P3/8# elan-2 block[-1, 1, RepNCSPELAN4, [512, 256, 128, 1]], # 5# avg-conv down[-1, 1, ADown, [512]], # 6-P4/16# elan-2 block[-1, 1, RepNCSPELAN4, [512, 512, 256, 1]], # 7# avg-conv down[-1, 1, HWD_ADown, [512]], # 8-P5/32# elan-2 block[-1, 1, RepNCSPELAN4, [512, 512, 256, 1]], # 9]# YOLOv9 head
head:[# elan-spp block[-1, 1, SPPELAN, [512, 256]], # 10# up-concat merge[-1, 1, nn.Upsample, [None, 2, nearest]],[[-1, 7], 1, Concat, [1]], # cat backbone P4# elan-2 block[-1, 1, RepNCSPELAN4, [512, 512, 256, 1]], # 13# up-concat merge[-1, 1, nn.Upsample, [None, 2, nearest]],[[-1, 5], 1, Concat, [1]], # cat backbone P3# elan-2 block[-1, 1, RepNCSPELAN4, [256, 256, 128, 1]], # 16 (P3/8-small)# avg-conv-down merge[-1, 1, ADown, [256]],[[-1, 13], 1, Concat, [1]], # cat head P4# elan-2 block[-1, 1, RepNCSPELAN4, [512, 512, 256, 1]], # 19 (P4/16-medium)# avg-conv-down merge[-1, 1, ADown, [512]],[[-1, 10], 1, Concat, [1]], # cat head P5# elan-2 block[-1, 1, RepNCSPELAN4, [512, 512, 256, 1]], # 22 (P5/32-large)# multi-level reversible auxiliary branch# routing[5, 1, CBLinear, [[256]]], # 23[7, 1, CBLinear, [[256, 512]]], # 24[9, 1, CBLinear, [[256, 512, 512]]], # 25# conv down[0, 1, Conv, [64, 3, 2]], # 26-P1/2# conv down[-1, 1, Conv, [128, 3, 2]], # 27-P2/4# elan-1 block[-1, 1, RepNCSPELAN4, [256, 128, 64, 1]], # 28# avg-conv down fuse[-1, 1, ADown, [256]], # 29-P3/8[[23, 24, 25, -1], 1, CBFuse, [[0, 0, 0]]], # 30 # elan-2 block[-1, 1, RepNCSPELAN4, [512, 256, 128, 1]], # 31# avg-conv down fuse[-1, 1, ADown, [512]], # 32-P4/16[[24, 25, -1], 1, CBFuse, [[1, 1]]], # 33 # elan-2 block[-1, 1, RepNCSPELAN4, [512, 512, 256, 1]], # 34# avg-conv down fuse[-1, 1, ADown, [512]], # 35-P5/32[[25, -1], 1, CBFuse, [[2]]], # 36# elan-2 block[-1, 1, RepNCSPELAN4, [512, 512, 256, 1]], # 37# detection head# detect[[31, 34, 37, 16, 19, 22], 1, DualDDetect, [nc]], # DualDDetect(A3, A4, A5, P3, P4, P5)]3.4 训练过程 欢迎关注!