一种开源的医学图像去识别工具

数据库现在是我们最有价值的商品之一。作为商品的信息并不是一个新概念,但我们21世纪的世界现在看起来与以前完全不同。AI竞赛正在进行,与之同步进行的是我们需要促进它的工具和资源的开发。汇集信息以创建健壮、可推广且对我们日常生活有用的推论比听起来更难。特别是在处理医疗数据方面更是如此。在聚合中提取价值和开发算法时,医疗数据面临着许多困难。除了噪声外,它们还受到充当数据管理员的机构和医疗中心的严格监管(出于良好的原因),因为它包含个人健康信息(PHI)。
如果泄漏,个人健康信息可能对个人的隐私产生有害影响。这些可能从简单的尴尬到在工作场所/或与保险公司的歧视,甚至到身份盗窃。因此,当研究人员和机构同意汇集信息以创建数据库时,必须存在数据使用协议和尽可能去识别数据的工具。 PHI可以采取几种形式-直接:医疗保健编号、社会安全号码和出生日期,尽管名称在技术上不是唯一的,但它们被视为唯一的。还有准识别符,例如收集图像的日期。此外,在训练机器学习算法时,这些名称可以被视为我们不希望学习的烦恼信息。因此,删除它们对于多个原因是必要的。
已经尝试过许多医学图像去识别的方法。不幸的是,所提出的解决方案缺乏成功,操作系统特定,或仅通过专有供应商或研究人员以收费的方式提供[1-4]。我在阅读这些文章时注意到的另一个问题是,研究人员仅寻求掩盖/删除识别文本,同时保留有用但科学的文本不变。虽然这是一个高尚的目标,但这是一个非常困难的问题。这归因于PHI可以采用不同格式,具体取决于设备供应商和医院系统。我们想要保持科学信息,但在图像堆叠的情况下,这些信息在每个帧中都会重复。这意味着它在图像中占用了冗余空间-因此,如果我们可以将其删除一次,我们可以节省存储空间!因此,我们可以将这些视为我们的设计约束。因此,考虑到这些,让我们同时解决这些问题。
我们采用循环卷积神经网络形式的机器学习。为了开始处理管道,第一项任务是识别、提取和遮盖找到在数组中的基于文本的数据。这个过程利用PyTorch作为文本检测的框架。文本识别模型基于卷积循环神经网络(CRNN),其在IC13、IIIT5k和SVT数据集上进行了训练。该模型包括三个关键组成部分:
a)功能提取,通过ResNet(卷积神经网络)和视觉几何组(VGG)神经网络的组合实现。这负责检测类似字母的特征。
b)序列标记,使用长短期记忆网络(LSTM)完成。这里的重复部分非常重要,以确保在图像中彼此相邻且看起来像文本的特征被假定为组合在一起-这意味着它们形成了一致的单词。
c)在此之上,有一个连通时间分类器(CTC),用于执行光学字符识别(OCR)。这负责根据英语词汇表将检测到的单词转录为字母。因此,CTC进行解码。
数据清洗和匿名化的概述包括加载数据(可能是DICOM、JPEG堆栈或视频文件)并将其通过OCR和遮罩程序进行文本检测和删除。任何识别的文本都会被提取并保存到单独的.csv文件中(下面)。如果用户决定混淆文件名,则会连接一系列随机的字母数字字符,并将原始文件名进一步添加到.csv文件中,这现在同时作为交叉步行文件。此外,通过消除任何多余元素来改善图像。随后,使用一系列过滤、形态和几何操作(其中有各种版本的解释)来隔离感兴趣区域(ROI)。

在这项工作中,我们展示了我们可用算法的实用性,并提供了如何将它们集成到其应用程序中的指导。我们的软件 PyLogik 可以通过终端使用命令 pip install PyLogik 安装。我们设计了几个可以在管道中同时或分别使用的功能。我们的软件支持各种图像类型,包括 2D(灰度)、3D(灰度多帧或 3 通道 RGB)和 4D(多帧带有 RGB 信息),并且可以读取 dicom、.png、.jpg、.jpeg 和 .nii(NIfTi)图像类型。任何跳过的文件及其处理详细信息都记录在目标文件夹的日志文件中。
我的程序的一般工作流程如下:

我们的函数可以按以下方式导入和使用。使用终端安装库:
$ pip install pylogik
导入库:
from pylogik import deidfrom pylogik import im_analysis
用户可以使用各种函数:

这种方法最初是围绕去识别超声图像的想法设计的,但后来被扩展并扩大了范围,以包括可能不想在图像的“清理”部分上限制的其他成像模式。我们将简要介绍各种选项。
- 仅用于去识别。这仅删除图像中的烧录文本,将其写入 .csv 文件,并将图像帧写入无损 JPEG 中,带有文件名(用于交叉参考目的)。
deid.deid(input_path = "path_to_files", output_path="path_to_save_files",rename_files = False, threshold = 0)
- input_path:图像文件的路径(DICOM、JPEG 或视频)
- output_path:保存新图像文件和 .csv 文本文件的路径
- rename_files:False(默认值)将文件名更改为一系列 10 个随机选择的字母数字
- threshold:0(默认值)图像中的阈值的整数值(默认值=0)。如果用户不清楚,可以使用默认值或使用颜色选择工具从示例图像中捕获背景强度
2. 这是用于去识别和清理超声数据的。这实际上是我创建的第一个函数,它具有一些很酷的几何比较,可以保持非常干净的 ROI。这将从图像中删除烧录文本,将其写入 .csv 文件(带有文件名以进行交叉参考),根据相关文献中概述的方法处理和压缩图像,并将图像帧写入无损 JPEG 中。
deid.deid_us(input path = "path_to_files", output path="path_to_file_save",rename_files=False, thresh=0)
- input_path:图像文件的路径(DICOM、JPEG 或视频)
- output_path:保存新图像文件和 .csv 文本文件的路径
- rename_files:False(默认值)将文件名更改为一系列 10 个随机选择的字母数字
- threshold:0(默认值)图像中的阈值的整数值(默认值=0)。如果用户不清楚,可以使用默认值或使用颜色选择工具从示例图像中捕获背景强度
3. 这是用于去识别和清理的,仅保存图像中最大的显著项。这将从图像中删除烧录文本,将其写入 .csv 文件(带有文件名以进行交叉参考),仅保留图片中最显著的单个项 – 根据需要压缩 – 并将图像帧写入无损 JPEG 中。
deid.deid_one(input_path = "path_to_files", output_path="path_to_file_save",rename_files=False, threshold = 0)
- input_path:图像文件的路径(DICOM、JPEG或视频)
- output_path:新图像文件和.csv文本文件的保存路径
- threshold:图像中的阈值整数值(默认值= 0)。如果用户不清楚,可以使用默认值或使用颜色选择工具从样本图像中捕获背景强度
- rename_files:False(默认)将文件名更改为一系列随机选择的10个字母数字字符
4. 这用于去标识化和清洁,只过滤掉小物体,多个大实体将保留在图像中。这将从图像中去除烧录文本,将其写入.csv文件,并将图像帧写入无损JPEG(删除/提取文本并删除小尺度特征)。
deid.deid_clean((input_path = "path_to_files", output_path="path_to_save_files",rename_files=False, threshold = 0)
- input_path:图像文件的路径(DICOM、JPEG或视频)
- output_path:新图像文件和.csv文本文件的保存路径
- rename_files:False(默认)将文件名更改为一系列随机选择的10个字母数字字符
- threshold:图像中的阈值整数值(默认值= 0)。如果用户不清楚,可以使用默认值或使用颜色选择工具从样本图像中捕获背景强度
5. 如果您有想要简单检测/读取文本以生成CSV的图像,但不希望输出任何图像,则使用此功能。此仅在指定的输出文件夹中查找图像中的文本并将其写入一系列CSV文件中,不会写入图像。
deid.find_txt(input_path = "path_to_files", output_path="path_to_save_files")
- input_path:图像文件的路径(DICOM、JPEG或视频)
- output_path:新图像文件和.csv文本文件的保存路径
- thresh:图像中的阈值整数值(默认值= 0)。如果用户不清楚,可以使用默认值或使用颜色选择工具从样本图像中捕获背景强度
6. 这些是包中包含的一些其他功能,可能对计算和展示Dice分数有用。
A) Dice分数计算:
im_analysis.dice_score(pred_array, true_array, k=1)
- pred — 预测分割的数组
- true — 地面实况分割的数组
- k — 值以执行匹配(默认值= 1)
- 返回值:Dice分数(浮点数)

B) Dice计算的可视化
im_analysis.imshowpair(pred_array, true_array, color1 = (124,252,0), color2 =(255,0,252), show_fig=True)
- pred_array — 预测分割的数组
- true _array — 地面实况分割的数组
- color1 — 显示第一个图像的唯一值的第一种颜色
- color2 — 显示第二个图像的唯一值的第二种颜色
- 返回值:数组和图形绘图

![PyLogik用于医学图像数据去标识化 数据科学 第7张-四海吧 Image sourced from [1] (this is using the ‘deid_us’ function)](https://miro.medium.com/v2/resize:fit:640/format:webp/1*g8nMf2AArjRMSZ5BDwno6w.png)
重新审视引言中设定的目标,我们已经成功开发出了一个强大的协议,涉及到医学图像的去识别、相关患者信息的隔离、ROI的识别和文件压缩。以前的工作主要是通过训练卷积神经网络(CNN)来检测和删除图像中仅包含PHI相关信息的技术,成功率在65%至89%之间[1-3]。然而,这些技术中有些是特定于操作系统的,有些是需要付费的[4]。PyLogik软件包通过确保删除直接的患者识别符号,同时将文本文件格式转换为.csv文件输出,正确识别ROI并压缩信息来解决这些问题。此外,该协议对操作系统不敏感,且对研究人员免费。通过简化深度学习问题并移除所有文本,PyLogik克服了区分“Bg”和“B9”、“B1”和“Bl”或“B0”和“Bo”等字符的风险。这使得各个站点可以将必要的上下文特定过滤器重新放置在其.csv文件上,并确保PHI删除的效果更高。PyLogik可以在任何操作系统上运行,并且可以免费下载,因此使其可以运行在机构防火墙后面的服务器上。通过提取和随后遮盖所有文本,由管道输出的.csv文件允许终端用户查询、包含或销毁其特定用途的信息。我们的策略还促进了数据信息的更好的多模态集成。例如,在超声心动图像中,每个视图中通常显示心率作为文本;在PyLogik中,保留了这些信息并提供给终端用户,从而使其可以在算法开发的信息融合(早期、联合和晚期)中使用[5]。图像以JPEG堆栈的形式保存和输出,以减少重新导入图像进行处理所需的专用库和编码平台的数量[6]。通过将图像截断为仅包含ROI,我们仅保留了显着信息,从而促进了次级非PACS服务器上的压缩。

除了提供一个高效的去识别和图像清理协议以促进超声图像的聚合用于算法开发,我们提出的方法相对于原始DICOM文件可节省高达72%的压缩。这不仅对这些大型文件的长期存储具有影响,而且还允许在机器学习(即批处理)应用中大幅增加短期存储。这些图像被保存为无损JPEG,其中“无损”表示保存的ROI具有与原始图像格式中存在的空间分辨率相同的空间分辨率。该软件包被设计为模块化的,对于那些仅寻求流水线分区的去识别程序的人,有一个单独的类。该流水线处理的部分可以轻松扩展到其他成像模式,如磁共振成像(MRI)、计算机断层扫描(CT)和其他放射学等。我们的程序提供了一种先进的去识别算法,适用于多种医学成像模式,同时提供图像压缩(高达72%较小),同时为机器学习实验做好数据准备。这种压缩对于长期云存储以及训练机器学习算法时的内存具有重要意义,这在其他此类出版物中没有讨论。为此,我们开发了一个开源的Python库PyLogik。它易于安装,对操作系统不敏感,可以在机构防火墙后面运行,同时如果有GPU计算资源可用,则可以使用GPU计算,而且可以进行批处理。我们将这个工具免费提供给研究人员作为当前昂贵的有偿服务或效果较差的免费选项的替代品。
虽然自动数据清理是可取的,但自动去识别工作很少是完美的。由于法律和伦理的影响,PHI泄露的风险是最为关注的。我们敦促研究界在其各自的系统上测试图像去识别协议。未来的工作包括更新软件包,并结合反馈使其更具普适性(包括更改输出格式)。
有关可用功能调用和其他文档的更多信息,请阅读这里的论文。

参考文献
[1] E. Monteiro, C. Costa, J. L. Oliveira, 针对DICOM格式超声医学图像的去识别管道,医学系统杂志,41(5) (2017) 1–16. [2] L. Fezai, T. Urruty, P. Bourdon, C. Fernandez-Maloigne, 医学影像的深度匿名化,多媒体工具和应用(2022)1–15。[3] L.-C. Huang, H.-C. Chu, C.-Y. Lien, C.-H. Hsiao, T. Kao, 患者便携式电子健康记录的隐私保护和信息安全保护,计算机在生物医学中的应用39(9) (2009) 743–750。[4] D. Rodriguez Gonzalez,T. Carpenter,J. I. van Hemert,J. Wardlaw,医学成像去识别的开源工具包,欧洲放射学20(8) (2010) 1896–1904 [5] A. Kline, H. Wang, Y. Li, S. Dennis, M. Hutch, Z. Xu, F. Wang, F. Cheng, Y. Luo, 精准健康中的多模式机器学习:一个范围的回顾,npj数字医学5(1) (2022) 1–14 [6] B. Liu, M. Zhu, Z. Zhang, C. Yin, Z. Liu, J. Gu, DICOM的医学图像转换,在2007年加拿大电气和计算机工程会议上,IEEE,2007,pp. 36–39 [7] A. Kline, V. Appadurai, Y. Luo, S. Sanjiv,“使用Pylogik进行医学图像去识别,清理和压缩”,https://arxiv.org/abs/2304.12322
此外,如果您喜欢看这样的文章,并想要无限访问我的文章以及所有小猪AI提供的文章,请考虑使用我的推荐链接注册。会员费为每月5美元;当您阅读我的文章时,我会获得一小部分佣金,这反过来有助于推动更多的内容和文章!
使用我的推荐链接加入小猪AI – Adrienne Kline
阅读Adrienne Kline的每个故事(以及小猪AI上数千名其他作家的故事)。您的会员费直接支持…
小猪AI.com