【深度学习】实验4答案:脑部 MRI 图像分割
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 = gammaself.eps = epsself.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 * logpreturn 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出现了异常现象,但是平均效果得到了一点提高,还有明显的可优化情况。
下面是截取的部分预测和真实情况示意图:
【深度学习】实验4答案:脑部 MRI 图像分割相关推荐
- 【深度学习】实验4布置:脑部 MRI 图像分割
DL_class 学堂在线<深度学习>实验课代码+报告(其中实验1和实验6有配套PPT),授课老师为胡晓林老师.课程链接:https://www.xuetangx.com/training ...
- nvidia docker容器不支持中文的解决办法_用docker搭建深度学习实验环境
tensorflow和pytorch官方都维护了不同版本的docker镜像.借助docker我们可以方便的搭建起深度学习实验环境. 但是想要在同一个容器内同时拥有tensorflow.pytorch. ...
- pycharm remote 远程项目 同步 本地_利器:PyCharm本地连接服务器搭建深度学习实验环境的三重境界...
作为实验室社畜,常需要在本地使用Pycharm写代码,然后将代码同步到服务器上,使用远程登录服务器并运行代码做实验. 这其中有很多事情如果没有好的工具,做起来会非常麻烦. 比如如何快速同步本地与服务器 ...
- 深度学习实验1:pytorch实践与前馈神经网络
深度学习实验1:pytorch实践与前馈神经网络 1.pytorch基本操作 1.使用
- 【干货】深度学习实验流程及PyTorch提供的解决方案
转载自:[干货]深度学习实验流程及PyTorch提供的解决方案 [导读]近日,专知小组博士生huaiwen创作了一系列PyTorch实战教程,致力于介绍如何用PyTorch实践你的科研想法.今天推出其 ...
- 深度学习实验总结:PR-曲线、线性回归、卷积神经网络、GAN生成式对抗神经网络
目录 0.前言 1.实验一:环境配置 (1)本机 1.Jupyter 2.Pycharm (2)云端 2.实验二:特征数据集制作和PR曲线 一.实验目的 二.实验环境 三.实验内容及实验步骤 3.实验 ...
- 深度学习 实验三 logistic回归预测二分类
文章目录 深度学习 实验三 logistic回归预测二分类 一.问题描述 二.设计简要描述 三.程序清单 深度学习 实验三 logistic回归预测二分类 一.问题描述 学会使用学习到的逻辑回归的 ...
- Github深度学习面试题答案
Github深度学习面试题答案(一)-- 深度学习相关 本文是对于github上一篇关于无人驾驶的深度学习方面提问的 ''部分个人见解+论坛内外对该问题的解答'' 本文属于搬运+整合的笔记贴,主要是为 ...
- 深度学习 实验七 循环神经网络
文章目录 深度学习 实验七 循环神经网络 一.问题描述 二.设计简要描述 三.程序清单 深度学习 实验七 循环神经网络 一.问题描述 之前见过的所以神经网络(比如全连接网络和卷积神经网络)都有一个主要 ...
最新文章
- logback节点配置详解
- 【Java基础】集合
- rest-framework 解析器
- java10支持mybatis_写了10年的代码,我最怕写Mybatis这些配置,现在有详解了
- 如何取消计算机用户名,Win10如何取消登录界面显示用户名?
- fetch 不是xhr_春招|前端2019应届春招:不是被大厂选,而是选大厂(字节跳动,美团,网易)...
- 细说 Form (表单)
- HttpClient4.3.x的连接管理
- vue mianjs 引用css_7个有用的Vue开发技巧
- InnoDB配置文件复习
- php yii vendor,Yii2的安装--解决无Vendor目录的问题
- CentOS7镜像下载地址
- python excel操作 bom_Python Pandas比较BOM表数据
- 苏宁服务器修复,苏宁服务器崩了?故障尚未完全修复,网友猜测或因顾客抢购...
- 六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序
- 视频教程-Java IO流精讲下-Java
- 新浪博客服务器是不是在维护,近日新浪博客发布文章不能正常显示是为什么?...
- 【冷启动】快手《POSO: Personalized Cold Start Modules for Large-scale Recommender Systems》
- 浅析「网络安全政策陆续发布」对企业的影响
- 用c语言实现的FFT
热门文章
- AdvantEdge-刀具材料和涂层分析
- cookie登录知乎
- 基于UDS服务的BootLoader架构和刷写流程
- 汉语言文学在电视新闻解说词的应用
- IDEA 的自动补全功能
- python画恐龙_用Python实现谷歌的小恐龙游戏
- matlab 实现2048游戏
- 京东金融大数据平台架构(附82页PPT)
- 京东金融Vue组件化项目实战(完整)
- guava:Cache中使用数组(Object[],int[]...)作为KEY