535. RSNA Screening Mammography Breast Cancer Detection | rsna-breast-cancer-detection
恭喜所有获奖者和新晋竞赛 Grandmaster。感谢 Kaggle 团队、竞赛主办方以及所有积极参与论坛讨论的 Kagglers。我们团队的部分解决方案灵感来自于阅读大家慷慨分享的想法 💯
我对其他获奖团队的解决方案印象深刻,特别是那些使用多图像、多视角模型的方案。我们团队未能通过这些架构获得好的分数,因此选择了一条更简单的路线。
我们最终的提交是基于 10 个单图像模型的平均聚合结果(5 折交叉验证 × 2 个主干网络,分别为 efficientnetv2_s 和 efficientnet_b5_ns)。
训练过程分为两个阶段:
所有 Kaggle 数据和外部数据都进行了类似的预处理:
我们将 VinDR 的病灶边界框标注转换为每张图像的多个病灶标签,同时舍弃了坐标。随后,两个主干网络进行了为期 20 个 epoch 的多任务预训练,任务包括 BI-RADS 分类、乳腺密度分类和病灶分类。
model = timm.create_model(backbone_name)
model.reset_classifier(0, "")
model.birads_fc = nn.Linear(model.num_features, 5)
model.density_fc = nn.Linear(model.num_features, 4)
model.lesions_fc = nn.Linear(model.num_features, 11)
...
loss = cross_entropy(birads_logits, birads_labels) + cross_entropy(density_logits, density_labels) + binary_cross_entropy(lesions_logits, lesions_labels)
我们加载了第一阶段的最后一个 epoch 的检查点,并在 Kaggle+DDSM 数据上继续微调模型 10 个 epoch。确切的架构可以在我们的推理 notebook 中找到。这是一个深度监督模型,在 EffNet 的早期块上具有辅助损失。
由于数据极度不平衡,有许多重要的技巧对微调部分有很大帮助: