利用MONAI加速医学影像学的深度学习研究

Accelerating Deep Learning Research in Medical Imaging Using MONAI

医学开放式人工智能网络(MONAI)是一个免费提供、社区支持、基于Pythorch的医疗影像学深度学习框架。它为开发训练工作流程提供了领域优化的基础功能。

在4月份发布的gtc2020 alpha版本的基础上,MONAI现在发布了0.2版本,为医学成像研究人员提供了新的功能、示例和研究实现,以加快人工智能开发的创新步伐。有关更多信息,请参阅NVIDIA和伦敦国王学院宣布MONAI医疗保健研究开源AI框架。

为什么是MONAI研究?

MONAI research是MONAI代码库中的一个子模块。其目的是展示研究原型的实施和从最新出版的医学影像学与深度学习示范。研究模块由核心开发团队定期审查和维护。根据良好的软件工程实践,从研究子模块中识别出的可重用组件被集成到MONAI核心模块中。

随着MONAI的灵活性和可用性,设想MONAI research是发布研究代码、增加研究影响、促进开放性和可重复性研究的合适场所。像MONAI中的所有其他子模块一样,欢迎以评论、想法和代码的形式发表意见。

在这篇文章中,讨论了目前已经包含在基于MONAI的实现中的研究出版物,这些出版物解决了医学图像分割中的高级研究问题。MONAI不用于临床。

COPLE-Net网络:COVID-19肺炎病灶分割网络

CT对19例肺炎病灶的准确诊断和随访具有重要意义。

图1.  COVID19例肺炎病变的CT表现。扫描(a-c)来自三个不同的病人,红色箭头突出显示了一些病变。扫描(d)显示不同观察者给出的(c)注释。

在COVID-19爆发期间,获得大量精确的肺炎病变像素级注释是一项挑战。本研究主要针对分割作业中的噪音标签学习。

本研究的主要创新之一是增强的深卷积神经网络结构。该体系结构具有以下特点:

它使用最大池化和平均池化的组合来减少下采样过程中的信息丢失。

它使用桥接层来减轻编码器和解码器中特征之间的语义鸿沟。

它在瓶颈处采用了ASPP模块,以更好地处理多个尺度的病变。

图2. 提出的COPLE网络体系结构。

这种新颖的建筑是在莫奈提供的。MaxAvgPool和SimpleASPP等关键网络组件可以方便地集成到其他深度学习管道中:

from monai.networks.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中的代表性特性,它允许快速原型化研究想法。

利用MONAI加速医学影像学的深度学习研究的更多相关文章

  1. supervessel-免费云镜像︱GPU加速的Caffe深度学习开发环境

    开发环境介绍 在SuperVessel云上,我们为大家免费提供当前火热的caffe深度学习开发环境.SuperVessel的Caffe有如下优点: 1) 免去了繁琐的Caffe环境的安装配置,即申请即 ...

  2. 利用 TFLearn 快速搭建经典深度学习模型

      利用 TFLearn 快速搭建经典深度学习模型 使用 TensorFlow 一个最大的好处是可以用各种运算符(Ops)灵活构建计算图,同时可以支持自定义运算符(见本公众号早期文章<Tenso ...

  3. 【RS】A review on deep learning for recommender systems: challenges and remedies- 推荐系统深度学习研究综述:挑战和补救措施

    [论文标题]A review on deep learning for recommender systems: challenges and remedies  (Artificial Intell ...

  4. 利用更快的r-cnn深度学习进行目标检测

    此示例演示如何使用名为“更快r-cnn(具有卷积神经网络的区域)”的深度学习技术来训练对象探测器. 概述 此示例演示如何训练用于检测车辆的更快r-cnn对象探测器.更快的r-nnn [1]是r-cnn ...

  5. Deep Learning 教程(斯坦福深度学习研究团队)

    http://www.zhizihua.com/blog/post/602.html 说明:本教程将阐述无监督特征学习和深度学习的主要观点.通过学习,你也将实现多个功能学习/深度学习算法,能看到它们为 ...

  6. 深度学习研究理解5:Visualizing and Understanding Convolutional Networks(转)

    Visualizing and understandingConvolutional Networks 本文是Matthew D.Zeiler 和Rob Fergus于(纽约大学)13年撰写的论文,主 ...

  7. 利用Matlab自带的深度学习工具进行车辆区域检测与车型识别【Github更新!!!】(三)

    前言 对前面的东西更新了一下.地方包括: 1.GUI的更新,更友好的用户界面 2.支持用手直接画车辆区域,并且识别出来 3.将proposal.detect.fine-grained classifi ...

  8. 深度学习“引擎”之争:GPU加速还是专属神经网络芯片?

    深度学习“引擎”之争:GPU加速还是专属神经网络芯片? 深度学习(Deep Learning)在这两年风靡全球,大数据和高性能计算平台的推动作用功不可没,可谓深度学习的“燃料”和“引擎”,GPU则是引 ...

  9. 深度学习论文TOP10,2019一季度研究进展大盘点

    9012年已经悄悄过去了1/3. 过去的100多天里,在深度学习领域,每天都有大量的新论文产生.所以深度学习研究在2019年开了怎样一个头呢? Open Data Science对第一季度的深度学习研 ...

随机推荐

  1. POJ2752KMP逆序处理

    题意:      给你一个串,问你都哪些位置即使前缀又是后缀. 思路:      可以用KMP来做,尝试过很多种方法,想把两个串接起来然后..失败,后来又想可以倒着匹配,就是把整个串倒过来..失败,说 ...

  2. HTTP协议之分块传输与分段编码

    目录 数据的分块传输 数据的分段编码(transfer-encoding) 前置知识:HTTP协议 数据的分块传输 我们都知道http协议是由TCP协议封装而来的应用层协议.我们和服务器之间的每次ht ...

  3. 10.PHP加密相关

    PHP加密函数 <?php    $str = 'This is an example!';    echo '1:'.$str.'<br>';    $crypttostr = c ...

  4. Intel汇编程序设计-整数算术指令(中)

    7.3  移位和循环移位的应用 7.3.1  多双字移位 要对扩展精度整数(长整数)进行移位操作,可把它划分为字节数组.字数组或双字数组,然后再对该数组进行移位操作.在内存中存储数字时通常采用的方式是 ...

  5. CTFHub-easy_search

    easy_search 玩了好些天,今天做道题找找状态,明天开始肝了 打开是一个登录框 用amdin/admin尝试了一下,提示登陆失败 这里肯定不会是暴力破解,我猜是sql注入,试了万能密码or 1 ...

  6. [LeetCode每日一题]80. 删除有序数组中的重复项 II

    [LeetCode每日一题]80. 删除有序数组中的重复项 II 问题 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度. 不要使用额外 ...

  7. 浅谈Java中的公平锁和非公平锁,可重入锁,自旋锁

    公平锁和非公平锁 这里主要体现在ReentrantLock这个类里面了 公平锁.非公平锁的创建方式: //创建一个非公平锁,默认是非公平锁 Lock lock = new ReentrantLock( ...

  8. .Net 中两分钟集成敏感词组件

    现如今大部分服务都会有用户输入,为了服务的正常运行,很多时候不得不针对输入进行敏感词的检测.替换.如果人工做这样的工作,不仅效率低,成本也高.所以,先让代码去处理输入,成为了经济方便的途径.水弟在这里 ...

  9. spring源码解析之属性编辑器propertyEditor

    异常信息造成此异常的原因bean配置文件调用代码特别说明:异常解决注册springt自带的属性编辑器 CustomDateEditor控制台输出属性编辑器是何时并如何被注册到spring容器中的?查看 ...

  10. [源码解析] 并行分布式框架 Celery 之 容错机制

    [源码解析] 并行分布式框架 Celery 之 容错机制 目录 [源码解析] 并行分布式框架 Celery 之 容错机制 0x00 摘要 0x01 概述 1.1 错误种类 1.2 失败维度 1.3 应 ...