Skip to content

tyx736/Liver-cancer-segmentation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Liver-cancer-segmentation

一、数据预处理

sortnii.ipynb: 本文件主要是对每个病人CT图像的预处理,包括阈值截断、选取病变周边切片、统一大小以及针对3D模型的扩展;

设置阈值上下限为upper = 200,lower = -200,统一大小为size = 16 ,选取上下扩展CT张数为expand_slice = 6,步长为1;

阈值截断部分:将大于上限的像素值设置为上限,小于下限的像素值设置为下限;

选取病变周边切片:选取出包含病变的切片范围,然后在上下两个方向进行扩展,只保留有病变部分与扩展范围(例,假设病人有100张CT切片,只有40-50切片包含病变,扩展后我们只选取34-56切片作为训练数据);

统一大小部分:为每个病人的nii统一切片数,具体做法为对(病变+扩展部分)小于16张的用全黑图片补齐为16张,成为1个nii;对17-32张的取两侧的16张成为两个nii(比如18张切片我们选取1-16与3-18做成两个切片数为16的nii);对32-48的取两侧与正中间的16张切片成为3个nii(比如44张切片我们选取1-16,29-44,15-30做成3个nii);

针对3D模型的扩展:由于3D网络只能接受固定切片数的CT,要按步长对病人CT图进行切分。比如步长为1,病人有18张切片,则选取1-16,2-17,3-18切片制作为3个nii;步长为2,则选取1-16,3-18制作两个nii;

二、U-net(2D)

应用了medicaltorch中封装的Unet模型,对数据进行训练与模型保存。

medicaltorch_localdata.py:对初始未整理的数据打乱进行训练与模型保存;

medicaltorch_localdata_16.py:对统一大小为16切片数的nii进行训练与模型保存,不打乱顺序,目前表现最好;

medicaltorch_localdata_16_512.py:与上一个相同,只是把图片分辨率由256改为了512;

model_test.ipynb:对2D模型结果进行可视化与dice_loss计算(256分辨率下的);

model_test_512.ipynb:对2D模型结果进行可视化与dice_loss计算(512分辨率下的);

三、V-net(3D)

应用了3D版的V-net模型,并进行训练与模型保存,以及3D模型测试。

loss文件夹是对两种损失函数的定义,一般用dice_loss;

net文件夹是对网络的定义,DenseVnet.py包含的是DenseVnet,为了减轻过拟合,自己改进成了simpleVnet;

train_ds.py:用于模型训练,可以自己选取loss与net,保存模型,记录成绩;

val.py:用于3D模型测试与dice_loss计算,观察模型在测试集上的效果;

val_vote.py:用于3D模型测试与dice_loss计算,观察模型在测试集上的效果,是val.py的扩展版;可以选择模型融合方式;可以自己选择参数进行后处理(腐蚀膨胀连通域等);可以选择是否保存对测试集的预测结果;

plot_v.ipynb:对3D模型的输出结果进行可视化(包含真正癌变部位与预测癌变部位对比);

About

Pytorch Unet Vnet

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published