반응형

 

 

 

 
3rd ML Month - 14th solution

image
 

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]

  1. EfficientNet_basic

Version3[Public Score = 0.828]

  1. Data Augmentation

Version8[Public Score = 0.924]

  1. Callbacklist(EarlyStopping, ReduceLROnPlateau, ModelCheckpoint)
  2. 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]

  1. 5fold -> 6fold

Version25[Public Score = 0.954]

  1. Cutout Augmentation
  2. TTA

Version122[Public Score = 0.955]

  1. Model(EfficientNetB3 -> EfficientNetB4)
  2. imgsize(299 -> 380)
  3. Version119, Version120 Model training

Version135[Public Score = 0.956] - Semi-supervised Learning

  1. Pseudo Label dataset
  2. Version132, Version133 Model training
  3. Keras Semi-supervised Learning Notebooks

Version135[Public Score = 0.958]

  1. Transfer Learning,
  2. 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]

  1. 위 세개 모델의 output을 feature사용 train_shape - (14594, 588)
  2. if class ==1, 1 else 0 이런식으로 총 196번 훈련
  3. 5-fold를 사용해 학습
  4. predict 결과를 argmax를 통해 class할당
  • class 196개를 한번에 돌리면 학습이 안됨
  • 196번 훈련 및 예측으로 인하여 class가 두,세번 예측되어 196을 넘어가는 경우가 많음(f1 스코어를 통해 최적화하는 방법을 시도하지 못했습니다.

2. Mixup augmentation

  • Mixup 시도하였으나 f1스코어가 떨어졌습니다. class별 훈련데이터가 적어서 그렇지않을까 생각합니다. image

3. Cutout augmentation

  • Cutout augmentation이란 사진의 일정부분을 제거하는 데이터 증각기법입니다. image

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을 늦게 시도하여 과적합을 잡지 못한것이 아쉬움이 남습니다. image
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

+ Recent posts