YOLOv9中模块总结补充|RepNCSPELAN4详图


 专栏地址:目前售价售价69.9,改进点70+

专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,助力高效涨点!!!


1. RepNCSPELAN4详图

        RepNCSPELAN4是YOLOv9中的特征提取-融合模块,类似前几代YOLO中的C3、C2f等模块。作者通过结合两种神经网络架构,即带有梯度路径规划的 CSPNet 和 ELAN,考虑轻量化、推理速度和准确性设计出的一种广义高效层聚合网络(GELAN),作者使用带有 CSPNet 块的 GELAN 替换了 ELAN,并 RepConv作为计算块。RepNCSPELAN4可拆分为RepN-CSP-ELAN4 ,代码及模块图如下:

        RepNCSPELAN4主要由Conv与ReoNCSP组成,其中的ReoNCSP结构上形似C3与C2f模块,ReoNCSP由Conv与数量不等的RepNBottleneck模块组成,RepNBottleneck的个数由模型的宽度因子决定,RepNBottleneck是一个具有残差结构的基础模块,如下图。

class RepConvN(nn.Module):"""RepConv is a basic rep-style block, including training and deploy statusThis code is based on https://github.com/DingXiaoH/RepVGG/blob/main/repvgg.py"""default_act = nn.SiLU()  # default activationdef __init__(self, c1, c2, k=3, s=1, p=1, g=1, d=1, act=True, bn=False, deploy=False):super().__init__()assert k == 3 and p == 1self.g = gself.c1 = c1self.c2 = c2self.act = self.default_act if act is True else act if isinstance(act, nn.Module) else nn.Identity()self.bn = Noneself.conv1 = Conv(c1, c2, k, s, p=p, g=g, act=False)self.conv2 = Conv(c1, c2, 1, s, p=(p - k // 2), g=g, act=False)def forward(self, x):"""Forward process"""id_out = 0 if self.bn is None else self.bn(x)return self.act(self.conv1(x) + self.conv2(x) + id_out)class RepNBottleneck(nn.Module):# Standard bottleneckdef __init__(self, c1, c2, shortcut=True, g=1, k=(3, 3), e=0.5):  # ch_in, ch_out, shortcut, kernels, groups, expandsuper().__init__()c_ = int(c2 * e)  # hidden channelsself.cv1 = RepConvN(c1, c_, k[0], 1)self.cv2 = Conv(c_, c2, k[1], 1, g=g)self.add = shortcut and c1 == c2def forward(self, x):return x + self.cv2(self.cv1(x)) if self.add else self.cv2(self.cv1(x))class RepNCSP(nn.Module):# CSP Bottleneck with 3 convolutionsdef __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5):  # ch_in, ch_out, number, shortcut, groups, expansionsuper().__init__()c_ = int(c2 * e)  # hidden channelsself.cv1 = Conv(c1, c_, 1, 1)self.cv2 = Conv(c1, c_, 1, 1)self.cv3 = Conv(2 * c_, c2, 1)  # optional act=FReLU(c2)self.m = nn.Sequential(*(RepNBottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)))def forward(self, x):return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), 1))class RepNCSPELAN4(nn.Module):# csp-elandef __init__(self, c1, c2, c3, c4, c5=1):  # ch_in, ch_out, number, shortcut, groups, expansionsuper().__init__()self.c = c3//2self.cv1 = Conv(c1, c3, 1, 1)self.cv2 = nn.Sequential(RepNCSP(c3//2, c4, c5), Conv(c4, c4, 3, 1))self.cv3 = nn.Sequential(RepNCSP(c4, c4, c5), Conv(c4, c4, 3, 1))self.cv4 = Conv(c3+(2*c4), c2, 1, 1)def forward(self, x):y = list(self.cv1(x).chunk(2, 1))y.extend((m(y[-1])) for m in [self.cv2, self.cv3])return self.cv4(torch.cat(y, 1))def forward_split(self, x):y = list(self.cv1(x).split((self.c, self.c), 1))y.extend(m(y[-1]) for m in [self.cv2, self.cv3])return self.cv4(torch.cat(y, 1))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构-二叉搜索树的增删查改】

🌈个人主页:努力学编程’ ⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 …

[虚拟机+单机]梦幻契约H5修复版_附GM工具

本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了 视频演示 [虚拟机单…

vue2人力资源项目2登录接口、跳转主页

用户名和密码 解决跨域问题 1.在vue.config.js里配置 proxy: {// 如果请求地址里有api,就转成这个地址/api: {target: https://heimahr.itheima.net/}}// before: require(./mock/mock-server.js)}, axios封装 utils/request.js import axios from axios// creat…

Linux-信号执行

1. 信号什么时候被处理 当进程从内核态返回到用户态的时候,进行信号的检测和处理 什么内核态,什么又是用户态呢? 当进程在CPU上运行时,内核态:允许进程访问操作系统的代码和数据,用户态:进程只…

户口本翻译件怎么处理?

户口本是中国公民的重要证件,由中华人民共和国公安部精心制作,不仅是国内身份的凭证,更是走向世界的一张关键名片。对于想出国留学 、追求移民生活或是追寻异国风情的旅行者来说,户口本翻译件都是不可或缺的一部分。那么&#xf…

Duplicate entry ‘asdfg‘ for key ‘clazz.name‘

Mybatis:java.sql.SQLIntegrityConstraintViolationException:Duplicate entry ‘asdfg’ for key ‘clazz.name’ 违反了数据库的唯一约束条件,即插入数据的时候具有唯一约束(被unique修饰)的列值重复了 在修改的过程中发生错误,…

【LLM 论文】Least-to-Most Prompting 让 LLM 实现复杂推理

论文:Least-to-Most Prompting Enables Complex Reasoning in Large Language Models ⭐⭐⭐ Google Research, ICLR 2023 论文速读 Chain-of-Thought(CoT) prompting 的方法通过结合 few-show prompt 的思路,让 LLM 能够挑战更具…

蓝桥青少一月 STEMA-Python 测评第一题

第一题(难度系数 2,18 个计分点) (注.input()输入函数的括号中不允许添加任何信息) 编程实现: 给定一个正整数 N,输出 N 除以 3 的商。 输入描述:输入一个正整数 N 输出描述:输出 N 除以 3 的商…

2024年抖音小店最新起店玩法,比你报的上万课程都有用!

大家好,我是电商糖果 刚开店的朋友,一定会遇到出单难,店铺没有流量的问题。 自己在网上找一堆教程,或者花高价去报课程。 有的朋友比较幸运,遇到了好的领路人,但是大部分朋友还是没有那么幸运的。 糖果…

API低代码平台介绍2-最基本的数据查询功能

最基本的数据查询功能 本篇文章我们将介绍如何使用ADI平台定义一个基本的数据查询接口。由于是介绍平台具体功能的第一篇文章,里面会涉及比较多的概念介绍,了解了这些概念有助于您阅读后续的文章。 ADI平台的首页面如下: 1.菜单介绍 1.1 O…

【协同过滤】ItemCF协同过滤方法简介

一、ItemCF协同过滤方法 ItemCF 是基于物品相似度进⾏推荐的协同过滤算法。 通过计算共现矩阵中物品列向量的相似度得到物品之间的相似矩阵, 再找到⽤户的历史正反馈物品的相似物品进⾏进⼀步排序和推荐,Item CF的具体步骤如下: 构建共现矩…

测试项目实战——安享理财1(测试用例)

说明: 1.访问地址: 本项目实战使用的是传智播客的安享理财项目(找了半天这个项目能免费用且能够满足测试实战需求) 前台:http://121.43.169.97:8081/ 后台:http://121.43.169.97:8082/ (点赞收藏…

Python turtle绘制图形详解

Python 的 Turtle 模块是一个简单而直观的绘图工具,可以帮助初学者理解基本的图形绘制概念。 1.导入 Turtle 模块: import turtle 2.创建 Turtle 对象: t turtle.Turtle() 3.绘制图形: 4.移动Turtle对象:t.forward(di…

点击短信链接唤起Android App实战

一.概述 在很多业务场景中,需要点击短信链接跳转到App的指定页面。在Android系统中,想要实现这个功能,可以通过DeepLink或AppLink实现。二.方案 2.1 DeepLink 2.1.1 方案效果 DeepLink是Android系统最基础、最普遍、最广泛的外部唤起App的方式,不受系统版本限制。当用户…

腾讯云优惠券领取指导及优惠券使用指南详解

在当今云计算市场,腾讯云以其出色的性能和服务质量受到了广大用户的青睐。为了回馈用户,腾讯云经常推出各种优惠活动,其中就包括优惠券的发放。那么,如何领取腾讯云优惠券,并正确地使用它们呢?本文将为您详…

虚拟机镜像文件qcow2格式转vmdk

一、在esxi上虚拟机导出qcow2镜像文件 1、卸载数据盘、网卡 2、登录虚拟机所在物理服务器,查找系统盘名为vm-101-disk-0的文件位置 find / -name "vm-101-disk-0"使用命令导出qcow2镜像(进度条走完就完成了): qemu…

JAVA----Thread(2

Thread 提供的属性和方法 目录 Thread 提供的属性和方法一.构造方法1.Thread() :2.Thread(Runnable target) :3.Thread(String name) :main 线程 4.Thread(Runnable target, String name) : 二.属性1.ID (getId)2.名称(getName)3.状态(getState)4.优先级 (getPriority)5.是否后…

leetcode-岛屿数量-99

题目要求 思路 1.使用广度优先遍历,将数组中所有为1的元素遍历一遍,遍历过程中使用递归,讲该元素的上下左右四个方向的元素值也置为0 2.统计一共执行过多少次,次数就是岛屿数量 代码实现 class Solution { public:int solve(vec…

线程安全问题、同步代码块、同步方法

线程安全问题就是 用线程同步来解决线程安全问题 同步:一个线程接着一个线程等待执行 同步代码块: 通过锁来解决卖到重复票的问题:卖票问题和存钱取钱问题(见其他两篇文章) 同步方法:

【算法练级js+java】旋转字符串判断是否相等

每一天一道算法题训练,努力打开编程思维,才能进大厂光明正大的泡心仪的小姐姐!!(手动捂脸) 题目 /** * 给定字符创A和B * 旋转字符串A,就是把最左边的移动到最右边 * 比如A‘abcde’,在移动一次之后结果就是bcdea * 如果若干次之…