实现语义分割
输入数据,对于下图左边,我们需要分割人、建筑物、植物、路和背景,将其作为特定编码:
那么对于输出数据,我们需要为每一中类别物体预测一个通道,这里需要预测5个通道:
编码部分是由很多 contraction block 组成,每个 block 对输入做 3×3 大的卷积,然后是 2×2 的最大池化(max pooling)。每个 block 输出的特征图数量是上一个 block 的两倍,可以保证网络高效地学习复杂的图像特征。对于解码部分,则包含很多 expansion block,每个 block 的输入上做 3×3 的 CNN 加上 2×2 的上采样(up sampling),并且每个 block 的特征图数量减半。最重要的是,每个 block 的输入都要与左边解码的对应部分(会做一定的裁剪)的输出合并。
最大创新点在于,将循环卷积和残差引入子模块。
其中子模块为:
其中环形箭头表示循环连接。下图表示了几种不同的子模块内部结构图,(a)是常规的U-Net中使用的方法,(b)是在(a)的基础上循环使用包含激活函数的卷积层,(c)是使用残差连接的方式,(d)是该文章提出的结合(b)和(c)的循环残差卷积模块。
Attention-Unet模型是以Unet模型为基础的,可以从下图看出,Attention-Unet和U-net的区别就在于decoder时,从encoder提取的部分进行了Attention Gate再进行decoder。
在对 encoder 每个分辨率上的特征与 decoder 中对应特征进行拼接之前,使用了一个AGs,重新调整了encoder的输出特征。该模块生成一个门控信号,用来控制不同空间位置处特征的重要性,如下图中红色圆圈所示。