基于时间距离视觉Transformer的肺癌纵向CT诊断方法研究
1. 项目概述与核心挑战
在肺癌的早期筛查与诊断中,胸部CT影像是无可替代的利器。然而,面对CT影像中发现的肺结节,一个核心的临床难题始终悬而未决:如何准确判断其良恶性?传统的诊断高度依赖放射科医生的经验,通过观察单次CT影像中结节的形态、密度、边缘等特征进行判断。但一个残酷的现实是,许多良性和恶性结节在单次影像上可能“长得”非常相似。这时,临床实践中一个黄金标准被提了出来:随访观察。通过对比同一患者在不同时间点(例如间隔3个月、6个月或1年)拍摄的CT影像,观察结节是否生长、生长速度如何,这为判断其生物学行为提供了动态的、更具说服力的证据。恶性结节通常生长较快,而良性结节则相对稳定。
这正是纵向医学影像分析的核心价值所在。它不再将每次CT扫描视为孤立的“快照”,而是将其串联成一部描述病灶演变的“电影”。理论上,这能极大提升诊断的准确性。但理想很丰满,现实却很骨感。在实际的临床场景,尤其是社区筛查中,患者的随访依从性并非100%。有人可能半年复查一次,有人可能拖到一年半,还有人可能因为各种原因错过某次复查。这就导致我们获得的纵向影像数据在时间轴上是稀疏且不规则采样的。传统的深度学习模型,无论是卷积神经网络(CNN)还是循环神经网络(RNN),在处理这种不规则时间间隔的序列数据时,往往显得力不从心。CNN擅长捕捉空间特征但难以建模长程时间依赖;RNN(如LSTM)虽为序列设计,但其顺序处理机制和固定时间步的假设,在面对不规则间隔时,需要额外设计复杂的时间门控机制(如先前研究中的DLSTM)。
近年来,Transformer架构及其核心的自注意力机制在自然语言处理和计算机视觉领域取得了革命性成功。它的魅力在于能够并行处理整个序列,并通过注意力权重动态建模序列中任意两个元素之间的关系,不受其位置距离的限制。这不禁让我们思考:能否将这种强大的关系建模能力应用于纵向医学影像?我们能否让模型不仅“看到”每次CT扫描中的结节特征,还能智能地“权衡”不同时间点特征之间的重要性,而这个重要性恰恰与它们之间的实际时间距离相关?这就是我们开展“基于时间距离视觉Transformer的肺癌纵向CT诊断方法研究”的初衷。我们不是简单地将Transformer套用到医学影像上,而是要对其进行关键改造,使其具备感知时间距离的能力,从而真正理解病灶随时间的动态变化规律。
本文旨在深入解析我们提出的两种创新模型——时间编码ViT(TeViT)和时间感知ViT(TaViT),分享其设计思路、实现细节、在合成数据与真实临床数据上的验证结果,以及一路走来所积累的实战经验与避坑指南。无论你是医学影像分析的研究者,还是希望将Transformer应用于时序数据的工程师,相信都能从中获得启发。
2. 核心思路:让Transformer“读懂”时间
在深入代码和实验之前,我们必须先厘清核心问题:标准视觉Transformer(ViT)为何无法直接处理纵向数据?其瓶颈在哪里?我们又该如何突破?
2.1 标准ViT的“时间盲”问题
标准的ViT处理图像的过程可以概括为:将图像分割成固定大小的图像块(Patch),将这些图像块线性投影为特征标记(Token),然后加上位置编码(Positional Encoding),最后送入由多层Transformer编码器组成的骨干网络中进行处理。这里的位置编码是固定的,用于让模型感知图像块之间的空间相对位置。例如,位于左上角的块和右下角的块会得到不同的位置编码向量。
当我们把多次CT扫描的图像块全部拼接成一个长序列输入ViT时,模型确实能够看到所有时间点的信息。但是,标准的位置编码只能告诉模型“这是序列中的第几个标记”,而无法告知“这个标记来自哪个时间点”以及“这个时间点与其它时间点实际相隔了多久”。换句话说,模型失去了对物理时间距离的感知能力。它将一次一年前的扫描和一次一个月前的扫描,仅仅视为序列中相隔较远的两个“位置”,而无法理解其间漫长的时间跨度对于病灶演变的重大意义。这就是其“时间盲”的本质。
2.2 两种赋予时间感知能力的策略
我们的目标是为ViT注入时间感知能力。我们提出了两种在思想上互补的策略,它们修改的是Transformer流程中的不同环节。
策略一:时间编码ViT(TeViT)—— 在输入层面融合时间信息
这种策略的思路非常直观,灵感来源于Transformer在时间序列预测中的成功应用。既然标准ViT通过添加位置编码来感知空间顺序,那么我们何不设计一种时间编码来感知时间顺序呢?
具体而言,对于一系列在时间点[t1, t2, ..., tT]采集的CT图像,我们首先会计算一个相对时间距离向量。通常,我们会以最后一次扫描(即最近一次,往往也是最接近诊断时刻的扫描)的时间t_T作为参考点,计算其它所有扫描与该参考点的时间距离绝对值r_t = |t_T - t_t|。
接下来,我们采用经典的Transformer正弦余弦编码函数,但将编码对象从“位置索引”替换为“连续的时间距离”。对于时间距离r_t,其第i维的编码计算如下:
TE(r_t)[2i] = sin(r_t / 10000^(2i/D)) TE(r_t)[2i+1] = cos(r_t / 10000^(2i/D))其中,D是特征标记的维度。这样,我们就为每个唯一的时间距离r_t生成了一个D维的、固定的向量表示,即时间编码。这个编码有一个美妙的性质:对于任意时间距离k,存在一个线性变换,可以将TE(t)的表示映射到TE(t+k)。这意味着模型能够学习到时间距离中的线性关系。
在模型前向传播时,我们将每个图像块(或结节区域)的特征标记,加上其对应扫描时间点的时间编码,然后再送入Transformer编码器。这样,模型从输入伊始,就“知道”了每个特征所携带的时间戳信息。
实操心得:时间参考点的选择在TeViT中,我们选择以最近一次扫描为参考点计算相对距离,这背后有临床逻辑支撑:诊断决策通常基于最新的、最全面的信息。然而,在某些预后预测任务中,或许以首次扫描或发病时间为参考点更合适。这是一个可以根据任务目标灵活调整的超参数。我们的实验表明,以最近扫描为参考点在本任务中效果最佳。
策略二:时间感知ViT(TaViT)—— 在注意力机制中调制时间权重
TeViT将时间信息作为静态的、加性的偏置引入。而TaViT的思路更为激进和动态:它试图直接干预自注意力机制的核心——注意力权重的计算过程。
自注意力权重的计算源于查询(Query)和键(Key)的相似度。在TaViT中,我们认为,两个标记之间的注意力权重,不仅应取决于它们内容的相似性,还应取决于它们所处时间点的距离。直观上,距离当前(诊断时刻)越近的扫描,其信息对于当前判断应该越重要;而很久以前的扫描,其信息的重要性可能会衰减。
为此,我们引入了一个时间强调模型(Temporal Emphasis Model, TEM)。它是一个可学习的、参数化的函数,输入是两个标记之间的时间距离R_ij,输出一个介于0到1之间的缩放因子\hat{R}_ij。我们选用了一个“翻转的Sigmoid”函数作为TEM的具体形式:
f(R_ij) = 1 / (1 + exp(a * R_ij - c))其中a和c是非负的可学习参数。a控制衰减的斜率,c控制衰减开始发生的偏移量。这个函数的设计保证了几个关键特性:
- 当时间距离为0(即同一时间点或与参考时间点重合)时,缩放因子最大(>0.5),强调作用最强。
- 函数值随
R_ij增大而单调递减,模拟了信息随时间衰减的直觉。 - 始终为非负值,确保缩放不会改变注意力权重的符号方向。
在计算每个注意力头的输出时,我们先计算原始的查询-键点积QK^T。为了确保缩放是单向的(只衰减不增强),我们对其应用ReLU激活函数,将负值置零,保留正值。然后,将这个结果与由TEM计算出的时间缩放矩阵\hat{R}进行逐元素相乘,再进行Softmax归一化和Value加权。
TimeAwareAttention = softmax( ReLU(QK^T) * \hat{R} / sqrt(d) ) * V这意味着,即使两个标记的内容非常相关,如果它们时间上相隔甚远,其最终的注意力权重也会被TEM适度下调。更重要的是,每个注意力头都会学习自己独立的一套TEM参数。这允许模型变得灵活:有些注意力头可能学会强烈惩罚长时间距离(专注于近期变化),而另一些头可能对时间不敏感(专注于稳定的解剖结构)。这种设计将时间感知能力作为一种诱导偏置柔和地注入模型,而非硬性规则。
3. 从理论到实践:模型实现与训练策略
有了清晰的设计思路,下一步就是将其转化为可运行的代码,并在实际数据上进行训练和调优。这一过程充满了工程细节上的挑战。
3.1 数据预处理与特征提取管道
我们的实验涉及两类数据:合成2D图像(Tumor-CIFAR)和真实的3D胸部CT扫描(NLST)。对于两者,我们需要构建统一的、可供Transformer处理的输入序列。
对于合成2D图像(Tumor-CIFAR): 处理流程相对标准。我们将每张32x32的RGB图像分割成固定大小的图像块(例如4x4,共64个块)。每个图像块被展平并线性投影到一个D维的潜在空间(我们设定D=64),这就构成了一个“特征标记”。对于一次包含T个时间点的纵向序列,我们将所有时间点的图像块标记按时间顺序拼接,形成一个长度为N = T * 图像块数量的标记序列。
对于真实3D胸部CT(NLST): 直接处理整个CT体积计算量巨大,且大部分区域与目标(肺结节)无关。因此,我们采用了一个两阶段的特征提取管道,这也是许多医学影像分析任务的常见做法:
- 结节检测:我们使用一个预训练的结节检测模型(基于Faster R-CNN或类似架构)在预处理后的CT体积中进行推理。预处理包括重采样至各向同性分辨率(1x1x1 mm³)、肺部分割、CT值窗宽窗位调整([-1200, 600] HU)等。
- 区域特征提取:检测模型会输出多个可疑结节区域(Region of Interest, ROI)及其置信度。我们选取置信度最高的前5个ROI。对于每个ROI,我们不是裁剪图像,而是从检测模型的中间层(通常是区域特征层)提取其对应的特征向量。这样,每个ROI被表示为一个高维特征向量。
- 标记生成:将这5个特征向量分别通过一个可学习的线性投影层,映射到相同的D维(64维)空间。这样,每次CT扫描就被表示为了5个特征标记。一个包含T次扫描的纵向序列,最终形成
N = T * 5个标记的序列。
避坑指南:特征一致性与维度对齐使用预训练检测模型提取特征时,必须确保所有扫描的特征提取过程完全一致,包括模型的版本、输入图像的预处理流程、以及特征提取的层。任何细微的不一致都会引入噪声,干扰模型对时间动态的学习。此外,线性投影层的存在至关重要,它确保了来自不同扫描、不同ROI的特征被映射到同一个可比较的语义空间,为后续的注意力计算奠定了基础。
3.2 模型架构与关键实现细节
我们以标准的ViT作为骨干网络,并对其进行改造以融入TeViT或TaViT模块。
骨干网络配置统一如下:
- 标记嵌入维度(D):64
- Transformer编码器深度:8层
- 注意力头数量:8个
- 前馈网络隐藏层维度:256
- 激活函数:GELU
TeViT实现: 在标记嵌入层之后,我们构建一个时间编码器。它接收一个形状为[T]的时间距离向量(每个元素是|t_T - t_t|),为每个唯一的时间距离t计算一个D维的时间编码TE(t)。然后,将这个时间编码广播并加到对应时间点的所有特征标记上。此后的流程与标准ViT完全一致。
TaViT实现:
- 构建时间距离矩阵:输入时间戳列表
t,计算一个N x N的矩阵R,其中R_ij = |t_T - t_i|。这里t_i是生成第i个标记的扫描时间。注意,同一时间点内的不同ROI标记共享相同的时间距离。 - 集成TEM:在每个Transformer编码器层的每个注意力头中,我们实例化一个独立的TEM(包含可学习参数
a和c)。在前向传播时,将矩阵R输入TEM,得到缩放矩阵\hat{R}。 - 修改注意力计算:按照2.2节所述的公式,用
ReLU(QK^T) * \hat{R}替代原始的QK^T,再进行缩放和Softmax。
# TaViT 中注意力计算的伪代码示例 import torch import torch.nn as nn import torch.nn.functional as F class TemporalAwareAttention(nn.Module): def __init__(self, dim, num_heads): super().__init__() self.num_heads = num_heads self.scale = (dim // num_heads) ** -0.5 # 每个头独立的TEM参数 self.tem_a = nn.Parameter(torch.ones(num_heads)) # 初始化为1,非负 self.tem_c = nn.Parameter(torch.zeros(num_heads)) # 初始化为0,非负 # 标准的Q, K, V投影层 self.qkv = nn.Linear(dim, dim * 3) self.proj = nn.Linear(dim, dim) def forward(self, x, time_dist_matrix): B, N, C = x.shape qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4) q, k, v = qkv[0], qkv[1], qkv[2] attn = (q @ k.transpose(-2, -1)) * self.scale # 原始点积相似度 # 时间感知调制 # time_dist_matrix: [B, N, N] 或 [1, N, N] # 利用TEM计算缩放因子,并扩展到每个注意力头 # 确保参数非负 a = F.softplus(self.tem_a).view(1, self.num_heads, 1, 1) # [1, num_heads, 1, 1] c = F.softplus(self.tem_c).view(1, self.num_heads, 1, 1) # 计算缩放矩阵,time_dist_matrix需要扩展维度以匹配attn time_dist_expanded = time_dist_matrix.unsqueeze(1) # [B, 1, N, N] tem_scaling = 1 / (1 + torch.exp(a * time_dist_expanded - c)) # [B, num_heads, N, N] attn = F.relu(attn) * tem_scaling # 应用ReLU和TEM缩放 attn = attn.softmax(dim=-1) x = (attn @ v).transpose(1, 2).reshape(B, N, C) x = self.proj(x) return x3.3 至关重要的训练策略:掩码自编码预训练
直接从头开始训练一个用于纵向分类的Transformer模型是困难且低效的。我们发现,采用掩码自编码器(Masked Autoencoder, MAE)进行预训练,对模型性能有极大的提升,这在我们的合成数据和真实数据上都得到了验证。
我们的预训练任务设计如下:
- 随机掩码:对于一个纵向序列的输入标记,我们随机掩码掉一定比例(在Tumor-CIFAR上为75%,在NLST上为50%)。关键在于,掩码是跨受试者和跨时间点完全随机的。这意味着模型可能需要在给定一次早期扫描的部分信息和一次近期扫描的部分信息的情况下,去重建被掩码的标记。
- 非对称编码器-解码器:我们采用MAE的标准架构。编码器仅处理未被掩码的可见标记,这大大降低了计算负担。解码器则接收全部标记(包括被掩码的占位符)以及位置/时间信息,任务是基于上下文重建被掩码的原始像素值(对于2D)或特征值(对于3D特征)。
- 重建目标:使用均方误差(MSE)作为重建损失。
经验之谈:为何预训练如此有效?我们认为,这种预训练策略迫使模型学习两件事:第一,学习强大的空间表征,即从可见的图像块中理解肺结节或背景的视觉特征。第二,也是更重要的,学习时空依赖关系。为了准确重建某个时间点上被掩码的结节区域,模型必须学会从其他时间点的可见信息中进行推理。例如,如果模型看到了一个结节在t1时刻很小,在t3时刻很大,那么它应该能推断出在t2时刻这个结节可能处于中间大小。这种对动态变化的理解,正是我们下游分类任务所需要的。实验也证实,预训练显著提升了模型在合成数据v1(规则采样)上的性能,这主要归功于其增强了空间学习能力。
其他训练技巧:
- 优化器与学习率调度:使用AdamW优化器,其解耦的权重衰减方式更稳定。配合余弦退火学习率调度器,并带有线性预热(Warmup),这能有效避免训练初期的不稳定,并帮助模型收敛到更好的局部最优解。
- 数据增强:对于2D图像,我们使用了随机裁剪、水平翻转和强度偏移。对于3D CT数据,增强手段需更加谨慎,以避免引入不真实的解剖结构变形,通常仅限于强度归一化范围内的轻微扰动。
4. 实验验证:从合成数据到真实世界
任何新方法的提出,都需要经过严谨的实验验证。我们设计了两阶段的实验:首先在可控的合成数据上验证核心思想的有效性,然后在真实的临床数据上评估其实际性能。
4.1 合成数据验证:Tumor-CIFAR
数据集:Tumor-CIFAR数据集是在CIFAR-10图像上叠加模拟生长的肺结节生成的。它有两个版本:
- v1(规则采样):每个模拟结节在5个等间隔时间点被采样。
- v2(不规则采样):每个模拟结节在5个随机时间间隔点被采样,但良恶性结节的最终大小分布与v1相同。
核心目标:验证我们的时间距离ViT是否具备处理不规则采样时间序列的能力。
对比模型:
- 位置ViT(Positional ViT):仅使用标准位置编码,作为不考虑时间距离的基线。
- 距离门控LSTM(DLSTM):当前纵向医学影像分析的领先方法,它使用时间距离门控机制。
- 我们的模型:TeViT和TaViT。
结果与分析:
- 在规则采样数据(v1)上:TeViT和TaViT的表现略优于DLSTM,并显著优于位置ViT。这表明,即使在规则采样下,显式地建模时间信息(而非仅仅顺序信息)也是有帮助的。位置ViT的性能相对较低,说明它未能充分学习到生长动态。
- 在不规则采样数据(v2)上:这是最具说服力的实验。位置ViT的性能完全崩溃(AUC≈0.5),等同于随机猜测。因为它无法从混乱的“位置”中解读出“时间”规律。相反,TeViT、TaViT和DLSTM都取得了近乎完美的性能(AUC>0.999)。这强有力地证明了我们的方法(以及DLSTM)成功捕捉到了不规则时间间隔下的结节生长动态,而不仅仅是序列顺序。
关键洞察:这个实验像一道“判断题”,清晰地将能处理不规则时间间隔的模型与不能处理的模型区分开来。我们的时间距离ViT成功通过了考验。
4.2 真实临床数据验证:NLST队列
数据集:我们从美国国家肺癌筛查试验(NLST)中筛选了一个队列,包含535名肺癌患者(病例)和1397名有阳性发现但未患癌的受试者(对照)。每位受试者取最近两次连续的筛查CT扫描。
任务:基于两次扫描,二分类判断受试者是否为肺癌(恶性)。
对比模型:
- CS-CNN:一个优秀的、仅基于单次扫描(横断面)的卷积神经网络模型,作为不考虑纵向信息的强基线。
- DLSTM:纵向方法的强基线。
- 位置ViT:我们的消融实验基线。
- 我们的模型:TeViT和TaViT。
评估方式:五折交叉验证,报告平均AUC及标准差。
主要结果:
| 模型 | 平均AUC (标准差) | 相对于CS-CNN的p值 |
|---|---|---|
| CS-CNN (横断面) | 0.734 (0.249) | < 0.05 (参考) |
| DLSTM (纵向) | 0.779 (0.214) | 0.75 |
| 位置ViT (纵向) | 0.768 (0.348) | 0.06 |
| TeViT (纵向) | 0.785 (0.225) | 0.81 |
| TaViT (纵向) | 0.786 (0.332) | ref. |
结果解读与讨论:
- 纵向信息至关重要:所有四个纵向模型(DLSTM,位置ViT,TeViT,TaViT)的AUC均显著高于横断面模型CS-CNN。这再次印证了临床共识:对比历史影像能显著提升肺结节良恶性鉴别能力。
- 时间距离ViT达到领先水平:TeViT和TaViT取得了最高的平均AUC(0.785和0.786),与当前领先的纵向方法DLSTM(0.779)性能相当,且略有提升(尽管在统计学上不显著)。这证明了基于自注意力的时间距离建模框架是有效的,可以作为DLSTM等基于RNN方法的有力替代。
- 一个反直觉的发现:TeViT/TaViT相对于位置ViT的改进(~0.02 AUC)在统计上不显著。DLSTM相对于其不考虑时间的变体也有类似现象。这与我们在合成数据上看到的巨大差异形成了对比。
如何理解这个“矛盾”?我们提出了三个可能的原因:
- 惰性肺癌亚型的存在:部分肺癌(如某些惰性腺癌)生长极其缓慢,其生长速率可能与良性结节重叠,削弱了时间动态特征的判别力。
- 筛查检出癌的早期性:NLST队列中的癌症大多是早期通过筛查发现的。与晚期才出现症状的癌症相比,这些早期癌在有限的两次扫描间隔内,生长变化可能不明显。
- NLST数据的时间间隔相对规律:NLST作为严格控制的临床试验,患者年度筛查的依从性很高(>90%),导致扫描间隔变异度较小(主要集中在1年左右)。在这种相对规则的时间间隔下,单纯的位置信息(位置ViT)可能已经能够近似地捕捉到时间顺序,从而削弱了显式建模时间距离的额外优势。我们推测,在社区筛查(依从性约55%)这种间隔更不规则的场景下,时间距离模型的优势会更为凸显。
临床意义与案例展示:图4的案例生动展示了时间距离ViT的临床价值。一个在一年内保持稳定的大结节,CS-CNN误判为高风险(>0.5),而我们的模型正确给出了低风险评分(<0.5)。另一个在11个月内明显增大的小结节,CS-CNN低估了风险(<0.5),而我们的模型则给出了高风险评分。这体现了纵向分析在避免过度诊疗(对稳定结节进行不必要的活检)和避免漏诊(识别快速生长的早期癌)两方面的潜力。
5. 局限、反思与未来方向
尽管我们的方法取得了有希望的结果,但作为一项探索性研究,它存在固有的局限性,这也指明了未来的改进方向。
1. 依赖于两阶段检测框架的局限当前工作流程依赖于一个预训练的结节检测网络来提取区域特征。这带来了几个问题:检测网络的误差会传播到下游分类模型;模型无法从完整的CT图像中端到端地学习全局上下文信息(如淋巴结、胸膜等);特征提取过程与时间建模过程是割裂的。未来的工作必然走向端到端的3D视觉Transformer。近年来,Swin Transformer、UNETR等3D ViT变体在医学图像分割和分类中表现出色。将我们的时间距离模块集成到这些3D ViT中,构建一个能够直接输入系列CT体积、同时完成结节检测、特征提取和纵向分类的 unified 模型,是极具吸引力的方向。
2. 对更复杂时间动态的建模能力我们目前的时间强调模型(TEM)形式相对简单(翻转Sigmoid),它假设信息重要性随时间距离单调衰减。然而,疾病的演变可能并非如此简单。例如,某些感染性结节可能在短期内快速变化然后稳定,某些癌前病变可能有一段“静止期”后才加速生长。探索更灵活的时间关系函数,例如基于神经网络的可学习函数,或者引入周期性的时间编码以捕捉可能的周期性随访模式,是值得尝试的。
3. 超越两次扫描与多模态融合本研究仅使用了两次连续的扫描。在实际临床中,患者可能有多于两次的影像资料。将框架扩展到处理任意长度、任意时间间隔的扫描序列是一个重要的工程和算法挑战。此外,肺癌诊断绝非仅凭影像。患者的年龄、吸烟史、家族史、血液肿瘤标志物等临床信息至关重要。如何将非成像的、结构化的临床数据与多时间点的影像数据在一个统一的Transformer框架中进行融合(例如,通过额外的临床标记或跨模态注意力),是提升模型诊断性能和可解释性的关键。
4. 在真实世界不规则数据上的进一步验证正如前文所讨论的,需要在依从性更差、时间间隔更不规则的社区筛查数据上验证我们方法的鲁棒性。我们期待与医疗机构合作,获取这样的真实世界数据,以检验时间距离模型在更具挑战性的场景下的泛化能力。
个人实践体会: 从事这项研究让我深刻体会到,将前沿的AI架构(如Transformer)应用于医学领域,绝不是简单的“拿来主义”。核心在于深刻理解临床问题的独特约束(如不规则采样),并将这种领域知识转化为模型设计的诱导偏置。TeViT和TaViT可以看作是将“时间距离很重要”这一临床先验,通过不同的方式(加性编码 vs. 乘性调制)注入到通用架构中。同时,医学数据的稀缺性和标注成本高昂,使得预训练策略(如MAE)变得无比重要。最后,与临床专家的紧密合作至关重要,他们的反馈能帮助我们发现模型结果的临床合理性,并共同解读那些反直觉的发现,从而推动研究向真正有用的方向迈进。这条路很长,但看到模型能够复现甚至增强医生在纵向分析中的推理过程,无疑是最令人兴奋的回报。
