深度学习中如何处理整张幻灯片图像

Posted

技术标签:

【中文标题】深度学习中如何处理整张幻灯片图像【英文标题】:How are Whole Slide Images handled in Deep Learning 【发布时间】:2020-02-29 02:21:28 【问题描述】:

我正计划对整个幻灯片图像进行一些分类/分割。由于图像很大,我想知道可以用来处理它们的方法。到目前为止,我遇到了将图像拆分为多个部分、处理这些部分并组合结果的技术。但是,我想更多地了解其他更好的方法,以及它是否是好的方法。任何对现有文献的参考都会有很大帮助。

【问题讨论】:

【参考方案1】:

pyvips 具有从幻灯片图像高效生成补丁的功能。

这个基准测试显示了它是如何工作的。它可以从一个 SVS 文件中以 8 个基本方向每秒生成大约 25,000 个 64x64 补丁:

https://github.com/libvips/pyvips/issues/100#issuecomment-493960943

便于训练。我不知道这与人们使用的其他补丁生成系统相比如何。

【讨论】:

【参考方案2】:

要阅读这些图像,标准库是“open-slide”[https://openslide.org/api/python/]。通过“打开幻灯片”,您可以阅读补丁或缩略图等内容。

对于过滤等基本图像处理操作,“libvips”及其python绑定“pyvips”使用起来既快捷又方便[https://libvips.github.io/pyvips/vimage.html]。

如果您需要将数据(如随机补丁)传递给机器学习模型,我个人建议使用“PyDmed”。在训练时,例如分类器或生成模型,“PyDmed”的加载速度适合将批量数据馈送到 GPU。

这里是 PyDmed 公共回购的链接: https://github.com/amirakbarnejad/PyDmed

这里是 PyDmed 快速入门的链接: https://amirakbarnejad.github.io/Tutorial/tutorial_section1.html

【讨论】:

【参考方案3】:

正如 akbarnejad 所说,我更喜欢使用 openslide。

我通常最终编写定制的数据加载器来输入 pytorch 模型,这些模型使用 openslide 首先使用幻灯片的低分辨率(缩略图)图像的各种阈值进行一些简单的分割,以获取补丁坐标,然后提取相关补丁用于输入训练模型的组织。

有一些很好的例子和工具试图让 pytorch 和 Keras 更简单 -

Pytorch wsi-preprocessing

Keras Deeplearning-digital-pathology

两者 deep-openslide

【讨论】:

以上是关于深度学习中如何处理整张幻灯片图像的主要内容,如果未能解决你的问题,请参考以下文章

为啥深度学习不整张图像输进去

深度学习实战pytorch中如何处理RNN输入变长序列padding

深度学习要点———神经网络的类型

后深度学习时代,推荐系统向何处去?

深度学习该往何处走?Yoshua Bengio这么认为

对比《Keras图像深度学习实战》PDF+《深度学习技术图像处理入门》PDF代码分析