pytorch 测试每一类_2D-UNet脑胶质瘤分割BraTs + Pytorch实现

6f0049ed807f9a092314dadc6e389c96.png

2D-UNet讲解

玖零猴:U-Net+与FCN的区别+医学表现+网络详解+创新​zhuanlan.zhihu.com
9a00196b0bb6b69d6494eb86245c1b68.png

BraTs数据准备

数据来源

本文用的训练集和验证集均来自BraTs2018的训练集(其中HGG:210个病人,LGG:75个病人)

但由于BraTs只公开训练集数据,没有测试集数据,如果在训练集中再拆一部分用来作测试集的话,那训练集便少了许多,训练数据如果过少,容易出现过拟合现象,即在训练集中表现好,而在测试集中表现差,此时的网络泛化能力变差了.为了解决数据少的问题,灵机一动的我想出了一个办法.

因为BraTs2019的训练集在BraTs2018的基础上增多了,其中HGG增加了49例,LGG增加了1例,那么我就把这些新增的作为我的测试集

下面我提供百度云盘给大家下载,这是原始数据

BraTs18数据集下载地址(不包含测试集,提供的验证集无GT) 
链接:https://pan.baidu.com/s/1Ry41OVl9VLOMzhQQR9qXuA 提取码:qvmo
BraTs19数据集下载地址如下(不包含测试集,提供的验证集无GT) 
链接: https://pan.baidu.com/s/1S5XGTdHkwFnagKS-5vWYBg 提取码: 2333

数据的预处理以及实现代码

把上面两年的数据下下来,然后我对数据的预处理方法是链接

完整的实现代码(jupyter notebook打开)

https://github.com/Merofine/BraTS2Dpreprocessing​github.com
  1. GetTrainingSets.ipynb——>训练集和验证集
  2. GetTestingSetsFrom2019.ipynb-—>测试集

代码执行完后,获得npy数据

6bf6e30773e2db16ee804e5df6c93e71.png

<如果大家嫌麻烦,我这里提供预处理好的npy数据>

链接:https://pan.baidu.com/s/1iIBvqrXIx2JAvoyt3FcuYw  密码:4qua

训练集、验证集和测试集——预处理之区别

它们的预处理除了是否要去除没有病灶切片外,别无区别

训练集是去除的,以缓解类别不均衡问题,类别不平衡(class-imbalance)就是指分类任务中不同类别的训练样例数目差别很大的情况,但若差别很大,则会对学习过程造成困扰.我们的任务是分割,分割是一种对像素级别的分类,一个切片假如病灶很少甚至没有,那么就会出现严重的类别不均衡,学习的时候网络就会偏向于多的那一类靠,为了缓解这种情况,应该剔除没有病灶的切片

而验证集我也是去除的,因为验证集其实在训练过程中扮演了另一角色,虽然并没有直接参与训练,可是却是为了防止过拟合现象,也就是说防止网络将这些有病灶的切片学得太过头了,这是个人理解,具体到底是否去除,还得通过实验证明

测试集当然是不用去除的,因为这个时候就是考验它的时候到了,让它自己判断是否有病灶

运行环境的安装

windows10 64 bits、nvidia驱动、CUDA8.0、cudnn、anaconda

打开命令窗口, 分别输入以下指令:conda create -n jiu0Monkey python=3.6conda activate jiu0Monkeypip install simpleitkpip install opencv-python==3.4.2.16pip install scipypip install scikit-learn==0.20pip install scikit-image==0.14conda  install numpy  mkl cffi安装pytorch,选择与cuda版本对应的进行安装,python版本也要对应
下载链接:https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
我选择的是win-64 pytorch-0.4.0-py36_cuda80_cudnn7he774522_1.tar.bz2
下载完毕后进行安装,找到下载目录并执行:
conda install --offline .pytorch-0.4.0-py36_cuda80_cudnn7he774522_1.tar.bz2conda install  torchvision  -c pytorchconda install Pillow=6.1conda install tqdmconda install pandaspip install -U scikit-imagepip install -i https://pypi.tuna.tsinghua.edu.cn/simple numba
pip install hausdorff

代码下载链接

https://github.com/Merofine/UNet2D_BraTs​github.com

训练:

将train.py的img_paths和mask_paths修改为自己的trainImage和trainMask的路径

训练前会通过train_test_split函数将数据集划分为训练集和验证集,只要参数random_state一样,划分的结果就是一样的

每一次epoch训练结束,都会对验证集进行测试Iou指标,如果比之前最好的还要好就保存本次训练模型,如果超过args.early_stop这个参数还没有训练更好的话,便结束训练,这个原理就是early_stop,主要还是防止网络训练过度,造成过拟合现象,这也就是验证集虽然没有直接参与训练,但是却在其中扮演了一个非常重要的角色!

[过拟合]早停法 (Early Stopping)​blog.csdn.net
8874354f4419a8ff8b53e65f7e1058d5.png

如果要训练Unet,则运行下面指令

python .train.py --arch="Unet" --dataset=“Jiu0Monkey”

其它参数根据自己的情况进行配置

预训练好的模型下载:

链接:https://pan.baidu.com/s/1CBSyOW3n0IOoEIbNdsbOrg  密码:w7fw

eeb4f919e13a83541c14b7e1ba38f0e2.png

919ef8a186fa84db5e9e33ab2c076217.png

预测:

将test.py的img_paths和mask_paths修改为自己的testImage和testMask的路径

运行下面指令获得测试结果以及GT文件:

python .test.py --name="Jiu0Monkey_Unet_woDS" --mode="GetPicture"

e9f4a78f4271dfa83447ccc65a32adea.png
Unet 左边为GT,右边为预测

运行下面指令评价测试结果以及GT文件的指标,想了解更多指标的信息包括Dice、Hausdorff、IOU、PPV等,可以参考我这一篇(分割常用评价指标)

玖零猴:分割常用评价指标Dice、Hausdorff_95、IOU、PPV等(打马)​zhuanlan.zhihu.com
95b15ce02b3732031f5f103860f1edde.png
python .test.py --name="Jiu0Monkey_Unet_woDS" --mode="Calculate"

运行结果:

d419bb05f9292cd7ed268cb14fbcc1cc.png

c5a8b83a81ea679e894cf7d0e23c1ad3.png

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

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

相关文章

电商必备6款商品详情数据采集,一键批量下载淘猫拼和1688宝贝信息和链接!

当我们分析竞品以及选款复制时&#xff0c;往往需要先将商品信息采集下载下来&#xff0c;然而一个个去寻找商品并手动下载&#xff0c;显然是不现实的。 特别是做无货源店群的卖家&#xff0c;可能需要在不同平台采集商品信息&#xff0c;那么就需要用到适用不同平台的商品采…

vue.js的项目实战

欢迎大家前往腾讯云社区&#xff0c;获取更多腾讯海量技术实践干货哦~ 本文由蔡述雄发表于云社区专栏 需求背景 组件库是做UI和前端日常需求中经常用到的&#xff0c;把一个按钮&#xff0c;导航&#xff0c;列表之类的元素封装起来&#xff0c;方便日常使用&#xff0c;调用方…

c++ 输出二进制_Python入门3print格式化输出的几种方法

接《Python入门2》print格式化输出的几种方法⒂格式化输出举例【例】str_name"小明"num_age15print("我叫%s&#xff0c;今年%d岁"%(str_name,num_age))#注意print的前后两部分用%间隔&#xff0c;不是逗号&#xff0c;后面的输出列表加小括号【例】str&qu…

485串口测试工具软件下载_串口调试助手详细讲解(结合实操),通讯问题不再是问题...

经常会有学员问我&#xff0c;老师老师&#xff0c;我的plc和变频器通讯不上了&#xff0c;不知道什么原因&#xff0c;您能帮我看看么。其实吧&#xff0c;这个一般远程是帮不上你什么的&#xff0c;还是要你自己去测试&#xff0c;找出问题&#xff0c;那么怎么测试呢&#x…

pycharm快捷键_春节快结束了回单位途中总结下pycharm快捷键

一、编辑(Editing)CtrlSpace 基本的代码完成(类、方法、属性)CtrlAltSpace 快速导入任意类 CtrlShiftEnter 语句完成CtrlP 参数信息(在方法中调用参数)CtrlQ 快速查看文档F1 Web帮助文档主页ShiftF1 选中对象的Web帮助文档Ctrl悬浮/单机鼠标左键 简介/进入代码定义CtrlZ 撤销上…

挣值管理名词(EV、AC、PV等)与公式详解

概念 PV PLaned&#xff0c;计划&#xff0c;Value&#xff0c;数值&#xff0c;计划值&#xff0c;是指项目实施过程中某阶段计划要求完成的工作量所需的预算工时&#xff08;或费用&#xff09;。 是反应计划&#xff0c;不是反映应消耗的工时或费用。 PVBCWS计划工作量*…

c++ 三次多项式拟合_线性回归进阶版,多项式线性回归讲解与实现(附完整代码)...

每天给小编五分钟&#xff0c;小编用自己的代码&#xff0c;带你轻松学习深度学习&#xff01;本文将会带你做完一个深度学习进阶版的线性回归---多项式线性回归&#xff0c;带你进一步掌握线性回归这一深度学习经典模型&#xff0c;然后在此基础上&#xff0c;小编将在下篇文章…

mysql查看表占用空间大小

select TABLE_NAME,DATA_LENGTHINDEX_LENGTH,TABLE_ROWS from INFORMATION_SCHEMA.tables where TABLE_SCHEMAnbly_twjr DATA_LENGTHINDEX_LENGTH 的值除以1024&#xff0c;再除以1024&#xff0c;折算成MB

mfc文字闪烁如何解决_男同胞福音!如何解决尿尿时最尴尬的难题?建议偷偷收藏(文字版)...

上面这个现象呢&#xff0c;是男生上厕所时的一种微妙状态。两个男生往往会由于尴尬而不愿意站在相邻的坑位上厕所。我将其命名为男厕所的泡利不相容定律。一、男厕尴尬定律简介先给大家科普一下男厕所的构造&#xff0c;小便区是一排立式坑位。好的厕所有隔板&#xff0c;阻挡…

docker-compose 运行 Flask 应用最佳实践

背景 以前部署应用&#xff0c;需要各种环境配置&#xff0c;各种shell操作才能搭建一套可用的服务。现在有了Docker之后&#xff0c;部署方式变了更加容易&#xff0c;不容易出现配置错误&#xff0c;环境不一致问题。解决了在本地环境可以运行&#xff0c;迁移到线上出现各种…

dbeaver导出表结构和数据_mall数据库表结构概览

mall是一套电商系统&#xff0c;后台系统主要包括商品管理、订单管理、营销管理(运营管理促销管理)、内容管理、用户管理等模块&#xff0c;本文主要对这些模块的数据库表结构及功能做大概的介绍。商品管理数据库表结构功能结构订单管理数据库表结构功能结构营销管理数据库表结…

arima模型 p q d 确定_自回归移动平均模型(ARMA)

自回归模型&#xff08;AR&#xff09;&#xff1a;①描述当前值和历史值之间的关系&#xff0c;用变量自身的历史时间数据对自身进行预测。②自回归模型必须满足平稳性的要求。③移动平均模型&#xff08;MA&#xff09;关注的是自回归模型中的误差项的累加。移动平均法能有效…

Mysql闪回工具之binlog2sql的原理及其使用

生产上误删数据、误改数据的现象也是时常发生的现象&#xff0c;作为运维这时候就需要出来补锅了&#xff0c;最开始的做法是恢复备份&#xff0c;然后从中找到需要的数据再进行修复&#xff0c;但是这个时间太长了&#xff0c;对于大表少数数据的修复来讲&#xff0c;动作太大…

禅道11.0windows本机安装

为了验证禅道的某个功能&#xff0c;需要用到生产上的数据&#xff0c;又不能在生产上进行。只能在本地搭建一套禅道&#xff0c;还原生产的数据到本地。 1.下载禅道 生产上用的是禅道11.0&#xff0c;数据库是11.0版本的数据库&#xff0c;为了更好兼容&#xff0c;下载禅道…

createtrackbar函数_【3】OpenCV图像处理模块(10)inRange函数实现阈值化,HSV图像分割...

本节使用inRange函数来实现阈值化。跟前面的阈值化方法一样&#xff0c;只不过在实现时用阈值范围来替代固定阈值。本节还提供了一种物体检测的手段&#xff0c;用基于像素值范围的方法&#xff0c;在HSV色彩空间检测物体。HSV色彩空间HSV&#xff08;hue&#xff0c;saturatio…

PPT取消自动播放

选中PPT页面&#xff0c;点击“切换”&#xff0c;检查下“设置自动换片时间”&#xff0c;如果勾选了&#xff0c;则去掉。

自动驾驶芯片_盘点全球自动驾驶芯片“战场”参与者

据了解&#xff0c;目前出货量最大的驾驶辅助芯片厂商Mobileye、Nvidia形成“双雄争霸”局面&#xff0c;Xilinx则在FPGA的路线上进军&#xff0c;Google、地平线、寒武纪向专用领域AI芯片发力&#xff0c;国内四维图新、全志科技、森国科(国科微)在自动驾驶芯片领域积极布局。…

word文档页码不连续怎么弄

页码不连续是因为在不连续页码的两页之间有分隔符。 第一步&#xff1a;搜索分节符 第二步&#xff1a;看页码与页面是否一致 wps的左下角 如果不一致&#xff0c;则第三步 第三步&#xff1a;设置页码&#xff1a;“继续上一页编码”

java多张图片合成一张_1分钟学会“全景照片”拍摄技巧,从单反拍摄到PS合成,收藏备用...

作为一名摄影爱好者&#xff0c;您知道如何才能快速拍出一张全景照片&#xff0c;同时保证高画质和照片不畸变&#xff1f;比如下面的2张图片&#xff1a;要想得到这样的全景照片&#xff0c;千万不要通过后期裁剪&#xff0c;否则清晰度肯定会大打折扣&#xff01;其实&#x…