2. 医学影像数据模态与训练集构成

在医学影像训练集质量评估中,第一步不是看标注是否精细,而是先确认“数据到底是什么”。不同成像模态的物理机制决定了图像的灰度含义、空间分辨率、噪声结构和临床语义,而这些差异会直接影响模型能学到什么、评估指标是否合理,以及训练集能否被正确复用。一个看似“图像很多”的数据集,如果模态混杂、格式不统一、元数据缺失,往往在训练前就已经埋下了偏差。

五种常见模态的成像特点

CT(计算机断层扫描)基于X射线衰减,像素值以HU(Hounsfield Unit)为单位,具有近似定量的物理意义:水约为0 HU,空气约-1000 HU,骨皮质可达+1000 HU以上。CT图像空间分辨率高、采集快,常用于急诊、肿瘤筛查和骨结构评估。其训练集通常需要关注窗宽窗位(如肺窗、纵隔窗、骨窗)是否统一,因为同一套DICOM在不同窗设置下呈现的对比度差异极大。

MRI(磁共振成像)依赖氢质子在外加磁场中的弛豫特性,同一解剖部位可产生T1、T2、FLAIR、DWI等多种对比度。MRI没有类似HU的绝对定量单位,信号强度受扫描参数、线圈和场强影响,因此跨中心数据常存在明显的强度漂移。训练集中若混合不同场强(1.5T与3.0T)或不同序列,必须记录序列类型,否则模型可能把“序列差异”误学成“病变差异”。

X光(X射线摄影)是二维投影成像,组织前后重叠,缺乏深度信息。胸片、骨片是常见对象。其灰度动态范围大,常需窗宽窗位调整或直方图均衡。X光训练集的关键在于投照体位(正位/侧位)、设备类型和是否包含网格伪影。

超声利用高频声波反射成像,实时、无辐射,但图像受操作者手法影响大,存在斑点噪声、声影和扇形成像几何。超声图像通常不满足DICOM的规则网格,且不同探头(凸阵、线阵)视野差异显著。训练集需记录探头型号、检查部位和增益设置。

病理图像来自玻片扫描(WSI),分辨率可达0.25 μm/pixel,单张全切片可达数万×数万像素。病理图像颜色受染色批次影响,常见H&E染色。训练集通常以切片为单位组织,需记录染色方法、扫描仪型号和放大倍数。

五种模态的成像特征与训练集关注点 CT X射线衰减 · HU定量 • 水 0 HU / 空气 -1000 HU • 骨皮质 > +1000 HU • 窗宽窗位影响对比度 • 空间分辨率高、采集快 • 关注:窗设置是否统一 • 关注:层厚与重建核 MRI 氢质子弛豫 · 多序列 • T1 / T2 / FLAIR / DWI • 无绝对定量单位 • 场强影响信号强度 • 跨中心强度漂移明显 • 关注:序列类型记录 • 关注:场强与线圈 X光 二维投影 · 组织重叠 • 胸片 / 骨片常见 • 灰度动态范围大 • 缺乏深度信息 • 网格伪影需注意 • 关注:投照体位 • 关注:设备类型 超声 声波反射 · 实时成像 • 斑点噪声、声影 • 扇形成像几何 • 操作者手法影响大 • 探头决定视野 • 关注:探头型号 • 关注:增益与部位 病理 玻片扫描 · WSI • 分辨率 0.25 μm/px • 单张可达数万像素 • H&E 染色常见 • 颜色受批次影响 • 关注:染色方法 • 关注:放大倍数 典型医学影像训练集的四类构成要素 图像数据 • 原始像素/体素矩阵 • 窗宽窗位或强度范围 • 层厚、间距、方向 • 序列/体位/探头信息 • 是否脱敏、是否完整 标注信息 • 分类标签 / 分割掩膜 • 检测框 / 关键点 • 标注者与审核者 • 标注工具与版本 • 一致性 / 置信度 元数据 • DICOM 标签 / NIfTI 头 • 设备厂商与型号 • 扫描参数与协议 • 采集时间与机构 • 像素间距与坐标系 患者信息 • 匿名化 ID • 年龄 / 性别(可选) • 临床诊断与分期 • 检查目的与随访 • 伦理与知情同意状态

DICOM与NIfTI:两种格式的分工

DICOM是临床采集与归档的事实标准,一个检查包含多个SOP Instance,每个实例携带丰富的标签:患者信息、设备参数、图像几何、窗设置等。DICOM的像素数据通常以原始存储值保存,需结合Rescale Slope/Intercept转换为HU或信号强度。它的优势是信息完整、可追溯,缺点是文件数量多、读取慢、标签私有化严重。

NIfTI则更贴近科研与算法训练,通常将三维或四维数据存为单个.nii或.nii.gz文件,头信息精简,包含体素间距、方向矩阵和数据类型。NIfTI不保留DICOM的采集参数和患者信息,因此从DICOM转NIfTI时,必须同步导出关键元数据表,否则训练集将失去可追溯性。实际工程中常见做法是:DICOM作为原始归档,NIfTI作为训练输入,两者通过唯一标识(如StudyInstanceUID + SeriesNumber)建立映射。

训练集构成的四个层次

一个可用的医学影像训练集,至少应包含图像、标注、元数据和患者信息四个层次。图像层决定模型输入;标注层决定监督信号;元数据层决定可复现性与偏差分析;患者信息层决定伦理合规与分层评估。四者缺一不可,且必须通过稳定ID关联。

以肺结节CT训练集为例:图像层为各患者胸部CT序列,层厚1.0 mm,重建核为肺算法;标注层为放射科医师勾画的结节分割掩膜及良恶性标签,并记录标注者年资与审核状态;元数据层包含设备型号、管电压、管电流、重建核、层厚、像素间距;患者信息层包含匿名ID、年龄、性别、吸烟史和病理随访结果。若缺少元数据中的重建核,模型可能把“锐利核”误学为“结节边缘特征”;若缺少患者信息中的随访结果,就无法进行分层评估。

在构建训练集时,建议先定义一份“最小元数据字段表”,明确哪些字段必须随图像一起交付。常见必填项包括:模态、序列/体位、层厚或像素间距、设备厂商与型号、重建核或扫描参数、匿名患者ID、标注版本。字段表一旦确定,后续所有数据入库都按同一标准校验。

格式转换与元数据保留的实操要点

从DICOM到NIfTI的转换,常用工具包括dcm2niix、SimpleITK和pydicom。以dcm2niix为例,典型命令如下:

dcm2niix -z y -f "%p_%s" -o /data/nifti /data/dicom/patient001

其中-z y表示输出压缩的.nii.gz,-f指定文件名格式,%p为协议名,%s为序列号。转换后应检查生成的JSON侧文件是否包含RepetitionTime、EchoTime、Manufacturer、MagneticFieldStrength等字段。对于CT,还需确认Rescale Slope/Intercept是否被正确应用,否则HU值会偏移。

若使用Python批量处理,可借助pydicom读取标签并写入CSV:

import pydicom, pandas as pd, glob
rows = []
for f in glob.glob('/data/dicom/**/*.dcm', recursive=True):
    ds = pydicom.dcmread(f, stop_before_pixels=True)
    rows.append({
        'PatientID': ds.PatientID,
        'Modality': ds.Modality,
        'StudyUID': ds.StudyInstanceUID,
        'SeriesNumber': ds.SeriesNumber,
        'SliceThickness': getattr(ds, 'SliceThickness', None),
        'PixelSpacing': getattr(ds, 'PixelSpacing', None),
        'Manufacturer': getattr(ds, 'Manufacturer', None),
        'RescaleSlope': getattr(ds, 'RescaleSlope', 1),
        'RescaleIntercept': getattr(ds, 'RescaleIntercept', 0),
    })
pd.DataFrame(rows).to_csv('/data/meta.csv', index=False)

这段代码只读取标签、不加载像素,适合大规模元数据盘点。生成的meta.csv可用于检查模态分布、层厚一致性、设备集中度,以及是否存在缺失关键字段的检查。

常见问题与判断依据

在训练集验收阶段,以下几类问题最值得优先排查:模态标签与像素特征不符(如把MRI标成CT);同一患者多次检查被误分为训练与测试(数据泄漏);标注掩膜与图像几何不匹配(如方向矩阵被忽略);元数据中关键字段缺失率超过阈值。判断依据可以量化为:模态字段缺失率应低于1%,层厚或像素间距缺失率应低于5%,同一患者跨集合重叠率应为0。若这些指标不达标,应先修复数据,再进入模型训练。

理解模态差异、格式分工与训练集四层构成,是后续质量评估的基准。只有先确认“数据是什么、来自哪里、缺了什么”,才能进一步讨论标注质量、分布偏差和模型泛化。