美文网首页工作生活
kaggle竞赛报告:APTOS 2019 Blindness

kaggle竞赛报告:APTOS 2019 Blindness

作者: 深度学习模型优化 | 来源:发表于2019-07-07 23:01 被阅读0次

    记录比赛过程中的所思所想。

    1 基线模型

    1.1 model 1

    地址为
    Intro APTOS Diabetic Retinopathy (EDA & Starter)

    这个代码主要使用的是fastai的框架。

    1.2 model 2

    地址为baseline-APTOS 2019 Blindness Detection

    1.3 model 3

    efficientnet-pytorch-ignite

    2 基线模型的改进

    2.1 数据

    存在严重的训练 样本不均衡的问题。
    两种方法

    • 将前几年比赛的数据加入进来。
    • 数据增广

    2.2 模型

    想使用EfficientNet来做训练,这个有现成脚本,但是需要进行模型的预训练,训练和推理也要分开在两个kernel上跑。但是7月1日的早上,看到了大佬的新kernel,于是乎,果断的fork。爽!
    在大佬的基础上在做一些TTA,以期望提高识别效果。当然是用EN已经感觉将会有很大的提高。

    使用sklearn的

    2.3 损失函数

    使用Focal Loss来平衡难易样本。

    2.4 模型的trick

    因为本地没有比较强的算力,所以使用kaggle的kernel来计算结果。
    这里使用3个kernel同时运算,计算结果,将所有的结果都输出,然后放到一个脚本中去做推理。

    1. 回调函数
      在fastai框架中使用了early stop和记录最优模型的回调函数,
      先总结下fastai的重要回调函数:
      详细内容可以参考这里。
    • TerminateOnNaNCallback
    learn = Learner(data, model, metrics=[accuracy], callbacks=[TerminateOnNaNCallback()])
    
    • EarlyStoppingCallback
    learn = Learner(data, model, metrics=[accuracy], 
                    callback_fns=[partial(EarlyStoppingCallback, monitor='accuracy', min_delta=0.01, patience=3)])
    
    • SaveModelCallback
    learn.fit_one_cycle(5,1e-4, callbacks=[SaveModelCallback(learn, every='epoch', monitor='accuracy', name='model')])
    
    • ReduceLROnPlateauCallback

    回调函数在fastai中的使用倒还好,这个focal loss在fastai设置的就问题多了。如果真正想灵活使用fastai还是要将pytorch的基础知识和fastai的代码框架弄明白。

    在fastai用的不是很6的情况下,可以使用keras和pytorch在kaggle比赛中使用各种灵活的方法。

    2)损失函数
    本来使用Focal和Fbeta一起是否会更好一点。

    3 结果比对

    3.1 列表对比

    3.2 结果分析

    相关文章

      网友评论

        本文标题:kaggle竞赛报告:APTOS 2019 Blindness

        本文链接:https://www.haomeiwen.com/subject/rdfbcctx.html