UACANet: Uncertainty Augmented Context Attention for Polyp Segmentation

本文主要是介绍UACANet: Uncertainty Augmented Context Attention for Polyp Segmentation,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

不确定性增强的上下文注意力用于息肉分割。添加链接描述
继续看不确定性的文章,这里是医学分割,和研究方向有一定的关系。
作者在特征图中考虑到了不确定区域。作者对U-Net进行了修改,(修改的完全看不到u-net的影子了),同时额外添加了encoder和decoder,在每一个预测结构都计算出一个特征图,并传播到下一个模块。有点类似于Cascade PSP的感觉。在每一个预测模块,之前的预测图用于计算前景,背景和不确定区域。然后我们计算特征图每一个像素和特征表示之间的关系。(不理解的话看框架就可以了,本文的框架设计的很巧妙很有意思。)
息肉分割是二分类问题,本文结合了前人ParNet网络的优势,又提出了自己的创新点。作者在本文使用encoder的输出和来自底下的decoder特征去结合高层次语义特征。
在这里插入图片描述
1:三个PAA-e的输出用来融合,输送进PAA-d,和UACA。再经过一个卷积,得到初始的输出图。
2:PAA-e和PAA-d的输出进行concat,输送到UACA,初始的输出图作为上下文引导也输入到UACA。UACA内部结构一会说。
3:UACA的输出经过1x1卷积核原始的输出图进行concat。得到第二个输出图。
4:接着将第二个PAA-e的输出和之前的UACA进行拼接。用于下一个UACA。
5:流程同上。
6:经过三个UACA后,最终的输出经过一个四倍的双线性上采样和sigmoid函数。
总结:backbone的输入到PAA-e编码,然后输送到PAA-d得到初始的特征图作为初始引导图。这样会是UACA更专注于学习除了初始特征图之外的残差特征图帮助连续的UACA专注于边界等不确定的区域而不是确定的区域。
我们使用了BCE loss和IoU loss,损失函数如下所示:
在这里插入图片描述
i表示同一个位置预测图和gt的像素值。y表示gt,yhat表示预测图。

PAA-e和PAA-d
对于语义分割,研究者致力于寻找一个结构可以提取丰富的特征图同时包含高层次语义信息和低层次细节信息。自注意力就是一个很好的方法。Axial attention(轴注意力)在单轴执行非局部操作,作者提出PPA,并行的轴注意力(水平和垂直)用于提取全局依赖和局部表征。如果是串行连接轴注意力需要添加可训练的位置编码,我们不使用,因为位置编码对于小物体用处不大。
使用并行的逐像素相加效果好于concat,input作为两个注意力的输入对最终的贡献相同。并且单一的注意力会导致图像的变形,逐像素相加可以弥补这种伪影。
在这里插入图片描述
U-Net使用低层特征而并没有进行通道缩减,冗余信息会降低最终的表现,为了不丢失细节信息且减少通道维度,我们设计了带有Receptive Field Block的PAA-e。如(a)所示
在这里插入图片描述
(a)的设计类似于PPM,本质上是为了扩大感受野,图中显示的在PAA之前使用的,将生成的结果concat后再与其他backbone的输出concat,输送到decoder中,中间加了PAA,目的是聚合不同层PPA-e的输出。
不确定增强的上下文注意力:
reverse attention可以带来模糊的边界引导而没有边界监督的清晰形状。什么是reverse attention?图片来源
在这里插入图片描述
预测图经过一个softmax,到的一个概率图(0-1之间),假如是前景的照片,用1减去概率图,得到的背景照片,然后与原图相乘,目的是突出背景。
作者发现,边界区域出现时,特征分通常在0.5,即有很大的不确定性。我们假设正常的特征图和反向特征图有等量的边界信息,因为1减去正向的就是反向的。作者提出UACA模块,一个结合不确定区域的注意力机制用来提取丰富的语言特征,并且不需要额外的边界引导。
之前计算的初始特征图作为m,前景mf,背景mb,不确定图mu
在这里插入图片描述
在这里插入图片描述
我们使用最大操作是为了分清三个区域,因为不确定区域已经代表了他们的共同区域。这些区域有大量的冗余信息。
reverse attention类似于CBAM,对特征图进行逐通道相乘。类似于OCR,三个区域的表征向量可以计算为:
在这里插入图片描述
在图片中表示为:
在这里插入图片描述

实验:
backbone:Res2Net
UACANet-S:所有卷积通道为32
UACANet-L:所有卷积通道为256
图像大小:352x352
优化器:Adam
epoch:240
学习率:0.0004

PPA消融实验:

在这里插入图片描述
不确定区域消融实验:
在这里插入图片描述
对比最好的结果:
在这里插入图片描述
可视化:
在这里插入图片描述

这篇关于UACANet: Uncertainty Augmented Context Attention for Polyp Segmentation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/210514

相关文章

多头注意力机制(Multi-Head Attention)

文章目录 多头注意力机制的作用多头注意力机制的工作原理为什么使用多头注意力机制?代码示例 多头注意力机制(Multi-Head Attention)是Transformer架构中的一个核心组件。它在机器翻译、自然语言处理(NLP)等领域取得了显著的成功。多头注意力机制的引入是为了增强模型的能力,使其能够从不同的角度关注输入序列的不同部分,从而捕捉更多层次的信息。 多头注意力机

Retrieval-Augmented Generation for Large Language Models A Survey

Retrieval-Augmented Generation for Large Language Models: A Survey 文献综述 文章目录 Retrieval-Augmented Generation for Large Language Models: A Survey 文献综述 Abstract背景介绍 RAG概述原始RAG先进RAG预检索过程后检索过程 模块化RAGMo

从零到一学FFmpeg:avcodec_parameters_from_context 函数详析与实战

文章目录 前言一、函数原型二、功能描述三、使用场景四、使用实例 前言 avcodec_parameters_from_context是FFmpeg库中的一个实用函数,用于将AVCodecContext中的编解码参数复制到AVCodecParameters结构体中。 这个操作在很多场景中都非常有用,尤其是在处理多媒体流和文件格式时,需要根据编解码上下文的信息来设置输出或输入流的

U-Net for Image Segmentation

1.Unet for Image Segmentation 笔记来源:使用Pytorch搭建U-Net网络并基于DRIVE数据集训练(语义分割) 1.1 DoubleConv (Conv2d+BatchNorm2d+ReLU) import torchimport torch.nn as nnimport torch.nn.functional as F# nn.Sequential

Splash of Color: Instance Segmentation with Mask R-CNN and TensorFlow

喷色:使用Mask R-CNN和TensorFlow进行实例分割 原文:Splash of Color: Instance Segmentation with Mask R-CNN and TensorFlow 原作者:Waleed Abdulla 0 概述 早在11月,我们就将Mask R-CNN的实现开源了,此后,它被forked了1400次,在许多项目中使用,并得到了许多贡献者的改进。

Context namespace element 'annotation-config' and its parser class [org.springframework.context.anno

严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListenerorg.springframework.beans.factory.BeanDefinitionStoreException: Un

Polyp-DDPM: Diffusion-Based Semantic Polyp Synthesis for Enhanced Segmentation

Polyp- ddpm:基于扩散的语义Polyp合成增强分割 摘要: 本研究介绍了一种基于扩散的方法Polyp-DDPM,该方法用于生成假面条件下息肉的逼真图像,旨在增强胃肠道息肉的分割。我们的方法解决了与医学图像相关的数据限制、高注释成本和隐私问题的挑战。通过对分割掩模(代表异常区域的二进制掩模)的扩散模型进行调节,poly - ddpm在图像质量(实现fr起始距离(FID)得分为78.47

多头Attention MultiheadAttention 怎么用?详细解释

import torchimport torch.nn as nn# 定义多头注意力层embed_dim = 512 # 输入嵌入维度num_heads = 8 # 注意力头的数量multihead_attn = nn.MultiheadAttention(embed_dim, num_heads)# 创建一些示例数据batch_size = 10 # 批次大小seq_le

【C语言】解决C语言报错:Segmentation Fault

文章目录 简介什么是Segmentation FaultSegmentation Fault的常见原因如何检测和调试Segmentation Fault解决Segmentation Fault的最佳实践详细实例解析示例1:未初始化指针示例2:数组越界示例3:使用已释放的内存示例4:递归导致栈溢出 进一步阅读和参考资料总结 简介 Segmentation Fault(段