반응형
¶
14th solution - CNN-Stacking¶
Model composition Notebooks¶
¶
EfficientNetB4[Public Score = 0.95600]
- Model training(v143, v144, v145, v146, v147)
Xception[Public Score = 0.94787]
- Model training(v230, v231, v233, v234, v239)
Resnet50[Public Score = 0.92682]
- Model training(v247, 249, v249)
CNN structure¶
Input(shape=(None, number of models, number of classes,1))
Conv2D(filters=8, kernelsize=(1, 1))
Conv2D(filters=16, kernelsize=(1, 1))
Dropout(0.5)
Conv2D(filters=32, kernelsize=(2, 1))
Dropout(0.5)
Conv2D(filters=64, kernelsize=(2, 1))
Dropout(0.5)
Flatten()
Dense(1024)
Dense(196, activation='softmax')
5-fold¶
- validation set shape - (14594, 3, 196, 1)
- Training this model with Kfold (k=5) on the validation set,
- Optimizer - AdamAccumulate[Public Score = 0.95791]
- Optimizer = adam [Public Score = 0.96174]
Notebooks update¶
Version1[Public Score = 0.811]¶
- EfficientNet_basic
Version3[Public Score = 0.828]¶
- Data Augmentation
Version8[Public Score = 0.924]¶
- Callbacklist(EarlyStopping, ReduceLROnPlateau, ModelCheckpoint)
- ayers.Dense(1024) -> layers.Dense(2048)
Version9[Public Score = 0.950] - Weighted average ensemble through cross validation¶
1. **fold1** : [Public 0.903]
2. **fold2** : [Public 0.923]
3. **fold3** : [Public 0.916]
4. **fold4** : [Public 0.926]
5. **fold5** : [Public 0.926]
- **Ensemble** [Public 0.950]
Version19[Public Score = 0.951]¶
- 5fold -> 6fold
Version25[Public Score = 0.954]¶
- Cutout Augmentation
- TTA
Version122[Public Score = 0.955]¶
- Model(EfficientNetB3 -> EfficientNetB4)
- imgsize(299 -> 380)
- Version119, Version120 Model training
Version135[Public Score = 0.956] - Semi-supervised Learning¶
- Pseudo Label dataset
- Version132, Version133 Model training
- Keras Semi-supervised Learning Notebooks
Version135[Public Score = 0.958]¶
- Transfer Learning,
- Optimizer( adam -> AdamAccumulate)
Version314[Public Score = 0.961] - CNN-stacking¶
Try¶
1. xgboost-stacking[Public Score = 0.94882]¶
EfficientNetB4[Public Score = 0.95600]
Xception[Public Score = 0.94787]
Resnet50[Public Score = 0.92682]
- 위 세개 모델의 output을 feature사용 train_shape - (14594, 588)
- if class ==1, 1 else 0 이런식으로 총 196번 훈련
- 5-fold를 사용해 학습
- predict 결과를 argmax를 통해 class할당
- class 196개를 한번에 돌리면 학습이 안됨
- 196번 훈련 및 예측으로 인하여 class가 두,세번 예측되어 196을 넘어가는 경우가 많음(f1 스코어를 통해 최적화하는 방법을 시도하지 못했습니다.
2. Mixup augmentation¶
- Mixup 시도하였으나 f1스코어가 떨어졌습니다. class별 훈련데이터가 적어서 그렇지않을까 생각합니다.
3. Cutout augmentation¶
- Cutout augmentation이란 사진의 일정부분을 제거하는 데이터 증각기법입니다.
3. Ensemble¶
EfficientNetB4[Public Score = 0.95600]
Xception[Public Score = 0.94787]
Resnet50[Public Score = 0.92682]
위의 세개의 모델로 가중평균 앙상블 을 시도했습니다. Public Score 는 0.95695로 낮게 나왔지만, 최종 Private Score는 0.95663로 최종점수보다 약2% 높은 점수를 얻었습니다. 앙상블의 힘이 대단하다는 것을 다시 한번 느낍니다
Result¶
- 최종적으로 156명중 14등을 기록했습니다. 앙상블의 힘을 다시한번 느꼈으며, CNN Stacking을 늦게 시도하여 과적합을 잡지 못한것이 아쉬움이 남습니다.
In [2]:
from IPython.core.display import display, HTML
display(HTML("<style>.container {width:90% !important;}</style>"))
반응형
'competition' 카테고리의 다른 글
[1st] Cassava Leaf Disease Classification -EDA (0) | 2021.01.10 |
---|---|
DACON - 천체 유형 분류대회 후기(3th) (0) | 2020.05.02 |
Pseudo Labelling (0) | 2019.11.06 |
Compare optimizer of efficientNet (2) | 2019.11.06 |
Frequency Encoding이란? (0) | 2019.10.17 |