記錄比賽過程中的所思所想。
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
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同時運算,計算結果,將所有的結果都輸出,然後放到一個腳本中去做推理。
- 回調函數
在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一起是否會更好一點。