当前位置:网站首页 > R语言数据分析 > 正文

ResNET50和unet(resnet50和unet结合代码)



在医学图像分割领域中,CNN是主流,其中UNet十分常用。尽管基于CNN的方法有优秀的表征能力,对局部信息有很好的效果,但是其固有的局限性导致UNet在长距离上下文上的表现不佳

现在出现了使用Transformer进行分割,Transformer在全局上下文方面表现优异,但纯Transformer会丢失许多低级细节(例如形状与边界)

因此,本文提出将Transformer与CNN进行混合,并结合UNet的U型结构。结合二者的优点,让网络既可以获得低级特征,又可以获得全局上下文。

TransUNet具有强大的学习高级语义特征和低级细节的能力

经过Patch Embedding与Transformer,得到的数据格式为,要将其变为,这里直接使用1x1的卷积改变通道数,然后直接使用双线性插值来进行上采样恢复尺寸。

这种做法的效果一般,在实验部分会有讲解。

网络结构如图所示
在这里插入图片描述
这里使用了CNN-Transformer的混合结构作为编码器与级联上采样器(cascaded upsampler ,CUP)来精确定位

CNN-Transformer的混合结构

不再使用纯Transformer作为编码器,而使用CNN-Transformer的混合结构作为编码器,其中CNN作为特征提取器,提取原图中的feature map。Patch Embedding的输入变为了CNN提取的feature map,而不是原图,patch的大小也变为了1x1。

这样设计的原因:1)可以在解码过程中使用CNN中间高分辨率的feature map,也就是可以跳层连接;2)混合结构的性能更好。

在代码中,作者使用了预训练的ResNet50V2作为特征提取器,而且将conv4_x与conv5_x融合为一层相当于conv4_x变为9个叠加,输出通道数为1024,尺寸为14x14。
其中跳层使用的卷积层为conv1/conv2_x/conv3_x这三层。
在这里插入图片描述
在这里插入图片描述

级联上采样器 CUP

模仿UNet的网络结构,进行逐层上采样与跳层连接。其中跳层连接时与编码器的CNN特征提取器进行连接。

在进行上采样之前,还需要对Transformer输出的数据的尺寸进行调整。通过reshape与一个1x1的卷积将尺寸调整为(512,H/16,W/16),方便后面上采样。
在这里插入图片描述
然后级联多个上采样模块来将数据恢复为(H,W),每个上采样模块依次由2x上采样模块、3x3卷积层与ReLU激活函数构成。其中上采样模块不会改变数据的通道数的。

而跳层连接中,使用了ResNet50V2中的conv1/conv2_x/conv3_x这三层输出的特征图来与上采样器中对应的层进行特征聚合,这样就可以包含CNN中间高分辨率的特征图,来实现精确定位,因为CNN会包含低级信息(细节)
在这里插入图片描述
最后使用分割头将通道数变为num_classes,得到结果。

在这里插入图片描述
DSC:Dice
hausdorff distance(HD):豪斯多夫距离

表格中不同数据之间的对比,证明了不同设计的优越性:

  1. ViT-Non与ViT-CUP对比:证明了CUP设计比直接上采样效果更好
  2. R50-ViT-CUP与ViT-CUP对比:证明CNN-Transformer混合结构比单纯的Transformer效果更好
  3. TransUNet与R50-ViT-CUP对比:证明跳层连接对性能是有提升的

跳层连接的数量

测试不同数量的跳层连接对性能的影响,个数分别有0/1/3个,其中1个是只使用1/4的跳层连接。

下图是不同数量的跳过连接下DSC的数值,可以看到基本上3个跳过连接是更优秀的。
在这里插入图片描述
论文中还提及了一种改进的方法,就是在跳过连接中加入Transformer,也就是将CNN的数据先经过一个Transformer再继续连接,作者实验在1/8的连接中加入一个轻量的Transformer,结果DSC提升了1.4%。不过作者的代码中没有这部分。
在这里插入图片描述

输入图像的分辨率

结果如图所示,增加了图像分辨率后,DSC提高了6.88%。但作者也说了,代价是计算成本大很多,因此实验还是使用224x224的分辨率
在这里插入图片描述

Patch 大小

研究Patch Size对性能的影响,Sequence Length是Transformer序列长度,也就是patch的个数。Patch Size 与 Sequence Length 是成反比的

可以看到Patch Size越小,Sequence Length越大,性能越好,这是因为Transformer为更长的序列构建更加复杂的依赖关系
在这里插入图片描述

模型的规模

也就是Transformer的尺寸,有Base与Large两种:

  • Base:embed dim=768,层数=12,MLP大小=3072,num_head=12
  • Large:embed dim=1024,层数=24,MLP大小=4096,num_head=16

可以看到Large的性能更好。而作者考虑到计算成本,实验还是使用Base
在这里插入图片描述

可视化

在这里插入图片描述
分析图像可知,TransUNet的误检与错检的更少,而且预测的边缘更加准确。

这些观察结果也表明了TransUNet同时具有高级上下文与低级细节的优势。

到此这篇ResNET50和unet(resnet50和unet结合代码)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 一级word一级二级三级标题是什么意思二级word一级二级三级标题是什么意思三级word一级二级三级标题是什么意思是什么意思(一级word一级二级三级标题是什么意思二级word一级二级三级标题是什么意思三级word一级二级三级标题是什么意思是什么意思word)2025-02-07 07:54:10
  • qpainter画圆角矩形(qpainter绘制圆)2025-02-07 07:54:10
  • cruise软件(cruise软件官方下载)2025-02-07 07:54:10
  • air play是啥(airplay是干嘛的)2025-02-07 07:54:10
  • convlstm怎么读(contrpl怎么读)2025-02-07 07:54:10
  • ifstream读取文件(ifstream读取文件夹文件名)2025-02-07 07:54:10
  • 网格布局gridlayout(网格布局gridlayout指定网格列数的属性名称)2025-02-07 07:54:10
  • mha是什么意思的缩写民航(航空mmr是什么意思)2025-02-07 07:54:10
  • gmarket中文版下载(gmarket安卓下载)2025-02-07 07:54:10
  • hrnetone(hrnetone百度百科)2025-02-07 07:54:10
  • 全屏图片