Last active
April 22, 2020 21:45
-
-
Save binga/1bc4ebe5e41f670f5954d2ffa9d6c0ed to your computer and use it in GitHub Desktop.
A quick way to get the bounding boxes in fastai csv format ready for bounding box regression using Pandas.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "import json\n", | |
| "import pandas as pd" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "dict_keys(['images', 'type', 'annotations', 'categories'])\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "with open(\"../PASCAL_VOC/pascal_train2007.json\") as i:\n", | |
| " d = json.load(i)\n", | |
| "\n", | |
| "print(d.keys())\n", | |
| " \n", | |
| "categories = pd.DataFrame(d['categories'])\n", | |
| "annotations = pd.DataFrame(d['annotations'])\n", | |
| "images = pd.DataFrame(d['images'])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>file_name</th>\n", | |
| " <th>height</th>\n", | |
| " <th>id</th>\n", | |
| " <th>width</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>000012.jpg</td>\n", | |
| " <td>333</td>\n", | |
| " <td>12</td>\n", | |
| " <td>500</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>000017.jpg</td>\n", | |
| " <td>364</td>\n", | |
| " <td>17</td>\n", | |
| " <td>480</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>000023.jpg</td>\n", | |
| " <td>500</td>\n", | |
| " <td>23</td>\n", | |
| " <td>334</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>000026.jpg</td>\n", | |
| " <td>333</td>\n", | |
| " <td>26</td>\n", | |
| " <td>500</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>000032.jpg</td>\n", | |
| " <td>281</td>\n", | |
| " <td>32</td>\n", | |
| " <td>500</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " file_name height id width\n", | |
| "0 000012.jpg 333 12 500\n", | |
| "1 000017.jpg 364 17 480\n", | |
| "2 000023.jpg 500 23 334\n", | |
| "3 000026.jpg 333 26 500\n", | |
| "4 000032.jpg 281 32 500" | |
| ] | |
| }, | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "images.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>id</th>\n", | |
| " <th>name</th>\n", | |
| " <th>supercategory</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>1</td>\n", | |
| " <td>aeroplane</td>\n", | |
| " <td>none</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>2</td>\n", | |
| " <td>bicycle</td>\n", | |
| " <td>none</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>3</td>\n", | |
| " <td>bird</td>\n", | |
| " <td>none</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>4</td>\n", | |
| " <td>boat</td>\n", | |
| " <td>none</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>5</td>\n", | |
| " <td>bottle</td>\n", | |
| " <td>none</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " id name supercategory\n", | |
| "0 1 aeroplane none\n", | |
| "1 2 bicycle none\n", | |
| "2 3 bird none\n", | |
| "3 4 boat none\n", | |
| "4 5 bottle none" | |
| ] | |
| }, | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "categories.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>area</th>\n", | |
| " <th>bbox</th>\n", | |
| " <th>category_id</th>\n", | |
| " <th>id</th>\n", | |
| " <th>ignore</th>\n", | |
| " <th>image_id</th>\n", | |
| " <th>iscrowd</th>\n", | |
| " <th>segmentation</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>34104</td>\n", | |
| " <td>[155, 96, 196, 174]</td>\n", | |
| " <td>7</td>\n", | |
| " <td>1</td>\n", | |
| " <td>0</td>\n", | |
| " <td>12</td>\n", | |
| " <td>0</td>\n", | |
| " <td>[[155, 96, 155, 270, 351, 270, 351, 96]]</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>13110</td>\n", | |
| " <td>[184, 61, 95, 138]</td>\n", | |
| " <td>15</td>\n", | |
| " <td>2</td>\n", | |
| " <td>0</td>\n", | |
| " <td>17</td>\n", | |
| " <td>0</td>\n", | |
| " <td>[[184, 61, 184, 199, 279, 199, 279, 61]]</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>81326</td>\n", | |
| " <td>[89, 77, 314, 259]</td>\n", | |
| " <td>13</td>\n", | |
| " <td>3</td>\n", | |
| " <td>0</td>\n", | |
| " <td>17</td>\n", | |
| " <td>0</td>\n", | |
| " <td>[[89, 77, 89, 336, 403, 336, 403, 77]]</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>64227</td>\n", | |
| " <td>[8, 229, 237, 271]</td>\n", | |
| " <td>2</td>\n", | |
| " <td>4</td>\n", | |
| " <td>0</td>\n", | |
| " <td>23</td>\n", | |
| " <td>0</td>\n", | |
| " <td>[[8, 229, 8, 500, 245, 500, 245, 229]]</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>29505</td>\n", | |
| " <td>[229, 219, 105, 281]</td>\n", | |
| " <td>2</td>\n", | |
| " <td>5</td>\n", | |
| " <td>0</td>\n", | |
| " <td>23</td>\n", | |
| " <td>0</td>\n", | |
| " <td>[[229, 219, 229, 500, 334, 500, 334, 219]]</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " area bbox category_id id ignore image_id iscrowd \\\n", | |
| "0 34104 [155, 96, 196, 174] 7 1 0 12 0 \n", | |
| "1 13110 [184, 61, 95, 138] 15 2 0 17 0 \n", | |
| "2 81326 [89, 77, 314, 259] 13 3 0 17 0 \n", | |
| "3 64227 [8, 229, 237, 271] 2 4 0 23 0 \n", | |
| "4 29505 [229, 219, 105, 281] 2 5 0 23 0 \n", | |
| "\n", | |
| " segmentation \n", | |
| "0 [[155, 96, 155, 270, 351, 270, 351, 96]] \n", | |
| "1 [[184, 61, 184, 199, 279, 199, 279, 61]] \n", | |
| "2 [[89, 77, 89, 336, 403, 336, 403, 77]] \n", | |
| "3 [[8, 229, 8, 500, 245, 500, 245, 229]] \n", | |
| "4 [[229, 219, 229, 500, 334, 500, 334, 219]] " | |
| ] | |
| }, | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "annotations.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>area</th>\n", | |
| " <th>bbox</th>\n", | |
| " <th>category_id</th>\n", | |
| " <th>id_x</th>\n", | |
| " <th>ignore</th>\n", | |
| " <th>image_id</th>\n", | |
| " <th>iscrowd</th>\n", | |
| " <th>segmentation</th>\n", | |
| " <th>id_y</th>\n", | |
| " <th>name</th>\n", | |
| " <th>supercategory</th>\n", | |
| " <th>file_name</th>\n", | |
| " <th>height</th>\n", | |
| " <th>id</th>\n", | |
| " <th>width</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>34104</td>\n", | |
| " <td>[155, 96, 196, 174]</td>\n", | |
| " <td>7</td>\n", | |
| " <td>1</td>\n", | |
| " <td>0</td>\n", | |
| " <td>12</td>\n", | |
| " <td>0</td>\n", | |
| " <td>[[155, 96, 155, 270, 351, 270, 351, 96]]</td>\n", | |
| " <td>7</td>\n", | |
| " <td>car</td>\n", | |
| " <td>none</td>\n", | |
| " <td>000012.jpg</td>\n", | |
| " <td>333</td>\n", | |
| " <td>12</td>\n", | |
| " <td>500</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>13110</td>\n", | |
| " <td>[184, 61, 95, 138]</td>\n", | |
| " <td>15</td>\n", | |
| " <td>2</td>\n", | |
| " <td>0</td>\n", | |
| " <td>17</td>\n", | |
| " <td>0</td>\n", | |
| " <td>[[184, 61, 184, 199, 279, 199, 279, 61]]</td>\n", | |
| " <td>15</td>\n", | |
| " <td>person</td>\n", | |
| " <td>none</td>\n", | |
| " <td>000017.jpg</td>\n", | |
| " <td>364</td>\n", | |
| " <td>17</td>\n", | |
| " <td>480</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>81326</td>\n", | |
| " <td>[89, 77, 314, 259]</td>\n", | |
| " <td>13</td>\n", | |
| " <td>3</td>\n", | |
| " <td>0</td>\n", | |
| " <td>17</td>\n", | |
| " <td>0</td>\n", | |
| " <td>[[89, 77, 89, 336, 403, 336, 403, 77]]</td>\n", | |
| " <td>13</td>\n", | |
| " <td>horse</td>\n", | |
| " <td>none</td>\n", | |
| " <td>000017.jpg</td>\n", | |
| " <td>364</td>\n", | |
| " <td>17</td>\n", | |
| " <td>480</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>64227</td>\n", | |
| " <td>[8, 229, 237, 271]</td>\n", | |
| " <td>2</td>\n", | |
| " <td>4</td>\n", | |
| " <td>0</td>\n", | |
| " <td>23</td>\n", | |
| " <td>0</td>\n", | |
| " <td>[[8, 229, 8, 500, 245, 500, 245, 229]]</td>\n", | |
| " <td>2</td>\n", | |
| " <td>bicycle</td>\n", | |
| " <td>none</td>\n", | |
| " <td>000023.jpg</td>\n", | |
| " <td>500</td>\n", | |
| " <td>23</td>\n", | |
| " <td>334</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>29505</td>\n", | |
| " <td>[229, 219, 105, 281]</td>\n", | |
| " <td>2</td>\n", | |
| " <td>5</td>\n", | |
| " <td>0</td>\n", | |
| " <td>23</td>\n", | |
| " <td>0</td>\n", | |
| " <td>[[229, 219, 229, 500, 334, 500, 334, 219]]</td>\n", | |
| " <td>2</td>\n", | |
| " <td>bicycle</td>\n", | |
| " <td>none</td>\n", | |
| " <td>000023.jpg</td>\n", | |
| " <td>500</td>\n", | |
| " <td>23</td>\n", | |
| " <td>334</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " area bbox category_id id_x ignore image_id iscrowd \\\n", | |
| "0 34104 [155, 96, 196, 174] 7 1 0 12 0 \n", | |
| "1 13110 [184, 61, 95, 138] 15 2 0 17 0 \n", | |
| "2 81326 [89, 77, 314, 259] 13 3 0 17 0 \n", | |
| "3 64227 [8, 229, 237, 271] 2 4 0 23 0 \n", | |
| "4 29505 [229, 219, 105, 281] 2 5 0 23 0 \n", | |
| "\n", | |
| " segmentation id_y name supercategory \\\n", | |
| "0 [[155, 96, 155, 270, 351, 270, 351, 96]] 7 car none \n", | |
| "1 [[184, 61, 184, 199, 279, 199, 279, 61]] 15 person none \n", | |
| "2 [[89, 77, 89, 336, 403, 336, 403, 77]] 13 horse none \n", | |
| "3 [[8, 229, 8, 500, 245, 500, 245, 229]] 2 bicycle none \n", | |
| "4 [[229, 219, 229, 500, 334, 500, 334, 219]] 2 bicycle none \n", | |
| "\n", | |
| " file_name height id width \n", | |
| "0 000012.jpg 333 12 500 \n", | |
| "1 000017.jpg 364 17 480 \n", | |
| "2 000017.jpg 364 17 480 \n", | |
| "3 000023.jpg 500 23 334 \n", | |
| "4 000023.jpg 500 23 334 " | |
| ] | |
| }, | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "data = (annotations\n", | |
| " .merge(categories, how='left', left_on='category_id', right_on='id')\n", | |
| " .merge(images, how='left', left_on='image_id', right_on='id'))\n", | |
| "data.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>file_name</th>\n", | |
| " <th>area</th>\n", | |
| " <th>bbox</th>\n", | |
| " <th>image_id</th>\n", | |
| " <th>name</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>000012.jpg</td>\n", | |
| " <td>34104</td>\n", | |
| " <td>[155, 96, 196, 174]</td>\n", | |
| " <td>12</td>\n", | |
| " <td>car</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>000017.jpg</td>\n", | |
| " <td>81326</td>\n", | |
| " <td>[89, 77, 314, 259]</td>\n", | |
| " <td>17</td>\n", | |
| " <td>horse</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>000023.jpg</td>\n", | |
| " <td>111101</td>\n", | |
| " <td>[2, 1, 241, 461]</td>\n", | |
| " <td>23</td>\n", | |
| " <td>person</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>000026.jpg</td>\n", | |
| " <td>21824</td>\n", | |
| " <td>[89, 124, 248, 88]</td>\n", | |
| " <td>26</td>\n", | |
| " <td>car</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>000032.jpg</td>\n", | |
| " <td>28832</td>\n", | |
| " <td>[103, 77, 272, 106]</td>\n", | |
| " <td>32</td>\n", | |
| " <td>aeroplane</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " file_name area bbox image_id name\n", | |
| "0 000012.jpg 34104 [155, 96, 196, 174] 12 car\n", | |
| "1 000017.jpg 81326 [89, 77, 314, 259] 17 horse\n", | |
| "2 000023.jpg 111101 [2, 1, 241, 461] 23 person\n", | |
| "3 000026.jpg 21824 [89, 124, 248, 88] 26 car\n", | |
| "4 000032.jpg 28832 [103, 77, 272, 106] 32 aeroplane" | |
| ] | |
| }, | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "largest_bbox = data.pivot_table(index='file_name', values='area', aggfunc=max).reset_index()\n", | |
| "largest_bbox = largest_bbox.merge(data[['area', 'bbox', 'image_id', 'file_name', 'name']], how='left')\n", | |
| "largest_bbox.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>file_name</th>\n", | |
| " <th>area</th>\n", | |
| " <th>bbox</th>\n", | |
| " <th>image_id</th>\n", | |
| " <th>name</th>\n", | |
| " <th>bbox_new</th>\n", | |
| " <th>bbox_str</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>000012.jpg</td>\n", | |
| " <td>34104</td>\n", | |
| " <td>[155, 96, 196, 174]</td>\n", | |
| " <td>12</td>\n", | |
| " <td>car</td>\n", | |
| " <td>[96, 155, 269, 350]</td>\n", | |
| " <td>96 155 269 350</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>000017.jpg</td>\n", | |
| " <td>81326</td>\n", | |
| " <td>[89, 77, 314, 259]</td>\n", | |
| " <td>17</td>\n", | |
| " <td>horse</td>\n", | |
| " <td>[77, 89, 335, 402]</td>\n", | |
| " <td>77 89 335 402</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>000023.jpg</td>\n", | |
| " <td>111101</td>\n", | |
| " <td>[2, 1, 241, 461]</td>\n", | |
| " <td>23</td>\n", | |
| " <td>person</td>\n", | |
| " <td>[1, 2, 461, 242]</td>\n", | |
| " <td>1 2 461 242</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>000026.jpg</td>\n", | |
| " <td>21824</td>\n", | |
| " <td>[89, 124, 248, 88]</td>\n", | |
| " <td>26</td>\n", | |
| " <td>car</td>\n", | |
| " <td>[124, 89, 211, 336]</td>\n", | |
| " <td>124 89 211 336</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>000032.jpg</td>\n", | |
| " <td>28832</td>\n", | |
| " <td>[103, 77, 272, 106]</td>\n", | |
| " <td>32</td>\n", | |
| " <td>aeroplane</td>\n", | |
| " <td>[77, 103, 182, 374]</td>\n", | |
| " <td>77 103 182 374</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " file_name area bbox image_id name \\\n", | |
| "0 000012.jpg 34104 [155, 96, 196, 174] 12 car \n", | |
| "1 000017.jpg 81326 [89, 77, 314, 259] 17 horse \n", | |
| "2 000023.jpg 111101 [2, 1, 241, 461] 23 person \n", | |
| "3 000026.jpg 21824 [89, 124, 248, 88] 26 car \n", | |
| "4 000032.jpg 28832 [103, 77, 272, 106] 32 aeroplane \n", | |
| "\n", | |
| " bbox_new bbox_str \n", | |
| "0 [96, 155, 269, 350] 96 155 269 350 \n", | |
| "1 [77, 89, 335, 402] 77 89 335 402 \n", | |
| "2 [1, 2, 461, 242] 1 2 461 242 \n", | |
| "3 [124, 89, 211, 336] 124 89 211 336 \n", | |
| "4 [77, 103, 182, 374] 77 103 182 374 " | |
| ] | |
| }, | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "def bb_hw_pandas(x):\n", | |
| " return [x[1], x[0], x[1]+x[3]-1, x[0]+x[2]-1]\n", | |
| "\n", | |
| "largest_bbox['bbox_new'] = largest_bbox['bbox'].apply(lambda x: bb_hw_pandas(x))\n", | |
| "largest_bbox['bbox_str'] = largest_bbox['bbox_new'].apply(lambda x: ' '.join(str(y) for y in x))\n", | |
| "largest_bbox.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "f = \"bbox_dataset.csv\"\n", | |
| "largest_bbox[['file_name', 'bbox_str']].to_csv(f, index=False)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>file_name</th>\n", | |
| " <th>bbox_str</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>000012.jpg</td>\n", | |
| " <td>96 155 269 350</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>000017.jpg</td>\n", | |
| " <td>77 89 335 402</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>000023.jpg</td>\n", | |
| " <td>1 2 461 242</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>000026.jpg</td>\n", | |
| " <td>124 89 211 336</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>000032.jpg</td>\n", | |
| " <td>77 103 182 374</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " file_name bbox_str\n", | |
| "0 000012.jpg 96 155 269 350\n", | |
| "1 000017.jpg 77 89 335 402\n", | |
| "2 000023.jpg 1 2 461 242\n", | |
| "3 000026.jpg 124 89 211 336\n", | |
| "4 000032.jpg 77 103 182 374" | |
| ] | |
| }, | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "largest_bbox[['file_name', 'bbox_str']].head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python 3", | |
| "language": "python", | |
| "name": "python3" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython3", | |
| "version": "3.6.3" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Very good, but also
largest_box = largest_box[largest_box.ignore != 1]largest_bbox.drop_duplicates(subset='file_name', inplace=True)