【深度学习】实验4答案:脑部 MRI 图像分割

news2024/7/5 21:43:57

DL_class

学堂在线《深度学习》实验课代码+报告(其中实验1和实验6有配套PPT),授课老师为胡晓林老师。课程链接:https://www.xuetangx.com/training/DP080910033751/619488?channel=i.area.manual_search。

持续更新中。
所有代码为作者所写,并非最后的“标准答案”,只有实验6被扣了1分,其余皆是满分。仓库链接:https://github.com/W-caner/DL_classs。 此外,欢迎关注我的CSDN:https://blog.csdn.net/Can__er?type=blog。
部分数据集由于过大无法上传,我会在博客中给出下载链接。如果对代码有疑问,有更好的思路等,也非常欢迎在评论区与我交流~

实验4:脑部 MRI 图像分割

跑通程序

使用原始程序简单训练了15个周期,绘制loss曲线和Dsc,然后进行预测,dice coefficient约为0.9,如下图所示:
请添加图片描述

请添加图片描述

请添加图片描述

效果提升

网络结构

我没有做出大的改变,在阅读文献的时候看到了一个UNet++,但没有实现成功。

损失函数

这里尝试了2种额外的损失函数:

  • 第一个是增加了权重的交叉熵损失函数FocalLoss,为了解决“正负样本”或者“优劣样本”不均衡问题。代码为:

    class FocalLoss(nn.Module):
        def __init__(self, weight=None, reduction='mean', gamma=0.25, eps=1e-7):
            super(FocalLoss, self).__init__()
            self.gamma = gamma
            self.eps = eps
            self.ce = nn.CrossEntropyLoss(weight=weight, reduction=reduction)
    
        def forward(self, y_pred, y_true):
            logp = self.ce(y_pred, torch.squeeze(y_true).long())
            p = torch.exp(-logp)
            loss = (1 - p) ** self.gamma * logp
            return torch.Tensor(loss.mean())
    

    下图为比较结果,可以发现交叉熵在此处并没有比较好的表现,无论是收敛速度还是训练了15个周期的最终结果,所以舍弃。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XJ8wFC1z-1668653063845)(.\image-20220714194301321.png)]

  • 第二个是改进后的DiceLoss,参照了图像分割模型调优技巧,loss函数大盘点 - 知乎 (zhihu.com)一文中提出的损失函数。Dice系数是一种用于评估分割输出的度量标准。它也已修改为损失函数,因为它可以实现分割目标的数学表示。但是由于其非凸性,它多次都无法获得最佳结果。Lovsz-softmax损失旨在通过添加使用Lovsz扩展的平滑来解决非凸损失函数的问题。同时,Log-Cosh方法已广泛用于基于回归的问题中,以平滑曲线。作者将损失函数的公式改为请添加图片描述,其中用到的函数示意图如下。
    请添加图片描述

下图是对比未经过改进的损失函数和改进后的Loss与Dsc,可以发现Loss因为计算公式不同而存在差异,但改进和的Dsc有着较好的表现。最终也选择其作为损失函数。

请添加图片描述

优化器

分别采用不含动量的优化器SGD,含动量(0.9)的优化器SGD,设置学习率为0.01至0.001,得到Loss结果如下,可以发现含动量的SGD比不含动量SGD有着更好表现,而adam有着最好的表现。这里我的标签打错了,lr的值应该是0.01和0.001。

请添加图片描述

最终效果

最后采用网络结构没有改变,损失函数为改进后的DiceLoss,学习率从0.01开始,每周期进行0.9的衰减,训练30个周期,得到的平均DSC为0.92。

此时应用该训练参数于训练集,发现6668出现了异常现象,但是平均效果得到了一点提高,还有明显的可优化情况。

请添加图片描述

下面是截取的部分预测和真实情况示意图:

请添加图片描述

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

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

相关文章

数据之道读书笔记-05面向“联接共享”的数据底座建设

数据之道读书笔记-05面向“联接共享”的数据底座建设 在从信息化向数字化转型的过程中,企业积累了海量的数据,并且还在爆发式地增长。数据很多,但真正能产生价值的数据却很少。数据普遍存在分散、不拉通的问题,缺乏统一的定义和架…

[发送AT指令配置a7670C模块上网]

发送AT指令配置a7670C模块上网内核配置调试验证应用的编写AT的指令的使用内核配置 概要:基于rv1126平台调试SIMCOM 7670C 4G模块。 1,内核配置及内核代码修改 1.1按照芯片data sheet修改kernel代码,添加PID和VID。 此处根据不同的芯片按照其…

Mybatis plus注解@TableField详解

Mybatis plus注解TableField详解 目录1. 前言2. 应用场景2.1 更新null值2.2 查询时排除字段2.3 非数据库字段属性1. 前言 TableField 字段注解,该注解用于标识非主键的字段。将数据库列与 JavaBean 中的属性进行映射。 2. 应用场景 2.1 更新null值 想要在更新字…

auth模块方法的使用

文章目录1、创建超级用户(管理员)2、获取表,检验密码3、保存用户状态4、获取用户对象,校验用户是否登录5、验证用户是否登录6、修改密码7、注销8、注册9、方法总结10、如何扩展auth_user表1、创建超级用户(管理员) """ 在创建好一个djan…

医保医用耗材编码目录——在线查询

医保医用耗材编码目录是按照“统一分类、统一编码、统一维护、统一发布、统一管理”的总体要求下进行更新维护,旨在强调“分类”与“追溯”属性,助力将医保编码标准统一为新时期医保信息交换的通用语言。 对于医保医用耗材分类与代码数据的“分类”与“追…

高数 | 【数一】 多元函数积分学 —— 总复习框架总结

自用复习笔记。 整理参考于 2023张宇高数18讲、武忠祥十七堂课。 三重积分(质量) 概念与对称性计算 直角坐标系 先一后二法/先z后xy法/投影穿线法(柱体,侧面为柱体)先二后一法/先xy后z法/定限截面法(旋转体)柱面坐标系 = 极坐标下二重积分与定积分球面坐标系 应用 体积总…

开源版禅道的使用教程

文章目录一、禅道简介二、下载安装三、敏捷版基本功能使用四、其他版本使用一、禅道简介 1.官网介绍:国产开源项目管理软件。核心管理思想基于敏捷方法scrum。集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体。 scrum:迭代式增量软…

DHCP地址池耗尽攻击

DHCP地址池耗尽攻击 攻击原理简介 ​ 路由器内置的DHCP服务器,划定了一个地址池作为自动分配给接入终端号IP地址的范围。 ​ 攻击工具伪装成大量的接入主机,向路由器内的DHCP服务器请求大量的IP地址分配。 ​ 在DHCP的地址租期超时之前,已经分…

CentOS 7搭建Yunzai-Bot原神机器人

CentOS 7.6搭建Yunzai-Bot原神机器人 前言 目前使用较多的原神机器人: LittlePaimon ✨基于NoneBot2和go-cqhttp的原神Q群机器人 原神多功能机器人,查询游戏信息、图鉴攻略、树脂提醒等等,以及各种各样的好玩的功能,不仅仅是原神…

行业案例 | 睿眼攻击溯源组合拳让黑客攻击事件无所遁形

项目背景 近年来,网络安全形势愈发严峻,黑客入侵、信息泄露等信息安全事件层出不穷,给企业带来了巨大的经济损失。一是互联网出口应用多为Web应用,有效防护和监测Web应用的安全性是金融行业客户信息安全领域的一项重点工作;二是随…

C++11 lambda+包装器+可变参数模板

索引lambda表达式(1).什么是lambda(2).lambda基本规则(3).lambda实现原理包装器可变参数模板lambda表达式 (1).什么是lambda 假设有这样一个类 struct Goods { string _name; // 名字 double _price; // 价格 int _evaluate; // 评价 };现在要将商品分别按照名字…

“健康中国”战略下如何推进公共卫生建设,海尔生物医疗给出“智慧答案”

【潮汐商业评论/原创】 公共卫生是一个老话题,但在新时代的背景下正在呈现出诸多新故事。在人民健康需求日益提升的当下,推动公共卫生服务体系的高效、便捷升级成了新时期的一大命题,而这一问题的答案则指向了公共卫生需要“数智化”。 在此…

Python之第十章 IO及对象列化

目录 Python之第十章 IO及对象列化 1.IO流(IO stream) 1.概述 2.IO流定义 3.流的分类 2.open方法 1.过程 2.缓冲区(buffer) 使用缓存区的必要性: 缓冲区分类: 3.格式 4.b模式 5.模式 6.文件对…

CentOS 7搭建LittlePaimon原神机器人

CentOS 7.6搭建LittlePaimon原神机器人 前言 最近小伙伴说别人的QQ群里有个原神的机器人,可以随时查询自己账号的角色卡信息。然后我自己查了下资料,发现不是很难弄,所以帮忙也弄了一个。 目前使用较多的原神机器人: LittlePaim…

SpringMVC学习篇(八)

SpringMVC拦截器 1.拦截器和过滤器的区别 过滤器拦截器servlet规范中(java ee)规范中的一部分,任何java web工程都可以使用拦截器是框架提供的,如只有在SpringMVC框架下的工程才能使用其提供的拦截器在url-pattern中配置了/*之后,可以拦截任何一切资源拦截器只会拦截控制器方…

easyrecovery工具2023最新版一键恢复丢失数据免费下载

通常,许多人会将工作或生活中的数据存储在我们的计算机上。很多时候,由于我们的误操作或其他一些问题,很容易错误地删除一些文件和数据。特别是,一些计算机故障总是会导致数据丢失,这是非常麻烦的。当需要重新安装系统…

JS 对象总结

对象 创建对象 有两种方式: 通过 new 操作符实例化一个对象,再添加属性。 let person new Object(); person.name "孤城浪人"; person.sayName function() { console.log(this.name); };构造函数,若不需要传参&#xff0…

代码随想录——单词接龙(图论)

题目 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列: 序列中第一个单词是 beginWord 。 序列中最后一个单词是 endWord 。 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典 wordList 中的单词。 给你两个单词 b…

AWVS的简介与安装

目录预备知识实验目的实验环境实验步骤一任务描述:AWVS的简介实验步骤二任务描述:进行AWVS10.5的安装、界面介绍和简单的使用实验步骤三任务描述:AWVS 11.x的安装与简单使用预备知识 Acunetix Web Vulnerability Scanner(简称AWV…

Qtcreator中文显示乱码问题终于解决

问题描述:Qtcreator安装好后打印中文在控制台输出乱码(自己也在网上查找了好久,终于找到解决方法了)。 原因剖析:因为项目的编码与控制台的编码不一致导致的,而qt编码设置里并没有控制台的默认编码&#xf…