当前位置:首页 > 科研成果库

3毫米的病灶,AI没圈出来——聊聊医学影像分割的“小目标”困境

2026-11-07 04:13:08小研科研成果库8

上周跟一个放射科朋友吃饭。他吐槽,说他们科试了一套AI辅助诊断,肝脏CT上有个转移灶,3毫米出头,算法分割结果一片空白。医生自己差点也漏了。后来回头翻片,才发现那个小点。

朋友说,这AI是不是瞎?

我说,不是瞎,是“偏心”。医学影像分割这门手艺,天生对小目标不太友好。

医学影像分割,说白了就是让算法在CT、MRI这些图里,把器官、病灶、血管这些结构一个像素一个像素地圈出来。注意,是像素级。不是画个方框说“这儿大概有东西”,而是沿着边界描边。听起来很细对吧?问题就出在这个“细”上。

一个3毫米的结节,在CT里到底长什么样

先别急着怪模型。你想想,一张腹部CT,层厚3毫米,一个3毫米的病灶,可能只出现在一两层图像上。再经过重建、插值,它在屏幕上的面积小得可怜。几十个像素。甚至十几个像素。

什么概念?你在一张A4纸上找一颗芝麻,和找一个大西瓜,难度能一样吗?更麻烦的是,周围还有肝实质、血管、脂肪,灰度接近,边界模糊。部分容积效应一掺和,小病灶跟背景的对比度就更低了。人眼盯着看都容易滑过去,别说算法了。

但这还不是最要命的。

小目标分割真正的坑,在训练和评价环节。你拿一堆数据喂模型,病灶像素占比可能不到千分之一。模型很快学会一个偷懒策略:全预测成背景,准确率照样很高。因为背景像素太多了。可你想要的病灶,一个都没圈出来。这叫类别不平衡,老生常谈了,但落到小目标上,格外扎心。

肝脏CT小转移灶分割对比图肝脏CT小转移灶分割对比图

还有分辨率。卷积神经网络一层层下采样,感受野变大了,语义信息强了,但小目标的细节也丢了。高层特征图上,一个3毫米的病灶可能就剩一个点。甚至点都没了。U-Net那种跳跃连接为什么重要?就是把浅层的高分辨率特征拽回来,跟深层语义拼在一起。不然小目标真就消失在池化层里了。

标注员手一抖,模型就学歪了

再说标注。很多人以为医学影像分割的瓶颈是模型结构。说实话,在一线干过的都知道,标注质量经常比模型更让人头大。

一个3毫米的病灶,边界到底在哪儿?不同医生勾出来的轮廓能差出几个像素。别小看这几个像素——对小病灶来说,那可能就是它全部面积的百分之二三十。A医生勾得紧一点,B医生勾得松一点,模型学谁?它只能学一个平均。平均出来的边界,往往谁都不像。

更隐蔽的问题是,有些小病灶在平扫CT上根本看不清,需要增强扫描或者多期图像。但标注时只给了一张平扫,标注员凭经验补了一个圈。这个圈本身就带着不确定性。模型把这不确定性当成了金标准去拟合。结果到了新数据上,稍微换个扫描参数,分割结果就飘了。

我见过一个项目,肝脏小转移灶的Dice系数在验证集上能到0.78,听起来还行?但把预测结果按病灶大小分层一看,小于5毫米的病灶Dice直接掉到0.2以下。有些病例干脆全空。可临床最需要早期发现的,恰恰就是这些小东西。

所以别只看总体Dice。Dice系数是衡量两个轮廓重合程度的指标,公式不复杂,但它对小目标有个“惩罚放大”效应。小病灶面积小,预测偏几个像素,Dice就断崖式下跌。反过来,大器官分割得好,能把总体分数拉上去,掩盖小目标的惨状。这叫指标欺骗。你得按尺寸分层看,不然就是自嗨。

U-Net多尺度特征融合医学影像分割示意图U-Net多尺度特征融合医学影像分割示意图

损失函数也在“欺负”小病灶

损失函数也在“欺负”小病灶损失函数也在“欺负”小病灶

常规的交叉熵损失,每个像素一视同仁。背景像素多,梯度就被背景主导了。小病灶那点梯度,像水滴进大海。怎么办?有人用加权交叉熵,给病灶像素更大的权重。有人用Focal Loss,让模型更关注难分类的样本。还有人用Tversky Loss,专门调整假阳性和假阴性的平衡。

这些方法有用吗?有用。但别指望一个损失函数就逆天改命。小目标分割是个系统工程。数据层面,你得有足够多的小病灶样本,还得有高质量的标注。模型层面,多尺度特征融合、注意力机制、高分辨率分支,都是常规操作。训练策略上,patch-based训练比整图训练更稳,因为你可以围绕小病灶采样,避免它被大背景淹没。

不过话说回来,采样也有坑。你使劲过采样小病灶,模型会变得特别敏感,假阳性飙升。临床上假阳性多了,医生一样烦。每张片子给你圈出十几个可疑点,最后全是血管断面或者噪声。狼来了的故事,医生就不信了。

那临床到底怎么用?别把它当“自动判官”

那临床到底怎么用?别把它当“自动判官”那临床到底怎么用?别把它当“自动判官”

我个人的看法是,医学影像分割在小目标场景下,现阶段更像一个“提醒器”,而不是“判官”。它帮你把可疑区域标出来,减少漏检,但最终判断还得靠人。尤其是小病灶,算法给出的轮廓线可以作为一个参考,医生需要结合多期增强、病史、随访来综合判断。

有些团队在做的就是“人机协同”:算法先跑一遍,把低置信度的小目标区域高亮,医生重点看这些区域。这样既不增加太多阅读负担,又能降低漏诊率。比一味追求全自动分割靠谱得多。

还有一个误区得提:很多人以为分割Dice高,临床效果就好。不一定。Dice衡量的是重合度,但临床关心的是——这个病灶有没有被漏掉?边界有没有侵犯关键结构?体积测量准不准?一个分割结果可能Dice很高,但边界系统性外扩,对放疗计划来说就是灾难。所以评价指标得跟临床任务对齐,不能只盯着一个数。

边界也很重要。小病灶的边界本身就模糊,算法输出的硬边界有时候是伪确定。更好的做法是给出不确定性估计,告诉医生“这块我拿不准”。医生看到不确定性高的区域,自然会多看一眼。这比强行给一个漂亮的轮廓线有价值。

最后说句实在的。医学影像分割这几年进步很大,大器官、大病灶的分割已经相当可用了。但小目标仍然是硬骨头。它考验的不只是模型结构,还有数据质量、标注规范、评价体系、临床工作流。你要问我,3毫米的病灶AI能不能可靠分割?我的回答是:能辅助,别依赖。先解决漏检,再谈精准。别让一个漂亮的Dice数字,掩盖了那些消失在像素里的小点。

毕竟,临床上漏掉一个3毫米的转移灶,可能比分割边界差两个像素严重得多。