深度学习| Attention U-Net(包含Attention Gate代码)

前言:最近在阅读一篇文章,用到了Attention Unet所以特地写了两篇文章,上一篇文章介绍了Attention的基础知识,这篇文化在哪个介绍Attention Unet相关知识以及代码。

Attention U-Net

  • 基础
    • 注意力机制
    • 软注意力和硬注意力
    • U-Net为什么需要Attention
  • Attention U-Net
  • Attention Gate模块代码

基础

注意力机制

Attention介绍:就是模仿人的注意力机制设计,人看到一个东西,会把注意力放在需要关注的地方,把其它无关的信息过滤掉。下面的图是人类看到图片注意力热力图。
在这里插入图片描述

软注意力和硬注意力

软注意力(Soft Attention):加权图像的每个像素。 高相关性区域乘以较大的权重,而低相关性区域标记为较小的权重。

硬注意力(Hard Attention):一次选择一个图像的一个区域作为注意力,设成1,其他设为0。

通常采用的都是软注意力,因为软注意力能参与反向传播,而硬注意力机制不行,得借助强化学习的手段训练。而且软注意力机制模块大多数都不会改变输出尺寸,从而可以很灵活的插入到卷积网络的各个部分。

U-Net为什么需要Attention

既然Attention U-Net是U-Net的改进,那么需要先简单回顾一下U-Net,来更好对比。

下面是U-Net的网络结构图

在这里插入图片描述

从U-Net的结构图中看出,为了避免在Decoder解码器时丢失大量的细节,使用了Skip Connection跳跃链接,将Encoder编码器中提取的信息直接连接到Decoder对应的层上。

但是,Encoder提取的low-level feature有很多的冗余信息,也就是提取的特征不太好,可能对后面并没有帮助,这就是U-Net网络存在的问题

该问题可以通过在U-Net上加入注意力机制,来减少冗余的Skip Connection。

Attention U-Net

Attention U-Net发布比Res U-Net要早些,主要应用在医学图像分割领域。

Attention U-Net:在U-Net基础上,通过在U-Net上加入软注意力机制,来减少冗余的Skip Connection。

加入软注意机制随让能够减少冗余,但会增加训练参数,从而导致计算成本有所提高。所以集成到标准U-Net网络中时要简单方便、计算开销小。

Attention U-Net结构图
在这里插入图片描述
对基础U-Net网络结构,可以发现在跳跃链接中都加入了Attention Gate模块。而原始U-Net只是单纯的把同层的下采样层的特征直接连接到上采样层中。

Attention Gate模块结构图
在这里插入图片描述
x l x^l xl是当前层Encoder下采样跳跃链接来的数据;g是来自Decoder下一层的数据,所以g的尺寸大小是 x l x^l xl的二分之一。所以要对 x l x^l xl下采样或者g上采样,来确保尺寸一致,从而得到 W g W_g Wg W x W_x Wx。尺寸一致后, W g W_g Wg W x W_x Wx进行逐点“+”操作,然后经过relu,再1×1卷积和sigmoid函数从而得到注意力系数,最后再结果一个resample把尺寸还原回来。还原后的注意力系数就可以和特征图 x l x^l xl进行加权。

为什么需要relu和sigmoid激活函数,因为 W g W_g Wg W x W_x Wx进行“+”操作后还是线性操作,激活函数可以引入非线性,从而更好拟合。

简单点来说,g是decoder的数据,对比同层的 x l x^l xl要学到的东西更多,信息更加准确。g就是Attention机制中的Q(Query),告诉了模型需要要从 x l x^l xl中学习的重点。

Attention Gate模块代码

class Attention_block(nn.Module):def __init__(self, F_g, F_l, F_int):super(Attention_block, self).__init__()self.W_g = nn.Sequential(nn.Conv2d(F_g, F_int, kernel_size=1, stride=1, padding=0, bias=False),nn.BatchNorm2d(F_int))self.W_x = nn.Sequential(nn.Conv2d(F_l, F_int, kernel_size=1, stride=1, padding=0, bias=False),nn.BatchNorm2d(F_int))self.psi = nn.Sequential(nn.Conv2d(F_int, 1, kernel_size=1, stride=1, padding=0, bias=False),nn.BatchNorm2d(1),nn.Sigmoid())self.relu = nn.ReLU(inplace=True)def forward(self, g, x):# 下采样的gating signal 卷积g1 = self.W_g(g)# 上采样的 l 卷积x1 = self.W_x(x)# concat + relupsi = self.relu(g1 + x1)# channel 减为1,并Sigmoid,得到权重矩阵psi = self.psi(psi)# 返回加权的 xreturn x * psi

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

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

相关文章

【蓝牙协议栈】【BLE】低功耗蓝牙工作流程(角色\广播\扫描\连接等专业名词介绍)

1. 精讲蓝牙协议栈(Bluetooth Stack):SPP/A2DP/AVRCP/HFP/PBAP/IAP2/HID/MAP/OPP/PAN/GATTC/GATTS/HOGP等协议理论 2. 欢迎大家关注和订阅,【精讲蓝牙协议栈】和【Android Bluetooth Stack】专栏会持续更新中.....敬请期待&#x…

✯✯✯宁波ISO45001认证:保障员工健康与安全✯✯✯

🌈🌈🌈最近,我们公司🥰通过了ISO 45001认证,🤠这让我感到非常😎兴奋和自豪!🤹作为一个在🏙️宁波工作的员工,🤓我深深地感…

Golang | Leetcode Golang题解之第48题旋转图像

题目&#xff1a; 题解&#xff1a; func rotate(matrix [][]int) {n : len(matrix)// 水平翻转for i : 0; i < n/2; i {matrix[i], matrix[n-1-i] matrix[n-1-i], matrix[i]}// 主对角线翻转for i : 0; i < n; i {for j : 0; j < i; j {matrix[i][j], matrix[j][i]…

动力学重构/微分方程参数拟合 - 基于模型

这一篇文章&#xff0c;主要是给非线性动力学&#xff0c;对微分方程模型参数拟合感兴趣的朋友写的。笼统的来说&#xff0c;这与混沌系统的预测有关&#xff1b;传统的机器学习的模式识别虽然也会谈论预测结果&#xff0c;但他们一般不会涉及连续的预测。这里我们考虑的是&…

解决双击PDF文件出现打印的问题【Adobe DC】

问题描述 电脑安装Adobe Acrobat DC之后&#xff0c;双击PDF文件就会出现打印&#xff0c;而无法直接打开。 右键PDF文件就会发现&#xff0c;第一栏出现的不是用Adobe打开&#xff0c;而是打印。 重装软件多次仍然无法解决。 原因 右键菜单被改写了。双击其实是执行右键菜…

【氧化镓】影响Ga2O3器件沟道载流子迁移率的关键因素

总结 这篇文章对β-Ga2O3 MOSFETs中的通道载流子迁移率进行了深入研究&#xff0c;通过实验测量和理论分析&#xff0c;揭示了影响迁移率的关键因素&#xff0c;特别是库仑散射的影响。研究结果对于理解和改进β-Ga2O3 MOSFETs的性能具有重要意义&#xff0c;为未来的研究和器…

企业微信知识库为什么这么多企业都在用?原因就在这里

在科技迅猛发展的当下&#xff0c;企业信息化建设逐渐成为推动效率提升和核心竞争力增强的关键因素。而企业微信作为一个集团队沟通、项目管理、办公应用于一体的平台&#xff0c;其知识库功能为什么会受到广泛的欢迎和使用&#xff1f;让我们一探究竟。 首先&#xff0c;企业…

面试中关于 SpringCloud 都需要了解哪些基础?

在面试中&#xff0c;对于Spring Cloud的基础知识了解是至关重要的&#xff0c;因为Spring Cloud是构建分布式系统和微服务架构的关键技术栈之一。以下是在面试中可能会涉及到的相关问题。 1. 微服务架构基础 概念理解&#xff1a;理解微服务架构的概念&#xff0c;包括服务拆…

【C++】手撕list(list的模拟实现)

目录 01.节点 02.迭代器 迭代器运算符重载 03.list类 &#xff08;1&#xff09;构造与析构 &#xff08;2&#xff09;迭代器相关 &#xff08;3&#xff09;容量相关 &#xff08;4&#xff09;访问操作 &#xff08;5&#xff09;插入删除 我们在学习数据结构的时候…

【OceanBase诊断调优 】—— 如何快速定位SQL问题

作者简介&#xff1a; 花名&#xff1a;洪波&#xff0c;OceanBase 数据库解决方案架构师&#xff0c;目前负责 OceanBase 数据库在各大型互联网公司及企事业单位的落地与技术指导&#xff0c;曾就职于互联网大厂和金融科技公司&#xff0c;主导过多项数据库升级、迁移、国产化…

台灯太亮会影响视力吗?分享五款防近视护眼台灯

台灯作为一盏实用的桌面照明灯具&#xff0c;是孩子学习过程中必不可少的“好伴侣”&#xff0c;不过大多数家长只关注到台灯的光线是否够亮&#xff0c;认为只要亮度足够就可以了&#xff0c;那么台灯太亮会影响视力吗&#xff1f; 答案是会的。首先太暗的环境肯定是不够支撑孩…

用友NC Cloud importhttpscer接口任意文件上传漏洞

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一、漏洞描述 用友NC Cloud的importhttpscer接口如果存在任意文件上传…

【pycharm】调试模式中四个常用按钮介绍

【pycharm】调试模式中四个常用按钮介绍 在 PyCharm 的调试模式中&#xff0c;有四个常用的按钮&#xff0c;它们的功能如下&#xff1a; Step Over (F8)&#xff1a;单步执行&#xff0c;但在遇到函数调用时&#xff0c;不会进入函数内部&#xff0c;而是将整个函数作为一步执…

【八股】计算机网络篇

网络模型 应用层【HTTP&#x1f449;报文/消息】 传输层【TCP或UDP&#x1f449;段&#x1f449;MSS】网络层【IP、寻址和路由&#x1f449;MTU】 ①IP&#xff08;Internet Protocol&#xff0c;网际协议&#xff09;主要作用是定义数据包的格式、对数据包进行路由和寻址&…

计算机网络物理层思维导图+大纲笔记

大纲笔记&#xff1a; 物理层的基本概念 解决如何在连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是具体的传输媒体 主要任务 确定与传输媒体接口有关的一些特性 机械特性 电气特性 功能特性 规程特性信道上传送的信号 基带信号 来自信源的信号&#xff0c;直接表…

CentOS-7部署mysql、clickhouse并通过普罗米修斯、grafna监控告警

一、准备工作 1、系统环境 所用镜像&#xff1a;CentOS-7-x86_64-DVD-2009.iso 2、涉及安装包 3、克隆4台虚拟机 用途IP主机名Prometneus服务器192.168.15.129master被监控服务器1192.168.15.133node1mysql、clickhouse、grafana服务器192.168.15.134node2被监控服务器219…

3(第二章,数据处理伦理)

目录 概述 基本概念 数据伦理准则 1、尊重他人 2、行善原则 3、公正 4、增加个人自主权 数据隐私法背后的原则 GDPR准则 PIPEDA FTC 违背伦理进行数据处理的风险 违背伦理进行数据处理的行为 概述 数据伦理是社会责任问题而⾮法律问题。 伦理是建立在是否观念上的…

阿里云服务器ECS经济型e实例和u1实例哪个好?

阿里云服务器ECS经济型e实例和通用算力型u1实例有什么区别&#xff1f;如何选择&#xff1f;ECS经济型e实例是共享型云服务器&#xff0c;通用算力型u实例是企业级独享型云服务器&#xff0c;e实例性价比高&#xff0c;现在2核2G3M带宽一年99元&#xff0c;云服务器u1价格相对要…

2024,2025(专家期)

2024&#xff0c;2025&#xff08;专家期&#xff09; 目录概述需求&#xff1a; 设计思路实现思路分析1.另一种的方式&#xff1a; 2.按照自己的职业规划进行发展 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,ful…

vue3去掉el-table底部白色边框

加入下面这一行代码就行了&#xff0c;我用的是less :deep(.el-table__inner-wrapper:before) {background: none;}效果图