利用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. hdu3746 KMP的next数组应用,求项链首尾项链循环

    题意:       给你一个项链,问你最少加多少个珠子能满足整个项链是一个循环的项链(首尾相连) 思路:      KMP的简单应用只要了解next数组的意义就好说了,下面总结下  next在循环方面 ...

  2. [CTF]当铺密码

    [CTF]当铺密码 ---------------------  作者:adversity`  来源:CSDN  原文:https://blog.csdn.net/qq_40836553/articl ...

  3. 【插件篇】前段bootstrap-table-treegrid试手,解决无法显示树形列表或者图标不显示问题。

    说明:具体代码操作我就不贴了.官方有正规的例子!bootstrap-table-examples传送 使用注意事项: 传入的id和pid可以是string类型的(我后台返回的是Long类型转换成str ...

  4. PHP 下载apk文件

    方式一.public function downApkFile(){ $path = Env::get('root_path')."apk/"; //路径 $file_name = ...

  5. 15 个让新手爱不释手的 Python 高级库

    为什么我喜欢 Python ? 对于初学者来说,这是一种简单易学的编程语言:另一个原因:大量开箱即用的第三方库,正是 23 万个由用户提供的软件包使得 Python 真正强大和流行 在本文中,我挑选了 ...

  6. vue中的nextTick

    ​ 今天在浏览elementUI官网时,又一次看到了nextTick,其实nextTIck我已经不是第一次看到了,但之前都没怎么弄懂,这次决定好好研究一番-- 异步说明 vue是异步执行DOM更新的. ...

  7. 判断标准I/O的缓冲区类型

    #include <stdio.h> void pr_stdio(const char *, FILE *); int main() { FILE *fp; fputs("ent ...

  8. BUA软件工程个人博客作业

    写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 个人博客作业 课程目标 培养软件开发能力 本作业对实现目标的具体作用 阅读教材,了解软件工程,并比较各 ...

  9. BUAA软件工程热身作业

    写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 热身作业(阅读) 课程目标 培养软件开发能力 本作业对实现目标的具体作用 深入认识自己,总结过往并展望 ...

  10. path自定义转换器

    register-converter用于注册转换器