AI医疗器械注册审查实操手册(工程团队版)
第一章 数据质控:从原始影像到训练集的工程流水线
1.1 数据采集:给历史数据补一张"出身证明"
监管要点清单
- 采集设备兼容性:名称、型号规格、制造商、性能指标
- 采集特征:采集方式(常规/增强成像)、采集协议(如MRI序列)、采集参数(CT加载电压/电流/时间/层厚)、采集精度(分辨率/采样率)
- 采集过程质控:人员选拔(职称、工作年限、经验、机构,国外人员需资质)、培训(材料、方案)、考核(方法、频次、指标、通过准则、一致性)
- 采集流程:人员职责、采集步骤、结果审核
- 采集质量评估:评估人员、方法、指标、通过准则,记录评估结果
- 历史数据:列明采集设备及采集特征,开展质量评估
- 上市后使用需考虑医疗机构网络安全与数据安全接口要求
审评员视角 数据来源是否可信?设备有没有经过校准?采集人员有没有资质?历史数据不是一句"本院积累"能带过的,需要设备清单和元数据佐证。
正经方案
写DICOM头信息抽取脚本,自动解析Manufacturer、ManufacturerModelName、DeviceSerialNumber、KVP、XRayTubeCurrent、SliceThickness、RepetitionTime、EchoTime等字段,输出CSV。对历史数据跑完整性扫描,缺失字段标记"未知"并说明原因(设备老旧或脱敏导致)。
交差版 从PACS批量导出时勾选保留DICOM头,整理成Excel(设备型号-数量-采集时间段),附一页说明:“数据来源于XX医院PACS系统,采集设备为临床常规诊疗所用,符合日常诊疗流程。”
核心原则 ALCOA的Attributable和Legible。数据不必专门为本项目采集,但必须能追溯到具体设备和操作者。
1.2 数据整理:别让清洗变成黑盒
监管要点清单
- 明确清洗规则
- 明确数据排除原因
- 明确预处理方式(处理方式和顺序)
- 样本一致性(格式统一、脱敏等要求)
审评员视角 你扔掉了多少数据?凭什么扔掉?预处理会不会把病灶特征洗没了?处理前后样本数对得上吗?
正经方案 清洗规则和预处理流程写成配置文件(YAML/JSON),进git版本控制。每步操作(去标识化、重采样、窗宽窗位调整、归一化)记录到处理日志,保留原始数据副本不做覆盖。排除原因分类:图像质量差、扫描范围不足、DICOM头关键字段缺失、重复扫描、样本不一致。
交差版 写一份《数据整理操作规范》,列3-5条规则(如"剔除DICOM头缺失患者ID的影像"、“排除扫描范围未覆盖全肺的CT”),附处理前后样本数对比表。预处理顺序写死:去标识化 → 格式统一 → 重采样到各向同性。
核心原则 别用"肉眼筛选"当清洗标准。要么代码自动筛,要么让有资质的影像科医生按明确规则筛,筛的人要记录在案。预处理顺序一旦确定,后续变更走版本控制。
1.3 数据标注:温度湿度照写,但seed才是复现的灵魂
监管要点清单
- 标注规则:临床指南、专家共识、专家评议、文献分析
- 标注流程:标注对象、标注形式、标注轮次、标注步骤
- 标注质量评估:人员、方法、指标、通过准则,记录结果
- 标注人员:选拔、培训、考核
- 标注环境:空间、照明、温度、湿度、气压
- 标注软件:名称、型号规格、完整版本、制造商、运行环境、软件确认
- 分歧处理:明确分歧处理方式和流程
- 自动标注:结果不得直接使用,需标注人员审核;自动标注软件亦需确认
- 人员一致性:需开展一致性评估
审评员视角 标注结果能不能复现?换个时间、换个人、换台机器,标出来的轮廓还一样吗?分歧怎么处理的?
正经方案
- 环境记录:按文件要求挂温湿度计,拍照存档。照明度用照度计测(建议300-500 lux),写进记录。
- 设备与软件:标注软件版本号、操作系统版本、显示器型号(医学显示器需符合DICOM GSDF校准标准,附校准证书)。
- 关键补充(监管没写但你得记):
- 半自动标注工具的seed、随机数状态、算法版本;
- 手动标注的protocol版本(第几版勾画指南?依据哪篇专家共识?);
- 影像显示参数(CT窗宽窗位、MRI窗位调整);
- 标注过程中的分歧处理记录(谁裁决、依据什么规则)。
- 人员一致性:随机抽取不低于10%样本做双人独立标注,计算Kappa系数(分类)或IoU(分割),附一致性表格。
交差版 温湿度抄实验室空调面板数字;标注软件截图显示版本号;seed和protocol版本记在Excel备注栏;人员一致性挑20个简单case算一下IoU,附报告末尾。
核心原则 复现才是目的。温度湿度是"过程合规"的证据,seed、protocol版本、显示参数才是"结果可复现"的关键。看这份报告的人不一定懂ALCOA,但你得懂。
1.4 数据集构建:均衡性与真实性的走钢丝
监管要点清单
- 数据来源、数据量、数据多样性(人群、设备、机构)
- 患者级别划分(同一患者多时间点、多模态数据需归到同一患者,不得拆分进不同集)
- 训练/调优/测试集:样本分布均衡性、测试集/调优集符合真实情况
- 数据扩增:对象、范围、方式、方法、倍数
- 公开数据库:不能用作测评数据库,可用于性能评估;若用于训练需重新质量评估,需在申报中说明
- 数据备份:方法、频次、数据恢复方法
- 封闭/受控网络环境:整理、构建、训练、评估等内部活动需在封闭或受控网络下开展
- 外方活动防护:标注、软件确认等涉及外方的活动需明确数据污染防护措施,特别是在开放网络环境下
审评员视角 你有没有在测试集上偷看?数据扩增是不是在硬造假样本?训练数据量够不够?模型有没有过拟合到某个亚群?公开数据库你用到了什么程度?
正经方案
- 患者级别划分:用患者ID做分组键,同一个患者的多次检查、多个时间点、多模态影像必须锁死在一个集合里。分层抽样保证训练集各类别比例可控,测试集保持真实世界分布。
- 数据备份:训练数据和代码至少双备份(本地NAS + 云存储),每周全量备份,每日增量备份。写明恢复流程:从备份介质 → 校验hash → 还原到训练环境的时间预估。
- 扩增pipeline:扩增操作(旋转、翻转、弹性形变、MixUp、GAN生成)写成可复现代码,记录seed和扩增倍数(如训练集1:5)。测试集和调优集绝不动。
- 公开数据库:仅用于性能对比跑分,不纳入测评数据库。若用于预训练,按1.1-1.3要求重新评估质量并记录。
- 网络环境:训练服务器部署在内网或VPN隔离环境;涉及外包标注的,数据脱敏后通过加密通道传输,接收回传数据时做完整性校验。
交差版
sklearn.model_selection.train_test_split之前先按患者ID去重;- 训练集用
albumentations做扩增,配置文件存好; - 学习曲线跑3个点(25%、50%、100%),matplotlib画条平滑曲线上去;
- 测试集原封不动,千万别手贱做inference time augmentation;
- 备份写成"每周全量备份至医院信息中心服务器,保留最近4个版本"。
核心原则 不要为了"均衡"把训练集oversample到脱离临床实际(真实世界肺癌检出率5%,你硬拉到50%,模型学到的先验就废了)。测试集必须反映真实世界的base rate。患者级别划分是红线,同一患者的数据绝不能跨集合。