论文:https://arxiv.org/abs/2103.06104
主框架还是U-net,大体方向上改变了两个部分 encoder 和 skip encoder:U-net的encoder是基于CNN网络经过卷积和pooling不断去降低分辨率,扩大感受野,将信息从分辨率转换到通道上,提取更高级的encoder feature map. 本文在提取encoder feature map之前,增加了self attention利用特征之间的全局作用去获得contextual information.(本质也是在CNN后面加入了Transformer模块)
skip:U-net的skip是将之前的encoder的不同层次的高分辨特征和decoder的特征进行拼接组合,这样有利于恢复decoder的高维特征丢失的空间信息 本文是引入了一个cross attention将encoder的特征中非关注的信息给过滤出去,使decoder获取更好的空间信息进行精修。
self attention:
就是transformer传统的self attention 可以获取图像的长距离结构信息 positional encoding可以获取器官绝对或者相对位置信息
cross attention:
S就是原来的skip结构,从encoder中拿的高分辨率特征 Y就是当前的decoder高维特征 我个人认为此图有错误(或许是个人理解不够,也没有和作者联系) 是这样的经过MHSA出来的特征维度为 hXwXd 说明V是hXwXd 可V是由S先经过1x1的卷积和上采样来的 这样S维度就变成了4hX4wXd(假定1*1的卷积不改变分辨率,只有pooling才改变分辨率) 变成序列就是(16w·h)Xd 这样是和V对应不了 如果把上采样改成pooling,这样就可以说的通了 S先经过1x1的卷积和pooling 变为 hXwXd
Y经过1x1的卷积 进行了维度的变换 为hwd 乘以Q ,K的权重矩阵 生成Q,K 本图的映射成序列应和上图一致 而且忽略了 position encoding 带来的维度的变化
这个cross attention 大概的思想就是我们分割的重点是什么,把encoder的高分辨率特征中分割的重点的特征拿过来 Q和K取自当前的decoder特征 V取自相对应的encoder特征 特征的结合由两种种途径构成 一 用Q和K获取当前特征的权重矩阵 x乘以V 获取分割中重要的部分的信息 再上采样成 2h2wd 然后把经过position encoding的S拿过来进行 点乘 二 把经过position encoding的Y 上采样到2hX2wX2d 然后再经过卷积降到2hX2wXd 把一和二最后的特征拼接在一起 得到新的decoder特征
在这个attention中 输入 是hXwX2d 输出2hX2wX2d decoder主要是逐渐恢复分辨率 把通道信息放在图像的空间上 这个cross attention并没有改变特征的维度 和U-net一样 之后需要连接卷积去进行降维。
idea: 利用cross attention取代skip 过滤出富含语义分割的信息 Q和K来自decoder特征是为了寻找分割目标 给予对应的encoder特征中分割目标更大的权重
疑点: V是由S乘以权重矩阵得到的 也就是说S经过了一个全连接层得到了V 为什么最后得到Z以后还需要点乘以S呢? 这样训练Z中不都是1附近的数吗? 残差结构?
|