返回列表

46th place with classification and barely using external data.

338. APTOS 2019 Blindness Detection | aptos2019-blindness-detection

开始: 2019-06-28 结束: 2019-09-07 医学影像分析 数据算法赛
第46名方案:使用分类方法且几乎未使用外部数据

第46名方案:使用分类方法且几乎未使用外部数据

作者: Miroslav Valan
比赛排名: 第46名

恭喜所有的获奖者以及那些学到了新东西的人!我当然学到了很多。

我想尝试一下 fastai,参加这次比赛是因为我以为数据集很小。哎,我大错特错了。

方案详情

  • 软件: Fastai
  • 资源: 仅限 Kaggle Kernels
  • 网络架构: EfficientNet 2xB3, 2xB5 和 1x seresnext101,每个模型均使用5折交叉验证
  • 预处理: 部分模型使用了裁剪,其他模型未进行预处理。
  • 数据增强: 训练变换包括亮度、对比度、hflip()、vflip()(部分模型),以及两种自定义过程:不同比例(从1:1到4:3)的随机缩放,有时裁剪至4:3比例。
  • 优化器: Adam
  • 损失函数: 带有标签平滑的交叉熵(CE with label smoothing)
  • 学习率调度器: one_cycle,最大值为 6e-4
  • 验证方式: 官方数据5折分层验证,如果使用外部数据,仅添加到训练集而不加入验证集。

分数表现

我进行了快速提交,所以只知道 Public LB(公开排行榜)的成绩:

仅使用官方数据:

  • B3: 0.813 (448px)
  • B5: 0.817 (456px)
  • seresnext101: 0.799 (416px)

官方数据 + 外部训练数据(每类截断至2000个样本):

  • B3: 0.822 (456px)
  • B5: 不太确定,但 CV 提升到了 0.94+ 所以我加上了它 (512px)。在这里我相信直觉,也就是相信我的 CV。

最终提交

  • 提交0: 合并所有 EfficientNet 输出,无 TTA。Public LB: 0.831,Private: 0.925。
  • 提交1: 合并所有 EfficientNet 输出 + h_flip。Public LB: 0.828,Private: 0.925。
  • 提交2: 合并所有输出 + h_flip。Public LB: 0.829,Private: 0.926。

策略说明:

  • 排除了提交1,因为我认为加上 h_flip 会更稳健。这是个好决定。
  • 在之前的某些比赛中,我只会集成 LB 分数最高的模型,但在这里我只做了相关性 <0.9 的模型集成。
  • 我在最后一天加入了 seresnext,虽然它在 Public LB 上表现似乎不太好,但结果证明它在 Private 上表现相当不错。我早期用 seresnext 做的一些尝试得分约为 0.79(Public),这在 Private 上转化为约 0.92。

总结

考虑到以下情况,我非常满意:

  • 我将其视为分类任务而不是回归任务(虽然回归可能更合适)。
  • 我几乎没使用外部数据(GPU 限制扼杀了我的主要计划,我第一次失去了动力)。
  • 我使用了 fastai,它很容易上手,但我发现实现自己的想法(如多头输出和不同损失的组合)并不那么直接。(所以我第二次失去了动力)。
  • 我没有使用伪标签。
  • 我也开始分享解决方案并讨论话题。

有趣的事实: 我是一名正在休育儿假的兽医,我的大部分实验是通过手机完成的。

同比赛其他方案