hover_net

hover_net

病理图像中细胞核分割与分类的深度学习模型

HoVer-Net是一种用于病理图像细胞核分割和分类的深度学习模型。该模型通过计算细胞核像素到质心的距离来分离聚集细胞,并利用上采样分支进行细胞核类型分类。项目提供PyTorch实现,支持模型训练、图像处理和全幻灯片分析,并包含多个预训练权重。HoVer-Net在细胞核分析任务中表现出色,为数字病理学研究提供了重要工具。

HoVer-Net细胞核分割图像分析深度学习病理学Github开源项目

HoVer-Net: 多组织病理图像中核的同步分割与分类

一个多分支网络,可在单个网络中同时执行细胞核实例分割和分类。该网络利用核像素到其质心的水平和垂直距离来分离聚集的细胞。专用的上采样分支用于对每个分割实例的核类型进行分类。

医学图像分析论文链接

这是HoVer-Net的官方PyTorch实现。原始TensorFlow版本的代码请参考此分支。该存储库可用于训练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: 从原始图像中提取patches
  • compute_stats.py: 主要指标计算脚本
  • run_train.py: 主要训练脚本
  • run_infer.py: 用于图块和WSI处理的主要推理脚本
  • convert_chkpt_tf2pytorch: 将原始存储库中训练的tensorflow .npz 模型转换为pytorch支持的 .tar 格式。

运行代码

训练

数据格式

对于训练,必须使用extract_patches.py提取patches。对于实例分割,patches存储为4维numpy数组,通道为[RGB, inst]。这里,inst是实例分割的ground truth。即像素范围从0到N,其中0是背景,N是该特定图像的细胞核实例数量。

对于同时进行实例分割和分类,patches存储为5维numpy数组,通道为[RGB, inst, type]。这里,type是细胞核类型的ground truth。即每个像素范围从0-K,其中0是背景,K是类别数。

在训练之前:

  • config.py中设置数据目录的路径
  • config.py中设置检查点保存路径
  • models/hovernet/opt.py中设置预训练的Preact-ResNet50权重路径。在这里下载权重。
  • models/hovernet/opt.py中修改超参数,包括epoch数和学习率。

用法和选项

用法:

  python run_train.py [--gpu=<id>] [--view=<dset>]
  python run_train.py (-h | --help)
  python run_train.py --version

选项:

  -h --help       显示此字符串。
  --version       显示版本。
  --gpu=<id>      逗号分隔的GPU列表。  
  --view=<dset>   在增强后可视化图像。选择'train'或'valid'。

示例:

要在训练前可视化训练数据集作为健全性检查,请使用:

python run_train.py --view='train'

要使用GPU 0和1初始化训练脚本,命令是:

python run_train.py --gpu='0,1' 

推理

数据格式

输入:

  • 标准图像文件,包括pngjpgtiff
  • OpenSlide支持的WSI,包括svstifndpimrxs

输出:

  • 图像块和全幻灯片图像都输出一个json文件,包含以下键:
    • 'bbox': 每个细胞核的边界框坐标
    • 'centroid': 每个细胞核的质心坐标
    • 'contour': 每个细胞核的轮廓坐标
    • 'type_prob': 每个细胞核的每类概率(默认配置不输出)
    • 'type': 每个细胞核的类别预测
  • 图像块输出一个mat文件,包含以下键:
    • 'raw': 网络的原始输出(默认配置不输出)
    • 'inst_map': 包含0到N的值的实例图,其中N是细胞核数量
    • 'inst_type': 长度为N的列表,包含每个细胞核的预测
  • 图像块输出一个png文件,显示原始RGB图像上的细胞核边界叠加

模型权重

可以提供按照上述说明训练HoVer-Net得到的模型权重来处理输入图像/WSI。或者,可以使用以下任何预训练模型权重来处理数据。这些检查点最初使用TensorFlow训练,并使用convert_chkpt_tf2pytorch.py进行转换。提供的检查点要么只训练用于分割,要么用于同时分割和分类。注意,我们不提供CPM17和Kumar的分割和分类模型,因为没有分类标签。

重要: CoNSeP、Kumar和CPM17检查点使用原始模型模式,而PanNuke和MoNuSAC使用快速模型模式。有关更多信息,请参阅下面的推理说明。

分割和分类:

仅分割:

访问完整的检查点目录及文件名描述README,请点击这里

如果使用上述任何检查点,请确保引用相应的论文。

用法和选项

用法:

  run_infer.py [选项] [--help] <命令> [<参数>...]
  run_infer.py --version
  run_infer.py (-h | --help)

选项:

  -h --help                   显示此字符串。
  --version                   显示版本。

  --gpu=<id>                  GPU列表。[默认: 0]
  --nr_types=<n>              要预测的细胞核类型数量。[默认: 0]
  --type_info_path=<path>     定义类型id、类型名称和预期叠加颜色之间映射的json路径。[默认: '']

  --model_path=<path>         已保存检查点的路径。
  --model_mode=<mode>         原始HoVer-Net或PanNuke / MoNuSAC中使用的简化版本,'original'或'fast'。[默认: fast]
  --nr_inference_workers=<n>  推理期间的工作进程数。[默认: 8]
  --nr_post_proc_workers=<n>  后处理期间的工作进程数。[默认: 16]
  --batch_size=<n>            批量大小。[默认: 128]

图块处理选项:

   --input_dir=<path>     输入数据目录的路径。假设文件不嵌套在目录中。
   --output_dir=<path>    输出目录的路径。

   --draw_dot             在叠加层上绘制细胞核质心。[默认: False]
   --save_qupath          可选择输出与QuPath v0.2.3兼容的格式。[默认: False]
   --save_raw_map         是否保存原始预测。[默认: False]

WSI处理选项:

    --input_dir=<path>      输入数据目录的路径。假设文件不嵌套在目录中。
    --output_dir=<path>     输出目录的路径。
    --cache_path=<path>     缓存路径。应放置在至少100GB的SSD上。[默认: cache]
    --mask_dir=<path>       包含组织掩码的目录路径。
                            应与相应的WSI具有相同的名称。[默认: '']

    --proc_mag=<n>          用于WSI处理的放大倍数(物镜倍率)。[默认: 40]
    --ambiguous_size=<int>  定义沿分割网格的模糊区域以进行重新后处理。[默认: 128]
    --chunk_shape=<n>       处理的块形状。[默认: 10000]
    --tile_shape=<n>        处理的图块形状。[默认: 2048]
    --save_thumb            保存缩略图。[默认: False]
    --save_mask             保存掩码。[默认: False]

上述命令可以从命令行使用或通过可执行脚本使用。我们提供了两个示例可执行脚本:一个用于图块处理,一个用于WSI处理。要运行这些脚本,首先使用chmod +x run_tile.shchmod +x run_tile.sh使它们可执行。然后使用./run_tile.sh./run_wsi.sh运行。

中间结果存储在缓存中。因此,请确保指定的缓存位置有足够的空间!最好确保缓存位置是SSD。 请注意,在运行推理时选择正确的模型模式很重要。"原始"模型模式指的是原始医学图像分析论文中描述的方法,使用270x270补丁输入和80x80补丁输出。"快速"模型模式使用256x256补丁输入和164x164补丁输出。在Kumar、CPM17和CoNSeP上训练的模型检查点来自我们的原始发表,因此必须使用"原始"模式。对于PanNuke和MoNuSAC,必须选择"快速"模式。我们提供的每个检查点的模型模式都在文件名中给出。此外,如果使用仅针对分割训练的模型,必须将nr_types设置为0。

type_info.json用于指定叠加层中使用的RGB颜色。请确保为不同的数据集修改此文件,并且如果您想要通常控制叠加边界颜色。

作为我们瓦片处理实现的一部分,我们添加了一个选项,以兼容QuPath的形式保存输出。

请查看examples/usage.ipynb了解如何使用输出。

叠加分割和分类预测

<p float="left"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/35f1430c-4704-419e-abb1-bd922cc4b210.gif" alt="Segmentation" width="870" /> </p>

在CoNSeP数据集上训练的HoVer-Net的叠加结果。细胞核边界的颜色表示细胞核的类型。<br /> 蓝色:上皮<br /> 红色:炎症<br /> 绿色:纺锤形<br /> 青色:其他

数据集

此链接下载我们论文中使用的CoNSeP数据集。<br />此链接下载Kumar、CPM-15、CPM-17和TNBC数据集。<br /> 下载

真实标注文件采用.mat格式,有关更多信息,请参阅数据集附带的README。

与原始TensorFlow实现的比较

以下我们报告了使用此存储库(PyTorch)训练的分割结果与原始手稿(TensorFlow)报告的结果之间的差异。

Kumar数据集上的分割结果:

平台DICEPQAJI
TensorFlow0.82580.59710.6412
PyTorch0.82110.59040.6321

CoNSeP数据集上的分割结果:

平台DICEPQAJI
TensorFlow0.85250.54770.5995
PyTorch0.85040.54640.6009

可以在此处找到复现上述结果的检查点。

CoNSeP数据集上的同时分割和分类结果:

平台F1<sub>d</sub>F1<sub>e</sub>F1<sub>i</sub>F1<sub>s</sub>F1<sub>m</sub>
TensorFlow0.7480.6350.6310.5660.426
PyTorch0.7560.6360.5590.5570.348

引用

如果使用了此代码的任何部分,请适当引用我们的论文。<br />

BibTex条目:<br />

@article{graham2019hover,
  title={Hover-net: Simultaneous segmentation and classification of nuclei in multi-tissue histology images},
  author={Graham, Simon and Vu, Quoc Dang and Raza, Shan E Ahmed and Azam, Ayesha and Tsang, Yee Wah and Kwak, Jin Tae and Rajpoot, Nasir},
  journal={Medical Image Analysis},
  pages={101563},
  year={2019},
  publisher={Elsevier}
}

作者

许可证

该项目根据MIT许可证授权 - 详见LICENSE文件。

请注意,PanNuke数据集根据Attribution-NonCommercial-ShareAlike 4.0 International许可,因此HoVer-Net的派生权重也根据相同许可共享。请考虑在该许可下使用权重对您的工作及其许可的影响。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多