当前位置: 首页 > news >正文

广东网站建设报价如何凡科网站建设套餐报价

广东网站建设报价如何,凡科网站建设套餐报价,网站开发厦门,深圳网站建设设计制作专栏介绍#xff1a;YOLOv9改进系列 | 包含深度学习最新创新#xff0c;主力高效涨点#xff01;#xff01;#xff01; 一、本文介绍 本文将以SE注意力机制为例#xff0c;演示如何在YOLOv9种添加注意力机制#xff01; 《Squeeze-and-Excitation Networks》 SENet提出… 专栏介绍YOLOv9改进系列 | 包含深度学习最新创新主力高效涨点 一、本文介绍 本文将以SE注意力机制为例演示如何在YOLOv9种添加注意力机制 《Squeeze-and-Excitation Networks》 SENet提出了一种基于“挤压和激励”SE的注意力模块用于改进卷积神经网络CNN的性能。SE块可以适应地重新校准通道特征响应通过建模通道之间的相互依赖关系来增强CNN的表示能力。这些块可以堆叠在一起形成SENet架构使其在多个数据集上具有非常有效的泛化能力。 《CBAMConvolutional Block Attention Module》 CBAM模块能够同时关注CNN的通道和空间两个维度对输入特征图进行自适应细化。这个模块轻量级且通用可以无缝集成到任何CNN架构中并可以进行端到端训练。实验表明使用CBAM可以显著提高各种模型的分类和检测性能。 《ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks》 通道注意力模块ECA可以提升深度卷积神经网络的性能同时不增加模型复杂性。通过改进现有的通道注意力模块作者提出了一种无需降维的局部交互策略并自适应选择卷积核大小。ECA模块在保持性能的同时更高效实验表明其在多个任务上具有优势。 《SimAM: A Simple, Parameter-Free Attention Module for Convolutional Neural Networks》 SimAM一种概念简单且非常有效的注意力模块。不同于现有的通道/空域注意力模块该模块无需额外参数为特征图推导出3D注意力权值。具体来说SimAM的作者基于著名的神经科学理论提出优化能量函数以挖掘神经元的重要性。该模块的另一个优势在于大部分操作均基于所定义的能量函数选择避免了过多的结构调整。 ​ 适用检测目标   YOLOv9模块通用改进 二、改进步骤 以下以SE注意力机制为例在YOLOv9中加入注意力代码其他注意力机制同理 2.1 复制代码 将SE的代码辅助到models包下common.py文件中。 2.2 修改yolo.py文件 在yolo.py脚本的第700行可能因YOLOv9版本变化而变化增加下方代码。 elif m in (SE,):args.insert(0, ch[f]) 2.3 创建配置文件 创建模型配置文件yaml文件将我们所作改进加入到配置文件中这一步的配置文件可以复制models  - detect 下的yaml修改。。对YOLO系列yaml文件不熟悉的同学可以看我往期的yaml详解教学 YOLO系列 “.yaml“文件解读-CSDN博客 # YOLOv9 # Powered bu https://blog.csdn.net/StopAndGoyyy # parameters nc: 80 # number of classes depth_multiple: 1 # model depth 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, 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[-1, 1, SE, [16]], # 38# detection head# detect[[31, 34, 38, 16, 19, 22], 1, DualDDetect, [nc]], # DualDDetect(A3, A4, A5, P3, P4, P5)]3.1 训练过程 最后复制我们创建的模型配置填入训练脚本train_dual中不会训练的同学可以参考我之前的文章。运行即可。 YOLOv9 最简训练教学-CSDN博客 ​​ ​​ SE代码 class SE(nn.Module):def __init__(self, channel, reduction16):super(SE, self).__init__()self.avg_pool nn.AdaptiveAvgPool2d(1)self.fc nn.Sequential(nn.Linear(channel, channel // reduction, biasFalse),nn.ReLU(),nn.Linear(channel // reduction, channel, biasFalse),nn.Sigmoid())def forward(self, x):b, c, _, _ x.size()y self.avg_pool(x).view(b, c)y self.fc(y).view(b, c, 1, 1)return x * y.expand_as(x)CBAM代码 class CBAMBlock(nn.Module):def __init__(self, channel512, reduction16, kernel_size7):super().__init__()self.ca ChannelAttention(channelchannel, reductionreduction)self.sa SpatialAttention(kernel_sizekernel_size)def init_weights(self):for m in self.modules():if isinstance(m, nn.Conv2d):init.kaiming_normal_(m.weight, modefan_out)if m.bias is not None:init.constant_(m.bias, 0)elif isinstance(m, nn.BatchNorm2d):init.constant_(m.weight, 1)init.constant_(m.bias, 0)elif isinstance(m, nn.Linear):init.normal_(m.weight, std0.001)if m.bias is not None:init.constant_(m.bias, 0)def forward(self, x):b, c, _, _ x.size()out x * self.ca(x)out out * self.sa(out)return out ECA代码 class ECAAttention(nn.Module):def __init__(self, kernel_size3):super().__init__()self.gap nn.AdaptiveAvgPool2d(1)self.conv nn.Conv1d(1, 1, kernel_sizekernel_size, padding(kernel_size - 1) // 2)self.sigmoid nn.Sigmoid()def init_weights(self):for m in self.modules():if isinstance(m, nn.Conv2d):init.kaiming_normal_(m.weight, modefan_out)if m.bias is not None:init.constant_(m.bias, 0)elif isinstance(m, nn.BatchNorm2d):init.constant_(m.weight, 1)init.constant_(m.bias, 0)elif isinstance(m, nn.Linear):init.normal_(m.weight, std0.001)if m.bias is not None:init.constant_(m.bias, 0)def forward(self, x):y self.gap(x) # bs,c,1,1y y.squeeze(-1).permute(0, 2, 1) # bs,1,cy self.conv(y) # bs,1,cy self.sigmoid(y) # bs,1,cy y.permute(0, 2, 1).unsqueeze(-1) # bs,c,1,1return x * y.expand_as(x) SimAM代码 class SimAM(torch.nn.Module):def __init__(self, e_lambda1e-4):super(SimAM, self).__init__()self.activaton nn.Sigmoid()self.e_lambda e_lambdadef __repr__(self):s self.__class__.__name__ (s (lambda%f) % self.e_lambda)return sstaticmethoddef get_module_name():return simamdef forward(self, x):b, c, h, w x.size()n w * h - 1x_minus_mu_square (x - x.mean(dim[2, 3], keepdimTrue)).pow(2)y x_minus_mu_square / (4 * (x_minus_mu_square.sum(dim[2, 3], keepdimTrue) / n self.e_lambda)) 0.5return x * self.activaton(y)如果觉得本文章有用的话给博主点个关注吧
http://www.pierceye.com/news/536362/

相关文章:

  • 网站的站点的管理系统网站建设组织架构
  • 怎么制作网站视频教程wordpress 导入图片
  • 淘宝网发布网站建设wordpress不能翻页
  • 怎么样可以做网站wordpress gallery widget
  • 湖北网站推广公司技巧自己做app的软件
  • 网站梦打开又提示无法访问dw网页设计代码茶文化
  • 阳江营销型网站建设wordpress防攻击插件
  • 深圳电信网络建站东莞房价2022最新价格
  • 昆山营销型网站建设温州网上商城网站建设
  • 网站html动态效果asp化妆品网站源码
  • 丹东网站seo国家企业工商网查询
  • 好看云在线网站模板江西省建设厅教育网站
  • 小网站百度做一个网站怎么做呢
  • 城市分站seoseo相关岗位
  • 购物网站开发语言wordpress分类指定页面
  • 中企动力做网站的优势做招聘网站经营范围
  • 重庆企业网站排名优化方法百度录入网站
  • 做薪酬调查有哪些网站校园二手交易网站设计的原则
  • 建设电子商务网站的方法有?网站架构图
  • 网站运营阶段wordpress首页没有显示文章图片
  • 2个小时学会网站建设手机兼职快递录单员
  • 以前有个自助建设网站东莞路桥投资建设公司招聘
  • 电子游艺网站开发常德seo技术
  • 河北邢台wap网站建设南昌网页制作
  • 山东建设人才网站高端母婴网站模板
  • 物业服务网站建设佛山做网站公司有哪些
  • 企业网站模板中文网站域名名字
  • 在服务器网站上做跳转网页设计代码动漫
  • 科协网站建设的意见合肥哪里有做网页的地方
  • 为企业做网站策划案永康网站推广