基于FocalNet的mp-MRI前列腺癌检测与Gleason评分联合预测
我不是做医学影像出身的但一直在关注深度学习在辅助诊断上的落地。最近读了一篇很有代表性的工作标题是“Joint Prostate Cancer Detection and Gleason Score Prediction in mp-MRI via FocalNet”简单说就是给定多参数磁共振影像用一个基于FocalNet的模型同时完成前列腺癌病灶检测和Gleason评分预测。这个方向我盯了很久因为它卡在了临床流程里一个非常真实的痛点上——穿刺活检虽然有金标准意义但本身有采样误差而且是有创的。如果能用影像直接给出“有没有癌、恶性程度大概多少”的双重判断临床决策链条会短非常多。这篇笔记我会把论文背后的临床问题、mp-MRI多模态数据特征、FocalNet的核心机制、联合任务架构设计、训练与评估细节以及我读完之后想复现时最关心的几个问题一次性拆开讲清楚。1. 这篇文献解决的是什么临床问题1.1 前列腺穿刺的盲区为什么要在MRI上直接判断分级前列腺癌的确诊目前的标准流程基本是PSA筛查异常然后做mp-MRI医生根据PI-RADS评分判断可疑程度再看要不要穿刺活检。这里面有个很尴尬的现实——穿刺即使是在MRI融合导航下做的“靶向穿刺”也依然存在系统误差。一根针穿进去可能刚好避开最恶性的区域取到的组织只是病灶里相对“温和”的部分。于是临床上经常出现一个现象穿刺报告的Gleason评分是336术后把整个前列腺切下来做全腺体病理才发现实际是437甚至更高这就是所谓的“升级”。这个问题的根源在于我们一直在用“点的组织”去推断“整个病灶的性质”。而mp-MRI在视野上恰恰是完整的它能看到整个病灶的边界、内部结构、弥散受限程度。如果能用深度学习直接在影像上做到两件事——检测病灶在哪并预测病灶的Gleason分级那很多灰色地带的患者就可以避免盲目穿刺或者在主动监测的时候得到更可靠的影像依据。这篇发表在文献里的工作正是冲着这个目标去的。标题里的“Joint”是关键字它不是先检测再分级的两阶段流水线而是让检测和Gleason评分预测在一个模型里联合完成。这种设计的好处后面细说但先记住一个前提这两个任务在临床上本来就是同一份报告里要回答的两个问题强行拆开其实不符合医生的读片习惯。1.2 从PI-RADS到Gleason影像特征与病理分级之间的桥梁想理解这个模型为什么可能work必须先搞清楚PI-RADS和Gleason评分之间的区别。PI-RADS是影像学上对“可疑程度”的半定量评分范围1到55代表“高度怀疑存在临床显著性前列腺癌”。但它回答的是“像不像”不是“有多恶性”。一个PI-RADS 5的病灶病理出来可能只是Gleason 347一个PI-RADS 4的病灶也可能深藏不露是459。Gleason评分则完全来自组织学判断。病理医生在显微镜下看腺体结构分化好的腺泡排列规整像一排排整齐的房子恶性程度高的区域腺体融合成片、出现筛状结构甚至完全失去腺管形态。评分把主要的生长模式加次要生长模式得到6到10之间的一个分值。临床上习惯按三档看6是低危7是中危其中34预后好于438以上是高危。影像和病理之间确实存在可学习的关联。比如DWI序列上的弥散受限程度本质上反映的是细胞密度和细胞外间隙大小而高级别肿瘤细胞更密集、腺腔更少所以ADC图上信号会明显偏低。又比如T2WI上低级别病变通常边界相对清楚高级别病变往往边界模糊、形态不规则。这些关联虽然没法用肉眼和简单规则精确量化但恰好是深度卷积网络和Transformer类模型擅长捕捉的统计模式。所以从原理上讲“用mp-MRI直接预测Gleason评分”并不是玄学它是在学一组肉眼能部分感知、但无法准确描述的影像-病理映射。2. mp-MRI多模态数据模型实际吃进去的是什么2.1 T2WI、DWI/ADC、DCE各自携带的组织学信息做这个方向的模型输入不是一张图而是一组多序列图像。mp-MRI里最常用的三个序列各自携带的信息差别很大而且和Gleason评分的关联强度也不同。T2WI是解剖结构的基础前列腺的移行带、外周带、中央带在T2上分得相对清楚。低级别肿瘤在T2上通常表现为外周带里一块信号轻微降低的区域边界还算清楚。高级别肿瘤往往信号更低、边界模糊有时还伴有前列腺包膜的隆起或侵犯。这个序列对病灶定位最友好但对分级来说信息比较间接。DWI和对应的ADC图是预测Gleason评分的主力。DWI反映水分子在组织内的弥散运动高级别肿瘤细胞密集弥散受限更明显DWI上呈高信号、ADC图上呈低信号。临床上早就发现ADC值和Gleason评分有负相关趋势所以这几乎是模型里最重要的单序列输入。DCE动态增强序列记录造影剂在病灶里的流入-流出曲线反映新生血管和灌注特点。它对检测敏感度有贡献但对分级的区分能力不如DWI/ADC直接。很多研究在Gleason预测任务上做消融去掉DCE影响不大但因为临床扫描规范里会常规采集模型一般还是把它作为辅助通道用。序列主要病理生理解释检测价值分级价值T2WI解剖结构、腺体形态高中DWI/ADC细胞密度、弥散受限高高DCE灌注、新生血管中低实际工程里常见的做法是把T2WI、高b值DWI、ADC图作为三通道输入或者把DCE的早期增强相也叠进去。具体到这篇文献标题只写了mp-MRI和FocalNet没细说通道组合但按这类任务的主流实践八成是至少用了T2、DWI/ADC的组合。2.2 配准与预处理多序列对齐是绕不开的前置步骤很多只看算法不看数据的人容易忽略一个问题mp-MRI的多序列不是天然对齐的。T2WI和DWI的扫描参数不同、视野不同、层厚不同患者体内器官又会因为呼吸或直肠蠕动发生变形。直接把五六个序列叠成一个多通道张量丢进网络如果没做好配准模型学到的可能是一堆对不齐的伪影。常规的做法是先做刚性或非刚性配准把所有序列都对齐到T2WI空间再插值重采样到一致的分辨率。前列腺是盆部器官运动幅度比胸腹部小配准难度相对可控但微小误差依然存在。实际工程中我认为先在2D切片层面做粗配准、再用薄板样条或B样条做精细配准是比较稳妥的路线。预处理还有一个容易被忽视的点信号强度归一化。MRI不像CT有标准的亨氏单位不同机器、不同线圈、不同扫描参数出来的信号强度分布差异很大。按z-score在全身或者在前列腺区域ROI内做归一化几乎是必须的。有些工作会做“前列腺区域裁剪”把整个前列腺或病灶附近区域裁剪出来再喂进网络好处是大幅减少背景干扰缺点是模型在推理时可能依赖裁剪质量。这篇文献如果做的是全图输入那归一化和配准的细节就尤为关键如果是ROI输入那就得额外考虑训练和推理时ROI来源的一致性。3. FocalNet的焦点调制机制为什么它适合这种联合任务3.1 从自注意力到焦点调制一个用局部卷积逼近全局建模的思路FocalNet并不是为医学影像专门设计的它最早的定位是给视觉Transformer提供一种更高效的全局建模替代方案。Vision Transformer系列依赖自注意力机制理论上能建模任意两个位置之间的依赖关系但计算复杂度是O(N²)N是所有token的数量也就是图像patch的数量。3D医学影像里patch数量动辄几万直接上全局自注意力显存和算力都很难扛住。Swin Transformer则通过窗口化和移位窗口来近似全局建模计算复杂度降到了O(N)但窗口划分是一种人为的归纳偏置不同窗口间的信息交换需要多层堆叠才能逐步扩散。FocalNet走了一条不一样的路它不计算token两两之间的相似度而是用“从细粒度到粗粒度”的多层卷积上下文聚合再通过门控调制把聚合的上下文写回每个token的特征里。这个过程是线性复杂度且没有窗口划分的问题。我理解FocalNet的设计哲学是视觉里的长距离依赖其实可以近似为多尺度上下文的级联。低层卷积看到局部纹理高层卷积看到更大范围的形态逐层往下采样天然形成了一个“焦点从近到远”的金字塔结构。这个思路和前列腺病灶判读时的读片逻辑很像——你先看局部腺体结构是否紊乱再环顾周围边界最后结合整个区带的形态判断可能性。3.2 三个关键组件上下文聚合、门控聚合、逐元素调制FocalNet的focal modulation机制由三步组成context aggregation、gated aggregation和modulation核心是用卷积堆叠实现多尺度局部上下文获取再通过门控和调制操作与输入特征融合。第一步是上下文聚合。对输入的token特征做不同扩张率的卷积或不同stride的下采样卷积得到一系列不同“焦点级别”的上下文特征也就是L个层级。最浅的一层对应局部细节最深层对应大范围的结构信息。第二步是门控聚合。把L个层级的上下文特征做加权求和权重由一个可学习的门控参数生成让网络自己决定当前token应该更关注局部还是更关注全局。这一步等价于做了一个“可学习的注意力”但没有显式计算token两两的相似度矩阵所以成本是线性的。第三步是调制把聚合后的上下文向量通过逐元素乘法和逐元素加法调制回原始token特征上。这样每个token的位置信息就是原始patch特征加大范围上下文的乘积和加和实现了一种比注意力更直接的“特征增强”。从数学上看自注意力是所有位置特征矩阵乘以后加权求和FocalNet则是用卷积滤波器的响应来隐式决定“哪些位置值得聚合”并通过门控决定“不同尺度聚合多少”。它牺牲了自注意力那种理论上无限灵活的长距离配对能力换来了线性复杂度和更强的局部先验。这个权衡在医学影像上非常合理因为肿瘤病灶的判读本质上是强局部依赖的远处的背景信息即便参与交互也不该喧宾夺主。3.3 与ViT/Swin Transformer对比以及3D适配的现实门槛如果我把这篇文献换成Swin Transformer做骨干会损失什么这是读这篇论文时我一直在想的问题。Swin的窗口注意力确实能建模局部交互但它的“locality”是矩形窗口而前列腺病灶是不规则形状FocalNet的局部交互通过卷积核实现天然具有平移等变性和对不规则形状的适应能力。换成纯ViT又会怎么样全局注意力能捕捉长距离依赖但推理长尾分布时需要更多数据来学习位置先验而医学影像数据集通常只有几百到几千例太容易出现过拟合。FocalNet因为卷积构造带来的强归纳偏置在小数据集上的收敛速度和泛化下限通常会更好。不过这里有一个非常现实的门槛FocalNet原始论文是2D的而mp-MRI是3D体数据。如果直接把2D FocalNet用于逐切片推理会丢失层间连续性信息——前列腺病灶在矢状面或冠状面上的延展和浸润恰恰是判断肿瘤边界的重要线索。如果把它改造成3D FocalNet把2D卷积换成3D卷积显存占用会急剧上升对输入尺寸和模型深度都要做妥协。这篇文献标题直接用“mp-MRI”而不是“2D mp-MRI slices”我倾向认为它应该是3D化的网络但具体3D化方式是简单地替换卷积还是加了伪3D设计没有更多标题信息时不好判断。按经验如果是我来复现第一版会做3D FocalNet但把输入尺寸压缩到比较经济的范围比如逐病灶体素块裁剪而不是全腺体输入。4. 检测与Gleason评分联合建模的架构设计与训练4.1 共享骨干双任务头哪些层共享、哪些层分离“Joint”这个设计词落到网络结构上是这样实现的底层骨干网络共享上层分出两个任务头。骨干的作用是提取通用的、与任务无关的语义特征比如边界、纹理、病灶对比度检测头负责定位病灶位置并给出置信度Gleason分级头则负责在检测框内部或病灶掩膜内部做评分的分类预测。检测头的设计跟通用目标检测没有本质区别常见做法是借鉴Faster R-CNN的RPN加ROI head或者FCOS/RetinaNet这类单阶段结构。对于前列腺病灶这种目标少、尺寸可变、边界模糊的场景我见过不少工作选择用单阶段检测器因为两阶段检测器在医学小数据集上容易对候选框这一环过拟合。Gleason分级头的设计更关键。Gleason评分本质是有序变量6到10之间的差别不是简单的类别差别还带有“越高越凶险”的顺序信息。把评分做成5类普通分类是常见做法但浪费了顺序信息。更合理的做法是用ordinal loss把多分类拆成一系列二分类问题比如“是否≥7”“是否≥8”或者直接用回归头预测一个连续值再映射回整数分位点。共享骨干和分离头之间的边界在哪是训练时的核心问题。底层共享是默认的但顶层特征要不要共享不同工作差别很大。如果检测头和分级头完全共用顶层特征训练时两个任务的监督信号会互相干扰如果完全分开又失去了联合训练的特征共享收益。折中的做法是让检测头从骨干的中间层引出分级头从更深的语义层引出中间用FPN的结构做多尺度特征融合。这个设计的直觉是检测更需要中层的几何边界信息分级更需要深层的抽象语义信息。4.2 损失函数设计分类、定位、有序分级怎么平衡多任务联合训练的核心难点不是把两个头的loss加起来而是怎么平衡它们的量纲和收敛速度。检测头的分类分支通常用focal loss定位分支用L1或smooth-L1Gleason分级头如果是5分类用交叉熵如果做序数回归用ordinal loss。这几个loss的数值范围完全不同直接相加会让梯度被量纲大的任务主导。一种常见的解法是不确定性加权把每个任务的loss权重设成可学习的参数。核心思想是如果一个任务的数据噪声大、模型对它预测的置信度低那这个任务在总loss里的贡献应该被自动降低。数学上就是给每个任务配一个对数方差项在训练时一起优化。另外一个更简单直接的办法是网格搜索固定权重但任务比重在训练不同阶段其实会变化固定权重往往不理想。还要特别注意病变分配问题。检测头的正样本是“有病灶的框”分级头的正样本是“被检测框住的病灶对应的Gleason标签”。如果检测头把某个框预测成低置信度该框的Gleason预测是否还参与loss计算这是个容易被忽略但影响很大的细节。常见的策略是只对检测置信度超过一定阈值的框计算Gleason loss否则该框的Gleason分支不产生监督信号。这样能让分级任务专注在模型“已经发现了”的候选区域上避免在背景区域强行拟合分级标签。4.3 采样策略与数据增强的细节考量医学影像数据集最大的问题是样本量少和类别不平衡。Gleason评分分布天然偏向中低危Gleason 9和10的样本很少如果按原始分布训练模型很容易把大多数样本预测为常见类别。负样本的挖掘策略也要处理前列腺里有前列腺炎、增生结节、钙化等良性病变它们在mp-MRI上也可能有可疑信号。模型不能把所有“有信号异常”的区域都当成癌这就需要难负样本挖掘把那些像癌但其实是良性病变的区域反复让模型训练。数据增强方面基础操作包括随机旋转、翻转、小尺度缩放、弹性变形。MRI还有一个独特的增强思路模态缺失增强即训练时随机丢弃某些序列通道模拟实际采集不完整的情况。这比简单的像素扰动有意思得多因为临床上患者可能因为肾功能原因没做DCE或者DWI序列质量差被剔除。模型如果见过“少一个通道”的输入推理时遇到不完整数据也能保持稳定。5. 实验评估里的门道指标、数据切分与临床语义5.1 病灶级还是患者级评估口径会显著改变结论论文方法好不好一半看指标怎么选。前列腺癌检测任务里有两条评估口径病灶级lesion-level和患者级patient-level。病灶级是检出了多少病灶框要和专家标注的病灶框做匹配患者级则是只要这个患者至少一个病灶被检出就视为这个患者被成功检出。临床上更关心患者级灵敏度因为决策主体是“这个患者要不要穿刺”但病灶级能更真实地反映模型定位误差。这两个口径下的数字差距往往非常明显。患者级AUC通常会比病灶级AUC好看很多因为一个患者常常有多个可疑病灶只要命中一个就算成功命中的概率自然高。论文里如果只报患者级不报病灶级需要警惕它的定位能力可能并不强。读这篇文献时我心里默认的评估要求是两个口径都要给并且要和病理-影像融合标注做比对而不是只和放射科医生的标注做比对。Gleason评分的评估还有一个特殊问题真值标签来源。影像分析里的Gleason真值有的来自穿刺活检病理有的来自术后全腺体病理。全腺体病理才能准确反映整个病灶的Gleason模式穿刺病理因为采样误差会低估。如果训练集用的是穿刺病理标签再好的模型也学习不到“正确的”影像-病理映射。所以看一个Gleason预测工作必须先看它的标签来自哪里。5.2 检测指标与分级指标各自的解读方式检测性能的常规指标是ROC-AUC、PR-AUC、灵敏度/特异度对、FROC曲线。前列腺病灶在MRI图像上占的体积比例通常很小正负样本高度不平衡这时候PR-AUC比ROC-AUC更敏感因为ROC会被大量真负样本“稀释”。病灶级检测如果PR-AUC能到0.5以上在密集分布的区带里已经算不错了。Gleason分级评估论文里常见的有三类精确匹配准确率预测评分和病理评分完全一致的比例、粗略三分类准确率低危/中危/高危、以及加权Kappa系数。Kappa系数比简单准确率更合理因为它惩罚了“总是预测最常见类别”这种作弊行为。对于临床辅助诊断来说预测Gleason 7但实际是6和预测Gleason 6但实际是9这两种错误的临床代价完全不同。前面这种错误可能只是让患者多做一次穿刺确认后面这种错误可能让高危患者被误纳入主动监测、延误治疗时机。所以读这类文献的评估部分我格外关注模型在格雷森高分段8到10的召回率而不是只看平均准确率。5.3 临床应用对误判代价的敏感度计算机视觉里分类错误顶多影响推荐算法准不准但在这里误判直接改变治疗策略。前列腺癌主动监测的前提是患者确实是低危如果Gleason预测模型把8分误判成6分患者就会被错误纳入监测组。反过来如果把6分误判成8分患者可能接受不需要的根治性治疗承受尿失禁、性功能损伤等并发症。这两种误判都没有完美解法只能通过调节分类阈值来权衡。在评估策略上我应该把模型的输出设定成一个连续风险分数而不是硬分类结果让临床医生在“风险阈值”上游走。这篇文献如果能把Gleason预测以概率分布或者多类别置信度的形式输出比给一个硬编码的6到10分更符合临床实际。因为在同一幅影像上存在异质性的情况下病灶内的Gleason模式并不是单一不变的只输出一个分数会把这种空间异质性全部抹平。6. 阅读之后复现要点与更深的思考6.1 如果我要复现最先动手做哪几件事复现这类工作顺序很重要盲目从零搭模型必踩坑。我会按下面这个顺序推进先做数据梳理。找到多中心、带活检或全腺体病理标签的mp-MRI数据确认Gleason标签是穿刺病理还是全腺体病理把患者级和病灶级标注整理成统一格式。这一步至少占掉整个复现周期的一半时间。再做配准与归一化。把所有序列配准到T2WI空间重采样成等各向同性分辨率按前列腺区域做裁剪和z-score归一化。很多人觉得这步“不增加模型能力”但配上多序列错位的数据FocalNet再强也白搭。然后搭建网络骨架。第一版我会用2.5D方案取病灶中心的轴向切片再加上相邻几张切片形成多通道输入用2D FocalNet做特征提取。这个方案显存压力小、调试速度快。等2D流程完全跑通再升级到3D FocalNet输入改成3D patch。直接上3D版本的一大问题是训练不稳定排查bug的难度会指数上升。最后训练。先单独训练检测头和分级头验证两个任务各自能收敛再联合训练。联合训练时先固定loss权重的初始值跑几个epoch观察两个任务的loss下降曲线优先级是检测先收敛分级随后跟上。如果两个任务loss互相打架再换不确定性加权。6.2 这篇工作里我认为最值得商榷的点一是病灶中心假设的合理性。很多检测加分级的工作Gleason评估只在检测框的中心区域做如果病灶是“异质性”的——低级别区域和高级别区域在同一病灶内并存中心区域可能不是最恶性区域。严格意义上模型应该输出空间上的Gleason分布图而不是一个标量评分。FocalNet具备做多尺度特征融合的能力如果论文只是简单地在ROI尾部接了全局池化再做单点评分其实是浪费了这个架构的空间建模能力。二是对DWI高b值序列的依赖程度。mp-MRI里DWI对Gleason的预测贡献最大但DWI在临床上也是最容易受伪影影响的序列。金属植入物、肠道气体、直肠内线圈的不均匀性都会让DWI失真。如果模型大量依赖DWI的特征那在DWI质量差的中心泛化表现就可能崩塌。理想的做法是在训练集上加入DWI质量降质模拟强迫FocalNet从T2和ADC上补充学习鲁棒的表征。三是评估基准的清晰度。联合任务比单任务更容易“刷指标”。检测头和分级头有互相强化的作用——如果检测头定位到了高置信度病灶分级头只需在这个框内做高分预测整体指标会很好看但不能说明模型真的学到了Gleason的影像特征。论文的评估需要和两个基线对比纯检测模型加固定ROI分级以及两阶段先检测再独立分级模型弄清楚联合建模的增益到底来自哪里。6.3 一个可操作的延伸方向如果我要接着这篇工作往下做我会把目标从“Gleason评分预测”改成“Gleason主导模式的空间分布图”。FocalNet的多尺度焦点调制本质上是为每个位置聚合不同范围上下文完全有条件输出一个逐体素或逐patch的Gleason等级热力图而不是在ROI分类后打一个总分。这样医生看到的不再是“这个病灶是Gleason 8”而是“这个病灶的外侧区域倾向于高级别内侧区域倾向于中级别”对穿刺靶点的选择会有直接帮助。结合前列腺全腺体病理做空间配准还能生成弱监督的逐体素Gleason标签进一步训练更精细的模型。这个方向的困难在于需要更精细的标注和更复杂的三维配准但临床价值远比单纯的分级更扎实。FocalNet给了我们一个合理的起点关键是怎么把它的空间上下文能力真正发挥出来。读完整篇论文我最大的体会是这类工作对工程能力的要求一点都不比算法能力低。模型架构再强数据配准、标签质量、评估口径这些“脏活”才是决定能不能落地的关键。如果只从标题看FocalNet这个亮点很容易被误导去纠结新网络结构而忽略了作者在临床问题上下的真功夫。对我个人来说接下来复现时最先做的不是去写FocalNet的前向代码而是去把数据管线和评估管线打磨干净。