目录
一、中心思想
二、网络结构的异同点
三、网络结构的改进
3.1 GCNet的改进
3.2 RTNet的改进
四、总结
一、中心思想
三种网络最终目的都是为了捕获远程依赖关系或是全局上下文信息以增强目标检测或是目标分割的效果。
NLNet:卷积运算只能一次处理一个局部信息,而且伴随着许多的局限。NLNet是受传统的非局部均值滤波的启发,希望能够借助非局部操作捕获远程依赖关系以此来增强对同类像素的注意力。
GCNet:GCNet通过实验证明NLNet增强的注意力特征与query位置无关,在此基础上对NLNet进行了大刀阔斧的删减和修改,在不降低网络功效的情况下减少网络的计算消耗。此外,GCNet参考SENet,将模型框架划分为全局注意力池化模块、bottleneck transform模块和特征聚合模块,本质上还是为减少计算消耗,但是性能上优于SENet和NLNet。(笔者认为GCNet与NLNet已经是两种产物了,GCNet抛弃了非局部均值滤波的思想。)
RTNet:RTNet的全局transformer模块GC模块的变种,与GCNet不同的是GC模块是靠一个通道注意力向量做全局注意力池化获取全局注意力特征,而RTNet是靠一个空间注意力向量。
二、网络结构的异同点
如下图所示分别为NLNet、GCNet和RTNet。
NLNet与GCNet:NLNet与GCNet最大的不同就在于查询头,GCNet抛弃了查询头的设置,也就意味着抛弃了非局部均值滤波的思想,GCNet不再计算每个像素值(区域)与与其他像素点(区域)之间的相似度,也就放弃了去捕获远程依赖关系,转而去通过注意力池化获取全局上下文特征,(这个过程便是注意力池化,特征图被池化为了一个通道向量),此外效仿SENet,增加了一个bottleneck transform模块 (因为简化后的NL模块与SE模块实在太像了,满足与SE模块融合的要求,融合后能够减少计算消耗)。
GCNet和RTNet:从结构上来看RTNet中GTB模块更像NL模块,实际上GTB模块也没有履行非局部均值滤波的思想,与GCNet一样,GTB模块也是转而去通过注意力池化获取全局上下文特征,只不过GTB模块是先通过在通道方向上的融合得到一个空间注意力向量,再通过在空间方向上的融合得到一个通道注意力向量,本质上还是注意力池化获取全局上下文特征。
三、网络结构的改进
从cv领域发展来看,NLNet在注意力时代早期的影响是深远的,以NLNet为衍生诞生了一批优秀的网络模型如GCNet、DANet,在GCNet的基础上不满于只获取通道注意力衍生出了RTNet的GTB模块。
3.1 GCNet的改进
仔细观察的话,可以发现GC模块和SE模块的transform部分基本一致,最大的不同就在于池化部分(也就是context modeling),SE模块采用全局平均化池,而GC模块采用的是注意力池化(采用1x1卷积 和softmax函数获得注意力权重),这一步看起来最终获取的向量是一样的,实际上GC模块这样做是经过严格的公式推敲而来的,公式如下,
(红色部分便是注意力池化,由NL模块定义推导而来)。
这一步是GC模块区别于SE模块和NL模块的关键,GCNet最大改进之处。
3.2 RTNet的改进
RTNet中GTB模块的改进很明显,相比与GC模块,GTB模块还多融合了一个空间注意向量。GTB模块是先通过在通道方向上的融合得到一个空间注意力向量,再通过在空间方向上的融合得到一个通道注意力向量,融合从不同角度提取的注意力向量有助于提高特征表现力。(参考CBAM模块。)
四、总结
NLNet、GCNet和RTNet都是十分优秀的网络,但是很明显GCNet和RTNet都抛弃了非局部均值滤波的思想,基于非局部均值滤波获取远程依赖关系的网络是否还能有更进一步的改进呢?此外,作为最新的cv,RTNet采用多任务和交叉注意的策略,这是现今比较流行的医学图像处理策略。GCNet的成功也表明在理论上的公式推导应用于网络构建上是十分重要的。