返回列表

28th solution/ with self-supervised learning

434. Human Protein Atlas - Single Cell Classification | hpa-single-cell-image-classification

开始: 2021-01-26 结束: 2021-05-11 生命科学 数据算法赛
第28名解决方案 / 基于自监督学习

第28名解决方案 / 基于自监督学习

作者: Sky walker, howard.G | 比赛排名: 第28名

感谢主办方举办了这场非常有趣的比赛,我们在比赛中学到了很多。

代码链接:https://github.com/tuotuo-1997/HPA

方法概述

我们使用 Kaggle 提供的数据集和公共数据集,采用不同的模型架构进行训练和评估。使用的公共工具包括 Fastai、Opencv、CellSegmentator、Cleanlab 等。

我们从全图和细胞两个维度共分类了 12 个模型。用于细胞分类的 8 种不同模型结构为:Resnet18、34、50、101,Densenet121,Efficientnet B0、B1 和 B2。细胞标签的分配与全图保持一致。用于全图分类的 4 种不同模型结构为:Efficientnet B0、B1、B2 和 B3。

我们使用 Adam 作为优化器。对于细胞模型,每个模型总共训练 4 个 epoch;对于全图模型,每个模型训练 6 个 epoch。初始学习率设置为 3e-2。将细胞和全图的预测概率取平均值以获得最终结果。

我们方法的改进主要集中在以下 5 点:

  • 自监督学习 (SSL)。
  • HPA 公共数据集。
  • 结合细胞级和全图级结果。
  • 非对称损失函数。
  • 将绿色通道最大值小于 60 的细胞标签修改为 18。
  • 模型集成。

在 8 张 1080Ti 上训练整个 12 个模型的时间约为 48 小时。使用单张 2080Ti 提交到 Kaggle(针对公开测试集)大约需要 1.5 小时。代码提交后,Kaggle 内核的预测时间约为 9 小时(针对所有测试集)。

结论

使用非对称损失函数对于缓解类别不平衡非常重要,而自监督学习有助于提高性能。结合细胞和全图的预测结果也能极大地改善实验结果。

同比赛其他方案