{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"!mkdir -p /tmp/pip/cache/\n!cp ../input/resources-for-google-landmark-recognition-2020/efficientnet_pytorch-0.6.3-py3-none-any.whl /tmp/pip/cache/\n!pip install --no-index --find-links /tmp/pip/cache/ efficientnet_pytorch","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"_kg_hide-output":false},"cell_type":"code","source":"\nfrom __future__ import print_function, division\nimport numpy as np\nimport pandas as pd\nimport torch\n\nimport torch.nn as nn\nfrom torch.autograd import Variable\nfrom torchvision import datasets, transforms\nimport numpy as np\nimport torch.nn.functional as FUN\nimport os\nfrom scipy import io\nimport json\nfrom efficientnet_pytorch import EfficientNet\nfrom PIL import Image, ImageDraw, ImageFont\n\nOUTPUT_DIR = './'\ninput_size = 224\nclass_num = 5\nimage_dir = '../input/cassava-leaf-disease-classification/test_images/'\nuse_gpu = torch.cuda.is_available()\nlabellat=[]\nfilelist = os.listdir(image_dir)\nif not os.path.exists(OUTPUT_DIR):\n    os.makedirs(OUTPUT_DIR)\n\ndef test_model(model):\n    model.eval()\n    tfms = transforms.Compose([transforms.Resize(300), transforms.ToTensor(),\n    transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),])\n    for m in range(len(filelist)):\n        image = Image.open(image_dir+filelist[m])\n        img = tfms(image).unsqueeze(0)\n        img = Variable(img.cuda())\n\n        labels_map = json.load(open('../input/5leijihe/5lei.txt'))\n        labels_map = [labels_map[str(i)] for i in range(5)]\n\n\n        with torch.no_grad():\n            outputs = model(img)\n        # Print predictions\n        print('-----')\n        cout = 0\n        pp=0\n        for idx in torch.topk(outputs, k=5).indices.squeeze(0).tolist():\n            cout += 1\n            prob = torch.softmax(outputs, dim=1)[0, idx].item()\n            #print('{label:<75} ({p:.2f}%)'.format(label=labels_map[idx], p=prob*100))\n\n\n            if pp<prob*100:\n                pp=prob*100\n                print('{label:<75} ({p:.2f}%)'.format(label=labels_map[idx], p=prob*100))\n                labellat.append(idx)\n    a=np.array(filelist)\n    b=np.array(labellat)\n    required_details = []\n    for i in range(len(b)):\n        required_details.append([a[i]])\n        \n        required_details.append([ b[i]])\n    red=np.array(required_details)\n    \n    sub = pd.DataFrame(red.reshape(-1,2), columns=['image_id', 'label'])\n    sub.to_csv(OUTPUT_DIR+'submission.csv', index=False)\n    sub.head()\n        \n\n\n\nif __name__ == '__main__':\n    model_ft = EfficientNet.from_name('efficientnet-b4')\n    num_ftrs = model_ft._fc.in_features\n    print(num_ftrs)\n    model_ft._fc = nn.Linear(num_ftrs, class_num)\n    \n    \n    if use_gpu:\n        model_ft = model_ft.cuda()\n    \n    print('-' * 10)\n    print('Test Accuracy:')\n    model_ft.load_state_dict(torch.load(\"../input/darknesszx/tf_efficientnet_b4_ns_fold_0_9\"))\n    # criterion = nn.CrossEntropyLoss().cuda()\n    test_model(model_ft)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"","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}