HoVer-Net医学图像分析:核实例分割与分类的完整指南
HoVer-Net是一个创新的深度学习模型,专门用于在H&E染色的病理图像中同时执行核实例分割和分类。该模型利用核像素到其质心的水平和垂直距离来有效分离聚集细胞,并采用专门的上采样分支对每个分割的核实例进行类型预测。
项目概述
HoVer-Net采用多分支网络架构,能够在单个网络中完成核实例分割和分类任务。该模型通过创新的距离编码技术,在密集细胞群中实现精准分离,为医学图像分析提供了强大的解决方案。
环境配置
项目提供完整的环境配置文件,可以通过以下命令快速搭建开发环境:
conda env create -f environment.yml
conda activate hovernet
pip install torch==1.6.0 torchvision==0.7.0
上述配置将安装PyTorch 1.6版本和CUDA 10.2支持。
项目结构
该项目具有清晰的目录结构,主要包含以下核心组件:
dataloader/:数据加载器和增强管道docs/:项目中使用的图片和GIF文件metrics/:指标计算脚本misc/:实用工具函数models/:模型定义、主要运行步骤和超参数设置run_utils/:定义训练/验证循环和回调函数
主要可执行脚本包括:
config.py:配置文件dataset.py:定义数据集类extract_patches.py:从原始图像中提取补丁compute_stats.py:主要指标计算脚本run_train.py:主要训练脚本run_infer.py:用于图块和WSI处理的主要推理脚本
训练流程
数据准备
对于训练,必须使用extract_patches.py脚本提取补丁。对于实例分割,补丁存储为4维numpy数组,通道为[RGB, inst],其中inst是实例分割的真实标签。
对于同时进行实例分割和分类,补丁存储为5维numpy数组,通道为[RGB, inst, type],其中type是核类型的真实标签。
训练前配置
开始训练前需要进行以下配置:
- 在
config.py中设置数据目录路径 - 在
config.py中设置检查点保存路径 - 在
models/hovernet/opt.py中设置预训练的Preact-ResNet50权重路径 - 在
models/hovernet/opt.py中修改超参数,包括训练轮数和学习率
训练命令
查看数据增强效果:
python run_train.py --view=train
使用多GPU进行训练:
python run_train.py --gpu='0,1'
推理应用
输入输出格式
输入支持:
- 标准图像文件,包括png、jpg和tiff格式
- OpenSlide支持的WSI文件,包括svs、tif、ndpi和mrxs格式
输出格式:
- 图像图块和全片图像都输出json文件,包含以下键:
- 'bbox':每个核的边界框坐标
- 'centroid':每个核的质心坐标
- 'contour':每个核的轮廓坐标
- 'type_prob':每个核的各类别概率
- 'type':每个核的类别预测
推理命令
基本推理命令格式:
python run_infer.py --model_path=<checkpoint_path> --gpu=0
项目提供了两个示例可执行脚本:一个用于图块处理,一个用于WSI处理。要运行这些脚本,首先使用chmod +x run_tile.sh和chmod +x run_wsi.sh使其可执行,然后使用./run_tile.sh和./run_wsi.sh运行。
模型权重
项目提供多种预训练模型权重,包括:
- 分割和分类模型: CoNSeP、PanNuke、MoNuSAC
- 仅分割模型: CoNSeP、Kumar、CPM17
可视化效果
上图展示了在CoNSeP数据集上训练的HoVer-Net的叠加结果。核边界的颜色表示核的类型:
- 蓝色:上皮细胞
- 绿色:炎性细胞
- 红色:梭形细胞
- 青色:其他类型
技术特点
模型模式
HoVer-Net支持两种模型模式:
- 'original'模式:原始医学图像分析论文中描述的方法,使用270x270补丁输入和80x80补丁输出
- 'fast'模式:使用256x256补丁输入和164x164补丁输出
重要提示: Kumar、CPM17和CoNSeP的检查点来自我们的原始出版物,因此必须使用'original'模式。对于PanNuke和MoNuSAC,必须选择'fast'模式。
数据集支持
HoVer-Net支持多个主流病理图像数据集,包括CoNSeP、PanNuke、MoNuSAC、Kumar和CPM17数据集。
性能对比
与原始TensorFlow实现相比,PyTorch版本在性能上保持了高度一致性:
在Kumar数据集上的分割结果: | 平台 | DICE | PQ | AJI | |-----------|--------|--------|--------| | TensorFlow | 0.8258 | 0.5971 | 0.6412 | | PyTorch | 0.8211 | 0.5904 | 0.6321 |
在CoNSeP数据集上的分割结果: | 平台 | DICE | PQ | AJI | |-----------|--------|--------|--------| | TensorFlow | 0.8525 | 0.5477 | 0.5995 | | PyTorch | 0.8504 | 0.5464 | 0.6009 |
应用场景
HoVer-Net在医学图像分析领域具有广泛的应用前景:
- 癌症诊断: 帮助识别和分析不同类型的肿瘤细胞
- 治疗评估: 监测治疗效果和疾病进展
- 病理研究: 为细胞生物学研究提供定量分析工具
最佳实践
- 数据预处理: 使用
extract_patches.py脚本正确提取训练数据 - 参数调优: 根据具体任务在
models/hovernet/opt.py中调整超参数 - 模型验证: 定期使用未见过的数据验证模型性能
- 可视化监控: 利用
--view选项在训练过程中监控学习进展
通过本指南,您可以快速掌握HoVer-Net的使用方法,无论是用于学术研究还是产品开发,这个项目都能为您的病理图像分析项目提供强大的技术支持。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




