文献阅读笔记----TieNet: Text-Image Embedding Network for Common Thorax Disease Classification and Reporting in Chest X-rays
原文地址
1. 模型部分
图(1)
-
INPUT:
模型的input为图片和1-V编码字序列S
S = { w 1 , . . . , w T } , w t ∈ R V ( 1 ) S=\{w_1, . . . ,w_T\},w_t∈R^V \qquad\qquad\qquad\qquad\qquad\qquad\qquad (1) S={w1,...,wT},wt∈RV(1)
wt是一个向量,代表一个dw维度的词,是报告中的第t个词嵌入;V代表词汇表的大小;T是报告的长度。 -
CNN模块
首先,通过使用ResNet-50(只用网络中Conv1到Res5c的部分),对图像进行分类;然后,再通过一个"过渡卷积层"操纵空间网格大小和特征维度(D,D,C);最后,用激活函数把特征激活映射到LSTM,维度用dh表示。
X:过渡层进行卷积和激活得到的特征图,用于初始化RNN的隐藏状态ht。
φ(X):dX维的过渡层把X激活映射到dh维的LSTM状态空间。
X也被用作RNN的输入之一,这个序列到序列的模型包括一个确定性的软视觉空间注意at,在X输入到RNN之前,按元素乘以at,在之后的每一个time step,RNN输出随后的注意力图at+1。
除了软加权视觉特性外,RNN还接受每个时间步的当前单词wt作为输入。RNN采用标准LSTM。然后,下一个隐藏状态的转换可以表示为
h t = L S T M ( [ w t , a t , X ] , h t − 1 ) ( 2 ) h_t = LSTM([w_t,a_t,X],h_{t−1}) \qquad\qquad\qquad\qquad\qquad\qquad (2) ht=LSTM([wt,at,X],ht−1)(2)
LSTM通过根据上下文向量在每个time step生成一个单词来生成报告,上下文向量即之前的隐藏状态ht,之前生成的单词wt,以及维数为D×D×C的X的卷积特征。这里D=16和C=1024,分别表示空间维度和通道维度。
一旦对模型进行训练,就可以通过连续采样wt ~ p(wt|ht)并使用公式(2)更新状态来生成新图像的报告。
端到端可训练的CNN-RNN模型为文本和图像的处理提供了一种强大的手段。然而,论文的目标是获得一个可解释的全局文本和用于分类的可视化嵌入。出于这个原因,提出了AETE(Attention Encoded Text Embedding)和SW-GAP(Saliency Weighted Global Average Pooling)。 -
Attention Encoded Text Embedding(注意力编码文本嵌入)
为了计算全局的文本表示,该模型使用注意力机制来组合RNN隐藏状态的最显著部分。
设H为关于所有隐藏状态的矩阵 H = ( h 1 , . . . , h T ) ( d h × T ) H=(h1,...,hT)_{(d_h×T)} H=(h1,...,hT)(dh×T)
注意力机制输出一个r×T的权值矩阵G:
G = s o f t m a x ( W s 2 t a n h ( W s 1 H ) ) ( r × T ) ( 3 ) G=sof tmax(W_{s2}tanh(W_{s1}H))_{(r×T)} \qquad\qquad\qquad\qquad\qquad (3) G=softmax(Ws2tanh(Ws1H))(r×T)(3)
r是想从这句话中提取的全局attention的数量;Ws1和Ws2分别是一个s×dh和r×s的矩阵;s是控制维度的超参数,它控制注意力产生过程的维度。
计算注意力之后,通过计算得到一个r×dh的嵌入矩阵: M = G H ( r × d h ) M=GH_{(r×d_h)} M=GH(r×dh)
它在本质上是对T个隐藏状态执行r个加权和,将它们聚合成r个表示。G的每一行记作 g i ( i ∈ { 1... r } ) g_i(i∈\{1...r\}) gi(i∈{1...r}),表示每个隐藏状态对M的最终嵌入表示的贡献程度。因此,我们可以为嵌入矩阵M的每一行绘制一张热图(如图(2)所示),这种可视化方式为嵌入的每个部分编码的内容提供了提示,增加了额外的解释层。
为了提供报告中句子的最终全局文本嵌入,AETE在M上执行max-over-r池化,生成大小为dh的嵌入向量 X ^ A E T E \hat{X}_{AETE} X^AETE。
图(2)
-
Saliency Weighted Global Average Pooling(显著性加权全局平均池)
除了使用注意力机制来提供更有意义的文本嵌入外,该论文的目标还包括生成改进的分类视觉嵌入
为了达到这个目的,重复使用注意力机制G,除了执行max-over-r操作,还要为每一个词wt生成一个显著性值的序列 g t ( t = 1 , . . . , T ) g_t(t=1,...,T) gt(t=1,...,T),这些显著性值用于加权和选择每个时间点生成的空间注意力图at:
a w s ( x , y ) = ∑ t a t ( x , y ) ∗ g t ( 4 ) a_{ws}(x, y) =\sum_{t}^{} a_{t}(x, y) *g_t \qquad\qquad\qquad\qquad\qquad\qquad (4) aws(x,y)=t∑at(x,y)∗gt(4)
这个图是用所有的空间显著区域编码的,由文本注意力引导。使用这个图突出显示X的空间区域,其中包含更有意义的信息:
X ^ S W − G A P ( c ) = ∑ ( x , y ) a w s ( x , y ) ∗ X ( x , y , c ) ( 5 ) \hat{X}_{SW−GAP}(c)=\sum_{(x,y)}^{} a_{ws}(x, y)*X(x,y,c)\qquad\qquad\qquad (5) X^SW−GAP(c)=(x,y)∑aws(x,y)∗X(x,y,c)(5)
其中, x , y ∈ { 1... D } x,y∈\{1...D\} x,y∈{1...D}, X ^ S W − G A P \hat{X}_{SW−GAP} X^SW−GAP是一个1×C的向量,表示全局视觉信息,由基于文本和视觉的注意力机制引导。图(1)的下半部展示了这种池策略的一个示例。 -
Joint Learning(联合学习)
由于在对计算图像和报告进行全局表示时,必须将他们组合到一起来产生最终的分类,为了实现这个目的,将图像和报告的表示形式连接起来: X ^ = X ^ A E T E ; X ^ S W − G A P \hat{X}=\hat{X}_{AETE};\hat{X}_{SW-GAP} X^=X^AETE;X^SW−GAP,最后使用全连接层来产生多标签分类的输出。
作者说他们的模型背后的直觉是,CNN和RNN网络之间的连接将有利于两者的训练,因为图像激活可以根据文本嵌入任务进行调整,并且可以通过基于高文本显著性的池化来提取显著的图像特征。
接着作者为每个病例定义了一个 M M M维的疾病标签向量 y = [ y 1 , . . . , y m , . . . , y M ] , y m ∈ { 0 , 1 } y=[y_1,...,y_m,...,y_M],y_m∈\{0,1\} y=[y1,...,ym,...,yM],ym∈{0,1}。其中 M M M表示种类的数量; y m y_m ym表示图像中存在病理或”没有发现“(仅为列出的疾病类别)。在这里,作者采用采用以下文献[35]中提供的NLP标签作为训练期间的“ground-truth”。
不同疾病类别的实例数量极不平衡,从数百到数万。除了[35]中引入的正/负平衡之外,作者还在”与不同类别相关联的实例中添加权重“:
L m ( f ( I , S ) , y ) = β P ∑ y m = 1 − l n ( f ( I , S ) ⋅ λ m + β N ∑ y m = 0 − l n ( 1 − f ( I , S ) ) ⋅ λ m ( 6 ) L_m(f(I,S),y)=β_P\sum_{y_m=1}-ln(f(I,S)·λ_m+β_N\sum_{y_m=0}-ln(1-f(I,S))·λ_m\qquad (6) Lm(f(I,S),y)=βPym=1∑−ln(f(I,S)⋅λm+βNym=0∑−ln(1−f(I,S))⋅λm(6)
其中, β P = ∣ N ∣ ∣ P ∣ + ∣ N ∣ β_P=\frac{|N|}{|P|+|N|} βP=∣P∣+∣N∣∣N∣ and β N = ∣ P ∣ ∣ P ∣ + ∣ N ∣ β_N=\frac{|P|}{|P|+|N|} βN=∣P∣+∣N∣∣P∣, ∣ P ∣ |P| ∣P∣和 ∣ N ∣ |N| ∣N∣分别表示“至少有一种疾病”和“无疾病”的图像总数。 λ m = ( Q − Q m ) / Q λ_m=(Q-Q_m)/Q λm=(Q−Qm)/Q是一组预先计算的类权值,其中 Q Q Q和 Q m Q_m Qm为图像总数和有疾病标签的图像数量。 类 m m m的实例数量越小, λ m λ_m λm越大。
由于TieNet网络还要生成文本报告,作者又优化了RNN生成模型的损失函数 L R L_R LR;因此,总体损失由两部分组成:
(1)多标签分类的s形交叉熵损失函数 L C L_C LC;
(2)RNN生成模型的损失函数 L R L_R LR。
L o v e r a l l = α L C + ( 1 − α ) L R ( 7 ) L_{overall}=αL_C+(1-α)L_R\qquad\qquad\qquad (7) Loverall=αLC+(1−α)LR(7)
添加 α α α是为了平衡两种损失函数类型之间的巨大差异。 -
Medical Image Auto-Annotation(医学图像的自动标注)(翻译)
TieNet的一个直接应用是自动标注图像分类标签。 通过忽略序列词的生成,只对分类损失进行累积和反向传播,从而在图像分类中实现更好的文本-图像嵌入。 在这里,作者在训练中使用nlp挖掘的疾病标签作为“基本事实”。 实际上,作者希望学习输入图像报告对和图像标签之间的映射。 报告文本通常包含比图像侧更容易学习的特征。 这两个来源对最终分类预测的贡献应该通过控制特征维度或在训练过程中减少部分“容易学习”数据来平衡。 -
Automatic Classification and Reporting of Thorax Diseases(胸部疾病的自动分类与报告)(翻译)
对于一个更困难但真实的场景,我们将图像-文本嵌入网络转换为一个统一的系统,当只有从未见过的图像可用时,进行图像分类和报告生成。在训练过程中,同时输入图像和报告,并计算两个单独的损失,即图像分类的损失和序列到序列模型的损失。 在测试时,只需要图像作为输入。生成的文本包含在LSTM单元中记录的学习文本嵌入,然后用于最终的图像分类任务。将生成模型集成到文本-图像嵌入网络中,是实现图像与注意编码文本嵌入关联的关键。 -
数据集
(1)ChestX-ray14
(2)Hand-labeled
除了NLP挖掘的标签外,作者从测试集中随机选择了900份报告,并让两位放射科医师对14种类别的发现进行注释,以达到评估目的。
(3)OpenI
2. 实验部分
-
报告的vocabulary:
使用训练集中所有15,472个至少出现两次的unique words。 出现频率较低的单词被一个特殊的out-of-vocabulary标记替换,并且报告的开始和结束用一个特殊的和标志标记。利用基于Gensim的word2vec实现在PubMed文章上学习预训练的词嵌入向量,维数设置为200。 词嵌入向量将与其他LSTM参数一起更新。 -
评价指标:
为了比较之前最新的工作,针对不同的任务选择不同的评价指标,以保持与以往工作中报告的数据的一致性。
绘制每个疾病类别的ROC曲线来衡量图像分类性能,然后计算AUC(它反映了不同工作点的总体表现)。
为了评估生成的文本报告的质量,在原始报告和生成的报告之间分别计算BLEU、METEOR和ROUGE-L评分。这些指标反映了两个文本语料库之间的词重叠。然而,作者认为它们在显示两个文本语料库之间的疾病词(及其属性)重叠的实际准确性方面的能力是有限的。 -
训练:
LSTM的维度为256, W s 1 W_{s1} Ws1和 W s 2 W_{s2} Ws2中的 s = 2000 s=2000 s=2000,也就是说, W s 1 W_{s1} Ws1是2000×256大小的矩阵, W s 1 W_{s1} Ws1是 r r r×2000大小的矩阵。(文中 r r r=5)
在训练中,作者在MLP上使用0.5的 D r o p O u t DropOut DropOut,并加入 w e i g h t _ d e c a y weight\_decay weight_decay = 0.0001的 L 2 L_2 L2正则化。Optimizer选则Adam,学习率为0.001,batch_size=32。此外,自注意LSTM的隐藏层单元数为350个,矩阵嵌入有5行(也就是 r r r),惩罚系数为1。
对所有模型进行训练,直到达到收敛,并根据相应的最佳验证集性能选择用于测试的超参数。
本文的TieNet网络是基于Tensorflow和TensorPack实现的;ImageNet预训练模型(即Resnet-50),是从Caffe model zoo获得的,它已经被转换为TensorFlow兼容的格式。TieNet网络从预训练模型中获取权重,并在训练过程中进行修正。网络中的其他层是从零开始训练的。接下来作者介绍他们减小了batch_size以适应多个GPU中进行大量的迭代计算梯度,然后介绍用了几块GPU用的什么操作系统。 -
自动图像标注
图(3)显示了3种不同输入在3个不同测试集(即ChestX-ray14、hand-labeled和OpenI),每种疾病类别和“无发现”绘制的单独的曲线。这里,两种不同的自动标注框架通过使用不同的输入【只取报告(R)和取图像-报告对(I+R)作为输入】。
当只使用报告作为输入时,框架将没有显著性加权全局平均池路径。通过这种方法,我们可以了解文本路径和图像路径各自的特征对最终分类预测的贡献。
图(3)
表(1)显示了从图(3)所示的ROC曲线中计算出的每个类别的AUC值。自动标注框架在ChestX-ray14和Hand-labeled上都实现了高性能。报告单独作为输入时AUC超过0.87,样本数加权平均上的图像-报告对的AUC超过0.90 (#wAVG)。图像和报告的结合体现了这项任务的最大优势。此外,在ChestX-ray14上训练的自动注释框架在OpenI上的执行是相同的。
这表明,在大型图像数据集上训练的模型可以很容易地推广到其他研究所的未见数据。仅基于图像训练的模型也可以很好地推广到其他的数据集。
表(1)
-
胸片分类和报告
当TieNet切换为自动疾病分类和报告系统时,它以单个图像作为输入,能够同时输出多标签预测和相应的放射报告。图(3)和表(1)中右侧的ROC曲线显示了多用途报告系统产生的图像分类性能。来自TieNet(I+GR)的AUC表明,在所有三个数据集上,AUC均有持续改善(与#wAVG相比提高了2.3% - 5.7%)。多标签分类框架[35]作为一个基线模型,它也只接收图像。此外,在hand-labelled和OpenI数据集(带有ground truth图像标签)上实现的性能改进甚至比在ChestX-ray14(带有nlp挖掘标签)上获得的性能增益还要大。这表明TieNet能够直接从原始报告中学习到更有意义、更丰富的文本嵌入,并纠正嵌入特征与错误挖掘标签之间的不一致性。
表2显示,与基线图像字幕模型相比,本文提出的系统生成的报告在所有评估指标中获得了更高的分数。这可能是因为RNN的梯度反向传播到CNN部分,过渡层对图像特征的调整有利于报告的生成。图(2)显示了提出的自动分类和报告系统的4个样本结果,原始图像与分类预测、原始报告和生成的报告一起显示。"文本-受注意"的词也将突出显示在生成的报告上。
一个有前途的发现是样本C中错误的预测(“Mass"and"Consolidation”)可以在图像中被观察到(由放射科医生验证),但是不知为何没有在原始报告中提到,这表明本文提出的网络可以在一定程度上可以将图像的外观与文本描述联系起来。
3. 总结
自动从回溯性资料中提取机器可学习的标注仍然是一项具有挑战性的任务,其中图像和报告是两个主要的有用来源。在此,我们提出了一种融合多级注意模型的文本-图像嵌入网络。TieNet是在一个端到端的CNN-RNN架构中实现的,用于学习独特的融合图像和文本的表示。然后,本文演示并讨论在自动标注和报告任务中包含放射报告的优缺点。虽然在多标签疾病分类方面取得了重大进展,但仍有很大的空间来提高生成的报告质量。对于未来的工作,作者将扩展TieNet,包括多个RNN,不仅用于学习疾病词汇,还用于学习它们的属性,并寻找将它们和"生成的报告"与"图像"进一步关联的方法。
[35]Wang X, Peng Y, Lu L, et al. Chestx-ray8: Hospital-scale chest x-ray database and benchmarks on weakly-supervised classification and localization of common thorax diseases[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 2097-2106.