一种基于transformer架构的图像语义分割方法
技术领域
1.本发明属于医学图像分割技术领域,具体涉及一种基于transformer架构的图像语义分割方法。
背景技术:
2.语义分割是像素级的图像理解,即对图像中的每一个像素标注所属的类别,任务是将图像分割成若干个有意义的目标,并为各个目标分配指定类型标签。语义分割对图像中的每一个像素标注所属的类别,是计算机视觉领域中场景解析和行为识别的关键任务。因此,得到一个实用性好、准确率高的图像语义分割模型是非常具有挑战性的工作。
3.与分类不同的是,语义分割需要判断图像每个像素点的类别,进行精确分割。由于cnn在进行convolution和pooling过程中丢失了图像细节,即feature map size逐渐变小,所以不能很好地指出物体的具体轮廓、指出每个像素具体属于哪个物体,无法做到精确的分割。针对此问题,fcn采用反卷积对最后一个卷积层的feature map进行上采样,使其恢复到输入图像相同的尺寸,从而对每个像素都产生了预测,即对图像进行像素级的分类。但fcn由于没有充分考虑像素与像素之间的空间关系,得到的结果仍不够精细。对此,unet采用“编码器-解码器”结构,在上采样的过程中通过特征的拼接实现对下采样时损失的边缘特征的找回。unet凭借其优雅的结构设计,在各种医学影像应用中取得了巨大的成功。按照这一技术路线,已经开发了许多算法,如res-unet、unet 和unet3 ,用于各种医学成像方式的图像和物体分割。这些方法在心脏分割、器官分割和病变分割中的出色表现证明了cnn具有较强的识别特征学习能力。unet 模型针对unet模型层次信息跨度太大的问题,设计了一个具有嵌套和密集跳跃连接的体系结构,旨在减少编码器和解码器之间的语义差距,使得特征融合更充分、拼接更全面。
4.另一方面,自然语言处理(nlp)中的网络架构的演化已经走上了不同的道路,目前流行的架构是transformer。transformer是为序列建模和转换任务而设计的,它的显著之处在于对数据中的远程依赖性进行建模。它在语言领域的巨大成功促使研究人员对其在计算机视觉中的适应性进行了研究,最近在某些任务中,特别是图像分类和联合视觉语言建模显示出了良好的结果。
技术实现要素:
5.本发明要解决的技术问题是,提供一种带有移动窗口的分层swin transformer编码器来提取图像上下文特征的方法。首先图像块被输入到基于transformer的编码器-解码器架构中,其中移动窗口机制的设计使得特征包含信息更全面。而unet 模型中嵌套和密集的跳跃连接能够充分提取上下文特征,使得特征融合更充分。
6.swin-unet 是一种基于unet 的用于医学图像分割的框架方法。在本文中试图扩展transformer的适用性,使其可以作为计算机视觉的通用主干。而将其在语言领域的高表现转移到视觉领域的重大挑战可以用两种模式之间的差异来解释,其中一个区别就是规
模。为减少序列的长度,将图像划分为窗口以应对同一张图像里物体尺寸不同带来的挑战。本发明应用了一个通用的transformer骨干,称为swin transformer,它构造层次特征映射,并具有与图像大小线性的计算复杂度。swin transformer通过从小的图像块开始,并逐渐在较深的transformer层中合并相邻的patch来构造层次化表示。通过这些分层特征映射,swin transformer可以方便地基于unet等模型进行密集预测。使用带有移动窗口机制的swin transformer,在图像的非重叠窗口内局部计算自注意力,更好地捕获图像中上下文语义信息,并且每个窗口中的patch数量是固定的,因此复杂度与图像大小成线性关系。这些优点使swin transformer适合作为各种视觉任务的通用主干。
7.本发明的可行性分析:常用的卷积可以通过局部感知进行特征提取,通过不同大小的卷积核提取多尺度特征。使用swintransformer则使用局部窗口自注意力机制对图像的子区域划分进行特征提取,具有与图像大小线性的计算复杂度。随着窗口大小的变化,在局部小窗口内计算自注意力以构造层次特征映射;加之移动窗口机制,具体来说,它在连续的自我注意层之间移动窗口分区,使得不同窗口的像素之间也能交互信息,从而更好地理解上下文,显著地增强了建模能力,实现全局建模。与此同时,在构造swintransformer总体结构时,在每个阶段进行特征融合可以实现和unet在下采样过程中一样的层次特征变化。
8.基于以上分析,本发明采用以下技术方案:受swin transformer的启发,swin-unet 方法在这项工作中利用transformer进行2d医学图像分割。swin-unet是第一个纯粹基于transformer的u型架构,它由编码器、瓶颈、解码器和跳跃连接组成。编码器、瓶颈和解码器都是基于swin transformer模块构建的。将输入的医学图像分割为不重叠的图像块,每个图像块被视为一个单元,并输入到基于transformer的编码器学习深度特征表示。然后利用带patch扩展层的解码器对提取的上下文特征进行上采样,在上采样过程中通过跳跃连接与编码器的多尺度特征进行融合,恢复特征图的空间分辨率,进一步进行分割预测。在多器官和心脏分割数据集上的大量实验表明,该方法具有良好的分割精度和鲁棒的泛化能力。在此思路的基础上,将swin transformer模块应用于unet 模型,该方法相比于swin-unet,梯度下降更快且精度更高。
9.参照图1swin-unet 包括以下步骤:
10.该网络由预处理模块、swin-unet 模块以及恢复模块组成。
11.步骤1、预处理模块主要包括patch partition和linear embedding。
12.将初始输入的图像缩放,调整后的图像尺寸记为w
×
h,其中w表示图像的宽,h表示图像的高,w
×
h描述图像的分辨率,即像素点的个数。接着对输入图像进行数据增强,以增加数据多样性。patch partition的主要作用是将图像的尺寸压缩。linear embedding则利用线性嵌入层将投影的特征维转化为任意维c。
13.步骤2、swin-unet 模块的输入数据是步骤1输出的特征图。主要通过多个下采样过程对图像特征进行提取,在上采样过程中借助密集的跳跃连接对多个层次的特征进行充分融合。
14.采用unet 结构与transformer结合的方法,可充分发挥两者的优势。使用swintransformer块进行特征的学习,使用patch合并层和swin transformer块完成下采样,使用patch扩展层和swin transformer块完成上采样。下采样过程中,通过多个swin transformer块和patch合并层(patch merging),生成分层特征表示。上采样过程则包括多
个swintransformer块和patch扩展层(patch expanding)。同时通过跳跃连接将提取的上下文特征与编码器的多尺度特征融合,以弥补下采样造成的空间信息损失。
15.步骤3、恢复模块对swin-unet 模块输出的特征图进行像素级的预测。其包括最后一层patch扩展层和线性投影,最终得到标记后的图像输出。利用patch扩展层恢复图像特征尺寸,将特征映射的分辨率恢复到输入分辨率w
×
h。然后对这些上采样的特征进行线性投影,映射到特定的维度,从而得到像素级分类预测的结果。
16.与现有技术相比,本方法具有以下明显优势:
17.(1)基于swintransformer块,构建了一个具有密集跳跃连接的对称编码器-解码器体系结构。在编码器中实现了各个层次的特征提取;在解码器中,将特征上采样到输入分辨率,进行相应像素级的分割预测。
18.(2)在不使用卷积和插值运算的情况下,开发了patch扩展层,实现上采样。
19.(3)实验发现跳跃连接对transformer也是有效的,因此最终构造了一个基于transformer的具有嵌套和密集跳跃连接的u型编码器-解码器架构,命名为swin-unet 。在unet 嵌套的特征拼接结构下,局部自注意力移动窗口机制能够更好地提取上下文特征,实现全局建模。
附图说明
20.图1为本方法的总体流程图;
21.图2为原unet 的结构图;
22.图3为swin-unet 的结构图;
23.图4为编码器主体单元的特征维度变化示意图;
24.图5为swintransformer block模块的结构图。
具体实施方式
25.以下结合具体实施例,并参照附图,对本方法进一步详细说明。
26.所用到的硬件设备有pc机1台;辅助工具有:pycharm。
27.步骤1、参照图1,预处理模块主要包括patch partition和linear embedding。
28.预处理模块的结构依次为:图像预处理
→
patch partition层
→
linear embedding层
→
输出特征图。
29.步骤1.1图像预处理
30.该预处理模块的输入为原始图像,将其缩放为w
×
h。其中h表示图像的高,w表示图像的宽。此外,为避免样本量小造成过拟合,使用数据增强对数据进行扩充,具体来说,以一定的概率随机地对图像翻转和旋转。
31.随机翻转的具体步骤包括:
32.1.首先将图像随机旋转90度或180度或270度;
33.2.对旋转后的图像随机进行上下翻转或左右翻转。其中上下翻转把图像数组的行看成整体,将行的顺序发生颠倒;左右翻转,则把图像数组的列看成整体,将列的顺序发生颠倒,从而对数据进行扩充。
34.随机旋转:在-20度和 20度之间随机选择一个角度进行图像旋转。
35.步骤1.2图像的划分
36.为了将输入信息转化为序列嵌入,patch partition层主要作用为将经预处理的图像进行尺寸压缩,从而减小序列的长度。将医学图像的像素点划分成大小为n
×
n、互不重叠的patch。通过这种划分方法,每个patch窗口被视为一个“令牌”,其特征被设置为原始像素rgb值的拼接,即为3,因此每个patch的特征维数变为n
×n×
3。具体实施中,n设为4,patchpartition为卷积运算,卷积核大小为4
×
4,卷积步长为4。
37.步骤1.3 linear embedding层
38.利用线性嵌入层进行特征映射,将投影的特征维转化为任意维c,从而得到特征图。
39.步骤2、swin-unet 模块通过多个下采样过程和上采样过程对图像特征进行提取并对多个层次的特征进行融合。该模块的输入数据是步骤1输出的特征图,大小为w/4
×
h/4
×
c;该模块的输出是提取后的特征图,大小为w/4
×
h/4
×
c。
40.该模块基于unet 模型对图像进行逐层次的特征融合。unet 由编码器和解码器组成,它们通过一系列嵌套的密集卷积块连接。unet 的主要思想是在特征融合之前弥合编码器和解码器的特征映射之间的语义鸿沟。参照图2,我们用x
i,j
表示卷积层x
i,j
的输出,其中i索引编码器中的下采样层,j沿跳跃路径索引密集块的卷积层。在每个跳跃路径上的卷积层之前对特征进行拼接,使得所有的先验特征图都累积集成到当前节点。
41.在此基础上,swin-unet 中的编码器主要用来提取各个层次的特征。编码器由swinblock层和patch合并层交替相连。参照图4,编码器的输入数据是步骤1输出的特征图w/4
×
h/4
×
c;编码器的输出是提取的特征图w/32
×
h/32
×
8c。
42.编码器结构依次为:输入数据
→
第一个swin block层
→
patch合并层
→
第二个swin block层
→
patch合并层
→
第三个swin block层
→
patch合并层
→
瓶颈层
43.其中,swin block层由单个swin transformer模块连接构成。patch合并层在patch的行和列方向上间隔一定距离选取元素,将各个部分拼接在一起作为一个张量,最后展开,此时通过通道归一化和全连接层调整通道维数。通过这种处理,减少特征分辨率并增加特征的维数,从而实现降采样。编码器中的最后一个patch合并层与瓶颈层中的第一个swin transformer block相连。瓶颈层由2个swin transformer block依次连接组成,瓶颈层的两个swin transformer block分别利用通道归一化操作和全连接层连接编码器中最后一个patch合并层的输出和上采样阶段最底层patch扩展层的输入。即上采样阶段最底层的patch扩展层与瓶颈层中的第二个swin transformer block连接。
44.在编码器的基础上,经过逐层次的上采样和特征融合充分理解图像的上下文信息。特征融合由多个跳跃连接和patch扩展层实现。通过跳跃连接将同一密集块上一个swin block层的输出与下一个密集块对应的上采样输出融合在一起;patch扩展层首先通过一个全连接层扩展通道数,利用rearrange operation将相邻维度的特征图重组成更大的特征图,通过这种处理增加特征分辨率并减少特征的维数,再进行layernorm通道归一化处理,从而实现上采样。
45.用b
i,j
表示经swinblock层b
i,j
进行特征学习的输出,其中i索引编码器的下采样层,j沿跳跃路径索引swinblock层,设置每个swin block层中包含两个swin transformer block。按照图3中swin-unet 架构进行特征融合的步骤如下:
46.1.将b
0,0
与b
1,0
对应的上采样输出融合,得到b
0,1
;
47.2.在1之后,将b
1,0
和b
2,0
对应的上采样输出融合得到b
1,1
。b
1,1
的上采样输出与b
0,0
、b
0,1
通过跳跃连接融合得到b
0,2
;
48.3.同理,经过逐层次的上采样和特征融合,可以依次得到b
2,1
、b
1,2
,最终得到b
0,3
。b
0,3
为b
1,2
的上采样输出和b
0,0
、b
0,1
、b
0,2
融合所得。
49.swin transformerblock负责特征表示学习,特征维数和分辨率保持不变。为避免全局自注意力计算导致的复杂度过大的问题,将图像划分为不重叠的窗口。具体来说,为了高效建模,在局部窗口内计算自注意。为了引入跨窗口连接,同时保持非重叠窗口的高效计算,提出了一种移位窗口分区方法,在连续swin transformer块中交替进行规则窗口划分和移动窗口划分,从而实现不同分区间空间信息的交互。
50.w-msa子模块(窗口多头自注意力层)主要采用规则窗口划分策略,从左上角像素开始,将特征映射均匀划分为窗口,每个窗口包含一定的patch。通过在子空间中计算注意力向量来捕获特征在不同子空间的依赖关系,即分别在所有子空间上做点乘运算计算注意力向量,最后把所有子空间计算得到的注意力向量拼接起来,并映射到原输入空间中得到最终的注意力向量作为输出,从而更好地获取局部、全局的语义信息。
51.sw-msa子模块(移位窗口多头自注意力层)则在图像特征输入之前,将图像特征进行尺寸为半个窗口大小的像素位移操作,然后再进行w-msa子模块操作。窗口分区被移动,产生新的窗口分区,引入了相邻的非重叠窗口之间的连接,即新窗口的自注意计算跨越了先前窗口划分的边界,提供了它们之间的联系。
52.参照图5,单个swintransformerblock的结构依次为:特征图输入数据
→
ln正则化层
→
w-msa子模块或者sw-msa子模块
→
残差连接层
→
ln正则化层
→
前馈网络mlp
→
残差连接层
→
输出的特征图。该swintransformerblock的结构共循环2次,奇数层与偶数层依次间隔连接,其中奇数层采用的是w-msa子模块,偶数层采用的是sw-msa子模块。
53.使用移位窗口分区方法,连续的swintransformerblock计算为:
[0054][0055][0056][0057][0058]
其中z
l-1
表示swin transformer块的输入特征,和z
l
分别表示第l个swin transformer块中w-msa模块和mlp模块的输出特征;和z
l 1
则分别表示第l 1块swin transformer中sw-msa模块和mlp模块的输出特征。w-msa和sw-msa分别使用规则和移位窗口分区在每个窗口中计算自注意力:先将查询向量q和键向量k点乘,再除以键向量k的维度的平方根,得到查询向量q的分数矩阵,并加上相对位置偏差,最后通过softmax函数将分数矩阵归一化得到权重矩阵,再乘以值向量v即得到一个子空间的注意力向量。
[0059][0060]
其中q,k,v分别表示查询矩阵、键矩阵和值矩阵,d表示矩阵的维度。在计算相似性
时,引入相对位置偏差,b表示偏置矩阵,softmax为激活函数。具体来说,在经过一层layernorm正则化后,w-msa中首先利用一层全连接层得到q、k、v三个矩阵,基于上式计算自注意力后进行dropout,然后将得到的输出与z
l-1
进行残差连接得到进行残差连接得到在依次经过ln层和mlp层后进行dropout,然后与进行残差连接得到z
l
。z
l
在经过一层layernorm正则化后,通过sw-msa将图像特征图进行尺寸为半个窗口大小的移位,对其各循环上移和循环左移半个窗口大小,再按照w-msa划分窗口,并在运行结束后将得到的特征图循环下移和循环右移半个窗口的大小,复原回原来的位置。基于上式计算自注意力后进行dropout,然后与z
l
进行残差连接,得到差连接,得到在依次经过ln层和mlp层后进行dropout,然后与进行残差连接得到z
l 1
。而ln正则化层的主要作用是进行ln正则化处理,对输入数据进行归一化处理,将其归到0到1之间,从而保证数据分布是一样的。残差连接层主要作用是进行残差连接,将输入与输出直接进行相加,补充卷积过程中损失的特征信息,以防止过拟合、提升模型表现,并克服网络退化问题。mlp层由2个全连接层组成,输入特征经过一个全连接层得到中间特征,其维度设为输入特征维数的4倍,然后经过激活函数gelu,再经过一个全连接层得到输出特征。
[0061]
步骤3、恢复模块主要作用为恢复图像尺寸并得到像素级的预测结果。
[0062]
参照图1,恢复模块的结构依次为:swin-unet 模块输出的特征图
→
patch扩展层
→
linear projection层
→
输出图像像素级预测结果
[0063]
步骤3.1利用最后一层patch扩展层对特征图进行上采样,将swin-unet 模块输出的特征图的分辨率恢复到输入分辨率w
×
h。这一patch扩展层首先通过一个全连接层扩展通道数,此处设置输出张量的维度为输入的16倍,并利用rearrange operation将相邻维度的特征图重组成更大的特征图,再进行layernorm通道归一化处理实现上采样。
[0064]
步骤3.2对这些上采样的特征进行线性投影,输出像素级的分割预测结果w
×h×
class,其中class为像素级分类的类别数,h表示图像的高,w表示图像的宽。
[0065]
自此,完成将图像输入到定义好的swin-unet 网络并得到像素级的预测结果,根据真实标签与预测结果计算dsc(dice相似系数);记录该方法在分割图像各个子类的dsc参数和分割图像整体的dsc参数,以评估分割的准确率。其中dsc(dice相似系数)用于度量两个集合的相似度,取值范围为[0,1],值越大,表示两个集合越相似。
[0066]
以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。
再多了解一些
本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。