Project Icon

hover_net

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

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

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了解如何使用输出。

叠加分割和分类预测

Segmentation

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

数据集

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

真实标注文件采用.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数据集上的同时分割和分类结果:

平台F1dF1eF1iF1sF1m
TensorFlow0.7480.6350.6310.5660.426
PyTorch0.7560.6360.5590.5570.348

引用

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

BibTex条目:

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

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号