{"cells":[{"metadata":{"_uuid":"6751e22b5d808e4dc0c47cd1e4132c49270150c5"},"cell_type":"markdown","source":"Reference\n\n* Awesome Kernel, thanks @martinpiotte : https://www.kaggle.com/martinpiotte/bounding-box-model\n* cropping.model: https://www.kaggle.com/martinpiotte/bounding-box-model/output\n* Data: https://www.kaggle.com/c/humpback-whale-identification/data\n* Bounding Boxes generation: https://www.kaggle.com/suicaokhoailang/generating-whale-bounding-boxes"},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"!apt-get install zip\nimport pandas as pd\nimport os\nimport numpy as np\nimport torch\nimport torch.nn as nn\nfrom torchvision import datasets\nfrom torchvision import transforms\nfrom torch.utils.data.sampler import SubsetRandomSampler\nimport torchvision.models as models\n\nfrom os import listdir\nfrom os.path import isfile, join\n\nfrom PIL import Image","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a7d17564758eeaf407c70bc7817f0e8ce60d266f"},"cell_type":"code","source":"TRAIN_CSV = '../input/humpback-whale-identification/train.csv'\nTRAIN = '../input/humpback-whale-identification/train'\nTEST = '../input/humpback-whale-identification/test'\nBBOX = '../input/generating-whale-bounding-boxes-ba9082/bounding_boxes.csv'\n\nTRAIN_CROPPED = 'output/humpback-whale-identification-cropped/train'\nTEST_CROPPED  = 'output/humpback-whale-identification-cropped/test'","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"train_csv = pd.read_csv(TRAIN_CSV)\nprint(train_csv[:10])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"292c61dad5d7a3094c01bfb71552c568243e9c9e"},"cell_type":"code","source":"bbox = pd.read_csv(BBOX)\nprint(bbox[:10])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"31848957703ecf9868d4971df97cf36e3350c28e"},"cell_type":"code","source":"!mkdir -p 'output/humpback-whale-identification-cropped/train'\n\ntrain_total = train_csv.shape[0]\ntrain_count = 0\n\nprint_every = 50\n\nfor row in train_csv.iterrows():\n    train_count += 1\n    res = row[1]['Image']\n    path = os.path.join(TRAIN, res)\n    dst = os.path.join(TRAIN_CROPPED, res)\n    img = Image.open(path).convert('RGB')\n    bbox_row = bbox[bbox['Image'] == res].iloc[0]\n    x0, y0, x1, y1 = bbox_row['x0'], bbox_row['y0'], bbox_row['x1'], bbox_row['y1']\n    img = img.crop((x0, y0, x1, y1))\n    img.save(dst, 'jpeg')\n    \n    if train_count % print_every == 0:\n        print(\"Cropping Training Set -> {:3.2f}%\".format((train_count/train_total) * 100), end=\"\\r\")\n\nprint(\"Cropping Training Set -> 100%\", end=\"\\r\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b6f0484375739c3cedd80cdecd008199a2123688"},"cell_type":"code","source":"!zip -rm train_cropped.zip output/humpback-whale-identification-cropped/train","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d54e5611df862a0030429372de6e4b54baffadf1"},"cell_type":"code","source":"!mkdir -p 'output/humpback-whale-identification-cropped/test'\n\ntest_count = 0\n\nprint_every = 50\n\nfiles = [f for f in listdir(TEST) if isfile(join(TEST, f))]\ntest_total = len(files)\n\nfor res in files:\n    test_count += 1\n    path = os.path.join(TEST, res)\n    dst = os.path.join(TEST_CROPPED, res)\n    img = Image.open(path).convert('RGB')\n    bbox_row = bbox[bbox['Image'] == res].iloc[0]\n    x0, y0, x1, y1 = bbox_row['x0'], bbox_row['y0'], bbox_row['x1'], bbox_row['y1']\n    img = img.crop((x0, y0, x1, y1))\n    img.save(dst, 'jpeg')\n    \n    if test_count % print_every == 0:\n        print(\"Cropping Testing Set -> {:3.2f}%\".format((test_count/test_total) * 100), end=\"\\r\")\n\nprint(\"Cropping Testing Set -> 100%\", end=\"\\r\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"709c2df476a6071e86170fc3ba4ed669ad2d8557"},"cell_type":"code","source":"!zip -rm test_cropped.zip output/humpback-whale-identification-cropped/test","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"6dc1995863c2cdf4f4cfaae458f2cfc88cf83087"},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}