胸部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=1N​Ei,其中 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​(yci​log(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)} ∑C​exp(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​=−zc​yc​​,然后计算整体梯度为:

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评分来说明这种方法的有效性。然而,类似的问题也出现在现实世界的其他医疗数据中。因此,提出的损失函数为获得更广泛的医学数据的性能提供了新的方向。

多标签分类(十二):Chest X-rays Classification a Multi-Label and Fine-Grained Problem相关推荐

  1. 使用 scikit-learn 实现多类别及多标签分类算法

    多标签分类格式 对于多标签分类问题而言,一个样本可能同时属于多个类别.如一个新闻属于多个话题.这种情况下,因变量yy需要使用一个矩阵表达出来. 而多类别分类指的是y的可能取值大于2,但是y所属类别是唯 ...

  2. 【五一创作】使用Resnet残差网络对图像进行分类(猫十二分类,模型定义、训练、保存、预测)(一)

    使用Resnet残差网络对图像进行分类 (猫十二分类,模型定义.训练.保存.预测)(一) 目录 一.项目简介 二.环境说明 1.安装库 2.导入需要的库 三.分类过程 (1).解压数据集 (2).相关 ...

  3. NLP(三十六)使用keras-bert实现文本多标签分类任务

      本文将会介绍如何使用keras-bert实现文本多标签分类任务,其中对BERT进行微调. 项目结构   本项目的项目结构如下: 其中依赖的Python第三方模块如下: pandas==0.23.4 ...

  4. 分类家族:二分类、多分类、多标签分类、多输出分类

    分类家族:二分类.多分类.多标签分类.多输出分类 目录 分类家族:二分类.多分类.多标签分类.多输出分类 二分类

  5. 机器学习之深度学习 二分类、多分类、多标签分类、多任务分类

    多任务学习可以运用到许多的场景. 首先,多任务学习可以学到多个任务的共享表示,这个共享表示具有较强的抽象能力,能够适应多个不同但相关的目标,通常可以使主任务获取更好的泛化能力. 此外,由于使用了共享表 ...

  6. 基于ResNet的猫十二分类

    在这次实战训练中,首先对下载的猫十二数据集进行预处理,使用了tensorflow构建resnet模型,在学习率调度上,使用了1周期调度,并且使用了动量优化和Nesterov加速梯度 1.导包 from ...

  7. 【基础知识】多标签分类CrossEntropyLoss 与 二分类BCELoss

    什么是多标签分类 图片中是否包含房子?你的回答就是有或者没有,这就是一个典型的二分类问题(一个问题两个选项,是或不是). 同样还是这幅照片,问题变成了:这幅照片是谁拍摄的?备选答案你,你的父亲,你的母 ...

  8. tf第十二讲:TextCNN做文本分类的实战代码

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

  9. Atitit 知识与学科的分类 杜威十进分类法 图书分类法已经采用二十二个大类 目录 1.1. 类知识的积累是一个从少到多的过程 1 1.2. 杜威十进分类法(Dewey Decimal Class

    Atitit 知识与学科的分类 杜威十进分类法 图书分类法已经采用二十二个大类 目录 1.1. 类知识的积累是一个从少到多的过程 1 1.2. 杜威十进分类法(Dewey Decimal Classi ...

最新文章

  1. C++中关键字volatile和mutable用法
  2. java中引用类型_您真的了解Java中的4种引用类型吗?
  3. hadoop优化之操作系统优化
  4. Spring MVC报异常:org.springframework.web.util.NestedServletException: Request processing failed
  5. c#重命名文件 - 抛弃MoveTo,而引用vc 中rename生成rename.dll
  6. VTK:图片之ImageSobel2D
  7. 在Windows 7上安装Team Foundation Server(TFS)的代理服务器(Agent)
  8. Visual Studio 2008下AJAX的设置
  9. IT草根的江湖之路之五:鉴于现实,屈服!
  10. VS2019配置opencv4.1.2(永久配置)
  11. 使用openssl实现ECDSA签名以及验证功能(附完整测试源码)
  12. fcntl函数的作用及应用场景
  13. 订票系统java源码_航空订票系统java源码
  14. 一二三代壳和加壳技术分类识别
  15. OPNsense - 多功能高可靠易使用的防火墙(五)
  16. python中forward是什么意思_pytorch 调用forward 的具体流程
  17. 解决ping值波动,一下20ms,一下上千ms的问题。
  18. ubuntu上的图片编辑工具-Pinta(品他病)
  19. MySQL8.0.15安装教程(Windows)
  20. 大数据之电商分析系统(一)

热门文章

  1. FAQ-MT6250/MT6250D平台,FM外放时耳机无声
  2. jsAES128加密方法
  3. 修改zabbix web网站路径
  4. QT debug 功能正常 realease和windeplayqt工具打包部分功能无法使用或者不正常
  5. OTT TV与IPTV的不同
  6. 数据结构--二叉树遍历(详细过程)
  7. Java项目:springboot+vue电影院会员管理系统
  8. 字节码文件及字节码指令
  9. 算法与数据结构【30天】集训营——线性表之易混淆知识点双链表的结点前插和后插(05)
  10. 【工业4.0】工业4.0之父独家解读:还原工业4.0