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介绍的更多相关文章

  1. kettle系列-我的开源kettle管理平台[kettle-manager]介绍

    kettle管理工具 专门为kettle这款优秀的ETL工具开发的web端管理工具. 项目简介 kettle作为非常优秀的开源ETL工具得到了非常广泛的使用,一般的使用的都是使用客户端操作管理,但问题 ...

  2. 开源OA办公平台功能介绍:应用市场-固定资产管理(一)功能设计

    概述 应用市场-固定资产管理,是用来维护管理企业固定资产的一个功能.其整个功能包括对固定资产的台账信息.领用.调拨.借用.维修.盘点.报废等一整个生命周期的动态管理过程.力求客户安装就可以使用. 本应 ...

  3. DICOM医学图像处理:开源库mDCM与DCMTK的比較分析(一),JPEG无损压缩DCM图像

    背景介绍: 近期项目需求,须要使用C#进行最新的UI和相关DICOM3.0医学图像模块的开发.在C++语言下,我使用的是应用最广泛的DCMTK开源库,在本专栏的起初阶段的大多数博文都是对DCMTK开源 ...

  4. 开源任务管理平台TaskManager介绍

    很早之前准备写Quartz系列文章,现在终于能够实现了.从本篇开始将带你实现一款自己的任务管理平台.在工作中你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一 ...

  5. DICOM医学图像处理:DIMSE消息发送与接收“大同小异”之DCMTK fo-dicom mDCM

    背景: 从DICOM网络传输一文开始,相继介绍了C-ECHO.C-FIND.C-STORE.C-MOVE等DIMSE-C服务的简单实现,博文中的代码给出的实例都是基于fo-dicom库来实现的,原因只 ...

  6. DICOM医学图像处理:storescp.exe与storescu.exe源码剖析,学习C-STORE请求

    转载:http://blog.csdn.net/zssureqh/article/details/39213817 背景: 上一篇专栏博文中针对PACS终端(或设备终端,如CT设备)与RIS系统之间w ...

  7. 【转】使用Apache Kylin搭建企业级开源大数据分析平台

    http://www.thebigdata.cn/JieJueFangAn/30143.html 本篇文章整理自史少锋4月23日在『1024大数据技术峰会』上的分享实录:使用Apache Kylin搭 ...

  8. 开源实体映射框架EmitMapper介绍

    开源实体映射框架EmitMapper介绍   综述       EmitMapper是一个开源实体映射框架,地址:http://emitmapper.codeplex.com/.       Emit ...

  9. Android_进化史和平台架构介绍

    一.Android平台发展史  2008年9月,谷歌正式发布了Android 1.0系统,全球第一台Android设备HTC (G1)  2009年4月,谷歌正式推出了Android 1.5      ...

随机推荐

  1. java多线程快速入门(十七)

    多线程通讯实例(必须要有多个线程.必须要管理同一个变量:线程A生产一个变量,线程B消费一个变量) package com.cppdy; class User { public String usern ...

  2. Penetration testing _internal & wireless Penetration Testing

    第一部分 渗透测试步骤 ---参考资料  Ethical Hacking: The Value of Controlled Penetration Tests  下载地址  链接:https://pa ...

  3. eclipse的安装及使用

    1.安装 2工作区 3透视图添加透视图 关闭和显示各个子视图 点击视图右上角的关闭按钮可以关闭当前视图 可以选择Window-->Show View菜单项打开各个子视图 4创建项目 选择File ...

  4. Python使用正则表达式分割字符串

    re.split(pattern, string, [maxsplit], [flags]) pattern:表示模式字符串,由要匹配的正则表达式转换而来. string:表示要匹配的字符串. max ...

  5. 一个简单的binlog恢复测试

    日常的数据备份及恢复测试,是DBA工作重中之重的事情,所以要做好备份及测试,日常的备份常见有mysqldump+binlog备份.xtrabackup+binlog备份,无论那一种,几乎都少不了对bi ...

  6. Windows Internals 笔记——错误处理

    1.Windows函数检测到错误时,会使用一种名为“线程本地存储区”的机制将相应的错误代码与“主调线程”关联到一起.这种机制使得不同的线程能独立运行,不会出现相互干扰对方的错误代码的情况. 2.Get ...

  7. 微信录音文件上传到服务器以及amr转化成MP3格式,linux上转换简单方法

    微信公众号音频接口开发 根据业务需求,我们可能需要将微信录音保存到服务器,而通过微信上传语音接口上传到微信服务器的语音文件的有效期只有3天,所以需要将文件下载到我们自己的服务器. 上传语音接口 wx. ...

  8. markdown 相关零碎知识

    1.尖括号<>在markdown会被当做html符号,解决办法:用转义字符,如:<测试>  可以写作&lt:测试>

  9. 目标检测算法SSD之训练自己的数据集

    目标检测算法SSD之训练自己的数据集 prerequesties 预备知识/前提条件 下载和配置了最新SSD代码 git clone https://github.com/weiliu89/caffe ...

  10. C#Enum用Tuple保存值绑定到前端的CheckBox

    //把数字转成枚举 public static T[] NumStringsToEnums<T>(string enumNumString ) //where T:Enum { if (s ...