Eisen: A Python Package For Solid Deep Learning

项目地址

【Project】https://eisen-ai.github.io
【Paper】https://arxiv.org/pdf/2004.02747.pdf

作者:

Frank Mancolo

摘要

   Eisen是一个开放源代码python软件包,可轻松实现各种深度学习方法。 它是专门为医学图像分析和计算机视觉任务量身定制的,而且它的灵活性允许扩展到任何应用程序。 Eisen基于PyTorch,并遵循与其他软件包提供的模块兼容的相同体系结构。 Eisen实现了多种数据集加载方法,各种数据格式的I / O,数据处理和转换,训练,验证和测试循环的全面实现,损失和网络体系结构的实现,训练模块,摘要和日志的自动导出,可视化实验构建 ,命令行界面等。 此外,它对社区的用户贡献开放。 可以从http://eisen.ai下载文档,示例和代码。

1. 前言

   深度学习方法近来已成为解决广泛领域挑战性任务的极其有效的工具。 引入深度学习方法已彻底改变了计算机视觉。 医学图像分析作为计算机视觉的一个分支,也不例外:该领域最近发表的绝大多数论文都基于深度学习和卷积神经网络(CNN)的使用。
   最新方法的大多数开源实现都是从头开始构建的。 几乎所有已发布的工作都利用定制的数据处理流程以及定制的训练,验证和测试循环,并且通常依赖于个性化的模型实现。 这使得新方法的开发成为劳动密集的过程。 此外,每当将现有方法应用于新数据集或需要更改现有实现的一部分以容纳新功能时,都需要对代码库进行多次更改,并且取决于其体系结构,静默错误和不必要的更改会增加复杂性。
   性能基准对于揭示新提出的方法的真实性能至关重要,而且也不容易获得并且常常会引起误解,因为研究人员通常在部分比较方法的实现中必须依靠自己的实现。 这通常容易出错,因为该代码通常未经测试,甚至某些熟练的程序员也可能会错过一些实现细节。
   最后,每当研究易手,具有不同背景和技能的项目负责人相互遵循时,就需要重新评估,理解和希望扩展这些自定义架构,以纳入新的工作。 在这种情况下,复杂的自定义设计代表了一个很大的劣势,因为创建新的兼容代码和重用现有的模块具有挑战性,而且通常是不可能的。
   这些只是促使Eisen发展的一些问题。 我们的目标是为开发用于视觉任务的深度学习方法提供一个“有针对性的”框架。 从这个意义上讲,Eisen提出了一种模块化体系结构,其中每个模块通过标准接口和可读性强的功能执行非常有限的功能。 模块可以混合和匹配,每个模块都有其特定的角色,并在训练,验证,测试和模型服务期间使用,以实现复杂的功能。 每个模块都易于阅读,记录并遵循标准实施。 这样就形成了一种易于理解的架构,符合PyTorch及其生态系统背后的设计原则,并提供了灵活性和扩展机会。
Eisen: A Python Package For Solid Deep Learning
   Eisen模块实现了深度学习模型开发和实验的各个方面:数据集读取功能,以将来自公共挑战或其他来源的数据引入Eisen; Nifti,ITK,PNG,JPEG,DICOM等各种格式的数据加载;数据处理和扩充,以便转换数据格式,裁剪,调整,重新采样图像;自动导出培训工件,Tensorboard总结,工作流程活动的详细日志; 几种网络架构,例如UNet [1],VNet [2],Highres3DNet [3],Obelisk [4]; 其他层,损失和指标; 以及其他一些次要功能。
   可以通过简单的导入eisen或通过CLI导入任何python项目中的相关模块,或者直接从GitHub存储库中的源代码中复制来访问Eisen的功能。 核心功能是根据MIT许可提供的。GNU GPL v3.0许可证提供了不属于核心的其他功能。

2. 相关工作