Skip to content

Instantly share code, notes, and snippets.

@botcs
Created February 21, 2019 01:36
Show Gist options
  • Select an option

  • Save botcs/2fe59aa4d63b354c5e6c901d981023b3 to your computer and use it in GitHub Desktop.

Select an option

Save botcs/2fe59aa4d63b354c5e6c901d981023b3 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 SegmentationMask"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import torch\n",
"import numpy as np\n",
"from maskrcnn_benchmark.structures.segmentation_mask import SegmentationMask\n",
"\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def plotDiff(M, P, title=''):\n",
" # Mask conversion for Poly is necessary for comparison and plotting\n",
" # Sum across instances dimension\n",
" M = M.instances.masks.float()\n",
" P = P.convert('mask').instances.masks.float()\n",
" diff = M - P\n",
" \n",
" plt.figure(figsize=(20, 20))\n",
"\n",
" plt.subplot(1, 3, 1)\n",
" plt.title('%s(Mask) > Mask'%title)\n",
" plt.imshow(M.sum(dim=0))\n",
"\n",
" plt.subplot(1, 3, 2)\n",
" plt.title('%s(Poly)'%title)\n",
" plt.imshow(P.sum(dim=0))\n",
"\n",
" plt.subplot(1, 3, 3)\n",
" plt.title('%s(Mask) - (%s(Poly) > Mask) = %f'%(title, title, diff.sum()))\n",
" plt.imshow(diff.sum(dim=0))\n",
" plt.colorbar(fraction=0.046, pad=0.04)\n",
" \n",
" plt.show()"
]
},
{
"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": 3,
"metadata": {},
"outputs": [],
"source": [
"width = 640\n",
"height = 480\n",
"poly = [[[100, 10, 400,10, 400, 400, 100, 400]]]\n",
"size = (width, height)\n",
"box = [50, 5, 150, 150]\n",
"\n",
"P = SegmentationMask(poly, size, 'poly')\n",
"M = SegmentationMask(poly, size, 'poly').convert('mask')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fd3fb152128>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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AgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJ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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(M.instances.masks[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Conversion [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fd3faf0feb8>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"M_hat = M.convert('poly').convert('mask')\n",
"P_hat = P.convert('mask').convert('poly')\n",
"\n",
"plt.figure(figsize=(20,20))\n",
"\n",
"plt.subplot(1, 2, 1)\n",
"diff = M.instances.masks - M_hat.instances.masks\n",
"plt.title('(Mask) - (Mask > Poly > Mask) = %4.2f'%(diff.sum().item()))\n",
"plt.imshow(diff[0])\n",
"\n",
"plt.subplot(1, 2, 2)\n",
"# Mask conversion for Poly is necessary for comparison and plotting\n",
"diff = P.convert('mask').instances.masks - P_hat.convert('mask').instances.masks\n",
"plt.title('(Poly > Mask) - (Poly > Mask > Poly > Mask) = %4.2f'%(diff.sum().item()))\n",
"plt.imshow(diff[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Crop [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plotDiff(M.crop(box), P.crop(box), 'crop')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Resize [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"new_size = 1000, 100\n",
"plotDiff(M.resize(new_size), P.resize(new_size), 'resize')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observations\n",
"- It seems that the following setting did the trick to avoid the boundrary distortion:\n",
"```\n",
"contour, hierarchy = cv2.findContours(\n",
" mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_TC89_L1\n",
")\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Transpose [Pass]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"FLIP_LEFT_RIGHT = 0\n",
"FLIP_TOP_BOTTOM = 1"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plotDiff(M.transpose(FLIP_LEFT_RIGHT), P.transpose(FLIP_LEFT_RIGHT))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plotDiff(M.transpose(FLIP_TOP_BOTTOM), P.transpose(FLIP_TOP_BOTTOM))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observations\n",
"- It seems that the following setting did the trick to avoid the boundrary distortion:\n",
"```\n",
"contour, hierarchy = cv2.findContours(\n",
" mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_TC89_L1\n",
")\n",
"```\n",
"\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": 11,
"metadata": {},
"outputs": [],
"source": [
"width = 640\n",
"height = 480\n",
"poly = [[[100, 100, 200, 100, 200, 200, 100, 200],\n",
" [width-110, height-110, width-10, height-110, \n",
" width-10, height-10, width-110, height-10]]]\n",
"size = (width, height)\n",
"box = [110, 110, 210, 210]\n",
"\n",
"P = SegmentationMask(poly, size, 'poly')\n",
"M = SegmentationMask(poly, size, 'poly').convert('mask')"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fd3fada7e10>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQThwAAAACKiUMAAAAAxcQhAAAAgGLiEAAAAEAxcQgAAACgmDgEAAAAUEwcAgAAACgmDgEAAAAUE4cAAAAAiolDAAAAAMXEIQAAAIBi4hAAAABAMXEIAAAAoJg4BAAAAFBMHAIAAAAoJg4BAAAAFBOHAAAAAIqJQwAAAADFxCEAAACAYuIQAAAAQDFxCAAAAKCYOAQAAABQTBwCAAAAKCYOAQAAABQT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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(M.instances.masks[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Conversion [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fd3facb3c18>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABIcAAAGrCAYAAABaJ/dxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xm8JWdZL/rfIwkJypAEYoQkEJAgxiHAiQyKiuSABBHwyGE4DIGbeyKKCkcUcbgCDggOBLjHq4JwSEQmQUajCAGOepRAmAIhIEFAMkAYMoCYCPLcP6o6Wb17T7337t7d/X6/n8/69FpVtVa99e7aXc/+1Vu1qrsDAAAAwJi+YbsbAAAAAMD2EQ4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDjEfquqfruqnrSX1nVcVXVVHbTMvKOq6sKqOmST6ziyqj5SVTfazOfsxvpeUlW/uTfWtbuq6ulV9dLtbsdW2Rv7DwD7t62qa6rqk1X1n7eiTfuC1WqCqvqZqnr2FqzjJ6rquVvwOe+oqv97s5+zr6iqx1bV3293O5ZTVfeqqou3ux1babXf3ap6V1V9x95uE2MRDrFfqqojkzwmyR/Pr+81//H92iXLnThPf8eeakt3fzbJ25OcvsmPemqSl3T3vyXXFRhdVScuLlRVr52n32uT69vj5oPcv1XVl6vqs3MgdePtbtdSB8j+s4uqOqSqXlxVV1fVZ6rq59ZY/n/My109v++QhXnHVdXbq+orc4h5wPzhAbDdVqhrvj4fP79UVR+tqsdtbyuXNx/bu6oetGT6GfP0x+7B1b8wySOr6ps3+gFVdcMkv5rkd+fXO07ofHl+fLKqnrpF7d1Sc3DWVfXEJdOfOE9/+jY1bd3m/eff577+YlW9paruuN3tWs7cp5cvnuyrqoPnab2HV/97SX59T3zwavXfMsuePNeBX5nrwtsszNutupN9j3CI/dVjk5y9I0iZfS7JParq5gvTTk3yT3uhPX+W5Cc2+ub5P+FTkyw9M/ZPmYrFHcvdPMk9Mm3rXlNVR23i7T/a3TdOcpckJ2UqwPaYTbR1v91/VvH0JMcnuU2SH0rylKq633ILVtUPZwooT56Xv12SZyws8vIk70ty8yS/kuTV8x8zAGzeY7NrXXPpfPy8aZJfTPLCqjphTzWgqo6oqoM3+Pal9cpBSR6a5ONb0baVdPc1Sf5qcd0b8KAkH+nuS5ZMP2zu/0ck+bWVjp9boapuUhsfOb5T38/2Vv1ynU3uP78z9/UxSS5P8pIta9gyNlnXXpHklIXXp8zT9rQ3JPmhqvqWrfzQddR/i8veIslfJPl/khyR5Lwkr1xY5OlZZ93Jvkk4xP7qlCT/e8m0f0/yuiQPT5KqukGSh2X6w/s6VfW8qvr0nGq/p6q+f2HeXavqvHneZ6vqOcutvKp+fD6T9J3zpHOT3G4xPd9Nd0tyZXcvHR77Z0keNm9LMhUor523dbHN/1hVV1bVZVX1P+ezYKnJGfMZjaur6oMLbV7cnpvM6f/zq6qWad/Tq+rDVfULGz0ozUXXXyX5znmdt6qqN8xniS6qqv++3Puq6i+r6meWTDu/qn5shVVdVFWvr6oH72aRsj/vPys5NclvdPcV3X1hpjOsj11l2Rd19wXdfUWS39ixbFXdIVO497Tu/rfufk2SDyb58S1uL8ColqtrkiQ9eV2mP0BPSJKqemBVXTAf+99RVd++9H1V9S3z2f2bL0y7S1V9boXj432SXFxVv79crbCGNya5Z1UdPr++X5Lzk3xmYd3fWlVvq6ovVNXnq+rPquqwhfm/WFWX1PUjpU5eZpsOrqqXV9VrdtQ6Sd6R5Ed2s72LVuz7JOnuf0xyQa6vX763qt5dVVfN/37vMu284VzffNfCtG+efx7LnVj5ziSXVtUfV9Xdd7P9707yjTVfcjT/e+g8fce6D6+qN80/+yvm58cszH9sVf3z3PefqKpHLreiqvrdqvr7qrrZMrM3s/8kSbr7K0leluv7+pCqem5VXTo/nlvLjGqZ69PXLJn2/Kp63gqreklNl2k9fnEfXKc/zc5h3GOSnLVk3Y+r6ZYBX5r79ScW5t1i7v8r533k76pql7/Jq+rb55/FI5LrgtD3JPnh3WzvWlas/5bxX5Jc0N1/Prfn6UlOrOtHeu1O3ck+SDjE/uq7knx0meln5fr/sH84yYeSXLpkmXcnuVOmxPtlSf68qg6d5z0vyfO6+6ZJvjXJq5auoKZh3c9O8p+7+0NJ0t1fS3JRkhOXLr/J7bk0yYeT3Hd+vcsBKMl/JPkfSW6RaVTRyUl+ap533yQ/kOQOSW6W6SzeF5Zsz82TnJPk/3T3z3b3csNin5DkZ5N8d5KPzqHOj+1O+FJVxya5f6bRJ0nyiiQXJ7lVkockeWZV3XuZt56Z5FELn3NikqOT/OUKqzo2Uwj1i5mKlOcsFmdr2Cf3n6p66lxELPtY4T2HJ7llkg8sTP5AkpWuV/+OZZY9at4/viPJP3f3l9b5WQDsnpXqgFTVN9R0QuSwJB+cA/uXJ3lSkiOTnJ3kjQthSZKkuz+TKTh56MLkRyd5RXd/del6uvuVmWqIryf5mzn4+KmFwGc11yR5feYTLFm+Xqkkv53puP/tmY7XT5+38duS/HSS7+num2Q6Bn9yST/cKNNJnGuTPLS7d5wouzAbr7+S1fu+qur7Mh3v3ldVR2SqP56faSTtc5L8Ze086jhz216Rhfol0wm+c7p7l9HfcwB1lySXJXnZHCw8papuuc5tWAwsTp1fL/qGJP8r04iOWyf5tyT/c97Gb5q355S57783yfuX9MM3VNULM9WB9+3uq5bZhs3sPzvWc+Mkj8z1teKvJLl7prrrxCR3zfIj0F+a5H47gp6aRq49PLvugzs8MMkzM+1nn6qql1XVfZYLaZbxuiQ/UFWHzdv2/Zn2/UWXJ3lAplF/j0tyRlXdZZ735Ez175FJjkryy0l2qr3nZd+c5Ge6++ULs1bc16vqnqvVilV1zxW2Z7X6b9Vlu/tfM40O/I4N1J3sg4RD7K8OS/KlpRO7+x+SHDEXGcsVJunul3b3F7r7a939+0kOSfJt8+yvJrl9Vd2iu7/c3e9c8vYnJfmFJPfq7ouWzPvS3K4t257ZWUkeM6fyh80FxOL2vKe73zlvzycz3a/gBxe25yZJ7pikuvvC7r5s4e23ynS27M+7e8XLvbr769391u5+dKYhv6/LFEhdUlW/sca2vW4OMP5+Xtcz56Do+5L8Yndf093vT/InWX5Y+BuS3KGqjp9fPzrJKxeKwqVtvbK7/6i775EpGLsmydk1jehZLnxafO8+uf9097O6+7CVHitszo57Oy0WcFdl2h9WWn7pspmXXzpvrc8CYPcsVwfcaj5+fj7J05I8urs/mmlU619291vmkOf3ktwo0x/1S113gqWmEbGPyK7BwXW6+0Pd/Qu5Pri5V5JPVNUrquqma2zDjnrlsEx1yOuWfPZFc5uvnQOS5+T6euU/Mh1PT6iqg7v7k929eEnaTZP8daY/RB/X3f+xMO9LmU6AbdRKNdjnk3wxU33y1O4+J9MIpY9195/OdcDLk3wkyY8u8/4zkzyi6roR2Y/O6n3/ie5+eqaTS4/PVLt9eB5lcus1tuGl87oOzhSK7HSbgrlueU13f2U+0fNbub7vkynQ+c6qulF3X9bdFyzMOzhTGHlEplsFfGWVbdjo/vPz875+Uaaa47Hz9Ecm+fXuvnzeZ56RqR+XrveyJH+b5L/Ok+6X5PPd/Z4V2vnV7n5dd/9Ypv5+Z6YTd5+sqp9epZ3JVFe+MdPv4cMy1anXLPn8v+zuj8+j/v53kr/JFCIlU614yyS3mdvxd0tOzH7//JmP6e43LVn3arXi369WK3b3SjcWX63+W2vZHcvvqBWT9ded7IOEQ+yvrsjK/9n8aaazTz+U6RKsnVTVz89nZK6aD0Q3yzTqJklOyzTK5iPzGY8HLHn7LyT5g9718q/M7dllFEdV3bquv6nhlzewPX+R5N7zNu1SVFTVHebC4TNVdXWmMyG3SJLuflumM0N/kOTyqnrBkoPzj2QqKP9ohXXvYi4qzs90VungXB+MrOTB80HpNt39Uz3dT+FWSb64ZCTKpzKNCFq6vmsyXc/8qPmMzqqF7RKfynTW4kNJbp9kPTes3Kf2n03Ysa8t/rxvmpVDyC8vs2zm5ZfOW+uzANg9y9UBl87HzyO6+07d/Yp5+q0yHd+STCdwknw6yxxDM41oOKGqbpvpsp+ruvtdazVmDl8+mOkY+sVMl/msOlp4/uPzyEyjPd7UO98/KTV9O+crarp07OpMAcaOeuWiTCdQnp6pXnlFVd1q4e13zzRq5VlL/pBOpn7bZSTLvM5fXqjBVqp1VqrBbtHdh3f3t3f38+dpO/X9bKX65dwkX0lyr/kE3+0z/dG/qnn7Ppyp7y/ONPLim9Z4z79kClaemSm8+vTi/Kr6xpouWfvU3Pd/m+SwqrpBT6M/HpYpkLqspsv5F28IfftM92V6xkon5pZpz+7uP7837+vf0t0PXAgGl/b3p+Zpy1kcaf6orL9W/EKur2sPT3Lbdbxnx0jzZU8kVtUpVfXOmi4buzLTyPkdteLvZvpZ/U1Nl5wtvdn545P8Q3e/Y5n1bnWtmKxe/6217I7ld9SKyfrrTvZBwiH2V+dn+iN8OX+a6bKqs5ee3ajp/jBPyTTE+vB51MVVmYY6p7s/1t2PyBQiPDvTTXcXD8j3TfKrVfXjSz73oEwHz8WhlJk/81+6+8Y7Hru7PfM2/FWSn8zyB7o/zHTW6vieLmf65R3bM7//+d39nzLdp+AOmQKKHV6Y6Uzc2Uu2cxdVdUxNlzd9ONNQ6c8lObG7H7ra+1ZwaaYROovF2K2TLL0Z5A5nZjp7dHKSr/SS0VNL2llV9f3z8OdLMwU2ZyX5loXCejX71P4zz18sbnd5LPeenq4bvyw7Dz8+MdN9E5ZzwTLLfra7vzDPu92Sn9dqnwXA7lmtrlnq0kyXByWZjnuZRmrscgydT7C8KtMfy6uOXJk/68Y13X/mbUnemyn0eFh3f+d8PFjLSzNdNrPc5TzPzHT5zHfN9cqjsnO98rLuvue8bZ3pOLrD32S6JO2c2vVmwt+eFY6f3f3MhRrs8Su0ecN9P1urftnR96+efx7Lqun+Og+pqjcm+ViS/5Tpkv7b9XT/lrWclZX7/smZTubdbe77H9ix2iTp7jd3930yjWj5SKb6cIcLM10a9VfzyOoVbcH+s9TS/r51dr3cf4fXJfnumu539IAsuWfkMm09fh79/olMtwX4YKa+fvI62vV3mfrqqEwj4xc/95Akr8k0ou+ouVY8O9f39Ze6+8ndfbtMl7f9XO18f63HJ7l1VZ2xzHpX3Nfn2nfFWrEW7pG5xGr136rLzjXut2a6D9Hu1p3sg4RD7K/Ozs7DYa/T3Z+Y5/3KMrNvkuRrmYKNg6rq17KQcFfVo6rqyPks3I5k/usL778g01DVP6iqBy5Mv2uST3b30rNJ6/WuTGdwljvrl0yBzw/2dNnYUjdJcnWSL89nen5yx4yq+p6quts8zPhfMw17/fqS9/90pmvt31grfFNGTV+FekGmwuLxmYKo35jPVO22+YzWPyT57ao6tKq+O1OIs/Tb2nYs/49zu38/a58J+niSF2W6V8F3d/d9u/vlqxVkS9a1z+0/S4rbXR6rbM5ZmcKow+d9479n5W8AOSvJaVV1Qk2XBPzqjmW7+58ynVF72vzz+rFMZ3Bfs8JnAbB7VqxrlvGqJD9S01dKH5zpD/9rMx1Xl3NWpst0HphVjqE1favQpZlGkfxxkqPnEb/vXuk9y3h+phFKf7vMvJtkGl1w1VzvXHeyqqq+raruPf9hfU2me+LsVK909+9kutffOTV9a9IOP5jpJNpG7U7fn53pUvf/VlUHVdXDMp18W3r5zw4vTfJjmQKile5/k7kOuizJEzOFHMd292O6++3LjJRaySsznYTa5X6Hmfr+35JcWdN9k562sO6jqupB8x/612b6GS3t+5dnqkXfWlXfusI2bMX+s9TLM9UxR84/81/LyrXiNUlenWkfeddqNWpVvTjJP2a6ROu/dPeJ3X1GL3M/qBXW1ZkuJXzgMj+fG2a6RPJzSb5WVafk+nuHpqoeUFW3n0PdqzJdUrnY31/KVCv+QFU9a+F9h2YKDN+yQpv+brVasbv/boXNWbH+W8ZrM11++ONze34tyfnd/ZGFz1pv3ck+SDjE/uqsJPdfKczo6brb5c4svDnTSJl/yjQ09ZpMQ7F3uF+SC+bRGM9L8vClw6K7+wOZzki8cP4PP5lGtaz70qxl2vvvmf7zfNQK8y/tla8V/vkk/y3TweSF2fkrJW86T7si0/Z+IdNw1sXP7iSnZxq6/Pq6/ubKi16X5Fbd/bju/tvdKFRW84gkx2UqJF6b6Zuw3rrK8mdlumnkskXBgsd09x26+7d6+cu31rS/7T+reFqmsOxTme739Lvd/dfJTpc73npu118n+Z0kb0/yL/N7nrbwWQ9PclKmfelZSR6y3iIKgDWtWtcs6um+Q49K8v9mui/Oj2a6F8xK9+L7P5n++HzvGiexPprkjt19Sne/sruv3d2N6O4vdvc5K9QJz8h00+WrMt3U+S8W5h2S6djy+UzfcPbNSX5pmc//jUw1yVtr+ur0QzNdsnPm7rZ1wRuT3LF2voxtWfNoigdkCuS+kGk08QO6+/MrLP/pTCNoOtNok5VcnuSu3f393f2i3vmy+3Xp6dtE37q07pg9N9NtBD6f6f46f70w7xuS/FymeuyLmYKyn1z6Ad19ZpJfT/K2qjpumXVsev9Zxm9m+rr08zON7HnvPG0lZ2aqFdc6kfhHmeran+nu926kYT19u9cuo2Lmn93PZgrprshUoy9eTnh8krdmCuH+Mcn/191vX/IZV2YKWU+p6+/t+aNJ3rFCfbpha9V/NX0r4iPnZT+X6Ztqf2vetrvl+pvQJ6vUnewfamv+xoO9r6qemeTy7n7uNrfjmzP9B3jn9Y5OWeFzjsxUONx5hQP70KrqMUlO72nI+QFjq/YfAPZve7KumS/zeVl3/8lWf/Z2qqqfyTTK5imb/JzTk5zQ3U/ampbt9NkvznT/qBW/+IOtMZ/w+kimWwlcvd3t2UpVdW6S03r+plvYE4RDwD6vqr4xydsynV1ZcVg2ALCzqvqeTJeiHLuRESls3DzC5v2ZTgB9Yntbc2Cr6UtLnpPkpt39f213e2B/5LIyYJ9WVT+c6brtz2a6jhwAWIeqOjPTJSxPEgztXfPlQB/KdGmNYGgPmu+XdHWmS7GetsbiwAr2yMih+YZkz0tygyR/0t3PWuMtAABskhoMANiILQ+HquoGmW7Wep9MN7h9d5JHdPeHt3RFAABcRw0GAGzUQXvgM++a5KLu/uckqapXJHlQkhULkxvWIX1ovmkPNAUA2Bdck3/Nv/e1td3tOMCpwQCAnay3BtsT4dDR2fmrnS/O9DV3O5m/FeD0JDk035i71cl7oCkAwL7g3D5nu5swAjUYALCT9dZg23ZD6u5+QXef1N0nHZxDtqsZAABDUYMBAEvtiXDokiTHLrw+Zp4GAMCeowYDADZkT4RD705yfFXdtqpumOThSd6wB9YDAMD11GAAwIZs+T2HuvtrVfXTSd6c6WtUX9zdF2z1egAAuJ4aDADYqD1xQ+p099lJzt4Tnw0AwPLUYADARmzbDakBAAAA2H7CIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAga0ZDlXVi6vq8qr60MK0I6rqLVX1sfnfw+fpVVXPr6qLqur8qrrLnmw8AMCBSg0GAOwt6xk59JIk91sy7alJzunu45OcM79OklOSHD8/Tk/yh1vTTACA4bwkajAAYC9YMxzq7r9N8sUlkx+U5Mz5+ZlJHrww/ayevDPJYVV1y61qLADAKNRgAMDestF7Dh3V3ZfNzz+T5Kj5+dFJPr2w3MXztF1U1elVdV5VnffVXLvBZgAADEUNBgBsuU3fkLq7O0lv4H0v6O6Tuvukg3PIZpsBADAUNRgAsFU2Gg59dsdQ5fnfy+fplyQ5dmG5Y+ZpAABsnhoMANhyGw2H3pDk1Pn5qUlevzD9MfM3Ztw9yVULQ58BANgcNRgAsOUOWmuBqnp5knsluUVVXZzkaUmeleRVVXVakk8leei8+NlJ7p/koiRfSfK4PdBmAIADnhoMANhb1gyHuvsRK8w6eZllO8kTNtsoAIDRqcEAgL1l0zekBgAAAGD/JRwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABjYmuFQVR1bVW+vqg9X1QVV9cR5+hFV9Zaq+tj87+Hz9Kqq51fVRVV1flXdZU9vBADAgUYNBgDsLesZOfS1JE/u7hOS3D3JE6rqhCRPTXJOdx+f5Jz5dZKckuT4+XF6kj/c8lYDABz41GAAwF6xZjjU3Zd193vn519KcmGSo5M8KMmZ82JnJnnw/PxBSc7qyTuTHFZVt9zylgMAHMDUYADA3rJb9xyqquOS3DnJuUmO6u7L5lmfSXLU/PzoJJ9eeNvF87Sln3V6VZ1XVed9NdfuZrMBAMahBgMA9qR1h0NVdeMkr0nypO6+enFed3eS3p0Vd/cLuvuk7j7p4ByyO28FABiGGgwA2NPWFQ5V1cGZipI/6+6/mCd/dsdQ5fnfy+fplyQ5duHtx8zTAADYDWowAGBvWM+3lVWSFyW5sLufszDrDUlOnZ+fmuT1C9MfM39jxt2TXLUw9BkAgHVQgwEAe8tB61jm+5I8OskHq+r987RfTvKsJK+qqtOSfCrJQ+d5Zye5f5KLknwlyeO2tMUAAGNQgwEAe8Wa4VB3/32SWmH2ycss30mesMl2AQAMTQ0GAOwtu/VtZQAAAAAcWIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADWzMcqqpDq+pdVfWBqrqgqp4xT79tVZ1bVRdV1Sur6obz9EPm1xfN84/bs5sAAHDgUYMBAHvLekYOXZvk3t19YpI7JblfVd09ybOTnNHdt09yRZLT5uVPS3LFPP2MeTkAAHaPGgwA2CvWDId68uX55cHzo5PcO8mr5+lnJnnw/PxB8+vM80+uqtqyFgMADEANBgDsLeu651BV3aCq3p/k8iRvSfLxJFd299fmRS5OcvT8/Ogkn06Sef5VSW6y4pHWAAAMdElEQVS+lY0GABiBGgwA2BvWFQ519390952SHJPkrknuuNkVV9XpVXVeVZ331Vy72Y8DADjgqMEAgL1ht76trLuvTPL2JPdIclhVHTTPOibJJfPzS5IcmyTz/Jsl+cIyn/WC7j6pu086OIdssPkAAAc+NRgAsCet59vKjqyqw+bnN0pynyQXZipQHjIvdmqS18/P3zC/zjz/bd3dW9loAIADnRoMANhbDlp7kdwyyZlVdYNMYdKruvtNVfXhJK+oqt9M8r4kL5qXf1GSP62qi5J8McnD90C7AQAOdGowAGCvWDMc6u7zk9x5men/nOna96XTr0nyX7ekdQAAg1KDAQB7y27dcwgAAACAA4twCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIGtOxyqqhtU1fuq6k3z69tW1blVdVFVvbKqbjhPP2R+fdE8/7g903QAgAOb+gsA2Bt2Z+TQE5NcuPD62UnO6O7bJ7kiyWnz9NOSXDFPP2NeDgCA3af+AgD2uHWFQ1V1TJIfSfIn8+tKcu8kr54XOTPJg+fnD5pfZ55/8rw8AADrpP4CAPaW9Y4cem6SpyT5+vz65kmu7O6vza8vTnL0/PzoJJ9Oknn+VfPyO6mq06vqvKo676u5doPNBwA4YG15/ZWowQCAXa0ZDlXVA5Jc3t3v2coVd/cLuvuk7j7p4ByylR8NALBf21P1V6IGAwB2ddA6lvm+JA+sqvsnOTTJTZM8L8lhVXXQfHbqmCSXzMtfkuTYJBdX1UFJbpbkC1vecgCAA5f6CwDYa9YcOdTdv9Tdx3T3cUkenuRt3f3IJG9P8pB5sVOTvH5+/ob5deb5b+vu3tJWAwAcwNRfAMDetDvfVrbULyb5uaq6KNM17S+ap78oyc3n6T+X5KmbayIAADP1FwCw5WpfOKl00zqi71Ynb3czAIA95Nw+J1f3F3171j5GDQYAB7b11mCbGTkEAAAAwH5OOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMrLp7u9uQqvpSko9udzv2Y7dI8vntbsR+St9tnL7bHP23cfpu47az727T3Udu07pZgRpsU/xftDn6b+P03cbpu83Rfxu3z9dgB+2NlqzDR7v7pO1uxP6qqs7Tfxuj7zZO322O/ts4fbdx+o5lqME2yO/T5ui/jdN3G6fvNkf/bdz+0HcuKwMAAAAYmHAIAAAAYGD7Sjj0gu1uwH5O/22cvts4fbc5+m/j9N3G6TuWsk9snL7bHP23cfpu4/Td5ui/jdvn+26fuCE1AAAAANtjXxk5BAAAAMA2EA4BAAAADGzbw6Gqul9VfbSqLqqqp253e/Y1VfXiqrq8qj60MO2IqnpLVX1s/vfweXpV1fPnvjy/qu6yfS3fflV1bFW9vao+XFUXVNUT5+n6bx2q6tCqeldVfWDuv2fM029bVefO/fTKqrrhPP2Q+fVF8/zjtrP9+4KqukFVva+q3jS/1nfrUFWfrKoPVtX7q+q8eZrf23WoqsOq6tVV9ZGqurCq7qHvWIkabHVqsI1Tg22c+mvz1F8bpwbbuAOhBtvWcKiqbpDkD5KckuSEJI+oqhO2s037oJckud+SaU9Nck53H5/knPl1MvXj8fPj9CR/uJfauK/6WpInd/cJSe6e5Anz/qX/1ufaJPfu7hOT3CnJ/arq7kmeneSM7r59kiuSnDYvf1qSK+bpZ8zLje6JSS5ceK3v1u+HuvtO3X3S/Nrv7fo8L8lfd/cdk5yYaf/Td+xCDbYuL4kabKPUYBun/to89dfmqME2Zv+vwbp72x5J7pHkzQuvfynJL21nm/bFR5Ljknxo4fVHk9xyfn7LJB+dn/9xkkcst5xHJ8nrk9xH/22o774xyXuT3C3J55McNE+/7nc4yZuT3GN+ftC8XG1327exz47JdBC4d5I3JSl9t+6++2SSWyyZ5vd27X67WZJPLN139J3Hcg812Lr7SQ22Nf2oBttYv6m/dr/P1F+b6z812Mb67YCowbb7srKjk3x64fXF8zRWd1R3XzY//0ySo+bn+nMF8zDROyc5N/pv3eZhue9PcnmStyT5eJIru/tr8yKLfXRd/83zr0py873b4n3Kc5M8JcnX59c3j75br07yN1X1nqo6fZ7m93Ztt03yuST/ax5O/ydV9U3RdyzPz39j/D7tJjXY7lN/bYr6a3PUYBtzQNRg2x0OsUk9RY293e3Yl1XVjZO8JsmTuvvqxXn6b3Xd/R/dfadMZ2HumuSO29yk/UJVPSDJ5d39nu1uy37qnt19l0xDbp9QVT+wONPv7YoOSnKXJH/Y3XdO8q+5fvhyEn0HW8nv09rUYBuj/toY9deWUINtzAFRg213OHRJkmMXXh8zT2N1n62qWybJ/O/l83T9uURVHZypKPmz7v6LebL+203dfWWSt2caintYVR00z1rso+v6b55/syRf2MtN3Vd8X5IHVtUnk7wi09Dm50XfrUt3XzL/e3mS12YqjP3eru3iJBd397nz61dnKlT0Hcvx898Yv0/rpAbbPPXXblN/bZIabMMOiBpsu8Ohdyc5fr6D/A2TPDzJG7a5TfuDNyQ5dX5+aqbruHdMf8x89/O7J7lqYRjbcKqqkrwoyYXd/ZyFWfpvHarqyKo6bH5+o0z3CrgwU5HykHmxpf23o18fkuRtc0I+nO7+pe4+pruPy/T/2tu6+5HRd2uqqm+qqpvseJ7kvkk+FL+3a+ruzyT5dFV92zzp5CQfjr5jeWqwjfH7tA5qsI1Tf22c+mtz1GAbd8DUYNt906Mk90/yT5mupf2V7W7PvvZI8vIklyX5aqZE8rRM18Kek+RjSd6a5Ih52cr0zSMfT/LBJCdtd/u3ue/umWno3vlJ3j8/7q//1t1/353kfXP/fSjJr83Tb5fkXUkuSvLnSQ6Zpx86v75onn+77d6GfeGR5F5J3qTv1t1ft0vygflxwY7jgt/bdfffnZKcN//evi7J4frOY5X9RQ22ev+owTbed2qwjfed+mtr+lH9tft9pgbbXP/t9zVYzY0DAAAAYEDbfVkZAAAAANtIOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwP5/sOuVuRn+79oAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1440x1440 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"M_hat = M.convert('poly').convert('mask')\n",
"P_hat = P.convert('mask').convert('poly')\n",
"\n",
"plt.figure(figsize=(20,20))\n",
"\n",
"plt.subplot(1, 2, 1)\n",
"diff = M.instances.masks - M_hat.instances.masks\n",
"plt.title('(Mask) - (Mask > Poly > Mask) = %4.2f'%(diff.sum().item()))\n",
"plt.imshow(diff[0])\n",
"\n",
"plt.subplot(1, 2, 2)\n",
"# Mask conversion for Poly is necessary for comparison and plotting\n",
"diff = P.convert('mask').instances.masks - P_hat.convert('mask').instances.masks\n",
"plt.title('(Poly > Mask) - (Poly > Mask > Poly > Mask) = %4.2f'%(diff.sum().item()))\n",
"plt.imshow(diff[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Crop [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plotDiff(M.crop(box), P.crop(box), 'crop')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Resize [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"new_size = 1000, 100\n",
"plotDiff(M.resize(new_size), P.resize(new_size), 'resize')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Transpose [Pass]"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"FLIP_LEFT_RIGHT = 0\n",
"FLIP_TOP_BOTTOM = 1"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plotDiff(M.transpose(FLIP_LEFT_RIGHT), P.transpose(FLIP_LEFT_RIGHT))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plotDiff(M.transpose(FLIP_TOP_BOTTOM), P.transpose(FLIP_TOP_BOTTOM))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<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": 19,
"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]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"P = SegmentationMask(poly, size, 'poly')\n",
"M = SegmentationMask(poly, size, 'poly').convert('mask')"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fd3fad08da0>"
]
},
"execution_count": 21,
"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(M.instances.masks[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Conversion [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fd3faaceba8>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABIcAAAGrCAYAAABaJ/dxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xm8JWdZL/rfIwkJypAEYoQkEJAgxiHAiQyKiuSABBHwyGE4DIGbeyKKCkcUcbgCDggOBLjHq4JwSEQmQUajCAGOepRAmAIhIEFAMkAYMoCYCPLcP6o6Wb17T7337t7d/X6/n8/69FpVtVa99e7aXc/+1Vu1qrsDAAAAwJi+YbsbAAAAAMD2EQ4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDjEfquqfruqnrSX1nVcVXVVHbTMvKOq6sKqOmST6ziyqj5SVTfazOfsxvpeUlW/uTfWtbuq6ulV9dLtbsdW2Rv7DwD7t62qa6rqk1X1n7eiTfuC1WqCqvqZqnr2FqzjJ6rquVvwOe+oqv97s5+zr6iqx1bV3293O5ZTVfeqqou3ux1babXf3ap6V1V9x95uE2MRDrFfqqojkzwmyR/Pr+81//H92iXLnThPf8eeakt3fzbJ25OcvsmPemqSl3T3vyXXFRhdVScuLlRVr52n32uT69vj5oPcv1XVl6vqs3MgdePtbtdSB8j+s4uqOqSqXlxVV1fVZ6rq59ZY/n/My109v++QhXnHVdXbq+orc4h5wPzhAbDdVqhrvj4fP79UVR+tqsdtbyuXNx/bu6oetGT6GfP0x+7B1b8wySOr6ps3+gFVdcMkv5rkd+fXO07ofHl+fLKqnrpF7d1Sc3DWVfXEJdOfOE9/+jY1bd3m/eff577+YlW9paruuN3tWs7cp5cvnuyrqoPnab2HV/97SX59T3zwavXfMsuePNeBX5nrwtsszNutupN9j3CI/dVjk5y9I0iZfS7JParq5gvTTk3yT3uhPX+W5Cc2+ub5P+FTkyw9M/ZPmYrFHcvdPMk9Mm3rXlNVR23i7T/a3TdOcpckJ2UqwPaYTbR1v91/VvH0JMcnuU2SH0rylKq633ILVtUPZwooT56Xv12SZyws8vIk70ty8yS/kuTV8x8zAGzeY7NrXXPpfPy8aZJfTPLCqjphTzWgqo6oqoM3+Pal9cpBSR6a5ONb0baVdPc1Sf5qcd0b8KAkH+nuS5ZMP2zu/0ck+bWVjp9boapuUhsfOb5T38/2Vv1ynU3uP78z9/UxSS5P8pIta9gyNlnXXpHklIXXp8zT9rQ3JPmhqvqWrfzQddR/i8veIslfJPl/khyR5Lwkr1xY5OlZZ93Jvkk4xP7qlCT/e8m0f0/yuiQPT5KqukGSh2X6w/s6VfW8qvr0nGq/p6q+f2HeXavqvHneZ6vqOcutvKp+fD6T9J3zpHOT3G4xPd9Nd0tyZXcvHR77Z0keNm9LMhUor523dbHN/1hVV1bVZVX1P+ezYKnJGfMZjaur6oMLbV7cnpvM6f/zq6qWad/Tq+rDVfULGz0ozUXXXyX5znmdt6qqN8xniS6qqv++3Puq6i+r6meWTDu/qn5shVVdVFWvr6oH72aRsj/vPys5NclvdPcV3X1hpjOsj11l2Rd19wXdfUWS39ixbFXdIVO497Tu/rfufk2SDyb58S1uL8ColqtrkiQ9eV2mP0BPSJKqemBVXTAf+99RVd++9H1V9S3z2f2bL0y7S1V9boXj432SXFxVv79crbCGNya5Z1UdPr++X5Lzk3xmYd3fWlVvq6ovVNXnq+rPquqwhfm/WFWX1PUjpU5eZpsOrqqXV9VrdtQ6Sd6R5Ed2s72LVuz7JOnuf0xyQa6vX763qt5dVVfN/37vMu284VzffNfCtG+efx7LnVj5ziSXVtUfV9Xdd7P9707yjTVfcjT/e+g8fce6D6+qN80/+yvm58cszH9sVf3z3PefqKpHLreiqvrdqvr7qrrZMrM3s/8kSbr7K0leluv7+pCqem5VXTo/nlvLjGqZ69PXLJn2/Kp63gqreklNl2k9fnEfXKc/zc5h3GOSnLVk3Y+r6ZYBX5r79ScW5t1i7v8r533k76pql7/Jq+rb55/FI5LrgtD3JPnh3WzvWlas/5bxX5Jc0N1/Prfn6UlOrOtHeu1O3ck+SDjE/uq7knx0meln5fr/sH84yYeSXLpkmXcnuVOmxPtlSf68qg6d5z0vyfO6+6ZJvjXJq5auoKZh3c9O8p+7+0NJ0t1fS3JRkhOXLr/J7bk0yYeT3Hd+vcsBKMl/JPkfSW6RaVTRyUl+ap533yQ/kOQOSW6W6SzeF5Zsz82TnJPk/3T3z3b3csNin5DkZ5N8d5KPzqHOj+1O+FJVxya5f6bRJ0nyiiQXJ7lVkockeWZV3XuZt56Z5FELn3NikqOT/OUKqzo2Uwj1i5mKlOcsFmdr2Cf3n6p66lxELPtY4T2HJ7llkg8sTP5AkpWuV/+OZZY9at4/viPJP3f3l9b5WQDsnpXqgFTVN9R0QuSwJB+cA/uXJ3lSkiOTnJ3kjQthSZKkuz+TKTh56MLkRyd5RXd/del6uvuVmWqIryf5mzn4+KmFwGc11yR5feYTLFm+Xqkkv53puP/tmY7XT5+38duS/HSS7+num2Q6Bn9yST/cKNNJnGuTPLS7d5wouzAbr7+S1fu+qur7Mh3v3ldVR2SqP56faSTtc5L8Ze086jhz216Rhfol0wm+c7p7l9HfcwB1lySXJXnZHCw8papuuc5tWAwsTp1fL/qGJP8r04iOWyf5tyT/c97Gb5q355S57783yfuX9MM3VNULM9WB9+3uq5bZhs3sPzvWc+Mkj8z1teKvJLl7prrrxCR3zfIj0F+a5H47gp6aRq49PLvugzs8MMkzM+1nn6qql1XVfZYLaZbxuiQ/UFWHzdv2/Zn2/UWXJ3lAplF/j0tyRlXdZZ735Ez175FJjkryy0l2qr3nZd+c5Ge6++ULs1bc16vqnqvVilV1zxW2Z7X6b9Vlu/tfM40O/I4N1J3sg4RD7K8OS/KlpRO7+x+SHDEXGcsVJunul3b3F7r7a939+0kOSfJt8+yvJrl9Vd2iu7/c3e9c8vYnJfmFJPfq7ouWzPvS3K4t257ZWUkeM6fyh80FxOL2vKe73zlvzycz3a/gBxe25yZJ7pikuvvC7r5s4e23ynS27M+7e8XLvbr769391u5+dKYhv6/LFEhdUlW/sca2vW4OMP5+Xtcz56Do+5L8Yndf093vT/InWX5Y+BuS3KGqjp9fPzrJKxeKwqVtvbK7/6i775EpGLsmydk1jehZLnxafO8+uf9097O6+7CVHitszo57Oy0WcFdl2h9WWn7pspmXXzpvrc8CYPcsVwfcaj5+fj7J05I8urs/mmlU619291vmkOf3ktwo0x/1S113gqWmEbGPyK7BwXW6+0Pd/Qu5Pri5V5JPVNUrquqma2zDjnrlsEx1yOuWfPZFc5uvnQOS5+T6euU/Mh1PT6iqg7v7k929eEnaTZP8daY/RB/X3f+xMO9LmU6AbdRKNdjnk3wxU33y1O4+J9MIpY9195/OdcDLk3wkyY8u8/4zkzyi6roR2Y/O6n3/ie5+eqaTS4/PVLt9eB5lcus1tuGl87oOzhSK7HSbgrlueU13f2U+0fNbub7vkynQ+c6qulF3X9bdFyzMOzhTGHlEplsFfGWVbdjo/vPz875+Uaaa47Hz9Ecm+fXuvnzeZ56RqR+XrveyJH+b5L/Ok+6X5PPd/Z4V2vnV7n5dd/9Ypv5+Z6YTd5+sqp9epZ3JVFe+MdPv4cMy1anXLPn8v+zuj8+j/v53kr/JFCIlU614yyS3mdvxd0tOzH7//JmP6e43LVn3arXi369WK3b3SjcWX63+W2vZHcvvqBWT9ded7IOEQ+yvrsjK/9n8aaazTz+U6RKsnVTVz89nZK6aD0Q3yzTqJklOyzTK5iPzGY8HLHn7LyT5g9718q/M7dllFEdV3bquv6nhlzewPX+R5N7zNu1SVFTVHebC4TNVdXWmMyG3SJLuflumM0N/kOTyqnrBkoPzj2QqKP9ohXXvYi4qzs90VungXB+MrOTB80HpNt39Uz3dT+FWSb64ZCTKpzKNCFq6vmsyXc/8qPmMzqqF7RKfynTW4kNJbp9kPTes3Kf2n03Ysa8t/rxvmpVDyC8vs2zm5ZfOW+uzANg9y9UBl87HzyO6+07d/Yp5+q0yHd+STCdwknw6yxxDM41oOKGqbpvpsp+ruvtdazVmDl8+mOkY+sVMl/msOlp4/uPzyEyjPd7UO98/KTV9O+crarp07OpMAcaOeuWiTCdQnp6pXnlFVd1q4e13zzRq5VlL/pBOpn7bZSTLvM5fXqjBVqp1VqrBbtHdh3f3t3f38+dpO/X9bKX65dwkX0lyr/kE3+0z/dG/qnn7Ppyp7y/ONPLim9Z4z79kClaemSm8+vTi/Kr6xpouWfvU3Pd/m+SwqrpBT6M/HpYpkLqspsv5F28IfftM92V6xkon5pZpz+7uP7837+vf0t0PXAgGl/b3p+Zpy1kcaf6orL9W/EKur2sPT3Lbdbxnx0jzZU8kVtUpVfXOmi4buzLTyPkdteLvZvpZ/U1Nl5wtvdn545P8Q3e/Y5n1bnWtmKxe/6217I7ld9SKyfrrTvZBwiH2V+dn+iN8OX+a6bKqs5ee3ajp/jBPyTTE+vB51MVVmYY6p7s/1t2PyBQiPDvTTXcXD8j3TfKrVfXjSz73oEwHz8WhlJk/81+6+8Y7Hru7PfM2/FWSn8zyB7o/zHTW6vieLmf65R3bM7//+d39nzLdp+AOmQKKHV6Y6Uzc2Uu2cxdVdUxNlzd9ONNQ6c8lObG7H7ra+1ZwaaYROovF2K2TLL0Z5A5nZjp7dHKSr/SS0VNL2llV9f3z8OdLMwU2ZyX5loXCejX71P4zz18sbnd5LPeenq4bvyw7Dz8+MdN9E5ZzwTLLfra7vzDPu92Sn9dqnwXA7lmtrlnq0kyXByWZjnuZRmrscgydT7C8KtMfy6uOXJk/68Y13X/mbUnemyn0eFh3f+d8PFjLSzNdNrPc5TzPzHT5zHfN9cqjsnO98rLuvue8bZ3pOLrD32S6JO2c2vVmwt+eFY6f3f3MhRrs8Su0ecN9P1urftnR96+efx7Lqun+Og+pqjcm+ViS/5Tpkv7b9XT/lrWclZX7/smZTubdbe77H9ix2iTp7jd3930yjWj5SKb6cIcLM10a9VfzyOoVbcH+s9TS/r51dr3cf4fXJfnumu539IAsuWfkMm09fh79/olMtwX4YKa+fvI62vV3mfrqqEwj4xc/95Akr8k0ou+ouVY8O9f39Ze6+8ndfbtMl7f9XO18f63HJ7l1VZ2xzHpX3Nfn2nfFWrEW7pG5xGr136rLzjXut2a6D9Hu1p3sg4RD7K/Ozs7DYa/T3Z+Y5/3KMrNvkuRrmYKNg6rq17KQcFfVo6rqyPks3I5k/usL778g01DVP6iqBy5Mv2uST3b30rNJ6/WuTGdwljvrl0yBzw/2dNnYUjdJcnWSL89nen5yx4yq+p6quts8zPhfMw17/fqS9/90pmvt31grfFNGTV+FekGmwuLxmYKo35jPVO22+YzWPyT57ao6tKq+O1OIs/Tb2nYs/49zu38/a58J+niSF2W6V8F3d/d9u/vlqxVkS9a1z+0/S4rbXR6rbM5ZmcKow+d9479n5W8AOSvJaVV1Qk2XBPzqjmW7+58ynVF72vzz+rFMZ3Bfs8JnAbB7VqxrlvGqJD9S01dKH5zpD/9rMx1Xl3NWpst0HphVjqE1favQpZlGkfxxkqPnEb/vXuk9y3h+phFKf7vMvJtkGl1w1VzvXHeyqqq+raruPf9hfU2me+LsVK909+9kutffOTV9a9IOP5jpJNpG7U7fn53pUvf/VlUHVdXDMp18W3r5zw4vTfJjmQKile5/k7kOuizJEzOFHMd292O6++3LjJRaySsznYTa5X6Hmfr+35JcWdN9k562sO6jqupB8x/612b6GS3t+5dnqkXfWlXfusI2bMX+s9TLM9UxR84/81/LyrXiNUlenWkfeddqNWpVvTjJP2a6ROu/dPeJ3X1GL3M/qBXW1ZkuJXzgMj+fG2a6RPJzSb5WVafk+nuHpqoeUFW3n0PdqzJdUrnY31/KVCv+QFU9a+F9h2YKDN+yQpv+brVasbv/boXNWbH+W8ZrM11++ONze34tyfnd/ZGFz1pv3ck+SDjE/uqsJPdfKczo6brb5c4svDnTSJl/yjQ09ZpMQ7F3uF+SC+bRGM9L8vClw6K7+wOZzki8cP4PP5lGtaz70qxl2vvvmf7zfNQK8y/tla8V/vkk/y3TweSF2fkrJW86T7si0/Z+IdNw1sXP7iSnZxq6/Pq6/ubKi16X5Fbd/bju/tvdKFRW84gkx2UqJF6b6Zuw3rrK8mdlumnkskXBgsd09x26+7d6+cu31rS/7T+reFqmsOxTme739Lvd/dfJTpc73npu118n+Z0kb0/yL/N7nrbwWQ9PclKmfelZSR6y3iIKgDWtWtcs6um+Q49K8v9mui/Oj2a6F8xK9+L7P5n++HzvGiexPprkjt19Sne/sruv3d2N6O4vdvc5K9QJz8h00+WrMt3U+S8W5h2S6djy+UzfcPbNSX5pmc//jUw1yVtr+ur0QzNdsnPm7rZ1wRuT3LF2voxtWfNoigdkCuS+kGk08QO6+/MrLP/pTCNoOtNok5VcnuSu3f393f2i3vmy+3Xp6dtE37q07pg9N9NtBD6f6f46f70w7xuS/FymeuyLmYKyn1z6Ad19ZpJfT/K2qjpumXVsev9Zxm9m+rr08zON7HnvPG0lZ2aqFdc6kfhHmeran+nu926kYT19u9cuo2Lmn93PZgrprshUoy9eTnh8krdmCuH+Mcn/191vX/IZV2YKWU+p6+/t+aNJ3rFCfbpha9V/NX0r4iPnZT+X6Ztqf2vetrvl+pvQJ6vUnewfamv+xoO9r6qemeTy7n7uNrfjmzP9B3jn9Y5OWeFzjsxUONx5hQP70KrqMUlO72nI+QFjq/YfAPZve7KumS/zeVl3/8lWf/Z2qqqfyTTK5imb/JzTk5zQ3U/ampbt9NkvznT/qBW/+IOtMZ/w+kimWwlcvd3t2UpVdW6S03r+plvYE4RDwD6vqr4xydsynV1ZcVg2ALCzqvqeTJeiHLuRESls3DzC5v2ZTgB9Yntbc2Cr6UtLnpPkpt39f213e2B/5LIyYJ9WVT+c6brtz2a6jhwAWIeqOjPTJSxPEgztXfPlQB/KdGmNYGgPmu+XdHWmS7GetsbiwAr2yMih+YZkz0tygyR/0t3PWuMtAABskhoMANiILQ+HquoGmW7Wep9MN7h9d5JHdPeHt3RFAABcRw0GAGzUQXvgM++a5KLu/uckqapXJHlQkhULkxvWIX1ovmkPNAUA2Bdck3/Nv/e1td3tOMCpwQCAnay3BtsT4dDR2fmrnS/O9DV3O5m/FeD0JDk035i71cl7oCkAwL7g3D5nu5swAjUYALCT9dZg23ZD6u5+QXef1N0nHZxDtqsZAABDUYMBAEvtiXDokiTHLrw+Zp4GAMCeowYDADZkT4RD705yfFXdtqpumOThSd6wB9YDAMD11GAAwIZs+T2HuvtrVfXTSd6c6WtUX9zdF2z1egAAuJ4aDADYqD1xQ+p099lJzt4Tnw0AwPLUYADARmzbDakBAAAA2H7CIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAga0ZDlXVi6vq8qr60MK0I6rqLVX1sfnfw+fpVVXPr6qLqur8qrrLnmw8AMCBSg0GAOwt6xk59JIk91sy7alJzunu45OcM79OklOSHD8/Tk/yh1vTTACA4bwkajAAYC9YMxzq7r9N8sUlkx+U5Mz5+ZlJHrww/ayevDPJYVV1y61qLADAKNRgAMDestF7Dh3V3ZfNzz+T5Kj5+dFJPr2w3MXztF1U1elVdV5VnffVXLvBZgAADEUNBgBsuU3fkLq7O0lv4H0v6O6Tuvukg3PIZpsBADAUNRgAsFU2Gg59dsdQ5fnfy+fplyQ5dmG5Y+ZpAABsnhoMANhyGw2H3pDk1Pn5qUlevzD9MfM3Ztw9yVULQ58BANgcNRgAsOUOWmuBqnp5knsluUVVXZzkaUmeleRVVXVakk8leei8+NlJ7p/koiRfSfK4PdBmAIADnhoMANhb1gyHuvsRK8w6eZllO8kTNtsoAIDRqcEAgL1l0zekBgAAAGD/JRwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABjYmuFQVR1bVW+vqg9X1QVV9cR5+hFV9Zaq+tj87+Hz9Kqq51fVRVV1flXdZU9vBADAgUYNBgDsLesZOfS1JE/u7hOS3D3JE6rqhCRPTXJOdx+f5Jz5dZKckuT4+XF6kj/c8lYDABz41GAAwF6xZjjU3Zd193vn519KcmGSo5M8KMmZ82JnJnnw/PxBSc7qyTuTHFZVt9zylgMAHMDUYADA3rJb9xyqquOS3DnJuUmO6u7L5lmfSXLU/PzoJJ9eeNvF87Sln3V6VZ1XVed9NdfuZrMBAMahBgMA9qR1h0NVdeMkr0nypO6+enFed3eS3p0Vd/cLuvuk7j7p4ByyO28FABiGGgwA2NPWFQ5V1cGZipI/6+6/mCd/dsdQ5fnfy+fplyQ5duHtx8zTAADYDWowAGBvWM+3lVWSFyW5sLufszDrDUlOnZ+fmuT1C9MfM39jxt2TXLUw9BkAgHVQgwEAe8tB61jm+5I8OskHq+r987RfTvKsJK+qqtOSfCrJQ+d5Zye5f5KLknwlyeO2tMUAAGNQgwEAe8Wa4VB3/32SWmH2ycss30mesMl2AQAMTQ0GAOwtu/VtZQAAAAAcWIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADWzMcqqpDq+pdVfWBqrqgqp4xT79tVZ1bVRdV1Sur6obz9EPm1xfN84/bs5sAAHDgUYMBAHvLekYOXZvk3t19YpI7JblfVd09ybOTnNHdt09yRZLT5uVPS3LFPP2MeTkAAHaPGgwA2CvWDId68uX55cHzo5PcO8mr5+lnJnnw/PxB8+vM80+uqtqyFgMADEANBgDsLeu651BV3aCq3p/k8iRvSfLxJFd299fmRS5OcvT8/Ogkn06Sef5VSW6y4pHWAAAMdElEQVS+lY0GABiBGgwA2BvWFQ519390952SHJPkrknuuNkVV9XpVXVeVZ331Vy72Y8DADjgqMEAgL1ht76trLuvTPL2JPdIclhVHTTPOibJJfPzS5IcmyTz/Jsl+cIyn/WC7j6pu086OIdssPkAAAc+NRgAsCet59vKjqyqw+bnN0pynyQXZipQHjIvdmqS18/P3zC/zjz/bd3dW9loAIADnRoMANhbDlp7kdwyyZlVdYNMYdKruvtNVfXhJK+oqt9M8r4kL5qXf1GSP62qi5J8McnD90C7AQAOdGowAGCvWDMc6u7zk9x5men/nOna96XTr0nyX7ekdQAAg1KDAQB7y27dcwgAAACAA4twCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIEJhwAAAAAGJhwCAAAAGJhwCAAAAGBgwiEAAACAgQmHAAAAAAYmHAIAAAAYmHAIAAAAYGDCIQAAAICBCYcAAAAABiYcAgAAABiYcAgAAABgYMIhAAAAgIGtOxyqqhtU1fuq6k3z69tW1blVdVFVvbKqbjhPP2R+fdE8/7g903QAgAOb+gsA2Bt2Z+TQE5NcuPD62UnO6O7bJ7kiyWnz9NOSXDFPP2NeDgCA3af+AgD2uHWFQ1V1TJIfSfIn8+tKcu8kr54XOTPJg+fnD5pfZ55/8rw8AADrpP4CAPaW9Y4cem6SpyT5+vz65kmu7O6vza8vTnL0/PzoJJ9Oknn+VfPyO6mq06vqvKo676u5doPNBwA4YG15/ZWowQCAXa0ZDlXVA5Jc3t3v2coVd/cLuvuk7j7p4ByylR8NALBf21P1V6IGAwB2ddA6lvm+JA+sqvsnOTTJTZM8L8lhVXXQfHbqmCSXzMtfkuTYJBdX1UFJbpbkC1vecgCAA5f6CwDYa9YcOdTdv9Tdx3T3cUkenuRt3f3IJG9P8pB5sVOTvH5+/ob5deb5b+vu3tJWAwAcwNRfAMDetDvfVrbULyb5uaq6KNM17S+ap78oyc3n6T+X5KmbayIAADP1FwCw5WpfOKl00zqi71Ynb3czAIA95Nw+J1f3F3171j5GDQYAB7b11mCbGTkEAAAAwH5OOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMTDgEAAAAMDDhEAAAAMDAhEMAAAAAAxMOAQAAAAxMOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwIRDAAAAAAMTDgEAAAAMrLp7u9uQqvpSko9udzv2Y7dI8vntbsR+St9tnL7bHP23cfpu47az727T3Udu07pZgRpsU/xftDn6b+P03cbpu83Rfxu3z9dgB+2NlqzDR7v7pO1uxP6qqs7Tfxuj7zZO322O/ts4fbdx+o5lqME2yO/T5ui/jdN3G6fvNkf/bdz+0HcuKwMAAAAYmHAIAAAAYGD7Sjj0gu1uwH5O/22cvts4fbc5+m/j9N3G6TuWsk9snL7bHP23cfpu4/Td5ui/jdvn+26fuCE1AAAAANtjXxk5BAAAAMA2EA4BAAAADGzbw6Gqul9VfbSqLqqqp253e/Y1VfXiqrq8qj60MO2IqnpLVX1s/vfweXpV1fPnvjy/qu6yfS3fflV1bFW9vao+XFUXVNUT5+n6bx2q6tCqeldVfWDuv2fM029bVefO/fTKqrrhPP2Q+fVF8/zjtrP9+4KqukFVva+q3jS/1nfrUFWfrKoPVtX7q+q8eZrf23WoqsOq6tVV9ZGqurCq7qHvWIkabHVqsI1Tg22c+mvz1F8bpwbbuAOhBtvWcKiqbpDkD5KckuSEJI+oqhO2s037oJckud+SaU9Nck53H5/knPl1MvXj8fPj9CR/uJfauK/6WpInd/cJSe6e5Anz/qX/1ufaJPfu7hOT3CnJ/arq7kmeneSM7r59kiuSnDYvf1qSK+bpZ8zLje6JSS5ceK3v1u+HuvtO3X3S/Nrv7fo8L8lfd/cdk5yYaf/Td+xCDbYuL4kabKPUYBun/to89dfmqME2Zv+vwbp72x5J7pHkzQuvfynJL21nm/bFR5Ljknxo4fVHk9xyfn7LJB+dn/9xkkcst5xHJ8nrk9xH/22o774xyXuT3C3J55McNE+/7nc4yZuT3GN+ftC8XG1327exz47JdBC4d5I3JSl9t+6++2SSWyyZ5vd27X67WZJPLN139J3Hcg812Lr7SQ22Nf2oBttYv6m/dr/P1F+b6z812Mb67YCowbb7srKjk3x64fXF8zRWd1R3XzY//0ySo+bn+nMF8zDROyc5N/pv3eZhue9PcnmStyT5eJIru/tr8yKLfXRd/83zr0py873b4n3Kc5M8JcnX59c3j75br07yN1X1nqo6fZ7m93Ztt03yuST/ax5O/ydV9U3RdyzPz39j/D7tJjXY7lN/bYr6a3PUYBtzQNRg2x0OsUk9RY293e3Yl1XVjZO8JsmTuvvqxXn6b3Xd/R/dfadMZ2HumuSO29yk/UJVPSDJ5d39nu1uy37qnt19l0xDbp9QVT+wONPv7YoOSnKXJH/Y3XdO8q+5fvhyEn0HW8nv09rUYBuj/toY9deWUINtzAFRg213OHRJkmMXXh8zT2N1n62qWybJ/O/l83T9uURVHZypKPmz7v6LebL+203dfWWSt2caintYVR00z1rso+v6b55/syRf2MtN3Vd8X5IHVtUnk7wi09Dm50XfrUt3XzL/e3mS12YqjP3eru3iJBd397nz61dnKlT0Hcvx898Yv0/rpAbbPPXXblN/bZIabMMOiBpsu8Ohdyc5fr6D/A2TPDzJG7a5TfuDNyQ5dX5+aqbruHdMf8x89/O7J7lqYRjbcKqqkrwoyYXd/ZyFWfpvHarqyKo6bH5+o0z3CrgwU5HykHmxpf23o18fkuRtc0I+nO7+pe4+pruPy/T/2tu6+5HRd2uqqm+qqpvseJ7kvkk+FL+3a+ruzyT5dFV92zzp5CQfjr5jeWqwjfH7tA5qsI1Tf22c+mtz1GAbd8DUYNt906Mk90/yT5mupf2V7W7PvvZI8vIklyX5aqZE8rRM18Kek+RjSd6a5Ih52cr0zSMfT/LBJCdtd/u3ue/umWno3vlJ3j8/7q//1t1/353kfXP/fSjJr83Tb5fkXUkuSvLnSQ6Zpx86v75onn+77d6GfeGR5F5J3qTv1t1ft0vygflxwY7jgt/bdfffnZKcN//evi7J4frOY5X9RQ22ev+owTbed2qwjfed+mtr+lH9tft9pgbbXP/t9zVYzY0DAAAAYEDbfVkZAAAAANtIOAQAAAAwMOEQAAAAwMCEQwAAAAADEw4BAAAADEw4BAAAADAw4RAAAADAwP5/sOuVuRn+79oAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1440x1440 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"M_hat = M.convert('poly').convert('mask')\n",
"P_hat = P.convert('mask').convert('poly')\n",
"\n",
"plt.figure(figsize=(20,20))\n",
"\n",
"plt.subplot(1, 2, 1)\n",
"diff = M.instances.masks - M_hat.instances.masks\n",
"plt.title('(Mask) - (Mask > Poly > Mask) = %4.2f'%(diff.sum().item()))\n",
"plt.imshow(diff[0])\n",
"\n",
"plt.subplot(1, 2, 2)\n",
"# Mask conversion for Poly is necessary for comparison and plotting\n",
"diff = P.convert('mask').instances.masks - P_hat.convert('mask').instances.masks\n",
"plt.title('(Poly > Mask) - (Poly > Mask > Poly > Mask) = %4.2f'%(diff.sum().item()))\n",
"plt.imshow(diff[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Crop [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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3N0PVok7MwGwM64TAAA7p5IKAAAAgMkJqQAAAACYnJAKAAAAgMkJqQAAAACYnJAKAAAAgMkJqQAAAACYnJAKAAAAgMkJqQAAAACYnJAKAAAAgMkJqQAAAACYnJAKAAAAgMkJqQAAAACYnJAKAAAAgMkJqQAAAACYnJAKAAAAgMkJqQAAAACYnJAKAAAAgMkJqQAAAACYnJAKAAAAgMkJqQAAAACYnJAKAAAAgMkJqQAAAACYnJAKAAAAgMkJqQAAAACYnJAKAAAAgMltmHoAsK+56NrLph4CAHPMdQIAYHlUUgEAAAAwOSEVAAAAAJMTUgEAAAAwOSEVAAAAAJMTUgEAAAAwOSEVAAAAAJPbMPUAYB65fTgAO+M6AQCw+lRSAQAAADA5IRUAAAAAkxNSAQAAADA5IRUAAAAAkxNSAQAAADA5IRUAAAAAkxNSAQAAADA5IRUAAAAAkxNSAQAAADA5IRUAAAAAkxNSAQAAADA5IRUAAAAAk9sw9QBgKhdde9nUQwBgjrlOAADsXSqpAAAAAJickAoAAACAyQmpAAAAAJickAoAAACAyQmpAAAAAJickAoAAACAyQmpAAAAAJickAoAAACAyQmpAAAAAJickAoAAACAyQmpAAAAAJickAoAAACAyQmpAAAAAJickAoAAACAyQmpAAAAAJickAoAAACAyQmpAAAAAJickAoAAACAyQmpAAAAAJickAoAAACAyQmpAAAAAJickAoAAACAyQmpAAAAAJickAoAAACAyQmpAAAAAJickAoAAACAye0ypKqqjVX17qr6SFVdXlU/N24/tKreUVUfH/+939oPF4B54zoBAACsht2ppLojyS909/FJHp7kZ6rq+CRnJnlndx+X5J3jawDWH9cJAABgxXYZUnX3dd39gfH5zUk+muTIJKckOXfsdm6SJ67VIAGYX64TAADAatiwJ52r6ugk35bkkiQP6O7rxqZPJXnAEvuckeSMJLl77rHccQKwD3CdAAAAlmu3F06vqkOSvCnJz3f3TbNt3d1JerH9uvus7j6hu084KAevaLAAzC/XCQAAYCV2K6SqqoMyfPF4bXe/edz86ao6fGw/PMln1maIAMw71wkAAGCldufufpXk7CQf7e7fn2nalOT08fnpSd66+sMDYN65TgAAAKthd9akekSSZyT5cFVdNm77n0lekuQNVfXs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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plotDiff(M.crop(box), P.crop(box), 'crop')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Resize [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"new_size = 1000, 100\n",
"plotDiff(M.resize(new_size), P.resize(new_size), 'resize')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Transpose [Pass]"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"FLIP_LEFT_RIGHT = 0\n",
"FLIP_TOP_BOTTOM = 1"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plotDiff(M.transpose(FLIP_LEFT_RIGHT), P.transpose(FLIP_LEFT_RIGHT))"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plotDiff(M.transpose(FLIP_TOP_BOTTOM), P.transpose(FLIP_TOP_BOTTOM))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<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": 28,
"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",
"P = SegmentationMask(poly, size, 'poly')\n",
"M = SegmentationMask(poly, size, 'poly').convert('mask')"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fd3f833f6a0>"
]
},
"execution_count": 29,
"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(M.instances.masks[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Conversion [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fd3fad3a898>"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"M_hat = M.convert('poly').convert('mask')\n",
"P_hat = P.convert('mask').convert('poly')\n",
"\n",
"plt.figure(figsize=(20,20))\n",
"\n",
"plt.subplot(1, 2, 1)\n",
"diff = M.instances.masks - M_hat.instances.masks\n",
"plt.title('(Mask) - (Mask > Poly > Mask) = %4.2f'%(diff.sum().item()))\n",
"plt.imshow(diff[0])\n",
"\n",
"plt.subplot(1, 2, 2)\n",
"# Mask conversion for Poly is necessary for comparison and plotting\n",
"diff = P.convert('mask').instances.masks - P_hat.convert('mask').instances.masks\n",
"plt.title('(Poly > Mask) - (Poly > Mask > Poly > Mask) = %4.2f'%(diff.sum().item()))\n",
"plt.imshow(diff[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Crop [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plotDiff(M.crop(box), P.crop(box), 'crop')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Resize [PASS]"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"new_size = 1000, 100\n",
"plotDiff(M.resize(new_size), P.resize(new_size), 'resize')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TEST: Transpose [Pass]"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"FLIP_LEFT_RIGHT = 0\n",
"FLIP_TOP_BOTTOM = 1"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plotDiff(M.transpose(FLIP_LEFT_RIGHT), P.transpose(FLIP_LEFT_RIGHT))"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plotDiff(M.transpose(FLIP_TOP_BOTTOM), P.transpose(FLIP_TOP_BOTTOM))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<pre>\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"</pre>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## IMPORTANT: error checking and handling"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Case 1: Overflow"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"ename": "AssertionError",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-36-ea6012572c5c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0msize\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheight\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0mP\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mSegmentationMask\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpoly\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'poly'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0mM\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mSegmentationMask\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpoly\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'poly'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconvert\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'mask'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/debugmask/lib/python3.7/site-packages/maskrcnn_benchmark-0.1-py3.7-linux-x86_64.egg/maskrcnn_benchmark/structures/segmentation_mask.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, instances, size, mode)\u001b[0m\n\u001b[1;32m 447\u001b[0m '''\n\u001b[1;32m 448\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'poly'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 449\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minstances\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mPolygonList\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minstances\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 450\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'mask'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 451\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minstances\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBinaryMaskList\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minstances\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/debugmask/lib/python3.7/site-packages/maskrcnn_benchmark-0.1-py3.7-linux-x86_64.egg/maskrcnn_benchmark/structures/segmentation_mask.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, polygons, size)\u001b[0m\n\u001b[1;32m 350\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 351\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 352\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpolygons\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mPolygonInstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mpolygons\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 353\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msize\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 354\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/debugmask/lib/python3.7/site-packages/maskrcnn_benchmark-0.1-py3.7-linux-x86_64.egg/maskrcnn_benchmark/structures/segmentation_mask.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 350\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 351\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 352\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpolygons\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mPolygonInstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mpolygons\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 353\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msize\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 354\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/debugmask/lib/python3.7/site-packages/maskrcnn_benchmark-0.1-py3.7-linux-x86_64.egg/maskrcnn_benchmark/structures/segmentation_mask.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, polygons, size)\u001b[0m\n\u001b[1;32m 197\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mpolygons\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 198\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 199\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 200\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 201\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mAssertionError\u001b[0m: "
]
}
],
"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",
"\n",
"P = SegmentationMask(poly, size, 'poly')\n",
"M = SegmentationMask(poly, size, 'poly').convert('mask')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Case 2: Underflow"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"ename": "AssertionError",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-37-275541ca7ab2>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0mP\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mSegmentationMask\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpoly\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'poly'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0mM\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mSegmentationMask\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpoly\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'poly'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconvert\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'mask'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/debugmask/lib/python3.7/site-packages/maskrcnn_benchmark-0.1-py3.7-linux-x86_64.egg/maskrcnn_benchmark/structures/segmentation_mask.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, instances, size, mode)\u001b[0m\n\u001b[1;32m 447\u001b[0m '''\n\u001b[1;32m 448\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'poly'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 449\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minstances\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mPolygonList\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minstances\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 450\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'mask'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 451\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minstances\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBinaryMaskList\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minstances\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/debugmask/lib/python3.7/site-packages/maskrcnn_benchmark-0.1-py3.7-linux-x86_64.egg/maskrcnn_benchmark/structures/segmentation_mask.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, polygons, size)\u001b[0m\n\u001b[1;32m 350\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 351\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 352\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpolygons\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mPolygonInstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mpolygons\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 353\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msize\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 354\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/debugmask/lib/python3.7/site-packages/maskrcnn_benchmark-0.1-py3.7-linux-x86_64.egg/maskrcnn_benchmark/structures/segmentation_mask.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 350\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 351\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 352\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpolygons\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mPolygonInstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mpolygons\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 353\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msize\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 354\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/debugmask/lib/python3.7/site-packages/maskrcnn_benchmark-0.1-py3.7-linux-x86_64.egg/maskrcnn_benchmark/structures/segmentation_mask.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, polygons, size)\u001b[0m\n\u001b[1;32m 198\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 199\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 200\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 201\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 202\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mAssertionError\u001b[0m: "
]
}
],
"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",
"\n",
"\n",
"P = SegmentationMask(poly, size, 'poly')\n",
"M = SegmentationMask(poly, size, 'poly').convert('mask')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Case 3: zero measure NOT HANDLED\n",
"\n",
"In general cases it could be checked using .convert('mask') and sum reducing the whole mask but it would be too inefficient"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"width = 640\n",
"height = 480\n",
"poly = [[[100, 100, 100, 100, 100, height-100, 100, height-100]]]\n",
"size = (width, height)\n",
"\n",
"P = SegmentationMask(poly, size, 'poly')\n",
"M = SegmentationMask(poly, size, 'poly').convert('mask')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Case 4: Wrong ordering (maybe not a problem?)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fd3fa96a898>"
]
},
"execution_count": 39,
"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",
"\n",
"P = SegmentationMask(poly, size, 'poly')\n",
"M = SegmentationMask(poly, size, 'poly').convert('mask')\n",
"\n",
"plt.figure(figsize=(20, 20))\n",
"plt.title('Mask')\n",
"plt.imshow(M.instances.masks[0])"
]
}
],
"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