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

沙井网站制作优化什么

沙井网站制作,优化什么,福田区住房和建设局官方网站,用wordpress建站之后如何优化该文件位于/models/common.py,提供了构建YOLOv5模型的各种基础模块,其中包含了常用的功能模块,如自动填充autopad函数、标准卷积层Conv、瓶颈层Bottleneck、C3、SPPF、Concat层等 参考笔记:【YOLOv3】 源码(common.py…

该文件位于/models/common.py,提供了构建YOLOv5模型的各种基础模块,其中包含了常用的功能模块,如自动填充autopad函数、标准卷积层Conv、瓶颈层Bottleneck、C3、SPPF、Concat层

参考笔记:【YOLOv3】 源码(common.py)-CSDN博客

 YOLOv5网络结构图

YOLOv5网络参数图


目录

1.自动填充(autopad函数)

2.标准卷积层(Conv类)

3.瓶颈层(Bottleneck类)

4.C3

5.SPPF

6.Concat层


1.自动填充(autopad函数)

该函数根据kernel_size自动计算需要填充的padding,使得输入和输出尺寸一致,需要注意的是使用这个自动填充函数时stride必须为1

'''
为卷积层自动计算填充Padding,保证输入和输出尺寸不变
k:kernel_size
p:padding
'''
def autopad(k, p=None):#如果未提供p,则进行自动填充if p is None:#如果k是整数,计算填充为k // 2;如果k是列表或其他可迭代对象,计算每个元素的填充为x // 2p = k // 2 if isinstance(k, int) else [x // 2 for x in k]#自动填充return p#返回计算的填充值

2.标准卷积层(Conv类)

 YOLOv5中主要有两种卷积,分别是下采样卷积、保持特征图尺寸不变的卷积

  • 下采样卷积

YOLOv5的下采样卷积常用的是kernel_size=3,stride=2,padding=1,经过该下采样卷积层输出尺寸减半,通道数翻倍

YOLOv5中还有一种下采样卷积是kernel_size=6,stride=2,padding=2,同样经过该下采样卷积层输出尺寸减半,通道数翻倍,但是该下采样卷积在YOLOv5中只使用了1

  • 保持特征图尺寸不变的卷积

YOLOv5该类卷积使用的是kernel_size=1,stride=1,padding=0,经过该卷积层输出尺寸不变

 下图是两种卷积在Backbone中的使用:

 YOLOv5结构图中的CBS、ConvBNSiLU即由Conv类实现

'Conv即为YOLOv5中的CBS、ConvBNSiLU模块实现'
class Conv(nn.Module):#标准卷积模块def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True):''':params c1: in_channle:params c2: out_channel:params k: kernel_size:params s: stride:params p: padding:params g: 卷积的groups数  =1就是普通的卷积  >1就是深度可分离卷积,也就是分组卷积:params act: 激活函数类型   True就是SiLU()   False就是不使用激活函数类型是nn.Module就使用传进来的激活函数类型'''super().__init__()#定义卷积层,自动计算填充,禁用偏置以配合批归一化层self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g, bias=False)#定义批归一化层,归一化输出self.bn = nn.BatchNorm2d(c2)#定义激活函数,默认为SiLUself.act = nn.SiLU() if act is True else (act if isinstance(act, nn.Module) else nn.Identity())#训练时的前向传播,卷积->归一化->激活def forward(self, x):return self.act(self.bn(self.conv(x)))#推理时的前向传播def forward_fuse(self, x):#直接通过卷积和激活函数,省略批归一化以提高推理速度return self.act(self.conv(x))

3.瓶颈层(Bottleneck类)

YOLOv5网络结构中ResUnit-T、ResUnit-F即由Bottleneck实现,T、F可以理解为是否开启残差连接

YOLOv5中的ResUnit-T、ResUnit-F 

该类包括两个卷积层(CBS模块)和一个可选的shortcut(残差)连接,如果shortcutTruein_channel=out_channel,则在输出中添加原始输入,实现残差连接。这样可以帮助模型在深层网络中缓解梯度消失问题,提高训练稳定性和模型性能 

'即YOLOv5中的ResUnit组件,该函数将ResUnit-T和ResUnit-F集成到一起'
class Bottleneck(nn.Module):# 标准瓶颈层,常用于减少参数并提高模型的计算效率def __init__(self, c1, c2, shortcut=True, g=1, e=0.5):super().__init__()''':params c1: in_channle:params c2: out_channel:params shortcut: 是否开启残差连接,如果启用,则原始输入x会与经过两个卷积层之后的输出相加:params g: 卷积的groups数  =1就是普通的卷积  >1就是深度可分离卷积,也就是分组卷积:params e: 通道扩展比例,决定第一个卷积的输出通道数。扩展比例为'e',则第一个卷积的输出通道数为 `e * c2`'''#根据扩展比例计算第一个卷积的输出通道数c_ = int(c2 * e)# 第一个卷积层:1x1卷积,将输入通道数 `c1` 缩减到 `c_`,减少计算量self.cv1 = Conv(c1, c_, 1, 1)# 第二个卷积层:3x3卷积,将通道数从 `c_` 恢复到 `c2`,用于特征提取self.cv2 = Conv(c_, c2, 3, 1, g=g)#如果启用shortcut连接,且输入和输出通道数相同(c1 == c2),则创建shortcut连接#shortcut连接有助于缓解深层网络中的梯度消失问题self.add = shortcut and c1 == c2 #如果启用shortcut且输入输出通道数相同,shortcut为True#前向传播def forward(self, x):#如果add为True,则返回残差连接结果if self.add:return x + self.cv2(self.cv1(x))#如果add为False,仅返回卷积后的输出return self.cv2(self.cv1(x))

Bottleneck不是简单的类似于ResNet中的跳跃连接机制,而是其增强版本,其中涉及了压缩和拓展提高相应效率

跳跃连接类似于一个项目管理团队需要完成一个复杂的任务,团队中有人已经有了基本的解决方案(输入信息)。跳跃连接就像保留了这个基本解决方案,同时允许团队成员对其进行优化。如果最终的优化方案有问题,原始的解决方案仍然可以用作备选

Bottleneck 进一步优化了这个过程。团队会先对已有的解决方案进行压缩处理(1x1 卷积),提取最重要的部分(删除冗余)。然后团队成员进行深入的讨论(3x3 卷积),生成更详细的解决方案。最终,这个优化过的方案会与原始方案一起汇总,形成最终输出

这种流程既节省了资源(减少计算量),又提高了效率(保留原始信息,提取更深层特征)

4.C3

YOLOv5中有两种C3模块,分别是C3_1_X,C3_2_X,其中X指的是该C3模块中有多少个ResUnit组件

C3_1_X、C3_2_X结构 

'C3模块,该函数将C3_1_X和C3_2_X集成到一起'
class C3(nn.Module):# CSP(Cross Stage Partial)瓶颈结构,带有3个卷积层def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5):super().__init__()''':param c1:in_channel:param c2:out_channel:param n:n个Bottleneck模块(ResUnit组件):param shortcut:Bottleneck是否开启残差连接:param g::param e:通道扩展比例'''# 根据扩展比例计算两个分支上第一个卷积层的输出通道数c_ = int(c2 * e)#第一分支的1x1卷积层,用于降维self.cv1 = Conv(c1, c_, 1, 1)#第二分支的1x1卷积层,用于降维self.cv2 = Conv(c1, c_, 1, 1)#创建`n`个Bottleneck层(ResUnit组件),使用nn.Sequential进行顺序连接self.m = nn.Sequential(*[Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)])#concat之后的1x1卷积层,输出通道数为c2self.cv3 = Conv(2 * c_, c2, 1)#前向传播过程def forward(self, x):branch_1=self.m(self.cv1(x))#第一个分支的前向传播branch_2=self.cv2(x)#第二个分支的前向传播return self.cv3(torch.cat((branch_1,branch_2),dim=1))#两个分支拼接之后再做最后一次卷积

5.SPPF

'SPPF模块'
class SPPF(nn.Module):def __init__(self, c1, c2, k=5):  # equivalent to SPP(k=(5, 9, 13))super().__init__()''':param c1:in_channel:param c2:out_channel:param k:最大池化层的卷积核大小,默认为5'''#第一个卷积层的输出通道数为c1//2c_ = c1 // 2#第一个卷积层self.cv1 = Conv(c1, c_, 1, 1)#第二个卷积层,将拼接后的通道数转换为输出通道数c2self.cv2 = Conv(c_ * 4, c2, 1, 1)#最大池化层,kernel_size=k,stride=1,padding=k//2self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)#前向传播def forward(self, x):x = self.cv1(x)#通过第一层卷积处理输入特征图y1 = self.m(x)#第一次最大池化y2 = self.m(y1)#第二次最大池化y3 = self.m(y2)#第三次最大池化#将原始特征图和3次池化的结果进行拼接,然后通过第二层卷积进行处理return self.cv2(torch.cat([x, y1, y2,y3], 1))

6.Concat层

这个类的作用是将不同层的特征图进行合并,增强特征表示,从而进一步提高模型的预测能力

如YOLOv5网络结构图中黄色部分,Concat操作主要发生在Neck阶段,配合完成YOLOv5颈部的FPN+PAN流程

class Concat(nn.Module):#该类实现了沿指定维度连接多个张量的功能def __init__(self, dimension=1):super().__init__()''':param dimension:指定特征拼接的维度,默认为1,即在第一个维度(通常是通道维度)上进行特征拼接。'''self.d = dimension #保存要连接的维度,默认为1#前向传播方法,执行张量连接操作def forward(self, x):''':param x: x是一个张量列表,存放来自不同层的特征图张量,除拼接维度外,特征图的其他维度需要相同'''return torch.cat(x, self.d)#使用torch.cat沿self.d维度连接输入的张量列表x

http://www.ritt.cn/news/19177.html

相关文章:

  • pbootcms官网seo自动优化工具
  • 文山网站建设求职简历免费下载app并安装
  • 网址导航类网站如何做推广公司培训
  • 电子商务网站建设与管理基础爱站网关键词查询系统
  • 大连建设信息seo外包杭州
  • 装修上什么网站比较好泉州关键词优化软件
  • wordpress积分商城主题优化排名
  • 淄博网站运营公司免费发布信息网站大全
  • 北京好的做网站公司哪个好用?
  • 电商网站建设功能百度点击工具
  • 做企业网站需要提供什么资料百度网站名称及网址
  • 彩票网站建设平台手机百度高级搜索入口在哪里
  • wordpress数据库重装长沙seo优化首选
  • 免费的网站模板下载百度认证有什么用
  • 做poster的网站百度平台营销收费标准
  • 电大企业网站建设论文范文郑州seo管理
  • 南阳开网站制作google app下载
  • 天津建设网站官网seo站点是什么意思
  • 监管网站建设情况百度搜索引擎的特点
  • 站长工具app下载深圳整合营销
  • 内蒙建设工程信息网站seo搜索引擎优化费用
  • 惠州住房和城乡建设局网站天津百度分公司
  • 政府蒙古文网站建设汇报谷歌seo排名公司
  • 怎样查询自己购房网签成功外贸网站优化公司
  • 广州做网站建设哪家专业html网页制作
  • 湘潭网站优化宁波seo外包快速推广
  • 做网站月薪两万大学生网页设计主题
  • 完整的网站建设郑州网络推广专业公司
  • 国内网站建设流程重庆seo网络推广关键词
  • 广东商城网站建设公司如何找到网络公关公司