AI 入门实战:从零搭建医学图像去隐私系统
手把手教你用 Python 生成合成患者数据,训练 AI 自动去除医学图像中的隐私信息。
准备环境:安装 Python 和必备库
首先,你需要一台安装了 Python(一种简单易学的编程语言)的电脑。推荐从 python.org 下载最新版,安装时记得勾选“Add Python to PATH”。
打开终端(Windows 用户打开命令提示符或 PowerShell),输入以下命令安装我们需要的工具:
pip install faker—— Faker 是一个能自动生成假名字、地址、身份证号等信息的库,用来制造“假患者”。pip install pydicom—— pydicom 用于读取和修改医学图像文件(DICOM 格式)中的元数据。pip install pillow numpy—— 这两个库用来处理图像像素。
如果安装速度慢,可以加上国内镜像源,比如 pip install faker -i https://pypi.tuna.tsinghua.edu.cn/simple。
生成假患者信息:用 Faker 创建合成数据
新建一个 Python 文件(比如 generate_phi.py),输入以下代码:
from faker import Faker
fake = Faker('zh_CN') # 生成中文假数据
print(fake.name()) # 打印随机姓名
print(fake.ssn()) # 打印随机身份证号
print(fake.phone_number()) # 打印随机手机号
运行这个文件,你会看到控制台输出了几行随机信息。这就是我们需要的“合成患者隐私信息”(PHI,即受保护的健康信息)。在实际项目中,你可以循环生成几百个假患者,存成一个 CSV 文件备用。
将假信息注入医学图像
医学图像通常包含两部分隐私:一是图像上直接显示的文字(比如姓名、日期),二是藏在文件头(DICOM 元数据)里的字段。下面我们分别操作。
1. 在图像像素上添加文字
用 Pillow 库在图片上绘制文字,模拟医院超声设备在画面上叠加的患者信息:
from PIL import Image, ImageDraw, ImageFont
img = Image.open('ultrasound.png')
draw = ImageDraw.Draw(img)
font = ImageFont.truetype('simhei.ttf', 30) # 需要中文字体文件
draw.text((50, 50), fake.name(), fill='white', font=font)
img.save('ultrasound_with_phi.png')
2. 修改 DICOM 文件头
用 pydicom 读取一个真实的 DICOM 文件(比如从公开数据集 OpenPOCUS 获取的超声图像),然后替换其中的隐私字段:
import pydicom
ds = pydicom.dcmread('sample.dcm')
ds.PatientName = fake.name()
ds.PatientID = fake.ssn()
ds.save_as('sample_with_phi.dcm')
这样,我们就得到了一个“假隐私”的医学图像,可以用来测试去隐私 AI 模型。
验证效果:确认数据可用
最后一步,检查生成的图像是否正常:
- 打开修改后的图片,确认文字位置和内容正确。
- 用 pydicom 读取新 DICOM 文件,打印
ds.PatientName,看看是否变成了你设置的假名。
至此,你已经成功搭建了一个合成数据生成管道!下一步可以尝试用这些数据训练一个简单的目标检测模型(比如 YOLO),让它学会自动找到并抹掉图像中的文字。
内容来源
freeCodeCamp
发布时间
2026-06-21 01:30