【深度学习】: 脑部MRI图像分割

 清华大学驭风计划课程链接 

学堂在线 - 精品在线课程学习平台 (xuetangx.com)

代码和报告均为本人自己实现(实验满分),只展示主要任务实验结果,如果需要详细的实验报告或者代码可以私聊博主,接实验技术指导1对1

有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~

案例4:脑部MRI图像分割

相关知识点:语义分割、医学图像处理(skimage, medpy)、可视化(matplotlib)

1 任务简介

      本次案例将使用深度学习技术来完成脑部MRI(磁共振)图像分割任务,即对于处理好的一张MRI图像,通过神经网络分割出其中病变的区域。本次案例使用的数据集来自Kaggle[1],共包含110位病人的MRI数据,每位病人对应多张通道数为3的.tif格式图像,其对应的分割结果为单通道黑白图像(白色为病变区域),示例如下。

image.png

第一行: MRI图像;第二行: 对应的分割标签

      更详细的背景介绍请参考文献[2].

参考程序

      本次案例提供了完整、可供运行的参考程序,来源于Kaggle[3]和GitHub[4],建议在参考程序的基础上进行修改来完成本案例。各个程序简介如下:

ltrain.ipynb用来完成模型训练

linference.ipynb用来对训练后的模型进行推理

lunet.py定义了U-Net网络结构,参考资料[5]

lloss.py定义了损失函数(Dice Loss),参考资料[6]

ldataset.py用来定义和读取数据集

ltransform.py用来预处理数据

lutils.py定义了若干辅助函数

llogger.py用来记录训练过程(使用TensorBoard[7]功能),包括损失函数曲线等

参考程序对运行环境的要求如下,请自行调整环境至适配,否则可能无法运行:

ltorch==2.0.*

ltorchvision==0.15.*

lipykernel==6.26.*

lmatplotlib==3.8.*

lmedpy==0.4.*

lscipy==1.11.*

lnumpy==1.23.* (1.24+版本无法运行,需要先降级)

lscikit-image==0.22.*

limageio==2.31.*

ltensorboard==2.15.*

ltqdm==4.*其它细节以及示例运行结果可直接参考Kaggle[3]和GitHub[4]。

要求和建议

      在参考程序的基础上,使用深度学习技术,尝试提升该模型在脑部MRI图像上的分割效果,以程序最终输出的validation mean DSC值作为评价标准(参考程序约为90%)。可从网络结构(替换U-Net)、损失函数(替换Dice Loss)、训练过程(如优化器)等角度尝试改进,还可参考通用图像分割的一些技巧[8]。

注意事项

l提交所有代码和一份案例报告;

l案例报告应详细介绍所有改进尝试及对应的结果(包括DSC值和若干分割结果示例),无论是否成功提升模型效果,并对结果作出分析;

5实验结果

首先运行原始代码,得到结果如下
在这里我选择训练 20 个周期, dsc 结果基本在周期内都能趋于最优
训练很多次 DSC 基本都在 90%

网络结构改进

这里主要的改进是在原始代码的基础上添加了 注意力机制 ,注意力机制可以帮助
模型更关注重要的信息,减少对无关信息的干扰,从而提高模型的性能和准确性。
模型能够更有针对性地捕捉数据中的关键特征,做出更准确的预测。
从图中看出在训练到第 14 周期时 dsc 值就达到 91% ,并且在分割结果来看明显
比原始结果更好,最差的 HT-7617 也达到 80% 以上,除了 cs_4944 HT_7617
其他 8 Dice Coefficient 均达到了 90%以上 (这也是此次实训中我调的最好的
结果,其他改进均不如此)

改进损失函数和替换损失函数

在网上查资料时候发现一种 LogCoshDiceLoss 函数是根据 Dice Loss Log-Cosh Loss 特点改

进而来,Dice Loss 是一种广泛用于图像分割任务的损失函数,衡量模型预测结果与真实标签之间的 相似性。而 Log-Cosh Loss 是一种光滑的损失函数,对异常值具有更好的鲁棒性,避免了异
常值对训练造成较大的影响。 Log-Cosh Loss 可以在训练过程中减少异常值的影响,使得模
型更加稳定。
Log-Cosh Dice Loss 将这两种损失函数结合在一起,通过计算 Dice Coefficient (用于衡量预测
与真实标签的相似性)和应用 Log-Cosh 函数(用于光滑损失),得到最终的损失值。
从结果看出效果并不是有明显提升,虽然 dsc 值接近 91% ,因为我用原始代码最高得出的结
果为 0.9098 差不多,所以这里我认为并没有提升实际效果

使用 FocalTverskyLoss 替换掉 Dice loss

Focal Loss Focal Loss 是一种用于处理类别不平衡问题的损失函数,旨在提高模型对难分
类样本的敏感性。它通过对易分类样本的损失进行缩小,从而使模型更集中地关注难分类的
样本。
Tversky Loss Tversky Loss 是一种基于集合相似性度量的损失函数,广泛用于图像分割任务
中,特别是在类别不平衡严重的情况下。它允许你在损失函数中调整模型对于错误预测的惩
罚程度,而更好地适应不平衡情况。
FocalTverskyLoss Focal Loss Tversky Loss 结合在一起,能实现更好的类别不平衡处理
和分割性能
从结果看出还没有原始代码 dsc 值高,并且初始 loss 比较大,在这个实训中运行效果并不好

优化器

这一部分我使用了 Adam 的一个变体, AMSGrad Adaptive Moment Estimation for
Stochastic Gradient Descent )是优化算法 Adam 的一个变体,旨在改善其在一些情况下
的性能问题。 Adam 作为一种自适应学习率的优化算法,结合了动量和 RMSProp 的思想
从结果来看也并没有明显提升,仍然在 0.90 左右

参考资料

[1] Brain MRI数据集: Brain MRI segmentation | Kaggle

[2] Buda et al. Association of genomic subtypes of lower-grade gliomas with shape features automatically extracted by a deep learning algorithm. Computers in Biology and Medicine 2019.

[3] 示例程序: brain-segmentation-pytorch | Kaggle

[4] 示例程序: GitHub - mateuszbuda/brain-segmentation-pytorch: U-Net implementation in PyTorch for FLAIR abnormality segmentation in brain MRI

[5] Ronneberger et al. U-Net: Convolutional Networks for Biomedical Image Segmentation. MICCAI 2015.

[6] Dice Loss: 医学影像分割---Dice Loss - 知乎

[7] TensorBoard参考资料:https://www.tensorflow.org/tensorboard 

[8] Minaee et al. Image Segmentation Using Deep Learning: A Survey. arXiv 2020.

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

QT入门-信号与槽

1.QT基本框架 #include "myWindow.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);myWindow w;w.show();return a.exec(); } QApplicata&#xff1a;应用程序对象&#xff0c;必须有且只能有一个 Qwidget&#xff1…

Python入门:常用模块—os模块及sys模块

os模块 sys模块 import sys print(sys.argv) # 命令参数list&#xff0c;第一个元素是程序本身路径 print(sys.exit()) # 退出程序&#xff0c;正常退出是exit(0) print(sys.version) # 获取python解释程序的版本信息 print(sys.maxint()) # 最大…

【开源】JAVA+Vue.js实现衣物搭配系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 衣物档案模块2.2 衣物搭配模块2.3 衣物收藏模块 三、系统设计3.1 用例设计3.2 E-R图设计3.3 数据库设计3.3.1 衣物档案表3.3.2 衣物搭配表3.3.3 衣物收藏表 四、系统实现4.1 登录页4.2 衣物档案模块4.3 衣物搭配模块4.4…

Zustand:简化状态管理的现代React状态库

Zustand&#xff1a;简化状态管理的现代React状态库 Zustand是一个用于管理状态的现代React状态库。它提供了简洁、可扩展和高效的状态管理解决方案&#xff0c;使得在React应用中处理复杂的状态逻辑变得更加容易和直观。本文将介绍Zustand的主要特点、使用方法以及它在React开…

Zabbix6.x配置中文界面 解决乱码问题

Zabbix6.x配置中文界面 解决乱码问题 Zabbix6.x界面无法选择中文&#xff0c;通过安装语言包解决。后面也解决了zabbix6中文方块&#xff08;乱码&#xff09;问题。 配置中文语言包 系统中默认没有携带中文语言包&#xff0c;可以通过以下命令查看 localectl list-locales #…

STM32CubeMX,定时器之定时功能,入门学习,如何设置prescaler,以及timer计算PWM输入捕获方法(重要)

频率变小&#xff0c;周期变长 1&#xff0c;参考链接&#xff08;重要&#xff09; STM32CubeMX——定时器之定时功能&#xff08;学习使用timer定时器的设置&#xff09; STM32测量PWM信息&#xff08;学习使用设置pwm输入捕获&#xff09; 通用定时器中两个重要参数的设置心…

计算机网络——04接入网和物理媒体

接入网和物理媒体 接入网络和物理媒体 怎样将端系统和边缘路由器连接&#xff1f; 住宅接入网络单位接入网络&#xff08;学校、公司&#xff09;无线接入网络 住宅接入&#xff1a;modem 将上网数据调制加载到音频信号上&#xff0c;在电话线上传输&#xff0c;在局端将其…

自己动手打包element UI官方手册文档教程

经常用element ui朋友开发的比较郁闷&#xff0c;官方文档网基本上都是打不开的&#xff0c; 官方&#xff1a;https://element.eleme.io/ 一直打不开&#xff0c;分析下是里面用的cdn链接ssl证书无效。 就想着自己搭建一个element UI文档 自己搭建的&#xff1a; Element文档网…

精灵图,字体图标,CSS3三角

精灵图 1.1为什么需要精灵图 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁的接受和发送请求图片&#xff0c;造成服务器请求压力过大&#xff0c;这将大大降低页面的加载速度。 因此&#xff0c;为了有效地减少…

SpringBoot 接入讯飞星火大模型实现对话

申请地址 https://xinghuo.xfyun.cn/sparkapi?scrprice 免费申请200万Token 开发文档 https://www.xfyun.cn/doc/spark/Web.html#_1-接口说明 页面最下面有相关demo可以参考 介绍 接口是以套接字的形式分段返回&#xff0c;而且非http请求&#xff0c;比较繁琐&#xff0c;官…

fast.ai 深度学习笔记(三)

深度学习 2&#xff1a;第 1 部分第 6 课 原文&#xff1a;medium.com/hiromi_suenaga/deep-learning-2-part-1-lesson-6-de70d626976c 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 来自 fast.ai 课程的个人笔记。随着我继续复习课程以“真正”理解它&#xff0c;这…

模型蒸馏distill /模型剪枝 论文汇总

文章目录 引言1. 蒸馏1&#xff09;白盒蒸馏DistilBERTPatient Knowledge DistillationTinyBERT 2020MiniLLM 2&#xff09;黑盒蒸馏Stanford alpacaVicunaWizardlmInstruction tuning with gpt-4Minigpt-4 2. 剪枝16个注意力头比一个好吗Movement pruning 1&#xff09;结构化…

【实习】深信服防火墙网络安全生产实习

一、实习概况 1.1实习目的 1.掌握防火墙规则的作用2.掌握代理上网功能的作用3.掌握端口映射功能的作用 1.2实习任务 1.防火墙的WEB控制台 2.需要在防火墙上配置dnat …

【设计模式】23中设计模式笔记

设计模式分类 模板方法模式 核心就是设计一个部分抽象类。 这个类具有少量具体的方法&#xff0c;和大量抽象的方法&#xff0c;具体的方法是为外界提供服务的点&#xff0c;具体方法中定义了抽象方法的执行序列 装饰器模式 现在有一个对象A&#xff0c;希望A的a方法被修饰 …

CVE-2021-44915 漏洞复现

CVE-2021-44915 路由/admin/admin.php是后台&#xff0c;登录账号和密码默认是admin、tao&#xff0c;选择管理栏目菜单。 点击编辑&#xff0c;然后随便改点内容&#xff0c;提交时候抓包。 id是注入点。直接拿sqlmap跑就行了。

20240210使用剪映识别字幕的时候的GPU占比RX580-RTX4090

20240210使用剪映识别字幕的时候的GPU占比RX580-RTX4090 2024/2/10 17:54 【使用剪映识别不同的封装格式&#xff0c;不同的音视频编码&#xff0c;对GPU的占用率可能会有比较大的不同&#xff01;】 很容易发现在在WIN10下使用剪映的时候&#xff0c;X99RX550组合。 GPU部分&…

探索C语言的内存魔法:动态内存管理解析

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C语言学习 贝蒂的主页&#xff1a;Betty‘s blog 1. 静态开辟内存 通过前面的学习&#xff0c;我们已经掌握了两种开辟内存的方…

ChatGPT高效提问—prompt常见用法(续篇八)

ChatGPT高效提问—prompt常见用法(续篇八) 1.1 对抗 ​ 对抗是一个重要主题,深入探讨了大型语言模型(LLM)的安全风险。它不仅反映了人们对LLM可能出现的风险和安全问题的理解,而且能够帮助我们识别这些潜在的风险,并通过切实可行的技术手段来规避。 ​ 截至目前,网络…

4核8g服务器能支持多少人访问?2024新版测评

腾讯云轻量4核8G12M轻量应用服务器支持多少人同时在线&#xff1f;通用型-4核8G-180G-2000G&#xff0c;2000GB月流量&#xff0c;系统盘为180GB SSD盘&#xff0c;12M公网带宽&#xff0c;下载速度峰值为1536KB/s&#xff0c;即1.5M/秒&#xff0c;假设网站内页平均大小为60KB…

酷开系统 | 拓展内容营销边界,酷开科技大屏价值全面升维

丰富的内容是智能大屏吸引消费者的关键。随着智能大屏各类垂直应用的增多&#xff0c;和长、短视频等多元内容的加入&#xff0c;使消费者的使用需求进一步激发和释放&#xff0c;这些流量的加入&#xff0c;也使大屏成为了营销的天然宝藏。酷开科技一直致力于OTT大屏营销&…