PANet、DANet、FastFCN、OneFormer…你都掌握了吗?一文总结图像分割必备经典模型(三)(2)

简介: PANet、DANet、FastFCN、OneFormer…你都掌握了吗?一文总结图像分割必备经典模型(三)


2、 DANet

本文引入注意力机制,提出了DANet(Dual attention network),该模型可以自适应地集成局部特征及其全局依赖性。具体而言,作者在传统FCN之上附加两种类型的注意力模块,它们分别模拟空间和通道维度中的语义相互依赖性。Position Attention 模块通过对所有位置的特征进行加权和,有选择地聚合每个位置的特征。无论距离如何,相似的特征都将彼此相关。同时,Channel Attention模块通过整合所有信道映射中的相关特征来选择性地强调相互依赖的信道映射。作者利用这两种注意力模块来捕获图像中的全局信息。整体结构如图5所示。

图5 DANet结构

Position Attention 模块

如图6所示,Position Attention模块的输入是一个特征图,其尺寸大小为原始图像的1/8,在这里表示为CxHxW,其中,C表示Channel数,H表示特征图的高,W表示特征图的宽。B、C、D表示的都是特征图A,然后对他们进行reshape操作,得到了三个大小为CxN的矩阵,而这三个矩阵也就对应了自注意力机制的Q、K、V。

图6 位置注意力模块和通道注意力模块的细节见(A)和(B)

首先,计算像素间的相似性矩阵,其过程就是通过QT x K,也就是(N x C)矩阵乘上(C x N)矩阵得到了大小为N x N的像素间相似性矩阵。第二,对该相似性矩阵进行softmax操作,得到每个影响该像素的相对因子。第三,将经过softmax之后的相似性矩阵与V矩阵相乘,最终得到重新编码的特征表示,其大小也是C x N。原始矩阵乘上相似性矩阵的目的是放大与其相似的像素的影响,削减与其不相似的像素的影响,也可以称之为重新编码操作。第四,将最终得到的新的特征矩阵进行reshape操作,得到大小为C x H x W的重新编码的特征图。最后,将该特征图与上层网络中抽取出的特征相加得到最终Position Attention模块的输出,其大小依旧是C x H x W。

Channel Attention 模块
如图6所示,通道注意力模块是用来挖掘图像特征图中每个通道之间的相似性关系,从而让每个通道都具有全局的语义特征。通道注意力模块的整体过程与位置注意力模块相似。输入也是大小为原始图像的1/8,具体表示为C x H x W的特征图。将C x H x W的张量reshape成C x N的矩阵,而N=H x W,因此每个通道都是由1 x N大小的向量表示的。

首先,计算像素间的相似性矩阵,其过程就是通过QT x K得到了大小为N x N的像素间相似性矩阵。第二,对该相似性矩阵进行softmax操作,得到每个影响该通道的相对因子。第三,将经过softmax之后的相似性矩阵与V矩阵相乘,得到重新编码的特征表示,其大小也是C x N。原始矩阵乘上相似性矩阵的目的是为了放大与其相似的通道的影响,削减与其不相似的通道的影响。第四,将最终得到的新的特征矩阵进行reshape操作,得到大小为C x H x W的重新编码的特征图。第五,将该特征图与上层网络中抽取出的特征相加得到最终Channel Attention模块的输出,其大小依旧是C x H x W。

最后,将两个注意力机制中提取的特征图相加,再输入到一个卷积层中,得到最终的图像分割结果。

当前SOTA!平台收录 DANet 共10个模型实现。

项目 SOTA!平台项目详情页
DANet 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/danet-1


3、FastFCN

为了替代以FCN为基础的语义分割方法中消耗时间和消耗内存的膨胀卷积,本文提出了一种新的联合上采样模块——联合金字塔上采样(joint Pyramid upsampling, JPU)。如图7所示,该方法的主干与原始FCN相同,其中5个feature maps (Conv1−Conv5)的空间分辨率逐渐降低了2倍。引入JPU模块,该模块以后3个特征图(Conv3 ~ Conv5)为输入。然后使用多尺度上下文模块或全局上下文模块生成最终的预测结果。

图7 框架概述。本文的方法采用了与原始FCN相同的骨干网。在骨干网之后,提出了一个新颖的上采样模块,名为联合金字塔上采样(Joint Pyramid Upsampling,JPU),它将后三个特征图作为输入,生成一个高分辨率特征图。然后,采用多尺度/全局背景模块来生成最终的标签图

作者将传统的FCN的最后三层输入JPU模块中,该模块的具体过程如图8所示。首先将FCN最后的三层特征图输入一个常规卷积块中,其主要目的是降低特征维度,使所有特征维度一致可以更好的融合信息并降低计算复杂度。随后将三个特征图进行上采样得到了一个联合上采样之后的特征表示,然后通过一个多尺度语义模块来捕捉不同尺度下的特征信息(四个具有不同扩展率的可分离卷积),将其拼接起来得到了多尺度特征表示,随后将其通过一个卷积层得到最终的分割结果。

图8 JPU图示

联合上采样

给定x_l和y_l,我们需要得到一个变换ˆf(·)来近似f(·),其中ˆf(·)的计算复杂度比f(·)低得多。例如,如果f(·)是一个多层感知器(MLP),那么ˆf(·)可以被简化为一个线性变换。然后通过在高分辨率引导图像x_h上应用ˆf(·)得到高分辨率目标图像y_h,即y_h = ˆf(x_h)。给定x_l、y_l和x_h,联合上采样的定义如下:

扩张卷积

图9a给出了一维扩张卷积的图示(扩张率=2),可分为以下三个步骤:(1) 根据索引的奇偶性,将输入的特征f_in分成两组(f_in)^0和(f_in)^1;(2)用相同的卷积层处理每个特征,以得到(f_out)^0和(f_out)^1;(3)将两个产生的特征交错合并,得到输出特征f_out。


带有stride的卷积

将输入特征转化为具有较低空间分辨率的输出特征,这相当于以下两个步骤,如图9b所示:(1)用常规卷积处理输入特征f_in,得到中间特征f_m;(2)去除具有奇数索引的元素,得到f_out。

图9 扩张卷积(扩张率=2)和跨度卷积(跨度=2)

给定输入图像x,通过下述公式得到联合上采样的输出y_s:

给定x和y_s,可以得到近似于y_d的特征图y,如下所示:

上式是一个优化问题,需要迭代梯度下降来收敛。作者提出用一个CNN模块来近似优化过程。每个输入的特征图首先由一个常规的卷积块处理(图8a),其目的是:(1)生成给定x的y_m,(2)将f_m转化为一个尺寸减小的嵌入空间。因此,将所有的输入特征映射到同一空间,这使得融合效果更好,并降低了计算复杂度。然后,对生成的特征图进行上采样和串联,得到y_c(图8b)。平行采用四个具有不同扩张率(1、2、4和8)的可分离卷积,以从y_c中提取特征,其中,不同的扩张率具有不同的功能。采用扩张率为1的卷积来捕捉(y_m)^0和y_m的其余部分之间的关系,如图33中的蓝色方框所示。另外,设计扩张率为2、4和8的卷积来学习映射hˆ,将(y_m)^0转化为y_s,如图33中的绿色方框所示。因此,JPU可以从多级特征图中提取多尺度的上下文信息,从而确保更好的性能。

图10 扩张率1的卷积聚焦于(y_m)^0和y_m的其余部分,而扩张率2的卷积则聚焦于(y_m)^0和y_s

当前SOTA!平台收录 FastFCN 共2个模型实现。




项目 SOTA!平台项目详情页

FastFCN

前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/fastfcn


4、 Gated-SCNN

Deep CNN能提取图像中的很多feature map,比如图像的纹理、颜色、形状特征。但对于分割任务来说,所需要的是根据边界和形状信息进行识别,如果信息流中包含了很多颜色、纹理,就可能会导致识别问题。针对上述问题,作者提出了双流CNN(two-stream CNN)结构,即将shape stream单独分离出来与常规的CNN进行并行操作,最后将两者学习到的特征通过ASPP进行融合处理,从而提高语义分割的性能。

如图11, 模型由三部分组成:常规流(Regular Stream)、形状流(Shape Stream)、Fusion Module。

图11 Gated-SCNN(GSCNN),这是一个用于语义分割的新的双流CNN架构,将形状信息作为一个单独的处理流。GSCNN使用一种新的门控机制来连接中间层。流之间的信息融合是通过融合模块在最后完成的。为了预测高质量的边界,利用了一个新的损失函数,以鼓励预测的语义分割掩码与ground truth边界保持一致

Regular Stream
常规流可以是任何的前馈全卷积网络,如基于ResNet的或基于VGG的语义分割网络。作者实验中采用的骨干网是Resnet101 & WideResnet,输入大小为N x 3 x H x W,输出大小为N x 3 x H/m x W/m,其中,m表示步长。

Shape Stream
将常规流第一层卷积的输出作为输入,产生的语义边界作为输出。网络架构由一些残差块与门控卷积层(GCL)交错组成的。由于我们可以从GT(Groud Truth)语义分割掩码中获得GT二值边缘,因此在输出边界上使用有监督的二值交叉熵损失来监督形状流。整个Shape Stream的输出是N x 1 x H x W大小的边缘map。

Fusion Module
将区域特征和边界特征结合起来,输出一个细化的语义分割输出。对于K个语义类的分割预测,输出一个分类分布:

f 表示像素属于每一个K类的概率。具体来说,使用一个Atrous空间金字塔池化合并边界图s(Shape stream生成的图)和r(Regular stream生成的图)。这使得我们能够保存多尺度的上下文信息。

由于估计语义分割和语义边界的任务是密切相关的,作者还设计了一个新的GCL层,以促进信息从规则流到形状流的流动。GCL是架构的核心组件,它通过过滤其他信息来帮助shape stream只处理相关信息。形状流并不包含来自常规流的特性。相反,它使用GCL来停用自己的激活,这些激活被常规流中包含的高级信息认为是不相关的。这种处理方式可以看作是两个流之间的协作,其中更强大的一个流对场景形成了更高层次的语义理解,帮助另一个流从一开始就只关注相关的部分。这使得形状流能够采用一个有效的浅层架构,以非常高的分辨率处理图像。

首先通过连接r_t和s_t得到一个注意力图α_t∈R^H×W,然后是一个归一化的1×1卷积层C_1×1,再由一个sigmoid函数σ得到:

其中,||表示特征图串联。考虑到注意力图α_t,GCL应用于s_t,作为注意力图α的一个元素的乘积,然后是残差连接和核w_t的通道加权。在每个像素(i,j),GCL计算为:

然后,将sˆt传递到形状流的下一层进行进一步处理。请注意,注意力图的计算和门控卷积都是可分的,因此可以进行端到端的反向传播。

对预测的边界图s使用标准的二元交叉熵(BCE)损失,对预测的语义分割f使用标准交叉熵(CE)损失:

当前SOTA!平台收录 Gated-SCNN 共2个模型实现。

项目 SOTA!平台项目详情页
Gated-SCNN 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/gated-scnn
相关文章
|
存储 编解码 调度
剖析ffmpeg视频解码播放:时间戳的处理
剖析ffmpeg视频解码播放:时间戳的处理
1559 0
|
缓存 NoSQL Java
SpringBoot实现缓存预热的几种常用方案
SpringBoot实现缓存预热的几种常用方案
|
存储 弹性计算 固态存储
VMware虚拟机迁移到阿里云
各种架构的主机资源如何迁移上阿里云?本文以VMware虚拟机迁移到阿里云为例,介绍一些迁移上阿里云的方式。
VMware虚拟机迁移到阿里云
|
开发框架 .NET Java
高校在线心理咨询系统的设计与实现(论文+源码)_kaic
高校在线心理咨询系统的设计与实现(论文+源码)_kaic
高校在线心理咨询系统的设计与实现(论文+源码)_kaic
|
机器学习/深度学习
【从零开始学习深度学习】24.神经网络中池化层的作用:最大池化与平均池化
【从零开始学习深度学习】24.神经网络中池化层的作用:最大池化与平均池化
|
缓存 前端开发 JavaScript
前端开发的必修课:如何让你的网页在弱网环境下依然流畅运行?
【10月更文挑战第30天】随着移动互联网的普及,弱网环境下的网页性能优化变得尤为重要。本文详细介绍了如何通过了解网络状况、优化资源加载、减少HTTP请求、调整弱网参数和代码优化等方法,提升网页在弱网环境下的加载速度和流畅性,从而改善用户体验。
802 4
|
机器学习/深度学习 计算机视觉 异构计算
YOLOv8优改系列一:YOLOv8融合BiFPN网络,实现网络快速涨点
本文介绍了将BiFPN网络应用于YOLOv8以增强网络性能的方法。通过双向跨尺度连接和加权特征融合,BiFPN能有效捕获多尺度特征,提高目标检测效果。文章还提供了详细的代码修改步骤,包括修改配置文件、创建模块文件、修改训练代码等,以实现YOLOv8与BiFPN的融合。
2533 0
YOLOv8优改系列一:YOLOv8融合BiFPN网络,实现网络快速涨点
|
10月前
|
JavaScript UED 开发者
《ArkTS开发必学:打造丝滑交互的融合技巧》
ArkTS是一种基于声明式UI开发范式的现代应用开发语言,通过简洁直观的代码构建用户界面。其核心在于将事件驱动逻辑与声明式UI无缝融合,从而提升应用交互性和用户体验。开发者可通过绑定事件处理函数实现用户操作响应,利用状态管理机制确保数据更新时UI自动同步,并结合动画效果优化交互体验。此外,合理管理事件流和响应式编程特性,可进一步增强应用的流畅性和功能性。掌握这些关键要点,能充分释放ArkTS潜力,打造高质量应用。
212 0
|
机器学习/深度学习 编解码 计算机视觉
深度学习笔记(十一):各种特征金字塔合集
这篇文章详细介绍了特征金字塔网络(FPN)及其变体PAN和BiFPN在深度学习目标检测中的应用,包括它们的结构、特点和代码实现。
2308 0
|
缓存 弹性计算 运维
网络管理利器:掌握常用的CMD命令
本文介绍了常用的网络CMD命令及其用法,包括`ping`、`ipconfig`、`tracert`、`nslookup`、`netstat`、`route`、`telnet`、`ftp`、`netsh`、`arp`、`nbtstat`、`hostname`、`systeminfo`、`ipconfig /flushdns`和`tasklist`。这些命令在日常的网络管理和故障排查中非常实用,帮助你轻松进行网络诊断、配置和监控。
1186 1

热门文章

最新文章