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 图像分割相关推荐

  1. 【深度学习】实验4布置:脑部 MRI 图像分割

    DL_class 学堂在线<深度学习>实验课代码+报告(其中实验1和实验6有配套PPT),授课老师为胡晓林老师.课程链接:https://www.xuetangx.com/training ...

  2. nvidia docker容器不支持中文的解决办法_用docker搭建深度学习实验环境

    tensorflow和pytorch官方都维护了不同版本的docker镜像.借助docker我们可以方便的搭建起深度学习实验环境. 但是想要在同一个容器内同时拥有tensorflow.pytorch. ...

  3. pycharm remote 远程项目 同步 本地_利器:PyCharm本地连接服务器搭建深度学习实验环境的三重境界...

    作为实验室社畜,常需要在本地使用Pycharm写代码,然后将代码同步到服务器上,使用远程登录服务器并运行代码做实验. 这其中有很多事情如果没有好的工具,做起来会非常麻烦. 比如如何快速同步本地与服务器 ...

  4. 深度学习实验1:pytorch实践与前馈神经网络

    深度学习实验1:pytorch实践与前馈神经网络 1.pytorch基本操作 1.使用

  5. 【干货】深度学习实验流程及PyTorch提供的解决方案

    转载自:[干货]深度学习实验流程及PyTorch提供的解决方案 [导读]近日,专知小组博士生huaiwen创作了一系列PyTorch实战教程,致力于介绍如何用PyTorch实践你的科研想法.今天推出其 ...

  6. 深度学习实验总结:PR-曲线、线性回归、卷积神经网络、GAN生成式对抗神经网络

    目录 0.前言 1.实验一:环境配置 (1)本机 1.Jupyter 2.Pycharm (2)云端 2.实验二:特征数据集制作和PR曲线 一.实验目的 二.实验环境 三.实验内容及实验步骤 3.实验 ...

  7. 深度学习 实验三 logistic回归预测二分类

    文章目录 深度学习 实验三 logistic回归预测二分类 一.问题描述 二.设计简要描述 三.程序清单 深度学习 实验三 logistic回归预测二分类 一.问题描述   学会使用学习到的逻辑回归的 ...

  8. Github深度学习面试题答案

    Github深度学习面试题答案(一)-- 深度学习相关 本文是对于github上一篇关于无人驾驶的深度学习方面提问的 ''部分个人见解+论坛内外对该问题的解答'' 本文属于搬运+整合的笔记贴,主要是为 ...

  9. 深度学习 实验七 循环神经网络

    文章目录 深度学习 实验七 循环神经网络 一.问题描述 二.设计简要描述 三.程序清单 深度学习 实验七 循环神经网络 一.问题描述 之前见过的所以神经网络(比如全连接网络和卷积神经网络)都有一个主要 ...

最新文章

  1. logback节点配置详解
  2. 【Java基础】集合
  3. rest-framework 解析器
  4. java10支持mybatis_写了10年的代码,我最怕写Mybatis这些配置,现在有详解了
  5. 如何取消计算机用户名,Win10如何取消登录界面显示用户名?
  6. fetch 不是xhr_春招|前端2019应届春招:不是被大厂选,而是选大厂(字节跳动,美团,网易)...
  7. 细说 Form (表单)
  8. HttpClient4.3.x的连接管理
  9. vue mianjs 引用css_7个有用的Vue开发技巧
  10. InnoDB配置文件复习
  11. php yii vendor,Yii2的安装--解决无Vendor目录的问题
  12. CentOS7镜像下载地址
  13. python excel操作 bom_Python Pandas比较BOM表数据
  14. 苏宁服务器修复,苏宁服务器崩了?故障尚未完全修复,网友猜测或因顾客抢购...
  15. 六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序
  16. 视频教程-Java IO流精讲下-Java
  17. 新浪博客服务器是不是在维护,近日新浪博客发布文章不能正常显示是为什么?...
  18. 【冷启动】快手《POSO: Personalized Cold Start Modules for Large-scale Recommender Systems》
  19. 浅析「网络安全政策陆续发布」对企业的影响
  20. 用c语言实现的FFT

热门文章

  1. AdvantEdge-刀具材料和涂层分析
  2. cookie登录知乎
  3. 基于UDS服务的BootLoader架构和刷写流程
  4. 汉语言文学在电视新闻解说词的应用
  5. IDEA 的自动补全功能
  6. python画恐龙_用Python实现谷歌的小恐龙游戏
  7. matlab 实现2048游戏
  8. 京东金融大数据平台架构(附82页PPT)
  9. 京东金融Vue组件化项目实战(完整)
  10. guava:Cache中使用数组(Object[],int[]...)作为KEY