利用MONAI加速医学影像学的深度学习研究
Accelerating Deep Learning Research in Medical Imaging Using MONAI
医学开放式人工智能网络(MONAI)是一个免费提供、社区支持、基于Pythorch的医疗影像学深度学习框架。它为开发训练工作流程提供了领域优化的基础功能。
在4月份发布的gtc alpha版本的基础上,MONAI现在发布了0.2版本,为医学成像研究人员提供了新的功能、示例和研究实现,以加快人工智能开发的创新步伐。有关更多信息,请参阅NVIDIA和伦敦国王学院宣布MONAI医疗保健研究开源AI框架。
为什么是MONAI研究?
MONAI research是MONAI代码库中的一个子模块。其目的是展示研究原型的实施和从最新出版的医学影像学与深度学习示范。研究模块由核心开发团队定期审查和维护。根据良好的软件工程实践,从研究子模块中识别出的可重用组件被集成到MONAI核心模块中。
随着MONAI的灵活性和可用性,设想MONAI research是发布研究代码、增加研究影响、促进开放性和可重复性研究的合适场所。像MONAI中的所有其他子模块一样,欢迎以评论、想法和代码的形式发表意见。
在这篇文章中,讨论了目前已经包含在基于MONAI的实现中的研究出版物,这些出版物解决了医学图像分割中的高级研究问题。MONAI不用于临床。
· COPLE-Net: COVID-19 Pneumonia Lesion Segmentation Network
· LAMP: Large Deep Nets with Automated Model Parallelism for Image Segmentation
COPLE-Net网络:COVID-19肺炎病灶分割网络
CT对19例肺炎病灶的准确诊断和随访具有重要意义。
图1. COVID19例肺炎病变的CT表现。扫描(a-c)来自三个不同的病人,红色箭头突出显示了一些病变。扫描(d)显示不同观察者给出的(c)注释。
在COVID-19爆发期间,获得大量精确的肺炎病变像素级注释是一项挑战。本研究主要针对分割作业中的噪音标签学习。
本研究的主要创新之一是增强的深卷积神经网络结构。该体系结构具有以下特点:
它使用最大池化和平均池化的组合来减少下采样过程中的信息丢失。
它使用桥接层来减轻编码器和解码器中特征之间的语义鸿沟。
它在瓶颈处采用了ASPP模块,以更好地处理多个尺度的病变。
图2. 提出的COPLE网络体系结构。
这种新颖的建筑是在莫奈提供的。MaxAvgPool和SimpleASPP等关键网络组件可以方便地集成到其他深度学习管道中:
from works.blocks import MaxAvgPool, SimpleASPP
max_avg_pool =
MaxAvgPool(spatial_dims=spatial_dims, kernel_size=2)
aspp =
SimpleASPP(spatial_dims, ft_chns[4], int(ft_chns[4] / 4),
kernel_sizes=[1, 3, 3, 3], dilations=[1, 2, 4, 6])
图像预处理管道和预训练模型加载可以通过MONAI的几个Python命令完成:
images = sorted(glob(os.path.join(IMAGE_FOLDER, “case*.nii.gz”))) val_files = [{“img”: img} for img in images] # define transforms for image and segmentation infer_transforms = Compose( [ LoadNiftid(“img”), AddChanneld(“img”), Orientationd(“img”, “SPL”), ToTensord(“img”), ] ) test_ds = monai.data.Dataset(data=val_files, transform=infer_transforms) # sliding window inference need to input one image in every iteration data_loader = torch.utils.data.DataLoader( test_ds, batch_size=1, num_workers=0, pin_memory=torch.cuda.is_available() ) device = torch.device(“cuda” if torch.cuda.is_available() else “cpu”) model = CopleNet().to(device) model.load_state_dict(torch.load(MODEL_FILE)[“model_state_dict”])
Pythorch用户将受益于MONAI医疗图像预处理器和特定领域的网络块。同时,代码显示了MONAI模块和PyTorch本机对象的兼容性,比如torch.utils.data.DataLoader,从而简化了MONAI模块在一般PyTorch工作流中的采用。
图3. 不同损失函数下COPLE网络分割性能的可视化比较。
在从噪声标签中学习COVID-19肺炎病灶分割的场景中,COPLE网络的实验结果表明,新的结构比最先进的CNNs具有更高的性能。
LAMP:用于图像分割的自动模型并行的大型深网
深度学习模型变得越来越大,因为模型尺寸的增加可以显著提高精度。通过自动模型并行,可以用大的输入块,甚至是整个图像来训练大型的深3D变换器。
图4. (上)远程跳转连接阻碍了U-Net中的并行性。(底部)显式地构造了U-Net的一个变体,以消除U-Net中的长程依赖。并行U-Net具有较高的并行效率和吞吐量。
图5. 分区模型。
在图5中,一个deep模型被划分为三个gpu(a)。Fk是第k细胞的前向功能。Bk是反向传播函数,它依赖于上层的Bk+1和Fk特性。由于模型(b)的依赖性,传统的模型并行性具有较低的设备利用率。流水线并行性将输入的小批量拆分为更小的微批次(c),并允许不同的设备同时运行微批次。同步梯度计算可以最后应用。
MONAI research实现通过使用以下预处理模块显示了简单的实现:
· AddChannelDict
· Compose
· RandCropByPosNegLabeld
· Rand3Delasticd
· SpatialPadd
它还使用网络模块(如卷积)和分层工厂(layer factory)使用相同的模块接口轻松处理2D或3D输入。损失函数和度量模块简化了模型的训练和评估。这个实现还包括一个训练和验证管道的工作示例。
Figure 6. Segmentation accuracy (Dice coefficient, %) and inference time (s) comparisons among 3D U-Net and 3D SEU-Net of different sizes (#filters in the first convolutional layer: 32, 64, 128) and different input sizes (64×64×64, 128×128×128, whole image or 192×192×192) on Head and Neck nine organ auto-segmentation and decathlon liver and tumor segmentation datasets.
本研究表明:
大的模型和输入可以提高分割精度。
大的输入大大减少了推理时间。LAMP可以作为医学图像分析任务的一个有用的工具,例如大图像配准、检测和神经结构搜索。
摘要
这篇文章强调了医学影像学的深度学习研究是如何与MONAI一起建立起来的。这两个研究实例都使用了MONAI v0.2.0中的代表性特性,它允许快速原型化研究想法。