kaggle競賽報告:APTOS 2019 Blindness Detection 1 基線模型 2 基線模型的改進 3 結果比對

記錄比賽過程中的所思所想。

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 結果分析

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章