图像分割unet系列------Attention Unet详解
- 1、Attention Unet主要目标
- 2、Attention Unet网络结构
- 3、Attention Gate的本质
- 4、关于Attention Unet的思考
Attention Unet发表于2018年中期(比Res-UNet要早一些),它也是UNet非常重要的改进版本之一。当然,Attention Unet同样也是应用在医学图像分割领域,不过文章主要是以胰脏图像分割进行实验与论证的。
1、Attention Unet主要目标
作者在摘要与简介中很清楚的表明了要解决的问题以及要达到的目标。具体如下所示:
- 抑制输入图像中的不相关区域,同时突出特定局部区域的显著特征;
- 用soft-attention 代替hard-attention的思路(注意:sorf-attention可微,可以微分的attention就可以通过神经网络算出梯度并且前向传播和后向反馈来学习得到attention的权重);
- 集成到标准UNet网络结构中时要简单方便、计算开销小,最重要的是提高模型的灵敏度和预测的精度;
2、Attention Unet网络结构
将Attention融入到UNet的结构如下图1所示:
Attention Gate(AG) 的具体结构如下图2所示:
结合图1与图2可以很清楚的了解到Attention UNet网络结构的主要特点。从图1可以很清楚的看到解码部分feature map与其上一层的编码部分feature map作为AG的输入,经过AG后将结果cat上采样的解码部分feature map。下面我们根据图2详细讲一下GA操作。
与 进行并行操作,通过得到A, 通过得到B,随后进行A+B操作得到C。注意一点:来自于 下一层,尺寸大小是 的1/2,所以要对 进行下采样(当然也可以对进行上采样)。否则由于尺寸问题A与B不可能可以进行逐点“+”操作。从下面的Relu操作的维度可以看到,很明显是对 进行下采样(应该主要是考虑到计算开销问题)。
操作得到E。E进行sigmoid 操作得到F,F通过resampler(重采样)得到注意力系数(注意力系数其实是注意力权重)。
乘以 得到。
3、Attention Gate的本质
注意力机制的本质是什么样的呢?AG是如何做到提高局部(感兴趣区域ROI)特征抑制某些非感兴趣区域的呢?我自己根据自己的理解做一个简要的说明,不对的地方希望各位大神和同学们指正。
与 进行卷积操作后得到A和B,然后相加得到C,假设他们的特征图分别如下所示,并表示这个过程。
从上图也可以看出,与 进行卷积操作后的A、B为什么要有相同的尺寸大小,否则无法进行加运算。我们从C中也可以看出,A+B实际上将相同的感兴趣区域的信号加强了(红色部分),各自不同的区域(绿色区域)也在其中作为辅助或是补充存在在C中(这样其实也保存了一定的回旋余地)。的过程如下所示(假设得到的结果如下图),从图中也可以看到,我认为得到的应该是一个注意力权重,以便于与进行点对点的相乘。从而不断提高局部ROI的权重抑制非ROI部分。
作者也在论文中给出了不断迭代过程中Attention Gate的效果,在3、6、10和150个epoch时,其中红色突出显示较高的注意力。随着训练的进行,网络学会了专注于期望的区域。具体效果如下图所示:
4、关于Attention Unet的思考
上次讲解的Res-UNet中同样也存在Attention模块, 但是与Attention Unet相比,这两个Attention的方法是完全不同的。Res-UNet本质上是hard-attention,而Attention Unet本质上是soft-attention。
从Attention效果上看,Res-UNet的Attention关注的是整个视网膜部分,并没有对血管部分(局部ROI)进行attention操作,而Attention Unet是对局部ROI进行的操作。
从应对复杂场景来看,Res-UNet的Attention在较复杂的场景中(比如腹部CT)很难通过二值化操作得到正确的Mask。但是反观Attention Unet,通过sorf-attention的方法可以逐步加强局部ROI的权重,有效抑制无关区域中的激活,减少冗余的部分的skip。从这方面看,Attention Unet拥有更为广阔的应用范围。
从网络结构的设计角度看,Attention Unet相对于Res-UNet更为复杂一些。但是具体问题具体分析,包括其他UNet改进算法,适合自己项目的才是最好的。