2024 2.17~2.23 周报

news2025/2/24 7:28:50

一、本周计划

学习如何缝合模块,跑代码InversionNet、想idea并实验,准备开题报告,学习python基础语法

二、完成情况

1 学习如何在代码中加入模块

可添加的模块如:

通道注意力CA
空间注意力SA
self attention变体
频域快速傅里叶FFT
卷积模块变体
特征融合
下采样

在你想要添加的网络模块进行添加,例如在InversionNet网络中的上采样的第一层添加CBAM。

        CBAM(Convolutional Block Attention Module)结合了通道注意力和空间注意力。CBAM从通道和空间两个维度计算feature map的attention map,然后将attention map与输入的feature map相乘来进行特征的自适应学习。CBAM模块如下图所示。

图:CBAM模块

# 定义一个包含CBAM模块的卷积层
class CBAMBlock(nn.Module):
    def __init__(self, in_channels, reduction=16):
        super(CBAMBlock, self).__init__()
        self.in_channels = in_channels
        self.reduction = reduction

        # 通道注意力计算
        self.channel_attention = nn.Sequential(
            nn.AdaptiveAvgPool2d(1),
            nn.Conv2d(in_channels, in_channels // reduction, kernel_size=1, padding=0),
            nn.ReLU(inplace=True),
            nn.Conv2d(in_channels // reduction, in_channels, kernel_size=1, padding=0),
            nn.Sigmoid()
        )

        # 空间注意力计算
        self.spatial_attention = nn.Sequential(
            nn.Conv2d(in_channels, in_channels // reduction, kernel_size=1, stride=1),
            nn.BatchNorm2d(in_channels // reduction),
            nn.ReLU(inplace=True),
            nn.Conv2d(in_channels // reduction, in_channels // reduction, kernel_size=3, stride=1, padding=1),
            nn.BatchNorm2d(in_channels // reduction),
            nn.ReLU(inplace=True),
            nn.Conv2d(in_channels // reduction, 1, kernel_size=1, stride=1),
            nn.Sigmoid()
        )

    def forward(self, x):
        # 计算通道注意力系数
        channel_att = self.channel_attention(x)
        out = x * channel_att

        # 计算空间注意力系数
        spatial_att = self.spatial_attention(out)
        out = out * spatial_att
        return out

缝合模块时会出现的问题:输入参数、数据维度不匹配

在网络中加上CBAM不一定带来性能上的提升,影响因素可能有数据集、网络自身、注意力所在的位置等。

2. 跑代码——InversionNet

很久没看代码会生疏,重新去看了InversionNet并复现,结果如下。

InversionNet:epoch180,batchsize50,数据量1000

(未解决)当数据量过大时出现问题:_pickle.UnpicklingError: pickle data was truncated


对比试验(待修改):修改上采样部分,需要注意参数

  • ConvTranspose2d:创建反卷积层进行上采样(U-Net使用的则是这一种);
  • UpsamplingBilinear2d:传统的双线性插值上采样(FCN使用的是这一种); 

图像上采样的主要目的是放大图像,主要包括:

(1)内插值法,即在原有图像像素的基础上,在像素点值之间采用合适的插值算法插入新的元素;

(2)反卷积方法(Deconvolution),又称转置卷积法(Transposed Convolution);

(3)反池化方法(Unpooling)。

        在图像处理上面,插值是指利用已知邻近像素点的灰度值或RGB中的三色值产生未知像素点的灰度值或RGB三色值,也就是说用来填充图像变换时像素之间的空隙。目的是由原始图像再生出具有更高分辨率的图像

        线性插值法是指使用连接两个已知量的直线来确定在这个两个已知量之间的一个未知量的值的方法。他的几何意义为利用过A点和B点的直线(y=kx+b) 来近似表示原函数。

        双线性插值是插值算法中的一种,是线性插值的扩展。利用原图像中目标点四周的四个真实存在的像素值来共同决定目标图中的一个像素值,其核心思想是在两个方向分别进行一次线性插值。 「解析」双线性插值-CSDN博客

        线性插值法利用原图像中两个点计算像素值进行插值,双线性插值法利用原图像中四个点计算目标像素值进行插值。

在 Pytorch 中实现,双线性插值处理即 'bilinear' 模式

import torch.nn.functional as F

F.interpolate(x, size=input_shape, mode='bilinear', align_corners=False)

mode (str) – 
algorithm used for upsampling: 'nearest' | 'linear' | 'bilinear' | 
'bicubic' | 'trilinear' | 'area' | 'nearest-exact'. 
Default: 'nearest'

3 学python 

代码能力比较薄弱,准备系统学习python语法,以便于之后跑实验修改代码等等。

Python入门学习——基础语法-CSDN博客

 三、下周计划

1.学习师兄的论文DD-Net、

2.修改并跑代码 将注意力机制加入网络中,对比实验

3.完善开题报告,准备开题答辩等

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

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

相关文章

漫漫数学之旅031

文章目录 经典格言数学习题古今评注名人小传 - 经典格言 如果没有数学知识,这个世界的事物是无法搞清楚的。——罗杰培根(Roger Bacon) 好的,各位看官,让我们来听听罗杰培根这位中世纪的“科学老顽童”是怎么说的&…

openGauss学习笔记-227 openGauss性能调优-系统调优-其他因素对LLVM性能的影响

文章目录 openGauss学习笔记-227 openGauss性能调优-系统调优-其他因素对LLVM性能的影响 openGauss学习笔记-227 openGauss性能调优-系统调优-其他因素对LLVM性能的影响 LLVM优化效果不仅依赖于数据库内部具体的实现,还与当前所选择的硬件环境等有关。 表达式调用C…

CrossOver2024虚拟机软件的优缺点分别是什么?

CrossOver虚拟机软件的优缺点分别如下: 优点: 无需双系统:用户可以在Mac或Linux系统上直接运行Windows应用程序,无需安装双系统,从而节省了硬盘空间并避免了系统切换的麻烦。易于安装和使用:CrossOver具有…

基于SpringBoot的在线拍卖系统设计与实现(源码+调试+LW+PPT)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于SpringBoot的在线拍…

初探Web客户端追踪技术

前言 案例1 当我们首次浏览网站时,在网页的下方位置经常会出现提示,询问是否允许使用 Cookie 来提供服务和流量。为了不被挡住浏览的内容,我们经常会下意识地点击“接受”,然后继续浏览。看似无害而有害增强你在这个网站上的体验…

基于springboot财务管理系统源码和论文

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&#xf…

C# cass10 宗地初始化-根据 “预编号” “权利人”图层对应信息 批量添加到宗地图层

运行环境Visual Studio 2022 c# cad2016 cass10 根据 “预编号” “权利人”图层对应信息 批量添加到宗地图层 一、主要步骤 zdimport 方法:这个方法用于导入宗地信息。首先通过调用 AutoCAD API 获取当前活动文档、数据库和编辑器对象。然后根据 CreatePalette.Se…

CSB ----> XXE靶场记

小记&#xff1a;XXE的靶场 1.XXE的触发基本条件 想要触发XXE靶场&#xff0c;必须满足以下的条件 网站开启了外部实体解析libxml<2.9.0 版本 默认开启了外部实体解析&#xff1a;默认开启了外部实体解析网站管理员开启了外部实体解析&#xff08;不过这个一般不太可能&a…

android 15

https://android-developers.googleblog.com/2024/02/first-developer-preview-android15.html android 15的预览版出了&#xff0c;这个版本的发布计划大概是这样的&#xff08;大约是今年8月发布最终版本&#xff09; https://developer.android.com/about/versions/15/over…

vue3中使用vuedraggable实现拖拽el-tree数据进分组

看效果&#xff1a; 可以实现单个拖拽、双击添加、按住ctrl键实现多个添加&#xff0c;或者按住shift键实现范围添加&#xff0c;添加到框中的数据&#xff0c;还能拖拽排序 先安装 vuedraggable 这是他的官网 vue.draggable中文文档 - itxst.com npm i vuedraggable -S 直接…

Kubernetes安装nginx-controller作为统一网关

nginx-controller是什么呢? 它是一个能调度nginx的一个kubernetes operator,它能监听用户创建,更新,删除NginxConf对象,来调度本地的nginx实现配置的动态更新。如添加新的代理(http,https,tcp,udp),缓存(浏览器缓存,本地缓存),ssl证书(配置本身,ConfigMap,Secret),更新,删除等…

Js的 Promise的 then catch 笔记240222

Js的 Promise的 then catch 笔记240222 基本用法 new Promise(f>{setTimeout(ev>{f("一秒后输出控制台");},1000); }).then(f的参数>{console.log(f的参数); }); // 控制台输出: 一秒后输出控制台上面代码中, f 的标准名叫做 resolve , 所以应该写成 new …

开发Chrome插件,background.js中log打印未出现在控制台

不同于内容脚本&#xff08;通常命名content.js&#xff09;&#xff0c;在后台脚本&#xff08;通常命名background.js或service-worker.js&#xff09;中console.log并不会在控制台中直接显示。 要查看后台脚本上下文的正确控制台&#xff0c;执行如下步骤&#xff1a; 访问…

【Python笔记-设计模式】原型模式

一、说明 原型模式是一种创建型设计模式&#xff0c; 用于创建重复的对象&#xff0c;同时又能保证性能。 使一个原型实例指定了要创建的对象的种类&#xff0c;并且通过拷贝这个原型来创建新的对象。 (一) 解决问题 主要解决了对象的创建与复制过程中的性能问题。主要针对…

有哪些适合程序员的副业?

如果你经常玩知乎、看公众号&#xff08;软件、工具、互联网这几类的&#xff09;你就会发现&#xff0c;好多资源连接都变成了夸克网盘、迅雷网盘的资源链接。 例如&#xff1a;天涯神贴&#xff0c;基本上全是夸克、UC、迅雷网盘的资源链接。 有资源的前提下&#xff0c;迅雷…

QT_day4

1.思维导图 2. 输入闹钟时间格式是小时:分钟 widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);id startTimer(1000);flag1;speecher new QTextT…

基础数据结构和算法《》

递归 1.递归应该一种比较常见的实现一些特殊代码逻辑时需要做的&#xff0c;但常常也是最绕的一种方式&#xff0c;在解释递归 之前&#xff0c;我们用循环和递归来做个比较1.1.如果你打开一扇门后&#xff0c;同样发现前方也有一扇们&#xff0c;紧接着你又打开下一扇门...直…

应用回归分析:泊松回归

泊松回归是一种广泛用于计数数据的回归分析方法。它适用于响应变量是非负整数的情况&#xff0c;特别是当这些计数呈现出明显的离散分布时。泊松回归通过泊松分布的概率分布函数来建模计数数据&#xff0c;使其成为处理计数数据的自然选择。本文将介绍泊松回归的基本概念、应用…

石头剪刀布游戏(C语言)

题目描述 石头剪刀布游戏有 3 种出拳形状&#xff1a;石头、剪刀、布。分别用字母 A , B , C 表示。 游戏规则: 出拳形状之间的胜负规则如下&#xff1a; A > B&#xff1b;B > C&#xff1b;C > A&#xff1b;">"左边一个字母&#xff0c;表示相对优…

进程线程通信-day6

1、将信号和消息队列的课堂代码敲一遍 //发送端 #include<myhead.h>//定义一个消息结构类型 struct msgbuf {long mtype;char mtext[1024]; }; //定义一个宏&#xff0c;表示消息正文大小 #define MSGSIZE sizeof(struct msgbuf)-sizeof(long)int main(int argc, const…