胸部x射线分类-一个多标签和细粒度的问题
摘要
ChestX-ray14数据集在现有文献中被认为是一个通用的图像分类问题.这个特定的数据集具有以下特性:1)许多肺病理在视觉上是相似的;2)单次扫描(多个标签)中可能出现大量疾病,包括肺癌、肺结核和肺炎。3)正常实例数量远远多于异常(不平衡数据)。这些特性在医学领域很常见。现有文献使用最先进的DensetNet/Resnet模型进行转移学习,其中网络的输出神经元针对单个疾病进行训练,以满足每张图像中多个疾病标签的需要。然而,在本文中我们提出了一种新的基于softmax概念的误差函数(Multi-label softmax Loss, MSML)来解决多标签和数据不平衡的问题。我们设计了基于细粒度分类方法的卷积深度网络,并结合了MSML。我们已经在各种网络骨干上评估了我们提出的方法,并在ChestX-ray14数据集上展示了AUC-ROC评分的性能改善。提出的误差函数为提高更宽医学数据的性能提供了一个新的方向
1.介绍
胸部x光检查是最常用的放射学检查之一,用于筛查肺部疾病,x光可以以最小的程序步骤执行。尽管如此,每次扫描都能发现多种可疑疾病,如肺结核、肺炎等。计算机辅助检测与诊断(CADx)一直是医学研究的热点。胸部x光的计算机辅助设计有可能成为放射科医生的一种经济有效的辅助工具。人工智能和机器学习的最新进展表明,深度学习技术在解决各种x射线分析任务方面具有优势,包括图像分类、基于NLP的分析和本地化。深度学习的数据驱动特性得益于CT、MRI、x射线等可公开获取的医学影像数据量的不断增加。然而,将一般图像分类任务中的直接转移学习应用于胸部x线乃至更广泛的医学成像领域的肺部疾病检测,存在一些挑战,可能会阻碍这种改进。首先,与ImageNet中的类别不同,ImageNet中的许多类别来自WordNet的不同分支,肺x射线中大量病理之间的高度相似性很难解释和区分.其次,在一次医学扫描中来自各种潜在病理的模式要求模型学习大量可能的标签集进行预测,这些标签集的大小与标签空间的大小成指数关系(标签数为
C
C
C,标签集预测值为为
2
C
2^C
2C).第三,像标准迁移学习方法那样,仅仅使用二元交叉熵损失的sigmoid,不能充分考虑疾病标签之间的类不平衡和压倒性的正常样本等问题.这些挑战推动了对创新学习机制的需求,这种机制既要考虑不同类之间的细微差异,也要考虑任务的多标签性质.
本文介绍胸部x线检查肺部疾病的两项贡献:
1. 首先,我们对这个问题提供了一个细粒度的视角,其中细粒度图像分类被定义为对视觉上相似的子类别进行分类的问题.这促使我们从细粒度分类领域探索和重新适应双线性池化方法.
2.其次,针对多标签学习的特点,提出了一种多标签SoftMax损耗(MSML)神经网络.我们进一步将MSML的思想与双线性池化相结合,提出了一种在深度学习环境下进行多标签学习的新机制.
2.方法
令 Y = { 1 , 2 , … , C } Y =\{1,2,…, C\} Y={1,2,…,C}为标签的有限集, T r a i n = { ( i n p u t n , y n ) } n = 1 N Train = \{(input^n, y^n)\} ^N_{n=1} Train={(inputn,yn)}n=1N为训练集,其中 i n p u t n input^n inputn为第N个输入, y n y^n yn为对应的标签。标签 y ∈ { 0 , 1 } C y∈\{0,1\} ^C y∈{0,1}C,如果有第c个标签则 y c = 1 y_c = 1 yc=1,否则为0. x ∈ ( X = R d ) x∈ (X=\mathbb{R}^d) x∈(X=Rd)为d维特征向量的输入空间,我们的目标是学习一个带有参数 θ θ θ, h θ : R d → R C h_θ:\mathbb{R}^d \to \mathbb{R}^C hθ:Rd→RC的多标签假设,以便准确地输出预测到每一类.
2.1多标签学习损失
假设在训练集上的误差函数定义为
E
=
∑
i
=
1
N
E
i
E = \sum_{i=1}^NE^i
E=∑i=1NEi,其中
E
i
E^i
Ei为假设在第
i
i
i个输入样本上的误差,在分类层使用sigmoid作为激活函数(
s
i
g
m
o
i
d
(
.
)
=
1
1
+
e
x
p
(
.
)
sigmoid(.)=\frac{1}{1+exp(.)}
sigmoid(.)=1+exp(.)1),
E
i
E_i
Ei可以定义为
E
i
,
s
i
g
m
o
i
d
=
−
∑
c
=
1
C
(
y
c
i
l
o
g
(
z
c
i
)
+
(
1
−
y
c
i
)
l
o
g
(
1
−
z
c
i
)
E^{i,sigmoid}=-\sum_{c=1}^C(y_c^ilog(z^i_c)+(1-y^i_c)log(1-z^i_c)
Ei,sigmoid=−∑c=1C(ycilog(zci)+(1−yci)log(1−zci),其中
z
c
i
z^i_c
zci表示输入特征
x
i
x^i
xi在第
c
c
c类上的
s
i
g
m
o
i
d
sigmoid
sigmoid输出(范围在[0,1]内).在训练过程中,可以直接采用随机梯度下降(SGD)等优化方法,从多标签标注中进行学习。
我们的目标是使模型
h
θ
h_θ
hθ的训练集误差最小,为了研究反向传播的梯度,我们使用链式规则针对每个类计算误差的导数,
∂
E
∂
x
c
=
∂
E
∂
z
c
∂
z
c
∂
x
c
\frac{∂E}{∂x_c}=\frac{∂E}{∂z_c}\frac{∂z_c}{∂x_c}
∂xc∂E=∂zc∂E∂xc∂zc,其中
∂
E
s
i
g
m
o
i
d
∂
z
c
=
−
z
c
−
y
c
z
c
(
1
−
z
c
)
\frac{∂E^{sigmoid}}{∂z_c}=-\frac{z_c-y_c}{z_c(1-z_c)}
∂zc∂Esigmoid=−zc(1−zc)zc−yc:
而(1)中的误差函数
E
E
E只考虑了个体的类区分,没有明确地考虑目标类之间的相互依赖关系,为此,我们提出了一种新的基于深度学习的多标签学习任务损失函数,它明确地考虑了多个标签之间的关系。本文利用MSML (multi-label Softmax Loss)误差函数对多标签的利用相关性进行了研究.
Y
i
Y_i
Yi定义当前样本的正类指标
y
c
=
1
y_c= 1
yc=1,其中
Y
i
ˉ
\bar{Y_i}
Yiˉ是
Y
i
(
y
c
=
0
)
Y_i(y_c=0)
Yi(yc=0)的互补值.
∣
Y
i
∣
|Y_i |
∣Yi∣衡量基数,用于规范化.MSML是从softmax函数
e
x
p
(
x
c
)
∑
C
e
x
p
(
x
c
)
\frac{exp(x_c)}{\sum_Cexp(x_c)}
∑Cexp(xc)exp(xc)启动的,每个正响应
x
l
∈
Y
i
x_{l∈Y_i}
xl∈Yi被供给指数函数,分母包含来自所有负输出
x
l
∈
Y
i
ˉ
x_{l∈\bar{Y_i}}
xl∈Yiˉ的激活和来自分子的正激活.
我们表明MSML易于评估和区分。 使用与标准误差类似的方法,我们可以从提出的MSML中反向传播梯度,用
∂
E
M
S
M
L
∂
z
c
=
−
y
c
z
c
\frac{∂E^{MSML}}{∂z_c}=-\frac{y_c}{z_c}
∂zc∂EMSML=−zcyc,然后计算整体梯度为:
2.2 双线性池
采用深卷积神经网络的双线性方法在图像识别、视频分类等细粒度任务上取得了良好的效果。这个想法是,在池化层之一中,在两个网络的每个空间位置
(
i
,
j
)
(i,j)
(i,j)执行外部乘积,以生成二阶统计判别式局部特征表示,双线性池可以在池化层中计算,如下所示:
其中
f
i
.
j
a
∈
R
d
f_{i.j}^a∈\mathbb{R^d}
fi.ja∈Rd是来自网络a中的池化层之一的局部特征描述符,
p
i
,
j
p_{i,j}
pi,j是两个向量的外积,
v
e
c
(
)
vec()
vec()是向量化操作,且
p
∈
R
d
2
p∈\mathbb{R}^{d^2}
p∈Rd2
2.3细粒度多标记学习
图1显示了用于胸部x线疾病检测的多标记细粒度网络的架构,MSML损失操作在样本中的每个阳性类上,并鼓励他们考虑标签存在和不存在之间的独立性,同时最小化跨类的损失
用相同参数对称初始化的CNN可以在训练期间提高效率,然而,由于模型没有探究不同CNNs所产生的不同空间,对称激活可能导致次优解的产生,因此,在我们提出的模型中,我们为两个CNN组件设计了单独的辅助损失,以打破用于双线性池的两个特征提取器之间的对称性
我们给出了细粒度多标签学习架构的概述,如图1所示。两个独立的CNN用相同的预训练参数初始化。第一个CNN流附加了基于sigmoid函数的交熵损失。第二个CNN的feature map被输入到具有MSML损失的独立分类器中,它侧重于学习标签的相关性。当来自双线性池化层的输出可用时,可以在细粒度级别执行细粒度交叉熵损失(FCE)。双线性池化层作用于基本架构的最后一个卷积层,符号sqrt范数和L2范数作用于平均池化双线性特征层。再增加1×1卷积层,然后馈送到FCE损失的分类层。我们的模型只对所有类使用图像级注释进行训练。对优化器的细粒度多标签损失是这两者的加权和:
3.实验
数据集:为了验证我们方法的有效性,我们使用了NIH引入的ChestXray14数据集。 该数据集包含112,120幅正面X射线,其中包含14种疾病标签(每个图像均具有多个标签),这些标签是从相关的放射学报告中获得的。 我们采用与[1]中相同的设置,其中将整个数据集随机分为三组:70%用于训练,10%用于验证,20%用于测试。 分割是在患者层面进行的,因此在不同的数据折叠中没有重叠.
网络和培训:我们使用各种CNN架构(ResNet、DenseNet、VGG),并在2012年ImageNet挑战中使用预先训练过的参数作为我们评估框架的基础CNN组件.初始学习率为
1
0
−
4
10^{-4}
10−4和betas =(0.9, 0.999)的ADAM优化器被用来优化网络
评价指标:两个度量标准被用来评估各种框架的性能.ROC曲线下面积(AUC):这是一些肺x线分类文献中使用的度量标准.以灵敏度
(
T
P
T
P
+
F
N
)
(\frac{T P}{ T P +F N})
(TP+FNTP)为纵轴,特异度(
T
N
T
N
+
F
P
\frac{T N}{T N+F P}
TN+FPTN)为横轴计算面积曲线.在某些类别中存在严重的类别不平衡问题,比如疝气,它占整个数据集的2%.为了跟踪大多数的表现,我们建议使用ROC曲线下的加权面积(W-AUC)。每个类AUC都与一个权重因子
w
c
w_c
wc相关联,该权重因子与它在数据集中所占的比例有关。为了深入了解模型在正常和异常情况下的表现,我们进一步研究了测试集疾病与疾病(D-AUC)和疾病与非疾病(N-AUC)的AUC
3.1定量结果
我们使用下面的首字母缩写。R18-CE: ResNet18训练与交叉熵(CE)损失,r18 - bll -CE: ResNet18与自双线性池与CE损失.F-MSML:提出的细粒度多标签体系结构,如2.3节所述。CNN组件使用ResNet18作为基础架构。D121也有类似的缩写:DenseNet-121
利用在ChestX-ray14数据集上提出的方法,我们检查类平均AUC和W-AUC。表1总结了主要结果。在大多数情况下,我们观察到所提议的细粒度多标签体系结构为与基线网络的融合结果提供了一致的性能改进。该方法的性能优于R18-BL和D121-BL的融合,表明MSML在双线性模型中为CNN的两个分量提供了更多的独立性.
令人惊讶的是,R18和D121的集成模型没有提供更高的AUC(在“集合分析”下为第一行),这表明从这两个模型中学到的高级抽象表示形式可能具有很强的相关性。 这被认为是由于R18和D121的基线结果相对于其模型复杂性(18层vs 121层)提供了可忽略的性能差异(0.8239 vs. 0.8354)。 最后两行显示的结果表明,我们可以使用在双线性池函数上更好地工作的基本体系结构来进一步提高性能。
4.结论
在这篇文章中,我们展示了利用DCNN的多标记损失函数(MSML)学习在x光输入的肺部疾病多标记分类中的有效性。我们提出了两个关键的贡献:(i)使用细粒度分类方法学习判别表示法;(ii)我们提出了一种用于深度学习模型的新型MSML,它有助于利用类依赖性。MSML可以解释为将多标签学习问题分解为多个独立的分类问题,同时学习每个类的存在相对于所有缺失类的单独分布。MSML内部扎根的softmax属性对于在指数大小的输出空间中促进学习过程至关重要。此属性使其很有吸引力,可用于多标签空间学习,预测多个标签,还使该模型减轻了负类的过度拟合,对于每个存在类,缺席类的输出被抑制。在医疗数据中,存在多数据和数据不平衡是很常见的。所提出的MSML可以明确地处理这两个问题,并将其嵌入到网络中。我们通过改进ChestX-ray14数据集中疾病分类的roc评分来说明这种方法的有效性。然而,类似的问题也出现在现实世界的其他医疗数据中。因此,提出的损失函数为获得更广泛的医学数据的性能提供了新的方向。