CT和MR中基于CNN的全肝和肝病灶分割
项目描述
pyliverlesionseg - CT 和 MR 中基于 CNN 的肝脏和肝脏病变分割
- pyliverlesionseg 是一个基于 Keras 和 Tensorflow 的 Python 框架,用于执行基于体素的肝脏和病变分割。它基于DeepVoxNet 版本 1构建,该版本是 Keras 的深度学习处理框架,由 KU Leuven 医学影像研究中心 (MIRC) 开发。
- 它允许对图像的片段(即补丁、子体积)进行训练。段由 subject_id 和中心体素的坐标标识。
参考
- Robben, D.、Bertels, J.、Willems, S.、Vandermeulen, D.、Maes, F.、Suetens, P. (2018)。DeepVoxNet:3D 图像的体素预测。报告编号 KUL/ESAT/PSI/1801。
- 唐,X. 等人。基于深度学习和人工调整的全肝分割在SIRT中临床使用,欧洲核医学与分子成像杂志,2020年47期,链接
安装
从 python 包索引安装
pip install pyliverlesionseg
从github下载
安装包的另一种方法(特别是对于开发人员)是克隆这个存储库或下载 github 版本。使用此方法时,请确保环境变量PYTHONPATH
包含克隆/下载包的位置。
肝脏分割的离线模型预测
- 输入图像为DICOM格式
python predict_liver_lesion_seg.py <data_input> --seg_liver
<data_input> 是图像(CT或MR)的输入dicom文件的目录或需要用户定义的nifti文件(CT或MR)的路径。
- 输入图像(例如 CT)是 NIFTI 格式
python predict_liver_lesion_seg.py <data_input> --seg_liver --input_nifti --Modality CT
<data_input> 是图像(CT或MR)的输入dicom文件的目录或需要用户定义的nifti文件(CT或MR)的路径。
肝脏和肝脏病变分割的 Dicom 服务
除了离线分段的脚本之外,我们还提供了两个脚本来为分段运行 dicom 服务。这些服务可以通过以下方式启动:
python dcm_server_liver_seg.py
python dcm_server_liver_lesion_seg.py
这些服务启动一个 dicom 服务器,该服务器正在侦听可以为应分段的传入 dicom 系列指定的端口。在一系列到达后(在 dicom 关联被释放后),开始 CNN 处理并将生成的 RTstruct 发送回发送方。为了分割肝脏病变,必须首先发送定义整个肝脏的 RTstruct,然后是要分割的图像。像往常一样,-h
可用于查看所有命令行参数。默认监听端口为 11112 和 11113,RTstruct 通过端口 104 发回。
病变分割的模型预测
- 输入图像为DICOM格式
python predict_liver_lesion_seg.py <data_input> --seg_lesion
<data_input> 是图像(CT或MR)的输入dicom文件的目录或需要用户定义的nifti文件(CT或MR)的路径。
- 输入图像(例如 CT)是 NIFTI 格式
python predict_liver_lesion_seg.py <data_input> --seg_lesion --input_nifti --Modality CT
<data_input> 是图像(CT或MR)的输入dicom文件的目录或需要用户定义的nifti文件(CT或MR)的路径。
CNN 训练数据集的组织
输入数据需要按如下方式组织:
应该有一个文件夹(其目录在位置参数中指定data_path
)包含一个Training
用于训练数据集的子文件夹和/或一个Testing
用于测试数据集的子文件夹。在每个子文件夹(例如Training
)中,应该有子文件夹case_0
, case_1
, case_2
, ...,其中每个子文件夹都包含一个 NIFTI 格式的预处理图像(文件名在可选参数中指定inputs
)和一个预处理的 ground-truth NIFTI 格式的分段(文件名在可选参数中指定outputs
)。
`-- Training
|-- case_0
| |-- preprocessed_image.nii
| |-- segmentation.nii
|-- case_1
| |-- preprocessed_image.nii
| |-- segmentation.nii
...
`-- Testing
|-- case_0
| |-- preprocessed_image.nii
| |-- segmentation.nii
|-- case_1
| |-- preprocessed_image.nii
| |-- segmentation.nii
...
培训期间用于验证的案例也应存储在该Training
文件夹中。要指定用于训练和验证的案例,您可以使用--training_index_range
和 --validation_index_range
参数。
肝脏分割的模型训练
-
脚本“train_liver_lesion_seg.py”的默认参数用于 CNN 肝脏分割训练。对于 CNN 病灶分割训练,需要给出一些参数的新值。
-
CNN 模型的输入图像采用 NIFTI 格式。
-
预处理:原始图像在放入CNN模型之前需要进行预处理。用于预处理原始图像的代码可以在 pyliverlesionseg/CNN_liver_lesion_seg_CT_MR_functions.py 中找到。
- 应首先裁剪原始图像,使裁剪后的图像仅包含横轴切片中的整个腹部和 z 方向上的整个肝脏。这可以通过 pyliverlesionseg.CNN_liver_lesion_seg_CT_MR_functions.py 中的函数“crop_ct_image”(用于 CT)或“crop_mr_image”(用于 MR)来完成。这两个函数将生成一个保存在 csv 文件中的边界框。您也可以自己定义边界框。
- 之后,裁剪后的图像需要重新采样到 3 mm 的各向同性体素大小。
- 裁剪和重采样的 CT 需要在 -200 HU 和 200 HU 之间进行裁剪,并通过线性映射归一化到 [-0.5, 0.5] 的强度范围。裁剪和重采样的 MR 需要在 MR 的最小强度和最小强度 + 0.8 * MR 的强度范围之间进行裁剪,并通过线性映射归一化到 [-0.5, 0.5] 的强度范围。
- 地面实况肝脏分割也应使用边界框进行裁剪,并重新采样为 3 mm 的各向同性体素大小。
-
用于训练 CNN 进行肝脏分割的脚本可以通过以下方式运行:
python train_liver_lesion_seg.py <data_path>
<data_path> 是包含需要由用户定义的训练和/或测试数据集的文件夹的目录。
肝病灶分割模型训练
-
CNN 模型的输入图像采用 NIFTI 格式。
-
预处理:原始图像在放入CNN模型之前需要进行预处理。用于预处理原始图像的代码可以在 pyliverlesionseg/CNN_liver_lesion_seg_CT_MR_functions.py 中找到。
- 原始 CT 需要在 -200 HU 和 200 HU 之间进行裁剪,并通过线性映射归一化到 [-0.5, 0.5] 的强度范围。原始 MR 强度减去肝面罩内 MR 的中值强度,夹在肝面罩内集中式 MR 的最小和最大强度之间,并通过线性映射归一化到 [-0.5, 0.5] 的强度范围.
- 标准化图像被重新采样为 [1 mm, 1 mm, 3 mm] 的体素大小。
- 重采样的图像被重采样的肝掩码所掩盖,并使用重采样的肝掩码的边界框进行裁剪。重采样肝脏掩码外的图像强度设置为 -0.5。
- 地面实况病变分割也应该重新采样到 [1 mm, 1 mm, 3 mm] 的体素大小,并使用重新采样的肝脏掩码的边界框进行裁剪。
-
用于训练 CNN 进行病变分割的脚本可以通过以下方式运行:
python train_liver_lesion_seg.py <data_path> --nb_subjects 180 --training_index_range 145 --validation_index_range 145 180 --run_folder_name Runs_lesion_seg_output_size_92_84_42 --network_architecture_id 2 --segment_size 92 84 42 --no_center_sampling --sgd_batch_size 4 --prediction_batch_size 4 --nb_samples_training 320 --nb_samples_validation 140 --max_number_of_subjects_used_for_training 80 --max_number_of_subjects_used_for_validation 35 --nb_subepochs 5
<data_path> 是包含需要由用户定义的训练和/或测试数据集的文件夹的目录。
致谢
该项目已获得欧洲 Horizon2020 ITN 项目 (HYBRID, MSCA 764458, https://www.hybrid2020.eu/home.html ) 和法兰德斯研究基金会 (FWO, 赠款 G082418N) 的资助。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
pyliverlesionseg -0.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4d085c0658190fc625675b608b6648e2dbc40c6a3f79ee48ff64839b03cf1fc7 |
|
MD5 | 0a0ca238e740a4b935776ac4b29f46e8 |
|
布莱克2-256 | 65b2f02421c82a53df43f483d05bbfa3da9431ea2d5e44ec5c33cb5fe24a12d7 |
pyliverlesionseg -0.3-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ffe1576aefff5922ea8d1cfa2c50864cda97798798559542b9517689fd290cb8 |
|
MD5 | b299eacdaee0315ad3747e0e2e799e20 |
|
布莱克2-256 | 167371b4f617f4051336af9624ab7d0dc2c8453eeb24e7bfabb3bd46b90e9b30 |