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

用ai怎么做网站产品营销策划方案3000字

用ai怎么做网站,产品营销策划方案3000字,广东网站建设模板,世界羽联最新排名目录 🚀🚀🚀订阅专栏,更新及时查看不迷路🚀🚀🚀 介绍: BiFPN 代码实现 ⭐欢迎大家订阅我的专栏一起学习⭐ 🚀🚀🚀订阅专栏,更新及…

目录

                          🚀🚀🚀订阅专栏,更新及时查看不迷路🚀🚀🚀

介绍:

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的原理包括以下几个关键点:

  1. 双向连接:BIFPN引入了特征金字塔层之间的双向连接,允许信息在不同尺度之间双向传播。

  2. 特征融合:在双向连接的基础上,BIFPN执行特征融合操作,将不同尺度的特征图结合起来,以产生更具表征性的特征。

  3. 信息传播:双向连接使得底层特征图可以通过上层特征图获取更高级的语义信息,同时,上层特征图也可以通过底层特征图获得更精确的位置信息。

  4. 多尺度特征: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, dtype=torch.float32), requires_grad=True)self.epsilon = 0.0001self.conv = nn.Conv2d(c1, c2, kernel_size=1, stride=1, padding=0)self.silu = nn.SiLU()def forward(self, x):w = self.wweight = w / (torch.sum(w, dim=0) + 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, dtype=torch.float32), requires_grad=True)self.epsilon = 0.0001self.conv = nn.Conv2d(c1, c2, kernel_size=1, stride=1, padding=0)self.silu = nn.SiLU()def forward(self, x):w = self.wweight = w / (torch.sum(w, dim=0) + 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.dinnco.com/news/71993.html

相关文章:

  • 智能网站建设seo模拟点击算法
  • 公司邮箱价格合肥网站优化seo
  • b2c网站开发核心技术网站营销策划
  • 做web的网站设计万物识别扫一扫
  • 重庆未来科技网站建设百度智能云建站
  • 软件跟网站开发的区别长沙网站seo推广公司
  • 扁平化蓝色网站优化大师有用吗
  • 招生型网站建设网站优化推广公司
  • 郑州制作网站全自动精准引流软件
  • 免费图片制作网站模板百度推广收费多少
  • 新郑整站优化如何在网上推广产品
  • 新闻类网站开发中国企业网
  • 2345浏览器网页版入口官网seo顾问培训
  • 最新大连市热议新闻武汉网站运营专业乐云seo
  • 上海网站建设 知名做太原网站制作优化seo公司
  • 扁平化风格的网站seo行业
  • 电脑做网站主机空间搜狗收录提交入口
  • 真实的做视频网站百度搜索引擎原理
  • 网站文件夹命名规则郑州外贸网站推广
  • 鞍山网站建设公司线上推广软件
  • 江苏做网站公司有哪些买卖链接网站
  • 做软件项目的网站樱桃电视剧西瓜视频在线观看
  • 网站建设和优化排名网上怎么找客户资源
  • 药品在哪些网站做推广百度搜索关键词排名靠前
  • qq中心官方网站免费企业网站管理系统
  • 国内做的好看的网站设计友情链接批量查询
  • 网站建设教程论坛销售平台
  • 查询网站后台地址wordpress建站公司
  • 做网站搜索框百度统计
  • 佛山做外贸网站信息博客营销案例