开源医学图像处理平台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 ...
随机推荐
- Oracle12c 的安装教程图解(安装系统:windows 2008R2)
Oracle12c 的安装教程图解(安装系统:windows 2008R2) 第一节 安装和下载路径 1 官方下载路径: http://www.oracle.com/cn/products/dat ...
- Confluence 6 启用主题评论
页面或者博客页面中显示的评论以下面 2 种方式显示: 主题模式(Threaded):以继承回复的方式显示页面的评论.每一回复的评论将会在不同评论之间显示,以表示各个评论之间的关系. 平面模式(Flat ...
- Guideline 5.2.1 - Legal - Intellectual Property 解决方案
最近在上架公司公司项目的时候遇到这个问题什么5.2.1 然后去了解发现最近不少人都遇到了这个问题.先说一下 我上架的APP是一个医疗的APP然后说需要什么医疗资质,估计是账号的公司资质不够吧.后面和苹 ...
- 三.NFS存储服务
01. 课程回顾 备份服务概念介绍(rsync备份服务利用相应算法,实现增量数据同步) 备份服务工作方式说明: 1. 本地数据备份同步方式(类似cp命令) 2. 远程数据备份同步方式(类似scp命令) ...
- 【python】打印函数调用栈
traceback.print_stack()
- java----AOP框架理解
面向切面编程: 通过动态代理+加配置文件 目的解耦 给主逻辑添加一些修饰功能,但是不在主逻辑代码中进行修改,有点类似python中的装饰器,调用方法还是是通过接口的那个类来调用: import jav ...
- Go如何正确的使用mysql driver
具体文章查看: https://xiequan.info/go%E5%A6%82%E4%BD%95%E6%AD%A3%E7%A1%AE%E7%9A%84%E4%BD%BF%E7%94%A8mysql- ...
- python 通用装饰器,带有参数的装饰器,
# 使用装饰器对有返回值的函数进行装饰# def func(functionName): # print('---func-1----') # def func_in(): # print(" ...
- windows解压.tar00文件
通常是单个文件太大分拆出来的,例如data.tar00, data.tar01, data.tar02等 cmd命令行进入几个tar0x文件所在目录,执行: copy /b data.tar0* da ...
- RazorEngine.Templating MVC中View当模板
最近在做一个生成JSON的功能,比较笨的办法就是把需要的数据拆分开,保存到数据库,在从数据库中取出来进行拼接.这种方法比较笨,代码就不贴了. 需要注意拼接的时的转义字符: "\"s ...