开源医学图像处理平台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都行)
pip install tensorflow-gpu==1.7 //安装GPU版本
pip install tensorflow==1.7 //安装CPU版本
pip install niftynet //安装NiftyNet库,所以依赖可以自动完成安装
一般都是借助Anaconda进行安装相应所需的包。
4.利用NiftyNet平台实现一个自带的Demo
在上面粘贴的一篇介绍NiftyNet的paper中:一共介绍了4个Demo,但是由于自己的笔记本性能有限,只能对其中一个名为(highres3dnet_brain_parcellation_model_zoo)分割大脑的模型进行复现。
(1)下载模型和权重值
linux: python net_download.py highres3dnet_brain_parcellation_model_zoo
windows: net_download highres3dnet_brain_parcellation_model_zoo
(2)对图像进行分割
linux:python net_segment.py inference -c ~/niftynet/extensions/highres3dnet_brain_parcellation/highres3dnet_config_eval.ini
windows:net_segment C:/niftynet/extensions/highres3dnet_brain_parcellation/highres3dnet_config_eval.ini
注意,在分割的时候,所有路径都不要含有中文,否则再调用pandas会报错(OSERROR)
执行结果:(运行完成会生成一个100__niftynet_out.nii文件)

利用医学软件Mango打开.nii文件即可。或者利用nibabel库通过python打开,代码如下:
import matplotlib
matplotlib.use('TkAgg')
from matplotlib import pylab as plt
import nibabel as nib
from nibabel import nifti1
from nibabel.viewers import OrthoSlicer3D example_filename = 'C:/Users/tgp/niftynet/data/OASIS/OAS1_0145_MR2_mpr_n4_anon_sbj_111.nii' img = nib.load(example_filename)
print(img)
print(img.header['db_name']) # 输出头信息 width, height, queue = img.dataobj.shape OrthoSlicer3D(img.dataobj).show() num = 1
for i in range(0, queue, 10):
img_arr = img.dataobj[:, :, i]
plt.subplot(5, 4, num)
plt.imshow(img_arr, cmap='gray')
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平台的相关知识,若有错误欢迎指正!
开源医学图像处理平台NiftyNet介绍的更多相关文章
- kettle系列-我的开源kettle管理平台[kettle-manager]介绍
kettle管理工具 专门为kettle这款优秀的ETL工具开发的web端管理工具. 项目简介 kettle作为非常优秀的开源ETL工具得到了非常广泛的使用,一般的使用的都是使用客户端操作管理,但问题 ...
- 开源OA办公平台功能介绍:应用市场-固定资产管理(一)功能设计
概述 应用市场-固定资产管理,是用来维护管理企业固定资产的一个功能.其整个功能包括对固定资产的台账信息.领用.调拨.借用.维修.盘点.报废等一整个生命周期的动态管理过程.力求客户安装就可以使用. 本应 ...
- DICOM医学图像处理:开源库mDCM与DCMTK的比較分析(一),JPEG无损压缩DCM图像
背景介绍: 近期项目需求,须要使用C#进行最新的UI和相关DICOM3.0医学图像模块的开发.在C++语言下,我使用的是应用最广泛的DCMTK开源库,在本专栏的起初阶段的大多数博文都是对DCMTK开源 ...
- 开源任务管理平台TaskManager介绍
很早之前准备写Quartz系列文章,现在终于能够实现了.从本篇开始将带你实现一款自己的任务管理平台.在工作中你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一 ...
- DICOM医学图像处理:DIMSE消息发送与接收“大同小异”之DCMTK fo-dicom mDCM
背景: 从DICOM网络传输一文开始,相继介绍了C-ECHO.C-FIND.C-STORE.C-MOVE等DIMSE-C服务的简单实现,博文中的代码给出的实例都是基于fo-dicom库来实现的,原因只 ...
- DICOM医学图像处理:storescp.exe与storescu.exe源码剖析,学习C-STORE请求
转载:http://blog.csdn.net/zssureqh/article/details/39213817 背景: 上一篇专栏博文中针对PACS终端(或设备终端,如CT设备)与RIS系统之间w ...
- 【转】使用Apache Kylin搭建企业级开源大数据分析平台
http://www.thebigdata.cn/JieJueFangAn/30143.html 本篇文章整理自史少锋4月23日在『1024大数据技术峰会』上的分享实录:使用Apache Kylin搭 ...
- 开源实体映射框架EmitMapper介绍
开源实体映射框架EmitMapper介绍 综述 EmitMapper是一个开源实体映射框架,地址:http://emitmapper.codeplex.com/. Emit ...
- Android_进化史和平台架构介绍
一.Android平台发展史 2008年9月,谷歌正式发布了Android 1.0系统,全球第一台Android设备HTC (G1) 2009年4月,谷歌正式推出了Android 1.5 ...
随机推荐
- Confluence 6 在数据源连接中启用校验查询
确定 Confluence 在数据库连接池中校验数据库连接: 停止 Confluence. 编辑 <installation-directory>/conf/server.xml 文件(或 ...
- Confluence 6 从关闭的连接中恢复
当数据库服务器进行重启或者因为网络问题导致连接中断.所有在数据库连接池中的连接都会被中断.希望处理这个问题,通常需要 Confluence 进行重启. 但是,数据库连接池中的连接可以通过运行 SQL ...
- verilog-testbench 时钟和复位模板
/********************************************* ** Clocks & Reset ******************************* ...
- laravel 5.6
compact() 建立一个数组,包括变量名和它们的值 打印结果: starts_with() 函数判断给定的字符串的开头是否是指定值
- sass方式实现颜色平铺(红色--->紫色)
<!DOCTYPE html><html lang="en"><head> <link rel="stylesheet" ...
- ConfigurationManager 类的使用
一.引用 命名空间: System.Configuration程序集: System.Configuration(位于 System.Configuration.dll) 二.示例 1.读取.增 ...
- 执行Spark运行在yarn上的命令报错 spark-shell --master yarn-client
1.执行Spark运行在yarn上的命令报错 spark-shell --master yarn-client,错误如下所示: // :: ERROR SparkContext: Error init ...
- js 函数参数为什么是按值传递?
首先说下,在js中有两大类数据类型: 基本类型和引用类型. 其次,基本类型有5种: Undefined,Null,Boolean,Number.String, 引用类型有一种: Object(Func ...
- 牛客网round1
题解: 1. 二分答案之后判断 把式子移项使得x,y不关联 #include <bits/stdc++.h> using namespace std; #define rint regis ...
- Docker Client (another java docker client api)
前一篇提到了docker-java,这里介绍另一个docker client 库,Docker Client 版本兼容 兼容17.03.1~ce - 17.12.1~ce (点 [here][1]查看 ...