JoHof/lungmask

Automated lung segmentation in CT

解决的问题

当患者患有严重疾病(如肿瘤、积液或重度纤维化)时,阅读肺部 CT 扫描会更加困难。标准工具在这些情况下往往无法清晰地勾勒出肺部轮廓。本项目提供了经过训练的 U-net 模型,即使在存在致密病理的情况下,也能自动分割(勾勒)CT 图像中的肺部。它还提供了将肺部分为左右或单个肺叶的模型,并可以融合结果以结合各自的优势。

工作原理

该包包含四个预训练的 U-net 模型:

  • U-net(R231) – 默认模型。它处理单个 CT 切片,分别提取左右肺,并包含空气腔、肿瘤和积液。它不包括气管。在多样化的数据集上训练。
  • U-net(LTRCLobes) – 在 LTRC 数据集的子集上训练。它将肺部分为五个肺叶,但在存在致密病理或肺叶间裂在每个切片上不可见时表现不佳。
  • U-net(LTRCLobes_R231) – 同时运行 R231 和 LTRCLobes 模型并融合结果。LTRCLobes 的假阴性由 R231 预测填充并映射到邻近的肺叶标签;假阳性被移除。这种融合计算量大,每个体积可能需要几分钟。
  • U-net(R231CovidWeb) – R231 的一个变体,额外在从常规图像格式映射回亨氏单位(HU)的 COVID-19 CT 切片上训练。适用于裁剪、标注或压缩的网络图像。

所有模型都是经过训练的 U-net,这是一种用于图像分割的神经网络。该包可以作为命令行工具或 Python 模块运行。它使用 SimpleITK 进行图像输入输出(或从版本 0.2.9 开始直接使用 numpy 数组)。GPU 支持显著加快处理速度(从几分钟缩短到几秒)。

适用人群

  • 处理肺部 CT 数据的研究人员和临床医生,尤其是处理严重病理或 COVID-19 病例的人员。
  • 需要在 Python 管道或 CLI 工具中实现自动肺部分割的开发人员。
  • 任何希望在 CT 体积中区分左右肺或单个肺叶的人。

亮点

  • 四个即用型模型,满足不同需求(默认、肺叶、融合、COVID 调整)。
  • 处理其他方法难以处理的致密病理。
  • 通过 pip 或 conda 简单安装,并提供简单的 Python API(LMInferer)。
  • 可以自动处理 DICOM 目录,找到最大的体积。
  • 支持 GPU(快速)和 CPU(慢速)推理。
  • 包含模型融合选项,可结合肺叶和全肺分割。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目