返回列表

7th place - EfficientNet, Transformer and a 2nd opinion [edited]

404. RSNA STR Pulmonary Embolism Detection | rsna-str-pulmonary-embolism-detection

开始: 2020-09-10 结束: 2020-10-26 医学影像分析 数据算法赛
第7名方案 - EfficientNet, Transformer 和“第二意见”

第7名方案 - EfficientNet, Transformer 和“第二意见” [已编辑]

作者: yuval reina (Grandmaster) | 比赛排名: 第7名

我使用了一个两阶段模型。

  1. 使用 EfficientNet (B5, B3) 对每张图像进行特征提取。
  2. 对每个序列使用 Transformer 来预测序列相关的类别以及每张图像上的“PE Present on Image”(图像上是否存在肺栓塞)。

这是我第二次在比赛中使用这种网络,关于该模型的详细描述可以在这里找到。

EfficientNet 模型细节

EfficientNet 的目标如下:

  • 原始目标图像为 PE Present on Image = 1。
  • 其他所有图像为 0。除了 Intermediate(中间)目标保持不变。

损失函数为加权 BCE(二元交叉熵)——权重反映了比赛的评估指标权重。
我使用了翻转、旋转、随机调整大小/裁剪、均值/标准差偏移作为数据增强。
我还使用了可训练的 3 窗口技术将 CT 图像转换为 jpeg 格式 (WSO)。

Transformer 模型细节

Transformer 是一个 4 层编码器(使用 Pytorch 的 transformer encoder 模块)。图像在序列中的相对和绝对位置被嵌入并添加到特征向量中(就像在 BERT 等 NLP transformer 中进行位置嵌入那样)。
损失函数反映了比赛的评估指标。

该模型的 LB 分数为 0.166

集成与“第二意见”机制

模型集成将 LB 提高到了 0.162,但在时间范围内我只能集成 2 个模型(我没有使用可以增加 25% 收益的公开/私有 LB 技巧)。为了改进这一点,我使用了一种“第二意见”机制——与其使用第二个模型对所有数据再次进行推理,我模仿医生的做法,只选择结果最不确定(接近 0.5)的序列,用另一个模型对它们进行推理并集成——我这样做了 3 次,每次处理约 30-40% 的数据,从而获得了相当于集成 4 个模型的效果 => LB 0.157

作为最后一步,我检查了是否有任何预测满足比赛的标签一致性要求,如果没有,则进行最小的更改以满足要求。

同比赛其他方案