返回列表

27th place solution - 2nd with context prize (edited)

396. SIIM-ISIC Melanoma Classification | siim-isic-melanoma-classification

开始: 2020-05-27 结束: 2020-08-17 医学影像分析 数据算法赛
第27名解决方案 - 获得上下文奖第2名

第27名解决方案 - 获得上下文奖第2名(已编辑)

作者: yuval reina, nosound | 比赛排名: 第27名

这是“Yuval and nosound”模型(第27名)的总结。

您可以在以下链接找到更多信息:

1. 概述

我们的解决方案基于两步模型 + 集成:

  1. 用于每张图像特征提取的基础模型。
  2. Transformer 模型 —— 结合来自患者的所有输出特征并针对每张图像进行预测。
  3. 第二阶段还包括一些后处理和集成。

基础模型:

作为基础模型,我们使用了 EfficientNet 家族的模型:

  • EfficientNet b3
  • EfficientNet b4
  • EfficientNet b5
  • EfficientNet b6
  • EfficientNet b7

所有模型均使用 Noisy Student 算法在 ImageNet 上进行了预训练。模型和权重来自 gen-efficientnet-pytorch

这些模型的输入是图像和元数据(如年龄、性别和解剖部位)。元数据由一个小型的全连接网络处理,其输出被连接到原始 EfficientNet 网络分类层的输入处。该向量经过一个输出大小为 256 的线性层以创建“特征”,然后在经过激活层后进入最终的线性分类层。

该网络有 8 个输出,并尝试对诊断标签进行分类(实际上有超过 8 种可能的诊断,但有些样本不足)。

Transformer 模型:

Transformer 模型的输入是来自同一患者的所有图像的特征堆栈 + 这些图像的元数据。

该 Transformer 是由 4 个 Transformer 编码器层组成的堆栈,具有如 《Attention Is All You Need》 中所述的自注意力机制。每个 Transformer 编码器层使用 4 个自注意力头。

Transformer 的输出是 N*C,其中 N 是输入特征向量的数量(图像数量),C 是类别数量(本例中为 8)。因此,Transformer 利用来自所有其他特征向量的信息,同时预测每个特征向量的类别。

元数据是以“Transformer 风格”添加的,即每个参数通过嵌入矩阵转换为向量(大小为 256),然后添加到特征向量中。对于连续值(如年龄),嵌入矩阵被替换为一个 2 层全连接网络。

所有网络输出的集成:

数据被拆分为 3 折,重复 3 次(使用 3 个不同的种子进行拆分),推理使用 16(或 12)次 TTA(测试时增强)。每个模型给出 144 个预测。对这些预测进行平均,然后对所有模型的输出进行平均。所有平均都在 softmax 之前的输出上进行,因此这实际上是几何平均。

训练

繁重的工作是基础模型的训练和推理。这是在一台配有 2 个 GPU(Tesla V100 和 Titan RTX)的服务器上完成的,它们并行处理不同的任务。在 Tesla 上训练一个模型的一折需要 3 小时(B3)到 11 小时(B7,B6 大图像),在 Titan 上则需要多出 20%,这总计大约 B3 需要一天,B7 需要 3.5 天。推理所有训练数据(12 次 TTA)+ 测试数据(16 次 TTA)以获取下一级的特征又花费了 4 到 14 小时。Transformer 训练对于完整模型(3 折 * 3 种子)花费不到 1 小时。

训练所有模型和折所需的总时间在一个 Tesla 上约为 2.5 周(使用 2 个 GPU 约为 1.5

同比赛其他方案