Deeplung代码复现(一)

文章目录

    • Deeplung代码复现(一)
      • 一、环境配置
      • 二、CT图像预处理
      • 三、原数据集和预处理后数据集结节可视化
        • 1、原数据集结节可视化
        • 2、预处理后的数据集结节可视化

Deeplung代码复现(一)

最近在做肺部结节检测,看了deeplung的论文决定动手复现一下,复现过程有些长,所以分两部分记录。由于是全部完成后才写博客,所以时间有些长了,可能记录不全,望理解。这部分主要记录环境配置、预处理及结节可视化。

一、环境配置

我的环境:ubantu16.04 cuda9.0 python2.7 pytorch1.1.0
1.创建环境

conda create --name Deeplung python=2.7
conda activate Deeplung

Deeplung代码复现(一)_第1张图片

2.安装pytorch

conda install pytorch=1.1.0 torchvision cuda90 -c pytorch

下面验证是否安装成功:输入python,通过print(torch__.version__)来查询Torch版本,可以查到证明安装成功
Deeplung代码复现(一)_第2张图片

3.安装其他依赖

pip install h5py
pip install SimpleITK==0.10.0
pip install numpy==1.11.3
pip install matplotlib==2.0.0
pip install scikit-image==0.12.3
pip install scipy==0.18.1

打开代码还有其他划红线的地方没有安装,就按缺什么包进行安装即可。

二、CT图像预处理

此部分参考了博客对预处理代码prepare.py的讲解,在一定的理解的基础上进行了处理。

  1. 首先需要在config_training.py中对所有路径进行修改,改成自己的路径
config = {'train_data_path':['/media/data1/wentao/tianchi/luna16/subset0/',
                             '/media/data1/wentao/tianchi/luna16/subset1/',
                             '/media/data1/wentao/tianchi/luna16/subset2/',
                             '/media/data1/wentao/tianchi/luna16/subset3/',
                             '/media/data1/wentao/tianchi/luna16/subset4/',
                             '/media/data1/wentao/tianchi/luna16/subset5/',
                             '/media/data1/wentao/tianchi/luna16/subset6/',
                             '/media/data1/wentao/tianchi/luna16/subset7/',
                             '/media/data1/wentao/tianchi/luna16/subset8/'], # 改成自己的训练集路径
          'val_data_path':['/media/data1/wentao/tianchi/luna16/subset9/'],  # 改成自己的验证集路径 
          'test_data_path':['/media/data1/wentao/tianchi/luna16/subset9/'],   # 改成自己的测试集路径
          
          'train_preprocess_result_path':'/media/data1/wentao/tianchi/luna16/preprocess/',  # 此处为预处理后的训练集路径
          'val_preprocess_result_path':'/media/data1/wentao/tianchi/luna16/preprocess/',    # 此处为预处理后的验证集路径
          'test_preprocess_result_path':'/media/data1/wentao/tianchi/luna16/preprocess/',  # 此处为预处理后的测试集路径
          
          'train_annos_path':'/media/data1/wentao/tianchi/luna16/CSVFILES/annotations.csv',  #  此处为标签文件的路径
          'val_annos_path':'/media/data1/wentao/tianchi/luna16/CSVFILES/annotations.csv',
          'test_annos_path':'/media/data1/wentao/tianchi/luna16/CSVFILES/annotations.csv',

          'black_list':[],
          
          'preprocessing_backend':'python',

          'luna_segment':'/media/data1/wentao/tianchi/luna16/seg-lungs-LUNA16/',  # 肺部分割掩码的路径
          'preprocess_result_path':'/media/data1/wentao/tianchi/luna16/preprocess/',  # 此处为存放预处理结果的路径
          'luna_data':'/media/data1/wentao/tianchi/luna16/',  # luna16数据集的原始数据路径
          'luna_label':'/media/data1/wentao/tianchi/luna16/CSVFILES/annotations.csv'  # 病例标签路径
         } 
  1. 运行prepare.py就可以在你写的预处理结果路径下找到生成的结果
    我的路径为:'preprocess_result_path':'/home/dlut/cfr/lung-cancer/Deeplung-master/data/luna16/preprocess/',所以我的生成结果如下:
    Deeplung代码复现(一)_第3张图片
    每个subset下为每张CT生成了6个文件:

Deeplung代码复现(一)_第4张图片

  1. 这六个文件分别为:id_clean.npy,id_extendbox.npy,id_label.npy,id_mask.npy,id_origin.npy,id_spacing.npy。
文件 含义
id_clean.npy 预处理过的图像的像素数据
id_extendbox.npy 掩码的最小外接box
id_label.npy 从annotations来,已经转换成体素坐标的结节标签
id_mask.npy 应用了新分辨率的mask
id_origin.npy 从.mhd中读取的origin
id_spacing.npy 从.mhd中读取的spacing

(这里都是自己看代码一句一句调试得出的,若不正确请指出,请谅解~~~)

三、原数据集和预处理后数据集结节可视化

1、原数据集结节可视化

原始数据集中,每张CT都保存为一个.mhd和.raw文件:

.mhd文件:给出CT图像中的一些基本信息,重要的有CT原点坐标、像素间隔(世界坐标系下)
.raw文件:用来存储CT的具体数据

Deeplung代码复现(一)_第5张图片

annotations.csv中给出了不同CT中结节的世界坐标和直径

我们需要把在世界坐标系下的结节的坐标转换到体素坐标系来显示,转换公式:

世界坐标系(结节位置-原点位置)/切片体素间距=体素坐标系(结节位置-(0,0,0))/1

可视化结果:
Deeplung代码复现(一)_第6张图片

2、预处理后的数据集结节可视化

预处理后每个CT存成了6个文件,其中_label.npy就是结节的标签,并且是已经转化为体素坐标的,所以直接读取其中的坐标(z,y,x,d),在_clean.npy上画框就可以了,我的可视化结果如下图:
Deeplung代码复现(一)_第7张图片

你可能感兴趣的:(医学图像,python,深度学习(代码),python)