Skip to content

Instantly share code, notes, and snippets.

@binga
Last active April 22, 2020 21:45
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save binga/1bc4ebe5e41f670f5954d2ffa9d6c0ed to your computer and use it in GitHub Desktop.
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.
Display the source blob
Display the rendered blob
Raw
{
"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
}
@gsgbills
Copy link

gsgbills commented May 6, 2018

Very good, but also

  1. Need to remove the "ignore == 1" rows,
    largest_box = largest_box[largest_box.ignore != 1]
  2. eliminate duplicates, ie 2 equal size largest boxes:
    largest_bbox.drop_duplicates(subset='file_name', inplace=True)

@fromLittleAcorns
Copy link

Nice work, thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment