将yolov5中的PANet层改为BiFPN
本文以YOLOv5-6.1版本为例
一、Add
1.在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.yolov5s.yaml进行修改
# YOLOv5
将yolov5中的PANet层改为BiFPN相关推荐
- Yolov5中使用Resnet18作为主干网络
Yolov5中使用Resnet18作为主干网络 预备知识 采用Resnet-18作为主干网络,首先第一件事情就要了解Resnet的网络结构 以及resnet-18中的残差层是做什么的 引入残差层是为了 ...
- YOLOv5中的SPP/SPPF结构详解
深度学习入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删. 目录 一.SPP的应用的背景 二.SPP结构分析 三.SPPF结构分析 四.YOLOv ...
- 详解YOLOv5中的Bottleneck
深度学习入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删. 目录 一.背景知识 -- 残差结构 二.Bottleneck和building blo ...
- (原)torch中微调某层参数
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6221664.html 参考网址: https://github.com/torch/nn/issues ...
- 解决 YOLOV5中SyntaxError: Non-ASCII character ‘\xf0‘ in file detect.py
SyntaxError: Non-ASCII character '\xf0' in file detect.py 出现这种原因并不是编码的问题.(YOLOV5中) 首先说为什么不是编码的问题,由于我 ...
- oracle数据库有哪些文件构成,Oracle数据库架构中包括几层?每层都有什么元素?...
Oracle数据库架构中包括几层?每层都有 什么元素? 1 PL/SQL代表 A PROCEDURAL LANGUAGE/SQL B PROGRAM LANGUAGE SQL C POWER LANG ...
- 求二叉树中第K层结点的个数
一,问题描述 构建一棵二叉树(不一定是二叉查找树),求出该二叉树中第K层中的结点个数(根结点为第0层) 二,二叉树的构建 定义一个BinaryTree类来表示二叉树,二叉树BinaryTree 又是由 ...
- matlab中,怎样把矩阵中所有的0改为2
一句话搞定:>> a(find(a==0))=[2]:把矩阵中所有的0改为2 转载于:https://www.cnblogs.com/zhizhan/p/3684034.html
- 如何修改计算机网络时间,在Win7系统中,电脑时间改不了怎么办?
在近期有用户在更改计算机时间的时候,发现系统时间更改不了,并提示"无法继续,您没有执行此操作的权限.请联系的计算机管理员以获得帮助.".那么Win7电脑时间改不了怎么办?下面小编教 ...
最新文章
- 计算机二级ms office excel,计算机二级Msoffice考试excel答案.docx
- unity 骨骼击碎_保证击碎$ 100挑战的创新策略
- 编写EasyCluster V2.0 Portal主界面时的HTML心得(NOWRAP)
- PyQt5 技术篇-如何彻底删除控件?布局移除控件方法。
- WinRAR 注册方法
- arraylist删除指定元素_面试官:谈谈常用的Arraylist和Linkedlist的区别
- 关于Linux你了解多少?Linux由来!
- Android清单AndroidManifest详细说明
- Kubernetes集群上的Apache Ignite和Spring第2部分:Kubernetes部署
- WIN2003 X64 系统上安装sql server 2000 的步骤
- idea actiBPM插件生成png文件 (解决没有Diagrams或Designer选项问题)
- Mac怎么连接多个蓝牙音箱?
- 短视频平台、工具,新手在家用手机全程复制粘贴,一天收益247
- rails kaminari text modify
- task9-文件与文件系统
- 运维开发工程师的必备技能总结
- 鼠标参数以及选购DPI和报告率
- Centos更新内核
- 如何将本地图片转成图片链接
- 魏小亮:参加编程竞赛对实际工作的用处
热门文章