游乐游手机版
首页/AI热点日报/热点详情

深度学习提升数字图像临床分析准确性与再现性

类型:热点整理2026-07-16
GPU加速全载玻片成像(WSI)的输入输出与图像处理教程,使用cuCIM和GPUDirectStorage(GDS)实现平铺数据加载、CUDA处理及回写。三个用例表明,GDS可将并行读取加速11 8倍,写入及处理性能提升约2倍,加速组织病理学工作流,助力临床分析。

GPU加速全载玻片成像(WSI)I/O与图像处理完全指南

全载玻片成像(Whole Slide Imaging,简称WSI)通过专用扫描仪将组织切片完整数字化,正在医疗领域获得广泛应用。WSI助力病理学、免疫组织化学及细胞学领域的临床医生实现以下目标:

  • 运用计算手段解析图像信息
  • 将深度学习模型应用于数字切片,提升临床诊断的准确性与可重复性
  • 从患者数据中挖掘新的洞察

本文详细解读GPU加速工具包如何显著提升输入/输出(I/O)性能与图像处理效率,核心流程包括:将平铺数据直接从磁盘加载至GPU显存、通过CUDA执行图像处理、再将处理后的瓦片写回磁盘。加速组织病理学技术可大幅节省时间,这对疾病的快速识别与及时治疗至关重要。

一、WSI I/O与图像处理的主要挑战

将深度学习融入全切片图像分析,远不止训练和测试模型那么简单。基于深度学习的图像分析需要大量预处理与后处理步骤,例如伪影检测、颜色归一化、图像降采样以及错误预测的剔除。此外,全切片图像的分辨率往往超过100000×100000像素,必须将其分割为一系列子图(即平铺处理)。将大量平铺数据从磁盘读入内存并进行计算,通常极为耗时。

二、加速WSI I/O与图像处理的核心工具

本文用例采用以下GPU加速工具进行基准测试:

2.1 cuCIM

cuCIM(Compute Unified Device Architecture Clara IMage)是一个开源的加速计算机视觉与图像处理库,广泛应用于生物医学、地理空间、材料科学及遥感等领域。该库基于Apache 2.0许可证公开发布,欢迎社区贡献代码。

2.2 Magnum IO GPUDirect Storage (GDS)

Magnum IO GPUDirect Storage提供了存储I/O加速功能,支持GPU显存与存储设备之间的直接存储器访问(DMA)传输,从而绕过CPU的缓冲区反弹。其优势包括:

  • 提升带宽、降低延迟、减少CPU与GPU负载
  • 降低对CPU处理存储数据传输的依赖,减少性能影响
  • 对于完全迁移至GPU的计算管道,充当性能倍增器
  • 通过cuFile API支持与传统文件I/O的互操作

GDS可通过kvikIO RAPIDS包在Python中调用。KvikIO提供Python和C++ API,在GDS可用时执行读写操作,若GDS不可用则自动回退到基本POSIX与cudaMemcpy。

三、三个关键的数字病理学应用场景

以下用例使用具有以下特征的图像数据集:数字切片层数为XYZ,最高分辨率层包含2028个大小为(512,512)的RGB瓦片,总数据量为XYZ。

场景1:将WSI瓦片加载至GPU数组

在本场景中,分别测试有无GDS时,将磁盘上WSI图像的每个瓦片加载到一维GPU缓冲区。目标GPU数组预先分配,读取后经重新整形并放置到输出数组的对应位置(如图3所示)。

\

图3:从主机上的平铺TIFF图像读取至GPU数组

基准测试结果(图4)表明,与tifffile.imread配合cupy.asarray相比:

  • 未使用GDS时,单线程加速2.0倍,并行读取加速4.2倍
  • 启用GDS后,单线程加速提升至2.7倍,并行读取加速提升至11.8倍

\

图4:平铺TIFF图像读取性能对比

小提示:如果磁盘I/O是系统瓶颈,强烈建议开启GDS。在并行读取场景下,加速效果尤为显著(可达11.8倍)。

场景2:写入未压缩的Zarr文件

从GPU显存中的CuPy数组(例如场景1的输出)开始,以“块”形式将数据平铺写入独立的Zarr文件(分有无GDS两种情形)。写入数据总量为6084MB,各块形状及对应的文件大小如下:

  • (256, 256, 3) → 768 kB
  • (512, 512, 3) → 3 MB
  • (1024, 1024, 3) → 12 MB
  • (2048, 2048, 3) → 48 MB

图5展示了块大小为(2048,2048,3)时的结果。除最小块(256,256,3)外,启用GDS均能带来显著性能提升。

\

图5:GDS写入Zarr文件的相对性能(8位整数与32位浮点结果)

小提示:选择较大的块大小(例如2048×2048)能更好地发挥GDS的带宽优势。

场景3:平铺图像处理工作流

本场景将加载、处理和保存整合为单一应用程序(图6)。执行步骤:

  1. 将单个瓦片加载至一维GPU缓冲区
  2. 将瓦片放置到预分配的GPU数组的对应位置
  3. 使用基于CUDA的Sobel边缘检测内核进行处理
  4. 将单个瓦片写入Zarr文件

两种实现方式:

  • 多线程全局方法:先按场景1完成所有瓦片读取,对完整数组应用CUDA内核,再按场景2进行瓦片写入。需要较高的GPU显存(完整图像需两份拷贝)。
  • 多线程平铺方法:并行异步读取、处理及写入各个瓦片,GPU显存需求大幅降低(图7)。

\

基准测试结果(图8)显示:与禁用GDS的多线程全局方法相比,多线程平铺方法:

  • 未使用GDS时性能损失约15%
  • 启用GDS后性能提升约2倍,且略快于使用GDS的全局方法

注意事项:简单的平铺CUDA处理无法处理边界伪影(例如卷积操作需要边缘扩展)。建议先保存至Dask数组,再使用map_blocks执行平铺处理,并可考虑边界处理策略。

四、示例脚本与资源

用于基准测试的脚本可从cuCIM仓库examples/python/gds_whole_slide文件夹获取。当前使用RAPIDS kvikIO实现GDS加速的读/写操作。这些演示仅供说明,尚未经过生产环境测试。未来cuCIM API将扩展原生支持平铺读写操作。

五、常见问题

Q1:GDS是否必须搭配特定硬件?

需要NVIDIA GPU支持(如V100、A100、H100等)以及支持PCIe P2P的NVMe SSD。具体配置请参考NVIDIA GPUDirect Storage文档

Q2:cuCIM与OpenSlide有何不同?

OpenSlide主要用于读取WSI文件(CPU端),而cuCIM提供GPU加速的图像处理与I/O,两者可结合使用。cuCIM的读取性能并不依赖GDS,但GDS可进一步加速数据从磁盘到GPU的传输。

Q3:平铺处理工作流中,如何避免边界伪影?

对于涉及卷积的操作,建议在将瓦片传递给CUDA内核前,对每个瓦片进行边缘扩展(padding)。使用Dask的map_blocks时,可指定boundary='reflect'等模式处理边界。

Q4:是否支持其他WSI格式(如SVS、MRXS)?

cuCIM目前支持TIFF、Zarr格式。对于其他格式,可先通过OpenSlide读取为NumPy数组,再复制到GPU。未来cuCIM计划增加更多格式支持。

总结

本文通过三个图像分析用例证明,NVIDIA GPUDirect Storage能显著减少高分辨率WSI图像的I/O时间。结合cuCIM与kvikIO,可实现从磁盘到GPU的快速数据加载、处理与回写。加速组织病理学工作流,有助于临床医生更快地识别和治疗疾病,为精准医疗提供有力支撑。

来源:https://m.elecfans.com/article/2164609.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。