前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NiftyNet开源平台的使用 -- 配置文件

NiftyNet开源平台的使用 -- 配置文件

作者头像
范中豪
发布2019-09-10 18:21:44
8440
发布2019-09-10 18:21:44
举报
文章被收录于专栏:CV学习史CV学习史

NiftyNet开源平台的使用

NiftyNet基础架构是使研究人员能够快速开发和分发用于分割、回归、图像生成和表示学习应用程序,或将平台扩展到新的应用程序的深度学习解决方案。

详细介绍请见: (https://cloud.tencent.com/developer/article/1502612)

官网 (https://niftynet.readthedocs.io/en/latest/config_spec.html)

NiftyNet工作流可以由NiftyNet应用程序和配置文件完全指定。

运行工作流的命令是:

代码语言:javascript
复制
python net_run.py [train|inference|evaluation] -c <path_to/config.ini> -a <application>

使用train指令表明想要使用提供的数据更新已存在的网络模型,使用inference将加载已存在的网络模型根据提供的数据生成响应。-c 后跟配置文件路径,-a 跟将要import的应用种类。

application参数

图像分割

代码语言:javascript
复制
net_segment -c ...

图像回归

代码语言:javascript
复制
net_regress -c ...

自动编码

代码语言:javascript
复制
net_autoencoder -c ...

生成对抗网络(GANs)

代码语言:javascript
复制
net_gan -c ...

net_run命令也支持命令行参数,以--<name> <value>--<name>=<value>的形式表示。输入的参数将取代系统默认的和配置文件中的参数。

配置文件

每个网络想要运行必须包含一个config.ini配置文件,用来设置训练/测试所用的全部参数,详细如下:

每个配置文件中必须包含三个sections:

* SYSTEM

* NETWORK

* APPLICATION

如果train行为被需要,则[TRAINING]section需要被定义,同样,如果inference行为被需要,则需要定义[INFERENCE]

APPLICATION由自己定制,可以使用的有:

* [GAN] -- 生成对抗网络

* [SEGMENTATION] -- 分割网络

* [REGRESSION] -- 回归网络

* [AUTOENCODER] -- 自动编码网络

每个section的参数

Input data source

* csv_file: 输入图像路径

* path_to_search: 搜索图像的单个或多个文件,如果有多个用逗号分开

* filename_contains: 匹配文件名的关键词

* filename_not_contains: 排除文件名的关键词

* filename_removefromid: 从文件命中抽取主题id的正则表达式,被匹配的模式将从文件名中移除并生成主题id。

* interp_order: 插值法,当设定采样方法为resize时,需要该参数对图片进行上采样或下采样,0表示最近插值,1表示双线性插值,3表示三次样条插值,默认为3

* pixdim: 如果被指定,输入volum在被喂给网络之前将被重采样成voxel尺寸

* axcodes: 如果被指定,输入volum在被喂给网络之前将被调整为坐标码(axes code)

* spatial_window_size: 输入到网络中的图片尺寸,需指明三个维度,第一个和第二个分别表示图片的长和宽,第三个如果为1表示使用2d卷积,否则使用3d卷积

* loader: 图片读取器,默认值None将尝试所有可得到的读取器

  读取器支持的类型有:

  nibabel 支持.nii医学文件格式

  simpleitk 支持.dcm和.mhd格式的医疗图像

  opencv 支持.jpg等常见图像,读取后通道顺序为BGR

  skimage 支持.jpg等常见图像

  pillow 支持.jpg等常见图像,读取后通道顺序为RGB

System

* cuda_devices: 设置tensorflow的CUDA_VISIBLE_DEVICES变量

* num_threads: 设置训练的预处理线程数

* num_gpus: 设置训练的GPU的数量

* model_dir: 训练模型的保存和加载路径

* dataset_split_file: 文件分配科目到子集

* event_handler: 事件处理器

NETWORK

* name: niftynet/network中的网络类或用户自定义的模块

* activation_function: 网络的激活函数集合

* batch_size: 设置每次迭代图像窗口的数量

* smaller_final_batch_mode: 当batch_size的窗口采样器总数是不可见的时支持最后的batch使用不同的模式

  可选类型有:

  drop: 终止剩余的batch

  pad: 用-1填补最后更小的batch

  dynamic: 直接输出剩余的batch

* reg_type: 可训练的正规化参数的类型

* decay: 正规化的强度,用于预防过拟合

* volume_padding_size: 图片的填补值

* window_sampling: 进入网络的图片的采样方法

  uniform: 输出的图片保持原本大小

  weighted: 对成比例的voxel的采样到累积直方图的似然

  balanced: 每个标签都被采样的可能性同样

  resize: 将进入网络的图片首先resize到spatial_window_size

* queue_length: NiftyNet会设置两个队列,一个负责从数据集中读取数据并扰乱,另一个从前一个队列中读取batch_size张图片输入网络,这个参数是指第一个队列的长度,最小值为batch_size \* 2.5

* keep_prob: 如果失活被网络支持的话,每个元素存活的可能性

Volume-normalisation

* normalisation: 指示直方图标准化是否应该被应用于数据

* whitening: 只是被加载的图片是否应该被增白,如果是,输入I,返回(I - mean(I)) / std(I)

* histogram_ref_file: 标准化参数的文件

* norm_file: 基于直方图的标准化的直方图landmark类型

* cutoff: 下级和上级的基于直方图的标准化的截断

* normalise_foreground_only: 指示一个mask是否需要被基于前景或多样前景进行计算,如设置True,所有的标准化步骤都将被应用于生成前景区

* foreground_type: 生成一个前景mask,并且它只用于前景

* mutimod_foreground_type: 结合前景mask和多模态的策略

  可选类型:

  or: 可得到的masks的合集

  and: 可得到的mask的交集

  all: mask从每个模态独立计算

TRAINING

* optimiser: 计算图梯度优化器的类型,支持adagrade,adam,gradientdescent,momentum,rmsprop,nesterov

* sample_per_volume:每张图的采样次数

* lr: 学习率

* loss_type: loss函数的类型,支持segmentation,regression,autoencoder,gan

* starting_iter: 设置重新训练模型的迭代次数

* save_every_n: 保存当前模型的频率,0为不保存

* tensorboard_every_n: 计算图中的元素和写到tensorboard上的频率

* max_iter: 最大训练迭代次数

Validation during training

* validation_every_n: 每n次迭代运行一次验证迭代

* validation_max_iter: 验证迭代运行的次数

* exclude_fraction_for_validation: 用于验证的数据集的比例

* exclude_fraction_for_inference: 用于推断的数据集的比例

Data augmentation during traning

* rotation_angle: 指示输入的图片旋转一个随机的旋转

* scaling_percentage: 指示一个随机的缩放比例(-50,50)

* random_flipping_axes: 可以翻转增强数据的轴(???)

INFERENCE

* spatial_window_size: 指示输入窗口的大小(int array)

* border: 一个用于修剪输出窗口大小的边界值(int tuple),如设置(3,3,3),将把一个(64\64\64)的窗口修剪为(58\58\58)

* inference_iter: 指定已训练的模型用于推测(integer)

* save_seg_dir: 预测目录的名字

* output_postfix: 向每一个输出文件的名称后添加后缀

* output_interp_order: 网络输出的推断顺序

* dataset_to_infer: 字符串指定计算推理的数据集(‘training’, ‘validation’, ‘inference’)

EVALUATION

* save_csv_dir: 存储输出的csv文件的路径

* evaluations: 要计算的评价指标列表以逗号分隔的字符串表示,每个应用程序可能的评估指标列表可用于回归评估、分段评估和分类评估

* evaluation_units: 描述在分割的情况下应该如何进行评估

  foreground: 只对一个标签

  label: 对每一个标签度量

  cc: 对每个连接组件度量

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-10-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
批量计算
批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档