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的派生权重也根据相同许可共享。请考虑在该许可下使用权重对您的工作及其许可的影响。

编辑推荐精选

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

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

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

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

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

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

讯飞星火

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

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

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

Spark-TTS

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

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

下拉加载更多