返回列表

[34th place solution] Single model Yolov5

425. VinBigData Chest X-ray Abnormalities Detection | vinbigdata-chest-xray-abnormalities-detection

开始: 2020-12-30 结束: 2021-03-30 医学影像分析 数据算法赛
[第34名方案] Yolov5 单模型

[第34名方案] Yolov5 单模型

作者:Phat Tran
原文发布日期:2021-03-31

祝贺所有的获胜者,特别感谢 Vingroup Big Data Institute 组织了这场非常有趣的比赛,我从中学到了很多。

在比赛开始时,我决定使用 Retinanet(参考这篇文章),但在将近两个月的时间里我无法提高我的分数。后来我注意到 @awsaf49Yolov5 notebook 显示出了有希望的结果,于是我转而使用 Yolov5,mAP 有了显著提升(真希望我早点意识到这一点 :)),然后我就坚持使用它了。

我的方案是 5 折 Yolov5x 的集成(感谢 Glenn Jocher),并使用 2 类过滤器分类器来移除正常图像。

预处理

  • 使用 WBF(加权框融合)融合框,IOU 设为 0.5。
  • 基于边界框的位置/宽度/高度/宽高比/面积,通过数据可视化(条形图)移除(错误的)标注。
  • 我注意到训练数据中 Calcification(钙化)类的边界框有时与 Aortic enlargement(主动脉扩大)重叠,但我的模型预测的框较小,所以我决定利用 Retinanet 模型的预测来修正它们。
  • 5 折分层划分,使用此代码库:https://github.com/trent-b/iterative-stratification

检测

  • YoloV5x (640x640) 的 5 折集成,使用代码库提供的权重进行初始化。
  • 配置:大部分与 hyp.scatch.yaml 相同。但我更改了一些增强设置,如下所示:
    • Scale(缩放): 0.6
    • Translate(平移): 0.2
    • Degrees 和 Shear(旋转和剪切): 0.1 (可能太小了)
    • Mosaic(马赛克增强): 0.7
  • 此外,受 ZFTurbo帖子启发,我添加了随机强度增强 [-10, 10]。

分类(2 类过滤器)

  • 我之前一直专注于改进检测模型,而忘记了分类的重要性,后来我尝试训练自己的分类器模型,与 @awsaf49结果相比,私有数据上的分数提高了 0.001。
模型 公共分数 私有分数
4 折集成 0.279 0.272
Awsaf 结果 0.281 0.271
  • 我在 4 折中训练了 EfficientNetB5 (noisy student),并根据预测值与真实值之间的差异移除混淆图像:如果 (预测值 - 真实标签) > 0.95,则移除(预测错误但置信度过高)。
  • 然后我使用清洗后的数据再次训练 EfficientB5,4 折集成在验证数据上的 AUC 分数如下:
折数 AUC
0 0.9935