434. Human Protein Atlas - Single Cell Classification | hpa-single-cell-image-classification
在本次比赛中,似乎有多种可行的方法,如细胞级分类或图像级热图预测。在比赛初期,我尝试使用原始图像级标签运行检测模型(mmdetection 和 yolo),但未能获得好的分数。这让我意识到,图像级标签很难准确代表每个细胞的标签。
随后,我想尝试基于 CAM(类激活映射)的模型。Puzzle-CAM 论文及其实现很容易上手。我的最终模型基于 Puzzle-CAM,没有对训练模式或模型架构进行太多修改。
数据增强:
随机裁剪输入图像尺寸的约 80%
随机翻转/转置
随机亮度/对比度
随机遮罩
优化器: AdamW
轮数: 10
损失函数: 用于分类的多标签软边界损失 + 用于重建的 L1 损失
学习率: 从 1e-4 线性递减至 1e-6
每个细胞的概率是通过将图像级概率与归一化的 CAM logits 相乘计算得出的。使用滑动窗口对输入图像进行预测。
TTA(测试时增强):2 次翻转和 3 个尺度(0.75, 1.00, 1.50)
模型:Densenet121
输入分辨率:800x800 -> 512x512 裁剪
数据集:仅比赛数据
LB:0.457 (public)
数据集:比赛数据 + 外部数据
LB:0.481 (public)
输入分辨率:1280x1280 -> 1024x1024 裁剪
LB:0.503(public)
模型:Xception
LB:0.527(public)
LB:0.495(private)
我曾尝试通过裁剪单个细胞并使用从 CAM 模型找到的标签进行训练来制作细胞级分类器。但标签仍然存在噪声,且效果不如 CAM 模型。因此,最终方案中没有使用细胞级模型。
我也尝试过集成基于 CAM 的模型。训练了 Densenet121、Resnest50 和 Xception 模型(每个均为单折)。Xception 的表现优于其他模型,集成带来的提升很小。因此决定采用单模型和 TTA。
我还实验了一些损失函数,如 Focal Loss、Asymmetric Loss For Multi-Label Classification 和 Sharpness-Aware Minimization。它们都适合这个问题,但可能需要更多的超参数调整。