训练灰度无关神经网络的随机平滑灰度变换(rsgt)实现

rsgt的Python项目详细描述


Test statusCode coverageDocumentation statuspypi

随机平滑灰度变换

卷积神经网络训练用于特定类型的医学灰度图像(如CT或MR图像)中的检测或分割任务 在其他医学灰度图像中失败,即使目标结构在这两种图像中看起来都很相似。随机平滑灰度值变换是 数据增强技术的目的是迫使网络成为灰度不变的。在训练过程中,训练图像或面片的灰度值为 随机变化,但使用平滑和连续的传递函数,使形状和纹理信息基本保留。在

API文档:http://rsgt.readthedocs.io/

安装

要在您自己的项目中使用随机平滑灰度值转换的数据扩充,只需安装rsgt包:

pip install rsgt
  • 需要Python 2.7+或3.5+
  • Numpy是唯一的依赖

数据扩充

医学图像的输入值通常是灰度值。在

^{pr2}$

返回的numpy数组将有一个浮点数据类型,值在[0,1]范围内。在

小批量

虽然函数支持具有任意数量维的输入数据,但它当前不支持小批量。小批量的3D图像可以被视为 4D输入数组,但小批量中的所有图像都将进行相同的转换。这意味着将计算单个随机查找表 并应用于小批量中的所有图像。当前没有转换函数的矢量化实现,因此for循环此时是 在具有不同转换功能的小批量中转换图像的唯一方法:

foriinrange(minibatch.shape[0]):minibatch[i]=random_smooth_grayvalue_transform(minibatch[i],dtype='float32')

示例

Original CT scanTransformed CT scan #1Transformed CT scan #2Transformed CT scan #3

最左边的图像是原始的CT切片。其他图像显示了应用随机平滑灰度变换的相同切片。转变 函数显示在转换后的图像下方。在

此CT扫描来自kits19 challengeCC BY-NC-SA 4.0许可证)。在

规范化函数

也可以在[1]的时间范围内将值应用到[0]上,因为它也是灰色函数的必要值 在推理时将输入图像规格化为[0,1]。rsgt软件包附带CT和MR扫描的辅助函数:

CT扫描

原始图像的期望值是Hounsfield单位,范围从-1000(图像区域外的背景)到3000左右 像金属植入物一样的致密结构。在

fromrsgt.normalizationimportnormalize_ct_scannormalized_image=normalize_ct_scan(image,dtype='float32')

MR扫描

由于MR扫描的值不像CT扫描那样标准化,所以标准化是基于输入值的5%和95%。价值观 下面和上面都被剪掉了。在

fromrsgt.normalizationimportnormalize_mr_scannormalized_image=normalize_mr_scan(image,dtype='float32')

这种标准化也可以与增强技术结合使用:

fromrsgt.augmentationimportrandom_smooth_grayvalue_transformfromrsgt.normalizationimportnormalize_mr_scanN=4096# number of binsnormalized_integer_image=(normalize_mr_scan(image,dtype='float32')*N).round().astype(int)new_image=random_smooth_grayvalue_transform(normalized_integer_image,min_max_val=(0,N),dtype='float32')

引文

请引用我们的短文,描述在您的工作中使用此技术时用于数据扩充的随机平滑灰度变换:

N. Lessmann and B. van Ginneken, "Random smooth gray value transformations for cross modality learning with gray value invariant networks", arXiv:2003.06158

许可证

此软件包在MIT license下发布,如许可证文件中所示,/examples目录中的图像除外,它 在Creative Commons许可证(CC BY-NC-SA 4.0)下发布。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Jsonify使用Jackson来定义嵌套对象   在Swing中禁用java图形调试   java Selenium Webdriver拖放在Jenkins上不起作用   java我对一个显示器的问题有一个非常不切实际的询问   java增强的“for”循环导致ArrayIndexOutOfBoundsException   ArrayAdapter适用于Java中的安卓编程,字符串数组   linux在Ubuntu上通过PulseAudio播放Java音频文件时出错   java在Spring应用程序中加载内部(类路径)和外部属性文件   java使用Maven连接到mySQL   Java应用程序的设计   websocket在电报api java中与dc的连接   java XMLStreamException,因为xml中的(&N)   java从控制台输出到JTextArea   Java导出文本文件   java实现parseInt方法   java为什么servlet容器会同步对特定资源/servlet的多个请求的访问?   循环中的Java“while”变量   用Java编程一个国际象棋游戏,gameOver布尔不起作用   java如何获得真正的JPanel大小?