以影像为基础,融合多模态数据提供自动转诊能力、提供确诊决策支持、提供初级影像报告,这就是全病种医疗影像阅读者给出的愿景。
在医疗影像领域最知名的一些公开数据集中,BRATS 关注脑部图像中脑肿瘤的检测和分割,LUNA16 旨在从胸片中检测肺结节,而以 Kaggle Diabetic Retinopathy Challenge 为代表的多个数据集则关注糖尿病视网膜病变程度分类。在这些面向某一特定病种的任务上,研究者都已经取得了精确度不错的成果。然而从一个好的分类模型到临床实践之间的距离有多远?
「目前的医疗影像识别技术大多面向『重病大病』。然而,拿大家最熟悉的胸部 CT 的分析做例子,患者和医生真的需要一个『专看肺癌病灶,但是其他肺病一概不会看』的系统吗?」体素科技创始人丁晓伟提出的这个问题,答案是显而易见的。
医生是根据患者症状、患病风险或其他检查的结果来为患者做某种影像检查,希望查明「为什么咳嗽?」,而非「是否患了肺癌?」。哪怕是定向疾病的筛查,阅片医生一样有义务汇报所有影像中的可见异常。单一病种识别模型只能完成单一病种的假设与检验,然后回答问题二,对于问题一,只能表示无能为力。理想的系统既要能够回答「您没有患肺癌」,也能告诉患者「但是有肺炎」。「发现所有可见异常病定性」这个医疗诊断的基本逻辑,让「特定影像协议(Imaging Protocol)下的的全病种识别能力」成了人工智能医疗影像技术投入真实场景的底线。
「全病种医疗影像阅读」对于人类医生来说尚且不是一个容易达成的目标。丁晓伟谈到,我国大约有一半的早期大病没有获得应有的检查。基层医院其实有丰富的影像设备资源,但是为丰富的设备配备同等丰富的医生资源却是几乎不可能的。
因此,将「给定影像协议下的全病种医疗影像阅读者」作为所有产品线定位的体素科技(VoxelCloud)才显得与众不同。「作为一款 AI 影像分析产品,如果想有效地控制诊断质量,就需要可用场景宽广且边界清晰,避免人为因素的影响。正面例子有:适用于所有非增强胸部 CT 的可见异常检测产品、适用于所有眼底彩照的可见异常检测产品。反面例子就是:适用于所有肺结节类病人的产品、适用于所有糖网病案例的产品。」
总而言之,产品需要从影像中得到近似医生撰写的自然语言报告来最大成度降低医生工作量。而为了呈现这简单一步,需要背后的机器学习模型具有人体各器官与组织的位置认知能力和导航能力、对所有可见病理类型在不同位置的检测和识别能力,以及对病灶的定性和量化能力。
「用机器学习的语言描述,我们的 VoxelCloud Retina 眼底照相完整解决方案,就是一个能完成 10 种病灶类型的分类和量化,也能完成 8 种可见疾病的分类的多任务模型。」体素眼科产品线负责人 Joseph 介绍说。
VOXELCLOUD Retina 覆盖的病灶类型与疾病类型
而另一条产品线 VoxelCloud Thorax 胸部 CT 解决方案的负责人则直接向我们展示了一张巨大的列表。
肺部结节特性列表
「如果想要生成一份 CT 结节类病灶报告,肺结节的检测(detection)和定位(localization)某种意义上都是一些预处理工作。完成之后,更关键的工作是分割(segmentation)以及特性描述(characterization)。这份列表是对结节特性的描述,一共包括九个类型超过 30 种特性描述。除了在影像专家的建议下去除了一些冗余外,体素的系统进行了全部有意义特性的描述。除此之外,系统还需要进行精准的肺部分割、肺叶分割、血管和气管的识别,才能理解病灶与周边组织的相对关系。基于上述理解,进一步提供同一病人不同时间随访扫描的对应病灶匹配,加以量化对比,才能最终输出一段完整的结节自然语言描述。每种病灶类型的报告生成过程都是如此。」
这家创立于洛杉矶和上海的人工智能医疗影像公司,从名字就开始展现了他们对于医疗影像领域的抱负。
Voxel 或者说体素,来自于 volumetric pixel 的简称。它是「像素」概念的三维版本,代表了三维空间上数据的最小单位。了解了它的定义,也就不难明白为什么在日常生活里「像素」常见而「体素」不常有了:再高端的相机,拍出来的影像也都是天然二维的,医疗影像几乎是唯一一个原生三维的场景。想要把计算机视觉领域里常见的二维模型用于医疗影像,似乎只有两个选择:把模型升级成三维,或者把图像降级到二维。
体素用名字告诉了我们它的选择。「既然医疗影像天生就是 3D 影像,那么我们还是选择使用 3D 模型解决 3D 问题」,丁晓伟这样解释道。
心包脂肪体积 3D 量化
不用常见的二维计算机视觉模型处理影像截面,而是用三维模型处理影像整体,可以说是选了视觉领域最难啃的骨头之一。当影像的大小随着维度增加而指数级地扩大,「内存有限」这个当下深度学习模型的「阿喀琉斯之踵」被打击了个正着;同时,当识别主体占影像的比例指数级地减小,卷积神经网络引以为傲的按层级抽取特征的能力在明显不足的主体信息面前也无从发挥。
「为了让计算机能够在不耗尽内存的情况下处理一整张不经压缩也不经切割的影响,我们对模型结构进行了很多专门的设计。」丁晓伟提到这个框架时非常兴奋,「我们使用了空间可分解卷积(spatially separable convolution)和深度/广度可分解卷积(depth-width separable convolution)替代了原有的卷积层。」
空间可分解卷积的逻辑是把一个 7 x 7 的卷积核分解成一个 7 x 1 的向量和一个 1 x 7 的向量的乘积,这样原本需要 49 个参数的卷积操作就只需要 14 个参数了。深度/广度可分解卷积则对三维影像的每一层进行二维卷积,然后再对所有的二维特征图进行卷积,形成一个三维特征图。「三维卷积模型非常难以训练,但是在推理阶段比二维逐层处理的速度快二十倍,精确率也更高。一根血管和一个结节的截面可能在二维空间上很难分辨,但是在三维空间里是一目了然的。」
医疗影像处理的其他难点还包括样本不均衡性。抛开影像设备的水平、医生操作水平、数据标注质量等种种参差,就算上述一切完美,我们收集到的数据库里,仍然会有大量影像是未患病的(阴性),少量影像是患病的(阳性)。大量的负样本和大量的容易分类的样本让模型并不能专注于从错误中学习。「为了解决这一问题,我们使用了 Focal Loss 来作为损失函数。」Joseph 介绍道。
Focal Loss 是去年 10 月的 ICCV 最佳学生论文,由 Facebook 人工智能实验室(FAIR)的 Ross Girshick 和何恺明参与提出。这种损失函数旨在从交叉熵出发,通过减少那些容易分类的样本的权重,让模型更专注于难分类的样本。
这份去年 8 月刚刚发布预印版的论文,从新鲜出炉到经历工程试验投入到产业中,用时一年还不到,这对于在引入新事物上审慎到近乎迟滞的、研究往往落后工程技术业界五年的医疗行业来说,不啻于飞速。
「实际上医疗影像领域对深度学习整体的接受速度就很快。因为它确实让前深度学习时代不可能解决的问题变得可解。」丁晓伟仍然以肺结节为例,「上世纪 80 年代以西门子为代表的诸多医疗影像巨头们就组织了大量人力,耗时十年,致力于以手工设计的特征来检测肺结节。然而这样庞大的工程也仅仅能止步于肺结节的检测,无法做好更加细微的结节良恶性风险判断。结节的良恶性是由一些极为微小的特征差别决定的,这很难以语言或手工特征的形式描述,同时规律非常不明显,很难以正向思维进行总结。然而深度学习带来了数据驱动的可能,当模型从无数的真实肺结节样例中抽象出了无法在低维空间进行描述的特征,良恶性、乃至更多的特性描述就变得可能了。」
如果说决定以三维模型、以全新的损失函数解医疗影像问题是方法论上的选择,以「全病种医疗影像阅读」为目标是从满足现实需求的角度进行产品设计,那么「多任务学习」(multi-task learning)则是二者的一个结合。
多任务学习是基于共享表示(shared representation),把多个相关的任务放在一起学习的一种机器学习方法。「(多任务学习)既是一种提高模型表现能力的方法论,也是实现全病种的一种实用的方法,模型客户端部署时受到成本和硬件的限制,需要使用尽量少的模型个数来完成尽量复杂的推理任务。」丁晓伟说。
在眼底照相中,存在近二十个彼此相关的分类任务,选择进行多任务学习之后,先对哪一个任务进行训练就会极大影响训练时间以及模型效果。「实验证明,先学习那些不确定性减少最快的模型获得的效果最好」,Joseph 介绍道。
而在胸部影像领域,体素在进行一些更为大胆的尝试。
用一个可以端到端训练的多任务模型进行所有肺部相关影像诊断工作
「我们试图用一个模型进行所有肺部相关的工作。」丁晓伟画了一张框图:同一个模型,首先共用一个编码器(Encoder)将三维医疗影像压缩成特征向量,然后在两个分支上分别用解码器(Decoder)完成肺叶分割、用 Mask R-CNN 进行结节检测。在完成结节检测的同时,利用获得的球心和半径信息获得 3D 结节 ROI(Region of Interest,感兴趣区域),然后再次基础上分别进行结节分割和结节特性描述。最终,汇总各个分支模型,为每个检测到的结节生成一份自然语言报告:「在左下肺叶发现一处圆形实性磨玻璃混合型结节(2.5mm*4.4mm),边缘平整,有血管穿过、内含脂肪组织,恶性风险 15%。」
肺叶分割与肺结节分割
在用特殊的算法设计解决了算力问题之后,剩下的问题只有一个:数据。想要完成这样一个规模宏大的模型,前提条件是拥有每一张影像的所有信息标注。
「我们就快完工了」,丁晓伟提到。这里的完工,是指建立一个包含了超过 8 万份胸部 CT 全病种精标记数据集。
除了肺癌相关数据之外,体素在其他类型肺部病种上也积累了每种约 3 千份的储备,累计收集了超过 15 万份胸部 CT 数据。此外,还有超过 5 万份带有 5 年随访记录的心脏冠脉造影 CT 数据和超过 420 万眼底影像数据。
一年前的采访中,丁晓伟提到,「体素想做医疗影像界的 ImageNet,把人的各种结构、各类常见病种病理全部交给一个统一模型,让模型首先对影像里『有什么』有一个概念,然后再针对具体的应用开发精校的模型。」如今这个巴比伦塔一样的工作已经展现出了雏形。ImageNet 的出现让复杂的神经网络模型在「势均力敌」的复杂数据集上进行训练,最终将计算机视觉带入深度学习的时代。在医疗影像的世界里,数据集的规模量变引起质变的转捩点,是不是也即将到来呢?
一个拥有全病种阅读能力的计算机视觉系统能够做什么?在技术语言与数字之上,是一个美好的愿景。
如今有超过 50% 的糖尿病患者没有及时进行并发症眼病筛查,因为很难要求内分泌医生具有眼底照相阅片能力。而一个视网膜影像全病种阅读者的存在,让糖尿病为代表的慢性病随访管理,变成基层医院可以完成的任务。
眼底彩照筛查报告生成过程
更进一步,当全病种影像阅读者从 to B 走向 to C,能够覆盖的人群就更为广泛。
如今中国有 6000 万处于视力发育关键时期的 3 岁以下儿童。其中有大约 4% 存在各类视力问题风险。3 岁以下儿童的认知能力尚不足以配合普通眼科医生进行常规视力检查,而全国能够进行专业小儿眼科检查的医生却仅有数千人。一个能从家长拍摄的视频里分析眼球和身体的动作表现是否有异常,发现视力有问题的儿童并及时转诊干预的系统,把儿童视力问题的普查变得可能。
儿童过度斜视与眯眼
以影像为基础,融合多模态数据提供自动转诊能力、提供确诊决策支持、提供初级影像报告,这就是全病种医疗影像阅读者给出的愿景。