医学图像深度学习工具箱

DeepRad的Python项目详细描述


深度rad

这个项目是为了开发与使用深度学习的医学成像相关的软件。deeprad有两种不同的模式(快速使用和开发模式),分别针对不同的目标和不同编程水平的研究人员。

Deeprad的特点是使用CNN进行大规模训练,例如,扫描量超过10万次。将这些数据集直接加载到内存中可能会导致内存不足(OOM)错误。分层数据格式(HDF)是一种文件格式(HDF4、HDF5)的集合,用于存储和组织大量数据。deeprad提供数据管理工具来帮助用户将数据转换为hdf5文件。在deeprad的训练过程中,只有一批数据将从存储数据集的硬盘驱动器加载到内存中。由于所有过程都可以在gui中完成,deeprad对不熟悉编码的人也很友好。

这是Deeprad的第一个版本。目前我们支持三维分割的训练过程。我们将添加更多功能,使DeepRad更加强大。

< H2>第0步。依赖项的安装

建议使用python 3.6。

从(a)或(b)中选择一种方法来安装从属软件包。

a.逐个安装依赖项

(for GPU user)
conda install -c anaconda tensorflow-gpu
conda install -c anaconda keras-gpu 
(for CPU user)
conda install -c anaconda tensorflow 
conda install -c anaconda keras
(common package)
conda install -c conda-forge pillow 
conda install -c conda-forge opencv 
conda install -c conda-forge nibabel
conda install -c conda-forge qimage2ndarray
conda install -c simpleitk simpleitk
conda install -c conda-forge nilearn
conda install -c conda-forge pytables
conda install -c anaconda nomkl
pip install git+https://www.github.com/farizrahman4u/keras-contrib.git

b.使用安装程序.sh

运行installation.sh。可能需要一段时间(~15分钟)。

bash installation.sh
< H2>第1步。数据集准备

文件夹结构

有几种可能的方法可以构建文件夹。

文件夹树1

.
├── <data folder>
│   ├── train                   # Data must be in a folder called "train" 
│   │   ├── <Volume N>          # This is customized
│   │   │   ├── <Modality M>    # This is customized
│   │   │   ├── ...            
│   │   │   ├── truth.nii.gz OR truth.nii or truth.csv   # Labels must be named as "truth"
│   │   └── ...
└── ...

示例:

data_example
├── type1
│   ├── train
│   │   ├── Brats17_2013_0_1
│   │   │   ├── t1.nii.gz
│   │   │   ├── t1ce.nii.gz
│   │   │   ├── t2.nii.gz
│   │   │   ├── flair.nii.gz
│   │   │   ├── truth.nii.gz
│   │   ├── Brats17_2013_15_1
│   │   │   ├── t1.nii.gz
│   │   │   ├── t1ce.nii.gz
│   │   │   ├── t2.nii.gz
│   │   │   ├── flair.nii.gz
│   │   │   ├── truth.nii.gz
└── ...

文件夹树2

.
├── <data folder>
│   ├── data                    # Data must be in a folder called "data"
│   │   ├── <Volume N>          # This is customized
│   │   │   ├── <Modality M>    # This is customized
│   │   │   ├── ...
│   ├── label                   # Data must be in a folder called "label"
│   │   ├── <Volume N>          # The name shoule be the same as that in "data" folder
│   │   │   ├── truth.nii.gz OR truth.nii or truth.csv   # Labels must be named as "truth"
│   │   └── ...
└── ...

示例:

data_example
├── type2
│   ├── data
│   │   ├── Brats17_2013_0_1
│   │   │   ├── t1.nii.gz
│   │   │   ├── t1ce.nii.gz
│   │   │   ├── t2.nii.gz
│   │   │   ├── flair.nii.gz
│   │   ├── Brats17_2013_15_1
│   │   │   ├── t1.nii.gz
│   │   │   ├── t1ce.nii.gz
│   │   │   ├── t2.nii.gz
│   │   │   ├── flair.nii.gz
│   ├── label
│   │   ├── Brats17_2013_0_1
│   │   │   └── truth.nii.gz
│   │   ├── Brats17_2013_15_1
│   │   │   └── truth.nii.gz
└── ...

文件夹树3(用于合成)

.
├── <data folder>
│   ├── data                    # Data must be in a folder called "data"
│   │   ├── <Volume N>          # This is customized
│   ├── label                   # Data must be in a folder called "label"
│   │   ├── <Volume N>          # The name shoule be the same as that in "data" folder
└── ...

示例:

data_example
├── type3
│   ├── data
│   │   ├── Brats17_2013_0_1.nii.gz
│   │   ├── Brats17_2013_15_1.nii.gz
│   ├── label
│   │   ├── Brats17_2013_0_1.nii.gz
│   │   ├── Brats17_2013_15_1.nii.gz
└── ...

文件夹树4(用于分类)

.
├── <data folder>
│   ├── data                    # Data must be in a folder called "data"
│   │   ├── <Volume N>          # This is customized
│   ├── label                   # Data must be in a folder called "label"
│   │   ├── <Volume N>          # The name shoule be the same as that in "data" folder
└── ...

示例:

(for GPU user)
conda install -c anaconda tensorflow-gpu
conda install -c anaconda keras-gpu 
(for CPU user)
conda install -c anaconda tensorflow 
conda install -c anaconda keras
(common package)
conda install -c conda-forge pillow 
conda install -c conda-forge opencv 
conda install -c conda-forge nibabel
conda install -c conda-forge qimage2ndarray
conda install -c simpleitk simpleitk
conda install -c conda-forge nilearn
conda install -c conda-forge pytables
conda install -c anaconda nomkl
pip install git+https://www.github.com/farizrahman4u/keras-contrib.git
0

文件夹树5(用于分类)

(for GPU user)
conda install -c anaconda tensorflow-gpu
conda install -c anaconda keras-gpu 
(for CPU user)
conda install -c anaconda tensorflow 
conda install -c anaconda keras
(common package)
conda install -c conda-forge pillow 
conda install -c conda-forge opencv 
conda install -c conda-forge nibabel
conda install -c conda-forge qimage2ndarray
conda install -c simpleitk simpleitk
conda install -c conda-forge nilearn
conda install -c conda-forge pytables
conda install -c anaconda nomkl
pip install git+https://www.github.com/farizrahman4u/keras-contrib.git
1

示例:

(for GPU user)
conda install -c anaconda tensorflow-gpu
conda install -c anaconda keras-gpu 
(for CPU user)
conda install -c anaconda tensorflow 
conda install -c anaconda keras
(common package)
conda install -c conda-forge pillow 
conda install -c conda-forge opencv 
conda install -c conda-forge nibabel
conda install -c conda-forge qimage2ndarray
conda install -c simpleitk simpleitk
conda install -c conda-forge nilearn
conda install -c conda-forge pytables
conda install -c anaconda nomkl
pip install git+https://www.github.com/farizrahman4u/keras-contrib.git
2

帮助重命名"truth"的工具

因为deeprad会询问所有名为"truth"的标签,所以提供了一个工具来简化此过程。假设所有文件夹都被构造为上面的"type1"。

(for GPU user)
conda install -c anaconda tensorflow-gpu
conda install -c anaconda keras-gpu 
(for CPU user)
conda install -c anaconda tensorflow 
conda install -c anaconda keras
(common package)
conda install -c conda-forge pillow 
conda install -c conda-forge opencv 
conda install -c conda-forge nibabel
conda install -c conda-forge qimage2ndarray
conda install -c simpleitk simpleitk
conda install -c conda-forge nilearn
conda install -c conda-forge pytables
conda install -c anaconda nomkl
pip install git+https://www.github.com/farizrahman4u/keras-contrib.git
3

然而,大约有100卷需要训练,但所有分割结果都被命名为"seg"。现在,在根目录中运行以下代码。

(for GPU user)
conda install -c anaconda tensorflow-gpu
conda install -c anaconda keras-gpu 
(for CPU user)
conda install -c anaconda tensorflow 
conda install -c anaconda keras
(common package)
conda install -c conda-forge pillow 
conda install -c conda-forge opencv 
conda install -c conda-forge nibabel
conda install -c conda-forge qimage2ndarray
conda install -c simpleitk simpleitk
conda install -c conda-forge nilearn
conda install -c conda-forge pytables
conda install -c anaconda nomkl
pip install git+https://www.github.com/farizrahman4u/keras-contrib.git
4

参数"--seg_name"是所有要更改为"truth"的文件中name的公共部分。运行此代码后,文件夹将如下所示:

(for GPU user)
conda install -c anaconda tensorflow-gpu
conda install -c anaconda keras-gpu 
(for CPU user)
conda install -c anaconda tensorflow 
conda install -c anaconda keras
(common package)
conda install -c conda-forge pillow 
conda install -c conda-forge opencv 
conda install -c conda-forge nibabel
conda install -c conda-forge qimage2ndarray
conda install -c simpleitk simpleitk
conda install -c conda-forge nilearn
conda install -c conda-forge pytables
conda install -c anaconda nomkl
pip install git+https://www.github.com/farizrahman4u/keras-contrib.git
5

将数据转换为HDF5格式。

deeprad提供了一个工具来加载数据集并将其转换为.hdf5文件,以便更好地兼容大型数据集。 要打开deeprad,请按照步骤0安装相关软件包,并在deeprad文件夹中运行以下代码:

(for GPU user)
conda install -c anaconda tensorflow-gpu
conda install -c anaconda keras-gpu 
(for CPU user)
conda install -c anaconda tensorflow 
conda install -c anaconda keras
(common package)
conda install -c conda-forge pillow 
conda install -c conda-forge opencv 
conda install -c conda-forge nibabel
conda install -c conda-forge qimage2ndarray
conda install -c simpleitk simpleitk
conda install -c conda-forge nilearn
conda install -c conda-forge pytables
conda install -c anaconda nomkl
pip install git+https://www.github.com/farizrahman4u/keras-contrib.git
6

然后我们可以看到一个主窗口。现在点击顶部的"快速使用"和"菜单"。单击"数据管理工具"假设我们有以下文件夹结构。

(for GPU user)
conda install -c anaconda tensorflow-gpu
conda install -c anaconda keras-gpu 
(for CPU user)
conda install -c anaconda tensorflow 
conda install -c anaconda keras
(common package)
conda install -c conda-forge pillow 
conda install -c conda-forge opencv 
conda install -c conda-forge nibabel
conda install -c conda-forge qimage2ndarray
conda install -c simpleitk simpleitk
conda install -c conda-forge nilearn
conda install -c conda-forge pytables
conda install -c anaconda nomkl
pip install git+https://www.github.com/farizrahman4u/keras-contrib.git
5

在数据管理工具中,数据目录如下:

(for GPU user)
conda install -c anaconda tensorflow-gpu
conda install -c anaconda keras-gpu 
(for CPU user)
conda install -c anaconda tensorflow 
conda install -c anaconda keras
(common package)
conda install -c conda-forge pillow 
conda install -c conda-forge opencv 
conda install -c conda-forge nibabel
conda install -c conda-forge qimage2ndarray
conda install -c simpleitk simpleitk
conda install -c conda-forge nilearn
conda install -c conda-forge pytables
conda install -c anaconda nomkl
pip install git+https://www.github.com/farizrahman4u/keras-contrib.git
8

我们可以指定输出目录如下:

(for GPU user)
conda install -c anaconda tensorflow-gpu
conda install -c anaconda keras-gpu 
(for CPU user)
conda install -c anaconda tensorflow 
conda install -c anaconda keras
(common package)
conda install -c conda-forge pillow 
conda install -c conda-forge opencv 
conda install -c conda-forge nibabel
conda install -c conda-forge qimage2ndarray
conda install -c simpleitk simpleitk
conda install -c conda-forge nilearn
conda install -c conda-forge pytables
conda install -c anaconda nomkl
pip install git+https://www.github.com/farizrahman4u/keras-contrib.git
9

在指定目录之后,我们可以移动到标准化为。提供两种标准化模式:标准模式和间隔模式。

  1. 标准(Z分数)
    • 数据=(数据/平均值)/标准
    • 平均值和标准差是根据所有值计算的,而不仅仅是非零值
  2. 区间
    • 数据-=数据最小值
    • data/=(数据最大值-数据最小值)/(最大值-最小值)
    • 数据+=最小值

规范化类型确定如何计算平均值/标准差或数据最大值/数据最小值。假设我们有100卷,在每卷中,我们有"T1","T2","T1CE","flair"模式。每个成像设备都有形状(240、240、155)。

  • 全局:参数将在100*4*(240、240、155)个数据集中计算
  • 每卷:仅在每个(240、240、155)数据集上计算帕累米
  • 每层:计算帕累米仅在每个(240,240)切片上。

图像形状是输出数据集形状。由于我们使用的是三维模型,因此建议:

  • 行:64
  • 列:64
  • 频道:64

右边是一个预览工具来查看我们的数据集。如果我们指定卷路径,例如:

bash installation.sh
0

设置参数后,单击"转换"。注意:可能需要几分钟,不要点击其他东西,否则会有几个未知的错误。我们可以在路径中看到"data.hdf5",例如:

bash installation.sh
1 < H2>第2步。主要功能(以分段为例)

测试环境:16G内存和GTX 1080 GPU,测试5卷BRATS 2018数据集。

brats数据集:https://www.med.upenn.edu/sbia/brats2018/data.html

在主窗口中单击"分段"。在这里我们可以看到5步。现在我们共享推荐设置,如果没有提到,请使用默认设置。

<H3>1。准备数据
bash installation.sh
2 <H3>2。选择型号
bash installation.sh
3 <H3>3。数据增强
bash installation.sh
4 <H3>4。训练配置
bash installation.sh
5 <H3>5。输出配置
bash installation.sh
6

之后,点击"开始"来训练模型。我们可以监控培训进度。

visualization

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
多线程重新构造使用线程池和BlockingQueue的I/O密集型Java web服务   java SWT CTabFolder检查CTAB是否存在   java如何防止具体类的实例化?   java如何将子域定向到正确的JBoss应用程序?   java Android外部文件出现不一致   java FileSystemNotFoundException:未安装提供程序“jndi”   显示jframe上的java隐藏单选按钮   java CXF客户端TCP连接在每个请求之间关闭   Hadoop查询、日期、循环、BASH或Java   java从长类型到十进制类型对象的转换类型错误   java为什么不在用户消息中提供用户提供的数据?有可能的威胁/攻击吗?   使用作用域存储MediaStore的应用程序中的java共享意图问题   java我可以通过将成员指针传递给方法并在方法中分配来初始化它吗?   java如何在一个包含正负值的数组中找到最大的负值?   java有比较二叉树路径的简单方法吗?   java Swagger(ui)不显示操作   java KairosDB缺失值的线性插值   用于此特定求和的java循环