Skip to content

Instantly share code, notes, and snippets.

@botcs
Created February 18, 2019 23:47
Show Gist options
  • Select an option

  • Save botcs/95176d877dcd26e48e46cceecdac5763 to your computer and use it in GitHub Desktop.

Select an option

Save botcs/95176d877dcd26e48e46cceecdac5763 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Unit tests and observations for Binary mask for `maskrcnn_benchmark` PR [#150](https://github.com/facebookresearch/maskrcnn-benchmark/pull/150)"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [],
"source": [
"import torch\n",
"import numpy as np\n",
"from maskrcnn_benchmark.structures.segmentation_mask import Mask, Polygons, SegmentationMask\n",
"\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Define a simple polygon\n",
"\n",
"A simple rectangle will do, 100 pixels away from each border"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
"outputs": [],
"source": [
"width = 640\n",
"height = 480\n",
"poly = [[100, 100, width-100, 100, width-100, height-100, 100, height-100]]\n",
"size = (width, height)\n",
"box = [poly[0][0]-50, poly[0][1]-50, poly[0][4]-50, poly[0][5]-50]\n",
"\n",
"polygon = Polygons(poly, size, 'polygon')\n",
"mask = Mask(poly, size, 'mask')"
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f7942876da0>"
]
},
"execution_count": 138,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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AAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLi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\n",
"text/plain": [
"<Figure size 1440x1440 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(20, 20))\n",
"plt.title('Mask')\n",
"plt.imshow(mask.convert('mask'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Crop [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {},
"outputs": [],
"source": [
"mask_from_poly_crop = polygon.crop(box).convert('mask')\n",
"mask_crop = mask.crop(box).convert('mask')\n",
"diff = torch.abs(mask_from_poly_crop.float() - mask_crop.float())"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f7943304400>"
]
},
"execution_count": 140,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABIcAAAEACAYAAAAp/BZcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XmYdGdZJ/7vDQlBJBACGEMSZTEuQWWZGFBRWQZZlAmODBNkCQw/4yiMODqjoAhBRRkXZBhHNEBMwo4sghoXdsSfBCLEkLBIhMRsJLIlATQEuOePcxrq7be7ut6lu+rlfD7XVVdXnfXup6qfu/o+zzmnujsAAAAATNONlh0AAAAAAMujOAQAAAAwYYpDAAAAABOmOAQAAAAwYYpDAAAAABOmOAQAAAAwYYpDLEVVvbWq/r8Fl/2Wqjqvqq6rqp/e7thWQVUdV1XnVlXt43ZOraoXL7DcIVX1waq67b7sD2BvyQvz7a+8sAf72/T9qKpXV9WDdiIO+GpVVY+tqnfs5bq3Hb+3fc3+jmtvVdUDqupP9sN2zqiqX1tguSOq6gNVdci+7nOnVdXfVtXddmhfm37OquohVfWKLdZ/V1XdeXuiY9UoDrGhqrq4qj5fVbdZN/29VdVVdfsdDOfnk7yluw/t7ufu4H6/bEx4bx//EfmXqnpbVf2Hbdzlryb57e7ucf8XV9W/VtVnquqqMXHefH/trLuvT3J6kifvr20CX13khV2tSF5Y1vvxv5Js+c8bsG2enOSM7v7XzRaoqh8bC8qfqaorq+ovqupe2xjTM5M8a2b/XVWfHfd/eVU9u6puvL921t1XJXlLklP2ZTtVdWRVvXBso+vGotszqupr90+ku+3vIUmu6+73jq9PHdvqSeuWe9I4/dTtiCNJuvtPk9y5qr5zzmK/neRXtmP/VfXfq+pjVXVtVZ0+r9BXVfcb35vPVdVbquobZ+YdMq5/7bi9n12FdQ9EikPM89Ekj1h7UVXfkeRmS4jjG5NcuNnM/ZloNtn+w5L8cZKzkhyd5IgkT0vykE2WP2gf93dkkvskWX/05SHdffMkd09yfJKn7st+NvDSJCcfiEdggB0jL2Sl8sJS3o/ufleSW1TV8du9L2BX4/e0k5NsOjJ8/Cf1OUl+PUP/9A1Jfj/JiZssv6991HcluWV3v3PdrLuM313vl+THkvz4vuxnAy9J8hN7u3JVHZ7k75J8TZLv7u5Dk9w/yWFJ7rTB8vvUTqP/muRF66b9Y5LHrJt28jh9u70s8wtsr09yn6r6+v2506p6QIYi5/0y5PQ7JnnGJsveJslrkvxyksOTnJtkdsTTqUmOHbdznyQ/X1UPXOa6ByrFIeZ5UXbtqE7O8EX4y6rqh8ajlNdW1aWz1e2qumlVvbiqPlFVn66qd1fVEet3Mlbsz6+q/7nBvDdn+GP7vfHIwzfXMGrmeVV1dlV9NkOHdcuqOms8entJVT21qm40buOxNQzf/N0xjo9U1feM0y+tqqur6uSNGqCqKsmzk/xqd7+gu6/p7i9199u6+8c32P4nkpxaVTcaY7hk3P5ZVXXLcfnbj0cCTqmqK2o4UvE/ZnZ7/yTv6e5/2yim7r48yV8k+fZxe7erqtdX1Ser6qKq2jDxVtWfV9V/Wzft/Kr6kXG7lyX5VJJ7brQ+QOSFVcsLy3w/3prkhzZqI2BQVU+uqn+qYUTK+9e+c+26SP1eVV1Tw+iE+83MeOzYN11XVR+tqkeOs+6R5NPj97aN9nnLDCM9ntDdr+nuz3b3Dd39p939P8dlTq2qV41//9cmeWwNoyCeM/ZBV4zPDxmXv3dVXVZVv1hVH69h5OIjZ3b7oCRv26wduvuDSf4mX/nu+m01nLr66aq6sDYZdVlVF9Qw0mbt9cHj/tdOyTonyR1rZjTHHvrZJNcleVR3XzzGeml3P6m7zx/32VX1hKr6cJIPj9O+Z+wvrxl/fs9MjG+tqt+o4XSsa6vqdTUUoVJVN0ly3+zeVu9OcrMaT98af950nL623VtV1Z+NOe1T4/OjZ+Zv9nnZRVX9VlW9Yy3/ZIu+fMw7f5/kAVu05Z46OckLu/vC7v5UhtGxj91k2f+Y5MLu/uMxnlOT3KWqvnVmW7/a3Z/q7g8kef7Mtpa17gFJcYh53pnhyOC31XAU9qTsfpTisxm+mB6WoWP5yap66Djv5CS3THJMkltnqJTvMvy1qu6QoYP8ve7+rfUBdPd9MySTJ3b3zbt7rYL+YxmGrx6a5B1J/s+4rzsm+YExpsfNbOoeSc4f43hpkpcn+a4k35TkURn+ydjoNK1vGeN/1cZNtMv2P5Lh6MwzM3QMj83wD8wdk9w8ye+tW+c+GarNP5jkF6rq34/TvyPJhzbbUVUdk+TBSd47Tnp5ksuS3C7Jw5L8elXdd4NVz8zwu65t5y5Jjkry5zPLfCDJXeb9osCkyQurlReW+X7IF7C1f0ryfRn+zp6R5MU1jARcc49xmdskeXqS11TV4TWc0vTcJA8aR7N8T5LzxnXmfk9M8t0ZCguv3SK2EzP0Y4dlGIHzSxkOEN41w9/2Cdl1lPrXj3EelaHvOK2qvmWRmKrquAzt8N6qOjjJnyb56yRfl+S/JXnJzLZmnZWZ764Zvv9euXZKVnd/IclF2fu+6N8neU13f2mL5R6a4b06biz0/HmG9+fWGQ4W/HlV3Xpm+cck+S9JjkzyhXHZZOjfv7RJYW+22H9ydh9ddKMkf5RhlMo3ZOirfy9Jtvi8ZFzmRlX1/CTfmeQHu/uacdYHkty+qm4x5/fftL+vqnuNRb7NHpudynjnJP8w8/ofkhyxrh03XLa7P5vh7+bOVXWrDO28flt3XvK6ByTFIbay1lHdP0PHcPnszO5+a3e/bzxqen6GoYk/MM6+IUOn+U3d/cXu/vvuvnZm9eMynCv89O4+bQ/jel13/+3Ymd+Q4QvxU7r7urHy/ztJHj2z/Ee7+4+6+4sZhgMek+RXuvv67v7rJJ/P8A/Bemsd1JVbxHNFd/+f7v7CeP73I5M8u7s/0t2fSfKUJCfVrsNRnzEezXlfhs5+7dSAwzIcxVjvT6rq0xn+6XlbhiLQMUm+N8kvdPe/dfd5SV6Q3YemJsOw0G+uqmPH149O8oru/vzMMteN+wfYjLwwWIW8kCzv/ZAvYAvjiIMrxr+/V2QYeXLCzCJXJ3nOOLLnFRkKLGujOL6U5Nur6mu6+8ruXjuVdl5/kAx/0x8fCyfz/F13/8kY21of9SvdfXV3/0uGYtaj163zy2Mf+bYMBZKHbxHTe6rqUxmKQS/I0K/dM0Nx/Fnd/fnufnOSP8vMKbIzXpzkwTOFi0dn96LJvvRFt87WfXmS/EZ3f3Jspx9K8uHuftHYv78syQez62nFL+ruC8Ziwi8nefhYwJ/33r04ySPG4tluhf7u/kR3v7q7P9fd12U46PADM4ts9nlJkoMz9P2HZ7hMxedm5q3FM68NN23j7n5Hdx8257HZRddvnuSamddrzw9dYNm15Q8d5yW7b2ttO8ta94CkOMRWXpThaOxjs26oepJU1T1quDjXv1TVNRmOOt5mZt2/SvLycXjqb44d3ppHZvgSu9XR141cOvP8Nhk6vUtmpl2S4cjGmqtmnv9r8uUL2c1O2+gI8SfGn0duMG+zeJJhFM/6eA7KcAR5o3UuGddJhlO7NupYHjp2st/Y3T81JqjbJfnkmCRmt3XU+pV7GA75iiSPquHUikdk9wR7aJJPb7BvgDXywmAV8kKyvPdDvoAtVNVjariz4qfHA3zfnq/8/SXJ5d3DReZHlyS53VhU+M8Z/l6vrOHSAGunsszrD5Khj7pNbX19nEX6qNvNvP7UGNdG8zeL6e7dfavuvlN3P3Us3t8uyaW962idzb67XpHkb5P8aFUdluH0tZesW2zDvqiqvqGGU48/U1Wf2SC2ZGirrfryZNe2Wt9OG8W/vi8/OMP7vul7193/nGEU1K9nKD7t8v5U1c2q6g9rODX52iRvT3JYVd14i89LMhzoODHDAYjZg8KZiWdef74d/f1nksyOVlp7vlHxbP2ya8tfN85Ldt/W2naWte4BSXGIubr7kgwXvHxwhgtyrffSDCNSjunuWyb5gyQ1rntDdz+ju4/LMLzxh7PriJZTk3w8yUtrzy8eOptIP57h6Ofs+cbfkHVHT/fShzJ08D+6B/EkyRUbxPOF7PrPyDHr5l8xPj8/yTcvGN8VSQ6vqtlEM+93PzPDl/37Jflcd//duvnfll2HRwLsQl5YrbywxPdDvoA5argOzvOTPDHJrbv7sCQXZPz7Gx1VVbOvv/x3391/1d33z1C8+OC4rWTr74l/l+T6DKdCzbNIH3XFzOtb1a538NqX767HjAcqZ7c177vro5L8pwyjnb683FgA+6Zs0Bd19z/3cOrxzXu4KPZG3pjkR9bFspHZtlrfThvFv74vvyFDX3rREHbtVggbnZXk57JBoX+c/i1J7tHdt0jy/eP0tf58s89LMowqfVySv9jg9L1vS3LxulGj623a31fV980W4TZ4fN8m27wwu56qdpckV3X3J7Zadvwc3inD9YA+lWH01/ptXbjkdQ9IikMs4vFJ7rvuaMGaQzOMXPm3qjohw9HLJElV3aeqvmP8Qnltho5x9ijBDRk6+q9NctYCHfOGxlMCXpnkmVV16JiMfzZz7uKwB9vucVu/XFWPq6pbjOfs3quq5p3y8LIk/72q7jBes+LXM5zCNTvE95fHowB3ztBhr139/g1J7l5VN10gvkuT/P9JfqOGC4t+Z4b3a8PffSwGfSnD6RW7jBoaE9XhGa5hATCPvLBaeWEZ78cPZLg5ArCxr81QVPiXJKmqx2W8IPOMr0vy0zVcaPk/Zfgn/OyqOqKqThz/Gb0+wyiFtb/Nd2UYMbJhgaGHa8k8Lcn/raqHjn3KwVX1oKr6zTnxvizJU6vqtjXcpelp2b3PfEZV3WT8h/+HM9y1MUnOzq6nOM1zTpLPZbiz08FVde8Mp2S9fJPl/yTDnXqflN2LJidkKGysH8mzqGdnGO1x5pgnUlVHVdWza/Pbu5+d4TINP1ZVB1XVf85wCu6fzSzzqKo6rqpuluHi4K8aT939fIaC1GZt9YoM15x75QbzDs0wovXTNVz36OlrM7b4vCRJxtPffjHJG6tq9k5sc/vyMe/8uwx5aDfd/TezRbgNHn+zyabPSvL4sZ0Oy3B9qzM2Wfa1GU6Z+9ExnqclOb+HC52vbeupNVy0+1sz3BXvjCWve0BSHGJL3f1P3X3uJrN/KsmvVNV1Gf5gZjuzr88wFP3aDBXrt2VdQWLsJP9jhmH1p+/tPwIZLmb32QwX/3xHhiOlp+/ltnbR3a/KMFTzv2Q4WnBVkl9L8ro5q52e4Xd9e4Yjuv82xjjrbRmOILwpyW/3cI2LtdMa3pxNbje6gUckuf0Y22szXBvijXOWPyvDhQPXJ/wfS3Jmd1+/4H6BiZIXVisv7PT7UcNtqz/Twy3tgQ109/szHIz7uwx9xHdkOEVq1jkZLlL88QzXkHnYOHLiRhmK0Fck+WSGf+B/ctzu5zP8A/qobKK7f2dc/6kZilOXZhjB9CdzQv61DLfqPj/J+5K8Z5y25mMZTou6IsOpXf917Z/k7n5Pkmuq6h5ztr8W2+czFIMeNP7ev5/kMTP/cK9f/l+TvDrJHbL76MhHZhgNuVe6+5MZRk3ekOScsZ98U4Zrx1y0yTqfyFAY+7kMp6X9fJIf7u6Pzyz2ogzv0ccyXBz8p2fm/WF2v5bT2rb/tbvfOP7O6z0nyddkaLN3JvnLmXmbfl7Wbf/MDMWqN1fV7cfJjxhj2sxDkrx1PMVvv+nuv0zymxmua/fPGU6/my14XVjjHdd6uAbWj2b4G/lUhouDnzSzuadnuFD0JRny2G+N21/augeq2vU0V2C7jZ3xR5Mc3JtcLLCGuzqcmeSE3s9/pFX1mCSndPe9ZqYdkmG46Pd399X7c38AzLfsvLCnqurVGW5BfPYy44CpqqrbZrhr4902KSTs7/3dO8mLu/voOcv8YJKf6u6tTmfbm/0/Lck3d/fsXXe/LsM/5Hfr4bqaK6Gq3pqhrV4wZ5m/zXDHzfdutsxOqKqHJHl0dz98zjLnJHl8d1+wc5GxLIpDsMMW+SdgG/d9swxHn3+/uzc6nxmAHbbMvACwlUWKQ9u478OTvDdDEePtO73/PbVIcQhWldPKYCKq6gEZhhZfleH0CgAAWElV9eMZTon7iwOhMAQHum0bOVRVD0zyv5PcOMkLuvtZ27IjAA44cgQA88gTADtrW4pD410v/jHJ/ZNcluTdSR4xXpgNgAmTIwCYR54A2HnbdVrZCUku6u6PjFekf3kWv/MSAF/d5AgA5pEnAHbYQdu03aMynB+65rIMt377sqo6JckpSXLj3Pjf3Sy32KZQAA5c/5bP5vN9fS07jv1syxyRyBMAi5An5AmAeRbNE9tVHNpSd5+W5LQkuUUd3veo+y0rFICVdU6/adkhLI08AbA1eUKeAJhn0TyxXaeVXZ7kmJnXR4/TAECOAGAeeQJgh21XcejdSY6tqjtU1U2SnJTk9du0LwAOLHIEAPPIEwA7bFtOK+vuL1TVE5P8VYbbT57e3Rdux74AOLDIEQDMI08A7Lxtu+ZQd5+d5Ozt2j4ABy45AoB55AmAnbVdp5UBAAAAcABQHAIAAACYMMUhAAAAgAlTHAIAAACYMMUhAAAAgAlTHAIAAACYMMUhAAAAgAlTHAIAAACYMMUhAAAAgAlTHAIAAACYMMUhAAAAgAlTHAIAAACYMMUhAAAAgAlTHAIAAACYMMUhAAAAgAlTHAIAAACYMMUhAAAAgAlTHAIAAACYMMUhAAAAgAlTHAIAAACYMMUhAAAAgAlTHAIAAACYMMUhAAAAgAlTHAIAAACYMMUhAAAAgAlTHAIAAACYMMUhAAAAgAlTHAIAAACYsIP2ZeWqujjJdUm+mOQL3X18VR2e5BVJbp/k4iQP7+5P7VuYAByI5AkA5pEnAFbD/hg5dJ/uvmt3Hz++fnKSN3X3sUneNL4GYLrkCQDmkScAlmw7Tis7McmZ4/Mzkzx0G/YBwIFLngBgHnkCYIft02llSTrJX1dVJ/nD7j4tyRHdfeU4/2NJjtjHfSzFX11x3rJDAMgJD/jcskPYV/IEwDaSJwDYH/a1OHSv7r68qr4uyRuq6oOzM7u7x45+N1V1SpJTkuSmudk+hgHAipInAJhHngBYAft0Wll3Xz7+vDrJa5OckOSqqjoyScafV2+y7mndfXx3H39wDtmXMABYUfIEAPPIEwCrYa+LQ1X1tVV16NrzJD+Y5IIkr09y8rjYyUlet69BAnDgkScAmEeeAFgd+3Ja2RFJXltVa9t5aXf/ZVW9O8krq+rxSS5J8vB9DxOAA5A8AcA88gTAitjr4lB3fyTJXTaY/okk99uXoAA48MkTAMwjTwCsju24lT0AAAAABwjFIQAAAIAJUxwCAAAAmDDFIQAAAIAJUxwCAAAAmDDFIQAAAIAJUxwCAAAAmDDFIQAAAIAJUxwCAAAAmDDFIQAAAIAJUxwCAAAAmDDFIQAAAIAJUxwCAAAAmDDFIQAAAIAJUxwCAAAAmDDFIQAAAIAJUxwCAAAAmDDFIQAAAIAJUxwCAAAAmDDFIQAAAIAJUxwCAAAAmDDFIQAAAIAJUxwCAAAAmDDFIQAAAIAJUxwCAAAAmDDFIQAAAIAJUxwCAAAAmDDFIQAAAIAJ27I4VFWnV9XVVXXBzLTDq+oNVfXh8eetxulVVc+tqouq6vyquvt2Bg/A8skTAMwjTwCsvkVGDp2R5IHrpj05yZu6+9gkbxpfJ8mDkhw7Pk5J8rz9EyYAK+yMyBMAbO6MyBMAK23L4lB3vz3JJ9dNPjHJmePzM5M8dGb6WT14Z5LDqurI/RUsAKtHngBgHnkCYPXt7TWHjujuK8fnH0tyxPj8qCSXzix32TgNgGmRJwCYR54AWCH7fEHq7u4kvafrVdUpVXVuVZ17Q67f1zAAWFHyBADzyBMAy7e3xaGr1oZ3jj+vHqdfnuSYmeWOHqftprtP6+7ju/v4g3PIXoYBwIqSJwCYR54AWCF7Wxx6fZKTx+cnJ3ndzPTHjHcZuGeSa2aGiwIwHfIEAPPIEwAr5KCtFqiqlyW5d5LbVNVlSZ6e5FlJXllVj09ySZKHj4ufneTBSS5K8rkkj9uGmAFYIfIEAPPIEwCrb8viUHc/YpNZ99tg2U7yhH0NCoADhzwBwDzyBMDq2+cLUgMAAABw4FIcAgAAAJgwxSEAAACACVMcAgAAAJgwxSEAAACACVMcAgAAAJgwxSEAAACACVMcAgAAAJgwxSEAAACACVMcAgAAAJgwxSEAAACACVMcAgAAAJgwxSEAAACACVMcAgAAAJgwxSEAAACACVMcAgAAAJgwxSEAAACACVMcAgAAAJgwxSEAAACACVMcAgAAAJgwxSEAAACACVMcAgAAAJgwxSEAAACACVMcAgAAAJgwxSEAAACACVMcAgAAAJgwxSEAAACACVMcAgAAAJiwLYtDVXV6VV1dVRfMTDu1qi6vqvPGx4Nn5j2lqi6qqg9V1QO2K3AAVoM8AcA88gTA6ltk5NAZSR64wfTf7e67jo+zk6SqjktyUpI7j+v8flXdeH8FC8BKOiPyBACbOyPyBMBK27I41N1vT/LJBbd3YpKXd/f13f3RJBclOWEf4gNgxckTAMwjTwCsvn255tATq+r8cZjorcZpRyW5dGaZy8ZpAEyPPAHAPPIEwIrY2+LQ85LcKcldk1yZ5Hf2dANVdUpVnVtV596Q6/cyDABWlDwBwDzyBMAK2aviUHdf1d1f7O4vJXl+vjLU8/Ikx8wsevQ4baNtnNbdx3f38QfnkL0JA4AVJU8AMI88AbBa9qo4VFVHzrz8kSRrdx54fZKTquqQqrpDkmOTvGvfQgTgQCNPADCPPAGwWg7aaoGqelmSeye5TVVdluTpSe5dVXdN0kkuTvITSdLdF1bVK5O8P8kXkjyhu7+4PaEDsArkCQDmkScAVt+WxaHufsQGk184Z/lnJnnmvgQFwIFDngBgHnkCYPXty93KAAAAADjAKQ4BAAAATJjiEAAAAMCEKQ4BAAAATJjiEAAAAMCEKQ4BAAAATJjiEAAAAMCEKQ4BAAAATJjiEAAAAMCEKQ4BAAAATJjiEAAAAMCEKQ4BAAAATJjiEAAAAMCEKQ4BAAAATJjiEAAAAMCEKQ4BAAAATJjiEAAAAMCEKQ4BAAAATJjiEAAAAMCEKQ4BAAAATJjiEAAAAMCEKQ4BAAAATJjiEAAAAMCEKQ4BAAAATJjiEAAAAMCEKQ4BAAAATJjiEAAAAMCEKQ4BAAAATJjiEAAAAMCEbVkcqqpjquotVfX+qrqwqp40Tj+8qt5QVR8ef95qnF5V9dyquqiqzq+qu2/3LwHA8sgTAMwjTwCsvkVGDn0hyc9193FJ7pnkCVV1XJInJ3lTdx+b5E3j6yR5UJJjx8cpSZ6336MGYJXIEwDMI08ArLgti0PdfWV3v2d8fl2SDyQ5KsmJSc4cFzszyUPH5ycmOasH70xyWFUdud8jB2AlyBMAzCNPAKy+PbrmUFXdPsndkpyT5IjuvnKc9bEkR4zPj0py6cxql43T1m/rlKo6t6rOvSHX72HYAKwieQKAeeQJgNW0cHGoqm6e5NVJfqa7r52d192dpPdkx919Wncf393HH5xD9mRVAFaQPAHAPPIEwOpaqDhUVQdn6Mhf0t2vGSdftTa8c/x59Tj98iTHzKx+9DgNgK9S8gQA88gTAKttkbuVVZIXJvlAdz97Ztbrk5w8Pj85yetmpj9mvMvAPZNcMzNcFICvMvIEAPPIEwCr76AFlvneJI9O8r6qOm+c9otJnpXklVX1+CSXJHn4OO/sJA9OclGSzyV53H6NGIBVI08AMI88AbDitiwOdfc7ktQms++3wfKd5An7GBcABwh5AoB55AmA1bdHdysDAAAA4KuL4hAAAADAhCkOAQAAAEyY4hAAAADAhCkOAQAAAEyY4hAAAADAhCkOAQAAAEyY4hAAAADAhCkOAQAAAEyY4hAAAADAhCkOAQAAAEyY4hAAAADAhCkOAQAAAEyY4hAAAADAhCkOAQAAAEyY4hAAAADAhCkOAQAAAEyY4hAAAADAhCkOAQAAAEyY4hAAAADAhCkOAQAAAEyY4hAAAADAhCkOAQAAAEyY4hAAAADAhCkOAQAAAEyY4hAAAADAhCkOAQAAAEyY4hAAAADAhG1ZHKqqY6rqLVX1/qq6sKqeNE4/taour6rzxseDZ9Z5SlVdVFUfqqoHbOcvAMByyRMAzCNPAKy+gxZY5gtJfq6731NVhyb5+6p6wzjvd7v7t2cXrqrjkpyU5M5JbpfkjVX1zd39xf0ZOAArQ54AYB55AmDFbTlyqLuv7O73jM+vS/KBJEfNWeXEJC/v7uu7+6NJLkpywv4IFoDVI08AMI88AbD69uiaQ1V1+yR3S3LOOOmJVXV+VZ1eVbcapx2V5NKZ1S7L/M4fgK8S8gQA88gTAKtp4eJQVd08yauT/Ex3X5vkeUnulOSuSa5M8jt7suOqOqWqzq2qc2/I9XuyKgArSJ4AYB55AmB1LVQcqqqDM3TkL+nu1yRJd1/V3V/s7i8leX6+MtTz8iTHzKx+9DhtF919Wncf393HH5xD9uV3AGDJ5AkA5pEnAFbbIncrqyQvTPKB7n72zPQjZxb7kSQXjM9fn+Skqjqkqu6Q5Ngk79p/IQOwSuQJAOaRJwBW3yJ3K/veJI9O8r6qOm+c9otJHlFVd03SSS5O8hNJ0t0XVtUrk7w/w50JnuDOAgBf1eQJAOaRJwBW3JbFoe5+R5LaYNbZc9Z5ZpJn7kNcABwg5AkA5pEnAFbfHt2tDAAAAICvLopDAAAAABOmOAQAAAAwYYpDAAAAABOmOAQAAAAwYYpDAAAAABOmOAQAAAAwYYpDAAAAABOmOAQAAAAwYYpDAAAAABOmOAQAAAAwYYpDAAAAABOmOAQAAAAwYYpDAAAAABOmOAQAAAAwYYpDAAAAABOmOAQAAAAwYdXdy44hVfUvST6b5OPLjmWd20RMi1icA0YRAAAHS0lEQVTFmJLVjEtMi1vFuJYR0zd29213eJ8rp6quS/KhZcexAZ/TxaxiTMlqxiWmxa1iXPLEksgTe0RMi1vFuMS0mFWMKVnhPHHQTkSyle6+bVWd293HLzuWWWJazCrGlKxmXGJa3CrGtYoxTciHVrHtV/EzIabFrWJcYlrcKsa1ijFNiDyxIDEtbhXjEtNiVjGmZHXjSpxWBgAAADBpikMAAAAAE7ZKxaHTlh3ABsS0mFWMKVnNuMS0uFWMaxVjmopVbftVjEtMi1vFuMS0uFWMaxVjmopVbftVjEtMi1vFuMS0mFWMKVnduFbjgtQAAAAALMcqjRwCAAAAYIctvThUVQ+sqg9V1UVV9eQlxnFxVb2vqs6rqnPHaYdX1Ruq6sPjz1vtQBynV9XVVXXBzLQN46jBc8e2O7+q7r6DMZ1aVZeP7XVeVT14Zt5Txpg+VFUP2KaYjqmqt1TV+6vqwqp60jh9aW01J6Zlt9VNq+pdVfUPY1zPGKffoarOGff/iqq6yTj9kPH1ReP82+9gTGdU1Udn2uqu4/Qd+ayP+7pxVb23qv5sfL20dmIgT+wWhzyxWEzyxOJxyRN7Fps8sWLkid3ikCcWi0meWCymlcsRW8QlT+yt7l7aI8mNk/xTkjsmuUmSf0hy3JJiuTjJbdZN+80kTx6fPznJ/9qBOL4/yd2TXLBVHEkenOQvklSSeyY5ZwdjOjXJ/9hg2ePG9/GQJHcY398bb0NMRya5+/j80CT/OO57aW01J6Zlt1Ulufn4/OAk54xt8MokJ43T/yDJT47PfyrJH4zPT0ryih2M6YwkD9tg+R35rI/7+tkkL03yZ+PrpbWThzyxSRzyxGIxyROLxyVP7Fls8sQKPSJPbBSHPLFYTPLEYjGtXI7YIq4zIk/s1WPZI4dOSHJRd3+kuz+f5OVJTlxyTLNOTHLm+PzMJA/d7h1299uTfHLBOE5MclYP3pnksKo6codi2syJSV7e3dd390eTXJThfd7fMV3Z3e8Zn1+X5ANJjsoS22pOTJvZqbbq7v7M+PLg8dFJ7pvkVeP09W211oavSnK/qqodimkzO/JZr6qjk/xQkheMrytLbCeSyBO7kScWjkmeWDwueWJB8sRKkifWkScWjkmeWCymlcsRW8S1GXliC8suDh2V5NKZ15dl/od/O3WSv66qv6+qU8ZpR3T3lePzjyU5YjmhbRrHstvvieOQvNPrK0Nkdzymcfjd3TJUi1eirdbFlCy5rcahjecluTrJGzIcVfh0d39hg31/Oa5x/jVJbr3dMXX3Wls9c2yr362qQ9bHtEG8+9Nzkvx8ki+Nr2+dJbcTS+/nZskTe06eWCymRJ7YMiZ5gk0su5+bJU/sOXlisZiSJbbVKuaIjeKSJ/bNsotDq+Re3X33JA9K8oSq+v7Zmd3dmV+J3BGrEkeS5yW5U5K7Jrkyye8sI4iqunmSVyf5me6+dnbestpqg5iW3lbd/cXuvmuSozMcTfjWnY5hvfUxVdW3J3lKhti+K8nhSX5hp+Kpqh9OcnV3//1O7ZMDjjyxZ5be9yXyxKLkia3JEyxAntgzS+/7EnliEauYIxJ5Yn9bdnHo8iTHzLw+epy247r78vHn1Ulem+FDf9XaULPx59XLiG1OHEtrv+6+avxj/FKS5+crwxd3LKaqOjhDp/mS7n7NOHmpbbVRTKvQVmu6+9NJ3pLkuzMMpTxog31/Oa5x/i2TfGIHYnrgOJS2u/v6JH+UnW2r703yH6rq4gxD0u+b5H9nRdppwuSJxcgTG5An9pw8MZc8sZrkicXIExuQJ/bMKuaIdXHJE/tg2cWhdyc5toard98kw0WYXr/TQVTV11bVoWvPk/xgkgvGWE4eFzs5yet2OrbRZnG8PsljanDPJNfMDIHcVuvOz/yRDO21FtNJNVx5/Q5Jjk3yrm3YfyV5YZIPdPezZ2Ytra02i2kF2uq2VXXY+Pxrktw/w/nLb0nysHGx9W211oYPS/Lm8ajJdsf0wZlEXBnOxZ1tq219/7r7Kd19dHffPkNf9ObufmSW2E4kkScWJU/svn95YvG45IkFyBMrS55YjDyx+/7licViWrkcMScueWJf9BKvht1fuWr4P2Y4b/GXlhTDHTNc5f0fkly4FkeG8/3elOTDSd6Y5PAdiOVlGYYK3pDhfMTHbxZHhiut/9+x7d6X5PgdjOlF4z7Pz/ChPnJm+V8aY/pQkgdtU0z3yjDE8/wk542PBy+zrebEtOy2+s4k7x33f0GSp8187t+V4cJ1f5zkkHH6TcfXF43z77iDMb15bKsLkrw4X7kDwY581mfiu3e+cneBpbWTx5ffD3li11jkicVikicWj0ue2PP47h15YmUekSfWxyJPLBaTPLFYTCuXI7aIS57Yy0eNQQEAAAAwQcs+rQwAAACAJVIcAgAAAJgwxSEAAACACVMcAgAAAJgwxSEAAACACVMcAgAAAJgwxSEAAACACVMcAgAAAJiw/weDG8Ze8ciInwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 1440x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(20, 20))\n",
"\n",
"plt.subplot(1, 3, 1)\n",
"plt.title('Mask from Crop(Poly)')\n",
"plt.imshow(mask_from_poly_crop)\n",
"\n",
"plt.subplot(1, 3, 2)\n",
"plt.title('Mask from Crop(Mask)')\n",
"plt.imshow(mask_crop)\n",
"\n",
"plt.subplot(1, 3, 3)\n",
"plt.title('abs( Crop(Poly) - Crop(Mask) ) = %f'%diff.sum())\n",
"plt.imshow(diff)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Resize [FAIL]"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/csbotos/anaconda3/envs/debugmask/lib/python3.7/site-packages/torch/nn/functional.py:2423: UserWarning: Default upsampling behavior when mode=bilinear is changed to align_corners=False since 0.4.0. Please specify align_corners=True if the old behavior is desired. See the documentation of nn.Upsample for details.\n",
" \"See the documentation of nn.Upsample for details.\".format(mode))\n"
]
}
],
"source": [
"new_size = (600, 500)\n",
"mask_from_poly_resize = polygon.resize(new_size).convert('mask')\n",
"mask_resize = mask.resize(new_size).convert('mask')\n",
"diff = torch.abs(mask_from_poly_resize.float() - mask_resize.float())"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f794318ec88>"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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AAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEHWDONU1Qur6sKq+sDC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\n",
"text/plain": [
"<Figure size 2880x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(40, 20))\n",
"\n",
"plt.subplot(1, 3, 1)\n",
"plt.title('Mask from Resize(Poly)')\n",
"plt.imshow(mask_from_poly_resize)\n",
"\n",
"plt.subplot(1, 3, 2)\n",
"plt.title('Mask from Resize(Mask)')\n",
"plt.imshow(mask_resize)\n",
"\n",
"plt.subplot(1, 3, 3)\n",
"plt.title('abs( Resize(Poly) - Resize(Mask) ) = %f'%diff.sum())\n",
"plt.imshow(diff)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observations\n",
"- Probably the good old [Detectron inconsistency legacy](https://github.com/facebookresearch/maskrcnn-benchmark/pull/150#discussion_r233075909), otherwise seems OK\n",
"- the UserWarning is there, maybe it should be resolved"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Transpose [FAIL]"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [],
"source": [
"FLIP_LEFT_RIGHT = 0\n",
"FLIP_TOP_BOTTOM = 1\n",
"methods = (FLIP_LEFT_RIGHT, FLIP_TOP_BOTTOM)\n",
"results = []\n",
"for method in methods:\n",
" mask_from_poly_flip = polygon.transpose(method).convert('mask')\n",
" mask_flip = mask.transpose(method).convert('mask')\n",
" diff = torch.abs(mask_from_poly_flip.float() - mask_flip.float())\n",
" results.append([mask_from_poly_flip, mask_flip, diff])"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Horizontal\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 2880x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Vertical\n"
]
},
{
"data": {
"image/png": "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AGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEG2GcapqpdX1UVV9R8L225a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\n",
"text/plain": [
"<Figure size 2880x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"for result, method in zip(results, ['Horizontal', 'Vertical']):\n",
" \n",
" mask_from_poly_flip, mask_flip, diff = result\n",
" \n",
" print(method)\n",
" plt.figure(figsize=(40, 20))\n",
"\n",
" plt.subplot(1, 3, 1)\n",
" plt.title('Mask from flip(Poly)')\n",
" plt.imshow(mask_from_poly_flip)\n",
"\n",
" plt.subplot(1, 3, 2)\n",
" plt.title('Mask from flip(Mask)')\n",
" plt.imshow(mask_flip)\n",
"\n",
" plt.subplot(1, 3, 3)\n",
" plt.title('abs( flip(Poly) - flip(Mask) ) = %f'%diff.sum())\n",
" plt.imshow(diff)\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observations\n",
"- Same as with the Resize: probably the good old [Detectron inconsistency legacy](https://github.com/facebookresearch/maskrcnn-benchmark/pull/150#discussion_r233075909), otherwise seems OK\n",
"- the vertical and the horizontal transformation takes effect differently\n",
"<pre>\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"</pre>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Define a disjoint polygon\n",
"\n",
"Two rectangles, one on the top-left and one on the bottom-right"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [],
"source": [
"width = 640\n",
"height = 480\n",
"poly = [[100, 100, 200, 100, 200, 200, 100, 200],\n",
" [width-200, height-200, width-100, height-200, width-100, height-100, width-200, height-100]]\n",
"size = (width, height)\n",
"box = [110, 110, 210, 210]\n",
"\n",
"polygon = Polygons(poly, size, 'polygon')\n",
"mask = Mask(poly, size, 'mask')"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f7942ac1a58>"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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AAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYO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\n",
"text/plain": [
"<Figure size 1440x1440 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(20, 20))\n",
"plt.title('Mask')\n",
"plt.imshow(mask.convert('mask'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Crop [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {},
"outputs": [],
"source": [
"mask_from_poly_crop = polygon.crop(box).convert('mask')\n",
"mask_crop = mask.crop(box).convert('mask')\n",
"diff = torch.abs(mask_from_poly_crop.float() - mask_crop.float())"
]
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f79425f5940>"
]
},
"execution_count": 142,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(20, 20))\n",
"\n",
"plt.subplot(1, 3, 1)\n",
"plt.title('Mask from Crop(Poly)')\n",
"plt.imshow(mask_from_poly_crop)\n",
"\n",
"plt.subplot(1, 3, 2)\n",
"plt.title('Mask from Crop(Mask)')\n",
"plt.imshow(mask_crop)\n",
"\n",
"plt.subplot(1, 3, 3)\n",
"plt.title('abs( Crop(Poly) - Crop(Mask) ) = %f'%diff.sum())\n",
"plt.imshow(diff)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Resize [FAIL]"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [],
"source": [
"new_size = (600, 500)\n",
"mask_from_poly_resize = polygon.resize(new_size).convert('mask')\n",
"mask_resize = mask.resize(new_size).convert('mask')\n",
"diff = torch.abs(mask_from_poly_resize.float() - mask_resize.float())"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f794296dc88>"
]
},
"execution_count": 121,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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YBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABhHGAQAAAAAAAACAQYRxAAAAAAAAAABgEGEcAAAAAAAAAAAYRBgHAAAAAAAAAAAGEcYBAAAAAAAAAIBBhHEAAAAAAAAAAGAQYRwAAAAAAAAAABhEGAcAAAAAAAAAAAYRxgEAAAAAAAAAgEGEcQAAAAAAAAAAYBBhHAAAAAAAAAAAGEQYBwAAAAAAAAAABlkzjFNVp1XVBVX1/oVlh1TV66rqv+f/XndeXlX1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\n",
"text/plain": [
"<Figure size 2880x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(40, 20))\n",
"\n",
"plt.subplot(1, 3, 1)\n",
"plt.title('Mask from Resize(Poly)')\n",
"plt.imshow(mask_from_poly_resize)\n",
"\n",
"plt.subplot(1, 3, 2)\n",
"plt.title('Mask from Resize(Mask)')\n",
"plt.imshow(mask_resize)\n",
"\n",
"plt.subplot(1, 3, 3)\n",
"plt.title('abs( Resize(Poly) - Resize(Mask) ) = %f'%diff.sum())\n",
"plt.imshow(diff)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observations\n",
"- Different result on the different rectangles. Aliasing? Magic?\n",
"- On real cases diff will be definitely >0.\n",
"- However it seems OK, not sure what should be the acceptance threshold"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Transpose [FAIL]"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
"outputs": [],
"source": [
"FLIP_LEFT_RIGHT = 0\n",
"FLIP_TOP_BOTTOM = 1\n",
"methods = (FLIP_LEFT_RIGHT, FLIP_TOP_BOTTOM)\n",
"results = []\n",
"for method in methods:\n",
" mask_from_poly_flip = polygon.transpose(method).convert('mask')\n",
" mask_flip = mask.transpose(method).convert('mask')\n",
" diff = torch.abs(mask_from_poly_flip.float() - mask_flip.float())\n",
" results.append([mask_from_poly_flip, mask_flip, diff])"
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Horizontal\n"
]
},
{
"data": {
"image/png": "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AAB2zRN5Mw4AAAAAAAAAAHAcZRwAAAAAAAAAAJhEGQcAAAAAAAAAACZRxgEAAAAAAAAAgEmUcQAAAAAAAAAAYBJlHAAAAAAAAAAAmEQZBwAAAAAAAAAAJlHGAQAAAAAAAACASZRxAAAAAAAAAABgEmUcAAAAAAAAAACYRBkHAAAAAAAAAAAmUcYBAAAAAAAAAIBJlHEAAAAAAAAAAGASZRwAAAAAAAAAAJhEGQcAAAAAAAAAACZRxgEAAAAAAAAAgEmUcQAAAAAAAAAAYBJlHAAAAAAAAAAAmEQZBwAAAAAAAAAAJlHGAQAAAAAAAACASZRxAAAAAAAAAABgEmUcAAAAAAAAAACYRBkHAAAAAAAAAAAmUcYBAAAAAAAAAIBJlHEAAAAAAAAAAGASZRwAAAAAAAAAAJhEGQcAAAAAAAAAACZRxgEAAAAAAAAAgEmUcQAAAAAAAAAAYBJlHAAAAAAAAAAAmEQZBwAAAAAAAAAAJlHGAQAAAAAAAACASZRxAAAAAAAAAABgEmUcAAAAAAAAAACYRBkHAAAAAAAAAAAmUcYBAAAAAAAAAIBJlHEAAAAAAAAAAGASZRwAAAAAAAAAAJhEGQcAAAAAAAAAACZRxgEAAAAAAAAAgEmUcQAAAAAAAAAAYBJlHAAAAAAAAAAAmEQZBwAAAAAAAAAAJlHGAQAAAAAAAACASZRxAAAAAAAAAABgEmUcAAAAAAAAAACYRBkHAAAAAAAAAAAmUcYBAAAAAAAAAIBJlHEAAAAAAAAAAGASZRwAAAAAAAAAAJhEGQcAAAAAAAAAACZRxgEAAAAAAAAAgEmUcQAAAAAAAAAAYBJlHAAAAAAAAAAAmEQZBwAAAAAAAAAAJlHGAQAAAAAAAACASZRxAAAAAAAAAABgEmUcAAAAAAAAAACYRBkHAAAAAAAAAAAmUcYBAAAAAAAAAIBJlHEAAAAAAAAAAGASZRwAAAAAAAAAAJhEGQcAAAAAAAAAACZRxgEAAAAAAAAAgEmUcQAAAAAAAAAAYBJlHAAAAAAAAAAAmEQZBwAAAAAAAAAAJlHGAQAAAAAAAACASZRxAAAAAAAAAABgEmUcAAAAAAAAAACYRBkHAAAAAAAAAAAmUcYBAAAAAAAAAIBJlHEAAAAAAAAAAGASZRwAAAAAAAAAAJhEGQcAAAAAAAAAACZRxgEAAAAAAAAAgEmq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\n",
"text/plain": [
"<Figure size 2880x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Vertical\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 2880x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"for result, method in zip(results, ['Horizontal', 'Vertical']):\n",
" \n",
" mask_from_poly_flip, mask_flip, diff = result\n",
" \n",
" print(method)\n",
" plt.figure(figsize=(40, 20))\n",
"\n",
" plt.subplot(1, 3, 1)\n",
" plt.title('Mask from flip(Poly)')\n",
" plt.imshow(mask_from_poly_flip)\n",
"\n",
" plt.subplot(1, 3, 2)\n",
" plt.title('Mask from flip(Mask)')\n",
" plt.imshow(mask_flip)\n",
"\n",
" plt.subplot(1, 3, 3)\n",
" plt.title('abs( flip(Poly) - flip(Mask) ) = %f'%diff.sum())\n",
" plt.imshow(diff)\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observations\n",
"- Same as with the Resize: probably the good old [Detectron inconsistency legacy](https://github.com/facebookresearch/maskrcnn-benchmark/pull/150#discussion_r233075909), otherwise seems OK\n",
"- the vertical and the horizontal transformation takes effect differently **but consistently**\n",
"<pre>\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"</pre>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Define a single concave polygon\n",
"\n",
"Modified shape from [unit test of](https://github.com/facebookresearch/maskrcnn-benchmark/blob/b8c5bcafa02e4a7489b5a79bf4609933f98c9599/tests/test_segmentation_mask.py) PR #150"
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {},
"outputs": [],
"source": [
"''' ORIGINAL SHAPE\n",
"poly = [[423.0, 306.5, 406.5, 277.0, 400.0, 271.5, 389.5, 277.0, 387.5, 292.0,\n",
" 384.5, 295.0, 374.5, 220.0, 378.5, 210.0, 391.0, 200.5, 404.0, 199.5,\n",
" 414.0, 203.5, 425.5, 221.0, 438.5, 297.0, 423.0, 306.5],\n",
" [385.5, 240.0, 404.0, 234.5, 419.5, 234.0, 416.5, 219.0, 409.0, 209.5,\n",
" 394.0, 207.5, 385.5, 213.0, 382.5, 221.0, 385.5, 240.0]] \n",
"'''\n",
"\n",
"poly = [[423.0, 306.5, 406.5, 277.0, 400.0, 271.5, 389.5, 277.0, 387.5, 292.0,\n",
" 384.5, 295.0, 374.5, 220.0, 378.5, 210.0, 391.0, 200.5, 404.0, 199.5,\n",
" 414.0, 203.5, 425.5, 221.0, 438.5, 297.0, 423.0, 306.5]]\n",
"width = 640\n",
"height = 480\n",
"size = (width, height)\n",
"box = [350, 200, 400, 300]\n",
"\n",
"polygon = Polygons(poly, size, 'polygon')\n",
"mask = Mask(poly, size, 'mask')"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f794243a048>"
]
},
"execution_count": 146,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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AIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAA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\n",
"text/plain": [
"<Figure size 1440x1440 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(20, 20))\n",
"plt.title('Mask')\n",
"plt.imshow(mask.convert('mask'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Crop [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 147,
"metadata": {},
"outputs": [],
"source": [
"mask_from_poly_crop = polygon.crop(box).convert('mask')\n",
"mask_crop = mask.crop(box).convert('mask')\n",
"diff = torch.abs(mask_from_poly_crop.float() - mask_crop.float())"
]
},
{
"cell_type": "code",
"execution_count": 148,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f7942369668>"
]
},
"execution_count": 148,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(20, 20))\n",
"\n",
"plt.subplot(1, 3, 1)\n",
"plt.title('Mask from Crop(Poly)')\n",
"plt.imshow(mask_from_poly_crop)\n",
"\n",
"plt.subplot(1, 3, 2)\n",
"plt.title('Mask from Crop(Mask)')\n",
"plt.imshow(mask_crop)\n",
"\n",
"plt.subplot(1, 3, 3)\n",
"plt.title('abs( Crop(Poly) - Crop(Mask) ) = %f'%diff.sum())\n",
"plt.imshow(diff)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observation\n",
"\n",
"- Surprisingly looks like a seducing lady showing her ankles from behind the door\n",
"- Otherwise OK"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Resize [FAIL]"
]
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {},
"outputs": [],
"source": [
"new_size = (600, 500)\n",
"mask_from_poly_resize = polygon.resize(new_size).convert('mask')\n",
"mask_resize = mask.resize(new_size).convert('mask')\n",
"diff = torch.abs(mask_from_poly_resize.float() - mask_resize.float())"
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f794225d278>"
]
},
"execution_count": 150,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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AJ0o4wAAAAAAAAAAQCfKOAAAAAAAAAAA0IkyDgAAAAAAAAAAdKKMAwAAAAAAAAAAnSjjAAAAAAAAAABAJ8o4AAAAAAAAAADQiTIOAAAAAAAAAAB0oowDAAAAAAAAAACdKOMAAAAAAAAAAEAnyjgAAAAAAAAAANCJMg4AAAAAAAAAAHSijAMAAAAAAAAAAJ0o4wAAAAAAAAAAQCfKOAAAAAAAAAAA0IkyDgAAAAAAAAAAdKKMAwAAAAAAAAAAnSjjAAAAAAAAAABAJ8o4AAAAAAAAAADQiTIOAAAAAAAAAAB0oowDAAAAAAAAAACdKOMAAAAAAAAAAEAnyjgAAAAAAAAAANCJMg4AAAAAAAAAAHSijAMAAAAAAAAAAJ0o4wAAAAAAAAAAQCfKOAAAAAAAAAAA0IkyDgAAAAAAAAAAdKKMAwAAAAAAAAAAnSjjAAAAAAAAAABAJ8o4AAAAAAAAAADQiTIOAAAAAAAAAAB0oowDAAAAAAAAAACdKOMAAAAAAAAAAEAnyjgAAAAAAAAAANCJMg4AAAAAAAAAAHSijAMAAAAAAAAAAJ0o4wAAAAAAAAAAQCfKOAAAAAAAAAAA0IkyDgAAAAAAAAAAdKKMAwAAAAAAAAAAnSjjAAAAAAAAAABAJ8o4AAAAAAAAAADQiTIOAAAAAAAAAAB0oowDAAAAAAAAAACdKOMAAAAAAAAAAEAnyjgAAAAAAAAAANCJMg4AAAAAAAAAAHSijAMAAAAAAAAAAJ0o4wAAAAAAAAAAQCfKOAAAAAAAAAAA0IkyDgAAAAAAAAAAdKKMAwAAAAAAAAAAnSjjAAAAAAAAAABAJ8o4AAAAAAAAAADQiTIOAAAAAAAAAAB0oowDAAAAAAAAAACdKOMAAAAAAAAAAEAnyjgAAAAAAAAAANCJMg4AAAAAAAAAAHSijAMAAAAAAAAAAJ0o4wAAAAAAAAAAQCfKOAAAAAAAAAAA0IkyDgAAAAAAAAAAdKKMAwAAAAAAAAAAnSjjAAAAAAAAAABAJ8o4AAAAAAAAAADQiTIOAAAAAAAAAAB0oowDAAAAAAAAAACdKOMAAAAAAAAAAEAnyjgAAAAAAAAAANCJMg4AAAAAAAAAAHSijAMAAAAAAAAAAJ0o4wAAAAAAAAAAQCfKOAAAAAAAAAAA0IkyDgAAAAAAAAAAdKKMAwAAAAAAAAAAney7jFNV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\n",
"text/plain": [
"<Figure size 2880x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(40, 20))\n",
"\n",
"plt.subplot(1, 3, 1)\n",
"plt.title('Mask from Resize(Poly)')\n",
"plt.imshow(mask_from_poly_resize)\n",
"\n",
"plt.subplot(1, 3, 2)\n",
"plt.title('Mask from Resize(Mask)')\n",
"plt.imshow(mask_resize)\n",
"\n",
"plt.subplot(1, 3, 3)\n",
"plt.title('abs( Resize(Poly) - Resize(Mask) ) = %f'%diff.sum())\n",
"plt.imshow(diff)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observations\n",
"- This kind of misalignment will be frequent if resized\n",
"- Still it seems it could be minimized"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Transpose [FAIL]"
]
},
{
"cell_type": "code",
"execution_count": 152,
"metadata": {},
"outputs": [],
"source": [
"FLIP_LEFT_RIGHT = 0\n",
"FLIP_TOP_BOTTOM = 1\n",
"methods = (FLIP_LEFT_RIGHT, FLIP_TOP_BOTTOM)\n",
"results = []\n",
"for method in methods:\n",
" mask_from_poly_flip = polygon.transpose(method).convert('mask')\n",
" mask_flip = mask.transpose(method).convert('mask')\n",
" diff = torch.abs(mask_from_poly_flip.float() - mask_flip.float())\n",
" results.append([mask_from_poly_flip, mask_flip, diff])"
]
},
{
"cell_type": "code",
"execution_count": 153,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Horizontal\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 2880x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Vertical\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 2880x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"for result, method in zip(results, ['Horizontal', 'Vertical']):\n",
" \n",
" mask_from_poly_flip, mask_flip, diff = result\n",
" \n",
" print(method)\n",
" plt.figure(figsize=(40, 20))\n",
"\n",
" plt.subplot(1, 3, 1)\n",
" plt.title('Mask from flip(Poly)')\n",
" plt.imshow(mask_from_poly_flip)\n",
"\n",
" plt.subplot(1, 3, 2)\n",
" plt.title('Mask from flip(Mask)')\n",
" plt.imshow(mask_flip)\n",
"\n",
" plt.subplot(1, 3, 3)\n",
" plt.title('abs( flip(Poly) - flip(Mask) ) = %f'%diff.sum())\n",
" plt.imshow(diff)\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observations\n",
"- Same as with the Resize: probably the good old [Detectron inconsistency legacy](https://github.com/facebookresearch/maskrcnn-benchmark/pull/150#discussion_r233075909), otherwise seems OK\n",
"- the vertical and the horizontal transformation takes effect differently\n",
"<pre>\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"</pre>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Define multiple general polygons\n",
"\n",
"Modified shape from [unit test of](https://github.com/facebookresearch/maskrcnn-benchmark/blob/b8c5bcafa02e4a7489b5a79bf4609933f98c9599/tests/test_segmentation_mask.py) PR #150"
]
},
{
"cell_type": "code",
"execution_count": 166,
"metadata": {},
"outputs": [],
"source": [
"poly = [[423.0, 306.5, 406.5, 277.0, 400.0, 271.5, 389.5, 277.0, 387.5, 292.0,\n",
" 384.5, 295.0, 374.5, 220.0, 378.5, 210.0, 391.0, 200.5, 404.0, 199.5,\n",
" 414.0, 203.5, 425.5, 221.0, 438.5, 297.0, 423.0, 306.5],\n",
" [100, 100, 200, 100, 200, 200, 100, 200],\n",
" [width-200, height-200, width-100, height-200, width-100, height-100, width-200, height-100]\n",
" ] \n",
"\n",
"width = 640\n",
"height = 480\n",
"size = (width, height)\n",
"box = [400, 250, 500, 300]\n",
"\n",
"polygon = Polygons(poly, size, 'polygon')\n",
"mask = Mask(poly, size, 'mask')"
]
},
{
"cell_type": "code",
"execution_count": 167,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f79420022b0>"
]
},
"execution_count": 167,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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AAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLi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\n",
"text/plain": [
"<Figure size 1440x1440 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(20, 20))\n",
"plt.title('Mask')\n",
"plt.imshow(mask.convert('mask'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Crop [FAIL]"
]
},
{
"cell_type": "code",
"execution_count": 168,
"metadata": {},
"outputs": [],
"source": [
"mask_from_poly_crop = polygon.crop(box).convert('mask')\n",
"mask_crop = mask.crop(box).convert('mask')\n",
"diff = torch.abs(mask_from_poly_crop.float() - mask_crop.float())"
]
},
{
"cell_type": "code",
"execution_count": 169,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f7942028160>"
]
},
"execution_count": 169,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(20, 20))\n",
"\n",
"plt.subplot(1, 3, 1)\n",
"plt.title('Mask from Crop(Poly)')\n",
"plt.imshow(mask_from_poly_crop)\n",
"\n",
"plt.subplot(1, 3, 2)\n",
"plt.title('Mask from Crop(Mask)')\n",
"plt.imshow(mask_crop)\n",
"\n",
"plt.subplot(1, 3, 3)\n",
"plt.title('abs( Crop(Poly) - Crop(Mask) ) = %f'%diff.sum())\n",
"plt.imshow(diff)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observation\n",
"\n",
"- Random pixel error. No idea why"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Resize [FAIL]"
]
},
{
"cell_type": "code",
"execution_count": 170,
"metadata": {},
"outputs": [],
"source": [
"new_size = (600, 500)\n",
"mask_from_poly_resize = polygon.resize(new_size).convert('mask')\n",
"mask_resize = mask.resize(new_size).convert('mask')\n",
"diff = torch.abs(mask_from_poly_resize.float() - mask_resize.float())"
]
},
{
"cell_type": "code",
"execution_count": 171,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f7942166cc0>"
]
},
"execution_count": 171,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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AAB0oowDAAAAAAAAAACdKOMAAAAAAAAAAEAnyjgAAAAAAAAAANCJMg4AAAAAAAAAAHSijAMAAAAAAAAAAJ0o4wAAAAAAAAAAQCfKOAAAAAAAAAAA0IkyDgAAAAAAAAAAdKKMAwAAAAAAAAAAnSjjAAAAAAAAAABAJ8o4AAAAAAAAAADQiTIOAAAAAAAAAAB0oowDAAAAAAAAAACdKOMAAAAAAAAAAEAnyjgAAAAAAAAAANCJMg4AAAAAAAAAAHSijAMAAAAAAAAAAJ0o4wAAAAAAAAAAQCfKOAAAAAAAAAAA0IkyDgAAAAAAAAAAdKKMAwAAAAAAAAAAnSjjAAAAAAAAAABAJ8o4AAAAAAAAAADQiTIOAAAAAAAAAAB0oowDAAAAAAAAAACdKOMAAAAAAAAAAEAnyjgAAAAAAAAAANCJMg4AAAAAAAAAAHSijAMAAAAAAAAAAJ0o4wAAAAAAAAAAQCfKOAAAAAAAAAAA0IkyDgAAAAAAAAAAdKKMAwAAAAAAAAAAnSjjAAAAAAAAAABAJ8o4AAAAAAAAAADQiTIOAAAAAAAAAAB0oowDAAAAAAAAAACdKOMAAAAAAAAAAEAnyjgAAAAAAAAAANCJMg4AAAAAAAAAAHSijAMAAAAAAAAAAJ0o4wAAAAAAAAAAQCfKOAAAAAAAAAAA0IkyDgAAAAAAAAAAdKKMAwAAAAAAAAAAnSjjAAAAAAAAAABAJ8o4AAAAAAAAAADQiTIOAAAAAAAAAAB0oowDAAAAAAAAAACdKOMAAAAAAAAAAEAnyjgAAAAAAAAAANCJMg4AAAAAAAAAAHSijAMAAAAAAAAAAJ0o4wAAAAAAAAAAQCfKOAAAAAAAAAAA0IkyDgAAAAAAAAAAdKKMAwAAAAAAAAAAnSjjAAAAAAAAAABAJ8o4AAAAAAAAAADQiTIOAAAAAAAAAAB0oowDAAAAAAAAAACdKOMAAAAAAAAAAEAnyjgAAAAAAAAAANCJMg4AAAAAAAAAAHSijAMAAAAAAAAAAJ0o4wAAAAAAAAAAQCfKOAAAAAAAAAAA0IkyDgAAAAAAAAAAdKKMAwAAAAAAAAAAnSjjAAAAAAAAAABAJ8o4AAAAAAAAAADQiTIOAAAAAAAAAAB0oowDAAAAAAAAAACdKOMAAAAAAAAAAEAnyjgAAAAAAAAAANCJMg4AAAAAAAAAAHSijAMAAAAAAAAAAJ0o4wAAAAAAAAAAQCfKOAAAAAAAAAAA0IkyDgAAAAAAAAAAdKKMAwAAAAAAAAAAnWzMPQAAAAAA4HBOHNucewgAAMCgTp49NfcQOA85b2zKOACwJJxUAQAAAAAAi+b+BPS358dUVdUFVfVAVX182r6qqu6rqtNV9eGqunDa/8xp+/T0/pVHM3QAAGAU8gQAAHAQsgQAACPacxknyVuSPLhj+91Jbm2tvSDJY0lunvbfnOSxaf+t0+cAAID1Jk8AAAAHIUsAADCcPZVxqup4ktcled+0XUmuTXLn9JE7krxxen39tJ3p/VdPnwcAANaQPAEAAByELAEAwKj2ujLOe5K8Lcn3pu1LkzzeWntq2n44yeXT68uTfDVJpvefmD4PAACsJ3kCAAA4CFkCAIAh7VrGqarXJ3mktfbpnn9wVd1SVfdX1f3fyZM9vzQAALAk5AkAAOAgjipLTF9bngAA4Eht7OEzr0jyhqp6bZKLkjw7yXuTXFxVG1PD/HiSM9PnzyS5IsnDVbWR5DlJvnHuF22t3ZbktiR5dl3SDvsXAQAAlpI8AQAAHMSRZIlEngAA4OjtujJOa+0drbXjrbUrk9yY5J7W2puT3JvkhuljNyX52PT6rmk70/v3tNaczAIAwBqSJwAAgIOQJQAAGNmuZZwf4XeTvLWqTmfruau3T/tvT3LptP+tSd5+uCECAAArSJ4AAAAOQpYAAGDp7eUxVU9rrX0yySen1w8lufo8n/l2kjd1GBsAALBC5AkAAOAgZAkAAEZzmJVxAAAAAAAAAACAHZRxAAAAAAAAAACgE2UcAAAAAAAAAADoRBkHAAAAAAAAAAA6UcYBAAAAAAAAAIBOlHEAAAAAAAAAAKATZRwAAAAAAAAAAOhEGQcAAAAAAAAAADpRxgEAAAAAAAAAgE6UcQAAAAAAAAAAoBNlHAAAAAAAAAAA6EQZBwAAAAAAAAAAOlHGAQAAAAAAAACATpRxAAAAAAAAAACgE2UcAAAAAAAAAADoRBkHAAAAAAAAAAA6UcYBAAAAAAAAAIBOlHEAAAAAAAAAAKATZRwAAAAAAAAAAOhEGQcAAAAAAAAAADpRxgEAAAAAAAAAgE6UcQAAAAAAAAAAoBNlHAAAAAAAAAAA6EQZBwAAAAAAAAAAOlHGAQAAAAAAAACATpRxAAAAAAAAAACgE2UcAAAAAAAAAADoRBkHAAAAAAAAAAA6UcYBAAAAAAAAAIBOlHEAAAAAAAAAAKATZRwAAAAAAAAAAOhEGQcAAAAAAAAAADpRxgEAAAAAAAAAgE6UcQAAAAAAAAAAoBNlHAAAAAAAAAAA6EQZBwAAAAAAAAAAOlHGAQAAAAAAAACATpRxAAAAAAAAAACgE2UcAAAAAAAAAADoRBkHAAAAAAAAAAA6UcYBAAAAAAAAAIBOlHEAAAAAAAAAAKATZRwAAAAAAAAAAOhEGQcAAAAAAAAAADpRxgEAAAAAAAAAgE6UcQAAAAAAAAAAoBNlHAAAAAAAAAAA6EQZBwAAAAAAAAAAOlHGAQAAAAAAAACATpRxAAAAAAAAAACgE2UcAAAAAAAAAADoRBkHAAAAAAAAAAA6UcYBAAAAAAAAAIBOlHEAAAAAAAAAAKATZRwAAAAAAAAAAOhEGQcAAAAAAAAAADpRxgEAAAAAAAAAgE6UcQAAAAAAAAAAoBNlHAAAAAAAAAAA6EQZBwAAAAAAAAAAOlHGAQAAAAAAAACATpRxAAAAAAAAAACgE2UcAAAAAAAAAADoRBkHAAAAAAAAAAA6UcYBAAAAAAAAAIBOlHEAAAAAAAAAAKATZRwAAAAAAAAAAOhEGQcAAAAAAAAAADpRxgEAAAAAAAAAgE6UcQAAAAAAAAAAoBNlHAAAAAAAAAAA6EQZBwAAAAAAAAAAOlHGAQAAAAAAAACATpRxAAAAAAAAAACgE2UcAAAAAAAAAADoRBkHAAAAAAAAAAA6UcYBAAAAAAAAAIBOlHEAAAAAAAAAAKATZRwAAAAAAAAAAOhEGQcAAAAAAAAAADpRxgEAAAAAAAAAgE6UcQAAAAAAAAAAoBNlHAAAAAAAAAAA6EQZBwAAAAAAAAAAOlHGAQAAAAAAAACATpRxAAAAAAAAAACgE2UcAAAAAAAAAADoRBkHAAAAAAAAAAA6UcYBAAAAAAAAAIBOlHEAAAAAAAAAAKATZRwAAAAAAAAAAOhEGQcAAAAAAAAAADpRxgEAAAAAAAAAgE6UcQAAAAAAAAAAoBNlHAAAAAAAAAAA6EQZBwAAAAAAAAAAOlHGAQAAAAAAAACATpRxAAAAAAAAAACgE2UcAAAAAAAAAADoRBkHAAAAAAAAAAA6UcYBAAAAAAAAAIBOlHEAAAAAAAAAAKATZRwAAAAAAAAAAOhE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\n",
"text/plain": [
"<Figure size 2880x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(40, 20))\n",
"\n",
"plt.subplot(1, 3, 1)\n",
"plt.title('Mask from Resize(Poly)')\n",
"plt.imshow(mask_from_poly_resize)\n",
"\n",
"plt.subplot(1, 3, 2)\n",
"plt.title('Mask from Resize(Mask)')\n",
"plt.imshow(mask_resize)\n",
"\n",
"plt.subplot(1, 3, 3)\n",
"plt.title('abs( Resize(Poly) - Resize(Mask) ) = %f'%diff.sum())\n",
"plt.imshow(diff)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observations\n",
"- consistent error"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Transpose [FAIL]"
]
},
{
"cell_type": "code",
"execution_count": 174,
"metadata": {},
"outputs": [],
"source": [
"FLIP_LEFT_RIGHT = 0\n",
"FLIP_TOP_BOTTOM = 1\n",
"methods = (FLIP_LEFT_RIGHT, FLIP_TOP_BOTTOM)\n",
"results = []\n",
"for method in methods:\n",
" mask_from_poly_flip = polygon.transpose(method).convert('mask')\n",
" mask_flip = mask.transpose(method).convert('mask')\n",
" diff = torch.abs(mask_from_poly_flip.float() - mask_flip.float())\n",
" results.append([mask_from_poly_flip, mask_flip, diff])"
]
},
{
"cell_type": "code",
"execution_count": 175,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Horizontal\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 2880x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Vertical\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 2880x1440 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"for result, method in zip(results, ['Horizontal', 'Vertical']):\n",
" \n",
" mask_from_poly_flip, mask_flip, diff = result\n",
" \n",
" print(method)\n",
" plt.figure(figsize=(40, 20))\n",
"\n",
" plt.subplot(1, 3, 1)\n",
" plt.title('Mask from flip(Poly)')\n",
" plt.imshow(mask_from_poly_flip)\n",
"\n",
" plt.subplot(1, 3, 2)\n",
" plt.title('Mask from flip(Mask)')\n",
" plt.imshow(mask_flip)\n",
"\n",
" plt.subplot(1, 3, 3)\n",
" plt.title('abs( flip(Poly) - flip(Mask) ) = %f'%diff.sum())\n",
" plt.imshow(diff)\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observations\n",
"- consistent error\n",
"<pre>\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"</pre>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## IMPORTANT: error checking and handling is missing\n",
"\n",
"I will try to cover some usual cases, however I think there are infinite number of ways to define a **Polygon** incorrectly, or the **cropping box**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Case 1: Overflow"
]
},
{
"cell_type": "code",
"execution_count": 181,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f7941893be0>"
]
},
"execution_count": 181,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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MXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAA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\n",
"text/plain": [
"<Figure size 1440x1440 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"width = 640\n",
"height = 480\n",
"poly = [[1000, 100, width-100, 100, width-100, height-100, 100, height-100]]\n",
"size = (width, height)\n",
"box = [poly[0][0]-50, poly[0][1]-50, poly[0][4]-50, poly[0][5]-50]\n",
"\n",
"polygon = Polygons(poly, size, 'polygon')\n",
"mask = Mask(poly, size, 'mask')\n",
"\n",
"plt.figure(figsize=(20, 20))\n",
"plt.title('Mask')\n",
"plt.imshow(mask.convert('mask'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Case 2: Underflow"
]
},
{
"cell_type": "code",
"execution_count": 182,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f7941870898>"
]
},
"execution_count": 182,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"width = 640\n",
"height = 480\n",
"poly = [[100, 100, width-100, 100, width-100, height-100, 100, height-1000]]\n",
"size = (width, height)\n",
"box = [poly[0][0]-50, poly[0][1]-50, poly[0][4]-50, poly[0][5]-50]\n",
"\n",
"polygon = Polygons(poly, size, 'polygon')\n",
"mask = Mask(poly, size, 'mask')\n",
"\n",
"plt.figure(figsize=(20, 20))\n",
"plt.title('Mask')\n",
"plt.imshow(mask.convert('mask'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Case 2: zero measure"
]
},
{
"cell_type": "code",
"execution_count": 187,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f79416b2710>"
]
},
"execution_count": 187,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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HAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACK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\n",
"text/plain": [
"<Figure size 1440x1440 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"width = 640\n",
"height = 480\n",
"poly = [[100, 100, 100, 100, 100, height-100, 100, height-100]]\n",
"size = (width, height)\n",
"box = [poly[0][0]-50, poly[0][1]-50, poly[0][4]-50, poly[0][5]-50]\n",
"\n",
"polygon = Polygons(poly, size, 'polygon')\n",
"mask = Mask(poly, size, 'mask')\n",
"\n",
"plt.figure(figsize=(20, 20))\n",
"plt.title('Mask')\n",
"plt.imshow(mask.convert('mask'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Case 3: Wrong ordering (maybe not a problem?)"
]
},
{
"cell_type": "code",
"execution_count": 186,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f79416d8b38>"
]
},
"execution_count": 186,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"width = 640\n",
"height = 480\n",
"poly = [[100, 100, width-100, height-100, width-100, 100, 100, height-100]]\n",
"size = (width, height)\n",
"box = [poly[0][0]-50, poly[0][1]-50, poly[0][4]-50, poly[0][5]-50]\n",
"\n",
"polygon = Polygons(poly, size, 'polygon')\n",
"mask = Mask(poly, size, 'mask')\n",
"\n",
"plt.figure(figsize=(20, 20))\n",
"plt.title('Mask')\n",
"plt.imshow(mask.convert('mask'))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"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.7.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment