开源医学图像处理平台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 ...
随机推荐
- js原生回到顶部,并平滑过渡---- 记录
window.scrollTo({ top: 0, behavior: 'smooth', });
- mongodb 数据库中 的聚合操作
- usrp使用
首先打开linux 输入uhd_find_divice gqrx
- npm常用模块
https://blog.csdn.net/heliumlau/article/details/70577727
- Python1 简介及安装、基础
Python介绍 Python是面向对象,高级语言,解释,动态和多用途编程语言.Python易于学习,而且功能强大,功能多样的脚本语言使其对应用程序开发具有吸引力. Python的语法和动态类型具有其 ...
- 【python】升级pip后报错解决pkg_resources.DistributionNotFound: The 'pip==7.1.0' distribution was not found and is required by the application
原本使用pip版本为7.1.0,后升级至9.0.1 之后使用pip list提示pkg_resources.DistributionNotFound: The 'pip==7.1.0' distrib ...
- 【mysql】datetime时间比较
如下,比较的日期用指定格式写出就可以了.不需要日期函数. SELECT * FROM table_a WHERE write_date > "2017-07-17 00:00:00&q ...
- PDF怎么编辑,如何旋转PDF页面方向
很多的时候,无论是工作中,还是在学习中都会遇到PDF文件,对于PDF文件,熟悉的小伙伴知道,在编辑PDF文件的时候,是需要使用到PDF编辑软件的,那么,在编辑PDF文件的时候,需要旋转文件的页面,这时 ...
- bzoj 1812
什么鬼noip互测题... 这题很显然是树形dp,但设计状态以及转移是个难点 记状态f[i][j][k]表示以i为根节点的子树,离i最近的祖宗节点编号为j放了虫洞(伐木场?),i的子树内放了k个伐木场 ...
- HDU 1075 What Are You Talking About (stl之map映射)
What Are You Talking About Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/204800 K ...