yolov8-更换卷积模块-ContextGuidedBlock_Down

源码解读

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 mapnOut: the channel of output feature map, and nOut=2*nIn"""super().__init__()nOut = nIn * 2self.conv1x1 = ConvBNPReLU(nIn, nOut, 3, 2)  # size/2, channel: nIn--->nOutself.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--->nOutself.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 featurejoi_feat = self.bn(joi_feat)joi_feat = self.act(joi_feat)joi_feat = self.reduce(joi_feat)  # channel= nOutoutput = self.F_glo(joi_feat)  # F_glo is employed to refine the joint featurereturn output

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

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

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

Relu与PRelu激活函数的对比。

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

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

修改

yaml文件

task.py文件

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

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

相关文章

保护模式笔记九 中断门和IDT(中断描述符表)

保护模式笔记九 中断门和IDT(中断描述符表) https://www.52pojie.cn/thread-1455684-1-1.html (出处: 吾爱破解论坛) 前言 所有保护模式索引链接:保护模式笔记一 保护模式介绍 前面学习了调用门之后继续学习中断门 中断门 中断门的作用 先前学习的调用门在实际…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于条件风险价值的虚拟电厂参与能量及备用市场的双层随机优化》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 这篇文章的标题涉及到以下几个关键点…

SQL入门教程参考

参考 SQL视频教程 LintCode 炼码 - ChatGPT!更高效的学习体验! SQL基础教程 SQL 教程 SQL 教程2 SQL教程 - 廖雪峰的官方网站 史上最全SQL基础知识总结(理论举例)-CSDN博客 数据库表基础操作 首先数据库表必掌握的基础操作,建表、删表、…

PyTorch-神经网络

神经网络,这也是深度学习的基石,所谓的深度学习,也可以理解为很深层的神经网络。说起这里,有一个小段子,神经网络曾经被打入了冷宫,因为SVM派的崛起,SVM不了解的同学可以去google一下&#xff0…

OpenCV 4基础篇| OpenCV图像的拆分和合并

目录 1. 通道拆分1.1 cv2.split1.1.1 语法结构1.1.2 注意事项1.1.3 代码示例 1.2 NumPy切片1.2.1 代码示例 2. 通道合并2.1 cv2.merge2.1.1 语法结构2.1.2 注意事项2.1.3 代码示例 1. 通道拆分 1.1 cv2.split 1.1.1 语法结构 b,g,r cv2.split(img[, mv]) #图像拆分为 BGR 通…

【Simulink系列】——控制系统仿真基础

声明:本系列博客参考有关专业书籍,截图均为自己实操,仅供交流学习! 一、控制系统基本概念 这里就不再介绍类似于开环系统、闭环系统等基本概念了! 1、数学模型 控制系统的数学模型是指动态数学模型,大致…

程序员的金三银四求职宝典:如何在关键时期脱颖而出?

个人主页:17_Kevin-CSDN博客 随着春天的脚步渐近,程序员们的求职热潮也随之而来。在这个被称为“金三银四”的招聘季,如何从众多求职者中脱颖而出,成为了许多程序员关注的焦点。本文将为你提供一份全面的求职宝典,助你…

【JMeter】 二次开发插件开发 Dubbo 接口测试插件浅析

概述 在一些企业中,各类业务系统非常丰富,相互之间或对外提供很多的服务或接口这些服务或接口中,有很多是需要强契约约束的,服务的提供方、服务的使用方必须遵守相同契约这类服务最典型的就是RPC,其中应用广泛的有Dub…

Vue3中Vuex状态管理库学习笔记

1.什么是状态管理 在开发中,我们会的应用程序需要处理各种各样的数据,这些数据需要保存在我们应用程序的某个位置,对于这些数据的管理我们就称之为状态管理。 在之前我们如何管理自己的状态呢? 在Vue开发中,我们使用…

Linux设备模型(十一) - platform设备

一,platform device概述 在Linux2.6以后的设备驱动模型中,需关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候, 会寻找与之匹配的驱动;相反的,在系统每注册一个设备的时…

浅显易懂:WinForms、WPF和Electron的区别和优缺点

在开发桌面应用的时候,WinForms、WPF和Electron是绕不过去的三个技术栈,本文就详细据介绍了三者的区别和优缺点,帮助老铁们做个抉择。 一、winform wpf Electron 三者区别 WinForms、WPF和Electron是三种不同的框架和技术,用于开…

alfred自定义脚本执行报错,alfred task launch path not accessible问题解决

alfred自定义脚本执行报错,alfred task launch path not accessible 原因是mac升级后 /usr/lib/php 已经不存在了,可以改由zsh方式执行,如下图 右击打开目录 将执行脚本放入目录 code如下: <?phprequire ./Util.php; $qs $argv; $query $qs[1]; date_default_timezon…