张驰名,王庆凤,刘志勤,黄 俊,陈 波,付 婕,周 莹
(1.西南科技大学 计算机科学与技术学院,四川 绵阳 621010; 2.绵阳市中心医院 放射科,四川 绵阳 621010)
胸部病变十分常见且种类繁多,已成为影响现代人身体健康的主要威胁之一。X射线(CXR)是目前最常见的放射检查类型,快捷、成本较低的优势使其成为多种胸部疾病(如肺炎、气胸、肿块等)筛查和诊断的主要方式。据世界卫生组织(WTO)相关报告,每年约有4.5亿例肺炎病例记录在案,约有400万人死于该病,占全球患病死亡总人数(5 700万人)的7%[1],而肺癌更是全世界发病率和致死率最高的恶性肿瘤之一,我国肺癌患者的5年生存率仅为16.1%[2]。国内外专家主要通过对胸部病症的早诊早治来降低死亡率,但胸部X射线阅读需要极强的专业知识,目前主要依赖于放射科医师人工观察。由于胸部病理特征的多样性以及放射科医师的潜在疲劳或缺乏经验,在实际中误诊不可避免。因此,亟需开发胸片辅助诊断算法以支持放射科医师临床工作,从而及时有效地对胸部病症进行评估。
近年来,医学人工智能作为一种新兴技术,在全球范围内引起了广泛关注[3]。计算机辅助诊断(Computer Aided Diagnosis,CAD)的改进在许多生物医学领域产生了重要影响,如皮肤癌诊断[4]、胎儿超声标准平面检索[5]和肺结节检测[6-7]等。目前,已有学者将CAD技术应用于胸部X片分类任务。文献[8]将预训练的全卷积网络作为特征提取器,仅训练全连接分类层,以评估多种卷积网络的诊断性能,结果表明,ResNet[9]网络性能最佳。文献[10]分析14个病理标签相关性问题,使用DenseNet[11]和长短期记忆(LSTM)网络分别作为编码器(Encode)和解码器(Decode),从而学习病理标签之间的依赖关系。文献[12]提出CheXNet网络模型,其使用迁移学习微调DenseNet-121变体[11]实现了更好的多标签病变诊断。随后,文献[13-14]在文献[8]发布的官方数据划分标准下进行比较评估,文献[14]提出的定位感知网络结合X线中的病理空间信息,在14种疾病诊断中实现了最优的结果,其平均AUC值达到0.807。
上述方法取得了较好的结果,但是仍存在一些不足。首先,不同于自然图像的粗粒度识别,胸部病变区域与其余正常区域之间的特征辨识度低,其占比小、位置多变,已有方法通常使用经典卷积网络架构(ResNet[9]、DenseNet[11])独立处理多个特征图,无法构建特征通道间的相关性,难以捕捉最具代表性的特征用于胸部疾病的细粒度分类。其次,胸部疾病样本具有不平衡性,简单易分的负样本(无疾病样本)太多,会主导梯度的更新方向,使得模型优化方向倾向于无疾病样本的学习,即无效学习,从而导致方法只能分辨出有无疾病,无法分辨具体的疾病种类。此外,疾病间存在特征差异性,学习难易程度不同,上述方法使用二元交叉熵(Binary Cross Entropy,BCE)作为损失函数,无法解决正负样本不平衡、简单与困难样本学习难易程度不同的问题。
在计算机辅助诊断中,通过病灶区域定位等视觉证据支持疾病分类结果,是临床诊断的重要组成部分,其可降低诊断的假阳性率。但是,胸片上的自动病症区域检测具有较大的难度,常依赖于自然语言处理(Natural Language Processing,NLP)技术将病理报告转换为疾病标签,或者通过医学专家人工阅读和标注。前者无法从报告中获得病变区域的像素级标签信息,后者获取大规模高质量的病灶边界注释时代价高昂。很少有胸部X线数据集对病变区域进行标释(ChestX-Ray14数据集[8]仅有少量病灶边框注释),因此,可将计算机辅助诊断任务转换为弱监督学习[15]问题,即仅使用疾病类标签训练网络,通过弱监督学习实现病变区域的可视化定位。
本文提出一种基于深度学习的胸部疾病诊断方法。在ResNet50[9]的基础上引入压缩激励模块[16],显式地建立特征通道之间的相互依赖关系,通过全局信息选择性地增强与病理模式高度相关的重要特征,同时压缩无用信息以减少特征冗余。使用全局最大-平均池化层保留更多的病理特征信息,采用焦点损失[17]降低易分类样本的权重,使得模型更专注于困难样本的学习。在此基础上,通过梯度加权类激活映射(Gradient-weighted Class Activation Mapping,Grad-CAM)[18]突出显示网络病变诊断时最依赖的关键性病变位置,以实现弱监督学习的病症区域定位。
2015年,BAR等人[19]将深度学习技术应用于胸部X射线的辅助诊断,研究结果验证了卷积网络在胸部X射线智能诊断中的可行性以及巨大的潜力,但因缺乏病理学家的高质量注释,BAR等人仅能在433张X线图像上进行实验,远不能满足深度学习的数据量要求。2017年,美国国立卫生研究院(NIH)发布了ChestX-Ray14[8]公共胸部X射线数据集,为医学图像的发展提供了有力支持。该数据集共收集了30 805例患者的112 120张胸片正面视图,图片大小为1 024×1 024。每一幅X线图片都标记了14种常见胸腔疾病的一种或多种类型:肺不张,心脏肿大,积液,浸润,肿块,结节,肺炎,气胸,胸实变,水肿,肺气肿,纤维化,胸膜增厚,疝气。特别地,上述图像标签并非直接来自放射科专家手工注释,而是通过自然语言处理技术挖掘相关放射学报告生成,其准确性高于90%。
表1所示为数据集中14种疾病的分布情况(患病率=包含该疾病的图像数/总图像数),个别病理的患病率较低,如肺炎、疝气等,样本患病率差异较大,在0.20%~17.74%之间。因此,训练集中的类标签噪声大,类别不平衡,给疾病分类任务带来较大的难度。如图1所示,有880张X光片具有放射科医生手工标注的病变区边界框。在本文实验中,仅使用疾病类标签训练和评价模型性能,边界框只用于病灶区域定位的可视化评估。
表1 ChestX-Ray14数据集14种病变标签分布
图1 8种胸部常见疾病的X射线图及病变区域
但是,目前大部分研究[10,12]通过随机分割数据集进行模型训练、验证和测试对比,这存在一定问题,因为在ChestX-Ray14数据集中,每个患者平均拥有3.6张X线图片,同一患者的样本可能同时出现在训练和测试集中,从而引入潜在的过拟合问题。此外,由于类的不平衡性,网络在划分不同的2组数据上存在显著的差异性,使得性能对比存在难度[14]。因此,文献[8]进行了官方数据集的划分工作,其将数据集在患者层面上分割为70%训练集、10%验证集和20%测试集,确保同一患者的图像在三部分中不交叉。为与已有方法[8,13-14]进行公平的定性比较,本文使用文献[8]公开的官方数据分割标准。
如图2所示,本文胸部疾病诊断网络结构分为压缩激励、全局最大-平均池化层、焦点损失以及梯度加权类激活映射(Grad-CAM)等部分。
图2 胸部疾病诊断网络结构
卷积核作为卷积神经网络的核心,通常是在局部感受野上将空间信息和特征维度信息进行聚合[20]。本文针对胸部病变细粒度识别的问题,引入卷积层通道维度间的信息学习,在ResNet50网络中嵌入压缩激励模块,以对特征通道间的相关性进行建模从而提升模型的表征能力。具体而言,网络通过学习的方式来自动获取每个特征通道的重要程度,然后依照该重要程度提升有用的特征并抑制对当前任务用处不大的特征,使网络的注意力集中于显著性病理特征。压缩激励模块示意图如图3所示。
图3 压缩激励模块示意图
压缩激励模块的通道间注意力机制计算过程分为3步:
1)特征压缩。挤压操作将跨空间维度的特征图进行聚合,生成一个通道描述向量z,其表征着在特征通道上响应的全局分布。具体而言,将卷积核提取的原始特征图Uc进行全局平均池化,使H×W×C的特征图压缩为1×1×C的向量,该向量具有全局的感受野,其维度与输入的特征通道数相匹配,计算公式如下:
(1)
其中,Uc(i,j)表示第c个特征图中(i,j)位置处的激活值,W、H、C分别为特征图的长、宽、通道数。
2)激励。激励操作是基于通道之间的依赖关系对每个通道进行权值评比的一种筛选机制。如式(2)所示,将特征压缩的全局特征向量z通过全连接层自适应学习各通道间的重要程度,然后采用sigmoid激活函数层,将输出值s控制在(0,1)之间。
s=Fex(z,W)=sigmoid(W2×Relu(W1×z))
(2)
3)特征重标定。特征重标定将激励操作的输出权重(每个特征通道的重要性)在原始特征图上逐通道加权,从而对通道维度上的原始特征进行重标定,如式(3)所示:
(3)
全局最大池化鼓励网络只关注1个区别性特征区域,而全局平局池化更鼓励网络识别整个特征对象区域,2种特征信息在对医学病理特征进行提取时相辅相成。因此,在特征空间池化方面,本文提出一种全局最大-平均池化层以提取特征图的空间域信息,使网络在病理特征图的空间压缩特征映射方面表现更好,减少特征丢失现象。图4所示为全局最大-平均池化层示意图,将特征图Uc分别进行全局平均池化和全局最大池化后实现线性组合,如式(4)所示:
(4)
图4 全局最大-平均池化层示意图
在ChestX-Ray14的多标签诊断中,本文为每张X线图片定义一个15维的标签向量Y=[Y1,Y2,…Yc],C=15,每个维度代表一种疾病,Yc表示是否存在相应的疾病,值为1表示患有该疾病,值为0则表示不患病。Y15代表无任何疾病。
已有研究大都选择二分类交叉熵作为损失函数,如下:
(5)
在医学图像中,较少的疾病样本却包含了大量重要的病理信息,负样本(无疾病样本)过多使网络不能充分学习到病变样本的病理信息,其次,由于疾病特征的多样性,疾病间的学习难易程度不同。因此,如式(6)所示,本文首先在原有二分类交叉熵的基础上添加权重因子γ(γ>0)减少易分类样本的损失,使网络更关注易错分的样本,此外,通过加入平衡因子α,以平衡正负样本本身的比例。
(6)
根据文献[17],α取值为0.25,γ取值为2。
Grad-CAM可突出显示X线中网络用于诊断决策时所依赖的关键区域,实现弱监督的病症区域定位。在卷积网络中,深层次的卷积层可以捕捉到更高层次的视觉结构,且保留在全连接层中丢失的空间信息。如图2所示,Grad-CAM通过最后一个卷积层的特征图梯度信息来理解每个神经元对于网络决策的重要性。首先,将图像输入网络并提取最后一个卷积层输出的特征图,通过类别输出结果yc对卷积层特征图进行求导,计算特征图k对类别c的权重,如式(7)所示:
(7)
将所有特征图与对应类别的权重进行加权求和,利用Relu激活函数,只考虑对类别c有正影响的像素点,得到类别c的热力图,如下:
(8)
原始X线图像尺寸为1 024×1 024,本文将图片缩放至299×299作为网络输入,训练过程中应用随机水平翻转的数据增强方式,采用Adam为优化函数,在验证集损失达到稳定后停止训练。初始学习率设置为0.001,每10个epoch速率减小10倍。网络搭建和训练基于Pytorch框架。
为了更客观、准确、全面地评估算法的诊断性能,本文选用国际上常用的受试者操作特征曲线(Receiver Operating Characteristics,ROC)作为每种疾病的评判指标,根据ROC曲线下面积(AUC)对每种算法的分类性能进行定量分析。ROC曲线越靠近左上角,其AUC值越接近1,说明算法的诊断性能越好。
图5直观地比较了本文算法和文献[8,13-14]算法对14种疾病类别的AUC值变化情况,表2进一步显示了4种算法对每种疾病类别的AUC值以及所有类别的平均AUC值情况,其中最优结果加粗表示。从中可以看出,在ChestX-Ray14数据集上,本文算法对14种疾病的诊断精度均超过3种对比算法,平均AUC值达到了0.830,其中,肺气肿、胸膜增厚、疝气的性能提升较大,原因是心脏肿大、气胸是大病灶类典型疾病,本文算法分类性能表现较好,其AUC值均达到90%以上。对于一些难度更高的小病灶区域病变诊断(如结节、肿块等),相对于对比算法,本文算法的AUC值也有明显提升,即其可学习到多尺度、区别性的细粒度病理特征。但是,本文算法对肺炎疾病的AUC值提升较小,可能是由于肺炎的病理特征复杂以及病例样本缺乏,仅有1.3%的样本中标记有肺炎。
图5 14种胸部疾病诊断AUC值对比
表2 不同算法在ChestX-Ray14数据集上的AUC值比较
在医学辅助诊断中,网络的可解释性十分重要。感兴趣区域可视化可为网络预测结果提供相应的视觉支持,有助于建立临床医生对辅助诊断的信任,使放射科医生能够提供更快、更准确的诊断。本文通过Grad-CAM生成弱监督的病灶区域热图,解释网络进行病变诊断时最依赖的关键性病变区域,并根据放射科医生标注的真实边界框进行可视化评估。图6右图为8种胸部常见病变的Grad-CAM热力图,左图为医生标注病变区域。右图中深红高亮区域(详见《计算机工程》官网电子稿)非常接近专业医生标注的病变区域(左图边框),验证了网络病变检测的优异性,与理论结果相吻合。具体而言,对于心脏肥大、肺炎等大病灶区域疾病,网络感兴趣区域覆盖广泛、准确,如图6(b)的心脏肿大疾病,放射科医师对整个心脏进行标释,而网络捕捉到了更精确的病变区域。对于肺不张、肿块、结节等小病灶区,网络同样很好地定位到病灶区域,如图6(g)深红高亮区域准确包裹整个结节。此外,如图6(e)所示,即使存在因病人姿势或拍摄条件带来的图像扭曲问题,网络仍能准确检测到病变区域,表明本文算法具有良好的鲁棒性和泛化性。由于本文算法在训练中没有使用任何边界框,却能够提供与疾病分类相应的视觉解释,表明算法在疾病诊断与区域定位方面具有较好的解释能力,能够满足临床应用的潜在需要。
图6 8种胸部常见病变的Grad-CAM热力图
本文提出一种胸部14种疾病细粒度诊断算法,同时进行基于弱监督学习的病症区域定位。通过Grad-CAM生成病变区域显著性热力图,为网络预测结果提供可视化支持。实验结果表明,该算法的胸部疾病诊断性能优于3种对比的深度学习方法。下一步将利用有限的边界框研究病灶区域的准确定位问题,将非图像信息,如性别、年龄等与X线图像信息相融合以进行网络学习。