{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.7.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import torch\nfrom torch.utils.data import Dataset\nfrom torchvision import datasets\nimport torchvision.transforms as transforms\nfrom torchvision.transforms import ToTensor\nimport matplotlib.pyplot as plt\nimport os","metadata":{"execution":{"iopub.status.busy":"2022-10-31T13:08:11.403531Z","iopub.execute_input":"2022-10-31T13:08:11.40399Z","iopub.status.idle":"2022-10-31T13:08:13.233213Z","shell.execute_reply.started":"2022-10-31T13:08:11.403925Z","shell.execute_reply":"2022-10-31T13:08:13.23225Z"},"trusted":true},"execution_count":2,"outputs":[]},{"cell_type":"code","source":" import torchvision.models as models\n resnet18 = models.resnet18(pretrained=True)","metadata":{"execution":{"iopub.status.busy":"2022-10-31T13:08:13.234982Z","iopub.execute_input":"2022-10-31T13:08:13.235667Z","iopub.status.idle":"2022-10-31T13:08:15.796063Z","shell.execute_reply.started":"2022-10-31T13:08:13.235636Z","shell.execute_reply":"2022-10-31T13:08:15.795242Z"},"trusted":true},"execution_count":3,"outputs":[{"name":"stderr","text":"Downloading: \"https://download.pytorch.org/models/resnet18-f37072fd.pth\" to /root/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"  0%|          | 0.00/44.7M [00:00<?, ?B/s]","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"2913ffa3ec1f4e04bbacd57a1e5565f7"}},"metadata":{}}]},{"cell_type":"code","source":"# !wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_val.tar\ndataset = datasets.ImageNet\nnormalize = transforms.Normalize(\nmean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]\n)\ninput_transform = transforms.Compose(\n[\n    transforms.Resize(256),\n    transforms.CenterCrop(224),\n    transforms.ToTensor(),\n    normalize,\n]\n)\n","metadata":{"execution":{"iopub.status.busy":"2022-10-31T13:08:15.797811Z","iopub.execute_input":"2022-10-31T13:08:15.798493Z","iopub.status.idle":"2022-10-31T13:08:15.805042Z","shell.execute_reply.started":"2022-10-31T13:08:15.798455Z","shell.execute_reply":"2022-10-31T13:08:15.804138Z"},"trusted":true},"execution_count":4,"outputs":[]},{"cell_type":"code","source":"\n\ndef ilsvrc2012(path, bs=256):\n\n    traindir = os.path.join(path, 'train')\n    valdir = os.path.join(path, 'val')\n    \n    print(\"Training dir: \", traindir, \"  Validation dir: \",valdir)\n    normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],\n                                     std=[0.229, 0.224, 0.225])\n    print(\"Preparing train dataset....\")\n\n    train_dataset = datasets.ImageFolder(\n        traindir,\n        transforms.Compose([\n            transforms.RandomResizedCrop(224),\n            transforms.RandomHorizontalFlip(),\n            transforms.ToTensor(),\n            normalize,\n        ]))\n    \n    torch.save(train_dataset, 'train_dataset.pth')\n    print(\"Train dataset saved.\")\n    \n    print(\"Preparing train loader....\")\n\n    train_loader = torch.utils.data.DataLoader(\n        train_dataset, batch_size=bs, shuffle=True,\n        num_workers=8, pin_memory=True)\n    \n    torch.save(train_loader, 'train_loader.pth')\n\n    print(\"Train loader done.\")\n    print(\"Preparing val loader....\")\n\n    val_loader = torch.utils.data.DataLoader(\n        datasets.ImageFolder(valdir, transforms.Compose([\n            transforms.Resize(256),\n            transforms.CenterCrop(224),\n            transforms.ToTensor(),\n            normalize,\n        ])),\n        batch_size=bs, shuffle=False,\n        num_workers=8, pin_memory=True)\n        \n    torch.save(val_loader, 'val_loader.pth')\n    \n    print(\"Val loader done.\")\n\n    return train_loader, val_loader","metadata":{"execution":{"iopub.status.busy":"2022-10-31T13:08:15.807376Z","iopub.execute_input":"2022-10-31T13:08:15.808106Z","iopub.status.idle":"2022-10-31T13:08:15.820923Z","shell.execute_reply.started":"2022-10-31T13:08:15.808053Z","shell.execute_reply":"2022-10-31T13:08:15.819967Z"},"trusted":true},"execution_count":5,"outputs":[]},{"cell_type":"code","source":"train_loader, val_loader = ilsvrc2012('../input/imagenet-object-localization-challenge/ILSVRC/Data/CLS-LOC')","metadata":{"execution":{"iopub.status.busy":"2022-10-31T13:08:15.822112Z","iopub.execute_input":"2022-10-31T13:08:15.822385Z"},"trusted":true},"execution_count":null,"outputs":[{"name":"stdout","text":"Training dir:  ../input/imagenet-object-localization-challenge/ILSVRC/Data/CLS-LOC/train   Validation dir:  ../input/imagenet-object-localization-challenge/ILSVRC/Data/CLS-LOC/val\nPreparing train dataset....\n","output_type":"stream"}]},{"cell_type":"code","source":"torch.save(resnet18, 'resnet18_model.pth')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"torch.save(train_loader, 'train_loader.pth')","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}