本文发表于 IEEE JHBI,提供了一种全新策略以及具体实现来解释医疗图像的神经网络。通过快速生成真实高精度带有病灶的医学图片,用以解释基于常见疾病分类模型以及数据增强。
我们设计了一套轻量级生成模型 Patho-GAN,来快速生成真实高精度的医学图像,并且通过调整病理描述符的参数,可以自由设定病灶种类数量以及位置(代码已开源,欢迎试用)。本工作不但可以从临床角度解释神经分类模型,也可以用于数据增强弥补医学图像训练数据小的痛点。本工作由发表于 2019 年 AAAI 的工作拓展而来,该工作是对医学神经网络可解释性最早的探索之一。
我们提供了一种弱监督方法自动定位与疾病分类相关的病灶并提取病理描述符。我们的轻量生成模型可以在病理描述符上快速生成真实的病变图像。通过调整描述符参数,我们的方法可以自由调节生成图像的病变位置以及程度。虽然深度学习在医疗图像的病变检测上取得了巨大成功,然而,现有的方法几乎都将 CNN 作为黑盒使用,没有进一步揭示做出分类的依据。CNN 缺乏 “可解释性” 严重制约了其在医疗等涉及公众安全的关键领域应用。CNN 可解释性的瓶颈在于网络中有数以百万计的神经元,难以直接和最终疾病分类产生联系。回顾医学的历史,同样的问题也曾一度困扰着人们:自然界的微生物种类是天文数字,这其中仅有一小部分能够感染人类,而对人类致病的就更微乎其微了,如何发现定位其中的致病微生物。微生物学鼻祖之一的罗伯特 · 科赫提出了一套科学验证方法——科赫法则(Koch's postulates),用于将某种病变与特定的病原体建立联系。这一方法随后成为传染病病原学鉴定的金标准。科赫也因此获得了 1905 年的诺贝尔生理学或医学奖。 3. 将提纯后的病菌接种到健康的实验动物之后,如果试验动物表现出同样的症状,并且可以分理出同样的病菌,就可以认为这种病菌和该疾病有直接关系。
考虑到检测医疗图像的 CNN 网络中也往往包含几十万乃至上百万参数。受此方法启发,我们也通过确定极少量的关键参数并研究 CNN 病变检测器的决策依据。 本文首先提出了一种方法用来在神经网络中定位少量关键神经元。因为这些神经元直接和疾病的分类相关,我们可以从他们的编码信息里提取出病理描述符。接着遵循循证医学(Evidence based medicine)的金标准, 科赫法则(Koch's postulates),我们发现自动提取的病理描述直接对应着图像上的病灶信息。为了验证这一点,我们设计了一套轻量级生成模型 Patho-GAN。通过复现出与临床判断一致的带有相关病灶或者症状的医学图片,我们认为对医学分类网络做出一定的解释。
本工作由北航,理研,东京大学,中科院宁波材料所合作完成并发表于 IEEE JHBI(Journal of Biomedical and Health Informatics),通信作者为北京航空航天大学的陆峰教授。本论文以糖尿病视网膜病变(Diabetic Retinopathy,简称 DR)为例进行论述,而这一策略也可以直接用于解释其他疾病并生成对应的医学图像。1. 提出「病理描述符」,能够自动编码与 DR 诊断相关的少量关键神经元,该描述符可以描述多种不同类型的病灶; 2. 提出了从「病理描述符」恢复病变图像的轻量快速的生成网络 Patho-GAN,能够快速合成真实的病变,这一方法也可以用于医学数据增强; 3. 通过「病理描述符」和 DR 病变的对应关系,展示了 CNN 检测器的决策依据,增进了医生与 AI 之间的相互理解。 图 2:受柯赫准则启发,本论文对病变证据进行发掘、提取、重现 1. 首先在经典 CNN 病变检测器中间层提取「病理描述符」,并利用可视化方法来定位病变(图 2.a); 2. 模仿科赫法则中在无数微生物中分离病原体这一过程,本方法从百万级神经元中定位到数千维直接参与疾病诊断的参数并提取出「病理描述符」(图 2.b); 3. 科赫法则接着将分离的微生物接种到健康生物体并观察产生的疾病症状,同样,本方法训练一个生成器 Patho-GAN,利用输入的「病理描述符」、血管分割图来合成病变眼底图(图 2.c, d); 4. 如果眼底图复现了相应的病变,就可以确认「病理描述符」与病变的直接对应关系。在 2019 年 AAAI 的工作中也确认了病理描述符所产生的病变同样也是眼科医生用于诊断的依据。这一点同样验证,神经网络用于判断病变程度的证据与眼科医生用来诊断的指证确实一致。首先我们设计了一种方法自动提取分类神经网络中和疾病分类的病理描述符。考虑到该描述符直接记录着病灶包括位置等具体信息,这一方法也相当于一种弱监督学习策略。在这篇工作里,我们以 Kaggle 上在 2015 年糖尿病眼底图检测的冠军之一 o_O 为研究对象来探讨 CNN 的可解释性。这个方法是一个轻量级 CNN,能够自动对眼底图的 DR 程度分为 5 级。 仿照 Zeiler 和 Fergus 的基于反向传播的 CNN 可视化方法,我们在「DR 检测器」后接上了一个「激活网络」,用对称的结构来还原每个卷积层中被激活的神经元。具体来讲,如图 3 所示,为每一个卷积层构造一个对应的转置卷积层,为每一个池化层构造一个对应的反池化层,「激活网络」和「DR 检测器」共享权重。使用这样的网络架构,「激活网络」某 #X 层的结果是从第 #9 层的神经元激活结果翻译回来的,代表了「DR 检测器」第 #X 层的神经元对第 #9 层的贡献。 图 4 放大对比了 #0 层输入的多种病变眼底图和激活网络 #0 层输出的「激活图」。「激活图」中展示的区域,正是眼科医生诊断的病理依据。 虽然在训练 CNN 检测器时没有病变区域的监督信息,仅仅使用了 “病变图 - 严重程度” 这样的图像级别标注,但它能自动学到识别各种病变的特征,并且主动关注这些区域。输入的病变图经过一层层卷积,保留了病理特征,丢弃了血管等正常生理特征。由 CNN 对病变的选择性,可以窥见 CNN 做出决策的证据。 有趣的是,图 5 中展示的病变眼底图、激活图又表明,CNN 对于大面积的病理并不感兴趣。相反是识别出了图片中的小病变。这是因为实验使用的「DR 检测器」仅根据动脉瘤等小病变已经足以完成分级任务,无需识别大面积病变。 图 5:对于非常大的病变区域(图中的渗出和出血),激活图并不明显 有了上述观察,我们根据病变参考图的特征层和激活层,定义了「病理描述符」,用于代表每一个病变区域的神经元激活模式。 如图 6 所示,「病理描述符」= 病变位置 + 病变尺度 + 病变特征。 首先,对最后 #0 层的激活图经过高斯模糊、二值化,即可找到每个病变的边界蒙版。这一步操作即可将不同的病变分离开来,获得病变的位置和尺度(坐标和宽高)信息。 然后,使用边界蒙版,在激活网络的中间层 #1 和 #2 中截取出一些特征块、激活块,连同他们的位置、尺度,形成病理描述符(图 6)。 这些病理描述符编码了完整的病变特征,可以为病变眼底图的合成提供关于病变的所有信息。 柯赫准则中,将不可见的纯化病菌注射到健康动物体内,可以使其患上相应的疾病。类似地,我们设计了一种轻量级快速生成网络 Patho-GAN。这个生成网络可以重现「病理描述符」中的特征、说明 DR 检测器提取出的「病理描述符」确实包含了病理信息。 本节的目标是训练一个「生成器 G」,来合成病变图。如图 7 所示,G 的输入为「病理描述符」、血管分割、噪声。其中,病变信息全部来自「病理描述符」。这样,通过修改输入的「病理描述符」,即可生成与之对应的各种各样的病变眼底图。图 7:病变眼底图合成网络 Patho-GAN 的架构 生成器的训练过程中,我们利用三种损失函数来进行监督训练: 1. 生成对抗损失(Adversarial Loss):设立判别器 D 来与生成器 G 进行对抗训练,让合成图无法与真实图像区分; 2. 感知损失(Perceptual Loss):通过 VGG 特征来约束合成图和真实图的距离,让合成图和真实图拥有相似的生理、病理细节; 3. DR 分级损失(Severity Loss):通过 DR 检测器来约束合成图的 DR 分级,让合成图与真实图具有相同的医疗意义。 图 8 展示了 Patho-GAN 在 IDRiD、Retinal-Lesions、FGADR 三个数据集上的合成效果。通过从真实图像中提取病理描述符,再由 Patho-GAN 来复现原图,合成图像中就会包含了真实图像中应有的多种病变。 「病理描述符」针对每个病变单独存储,这种设计使其应用变得容易操控。对「病理描述符」的筛选、复制、修改,即可实现控制合成病变的数量控制、位置控制。具体操控效果如图 9 所示。 位置控制:通过修改「病理描述符」中的位置坐标,即可做到对病变的重新布局,图 9 前两行展示了病变种类相同、布局不同的眼底合成图。 数量控制:通过删除、复制「病理描述符」,可以做到对合成病变数量的控制。图 9 后两行展示了三种不同病变数量的眼底合成图。图 9:对病变位置和数量的操控。图中 Layout 展示了病理描述符的分布,同样的颜色代表两个描述符有相同的病变特征,只有位置不同 图 10 展示了一个非常有趣的效果:如果合成的时候输入空的「病理描述符」,则会合成无病变的眼底图,实现从真实眼底图像中消除病变的效果。位置控制、数量控制进一步确认了「病理描述符」与病变的直接对应关系,说明「DR 检测器」赖以判别的特征,与医生诊断时寻找病变的准则是一致的。根据 DR 的临床诊断标准,微动脉瘤等病变的数量是确定 DR 严重分级的一个重要的指标。我们使用「DR 检测器」针对多种病变数量的合成眼底图进行测试。如图 11 所示,当合成图中有更多病变的时候,「DR 检测器」给出的严重程度也会相应提升。这说明「DR 检测器」的表现与医学解释是一致的。 图 11:病变数量增加时,DR 检测器给出的严重程度也会相应提升 图 12 展示了,Patho-GAN 与同类合成方法的对比。从合成病变、生理细节的真实性上看,Patho-GAN 都更胜一筹。FID、MSE 等定量指标也表示,Patho-GAN 合成的图像,在分布、距离上都更接近真实数据集。 经过本文的探索,我们对「DR 检测器」的工作原理有了更加深入的了解,同时我们提供了一种快速生成指定病灶的图片方法,可以有效用于医学图像增强。1. 该「DR 检测器」在直接监督的情况下,学会了关注病变。通过科赫准则的方式,我们验证了「DR 检测器」中包含有与病变直接相关的特征,这些特征用来进行分类。 2. 该「DR 检测器」无法观测到大面积病变,通过小的病变已经可以为 DR 严重程度分级。本文提供的 Patho-GAN 可以用来直观展示「DR 检测器」“看到”的眼底图像,如图 13 所示,在「DR 检测器」“眼”中,只有小的病变。 3. 该「DR 检测器」能够感受到多种类的病变。Patho-GAN 合成的图像表明,感受到的病变包括:微动脉瘤、出血、硬性渗出、软性渗出等与 DR 诊断相关的病变种类。 4. 该「DR 检测器」与医疗解释一致,当病变数量变多时,预测的 DR 等级也会升高。 图 13:从真实图像中提取病变描述符,然后用 Patho-GAN 进行可视化,仅有小面积的病变被合成出来。通过 Patho-GAN 可以直观感受到「DR 检测器」“看到”的眼底图像 综上所述,本文提出了通过激活神经元来检测和编码病变特征的方法,该过程与决策证据紧密相关。 本文使用一种基于 GAN 的方法来将病理描述符可视化,合成带有特定病变的眼底图,且病变合成的方法具有一定的可操控性,合成的结果真实性优于同类方法。同时也为 CNN 的可解释性提供了一种研究思路,可激发更一般的探索。