434. Human Protein Atlas - Single Cell Classification | hpa-single-cell-image-classification
首先,我要感谢 Kaggle 和主办方举办了这场非常有趣的比赛。感谢我的队友 @silversh 和 @jianguoguo 的辛勤工作和合作。
祝贺所有的获胜者。这是我第一次参加 Kaggle 比赛,我在论坛上学到了很多不错的想法和解决方案。
我们的最终解决方案包括用于细胞标签挖掘的主动学习和不同模型的集成。
因为我之前没有参加过 Kaggle 比赛,不确定是否允许进行数据标签挖掘。因此,我们尝试使用主动学习来挖掘细胞标签的时间比较晚。由于时间限制,我们仅将其应用于少数类别,即第 9、11、12 和 15 类。
首先,我们选择单标签图像中的细胞作为初始训练集,细胞标签直接继承图像标签。对于图像较少的第 11 和 15 类,我们手动选择了约 200 个带有真实标签的细胞放入初始训练集。在初始训练集上训练模型后,该模型用于对所有图像中的细胞进行预测。使用以下策略为下一轮准备训练集。
如果一张图像包含原始标签 X,且该图像中某个细胞的预测置信度大于 0.25,则保留该细胞的标签 X,否则将该细胞从下一轮训练集中移除。如果一张图像不包含原始标签 X,且该图像中某个细胞的预测置信度大于 0.5,则该细胞将被分配真实标签 X。
经过几轮后,大多数细胞标签的噪声可以被抑制。例如,经过 4 轮后,我们最终为第 11 类检索了约 2,000 个细胞。在最终的公共测试集上,第 11 类的 AP 分数从 0.001 提高到了 0.035。
主动学习的具体原理可以参考我之前的论文 https://doi.org/10.1016/j.future.2019.07.013。
我们使用集成方法来融合细胞级模型和图像级模型。权重分别为 0.75 和 0.25。细胞级模型采用 EfficientNet-B3 网络,细胞分数经过 5 折交叉验证后取平均值。对于图像级模型,我们分别训练了具有 RGBY 4 通道图像输入和 Green 1 通道图像输入的 EfficientNet-B7 网络,图像分数取自两个图像级模型的平均值。具体来说,当融合细胞级模型和图像级模型时,第 11 类的预测结果仅使用细胞级模型的预测分数。
| 模型 | 进行主动学习的类别 | Public LB | Private LB |
|---|---|---|---|
| 仅一个细胞级模型 | 第 11、15 类(第 1 轮) | 0.446 | 0.465 |
| 仅一个细胞级模型 | 第 11、15 类(第 2 轮) | 0.462 | 0.494 |
| 仅一个细胞级模型 | 第 11、15 类(第 4 轮) | 0.502 | - |