回顾医学的历史,病菌感染曾一度困扰着人们:致病微生物也是看不见、摸不着的。微生物学鼻祖之一的罗伯特·科赫提出了一套科学验证方法——科赫法则(Koch's postulates),用于将某种病变与特定的病原体建立联系。这一方法随后成为传染病病原学鉴定的金标准。科赫也因此获得了 1905 年的诺贝尔生理学或医学奖。
这套准则分为四条:
1. 每一例患病动物体内都可以分离到该病菌。
2. 该病菌可以在体外培养数代。
3. 培养了数代的细菌可以通过接种,使健康的实验动物患上同样的疾病。
4. 被接种的动物中可以分离到同样的病菌。
自然界的微生物种类是天文数字,这其中仅有一小部分能够感染人类,而对人类致病的就更微乎其微了,科赫法则成为确定这些病原体的金标准并成为现代医学基础之一。检测医疗图像的 CNN 网络中也往往包含几十万乃至上百万参数。受此方法启发,可以使用类似的方法论来确定极少量的关键参数并研究 CNN 病变检测器的决策依据。
论文 Pathological Evidence Exploration in Deep Retinal Image Diagnosis 以糖尿病视网膜病变为例,展示了 CNN 检测器的决策依据,增进了医生与 AI 之间的相互理解。
论文:Pathological Evidence Exploration in Deep Retinal Image Diagnosis
论文链接: https://arxiv.org/pdf/1812.02640.pdf
具体来说,本文首先在经典 CNN 病变检测算法中提取病理描述符,并利用一种 CNN 的可视化方法来定位病变(图 1.a);模仿科赫法则中在无数微生物中分离病原体这一过程,本方法从百万级神经元中定位到数千维直接参与疾病诊断的参数并提取出描述符(图 1.b);科赫法则接着将分离的微生物接种到健康生物体并观察产生的疾病症状,同样,本方法训练一个基于 GAN 的生成器,通过输入病理描述符中来合成眼底图(图 1.c, d),如果眼底图复现了相应的病变,就可以确认其与病理描述符的直接关系。
病理描述符的提取
本文以糖尿病视网膜病变(Diabetic Retinopathy,简称 DR)为例。全球范围内,有超过 4 亿糖尿病患者。根据 2016 年美国的统计,约有 40%-45% 的患者会发展出 DR 的症状。这种病变通常根据视网膜眼底图来进行诊断。DR 患者的眼底图上会出现不同程度的微动脉瘤、出血、渗出等病变。
Kaggle 于 2016 年举行了 DR 眼底图检测的竞赛。本文使用的冠军算法中的一种:o_O(Antony 2016)。仿造 Zeiler 和 Fergus 的 CNN 可视化方法,我们在检测器后接上了一个激活网络,用对称的结构来还原每个卷积层中被激活的神经元。
具体来讲,为每一个卷积层构造一个转置卷积层,为每一个池化层构造一个反池化层,激活网络和检测网络共享权重。使用这样的网络架构,激活网络某一层的结果是从 #9 层的神经元激活结果翻译回来的,一定程度上代表了这一层的神经元对 #9 的影响。
图 4 将输入的眼底病变图和输出的激活图进行放大对比。输入的病变图经过一层层卷积,保留了病理特征,丢弃了血管等正常生理特征。由结果对病变的选择性,可以窥见 CNN 做出决策的证据。虽然在训练 CNN 检测器时仅仅使用了「病变图-严重程度」这样的图像级别标注,它仍能学到各种病变的特征,并且主动关注这些区域。
接下来,根据病变参考图的特征层和激活层,定义一个病理描述符,用于代表每一个病变的信息。首先,对最后的激活图其进行阈值处理,得到二值掩码图,用于指示病变的位置信息。然后,通过寻找最大连通区域,可以得到每个病变的边界框。这一步操作即可将不同的病变分离开来。最后,使用边界框,在特征网络和激活网络的中间层中截取出一些特征块、激活块,将它们作为病理描述符(图 3)。这些病理描述符编码了完整的病变特征,可以为病变眼底图的合成提供关于病变的所有信息。
病变眼底图的合成
柯赫准则中,将不可见的纯化病菌注射到健康动物体内,可以使其患上相应的疾病。类似地,本文使用 GAN 来重现病理描述符中的特征、说明 DR 检测器提取出的病理描述符确实包含了病理信息。
本节的任务是训练一个合成病变图的生成器。生成器以血管分割图、噪声向量为输入,通过一个 U-Net (Ronneberger, Fischer, and Brox 2015) 结构来合成出包含特定病变的眼底图。
训练生成器的时候,使用的数据集是正常眼底图和它的血管分割图。而病变信息,全部来自于之前提取出的病理描述符。计算 Loss 时,设置了多个子网络来达到不同的目标。
子网络 1:判别器网络
判别器子网络判别一张图片是真实图还是合成图。进而计算出「生成对抗 Loss」,使生成器和判别器相互竞争,增加合成眼底图的真实性。对于生成器、判别器,有 。
子网络 2:视网膜细节网络
视网膜细节网络使用 VGG 网络来提取健康眼底图与合成眼底图的特征,做差得到「视网膜细节 Loss」,让合成图像的特征与其接近,保证合成图片的生理细节。用来代表 VGG 特征提取函数,则视网膜细节 Loss 为 。
子网络 3:DR 检测网络
DR 检测子网络用来计算最重要的「病理 Loss」,使合成的眼底图中出现病变。
计算病理 Loss 的时候,将合成的病变图输入到 DR 检测器网络中,从想要合成病变的地方截取出特征块,与病理描述符中的相应特征块进行对比、做差即可得到合成病变与真实病变的差异。利用病理 Loss,能够让合成图在特征层的与病变相关的神经元激活,从而保证病变的复现。
使用代表合成图的特征块,用代表描述符中的特征块,则病理 Loss 为。 计算过程中使用了 Gram 矩阵来保留样式而非内容:。
合成结果
在测试阶段,文章使用了 DRIVE 数据集 (Staal et al. 2004) 作为正常眼底图,使用 STARE (Hoover, Kouznetsova, and Goldbaum 2000) 和 Kaggle 中的图像作为病变参考图,进行了多组实验。
图 6 是使用不同的病变参考图来合成出的结果。根据专业眼科医生的评估,前两列的微动脉瘤合成较好,第三列合成的激光瘢痕与参考图一致,不过第四列合成的硬性渗出有些欠真实。
为了进一步说明合成结果的先进性,我们将本文方法与 Zhao 等人的 Tub-sGAN 生成的图片随机混合,并组织了 5 位专业的眼科医生,对其进行双盲评测。对于每幅合成图像,医生为其进行三个评分:1. 眼底图的真实性,2. 合成病变的真实性,3. DR 的严重程度(评分范围是 1-10,得分越高越好)。最后收集到对 560 组评分,其平均值如表 1 所示。本文方法在合成的真实性上有明显优势。
病理描述符针对每个病变单独存储,这种设计使其应用变得容易操控。对病变的筛选、复制均可以通过对病理描述符的操作来实现,并可以进一步做到数量控制、合成病变的位置控制。具体操控效果如图 7 所示。
本文的生理细节 Loss,选用 VGG 来进行高层特征的计算,而非直接使用 L1 Loss,能够正确的保留视盘边界等生理细节。与 Zhao 等人的 Tub-sGAN 不同,本文的病理 Loss 作用在病变局部,不会影响生理细节的正常合成(图 9)。
总体来看,本文的合成方法仅仅使用了参考图中的病变特征,忽略了参考图的整体色调、外观。若在此合成方法之后再增加一个 Deep Photo Style Transfer (Luan et al. 2017) 风格迁移,则会更进一步增加参考图与合成图在外观上的相似程度(图 10)。
总结
本文提出了通过激活神经元来检测和编码病变特征的方法,该过程与决策证据紧密相关。
本文使用一种基于 GAN 的方法来将病理描述符可视化,合成带有特定病变的眼底图,且病变合成的方法具有一定的可操控性。合成的结果得到了医生的认可。
文章为 CNN 的可解释性提供了一种研究思路,可激发更一般的探索。