磁共振成像(MRI)影像心脏组织分割

前言

记录一下最近课设做的心脏组织分割的工作。


一、数据集

数据是分为三类(HCM) (DCM) (NOR) 的心脏MRI图像。每类十五组,一组8~10张图片。前两类是患有心脏疾病的,后一类是正常人的心脏。(其实在对心脏分割完后还有一个在分割基础上对三类心脏病分类的任务),但我做的效果实在是太差了,就不记录了。

在这里插入图片描述
原图像


在这里插入图片描述
分割后的图像(中间白色的是左心室(像素为0),白色外面一层是心肌(像素为85)
深灰色是右心室(像素为170),黑色是背景(255) 大概,记不清了)


其实数据是被我们老师处理过的,原数据是一种三维的切片,老师可能从里面挑出了一些图片作为数据。


二、模型

我是采用了一位俄罗斯程序猿写的一个分割的库的unet++模型。(基于pytorch的)

import segmentation_models_pytorch as smp
model = smp.UnetPlusPlus(in_channels=1, #这里因为我们的数据是灰度图,所以是单通道。classes=4,   #输出的分割后的图像像素是四种,0,85,170,255.#其实我感觉这本质上就是一种分类。                   
)

这个库的详情可以看看这个博客。

PyTorch图像分割模型——segmentation_models_pytorch库的使用

虽然讲的不全,但算一个启蒙。

三、数据处理

做了一些深度学习的作业,我觉得都数据的处理算是最有挑战的部分了。因为模型我现在也写不出来自己构建的模型,都是调用一些现成的模型,有些甚至都不明白模型的原理。在用了一些模型后,发现模型之间的区别不是很大,你数据处理的不好,特征不明显,用什么模型效果都不好。所以之后在做完cv方面一些常见的问题后,我也要试着去搭建一些自己的模型。

数据处理的思路:
1、标签的像素只有四种,首先就要将标签对应的四种像素设置成0,1,2,3。还要进行one-hot处理,因为标签有四类,最后模型产生的output格式是(c,4,h,w),不进行one-hot的话,标签是(c,1,h,w)这样无法计算loss。(交叉熵loss除外,因为交叉熵loss可以自动将标签转成one-hot形式的)
2、对于图片的话,他的像素分布是从0~255的,没有固定的几种。处理的话看下面。

self.image_transform = transforms.Compose([transforms.CenterCrop(image_size),#中心裁剪,因为要分割的心脏大部分在中心位置。transforms.PILToTensor(),#将PIL数据转化为tensor类型,不要用transforms.ToTensor(),#因为这会将0~255的数值映射到0~1,虽然我不知道图片映射到0~1对计算会不会有什么不好的影响。#但是在下面对标签处理时,标签映射到0·1,但我不知道,所以接下来依然是对标签中像素值为#0,85,170,255分别赋值0,1,2,3。但标签中已经没有85,170,255了。所以他们还都是原值。#接下来在训练时,发现训练出来的图片只有两种颜色,不是白就是黑。#不知道是不是这四个像素之间差距过大导致的。毕竟他们很0,1,2,3之间的区别就是他们之间的差距过大。transforms.Lambda(lambda y: y.to(dtype=torch.float32)),#转成flaot32格式的,因为下面计算要这种格式,如果报错了,转成它提示成的格式就行。])
self.label_transform = transforms.Compose([transforms.CenterCrop(image_size),transforms.PILToTensor(),transforms.Lambda(lambda y: y.to(dtype=torch.int64).squeeze())#.squeeze()处理是将多余的维或指定的维度压缩掉,正常来说这里不需要。#因为标签被PIL读出来是两维的(h,w)不需要这处理。但如果读出来是三维的(h,w,1)就需要压缩了])

对应的图片和数据处理完后就可以分割数据,设置模型参数进行训练了。
还有一个地方就是图片从模型出来是4通道的,我想把它显示出来看看,所以就需要把四通道的原图转回一通道灰度图,再显示。下面就是我写的转换函数。

#将预测后的四通道图片转化为一通道并还原像素 用来显示图片。
def onehot_to_mask(mask):num0 = 0num1 = 0num2 = 0num3 = 0x = np.zeros([mask.shape[0],mask.shape[1]])for i in range (mask.shape[0]):for j in range (mask.shape[1]):if (np.argmax(mask[i][j])==0):x[i][j] = 0num0 = num0 + 1elif (np.argmax(mask[i][j])==1):x[i][j] = 80num1 = num1 + 1elif (np.argmax(mask[i][j])==2):x[i][j] = 170num2 = num2 + 1elif (np.argmax(mask[i][j])==3):x[i][j] = 255num3 = num3 + 1# print("0:{},1:{},2:{},3:{}".format(num0,num1,num2,num3))return x

转回来的图片数据格式是numpy,我使用了plt来显示

	#这里第几个是 先行后列,比如第二行第一列,就是第三个。plt.figure(1)   #设置显示1plt.subplot(121)  #一行两列,第一个plt.imshow(outimage, cmap ='gray')  #传上去plt.subplot(122)  #第二个plt.imshow(target, cmap ='gray')  #传上去plt.show()  #显示

在这里插入图片描述


四、划分数据

MyData = Train_Dataset(data_dir=r"./data")
train_size = int(0.8 * len(MyData))  #8:2划分
test_size = len(MyData) - train_size
train_data, test_data = torch.utils.data.random_split(MyData, [train_size, test_size])
# length 长度
train_data_size = len(train_data)
test_data_size = len(test_data)print("训练数据集的长度为:{}".format(train_data_size))
print("测试数据集的长度为:{}".format(test_data_size))

这里主要就是,torch.utils.data.random_split()划分数据集。


五、评价函数:

我们使用的是macro-f1,我没调用现成的f1,因为不会用。
所以我自己写了一个,但好像不太对,就没贴上来,反正以后不同的任务还要写不同的f1函数。

总结

训练什么的和之前的任务差不多。没什么特点。
奥,感谢fsb同学的铺垫工作。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/24464.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ADNI静息态功能核磁共振成像数据预处理总流程

ADNI静息态功能核磁共振成像数据预处理总流程共如下八步 目录 1. 下载DICOM格式数据 2. DICOM -> NIFTI格式 输出s开头文件 3. 时间层校正Slice Timing 输出as开头文件 4. 头动校正Realignment 输出ras开头文件 5. 归一化Normalize 输出w开头文件 6. 平滑Smooth 输出…

fMRI功能磁共振数据预处理流程图示

功能磁共振数据预处理流程,包括数据格式转换(dicom to nifti)、去除不稳定时间点(remove timepoints)、时间层校正(slice timing)、头动校正(realign/head motion correction&#x…

共振与共振峰

共振出现在结构或材料在一特定频率下发生大幅度自然振动时。这个特定的频率被称为结构的共振频率,通常一个结构有很多个共振频率。 系统受到外界激励产生的响应表现为大幅度的振动,此时外界激励频率与系统的固有振动频率相同或者非常接近。 当结构的阻尼…

事件相关功能磁共振波谱技术(fMRS)

导读 质子磁共振波谱(MRS)是一种非侵入性脑成像技术,用于测量不同神经化学物质的浓度。“单体素”MRS数据通常在几分钟内采集,然后对单个瞬态进行平均,从而测量神经化学物质浓度。然而,这种方法对更快速的神经化学物质的时间动态…

生化实验技术——Fret荧光共振能量转移

Fret荧光共振能量转移 - 蛋白互作-德泰生物http://www.detaibio.com/topics/fret-overview.html 目录 Fret荧光共振能量转移 作用原理 技术难点 应用要求 优缺点 应用 实验流程简述 Fret荧光共振能量转移 对于分子生物学来讲,生物分析手段的发展&#xff0c…

语音信号处理共振峰

窄带语谱图和宽带语谱图 首先,什么是语谱图。最通常的,就是语音短时傅里叶变换的幅度画出的2D图。之所以是通常的,是因为可以不是傅里叶变换。“窄带”,顾名思义,带宽小,则时宽大,则短时窗长&am…

程序员表白网页特效

共五个特效 访问博客免费下载访问博客 全部代码下载 代码下载 第一个特效 第二个特效 第三个特效 第四个特效,可以点击愿意不愿意,然后后面还有多个页面 第五个特效

CSS常用特效

本文是笔者写CSS时常用的套路。不论效果再怎么华丽,万变不离其宗。 1、交错动画 有时候,我们需要给多个元素添加同一个动画,播放后,不难发现它们会一起运动,一起结束,这样就会显得很平淡无奇。那么如何将动…

Unity的一些特效和粒子特效插件

Unity的插件 Kitchen Cooking FX 厨房烹饪效果和声音Ultimate VFX 终极粒子特效资源包Advanced Dissolve高级溶解插件Translucent Image 半透明高斯模糊Teleport Effect 传送光圈特效AraTrail 拖尾SVG Importer矢量图导入插件FX Magic Circle 魔法圈特效Highlight Plus 外发光 …

html鼠标爱心特效代码,鼠标点击爱心特效代码分享

鼠标点击爱心特效代码分享 !function(e, t, a) { function r() { for (var e 0; e < s.length; e) s[e].alpha < 0 ? (t.body.removeChild(s[e].el), s.splice(e, 1)) : (s[e].y--, s[e].scale .004, s[e].alpha - .013, s[e].el.style.cssText "left:" s…

两行Python代码实现视频负片特效

☞ ░ 老猿Python博文目录&#xff1a;https://blog.csdn.net/LaoYuanPython ░ 一、引言 最近看到好几篇类似“n行Python代码…”的博文&#xff0c;看起来还挺不错&#xff0c;简洁、实用&#xff0c;传播了知识、带来了阅读量&#xff0c;撩动了老猿的心&#xff0c;决定跟…

再聊聊财务自由

前段时间有人在我星球讨论财务自由&#xff0c;说自由的本质是选择权&#xff0c;有读者觉得大受启发&#xff0c;我就翻了一下旧文&#xff0c;我2017年就说过了啊&#xff0c;谈谈财务自由 。 但时过境迁&#xff0c;其实我想改变一下之前的说法&#xff0c;所谓财务自由&…

《周易》乾卦爻辞

1. 初九.潜龙勿用 初九&#xff0c;潜龙勿用。 下爻为初。九&#xff0c;阳数之盛&#xff0c;故以名阳爻。理无形也&#xff0c;故假象以显义。乾以龙为象。龙之为物&#xff0c;灵变不测&#xff0c;故以象乾道变化&#xff0c;阳气消息&#xff0c;圣人进退。初九在一卦之下…

《光剑教教义:五信 九训 十诫 九罪》

五信 1.没有神、上帝、救世主&#xff0c;每个人就是自己的神、上帝、救世主&#xff1b;天助自助者。一个人能够在想象中创造的事情&#xff0c;没有什么是不能实现的。我们所需要的&#xff0c;只是把蕴含在我们自身的所有潜在力量激发出来。 2.神不过是世界上的一般能源&a…

德鲁克《管理的实践》笔记

谈管理时必须将三个方面都纳入考虑&#xff1a;第一是成果和绩效&#xff0c;因为这是企业存在的目的&#xff1b;第二必须考虑在企业内部共同工作的人所形成的组织&#xff1b;第三则要考虑外在的社会&#xff0c;也就是社会影响和社会责任。 第1章 管理层的角色 在每个企业中…

C++多态性分析和与Linux内核中的多态性实现的共性和差异比较

Linux内核是用C语言开发的&#xff0c;而C是面向结构&#xff0c;面向过程的语言&#xff0c;这种语言的特点是数据结构和数据操作是分离的两个部分&#xff0c;但是这并不代表面向过程的语言无法实现面向对象语言的一些机制&#xff0c;比如多态性&#xff0c;多态的本质在于其…

为什么有些 985、211 的本科学生即使在大学里混得很水,在找工作时学历却那么管用?...

学术分享&#xff0c;侵删 知乎&#xff1a;https://www.zhihu.com/question/354234322 编辑&#xff1a;AI有道 最近网上有个话题比较有争议&#xff1a;【为什么有些 985、211 的本科学生即使在大学里混得很水&#xff0c;在找工作时学历却那么管用&#xff1f;】笔者认为&am…

202324读书笔记|《一枝瘦骨写空山:金农画的金石气》——以一枝瘦骨,写空山之妙

202323读书笔记|《一枝瘦骨写空山&#xff1a;金农画的金石气》——以一枝瘦骨&#xff0c;写空山之妙 《一枝瘦骨写空山&#xff1a;金农画的金石气&#xff08;文人画的真性&#xff09;》作者朱良志。荷风四面&#xff0c;人在当中&#xff0c;消受这世界的清凉&#xff0c;…

超然!高效 MacBook 工作环境配置,超实用!

点击上方&#xff0c;选择“设为星标” 优质文章&#xff0c;及时送达 工欲善其事&#xff0c;必先利其器&#xff0c;工具永远都是用来解决问题的&#xff0c;没必要为了工具而工具&#xff0c;一切工具都是为了能快速准确的完成工作和学习任务而服务。 本文记录 MacBook 整个…

职业规划-IT方向(超详细,超具体)

前言 今天是周五&#xff0c;本来想好好休息。前天写了一篇博文《说出我的故事&#xff0c;献给正在迷茫的你》&#xff08;https://blog.csdn.net/weixin_44135121/article/details/92841610&#xff09;&#xff0c;不少读者留言不知该如何做职业规划&#xff0c;于是继续拖…