返回顶部
首页 > 资讯 > 后端开发 > Python >如何将yolov5中的PANet层改为BiFPN详析
  • 409
分享到

如何将yolov5中的PANet层改为BiFPN详析

2024-04-02 19:04:59 409人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、Add二、Concat总结本文以YOLOv5-6.1版本为例 一、Add 1.在common.py后加入如下代码 # 结合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.0001
        self.conv = nn.Conv2d(c1, c2, kernel_size=1, stride=1, padding=0)
        self.silu = nn.SiLU()
 
    def forward(self, x):
        w = self.w
        weight = 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.0001
        self.conv = nn.Conv2d(c1, c2, kernel_size=1, stride=1, padding=0)
        self.silu = nn.SiLU()
 
    def forward(self, x):
        w = self.w
        weight = w / (torch.sum(w, dim=0) + self.epsilon)  # 将权重进行归一化
        # Fast nORMalized fusion
        return self.conv(self.silu(weight[0] * x[0] + weight[1] * x[1] + weight[2] * x[2]))

2.yolov5s.yaml进行修改

# YOLOv5 

--结束END--

本文标题: 如何将yolov5中的PANet层改为BiFPN详析

本文链接: https://lsjlt.com/news/118892.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何将yolov5中的PANet层改为BiFPN详析
    目录一、Add二、Concat总结本文以YOLOv5-6.1版本为例 一、Add 1.在common.py后加入如下代码 # 结合BiFPN 设置可学习参数 学习不同分支的权重 # ...
    99+
    2024-04-02
  • 怎么将yolov5中的PANet层改为BiFPN
    今天小编给大家分享一下怎么将yolov5中的PANet层改为BiFPN的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、Ad...
    99+
    2023-07-02
  • 如何将Yolov5的detect.py修改为可以直接调用的函数详解
    前几天学习了Yolov5,当我想实际将Yolov5实际运用的时候却不知道怎么办了 然后我决定对Yolov5的detect.py修改为可以直接调用的函数 因为我只需要识别图片,所以我将...
    99+
    2024-04-02
  • 如何在 GO 中将“_Ctype_int”更改为“int”?
    小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《如何在 GO 中将“_Ctype_int”更改为“int”?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中...
    99+
    2024-04-05
  • JDK9为何要将String的底层实现由char[]改成了byte[]
    目录一、为什么要优化 String 节省内存空间二、byte[] 为什么就能节省内存空间呢?三、为什么用UTF-16而不用UTF-8呢?如果你不是 Java8 的钉子户,你...
    99+
    2024-04-02
  • mysql中如何将一个表改为分区表
    这篇文章主要介绍mysql中如何将一个表改为分区表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql操作将一个表改为分区表:alter table 'table'...
    99+
    2024-04-02
  • 如何将阿里云服务器改为中文
    在使用阿里云服务器的过程中,可能需要将服务器的语言环境改为中文,以便于操作和理解。本篇文章将详细介绍如何将阿里云服务器改为中文。 一、登录阿里云服务器首先,需要在阿里云的控制台中登录您的阿里云服务器。如果您还没有阿里云账号,需要先注册一个。...
    99+
    2023-11-14
    阿里 中文 如何将
  • sql中如何将full join改为left join +union all
    这篇文章主要介绍sql中如何将full join改为left join +union all,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!今天收到一个需求,要改写一个报表的...
    99+
    2024-04-02
  • 如何在golang中将白色背景更改为透明?
    小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《如何在golang中将白色背景更改为透明?》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到...
    99+
    2024-04-04
  • 如何将RHEL服务器系统中的中文乱码改为英文
    这篇文章主要讲解了“如何将RHEL服务器系统中的中文乱码改为英文”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何将RHEL服务器系统中的中文乱码改为英文”吧!系统安装时选择了简体中文安装,...
    99+
    2023-06-17
  • 如何在 gorm 中将结果表的列名从“多”更改为“多”
    在使用 gorm 进行数据库操作时,有时候我们可能需要将结果表的列名从“多”更改为“多”。这样做可以让我们的代码更加清晰易读,提高代码的可维护性。那么,在 gorm 中如何实现这个功能...
    99+
    2024-02-10
  • vue中vue-Router如何将默认hash模式修改为history需要做的修改
    这篇文章主要介绍了vue中vue-Router如何将默认hash模式修改为history需要做的修改,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解...
    99+
    2024-04-02
  • 数据库中如何将按月分区的表改为按天分区
    这篇文章给大家分享的是有关数据库中如何将按月分区的表改为按天分区的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 一般来说,按月分区的表都是range分区,下面来介绍将按月分区改...
    99+
    2024-04-02
  • vue中如何将el-switch值true、false改为number类型的1和0
    本篇内容主要讲解“vue中如何将el-switch值true、false改为number类型的1和0”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue中如何将el-switch值true、fa...
    99+
    2023-07-04
  • pycharm如何将英文设置为中文(详细教程)
    文章目录 前言一、打开pycharm二、打开setting三、打开Plugins四、搜索Chinese五、安装插件六、重启pycharm即可总结 前言 可能很多小伙伴会因为pycharm...
    99+
    2023-10-01
    pycharm ide python
  • 在Win8中如何修改当前所在地理位置比如将位置修改为中国
      步骤1:打开“控制面板”;   步骤2:在"时钟、语言和区域"上左键单击;   步骤3:在"更改位置"上左键单击;   步骤4:选择位置标签,在&...
    99+
    2023-06-06
    Win8 地理位置 中国 位置
  • 如何在golang中将“2023年4月”解析为time.Time对象
    问题内容 我无法将像 April 2023 这样的日期字符串解析为 time.Time 对象来比较 golang 中的日期时间对象。 正确答案 package main import...
    99+
    2024-02-06
    字符串解析
  • 如何在Python中将字符串转换为数组详解
    使用 str.split() 方法将字符串转换为数组,例如 array = string.split(',')。 str.split() 方法将在每次出现提供的分隔符...
    99+
    2022-12-20
    python字符串转换成数组 python中将字符串转化为数组 python字符数组转成整数数组
  • Python如何将list中的string转换为int
    目录如何将list中的string转换为int在Python2中这样操作在Python3中这样操作Python-string,list,int互转记录如何将list中的string转...
    99+
    2024-04-02
  • 浅析php中如何将特殊字符转换为单引号
    在 PHP 的编程中,很多时候需要对字符串中的特殊字符进行转义才能正常输出。特别是单引号在字符串处理中使用的很频繁,但它也是一种特殊字符,如果字符串中含有单引号,会导致语法错误。那么,如何在 PHP 中将特殊字符转换为单引号呢?首先,需要了...
    99+
    2023-05-14
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作