医学图像分割之Attention U-Net

目录

一、背景

二、问题

三、解决问题

四、Attention U-Net网络结构


        简单总结Attention U-Net的操作:增强目标区域的特征值,抑制背景区域的目标值。抑制也就是设为了0。

一、背景

        为了捕获到足够大的、可接受的范围和语义上下文信息,在标准的CNN结构中,特征图被逐步下采样,以获得粗粒度的特征图,扩大感受野范围。粗粒度特征图能反应空间信息。虽然粗粒度特征图能在全局尺度上进行模型定位,反应组织间的关系,但是当目标是不同形状的小目标时,减少错正率保持着困难。所以要提高分割精度。

二、问题

  1. 为提升精度,当前的分割框架依赖额外的预先定位模型,将任务分为目标定位和后续分割。
  2. 全卷机网络FCNs和U-Net是常见的网络架构。尽管他们有很好的表征性能,但是他们的结构是多级级联CNN,级联框架提取ROI,对特定的ROI进行稠密预测。这种方式会导致计算资源和模型参数的冗余使用。使用级联的所有模型都会重复提取相似的低级特征。

三、解决问题

        为解决以上两个现状问题,本文提出了注意力门Attention Gate(AG)。本文将AG加入到U-Net的跳跃连接中,通过较粗粒度的特征图,获得语义上下文信息,进而对来自同层的encoder的特征图中不相关的特征进行抑制,提高模型对目标区域的灵敏度和准确性。(没有提取ROI,也实现了目标定位)

四、Attention U-Net网络结构

图1 AG的简图 

图2 AttentionU-Net网络结构

        Attention U-Net网络结构,即在U-Net的跳跃连接上加入了Attention Gate模块,通过跳跃连接提高显示特征。从粗粒度尺度上提取信息用在门控中,以消除跳跃连接中的无关的和噪声响应。AGs在前向过程和反向过程期间过滤神经元激活。背景区域的梯度在反向过程中向下加权,较浅区域的模型参数被更新。为减少AGs的训练参数量和计算复杂度,执行了线性变换。在较粗尺度上,AG提供器官的粗略轮廓。

        编码层和U-Net的编码层操作一样,此处不再过多讲解。详情见另一篇U-Net博客。

        解码层:拿D3举例子,来介绍每层的具体实现:

  1. (对D4上采样,达到E3的分辨率)先D4上采样,得到de4,此时de4的特征数量由512至256;
  2. (将D4、E3输入到AG中,即跳跃连接处的操作)然后将de4与E3输入到AG中,通过卷积操作,将de4的特征数量256降至128,E3的特征数量由256降至128,然后将de4与E3相加,得到psi,相加是为了对目标区域做增强操作,即将目标区域的特征值变大;然后对psi做relu操作,特征数量变为256,此时还称为psi。然后对psi通过卷积操作实现线性变换,特征数量由256变为1,做sigmoid操作,sigmoid的操作即结果非0即1,也就是将背景设为0,目标区域设为1, 即实现了背景抑制的目的,消除跳跃连接中无关的和噪声干扰,此时也实现了减少AG的训练参数量和计算复杂度,进一步得到psi。然后将最初的E3与此时的psi相乘,就得到了对最初的E3做了背景抑制的处理,此时的结果称为en3。(此步骤为AG的操作)
  3. (此时是D3出的操作)将通过AG处理的en3与上采样后的de4进行拼接操作,此时特征数量由256变为512;之后做两次conv3*3,特征通道变为256,完成D3部分的操作。

         D1的最后,还有一个conv1*1,用来实现将特征数量由64变为需要的数量num_classes。

Attention U-Net的优势:

        没有多模型训练和大量的额外模型参数。

### 医学图像分割中的Attention U-Net #### Attention U-Net架构概述 Attention U-Net是一种改进版的U-Net网络,在传统U-Net的基础上引入了注意力机制来增强目标区域特征并抑制背景噪声。这种设计使得模型能够更专注于重要的解剖结构,从而提高分割精度[^1]。 具体来说,Attention U-Net在网络编码器部分采用标准的U-Net收缩路径:每个块由两个连续的3×3卷积组成,随后接ReLU激活函数以及最大池化操作完成下采样过程;而在解码阶段,则加入了特殊的attention gate模块连接低分辨率特征图与高分辨率特征图之间,确保只有那些真正有助于当前像素分类的信息被保留下来参与最终预测[^2]。 ```python import torch.nn as nn from torchvision import models class AttentionBlock(nn.Module): """定义Attention Gate""" def __init__(self, F_g, F_l, F_int): super(AttentionBlock, self).__init__() self.W_g = nn.Sequential( nn.Conv2d(F_g, F_int, kernel_size=1,stride=1,padding=0,bias=True), nn.BatchNorm2d(F_int) ) self.W_x = nn.Sequential( nn.Conv2d(F_l, F_int, kernel_size=1,stride=1,padding=0,bias=True), nn.BatchNorm2d(F_int) ) self.psi = nn.Sequential( nn.Conv2d(F_int, 1, kernel_size=1,stride=1,padding=0,bias=True), nn.BatchNorm2d(1), nn.Sigmoid() ) self.relu = nn.ReLU(inplace=True) def forward(self,g,x): g1 = self.W_g(g) x1 = self.W_x(x) psi = self.relu(g1+x1) psi = self.psi(psi) return x*psi ``` 上述代码展示了如何构建一个简单的`Attention Block`类,它接受来自不同层次的空间位置上的特征向量作为输入,并输出经过加权后的特征表示形式。这些权重反映了各个通道对于特定任务的重要性程度[^3]。 #### 应用实例 在实际应用场景中,Attention U-Net已被广泛应用于多种类型的医学影像分析任务当中,比如肿瘤检测、器官轮廓提取等。相比于原始版本而言,加入注意力机制之后可以显著改善边界细节处理效果,减少误报率的同时也提高了真阳性发现的概率[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值