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

网站开发商务合同郑州高端设计公司

网站开发商务合同,郑州高端设计公司,贸易公司网站建,做高防鞋 哪个网站能上架目录 #x1f680;#x1f680;#x1f680;订阅专栏#xff0c;更新及时查看不迷路#x1f680;#x1f680;#x1f680; 介绍#xff1a; BiFPN 代码实现 ⭐欢迎大家订阅我的专栏一起学习⭐ #x1f680;#x1f680;#x1f680;订阅专栏#xff0c;更新及…目录 订阅专栏更新及时查看不迷路 介绍 BiFPN 代码实现 ⭐欢迎大家订阅我的专栏一起学习⭐ 订阅专栏更新及时查看不迷路 YOLOv5涨点专栏http://t.csdnimg.cn/AEFts YOLOv8涨点专栏http://t.csdnimg.cn/v0d7y 魔改网络、复现论文、优化创新 介绍 模型效率在计算机视觉中变得越来越重要。在本文中我们系统地研究了用于目标检测的神经网络架构设计选择并提出了几个提高效率的关键优化。首先我们提出了一种加权双向特征金字塔网络BiFPN它可以轻松快速地进行多尺度特征融合其次我们提出了一种复合缩放方法可以同时统一缩放所有主干网络、特征网络和框/类预测网络的分辨率、深度和宽度。基于这些优化和 EfficientNet 主干我们开发了一个新的目标检测器系列称为 EfficientDet它在各种资源限制下始终实现比现有技术更高的效率。特别是通过单模型和单尺度我们的 EfficientDetD7 在 COCO 测试开发上实现了最先进的 52.2 AP具有 52M 参数和 325B FLOPs1比以前小 4 至 9 倍使用的 FLOP 数减少 13 至 42 倍探测器。 BiFPN BiFPN结构图 特征金字塔网络FPN最初被引入来应对这个挑战。FPN通过构建一个多层次的特征金字塔其中包含从粗到细的特征图。这些特征图具有不同的分辨率允许模型在多个尺度上进行检测。 然而传统的FPN存在一个问题即信息流只能沿着金字塔的一个方向传播通常是从高分辨率到低分辨率。这意味着在检测物体时粗糙特征图中的细节信息可能会丢失从而影响准确性。 BIFPN通过引入双向连接来解决这个问题。它允许特征图之间的信息在多个尺度之间双向传播这意味着不仅可以从粗糙特征图传播到细粒度特征图而且反之亦然。这样模型可以更全面地捕捉到各种尺度下的特征信息从而提高了目标检测和实例分割任务的性能。 具体来说BIFPN的原理包括以下几个关键点 双向连接BIFPN引入了特征金字塔层之间的双向连接允许信息在不同尺度之间双向传播。 特征融合在双向连接的基础上BIFPN执行特征融合操作将不同尺度的特征图结合起来以产生更具表征性的特征。 信息传播双向连接使得底层特征图可以通过上层特征图获取更高级的语义信息同时上层特征图也可以通过底层特征图获得更精确的位置信息。 多尺度特征BIFPN产生的特征图具有多个尺度的特征信息这有助于模型对于不同尺度物体的检测。 总体来说BIFPN通过引入双向连接和特征融合操作允许信息在多个尺度之间进行更全面和有效的传播从而提高了目标检测和实例分割模型的性能。 代码实现 步骤1在common.py中添加BiFPN模块 将下面BiFPN模块的代码复制粘贴到common.py文件的末尾。 # BiFPN # 两个特征图add操作 class BiFPN_Add2(nn.Module):def __init__(self, c1, c2):super(BiFPN_Add2, self).__init__()# 设置可学习参数 nn.Parameter的作用是将一个不可训练的类型Tensor转换成可以训练的类型parameter# 并且会向宿主模型注册该参数 成为其一部分 即model.parameters()会包含这个parameter# 从而在参数优化的时候可以自动一起优化self.w nn.Parameter(torch.ones(2, dtypetorch.float32), requires_gradTrue)self.epsilon 0.0001self.conv nn.Conv2d(c1, c2, kernel_size1, stride1, padding0)self.silu nn.SiLU()def forward(self, x):w self.wweight w / (torch.sum(w, dim0) self.epsilon)return self.conv(self.silu(weight[0] * x[0] weight[1] * x[1]))# 三个特征图add操作 class BiFPN_Add3(nn.Module):def __init__(self, c1, c2):super(BiFPN_Add3, self).__init__()self.w nn.Parameter(torch.ones(3, dtypetorch.float32), requires_gradTrue)self.epsilon 0.0001self.conv nn.Conv2d(c1, c2, kernel_size1, stride1, padding0)self.silu nn.SiLU()def forward(self, x):w self.wweight w / (torch.sum(w, dim0) self.epsilon) # Fast normalized fusionreturn self.conv(self.silu(weight[0] * x[0] weight[1] * x[1] weight[2] * x[2])) 步骤2在yolo.py文件中加入类名 在yolo.py文件的parse_model函数中找到 elif m is Conat: 语句在其后面加上下列语句 # 添加bifpn_add结构 elif m in [BiFPN_Add2, BiFPN_Add3]:c2 max([ch[x] for x in f]) 步骤3创建自定义yaml文件  然后将yaml文件中所有Concat换成BiFPN_Add。 yaml文件修改后的完整代码如下 # YOLOv5 by Ultralytics, GPL-3.0 license# Parameters nc: 80 # number of classes depth_multiple: 0.33 # model depth multiple width_multiple: 0.50 # layer channel multiple anchors:- [10,13, 16,30, 33,23] # P3/8- [30,61, 62,45, 59,119] # P4/16- [116,90, 156,198, 373,326] # P5/32# YOLOv5 v6.0 backbone backbone:# [from, number, module, args][[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2[-1, 1, Conv, [128, 3, 2]], # 1-P2/4[-1, 3, C3, [128]],[-1, 1, Conv, [256, 3, 2]], # 3-P3/8[-1, 6, C3, [256]],[-1, 1, Conv, [512, 3, 2]], # 5-P4/16[-1, 9, C3, [512]],[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32[-1, 3, C3, [1024]],[-1, 1, SPPF, [1024, 5]], # 9]# YOLOv5 v6.1 BiFPN head head:[[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, nearest]],[[-1, 6], 1, BiFPN_Add2, [256, 256]], # cat backbone P4[-1, 3, C3, [512, False]], # 13[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, nearest]],[[-1, 4], 1, BiFPN_Add2, [128, 128]], # cat backbone P3[-1, 3, C3, [256, False]], # 17 [-1, 1, Conv, [512, 3, 2]], [[-1, 13, 6], 1, BiFPN_Add3, [256, 256]], #v5s通道数是默认参数的一半[-1, 3, C3, [512, False]], # 20 [-1, 1, Conv, [512, 3, 2]],[[-1, 10], 1, BiFPN_Add2, [256, 256]], # cat head P5[-1, 3, C3, [1024, False]], # 23 [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)] 步骤4验证是否加入成功 在yolo.py文件里配置我们刚才自定义的yolov5s_BiFPN.yaml 然后运行yolo.py得到结果。 由运行结果可以看到所有Concat已被换成了BiFPN_Add。 这样就算添加成功了。   步骤5修改train.py 首先找到train.py文件中的 #Optimizer加入下列代码 g0, g1, g2 [], [], [] # optimizer parameter groupsfor v in model.modules():if hasattr(v, bias) and isinstance(v.bias, nn.Parameter): # biasg2.append(v.bias)if isinstance(v, nn.BatchNorm2d): # weight (no decay)g0.append(v.weight)elif hasattr(v, weight) and isinstance(v.weight, nn.Parameter): # weight (with decay)g1.append(v.weight)# BiFPN_Concatelif isinstance(v, BiFPN_Add2) and hasattr(v, w) and isinstance(v.w, nn.Parameter):g1.append(v.w)elif isinstance(v, BiFPN_Add3) and hasattr(v, w) and isinstance(v.w, nn.Parameter):g1.append(v.w) 此时会出现报错提示原因是我们没有导入相应的包。 接下来我们就导入相应的包 导入完毕后我们可以看到报错消失了 然后在train.py文件中找到 parse_opt函数然后将第二行 --cfg 的default改为 models/yolov5s_BiFPN.yaml然后就可以开始进行训练了。 现在就完全修改成功了快去试试吧
http://www.hkea.cn/news/14382885/

相关文章:

  • 铁岭网站seo婚庆影楼型网站开发
  • 做外贸需要自己建网站吗即时设计怎么做网页
  • 白色网站源码wordpress文章签名插件
  • 山东省建设银行网站建设领域现场专业人员报名网站
  • wordpress 网站白屏wordpress模板安装后效果和预览不同
  • 潍坊公司注册网站医疗器械一类二类三类
  • 网站建设公司该如何选择wordpress 扩展
  • 自己怎么弄网站德阳网站怎么做seo
  • 易语言 做网站黑龙江建设教育信息网官网
  • 个人建站如何赚钱可以做微课ppt模板 网站有哪些
  • 网站认证主体怎么安装的wordpress主题
  • 墙蛙网站谁家做的建立什么样的网站赚钱
  • 网站横幅怎做服务器上的网站打不开
  • 北京网站设计与网站制作国内最厉害的公关团队
  • 网站建设全包设计wordpress主题排行榜
  • 成都彩蝶花卉网站建设案例龙岗建设网站制作
  • 网站模版的优化公司做个网站
  • 自己做的网站 能收索么vs2010网站开发教程
  • 福建省网站建设成都网站设计得多少钱
  • 图片直链在线生成网站法拍重庆网站
  • 达州大亚网站建设网站建设佰金手指科杰十一
  • 自动化优化系统网站建设网站维护机构
  • 给公司做门户网站南宁网站建设建站系统
  • 做很多网站海南省建设注册中心网站
  • 深圳网站建设民治大道wordpress英文仿站教程
  • 江阴网站网站建设淘宝做网站推广人电话
  • wordpress 站群插件在dw上做网站首页导航栏
  • 网站建设上市wordpress模块化布局
  • 网站安全建设总结留言板 wordpress
  • 如何做好网站推广优化免费网站怎么做出来的