2D UNet++ ResBlock脑胶质瘤分割BraTs + Pytorch实现
UNet++讲解
玖零猴:UNet++解读 + 它是如何对UNet改进 + 作者的研究态度和方式
网络结构
Encoder BackBone = ResBlock
Decoder BackBone = VGGBlock
通道数[32, 64, 128, 256, 512]
![](/assets/blank.gif)
![](/assets/blank.gif)
玖零猴:凯明之作Resnet + 心路历程[超详] + 解决退化问题 + 让网络变得更深成为现实
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
- GetTrainingSets.ipynb——>训练集和验证集
- GetTestingSetsFrom2019.ipynb-—>测试集
代码执行完后,获得npy数据
<如果大家嫌麻烦,我这里提供预处理好的npy数据>
链接:https://pan.baidu.com/s/1iIBvqrXIx2JAvoyt3FcuYw 密码:4qua
训练集、验证集和测试集——预处理之区别
它们的预处理除了是否要去除没有病灶切片外,别无区别
训练集是去除的,以缓解类别不均衡问题,类别不平衡(class-imbalance)就是指分类任务中不同类别的训练样例数目差别很大的情况,但若差别很大,则会对学习过程造成困扰.我们的任务是分割,分割是一种对像素级别的分类,一个切片假如病灶很少甚至没有,那么就会出现严重的类别不均衡,学习的时候网络就会偏向于多的那一类靠,为了缓解这种情况,应该剔除没有病灶的切片
而验证集我也是去除的,因为验证集其实在训练过程中扮演了另一角色,虽然并没有直接参与训练,可是却是为了防止过拟合现象,也就是说防止网络将这些有病灶的切片学得太过头了,这是个人理解,具体到底是否去除,还得通过实验证明
测试集当然是不用去除的,因为这个时候就是考验它的时候到了,让它自己判断是否有病灶(提示:这里我还是去了,去了之后测出来的Dice会稳一点0.0)
运行环境的安装
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://m.tb.cn/h.UH72xqd?tk=q9RVdPn83UX CZ3457 「我在闲鱼发布了【入门【医学图像分割】,有资料+数据+代码】」
训练:
将train.py的img_paths和mask_paths修改为自己的trainImage和trainMask的路径
训练前会通过train_test_split函数将数据集划分为训练集和验证集,只要参数random_state一样,划分的结果就是一样的
每一次epoch训练结束,都会对验证集进行测试Iou指标,如果比之前最好的还要好就保存本次训练模型,如果超过args.early_stop这个参数还没有训练更好的话,便结束训练,这个原理就是early_stop,主要还是防止网络训练过度,造成过拟合现象,这也就是验证集虽然没有直接参与训练,但是却在其中扮演了一个非常重要的角色!
[过拟合]早停法 (Early Stopping)
如果要训练Unet++,则运行下面指令
python .\train.py --arch="ResNetUnetPlus" --dataset=“Jiu0Monkey”
其它参数根据自己的情况进行配置
预训练模型及测试数据获取途径:知乎付费咨询后可获得,训练不易,体谅下0.0
预测:
将test.py的img_paths和mask_paths修改为自己的testImage和testMask的路径
运行下面指令获得测试结果以及GT文件:
python .\test.py --name="jiu0Monkey_ResNetUnetPlus_woDS" --mode="GetPicture"
想了解更多指标的信息包括Dice、Hausdorff、IOU、PPV等,可以参考我这一篇(分割常用评价指标)
玖零猴:分割常用评价指标Dice、Hausdorff_95、IOU、PPV等(打马)
python .\test.py --name="jiu0Monkey_ResNetUnetPlus_woDS" --mode="Calculate"
运行结果:
2D UNet++ ResBlock脑胶质瘤分割BraTs + Pytorch实现相关推荐
- pytorch 测试每一类_2D UNet++ VGGBlock脑胶质瘤分割BraTs + Pytorch实现
UNet++讲解 玖零猴:UNet++解读 + 它是如何对UNet改进 + 作者的研究态度和方式zhuanlan.zhihu.com BraTs数据准备 数据来源 本文用的训练集和验证集均来自Bra ...
- 3D U-Net脑胶质瘤分割BraTs + Pytorch实现
原论文地址: 连接 一.网络模型的分析和对比 原始2D-Unet网络模型 我的2D-Unet网络模型 1.和原来的2D-Unet网络不同的是,我输入通道为4,我这里应该改为4个通道,对应四个模态图像, ...
- pytorch 测试每一类_2D-UNet脑胶质瘤分割BraTs + Pytorch实现
2D-UNet讲解 玖零猴:U-Net+与FCN的区别+医学表现+网络详解+创新zhuanlan.zhihu.com BraTs数据准备 数据来源 本文用的训练集和验证集均来自BraTs2018的训 ...
- 2D-UNet脑胶质瘤分割BraTs + Pytorch实现
2D-UNet讲解 玖零猴:U-Net+与FCN的区别+医学表现+网络详解+创新 BraTs数据准备 数据来源 本文用的训练集和验证集均来自BraTs2018的训练集(其中HGG:210个病人,LGG ...
- HybridResUnet脑胶质瘤分割BraTs + Pytorch实现
论文链接: https://download.csdn.net/download/weixin_40519315/12314673 BraTs数据准备 数据来源 本文用的训练集和验证集均来自BraTs ...
- 2D DenseUnet-based脑胶质瘤分割BraTs+论文翻译+代码实现
论文代码: https://github.com/NYUMedML/DARTS 1.摘要 Quantitative, volumetric analysis of Magnetic Resonance ...
- Brain tumor segmentation using deep learning +HybridResUnet脑胶质瘤分割BraTs +论文解读
Brain tumor segmentation using deep learning 下载地址 摘要 Brain tumor is one of the deadliest forms of ca ...
- (脑肿瘤分割笔记:四十三)用于脑胶质瘤分割的上下文感知网络
Title:CANet: Context Aware Network for Brain Glioma Segmentation 摘要-Abstract 目前的一些脑肿瘤分割方法缺乏强有力的策略来整合 ...
- (脑肿瘤分割笔记:五十七)基于3D注意力UNet的脑肿瘤分割与生存预测
Title:Brain Tumor Segmentation and Survival Prediction using 3D Attention UNet 摘要: 本文采用了3D UNet的架构,并 ...
最新文章
- Java基础教程(3)--回顾HelloWorld
- linux 初始化工作环境
- ural 1306. Sequence Median(优先级队列 priority_queue用法)
- sftp 服务器外网访问设置
- iOS:iOS开发系列–打造自己的“美图秀秀”(中)
- PP视频如何开启允许非WI-FI下载
- Linux设置 cockpit 自动开机启动
- 监控页面后退前进,浏览器文档加载事件之pageshow、pagehide
- 自考那些事儿(九):再次学操作系统
- 如何做好一位合格qc_如何成为一名合格优秀的QC,你合格吗?
- 聊聊Elasticsearch RestClient的NodeSelector
- Four-tuples 山东省赛F题
- 详解两个栈实现一个队列(python实现——经典面试题)
- c语言实验报告参考文献,c语言编程参考文献
- php获得当月的节假日函数(包含周末,年度节假日)
- sklearn-线性回归
- IDEA 可以提神开发效率的插件
- Unity 年度总结:一款游戏的从0到1
- MATLAB的取整函数与取余函数
- 数字图像处理总结(四)