#!/usr/bin/env python # coding: utf-8 # In[1]: get_ipython().run_line_magic('reload_ext', 'autoreload') get_ipython().run_line_magic('autoreload', '2') get_ipython().run_line_magic('matplotlib', 'inline') import os os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"; os.environ["CUDA_VISIBLE_DEVICES"]="0" import ktrain from ktrain import vision as vis # In[2]: DATADIR = 'data/planet' ORIGINAL_DATA = DATADIR+'/train_v2.csv' CONVERTED_DATA = DATADIR+'/train_v2-CONVERTED.csv' labels = vis.preprocess_csv(ORIGINAL_DATA, CONVERTED_DATA, x_col='image_name', y_col='tags', suffix='.jpg') # In[3]: trn, val, preproc = vis.images_from_csv( CONVERTED_DATA, 'image_name', directory=DATADIR+'/train-jpg', val_filepath = None, label_columns = labels, data_aug=vis.get_data_aug(horizontal_flip=True, vertical_flip=True)) # In[5]: model = vis.image_classifier('pretrained_resnet50', trn, val_data=val) learner = ktrain.get_learner(model, train_data=trn, val_data=val, batch_size=64, workers=8, use_multiprocessing=False) learner.freeze(2) # In[6]: learner.lr_find() learner.lr_plot() # In[9]: learner.fit_onecycle(1e-4, 20) # In[10]: from sklearn.metrics import fbeta_score import numpy as np import warnings def f2(preds, targs, start=0.17, end=0.24, step=0.01): with warnings.catch_warnings(): warnings.simplefilter("ignore") return max([fbeta_score(targs, (preds>th), 2, average='samples') for th in np.arange(start,end,step)]) # In[15]: y_pred = learner.model.predict_generator(val) y_true = val.labels # In[16]: f2(y_pred, y_true) # In[ ]: