REDMOD(Radiomics-based Early Detection MODel)框架是胰腺癌早期筛查领域的一项突破性进展。它通过捕捉那些"肉眼不可见"的微细病理信号,显著提升了临床诊断的时间窗。
以下是对该框架的深度解读:
1. 什么是"亚视觉(Subvisual)"影像特征?
所谓的"亚视觉"特征,是指那些存在于标准 CT 图像中,但由于超出人类视觉对比度、分辨率或空间处理极限而无法被放射科医生识别的细微纹理变化。
在胰腺癌(尤其是胰腺导管腺癌,PDAC)的早期阶段,肿瘤组织尚未形成明显的肿块,此时组织内部的细胞排列、细胞外基质重塑以及局部血供波动会引起像素级的异质性。REDMOD 通过对图像进行多尺度滤波处理(如 Wavelet 小波变换和 LoG 高斯拉普拉斯滤波),放大这些隐藏的纹理紊乱和强度梯度变化,从而识别出预警信号。
2. 3D nnU-Net 自动分割技术细节
胰腺的自动分割是 REDMOD 的基石,其使用的是目前医学影像分割界的"金标准"------3D nnU-Net(No-New-U-Net)。其核心技术细节包括:
-
全自动自适应配置:nnU-Net 并不依赖手动调参,而是根据输入数据的特性(如体素间距、图像尺寸)自动配置网络架构、预处理逻辑和训练方案。
-
3D 全体素分析:相较于 2D 卷积,3D 卷积能捕捉胰腺在空间上的连续性,这对于形状极度不规则且与周围器官边界模糊的胰腺至关重要。
-
Dice 相似系数(DSC) :在该框架中,nnU-Net 的分割表现非常稳定,Dice 系数通常能达到 0.800.800.80 以上,确保了后续提取的组学特征来自于准确的胰腺实质,而非周围的脂肪或血管干扰。
3. mRMR 算法:从 968 维到 40 个核心特征
REDMOD 首先从分割出的胰腺体积中提取了 968 维原始组学特征(涵盖一阶统计量、形状特征、GLCM、GLRLM 等),但为了防止模型过拟合,使用了 mRMR(Minimum Redundancy Maximum Relevance) 算法进行降维。
mRMR 的核心逻辑:
-
最大相关性(Max-Relevance):筛选与预测目标(是否有癌变)互信息量最大的特征。
-
最小冗余(Min-Redundancy):在已选特征之间进行互信息计算,剔除那些彼此高度相关的重复信息。
J(fi)=I(fi;y)−1∣S∣∑fs∈SI(fi;fs)J(f_i) = I(f_i; y) - \frac{1}{|S|} \sum_{f_s \in S} I(f_i; f_s)J(fi)=I(fi;y)−∣S∣1fs∈S∑I(fi;fs)
通过该算法,模型保留了 40 个最具代表性的生物标志物,其中 90% 是经过滤波处理的纹理特征。研究表明,这些特征对于早期细胞外基质的变化极度敏感。
4. AI vs. 资深放射科医生:24 个月提前预警灵敏度
REDMOD 最惊艳的表现在于其"预测未来"的能力。在多中心验证集(中位领先诊断时间为 475 天)中,两者的灵敏度表现如下:
| 指标 | REDMOD (AI) | 资深放射科医生 |
|---|---|---|
| 总体灵敏度 | ~73% | ~39% |
| 提前 12-24 个月灵敏度 | 75.0% | ~28% |
| 提前 >24 个月灵敏度 | 68.4% | ~23% |
解读: 在癌症被确诊的 24 个月前,放射科医生的肉眼识别率仅为 23%,几乎处于"漏诊"状态;而 REDMOD 的灵敏度依然保持在 68% 左右,领先优势接近 3 倍。这意味着 AI 能够比人类医生提前约 2 年发现癌症的蛛丝马迹。
5. 特征提取标准化处理的 Python 代码示例
以下是基于 PyRadiomics 库实现的符合 REDMOD 标准的预处理与特征提取逻辑:
python
import SimpleITK as sitk
from radiomics import featureextractor
# 1. 设置标准化参数
settings = {
'binWidth': 25, # 强度离散化:25-HU 间隔
'resampledPixelSpacing': [0.75, 0.75, 3.0], # 空间重采样
'interpolator': sitk.sitkBSpline, # 图像插值算法
'normalize': True, # 归一化处理
'softWindowing': { # 软组织窗口:中心 50, 宽度 500
'windowCenter': 50,
'windowWidth': 500
}
}
# 2. 初始化提取器,添加多尺度滤波器
extractor = featureextractor.RadiomicsFeatureExtractor(**settings)
extractor.enableImageTypeByName('Wavelet') # 启用小波变换(REDMOD 的核心)
extractor.enableImageTypeByName('LoG', customArgs={'sigma': [1.0, 3.0, 5.0]}) # 启用 LoG 滤波
# 3. 执行提取 (假设 image 和 mask 已加载为 SimpleITK 对象)
# result = extractor.execute(image, mask)
# 4. 打印提取到的特征数量示例
# print(f"提取完成,共计 {len(result)} 个特征")
这段代码模拟了 REDMOD 框架中对图像进行的"软组织窗口化"和"小波分解"过程,这是捕获亚视觉特征的关键步骤。