{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import pandas as pd\nfrom fastai.vision.all import *\nfrom fastai.callback.tracker import SaveModelCallback\nfrom fastai.metrics import error_rate, accuracy\n\nbase_path=\"/kaggle/input/cassava-leaf-disease-classification\"\ndataset_path = Path('../input/cassava-leaf-disease-classification')\ndf_train = pd.read_csv(base_path+\"/train.csv\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_train['path'] = df_train['image_id'].map(lambda x:dataset_path/'train_images'/x)\ndf_train = df_train.drop(columns=['image_id'])\ndf_train = df_train.sample(frac=1).reset_index(drop=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"if not os.path.exists('/root/.cache/torch/hub/checkpoints/'):\n        os.makedirs('/root/.cache/torch/hub/checkpoints/')\n!cp '../input/densenet121/densenet121.pth' '/root/.cache/torch/hub/checkpoints/densenet121-a639ec97.pth'","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"dls_128 = ImageDataLoaders.from_df(df_train, label_col=0, fn_col=1, item_tfms=Resize(128))\ndls_256 = ImageDataLoaders.from_df(df_train, label_col=0, fn_col=1, item_tfms=Resize(256), bs=12)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"learn_densenet121_resize128 = cnn_learner(dls_128, densenet121, metrics=[error_rate,accuracy], pretrained=True, normalize=True)\nlearn_densenet121_resize128.save('last_model')\n\nlearn_densenet121_resize256 = cnn_learner(dls_256, densenet121, metrics=[error_rate,accuracy], pretrained=True, normalize=True).load('last_model')\nlearn_densenet121_resize256 = cnn_learner(dls_256, densenet121, metrics=[error_rate,accuracy], pretrained=True, normalize=True)\nsave_callback_densenet121_resize256 = SaveModelCallback(fname='best_model', with_opt=True, monitor='valid_loss', reset_on_fit=False)\n\n# learn_densenet121_resize256.fine_tune(10, cbs=save_callback_densenet121_resize256)\nlearn_densenet121_resize256.fit_one_cycle(20, cbs=save_callback_densenet121_resize256)\n\nlearn_densenet121_resize256.lr_find()\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"learn_densenet121_resize256.save('model')\nlearn_densenet121_resize256.export()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_sample = pd.read_csv(dataset_path/'sample_submission.csv')\n\n_df_sample = df_sample.copy()\n_df_sample['path'] = _df_sample['image_id'].map(lambda x:dataset_path/'test_images'/x)\n_df_sample = _df_sample.drop(columns=['image_id'])\ntest_dl = dls_256.test_dl(_df_sample)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"preds, _ = learn_densenet121_resize256.tta(dl=test_dl, n=8, beta=0)\ndf_sample['label'] = preds.argmax(dim=-1).numpy()\ndf_sample.to_csv('submission.csv',index=False)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}