影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

感谢【呼呼】同学分享的“BraTS2017数据集的迁移学习+深度学习提取特征+机器学习”

迁移学习

一、迁移学习(把之前对Medicalnet的迁移学习内容跑了一遍,用的BraTS2017的数据集) 1、下载Med3D源码,完成基础运行环境配置 (1)https://github.com/Tencent/MedicalNet,把pretrain的部分(包含data,pretrian、trails三个文件)一起下载下来,都放在MedicalNet_master的文件夹里; (2)从pycharm中打开MedicalNet_master,在settings的解释器部分选择python;

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

2、跑通Demo和训练模型 (1)在Ternimal中激活onekey:conda activate onekey; (2)运行模型:python train.py --gpu_id 0(#GPU=1) (3)因为onekey和MedicalNet_master中都有dataset和utils,所以要纠正2个moduleNotFoundError,将MedicalNet_master中的重命名为dataset_med和utils_med,同时在train.py中进行相应修改;

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

(4)报错:

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

解决:调小图片尺寸(类似对半砍)或者把resnet50换(默认)成resnet34,我两种都试了,调小尺寸稍微快一点

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

(5)完成训练

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

3、BraTS数据适配 (1)下载数据集(下载不下来的童鞋可以请董老师发一下百度云链接); (2)需要形成与MRBrainS18一样的三个文件,imges,labels和train.txt,BraTS数据中有imagesTr和labelsTr,需要自己新建train.txt,我用Excel下拉后在粘贴出来的,这样出来的中间的分割符号都是\t,brains18.py里默认的分割符号是空格,可以将所有\t替换为空格,或者将brains18.py里默认的分割符号修改为\t。

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

(我这里出了一个assertionerror,找了好久原因,发现路径写错了,开始train.txt里写的是/imagesTr/BRATS_004.nii.gz,没有加‘点’)

或者将BraTS中的dataset.jason转为txt格式,附上张老师的代码;

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

(3)将imagesTr、labelsTr和train.txt替换进MedicalNet_master的Data文件里,再次运行python train.py --gpu_id 0 (4)中间会出现一个张老师讲的报错

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

用np.max选取一个维度

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

我这边就可以跑通了,没有出现图像读取错误

深度学习提取特征

即将模型的中间一层特征提取出来,一般提取最后一层特征 1、找到模型文件resnet.py,在forword中return最后一层的特征(分割模块之前)。如图将第四层特征命名为feature(红框)。并在return中返回来,但由于提取的特征维度太大,返回时进行max_pooling降维,保留最大池化(蓝框)。

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

2、在train.py中把特征接住,如下↓

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

3、将feature和相应的样本名称打出来,样本名称需要在brains18.py的getitem中return,然后在train.py的data_loader循环这里承接住,这样就可以将两者都打出来(蓝框)

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

4、打印出的特征都是在GPU环境中的,需要转到CPU(红框),并且将数据储存在文件当中(蓝框)。黄框表示将feature转换为n多个数据去表示

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

5、再次运行模型,就可以将深度学习的特征提取到features.txt里了。 6、因为边训练边保存,保存出来的特征会超过样本个数,只保存后面的epoch的数据就可以,或者把训练的部分注释掉。(我运行的时候没听懂这段话,就保存了好多下来,文件太大了不晓得咋删除,就没再修改,直接去机器学习了)

机器学习

三、机器学习(用乳腺癌的jupyter,方法同前,只贴一下变化的地方) 1.数据读取

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

2、数据准备(此处感谢诗文):添加了一个随机的诊断

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

3、因为数据太大,运行不出来,做了个降维X_data = compress_feature(X_data, dim=50)

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

4、其他的都跟之前差不多

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

【呼呼】同学从完完全全的零基础用一个月的时间走到这一步真的很不容易,付出了很大的努力,跑通之后的果实还是很甘甜的,同学加油,期待你下一步的成果。

影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习

上一篇:技术/广告 文章分类器(二)


下一篇:机器学习——森林火灾图片识别