开源医学图像处理平台NiftyNet介绍

18年下半年10月份左右,老师分配有关NiftyNet平台的相关学习的任务,时隔5个月,决定整理一下以前的笔记,写成相应的博客!

目录

1.NiftyNet平台简介

2.NiftyNet平台架构设计

3.NiftyNet安装平台

4.利用NiftyNet平台实现一个自带的Demo

5.NiftyNet文档介绍


1.NiftyNet平台简介

(1)NiftyNet是一款开源的卷积神经网络平台,专门针对医学图像处理分析以及医学影像指导治疗,由WEISS (Wellcome EPSRC Centre for Interventional and Surgical Sciences), CMIC ( Centre for Medical Image Computing),HIG(High-dimensional Imaging Group)三家研究机构共同推出。

(2)NiftyNet基于Tensorflow的开源卷积神经网络平台,这一模块化设计的开源平台包含了可共享的网络和预训练模型,在这些模块的帮助下我们可以方便快速地搭建针对医学图像处理的神经网络模型

(3)NiftyNet实现了一整套的DeepLearning流程。将数据加载、模型加载,网络结构定义等进行了很好的分离,抽象封装成了各自独立的模块

(4)NiftyNet基础架构是使研究人员能够快速开发和分发用于分割、回归、图像生成和表示学习应用程序,或将平台扩展到新的应用程序的深度学习解决方案,即NiftyNet支持:图像分割、图像分类、回归、auto-encoder、(图像模型表示)、GAN(图像生成)

(5)目前的NiftyNet只是一个研究平台,并不保证临床使用的稳定性和准确率,它具有以下一些功能方便医学图像处理的研究:

  1)用户接口方便的修改个性化网络元件参数

  2)可共享网络和训练模型

  3)支持2-D,2.5-D,3-D,4-D的数据输入

  4)支持多GPU的高效训练

  5)内置了当前前沿的神经网络包括HighRes3DNet, 3D U-net, V-net, DeepMedic等,可以方便的使用

  6)对医学图像分割的综合评价度量

(6)NiftyNet平台官网:http://niftynet.io/

2.NiftyNet平台架构设计

更加具体的介绍请参考paper:https://arxiv.org/abs/1709.03485

 

如上图所示:NiftyNet应用程序类通过连接四个组件封装了针对不同医学图像分析应用程序的标准分析管道:

(1)Reader: 从文件中加载数据

(2)Sampler: 为之后的处理生成合适的样本 

(3)Network: 处理输入

(4)output handler: 包括在培训期间的损失和优化器,以及在推理和评估期间的聚合器 

(5)ApplicationDriver: 定义了跨所有应用程序的公共结构,并负责实例化数据分析管道并将计算分布到可用的计算资源。 

如下所示:是平台具体的实现流程:

3.NiftyNet安装平台

由于整个平台和项目都是基于Tensorflow基础上的,所以我们必须安装基础的实验环境:(操作系统为linux或者window都行)

1 pip install tensorflow-gpu==1.7     //安装GPU版本
2 pip install tensorflow==1.7  //安装CPU版本
3 pip install niftynet    //安装NiftyNet库,所以依赖可以自动完成安装

一般都是借助Anaconda进行安装相应所需的包。

4.利用NiftyNet平台实现一个自带的Demo

 在上面粘贴的一篇介绍NiftyNet的paper中:一共介绍了4个Demo,但是由于自己的笔记本性能有限,只能对其中一个名为(highres3dnet_brain_parcellation_model_zoo)分割大脑的模型进行复现。

 (1)下载模型和权重值

1 linux: python net_download.py highres3dnet_brain_parcellation_model_zoo 
2 windows: net_download highres3dnet_brain_parcellation_model_zoo 

 (2)对图像进行分割

1 linux:python net_segment.py inference -c ~/niftynet/extensions/highres3dnet_brain_parcellation/highres3dnet_config_eval.ini  
2 windows:net_segment C:/niftynet/extensions/highres3dnet_brain_parcellation/highres3dnet_config_eval.ini 

注意,在分割的时候,所有路径都不要含有中文,否则再调用pandas会报错(OSERROR)

执行结果:(运行完成会生成一个100__niftynet_out.nii文件)

利用医学软件Mango打开.nii文件即可。或者利用nibabel库通过python打开,代码如下:

 1 import matplotlib
 2 matplotlib.use('TkAgg')
 3 from matplotlib import pylab as plt
 4 import nibabel as nib
 5 from nibabel import nifti1
 6 from nibabel.viewers import OrthoSlicer3D
 7 
 8 example_filename = 'C:/Users/tgp/niftynet/data/OASIS/OAS1_0145_MR2_mpr_n4_anon_sbj_111.nii'
 9 
10 img = nib.load(example_filename)
11 print(img)
12 print(img.header['db_name'])  # 输出头信息
13 
14 width, height, queue = img.dataobj.shape
15 
16 OrthoSlicer3D(img.dataobj).show()
17 
18 num = 1
19 for i in range(0, queue, 10):
20     img_arr = img.dataobj[:, :, i]
21     plt.subplot(5, 4, num)
22     plt.imshow(img_arr, cmap='gray')
23     num += 1

结果如下:

5.NiftyNet文档介绍

文档主要包括三个主要部分,分别是指引、资源和接口参考三个部分

(1)Guide:

主要包括平台简介、安装指南和配置文件的设置;同时还有一个模型库可供用户选择合适的模型适配具体的问题;如果无法满足需求的情况下,它还提供了如何建立网络的教程,可以一步一步创建自己的新网络。

(2)Resource:

这里包含了一系列资源,除了项目的网络还包括源码和源码镜像、以及模型库。同时还提供了Stack Overflow提问区域供用户交流;

(3)API & reference

网络几大模块的说明,主要有application、contrib、engine、evaluation、io、layer、network和utilities等功能包供用户使用,每一个都有详尽的参数描述和使用指南

 

参考:https://blog.csdn.net/u014636245/article/details/79322401


以上就是有关NiftyNet平台的相关知识,若有错误欢迎指正!

 

posted @ 2019-03-29 13:43  控球强迫症  阅读(1746)  评论(0编辑  收藏  举报