yolov8-更换卷积模块-ContextGuidedBlock_Down

news2024/12/20 14:22:44

源码解读

class ContextGuidedBlock_Down(nn.Module):
    """
    the size of feature map divided 2, (H,W,C)---->(H/2, W/2, 2C)
    """

    def __init__(self, nIn, dilation_rate=2, reduction=16):
        """
        args:
           nIn: the channel of input feature map
           nOut: the channel of output feature map, and nOut=2*nIn
        """
        super().__init__()

        nOut = nIn * 2

        self.conv1x1 = ConvBNPReLU(nIn, nOut, 3, 2)  # size/2, channel: nIn--->nOut

        self.F_loc = ChannelWiseConv(nOut, nOut, 3, 1)
        self.F_sur = ChannelWiseDilatedConv(nOut, nOut, 3, 1, dilation_rate)

        self.bn = nn.BatchNorm2d(2 * nOut, eps=1e-3)
        self.act = nn.PReLU(2 * nOut)
        self.reduce = Conv(2 * nOut, nOut, 1, 1)  # reduce dimension: 2*nOut--->nOut

        self.F_glo = FGlo(nOut, reduction)

    def forward(self, input):
        output = self.conv1x1(input)
        loc = self.F_loc(output)
        sur = self.F_sur(output)

        joi_feat = torch.cat([loc, sur], 1)  # the joint feature
        joi_feat = self.bn(joi_feat)
        joi_feat = self.act(joi_feat)
        joi_feat = self.reduce(joi_feat)  # channel= nOut

        output = self.F_glo(joi_feat)  # F_glo is employed to refine the joint feature

        return output

模块:ConvBNPReLU,是一个卷积层,没有偏置项,先卷积,在归一化,在经过PReLU激活函数。

模块:ChannelWiseConv,是一个通道卷积操作。在标准的卷积中,每个卷积核都会跨输入特征图的所有通道进行卷积操作,这意味着输出的每个通道都是来自输入的所有通道的信息融合。在通道卷积中,每个卷积核只在对应的单个输入通道上操作,而不是跨通道。因此,每个输出通道的特征仅由对应的单个输入通道计算得出。通道卷积,对应的参数量更少,适合于移动端和嵌入式的部署。

模块:ChannelWiseDilatedConv,是一个空洞卷积,空洞卷积适用于处理具有层次化结构或多尺度特征的任务,捕捉更广泛的上下文信息。相当于扩大了卷积核,扩大的部分补0。

Relu与PRelu激活函数的对比。

模块:FGlo,nn.AdaptiveAvgPool2d(1) 是 PyTorch 中的一个自适应平均池化层,其目的是对输入的特征图进行全局平均池化操作,将空间特征转换成全局特征,使得网络能够处理不同尺寸的输入。nn.Linear()就是一个线性变换,相当于线性代数中矩阵的乘法。

总:卷积模块ContextGuidedBlock_Down,更易用于捕获局部特征、周围上下文和全局上下文,并将这些信息融合起来以提高准确性。

修改

yaml文件

task.py文件

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

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

相关文章

统信UOS及麒麟KYLINOS操作系统上如何切换键盘布局

原文链接:如何切换键盘布局 | 统信UOS | 麒麟KYLINOS Hello,大家好啊,最近有朋友在群里提到他的键盘输入“Y”会显示“Z”,输入“Z”会显示“Y”。这个问题听起来可能有些奇怪,但其实并不罕见。出现这种情况的原因&…

广东Lenovo SR588服务器维修升级硬盘内存

本案例描述了对联想SR588服务器进行硬件升级的过程,包括更换固态硬盘作为系统盘,以及增加内存容量至128GB。升级后,服务器性能得到显著提升,同时通过重新配置RAID阵列和操作系统的重新安装,确保了系统的稳定性和数据的…

RAC集群日常维护

RAC的启停 cd /u01/app/19.3.0/grid/bin 停止 ./crsctl stop crs 检查 ./crsctl check crs 启动,可以两个节点同时启动 ./crsctl start crs 检查 ./crsctl check crs ./crsctl status res -t oracle的RAC日常维命令 集群状态检查命令 cractl status res …

数字革命的浪潮:Web3如何改变一切

随着数字技术的不断发展,人类社会正迎来一场前所未有的数字革命浪潮。在这个浪潮中,Web3技术以其去中心化、安全、透明的特性,正在逐渐改变着我们的生活方式、商业模式以及社会结构。本文将深入探讨Web3技术如何改变一切,以及其所…

基于springboot实现粮食仓库管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现粮食仓库管理系统演示 摘要 粮食作为人类生活的重要物质来源,在粮食流通过程中对于粮食仓库的管理不容忽视,随着我国粮食生产能力的提升以粮食存储管理的不断革新,粮食产量的增加为粮食仓储管理带来了挑战也带来了机遇&am…

JavaScript 中的类型转换机制(详细讲解)

文章目录 一、概述二、显示转换Number()parseInt()String()Boolean() 三、隐式转换自动转换为布尔值自动转换成字符串自动转换成数值 一、概述 前面我们讲到,JS中有六种简单数据类型:undefined、null、boolean、string、number、symbol,以及…

【BUUCTF Misc】通关1.0

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …

网工学习 DHCP配置-接口模式

网工学习 DHCP配置-接口模式 学习DHCP总是看到,接口模式、全局模式、中继模式。理解起来也不困难,但是自己动手操作起来全是问号。跟着老师视频配置啥问题没有,自己组建网络环境配置就是不通,悲催。今天总结一下我学习接口模式的…

源码全开源可二次开发+求职招聘找工作小程序源码系统 带完整的搭建教程

随着移动互联网的普及和深入,小程序作为一种轻量级的应用形态,以其无需下载安装、即用即走的特点,迅速成为了连接线上线下的重要桥梁。特别是在求职招聘领域,小程序以其便捷性和高效性,成为了求职者与招聘方之间的理想…

wordpress 开源主题

海外就医wordpress主题 出国看病、海外就医是越来越多中产家庭的选择,此wordpress主题适合做相关业务的公司官网。 https://www.jianzhanpress.com/?p5220 防护wordpress外贸主题 个人防护器具wordpress外贸主题,适合做劳动保护的外贸公司使用。 ht…

【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0

目录 一、 Kubernetes 的概述 二、服务器配置 2.1 服务器部署规划 2.2服务器初始化配置 三、安装Docker/kubeadm/kubelet【所有节点】 3.1 安装Docker 3.2 添加阿里云YUM软件源 3.3 安装kubeadm,kubelet和kubectl 四、部署Kubernetes Master 五、部署Kube…

Javascript如何获取指定网页中的内容?

前言: 这两天有一个需求,即利用JavaScript语言来检索网页的文本内容。当然,实现这一目标的途径并非单一,除了我即将分享的特定技巧之外,还有另一种方法值得一提:通过Ajax的GET请求。然而,相比之下&#xff…

工作流Activiti7

代码逐步解析: 在使用 Camunda BPM 框架时获取默认的流程引擎实例 在 Camunda BPM 中,流程引擎是用于执行业务流程的核心组件,它负责管理流程定义、流程实例、任务等。通过这段代码,可以获取到默认的流程引擎实例,然后…

[C#]winform部署yolov9的onnx模型

C# WinForms 部署 YOLOv9 ONNX 模型简介 在当今的计算机视觉领域,目标检测是不可或缺的一项技术。YOLO(You Only Look Once)系列模型以其高效和准确的特点受到了广泛关注。随着YOLOv9的发布,其性能进一步提升,为实际应…

香橙派企业信用问题-劝一个是一个,别买!!!

1. 背景 香橙派推广旗下AI PRO 开发板,在B站做直播,一场直播两个直播间,分别抽取一名观众,宣传是场场送AI PRO开发板!!! 2. 收到奖品与宣传不符合 3.咨询群主:态度很傲慢&#xff0c…

图像处理基础——频域、时域

下图是低通滤波器的频率响应曲线。 低通滤波器频响曲线 横轴是频率(Hz),纵轴是声音大小(dB)。(请忽略图中的频率刻度,没有对应人声的频率范围) 所谓的低音效果,其实就是对人声中的低音部分保留或增强,对应…

2.并发编程

文章迁移自语雀。原文地址:https://www.yuque.com/changhe-xqeca/zn1cvu/dvunld 昨晚上感觉程程是个温柔的姑娘 1.同步的实现: 是利用锁的机制来实现同步的。 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁&a…

云端技术驾驭DAY15——ClusterIP服务、Ingress服务、Dashboard插件、k8s角色的认证与授权

往期回顾: 云端技术驾驭DAY01——云计算底层技术奥秘、云服务器磁盘技术、虚拟化管理、公有云概述 云端技术驾驭DAY02——华为云管理、云主机管理、跳板机配置、制作私有镜像模板 云端技术驾驭DAY03——云主机网站部署、web集群部署、Elasticsearch安装 云端技术驾驭…

C++用临时对象构造新对象

C用临时对象构造新对象 //用临时对象构造同类型的新对象&#xff0c;该临时对象不产生&#xff1b; // 直接用生成临时对象的方法构造新对象&#xff0c;这是编译器对代码的优化&#xff0c;效率更高 #include<iostream> using namespace std; class MyClass { public:…

软件测试--性能测试工具JMeter

软件测试--性能测试工具JMeter 主流性能测试工具1.主流性能测试工具Loadrunner和Jmeter对比 —— 相同点2.主流性能测试工具Loadrunner和Jmeter对比 —— 不同点JMeter基本使用JMeter环境搭建1.安装JDK:2.安装Jmeter:3.注意点:JMeter功能概要1. JMeter文件目录介绍1.1 bin目…