利用MONAI加速医学影像学的深度学习研究
利用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 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 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加速医学影像学的深度学习研究的更多相关文章
- supervessel-免费云镜像︱GPU加速的Caffe深度学习开发环境
开发环境介绍 在SuperVessel云上,我们为大家免费提供当前火热的caffe深度学习开发环境.SuperVessel的Caffe有如下优点: 1) 免去了繁琐的Caffe环境的安装配置,即申请即 ...
- 利用 TFLearn 快速搭建经典深度学习模型
利用 TFLearn 快速搭建经典深度学习模型 使用 TensorFlow 一个最大的好处是可以用各种运算符(Ops)灵活构建计算图,同时可以支持自定义运算符(见本公众号早期文章<Tenso ...
- 【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 ...
- 利用更快的r-cnn深度学习进行目标检测
此示例演示如何使用名为“更快r-cnn(具有卷积神经网络的区域)”的深度学习技术来训练对象探测器. 概述 此示例演示如何训练用于检测车辆的更快r-cnn对象探测器.更快的r-nnn [1]是r-cnn ...
- Deep Learning 教程(斯坦福深度学习研究团队)
http://www.zhizihua.com/blog/post/602.html 说明:本教程将阐述无监督特征学习和深度学习的主要观点.通过学习,你也将实现多个功能学习/深度学习算法,能看到它们为 ...
- 深度学习研究理解5:Visualizing and Understanding Convolutional Networks(转)
Visualizing and understandingConvolutional Networks 本文是Matthew D.Zeiler 和Rob Fergus于(纽约大学)13年撰写的论文,主 ...
- 利用Matlab自带的深度学习工具进行车辆区域检测与车型识别【Github更新!!!】(三)
前言 对前面的东西更新了一下.地方包括: 1.GUI的更新,更友好的用户界面 2.支持用手直接画车辆区域,并且识别出来 3.将proposal.detect.fine-grained classifi ...
- 深度学习“引擎”之争:GPU加速还是专属神经网络芯片?
深度学习“引擎”之争:GPU加速还是专属神经网络芯片? 深度学习(Deep Learning)在这两年风靡全球,大数据和高性能计算平台的推动作用功不可没,可谓深度学习的“燃料”和“引擎”,GPU则是引 ...
- 深度学习论文TOP10,2019一季度研究进展大盘点
9012年已经悄悄过去了1/3. 过去的100多天里,在深度学习领域,每天都有大量的新论文产生.所以深度学习研究在2019年开了怎样一个头呢? Open Data Science对第一季度的深度学习研 ...
随机推荐
- Linux配置NTP时间服务器(date、hwclock、NTP服务器的配置)
目录 date命令 hwclock命令 NTP服务的部署 服务端 客户端 date命令 date 命令的作用是查看和设置Linux中的系统日期时间 date ...
- Windows中的工作组和域
目录 工作组 工作组的访问 工作组的优缺点 域 域结构 域的原理 部署域架构 如何加入域 域中主机的登录 SRV出错及解决办法 SRV记录注册不成功的可能原因 禁用域中的账户 将计算机退出域 工作组 ...
- Python脚本破解图形验证码(tesserocr和pytesseract)
在学习之前,我们先了解OCR.tesseract.tesserocr.pytesseract和opencv这几个跟图片处理有关的库. OCR(Optical Character Recognition ...
- Win64 驱动内核编程-7.内核里操作进程
在内核里操作进程 在内核里操作进程,相信是很多对 WINDOWS 内核编程感兴趣的朋友第一个学习的知识点.但在这里,我要让大家失望了,在内核里操作进程没什么特别的,就标准方法而言,还是调用那几个和进程 ...
- Windows PE 第十二章 PE变形技术
PE变形技术 这章东西太多,太细了.这里我只记录了一些重点概念.为后面学习做铺垫. PE变形:改变PE结构之后,PE加载器依然可以成功加载运行我们的程序. 一 变形常用技术: 结构重叠技术.空间调整技 ...
- PHP使用引用实现无限极分类
PHP实现无限极分类 引用 <?php /** * 无限极分类实现 * @param $list array 需要处理的数组 * @param $pk string 主id * @param $ ...
- 剖析XAML语言
这节剖析一下XAML(读作:zaml)--这一WPF中的UI设计语言. XAML 在wpf中,UI部分使用xaml语言来编写,xaml语言是由xml语言派生而来的语言,所以在xaml中我们可以看到很多 ...
- Jenkins 基础篇 - 安装部署
Jenkins 安装 Jenkins 支持主流的 Linux 发行版系统,同时还支持 macOS.Windows.和 Docker 运行. 具体系统的 Jenkins 安装包可以去官网下载 https ...
- c++逆向分析----返回对象
对象不使用默认析构函数 class Test { public: char cNum1; int iNum2; int* pInt; }; Test _ReturnObject() { Test st ...
- BUAA-OO-第四单元总结——终章
面向对象第四单元博客总结--终章 第四单元作业设计 第13次作业设计 类和对应方法属性设计 类设计如下图所示 本次作业主要涉及六个类,其中包括主类 Main ,通用Map类 UmlElementIdM ...