{"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_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# ⭐🐟 Image Tilling for Small Object Detection ⭐🐟\n### By [Luca Ordronneau](https://www.kaggle.com/lucaordronneau)\n## 📌 Objective\nI'm introducing the image tilling notebook for the competition: **TensorFlow - Help Protect the Great Barrier Reef** which allows you to cut an image into **several tiles with a readjustment of the bounding box**.\n## 📌 Main Idea\nThis idea came to me after I noticed that the bounding boxes around the starfish were a very small part of the image (a mean area less than 1%). This challenge refers to a small object detection problem.\n## 📌 What are the advantages of image tilling ?\n- Faster training due to smaller image size\n- Very effective detection of smaller objects\n\nHere is an interesting research paper on the subject: [The Power of Tiling for Small Object Detection](https://openaccess.thecvf.com/content_CVPRW_2019/papers/UAVision/Unel_The_Power_of_Tiling_for_Small_Object_Detection_CVPRW_2019_paper.pdf)\n\n![image.png](attachment:d9c87233-71d6-4d66-a5e3-b3a38c743eda.png)","metadata":{},"attachments":{"d9c87233-71d6-4d66-a5e3-b3a38c743eda.png":{"image/png":"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"}}},{"cell_type":"markdown","source":"## ✨ Please **UPVOTE** if you find this notebook helpful.\n\n### Moreover I would be interested in teaming up for this challenge.\n\n### Enjoy your reading, any comments are welcome","metadata":{}},{"cell_type":"markdown","source":"# 📚 Import Librairies","metadata":{}},{"cell_type":"code","source":"import os\nimport ast\nimport random\nimport numpy as np\nfrom tqdm.notebook import tqdm\ntqdm.pandas()\nimport pandas as pd\nfrom PIL import Image, ImageDraw, ImageFont\nimport matplotlib.pyplot as plt\n%matplotlib inline\nimport matplotlib.patches as patches\nfrom matplotlib.pyplot import figure\nfrom shapely.geometry import Polygon\nimport seaborn as sns","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-05-26T19:55:39.902834Z","iopub.execute_input":"2022-05-26T19:55:39.903318Z","iopub.status.idle":"2022-05-26T19:55:41.024898Z","shell.execute_reply.started":"2022-05-26T19:55:39.903226Z","shell.execute_reply":"2022-05-26T19:55:41.024233Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 📂 Variables and Data preparation","metadata":{}},{"cell_type":"code","source":"REMOVE_NOBBOX = True # remove images with no bbox\nROOT_DIR      = '/kaggle/input/tensorflow-great-barrier-reef'\nIMAGE_SPLIT   = 2 # Image split : (eg : 2, 4...)\nWIDTH         = 1280\nHEIGHT        = 720","metadata":{"execution":{"iopub.status.busy":"2022-05-26T19:55:41.026305Z","iopub.execute_input":"2022-05-26T19:55:41.026665Z","iopub.status.idle":"2022-05-26T19:55:41.030347Z","shell.execute_reply.started":"2022-05-26T19:55:41.026636Z","shell.execute_reply":"2022-05-26T19:55:41.029548Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print('All image size will be : ('+str(HEIGHT//IMAGE_SPLIT)+', '+str(WIDTH//IMAGE_SPLIT)+')')","metadata":{"execution":{"iopub.status.busy":"2022-05-26T19:55:41.031448Z","iopub.execute_input":"2022-05-26T19:55:41.031749Z","iopub.status.idle":"2022-05-26T19:55:41.043834Z","shell.execute_reply.started":"2022-05-26T19:55:41.031722Z","shell.execute_reply":"2022-05-26T19:55:41.042940Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = pd.read_csv(f'{ROOT_DIR}/train.csv')","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-05-26T19:55:41.046076Z","iopub.execute_input":"2022-05-26T19:55:41.046339Z","iopub.status.idle":"2022-05-26T19:55:41.112776Z","shell.execute_reply.started":"2022-05-26T19:55:41.046306Z","shell.execute_reply":"2022-05-26T19:55:41.111899Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df['annotations'] = df['annotations'].progress_apply(lambda x: ast.literal_eval(x))","metadata":{"execution":{"iopub.status.busy":"2022-05-26T19:55:41.113751Z","iopub.execute_input":"2022-05-26T19:55:41.114095Z","iopub.status.idle":"2022-05-26T19:55:41.615088Z","shell.execute_reply.started":"2022-05-26T19:55:41.114067Z","shell.execute_reply":"2022-05-26T19:55:41.614169Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df['nb_bbox'] = df['annotations'].progress_apply(lambda x: len(x))\ndata = (df.nb_bbox>0).value_counts(normalize=True)*100\nprint(f\"No BBOX: {data[0]:0.2f}% | With BBOX: {data[1]:0.2f}%\")","metadata":{"execution":{"iopub.status.busy":"2022-05-26T19:55:41.616439Z","iopub.execute_input":"2022-05-26T19:55:41.616677Z","iopub.status.idle":"2022-05-26T19:55:41.728406Z","shell.execute_reply.started":"2022-05-26T19:55:41.616643Z","shell.execute_reply":"2022-05-26T19:55:41.727443Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"if REMOVE_NOBBOX:\n    df = df.query(\"nb_bbox>0\")","metadata":{"execution":{"iopub.status.busy":"2022-05-26T19:55:41.729886Z","iopub.execute_input":"2022-05-26T19:55:41.730097Z","iopub.status.idle":"2022-05-26T19:55:41.745892Z","shell.execute_reply.started":"2022-05-26T19:55:41.730071Z","shell.execute_reply":"2022-05-26T19:55:41.745165Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def get_path(row):\n    row['old_image_path'] = f'{ROOT_DIR}/train_images/video_{row.video_id}/{row.video_frame}.jpg'\n    return row\n\ndf = df.progress_apply(get_path, axis=1)","metadata":{"execution":{"iopub.status.busy":"2022-05-26T19:55:41.747273Z","iopub.execute_input":"2022-05-26T19:55:41.747655Z","iopub.status.idle":"2022-05-26T19:55:45.474263Z","shell.execute_reply.started":"2022-05-26T19:55:41.747618Z","shell.execute_reply":"2022-05-26T19:55:45.473252Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def get_bbox(annots):\n    bboxes = [list(annot.values()) for annot in annots]\n    return bboxes\n\ndf['bboxes'] = df.annotations.progress_apply(get_bbox)","metadata":{"execution":{"iopub.status.busy":"2022-05-26T19:55:45.475577Z","iopub.execute_input":"2022-05-26T19:55:45.475827Z","iopub.status.idle":"2022-05-26T19:55:45.648251Z","shell.execute_reply.started":"2022-05-26T19:55:45.475793Z","shell.execute_reply":"2022-05-26T19:55:45.647441Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.head()","metadata":{"execution":{"iopub.status.busy":"2022-05-26T19:55:45.651780Z","iopub.execute_input":"2022-05-26T19:55:45.652089Z","iopub.status.idle":"2022-05-26T19:55:45.679016Z","shell.execute_reply.started":"2022-05-26T19:55:45.652048Z","shell.execute_reply":"2022-05-26T19:55:45.678216Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def plot_image_and_bboxes(img, bboxes):\n    fig, ax = plt.subplots(1, figsize=(10, 8))\n    ax.axis('off')\n    ax.imshow(img)\n    \n    for bbox in bboxes:\n        rect = patches.Rectangle((bbox[0], bbox[1]), bbox[2], bbox[3], linewidth=2, edgecolor='r', facecolor=\"none\")\n        ax.add_patch(rect)\n    \n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2022-05-26T19:55:45.680101Z","iopub.execute_input":"2022-05-26T19:55:45.680314Z","iopub.status.idle":"2022-05-26T19:55:45.686705Z","shell.execute_reply.started":"2022-05-26T19:55:45.680287Z","shell.execute_reply":"2022-05-26T19:55:45.685917Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def get_image(img_name):\n    return np.array(Image.open(img_name))","metadata":{"execution":{"iopub.status.busy":"2022-05-26T19:55:45.688120Z","iopub.execute_input":"2022-05-26T19:55:45.688558Z","iopub.status.idle":"2022-05-26T19:55:45.701452Z","shell.execute_reply.started":"2022-05-26T19:55:45.688520Z","shell.execute_reply":"2022-05-26T19:55:45.700709Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 📈 Exploring data on the distribution of the bounding box area","metadata":{}},{"cell_type":"code","source":"def know_data(width = 1280, height = 720):\n    percentage_area = []\n    for img_name in df['old_image_path'].tolist():\n        bboxes = np.array(df.loc[df[\"old_image_path\"] == img_name][\"bboxes\"].values[0])\n        t = 100 * bboxes[..., [2]] * bboxes[..., [3]] / (width * height) # percentage \n        flat_list = t.flatten().tolist()\n        percentage_area.extend(flat_list)\n    return percentage_area","metadata":{"execution":{"iopub.status.busy":"2022-05-26T19:55:45.702788Z","iopub.execute_input":"2022-05-26T19:55:45.703477Z","iopub.status.idle":"2022-05-26T19:55:45.714991Z","shell.execute_reply.started":"2022-05-26T19:55:45.703423Z","shell.execute_reply":"2022-05-26T19:55:45.714122Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"As said before we can notice that bounding boxes represents a small part of the image (**less than 1% of the image**).","metadata":{}},{"cell_type":"code","source":"area = know_data()\n\n# plotting the distribution of percentage area\nsns.displot(area)\nplt.xlabel(\"Percentage area of occupied by objects in an image\")\nplt.title(\"Distribution plot of percentage area of objects in an image\")\nplt.grid()\nplt.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-05-26T19:55:45.716455Z","iopub.execute_input":"2022-05-26T19:55:45.716776Z","iopub.status.idle":"2022-05-26T19:55:52.907055Z","shell.execute_reply.started":"2022-05-26T19:55:45.716733Z","shell.execute_reply":"2022-05-26T19:55:52.906141Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_describe = pd.DataFrame(area)\ndf_describe.describe().T","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-05-26T19:55:52.908507Z","iopub.execute_input":"2022-05-26T19:55:52.909552Z","iopub.status.idle":"2022-05-26T19:55:52.931815Z","shell.execute_reply.started":"2022-05-26T19:55:52.909497Z","shell.execute_reply":"2022-05-26T19:55:52.930951Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 🔨 Functions for image tiles","metadata":{}},{"cell_type":"code","source":"def image_tiler(img, s_h=180, s_w=320):\n    tiles = [img[x:x+s_h,y:y+s_w] for x in range(0,img.shape[0],s_h) for y in range(0,img.shape[1],s_w)]\n    return tiles  ","metadata":{"execution":{"iopub.status.busy":"2022-05-26T19:55:52.933148Z","iopub.execute_input":"2022-05-26T19:55:52.933380Z","iopub.status.idle":"2022-05-26T19:55:52.938587Z","shell.execute_reply.started":"2022-05-26T19:55:52.933334Z","shell.execute_reply":"2022-05-26T19:55:52.937814Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def tiler_plot(img_name, bboxes, s_h = 180, s_w = 320, height = 720, width = 1280):\n    basename = os.path.basename(os.path.splitext(img_name)[0])\n\n    tiles_dict = {}\n    boxes = []\n    \n    fig, ax = plt.subplots(1, figsize=(10, 8))\n    ax.axis('off')\n    plt.gca().invert_yaxis()\n    \n    \n    for bbox in bboxes:\n        x1 = bbox[0]\n        y1 = bbox[1]\n        x2 = bbox[0] + bbox[2]\n        y2 = bbox[1] + bbox[3]\n        boxes.append(Polygon([(x1, y1), (x2, y1), (x2, y2), (x1, y2)]))\n      \n    for i in range((height // s_h)):\n        for j in range((width // s_w)):\n            \n            x1 = j*s_w\n            y1 = height - (i*s_h)\n            x2 = ((j+1)*s_w)\n            y2 = (height - (i+1)*s_h)\n            pol = Polygon([(x1, y1), (x2, y1), (x2, y2), (x1, y2)])\n            \n            slice_labels = []\n            ax.plot(*pol.exterior.xy)\n\n            for box in boxes:\n                if pol.intersects(box):\n                    inter = pol.intersection(box)                        \n                    new_box = inter.envelope \n                    ax.plot(*new_box.exterior.coords.xy)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-05-26T20:00:04.428838Z","iopub.execute_input":"2022-05-26T20:00:04.429158Z","iopub.status.idle":"2022-05-26T20:00:04.442505Z","shell.execute_reply.started":"2022-05-26T20:00:04.429122Z","shell.execute_reply":"2022-05-26T20:00:04.441543Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def tiler(img_name, bboxes, s_h = 180, s_w = 320, height = 720, width = 1280):\n    basename   = os.path.basename(os.path.splitext(img_name)[0])\n\n    tiles_dict = {}\n    boxes      = []\n    \n    for bbox in bboxes:\n        x1 = bbox[0]\n        y1 = bbox[1]\n        x2 = bbox[0] + bbox[2]\n        y2 = bbox[1] + bbox[3]\n        boxes.append(Polygon([(x1, y1), (x2, y1), (x2, y2), (x1, y2)]))\n    for i in range((height // s_h)):\n        for j in range((width // s_w)):\n            \n            x1 = j*s_w\n            y1 = height - (i*s_h)\n            x2 = ((j+1)*s_w)\n            y2 = (height - (i+1)*s_h)\n            pol = Polygon([(x1, y1), (x2, y1), (x2, y2), (x1, y2)])\n            \n            slice_labels = []\n            \n            for box in boxes:\n                if pol.intersects(box):\n                    inter = pol.intersection(box)                        \n                    # get the smallest polygon (with sides parallel to the coordinate axes) that contains the intersection\n                    new_box = inter.envelope \n                    \n                    # get coordinates of polygon vertices\n                    x, y = new_box.exterior.coords.xy\n                    \n                    new_width  = (max(x) - min(x))\n                    new_height = (max(y) - min(y))\n                    \n                    # Get new_x min and new_y min\n                    new_x = (min(x) - x1)\n                    new_y = (min(y) - y2)\n                    \n                    # Remove small bbox (unsignificant for training)\n                    if ((new_width > 14) and (new_height > 14)):\n                        slice_labels.append([new_x, new_y, new_width, new_height])\n            tiles_dict[basename + \"-\" + str(IMAGE_SPLIT-i-1)+\"-\"+str(j)] = slice_labels\n    return dict(sorted(tiles_dict.items()))","metadata":{"execution":{"iopub.status.busy":"2022-05-26T19:55:52.955111Z","iopub.execute_input":"2022-05-26T19:55:52.955678Z","iopub.status.idle":"2022-05-26T19:55:52.970967Z","shell.execute_reply.started":"2022-05-26T19:55:52.955633Z","shell.execute_reply":"2022-05-26T19:55:52.970096Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def keep_bboxes_tiles(tiles, tiles_dict):\n    bboxes_tiles = {}\n    tiles_keys = [*tiles_dict]\n    for k, v in tiles_dict.items():\n        if len(v):\n            tile_index = tiles_keys.index(k)\n            bboxes_tiles[k] = np.array([tiles[tile_index], np.array(v)], dtype=object)\n    return bboxes_tiles","metadata":{"execution":{"iopub.status.busy":"2022-05-26T19:55:52.972249Z","iopub.execute_input":"2022-05-26T19:55:52.972507Z","iopub.status.idle":"2022-05-26T19:55:52.986987Z","shell.execute_reply.started":"2022-05-26T19:55:52.972477Z","shell.execute_reply":"2022-05-26T19:55:52.986387Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 🔭 Result of a tiled image\n### Original image","metadata":{}},{"cell_type":"code","source":"old_image_path = df['old_image_path'].tolist()\nimg_name   = random.choice(old_image_path)\n\nimg        = get_image(img_name)\nbboxes     = df.loc[df[\"old_image_path\"] == img_name][\"bboxes\"].values[0]\n\nplot_image_and_bboxes(img, bboxes)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-05-26T19:56:16.422783Z","iopub.execute_input":"2022-05-26T19:56:16.423432Z","iopub.status.idle":"2022-05-26T19:56:16.854237Z","shell.execute_reply.started":"2022-05-26T19:56:16.423393Z","shell.execute_reply":"2022-05-26T19:56:16.853414Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Tiled image ","metadata":{}},{"cell_type":"code","source":"tiles_dict = tiler(img_name, bboxes, s_h = HEIGHT//IMAGE_SPLIT, s_w = WIDTH//IMAGE_SPLIT)\ntiles  = image_tiler(img, s_h = HEIGHT//IMAGE_SPLIT, s_w = WIDTH//IMAGE_SPLIT)\n\n_, axs = plt.subplots(IMAGE_SPLIT, IMAGE_SPLIT, figsize=(10, 8))\naxs = axs.flatten()\nfor img, ax in zip(tiles, axs):\n    ax.axis('off')\n    ax.imshow(img)\nplt.subplots_adjust(wspace=0.05, hspace=-0.3)\nplt.show()","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-05-26T19:56:21.902207Z","iopub.execute_input":"2022-05-26T19:56:21.902828Z","iopub.status.idle":"2022-05-26T19:56:22.301481Z","shell.execute_reply.started":"2022-05-26T19:56:21.902783Z","shell.execute_reply":"2022-05-26T19:56:22.300505Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Location of bounding boxes on the tiles of the image","metadata":{}},{"cell_type":"code","source":"tiler_plot(img_name, bboxes, s_h = HEIGHT//IMAGE_SPLIT, s_w = WIDTH//IMAGE_SPLIT, height = HEIGHT, width = WIDTH)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-05-26T19:56:27.458453Z","iopub.execute_input":"2022-05-26T19:56:27.458731Z","iopub.status.idle":"2022-05-26T19:56:27.691525Z","shell.execute_reply.started":"2022-05-26T19:56:27.458703Z","shell.execute_reply":"2022-05-26T19:56:27.690324Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Displaying tiles that contain bounding boxes\nThe dictionary is formed in this way :  **key** : *tile_name (imgid-row-column)*, **values** : *(img array, bboxes)*","metadata":{}},{"cell_type":"code","source":"to_save = keep_bboxes_tiles(tiles, tiles_dict)\nfor k, v in to_save.items():\n    print(\"IMAGE NAME :\",k)\n    print(\"NEW BBOXES :\",v[1])\n    plot_image_and_bboxes(v[0], v[1])","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2022-05-26T19:57:53.964790Z","iopub.execute_input":"2022-05-26T19:57:53.965092Z","iopub.status.idle":"2022-05-26T19:57:54.255201Z","shell.execute_reply.started":"2022-05-26T19:57:53.965056Z","shell.execute_reply":"2022-05-26T19:57:54.254344Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"I get quite interesting results especially on the detection of **small starfish**. Moreover, I train on tiles of size 320 and I make my inference on images of size 1280. I combine this model with another model trained on images of size 1280.","metadata":{}},{"cell_type":"markdown","source":"## ✨ Please **UPVOTE** if you find this notebook helpful.\n\n### Moreover I would be interested in teaming up for this challenge.","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}