Python 中用于医疗 AI(尤其是医疗影像、电子病历、预测建模等)的常用库在 2026 年已经非常成熟,主要分为两大类:

  1. 医疗影像(Medical Imaging):处理 DICOM、NIfTI、3D/4D 体积数据、分割、分类、配准等
  2. 医疗数据/预测建模:处理结构化 EHR 数据、时间序列、代码预测、风险评分等

以下是 2025–2026 年最活跃、最被实际使用的库(按领域热度排序),附带真实案例代码片段

医疗影像领域 Top 库(2026 年主流)

排名 库名 主要用途 底层框架 活跃度 / 社区 典型场景(2026) 学习曲线
1 MONAI 医疗影像深度学习全栈(预处理→模型→部署) PyTorch ★★★★★ 3D/4D 分割、分类、自监督、Auto3DSeg ★★★★☆
2 TorchIO 医疗图像加载、增强、patch采样 PyTorch ★★★★☆ 数据增强、patch-based 训练 ★★★☆☆
3 SimpleITK 图像配准、分割、滤波、格式转换 ITK ★★★★☆ 经典图像处理、配准、非DL任务 ★★★★☆
4 pydicom DICOM 文件读写、元数据操作 纯 Python ★★★★☆ DICOM 预处理、匿名化、标签提取 ★★☆☆☆
5 nibabel NIfTI (.nii/.nii.gz) 读写 纯 Python ★★★★☆ 脑影像(MRI/fMRI)处理 ★★☆☆☆
6 MedPy 经典医疗图像处理(滤波、度量) NumPy/SciPy ★★★☆☆ 老项目迁移、简单分割度量 ★★★☆☆
7 PyRadiomics 影像组学特征提取(radiomics) SimpleITK ★★★★☆ 肿瘤预后、治疗响应预测 ★★★★☆

医疗数据 / 预测建模领域主流库

库名 主要用途 典型任务 社区活跃度
PyHealth 医疗时间序列 + EHR 建模全流程 死亡/再入院/药物推荐/诊断预测 ★★★★☆
Hugging Face Transformers (biomed 模型) 临床文本 / 生物医学 NLP 临床笔记分类、实体识别、Med-PaLM-like ★★★★★
scikit-learn / XGBoost / LightGBM 结构化数据预测(结合 PyHealth) 风险评分、ICU 预测 ★★★★★

真实案例 + 代码解析(2026 年视角)

案例 1:MONAI 做 3D 肝脏自动分割(最热门医疗 AI 任务之一)
# pip install monai torch torchvision
import monai
from monai.transforms import (
    Compose, LoadImaged, AddChanneld, ScaleIntensityRanged,
    CropForegroundd, RandCropByPosNegLabeld, RandAffined,
    EnsureTyped, ToTensord
)
from monai.networks.nets import UNet
from monai.inferers import sliding_window_inference
from monai.data import CacheDataset, DataLoader

# 1. 数据变换(医疗专用增强)
train_transforms = Compose([
    LoadImaged(keys=["image", "label"]),           # 支持 DICOM / NIfTI
    AddChanneld(keys=["image", "label"]),
    ScaleIntensityRanged(keys=["image"], a_min=-100, a_max=250, b_min=0.0, b_max=1.0, clip=True),
    CropForegroundd(keys=["image", "label"], source_key="image"),
    RandCropByPosNegLabeld(
        keys=["image", "label"],
        label_key="label",
        spatial_size=(96, 96, 96),
        pos=1, neg=1, num_samples=4
    ),
    RandAffined(keys=["image", "label"], prob=0.2, ...),  # 旋转/缩放/平移
    EnsureTyped(keys=["image", "label"]),
    ToTensord(keys=["image", "label"]),
])

# 2. 数据集(支持 CacheDataset 加速)
train_ds = CacheDataset(data=train_files, transform=train_transforms)
train_loader = DataLoader(train_ds, batch_size=2, num_workers=4)

# 3. 模型(MONAI 提供大量预定义网络)
model = UNet(
    spatial_dims=3,
    in_channels=1,
    out_channels=2,          # liver + background
    channels=(16, 32, 64, 128, 256),
    strides=(2, 2, 2, 2),
).cuda()

# 4. 训练(可结合 Lightning / Ignite)
# ...

# 5. 推理(sliding window 大体积推理)
model.eval()
with torch.no_grad():
    pred = sliding_window_inference(inputs=image, roi_size=(96,96,96), sw_batch_size=4, predictor=model)

为什么 MONAI 是 2026 年医疗影像首选?

  • 内置大量医疗专用 transform(HU 窗、强度归一、patch 采样)
  • 支持 DICOM → NIfTI 转换、MONAI Label(半自动标注)
  • MONAI Deploy(临床级部署 MAP 格式)
  • Auto3DSeg(零代码自动分割 pipeline)
案例 2:PyHealth 做 ICU 死亡率预测(EHR 时间序列)
# pip install pyhealth
from pyhealth.datasets import MIMIC3Dataset
from pyhealth.models import RETAIN
from pyhealth.trainer import Trainer

# 1. 加载 MIMIC-III(或 eICU、OMOP)
dataset = MIMIC3Dataset(
    root="data/mimic-iii-1.4",
    tables=["ADMISSIONS", "PATIENTS", "LABEVENTS", "CHARTEVENTS"],
    code_vocabs={"LABEVENTS": "lab_code", "CHARTEVENTS": "chart_code"},
    target="readmission",   # 或 mortality, length_of_stay 等
)

# 2. 数据预处理(自动处理时间序列)
from pyhealth.tasks import readmission_prediction_mimic3
dataset = dataset.set_task(readmission_prediction_mimic3)

# 3. 选择模型(RETAIN / Transformer / CNN 等 30+ 种)
model = RETAIN(
    dataset=dataset,
    feature_keys=["conditions", "procedures", "labs", "meds"],
    label_key="readmission",
    mode="binary"
)

# 4. 训练 & 评估
trainer = Trainer(model=model, epochs=20, device="cuda")
trainer.train()
trainer.evaluate()

PyHealth 优势

  • 一站式:数据加载 → 任务定义 → 模型 → 评估指标(医疗专用如 AUPRC、F1@K)
  • 支持 10+ 医疗任务(药物推荐、诊断预测、住院时长等)
案例 3:pydicom + SimpleITK 读取 & 处理 DICOM 系列
import pydicom
import SimpleITK as sitk
import numpy as np

# 读取单张 DICOM
ds = pydicom.dcmread("IM-0001-0001.dcm")
print(ds.PatientName, ds.Modality, ds.pixel_array.shape)

# 读取整个系列 → 3D 体积
reader = sitk.ImageSeriesReader()
dicom_names = reader.GetGDCMSeriesFileNames("dicom_folder/")
reader.SetFileNames(dicom_names)
image = reader.Execute()

# 转 numpy
array_3d = sitk.GetArrayFromImage(image)   # shape: (slices, height, width)

小结

  • 医疗影像首选 MONAI + TorchIO + pydicom(深度学习)
  • 经典处理用 SimpleITK + nibabel
  • EHR / 预测建模首选 PyHealth
  • 临床文本 / 生物医学 NLP 用 Hugging Face 的 Bio_ClinicalBERT / PubMedBERT 等

你现在最感兴趣的是哪个方向?

  • 3D 器官分割(肝/肺/肿瘤)
  • DICOM 预处理 pipeline
  • EHR 预测模型(死亡/再入院)
  • 影像组学(radiomics)特征提取

告诉我你的具体目标,我可以给你更精细的代码模板或完整 pipeline 示例~

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐