实验课任务,简单走了一遍流程,进行记录。

  • 论文
    UNet: https://arxiv.org/abs/1505.04597
    Transformer:https://arxiv.org/abs/1706.03762v5
    TransUNet:https://arxiv.org/abs/2102.04306.

  • 研究背景
    \quad众所周知UNet基本是医学图像分割的魔改基础配方。由于卷积网络的内在局部性,卷积网络在远程关系显式建模上存在限制{感觉意思是一张输入图片左上角和右下角信息很难直接卷在一起},因而在不同病例数据纹理形状大小相对差别较大时效果欠佳。
    \quadTransformer的结构针对序列处理设计,能一定程度上解决此问题。文章作者将Transformer应用于医学分割问题,结果也不令人满意。大概是因为Transformer将输入数据作为一维序列处理,失去了大量位置信息所致。

  • UNet【1】
    其结构如图所示:

    核心思想为结合浅层特征与深层特征,共进行四次下采样与四次上采样。观察网络结构图,每层上采样结果都与裁剪后的对应浅层信息拼接起来,再通过卷积后输入下次上采样。

  • Transformer【2】
    网络结构如下,总之是一个全方位用注意力模块替代卷积模块的网络。具体原理见【2】,在此不赘述了。

  • TransUNet【3】
    故名思意,二者的结合版本,其网络结构如下:

    简而言之,应当是把UNet编码器的一部分替换为了Transformer的注意力格式,其中选择了CNN-Transformer组合结构,这样不仅效果更好,也便于利用早期特征。另外将图片打包成小patch之后embeding位置这步是在CNN提取的特征图上做的,不是在原始输入上做的,总的来讲是个比较简单的部分替换式改进。
    不同算法实验对比结果如下:

  • 代码实操
    数据集的预处理分为四步:转为numpy格式,在窗[-125,275]内剪切图片,归一化数据至[0,1],从三维数据中提取二维切片。但实际上只用了一步:首先通过邮件询问作者,获得了预处理后的数据集,搭建环境跑完模型之后发现,笑死,根本不会读数据,所以先去学习一下医学图像数据的构成。

  • CT数据【4】
    \quad本文选用的数据为 MICCAI 2015 多图谱腹部分割挑战赛中的30例扫描图像,具体效果如上,这个CT比想象的腹部要圆一点,左右方向也有点反直觉,又有点不反直觉。
    \quadCT,其全称是Computed Tomography,即计算断层成像。 其检测机器是一个旋转的圆筒形,人躺在里面,机器旋转,获得立体图像。具体原理见参考【4】。在这里进行原理了解主要是因为,不清楚数据结构那147通道是哪来的(狒狒挠头.jpg)。这里需要注意的是,CT图像的信息非常多,采样很密,可能有多达两千的CT值数,如果单纯压到0-256会造成很大损失,因此通常会按照特定“窗位,窗宽”输出结果,窗宽指的是CT值上下限的差值,窗位指的是中心灰度对应的CT值。
    \quad

  • .npz数据【5】
    训练中使用的数据,为切片后的结果,npz大概具体为npy文件的压缩版本,其可通过以下代码进行显示:

path="E:/fenge\TransUNet-main\project_TransUNet\project_TransUNet\data\Synapse/train_npz/case0005_slice050.npz"
data=np.load(path)
x_train=data["image"]*255
la_train=data["label"]*255
plt.subplot(121)
plt.imshow(x_train)
plt.subplot(122)
plt.imshow(la_train)
plt.show()


经过显示观察,数据的多通道代表的应当是三维z坐标,在头尾上没有脏器,标签就是一片黑暗的。

  • .h5数据【6】
    测试使用的完整数据,h5具体为层级结构,可通过以下代码进行显示:
import h5py
import matplotlib.pyplot as plt
import numpy as np
with h5py.File('E:/fenge\TransUNet-main\project_TransUNet\project_TransUNet\data\Synapse/test_vol_h5/case0001.npy.h5',"r") as f:for key in f.keys():#print(f[key], key, f[key].name, f[key].value) # 因为这里有group对象它是没有value属性的,故会异常。另外字符串读出来是字节流,需要解码成字符串。print(f[key], key, f[key].name) # f[key] means a dataset or a group object. f[key].value visits dataset' value,except group object.f=h5py.File('E:/fenge\TransUNet-main\project_TransUNet\project_TransUNet\data\Synapse/test_vol_h5/case0001.npy.h5',"r")
imagedata=f['image']
labeldata=f['label']
i=100
imgsel=np.array(imagedata)[i,:,:]
labelsel=np.array(labeldata)[i,:,:]
plt.subplot(121)
plt.imshow(imgsel)
plt.subplot(122)
plt.imshow(labelsel)
plt.show()


依据以上代码测试,数据结构就很清晰明了了。

  • 评价指标
    Mean_Dice,具体公式为2*交集/并集,详细描述见【7】
  • 测试与可视化
    通过将 is_savenii手动置1保存了测试的结果图,下载了软件ITK-SNAP进行可视化[不过这个软件不能读h5和.npz文件],效果如下:

参考

【1】https://zhuanlan.zhihu.com/p/57859749
【2】https://zhuanlan.zhihu.com/p/44121378
【3】https://blog.csdn.net/weixin_40096160/article/details/114194562
【4】https://zhuanlan.zhihu.com/p/90571757
【5】https://blog.csdn.net/xiongchengluo1129/article/details/83051390
【6】https://zhuanlan.zhihu.com/p/361565432
【7】https://blog.csdn.net/qq_36201400/article/details/109180060
【8】https://blog.csdn.net/qq_33254870/article/details/100125788

TransUNet阅读笔记与训练尝试相关推荐

  1. 对抗训练-smart 论文阅读笔记

    对抗训练-smart 论文阅读笔记 SMART: Robust and Efficient Fine-Tuning for Pre-trained NaturalLanguage Models thr ...

  2. 菜鸟笔记-DuReader阅读理解基线模型代码阅读笔记(八)—— 模型训练-训练

    系列目录: 菜鸟笔记-DuReader阅读理解基线模型代码阅读笔记(一)--数据 菜鸟笔记-DuReader阅读理解基线模型代码阅读笔记(二)-- 介绍及分词 菜鸟笔记-DuReader阅读理解基线模 ...

  3. 论文阅读笔记:为什么深度神经网络的训练无论多少次迭代永远有效?可能类内分布已经坍缩为一个点,模型已经崩溃为线性分类器

    论文阅读笔记:Prevalence of neural collapse during the terminalphase of deep learning training,深度学习训练末期普遍的神 ...

  4. T5: Text-to-Text Transfer Transformer 阅读笔记

    作者:徐啸 知乎专栏:自然语言处理学习之旅 https://zhuanlan.zhihu.com/p/89719631 写在前面 谷歌用一篇诚意满满(财大气粗)的基于实验的综述,试图帮助研究者们「拨开 ...

  5. 深度学习超分辨率综述阅读笔记(翻译)

    深度学习超分辨率综述阅读笔记(翻译) https://arxiv.org/abs/1902.06068 摘要:图像超分辨率(SR)是计算机视觉中增强图像和视频分辨率的一类重要图像处理技术.近几年来,图 ...

  6. 西瓜书第三章阅读笔记

    西瓜书第三章阅读笔记 第三章 线性模型 1.机器学习三要素 2.基本形式 3.线性回归 3.1 模型 3.2 策略 3.3 求解算法 4.对数几率回归 4.1 模型 4.2 策略 4.3 求解算法 5 ...

  7. CYCADA: cycle-consistent adversaial domain adaption阅读笔记

    CYCADA: cycle-consistent adversaial domain adaption阅读笔记 目录 CYCADA: cycle-consistent adversaial domai ...

  8. 《Deep Learning for Computer Vision withPython》阅读笔记-PractitionerBundle(第9 - 11章)

    9.使用HDF5和大数据集 到目前为止,在本书中,我们只使用了能够装入机器主存储器的数据集.对于小数据集来说,这是一个合理的假设--我们只需加载每一个单独的图像,对其进行预处理,并允许其通过我们的网络 ...

  9. 强化学习相关论文阅读笔记之稀疏奖励解决方法

    注:该系列文章为强化学习相关论文的阅读笔记,欢迎指正! 论文题目:<深度强化学习中稀疏奖励问题研究综述> 文章目录 1. 论文介绍 2. 论文结构 3. 研究背景 3.1 解决稀疏奖励的必 ...

最新文章

  1. 登录DMOZ/如何登录DMOZ分类目录
  2. 体系结构方案 -BI 系统的前置计算
  3. ListView、AdapterView、RecyclerView全面解析
  4. 旅游景点人物进出系统[OC项目]
  5. 中使用swiper不能自动切换_液晶拼接墙显示系统中矩阵切换器使用的注意事项
  6. Java语言实现hello world代码
  7. login.html错误,创建好login.html文件后,在git bash执行webpack出现错误
  8. spark structured stream的Update模式
  9. Asp.net MVC3.0 入门指南 4 模型 Model
  10. MPC5744P-时钟模块
  11. Netapp存储模拟器一战成功
  12. SpringBoot 整合 kaptcha + redis 实现 图形验证码登录
  13. 栈(Stack)——后进先出(LIFO)的数据结构(Data Structures)
  14. Win7旗舰版无法安装ie10和ie11(提示:操作系统不受支持)
  15. MarkdownPad2 插入数学公式Mathjax
  16. 机器学习之感知机python实现
  17. 【实用软件】二维码批量解析软件v1.0
  18. APK保护技术——保护应用、游戏APP不被破解
  19. Edge检查更新时出错:无法连接到Internet。如果使用防火墙,请将 MicrosoftEdgeUpdate.exe 加入允许列表中。...
  20. html5静止手机旋转

热门文章

  1. freetype 使用小结
  2. 关于python程序格式框架以下选项中描述错误的是_关于Python程序格式框架的描述,以下选项中错误的是...
  3. 区块链技术研究热点有哪些
  4. CAD标注常见问题:为什么CAD软件快速标注后中间有很多0?
  5. 第三章 项目立项管理
  6. 纯C语言实现贪吃蛇游戏(VC6.0)
  7. MD5加密为什么不可逆?
  8. java多线程使用业务场景_Java多线程使用场景
  9. fusionchart 属性说明
  10. 使用Arduino的DIY自平衡机器人