第一名

内容:

  • 分类使用了pipeline分类检测
  • 对于分类用了10折(交叉验证)集成分类,5个10折集成用于检测(50个模型)。

在检测方面用到了:

代码地址:https : //www.github.com/i-pan/kaggle-rsna18

git下来代码后看到对于检测用到的模型:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ErhnW94n-1629870285863)(D:\STUDY\Note\image\image-20210819152846040.png)]对应了上面说的检测模型

分类

使用Keras 2.2进行分类。分类模型由以下各个模型组成 [format: modelArchitecture (numClasses) (imgSize)]。对模型进行2类(不透明vs.透明)或3类(不透明vs.非正常/透明vs正常)的训练。每个模型都经过不同的折叠训练

  • InceptionResNetV2 (2) (256), InceptionResNetV2 (2) (320)
  • InceptionResNetV2 (3) (256), InceptionResNetV2 (3) (320)
  • Xception (2) (384), Xception (2) (448)
  • Xception (3) (384), Xception (3) (448)
  • DenseNet169 (2) (512), DenseNet169 (3) (512)

从上面的地方可以看出对于分类用到了InceptionResNetV2 、Xception 、DenseNet169 模型去实现。代码中对应:在这里插入图片描述

是对灰度图像的分类

预训练权重:

首先,我们使用15类(14个发现+异常与正常)在NIH ChestX-ray14数据集上训练了ImageNet预训练网络。然后我们在肺炎数据集上微调这些权重。使用ImageNet权重进行局部训练仅能提高约1%的效果。经过折叠后,得到了约0.88-0.90 AUC。

(补充AUC:基于 ROC 线下面积。例如0.7的 AUC,其含义可以大概理解为:给定一个正样本和一个负样本,在70%的情况下,模型对正样本的打分高于对负样本的打分。可以看出在这个解释下,我们关心的只有正负样本之间的分数高低,而具体的分值则无关紧要。)

数据增强:

对模型进行训练,有50%发生颜色反转,50%发生翻转,50%进行其他某种增强(例如,对比度增强,裁剪,旋转)的增强。我们对每个模型的最终预测使用了15倍的TTA, ,并将150个预测的平均值作为最终分类分数。当发布第1阶段的测试标签时,我们的分类集成的AUC为0.93。

检测

这里作者用到了不同的检测组合详细的给我们说明了用不同网络组合得到的过程结果。

  1. 检测组合1:每个折叠都以不同的分辨率进行训练(224-512,增量为32),只在Positive图像上。发现较低的分辨率并不会降低本地性能,实际上会提高公共LB(排行榜)的性能。第一个检测集合是可变形R-FCN的10倍CV集合。除了解冻默认配置中冻结的非BN(批量归一化)层外,我们主要使用默认参数。这些模型使用ResNet101 ImageNet预训练的主干网。我们还将每个图像的最大检测次数更改为5,但将阈值保持在0.001。数据增强仅使用的是翻转。这些模型训练非常快(〜2小时),具体取决于***图像分辨率***。
  2. 检测组合2:与检测组合1基本相同,但是多了一部分就是使用了可变形的关系网络。尝试学习要使用的NMS阈值的版本,但是效果很差。
  3. 检测组合3:与检测组合2完全相同,但是将主干层冻结。使主干层保持冻结状态会使性能略有下降,但是我们加入了集成以降低与其他集合的模型相关性,并且在我们的第1阶段公共LB得分中有轻微的改善。
  4. 检测组合4:这是一个RetinaNet集成,也是10倍CV,但仅在384 x 384分辨率下进行了训练,因为我们在更改锚点大小方面遇到了问题。我们对级联图像(concatenated images)进行了训练,在该级联图像中,每个negative 图像均与左侧或右侧相同折叠处的正图像随机级联(因此最终图像尺寸为384 x 768)。我们训练了8000步/epoch,bitch大小为1,进行了8 epoch,在第4 epoch和第6 epoch后将学习率除以10。我们选择了在8个时期内具有最佳mAP指标的模型。使用了--random-transform,它使得训练更加的不稳定,所以没有指定他,所以只有数据增强的时候是有翻转的。==10倍CV集成中的一半使用ResNet101主干进行训练,另一半使用ResNet152进行训练。ResNet101明显优于ResNet50,但ResNet152与ResNet101相同。==对级联图像的培训使RetinaNet可以更好地平衡精度和召回率。
  5. 检测组合5:和4相同,但是将negative 图像换成了Positive图像

组合之前的检测方法:

  1. 检测集成1+2+3:对于1-3个检测集合,我们应用了6倍的TTA(Test Time Augmentation)(原始的,翻转的,原始和翻转的均为80%/ 120%)。使用了上面说的boxes组合,然后通过乘以包含该框的TTA的分数来调整框得分的预测(即,如果5/6 TTA预测框的平均得分为0.5,则将其乘以5/6)。这段代码在计算getCoords函数中盒子之间的IoU重叠时需要中心坐标。为了结合分类网络,我们将集成平均框得分预测乘以该图像的分类得分。我们消除了调整后分数 <0.225 的框。

  2. 检测集成4+5:我们应用了 10 倍 TTA(原始/翻转的分辨率为 320、352、384、416、448),执行与上述相同类型的集成,包括基于预测该框的 TTA 分数进行分数调整。然而,在这个阶段,我们没有将两个集成中 20 个模型的预测结合起来。相反,我们使用 0.2 的分类分数阈值和 0.3 的框分数阈值来检测集成 4。我们上面使用的乘法方法对 RetinaNet 效果不佳。尽管我们说检测集成 4 不一定需要配对分类器,但它确实将阶段 1 公共 LB 分数提高了约 0.003。

    应用这些阈值后,我们使用相同的代码和 IoU 阈值 0.4 组合了来自 ensemble 4 和 5 的框。

最终的组合:

​ 剩下 2 个集成。如上所述,我们使用相同的调整策略,使用相同的权重和 IoU 阈值将它们组合在一起。使用的最终框阈值为 0.15。

总结

作者在做肺炎检测时,先是使用了InceptionResNetV2XceptionDenseNet169网络作为分类处理网络,使用ImageNet预训练网络得到预训练数据。在数据增强方面最终预测使用了15倍的TTA,提高结果的精度。在检测方面,作者提出了5中方法,其中1、2、3主要是在主干为ResNet101进行检测的,使用到了R-FCN集成检测,而数据增强只用到了翻转。4、5方法是RetinaNet集成检测,主干一半是ResNet101,另一半是ResNet152,这两个效果相同。最终是123组合和45组合。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐