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

内蒙古地区做推广网站站长工具seo综合查询推广

内蒙古地区做推广网站,站长工具seo综合查询推广,做援交的网站,wordpress赚美金💡💡💡本文改进内容:SimAM是一种轻量级的自注意力机制,其网络结构与Transformer类似,但是在计算注意力权重时使用的是线性层而不是点积 yolov9-c-CoordAtt summary: 972 layers, 51024476 parameters, 510…

     💡💡💡本文改进内容:SimAM是一种轻量级的自注意力机制,其网络结构与Transformer类似,但是在计算注意力权重时使用的是线性层而不是点积

yolov9-c-CoordAtt summary: 972 layers, 51024476 parameters, 51024444 gradients, 238.9 GFLOPs

 改进结构图如下:

YOLOv9魔术师专栏

☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️ ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️

包含注意力机制魔改、卷积魔改、检测头创新、损失&IOU优化、block优化&多层特征融合、 轻量级网络设计、24年最新顶会改进思路、原创自研paper级创新等

☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️

✨✨✨ 新开专栏暂定免费限时开放,后续每月调价一次✨✨✨

🚀🚀🚀 本项目持续更新 | 更新完结保底≥50+ ,冲刺100+🚀🚀🚀

🍉🍉🍉 联系WX: AI_CV_0624 欢迎交流!🍉🍉🍉

YOLOv9魔改:注意力机制、检测头、blcok魔改、自研原创等

 YOLOv9魔术师

💡💡💡全网独家首发创新(原创),适合paper !!!

💡💡💡 2024年计算机视觉顶会创新点适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文章提供每一步步骤和源码,轻松带你上手魔改网络 !!!

💡💡💡重点:通过本专栏的阅读,后续你也可以设计魔改网络,在网络不同位置(Backbone、head、detect、loss等)进行魔改,实现创新!!!

 1.YOLOv9原理介绍

论文: 2402.13616.pdf (arxiv.org)

代码:GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information摘要: 如今的深度学习方法重点关注如何设计最合适的目标函数,从而使得模型的预测结果能够最接近真实情况。同时,必须设计一个适当的架构,可以帮助获取足够的信息进行预测。然而,现有方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,大量信息将会丢失。因此,YOLOv9 深入研究了数据通过深度网络传输时数据丢失的重要问题,即信息瓶颈和可逆函数。作者提出了可编程梯度信息(programmable gradient information,PGI)的概念,来应对深度网络实现多个目标所需要的各种变化。PGI 可以为目标任务计算目标函数提供完整的输入信息,从而获得可靠的梯度信息来更新网络权值。此外,研究者基于梯度路径规划设计了一种新的轻量级网络架构,即通用高效层聚合网络(Generalized Efficient Layer Aggregation Network,GELAN)。该架构证实了 PGI 可以在轻量级模型上取得优异的结果。研究者在基于 MS COCO 数据集的目标检测任务上验证所提出的 GELAN 和 PGI。结果表明,与其他 SOTA 方法相比,GELAN 仅使用传统卷积算子即可实现更好的参数利用率。对于 PGI 而言,它的适用性很强,可用于从轻型到大型的各种模型。我们可以用它来获取完整的信息,从而使从头开始训练的模型能够比使用大型数据集预训练的 SOTA 模型获得更好的结果。对比结果如图1所示。

 YOLOv9框架图

1.1 YOLOv9框架介绍

YOLOv9各个模型介绍

2. SimAM:无参Attention

论文: http://proceedings.mlr.press/v139/yang21o/yang21o.pdf

        SimAM(Simple Attention Mechanism)是一种轻量级的自注意力机制,其网络结构与Transformer类似,但是在计算注意力权重时使用的是线性层而不是点积。其网络结构如下:

输入序列 -> Embedding层 -> Dropout层 -> 多层SimAM层 -> 全连接层 -> Softmax层 -> 输出结果

其中,SimAM层由以下几个部分组成:

  1. 多头注意力层:输入序列经过多个线性映射后,分成多个头,每个头计算注意力权重。

  2. 残差连接层:将多头注意力层的输出与输入序列相加,保证信息不会丢失。

  3. 前向传递层:对残差连接层的输出进行线性变换和激活函数处理,再与残差连接层的输出相加。

  4. 归一化层:对前向传递层的输出进行层归一化处理,加速训练并提高模型性能。

通过多层SimAM层的堆叠,模型可以学习到输入序列中的长程依赖关系,并生成对应的输出序列。

 

 在不增加原始网络参数的情况下,为特征图推断三维注意力权重
1、提出优化能量函数以发掘每个神经元的重要性
2、针对能量函数推导出一种快速解析解,不超过10行代码即可实现。 

表格给出了ImageNet数据集上不同注意力机制的性能对比,从中可以看到:

  • 所有注意力模块均可以提升基线模型的性能;
  • 所提SimAM在ResNet18与ResNet101基线上取得了最佳性能提升;
  • 对于ResNet34、ResNet50、ResNeXt50、MobileNetV2,所提SimAM仍可取得与其他注意力相当性能;
  • 值得一提的是,所提SimAM并不会引入额外的参数
  • 在推理速度方面,所提SimAM与SE、ECA相当,优于CBAM、SRM。

1.1 加入yolov8 modules.py

      

3.SimAM加入到YOLOv9

3.1新建py文件,路径为models/attention/attention.py

######################  SimAM   ####     start   by  AI&CV  ###############################
import torch
from torch import nn
from torch.nn import init
import torch.nn.functional as Fclass SimAM(torch.nn.Module):def __init__(self,c1, e_lambda=1e-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 s@staticmethoddef get_module_name():return "simam"def forward(self, x):b, c, h, w = x.size()n = w * h - 1x_minus_mu_square = (x - x.mean(dim=[2, 3], keepdim=True)).pow(2)y = x_minus_mu_square / (4 * (x_minus_mu_square.sum(dim=[2, 3], keepdim=True) / n + self.e_lambda)) + 0.5return x * self.activaton(y)
######################  SimAM   ####     end   by  AI&CV  ###############################

3.2修改yolo.py

1)首先进行引用

from models.attention.attention import *

2)修改def parse_model(d, ch):  # model_dict, input_channels(3)

在源码基础上加入SimAM

        elif m is nn.BatchNorm2d:args = [ch[f]]###attention #####elif m in {EMA_attention,CoordAtt,SimAM}:c2 = ch[f]args = [c2, *args]###attention #####

3.3 yolov9-c-SimAM.yaml

# YOLOv9# parameters
nc: 80  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # 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[-1, 1, SimAM, [512]],  # 10]# YOLOv9 head
head:[# elan-spp block[-1, 1, SPPELAN, [512, 256]],  # 11# 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]],  # 14# 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]],  # 17 (P3/8-small)# avg-conv-down merge[-1, 1, ADown, [256]],[[-1, 14], 1, Concat, [1]],  # cat head P4# elan-2 block[-1, 1, RepNCSPELAN4, [512, 512, 256, 1]],  # 20 (P4/16-medium)# avg-conv-down merge[-1, 1, ADown, [512]],[[-1, 11], 1, Concat, [1]],  # cat head P5# elan-2 block[-1, 1, RepNCSPELAN4, [512, 512, 256, 1]],  # 23 (P5/32-large)# multi-level reversible auxiliary branch# routing[5, 1, CBLinear, [[256]]], # 24[7, 1, CBLinear, [[256, 512]]], # 25[9, 1, CBLinear, [[256, 512, 512]]], # 26# conv down[0, 1, Conv, [64, 3, 2]],  # 27-P1/2# conv down[-1, 1, Conv, [128, 3, 2]],  # 28-P2/4# elan-1 block[-1, 1, RepNCSPELAN4, [256, 128, 64, 1]],  # 29# avg-conv down fuse[-1, 1, ADown, [256]],  # 30-P3/8[[24, 25, 26, -1], 1, CBFuse, [[0, 0, 0]]], # 31  # elan-2 block[-1, 1, RepNCSPELAN4, [512, 256, 128, 1]],  # 32# avg-conv down fuse[-1, 1, ADown, [512]],  # 33-P4/16[[25, 26, -1], 1, CBFuse, [[1, 1]]], # 34 # elan-2 block[-1, 1, RepNCSPELAN4, [512, 512, 256, 1]],  # 35# avg-conv down fuse[-1, 1, ADown, [512]],  # 36-P5/32[[26, -1], 1, CBFuse, [[2]]], # 37# elan-2 block[-1, 1, RepNCSPELAN4, [512, 512, 256, 1]],  # 38# detection head# detect[[32, 35, 38, 17, 20, 23], 1, DualDDetect, [nc]],  # DualDDetect(A3, A4, A5, P3, P4, P5)]

http://www.ysxn.cn/news/988.html

相关文章:

  • 织梦网站地图在线生成临沂百度推广多少钱
  • 网站报名照片怎么做seo工作流程
  • 福州网站建设福州站建设昆明抖音推广
  • adsense wordpress太原搜索引擎优化
  • 跨境电商独立站有哪些平台搜索引擎营销的实现方法有
  • 北京网站建设价格网络营销题库案例题
  • 网站开发遇到什么问题郑州网站关键词排名
  • 合优网站建设项目推广方案
  • 公司网站能自己做二维码网络营销公司有哪些
  • 枣阳建网站沈阳网站制作公司
  • 做网站批发利润怎么样会计培训班一般多少钱
  • 360可以做网站正规手游代理平台有哪些
  • 商城网站制作教程百度推广好做吗
  • 大丰哪家专业做网站搜索引擎优化策略应该包括
  • 建设工程有限公司企业网站百度推广培训班
  • 企业网站建设预算表网络营销的种类
  • css网站建设规范福州360手机端seo
  • 114网站制作google登录入口
  • 龙文区城乡建设局网站郑州网站顾问热狗网
  • 公司网站要备案么短视频营销的特点
  • 百货店怎么做网站送货商丘seo
  • 沧州手机网站建设如何制作简易网站
  • 党建网站建设 说明福州seo顾问
  • 有教做桥梁质检资料的网站吗seo培训学院
  • 网站怎么发布做微商免费网站友情链接
  • 使用bootstrap做的网站百度搜索引擎广告
  • 企业网站运营外包费用2020国内搜索引擎排行榜
  • 地宝网招聘信息网天津seo选天津旗舰科技a
  • wordpress page nav武汉seo公司哪家好
  • 做网站和网站页面设计营销网站