{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":45867,"databundleVersionId":6924515,"sourceType":"competition"}],"dockerImageVersionId":30587,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import os\n!export CV_IO_MAX_IMAGE_PIXELS=1099511627776\nos.environ[\"OPENCV_IO_MAX_IMAGE_PIXELS\"] = str(pow(2,40))\nimport cv2\nimport numpy as np\nimport pandas as pd\nimport albumentations as A\nimport matplotlib.pyplot as plt\nfrom tqdm import tqdm","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-11-17T09:01:38.490159Z","iopub.execute_input":"2023-11-17T09:01:38.490801Z","iopub.status.idle":"2023-11-17T09:01:43.102726Z","shell.execute_reply.started":"2023-11-17T09:01:38.49075Z","shell.execute_reply":"2023-11-17T09:01:43.101514Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_path = \"/kaggle/input/UBC-OCEAN/train_images\"\ntrain_df = pd.read_csv(\"/kaggle/input/UBC-OCEAN/train.csv\")\n\ndef read_image(image_id):\n    image_path = os.path.join(train_path, f\"{image_id}.png\")\n    image = cv2.imread(image_path)\n    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n    return image\n\n# train_df\n# image = read_image(10077)","metadata":{"execution":{"iopub.status.busy":"2023-11-17T09:01:43.104939Z","iopub.execute_input":"2023-11-17T09:01:43.105848Z","iopub.status.idle":"2023-11-17T09:01:43.126893Z","shell.execute_reply.started":"2023-11-17T09:01:43.105783Z","shell.execute_reply":"2023-11-17T09:01:43.125853Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"crop_size = 384","metadata":{"execution":{"iopub.status.busy":"2023-11-17T09:01:43.128894Z","iopub.execute_input":"2023-11-17T09:01:43.129374Z","iopub.status.idle":"2023-11-17T09:01:43.135377Z","shell.execute_reply.started":"2023-11-17T09:01:43.12933Z","shell.execute_reply":"2023-11-17T09:01:43.133828Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def random_crop(image, num_recrop=5, criterion=0.5, crop_size=512, verbose=False):\n    transforms = A.Compose([\n        A.RandomCrop(crop_size, crop_size)\n    ])\n    \n    image_transformed = image\n    while num_recrop > 0:\n        image_transformed = transforms(image=image)['image']\n        if (image_transformed==0).mean() < criterion:\n            break\n        num_recrop -= 1\n        if verbose:\n            print(\"recrop\")\n    return image_transformed\n\n\n# image_transformed = random_crop(image)\n# plt.imshow(image_transformed)","metadata":{"execution":{"iopub.status.busy":"2023-11-17T09:01:43.138743Z","iopub.execute_input":"2023-11-17T09:01:43.139236Z","iopub.status.idle":"2023-11-17T09:01:43.149871Z","shell.execute_reply.started":"2023-11-17T09:01:43.139189Z","shell.execute_reply":"2023-11-17T09:01:43.148767Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"save_path = \"/kaggle/working/data\"\ntry:\n    os.makedirs(save_path)\nexcept:\n    pass\ncrops_per_image = 100\nfor i, (index, row) in enumerate(train_df.iterrows()):\n    print(f\"{(i+1)} / {len(train_df)}\") \n    image = read_image(row.image_id)\n    try:\n        os.makedirs(os.path.join(save_path, f\"{row.image_id}\"))\n    except:\n        pass\n    for i in range(crops_per_image):\n        cropped = random_crop(image, crop_size=crop_size)\n        cv2.imwrite(os.path.join(save_path, f\"{row.image_id}_{i}.png\"), cropped)","metadata":{"execution":{"iopub.status.busy":"2023-11-18T00:44:12.218197Z","iopub.execute_input":"2023-11-18T00:44:12.218603Z","iopub.status.idle":"2023-11-18T00:44:12.569523Z","shell.execute_reply.started":"2023-11-18T00:44:12.218569Z","shell.execute_reply":"2023-11-18T00:44:12.56765Z"},"trusted":true},"execution_count":null,"outputs":[]}]}