```html
第38名解决方案(私有榜单0.52,最高分0.55)
自从我开始学习数据分析以来,经常听人提起Kaggle,心中一直充满敬佩。如果这次比赛顺利结束,我将成为在Kaggle参赛两年后达到竞赛大师级别的人!感谢大家!
Gunes Evitan的pyvips代码在比赛中给了我很大帮助。
https://www.kaggle.com/code/gunesevitan/libvips-pyvips-installation-and-getting-started
预处理
使用比赛提供的背景后,我们应用了大津阈值法(Otsu threshold)。然后将图像裁剪为512×512的尺寸并保存。
训练
- 模型:VIT-s + TransMIL
- 数据增强:垂直翻转、水平翻转、CLAHE、随机伽马校正、网格畸变、位移缩放旋转
- 优化器与学习率:由于VIT-s已预训练而MIL容易过拟合,VIT-s使用1e-6学习率,MIL使用1e-5学习率,并对各部分应用EMA。使用AdamW优化器和交叉熵损失(CE)。
optimizer = torch.optim.AdamW([{'params': model.image_extractor.parameters(),'lr':1e-6}, {'params': model.mil.parameters()}], lr=1e-5, weight_decay=1e-3)
extractor_ema = ModelEma(model.image_extractor, decay=ema_decay, device=None, resume='')
mil_ema = ModelEma(model.mil, decay=ema_decay, device=None, resume='')
我尝试了两种方法:
- 仅训练MIL:弱监督方法,使用VIT-s模型从图像块提取特征后仅用这些特征训练
- 联合训练图像编码器:从512×512图像块中随机选择100张用于训练和评估
两种方法中,方法2获得了更好的公开榜单分数。
有效改进方法
- 1536×1536伪标签:使用512×512训练的MIL为1536×1536图像生成伪标签,选取概率≥0.5的图像训练TMA预测模型。虽未提升公开榜单分数,但私有榜单达到0.55
- 异常检测:每类使用二元交叉熵训练,经sigmoid后若所有类预测值<0.5则判为"其他"。虽不精确,但分数提升约0.1
- 上采样:效果优于加权交叉熵
无效尝试
- staintools:使用该工具进行颜色增强,但效果不明显
- 外部数据集:卵巢癌贝伐珠单抗应答数据集。将该数据集中'UC'类作为"其他"训练,但完全无效
```