Skip to content

Instantly share code, notes, and snippets.

@lhk
Created July 13, 2017 11:09
Show Gist options
  • Save lhk/b8f30e9f30c5d395b99188a53524c53e to your computer and use it in GitHub Desktop.
Save lhk/b8f30e9f30c5d395b99188a53524c53e to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n"
]
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"import sys\n",
"sys.path.insert(0, \"/home/lars/libraries/keras/\")\n",
"from keras.preprocessing.image import *"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"img = np.zeros((1000,1000,3))\n",
"img[400:600, 400:600, :]=1\n",
"\n",
"img[300:400, 100:200, :]=1"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def draw_boxes(img, boxes, size=5):\n",
" draw_img = img.copy()\n",
" for box in boxes:\n",
" x_min, y_min, x_max, y_max = box\n",
" dim_x, dim_y = draw_img.shape[:2]\n",
" x_min = int(x_min * dim_x)\n",
" x_max = int(x_max * dim_x)\n",
" y_min = int(y_min * dim_y)\n",
" y_max = int(y_max * dim_y)\n",
" \n",
" x_min = max(0, x_min)\n",
" x_max = min(dim_x, x_max)\n",
" y_min = max(0, y_min)\n",
" y_max = min(dim_y, y_max)\n",
"\n",
" draw_img[x_min:x_min+size, y_min:y_max]=[1,0,0]\n",
" draw_img[x_max-size:x_max, y_min:y_max]=[1,0,0]\n",
" draw_img[x_min:x_max, y_min:y_min+size]=[1,0,0]\n",
" draw_img[x_min:x_max, y_max-size:y_max]=[1,0,0]\n",
" return draw_img\n",
"\n",
"def draw_verts(img, verts, size=5):\n",
" draw_img = img.copy()\n",
" for vert in verts:\n",
" \n",
" x, y = vert\n",
" dim_x, dim_y = draw_img.shape[:2]\n",
" x_min = int(x * dim_x)\n",
" x_max = int(x * dim_x)\n",
" y_min = int(y * dim_y)\n",
" y_max = int(y * dim_y)\n",
" \n",
" x_min = x_min-size\n",
" x_max = x_max+size\n",
" y_min = y_min-size\n",
" y_max = y_max+size\n",
" \n",
" x_min = max(0, x_min)\n",
" x_max = min(dim_x, x_max)\n",
" y_min = max(0, y_min)\n",
" y_max = min(dim_y, y_max)\n",
" \n",
" draw_img[x_min:x_max, y_min:y_max]=[0,1,0]\n",
" return draw_img"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"boxes = np.array([[0.4, 0.4, 0.6, 0.6],\n",
" [0.3, 0.1, 0.4, 0.2]])\n",
"\n",
"vertices = boxes_to_vertices(boxes)\n",
"vertices = vertices.reshape((-1, 2))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fad023afd30>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAARQAAAD8CAYAAAC2EFsiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADphJREFUeJzt3H+snmV9x/H3Z9SCoqOAC8G2CxgbF7JkgzUK0Rgj6pAZ\nyx/EYVzsGKbJfvpjiSvbH8btn7kYUbMFbURXjUMYktEQN8MKyfaPHe3YkB8iFQdtAwLyw0UTtfG7\nP56rcKww2vN8z3Oe075fyZ1z39d9PffzPVdPP+e+7ue+T6oKSerwC8tdgKRjh4EiqY2BIqmNgSKp\njYEiqY2BIqnNzAMlyUVJ7kuyN8nWWb+/pKWTWd6HkuQE4FvAW4D9wO3Au6rqnpkVIWnJzPoM5TXA\n3qp6oKp+DHwZ2DTjGiQtkVUzfr+1wL4F2/uB1y7skGQLsGVs/saM6pKOZ49X1S91HGjWgfKCqmob\nsA0gic8FSEvvwa4DzXrKcwBYv2B73WiTdAyYdaDcDmxIcnaS1cBlwI4Z1yBpicx0ylNVB5P8EfA1\n4ATgc1V19yxrkLR0Zvqx8dHyGoo0E3uqamPHgbxTVlIbA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVIb\nA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVIbA0VSGwNFUhsD\nRVIbA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVIbA0VSm0UH\nSpL1SW5Lck+Su5O8b7SfluSWJPePr6eO9iT5VJK9Se5Mcl7XNyFpPkxzhnIQ+NOqOgc4H/jDJOcA\nW4GdVbUB2Dm2Ad4GbBjLFuDqKd5b0hxadKBU1cNV9Z9j/X+Be4G1wCZg++i2HbhkrG8CvlATXwfW\nJDlz0ZVLmjst11CSnAWcC+wCzqiqh8euR4AzxvpaYN+Cl+0fbYcfa0uS3Ul2d9QmaXamDpQkLwW+\nAry/qr6/cF9VFVBHc7yq2lZVG6tq47S1SZqtqQIlyYuYhMmXqurG0fzdQ1OZ8fXR0X4AWL/g5etG\nm6RjxDSf8gS4Bri3qj6+YNcOYPNY3wzctKD9PePTnvOBpxdMjSQdAzKZlSzihcnrgX8HvgH8dDT/\nOZPrKNcDvww8CLyzqp4YAfS3wEXAD4HLq+r/vU6SZHHFSToae7ouMSw6UGbBQJFmoi1QvFNWUhsD\nRVIbA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVIbA0VSGwNFUptVy13ATB3+7HKW\n4Jhdx5VWIM9QJLU5vs5QDtPxx1Y8GZGe5RmKpDYGiqQ2x9eUZ8xPnpnqNPz5y8qzkx6nPzreeYYi\nqY2BIqmNgSKpjYEiqY2BIqmNgSKpjYEiqY2BIqmNgSKpjYEiqY2BIqmNgSKpjYEiqY2BIqmNgSKp\nzdSBkuSEJHckuXlsn51kV5K9Sa5Lsnq0nzi29479Z0373pLmS8cZyvuAexdsfxS4qqpeBTwJXDHa\nrwCeHO1XjX6zVZMlYyGZesnC4x1a5lkdtsy7lVbvcW6qQEmyDvgt4LNjO8CbgBtGl+3AJWN909hm\n7L9w9Jd0jJj2T0B+AvgQ8LKxfTrwVFUdHNv7gbVjfS2wD6CqDiZ5evR/fOEBk2wBtkxZ1xExzeb/\nl77/RivLos9QkrwdeLSq9jTWQ1Vtq6qNVbWx87iSlt40ZyivA96R5GLgJOAXgU8Ca5KsGmcp64AD\no/8BYD2wP8kq4BTge1O8/9Fbil93K+1X6BL8oe6ldOiPgK+0YT5eLfoMpaqurKp1VXUWcBlwa1W9\nG7gNuHR02wzcNNZ3jG3G/lur5vynWdJRWYr7UP4M+GCSvUyukVwz2q8BTh/tHwS2LsF7S1pGmeeT\nhCTzW9wKt1KmPDjlmYU9XdcsvVNWUhsDRVIbA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVIbA0VSGwNF\nUhsDRVIbA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVIbA0VS\nGwNFUhsDRVIbA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVIbA0VSGwNFUhsDRVKbqQIlyZokNyT5ZpJ7\nk1yQ5LQktyS5f3w9dfRNkk8l2ZvkziTn9XwLkubFtGconwT+pap+Bfg14F5gK7CzqjYAO8c2wNuA\nDWPZAlw95XtrMWqyZCwkc708U+ehRXNt0YGS5BTgDcA1AFX146p6CtgEbB/dtgOXjPVNwBdq4uvA\nmiRnLrpySXNnmjOUs4HHgM8nuSPJZ5OcDJxRVQ+PPo8AZ4z1tcC+Ba/fP9p+RpItSXYn2T1FbTpC\nmfNFK8s0gbIKOA+4uqrOBX7As9MbAKrqqE9Uq2pbVW2sqo1T1CZpGUwTKPuB/VW1a2zfwCRgvnto\nKjO+Pjr2HwDWL3j9utGmWVpppwArrd7j3KIDpaoeAfYlefVouhC4B9gBbB5tm4GbxvoO4D3j057z\ngacXTI0kHQNWTfn6Pwa+lGQ18ABwOZOQuj7JFcCDwDtH368CFwN7gR+OvpKOIZlc5phPSea3OOnY\nsafrmqV3ykpqY6BIamOgSGpjoEhqY6BIamOgSGpjoEhqY6BIamOgSGpjoEhqY6BIamOgSGpjoEhq\nY6BIamOgSGpjoEhqY6BIamOgSGpjoEhqY6BIamOgSGpjoEhqY6BIamOgSGpjoEhqY6BIamOgSGpj\noEhqY6BIamOgSGpjoEhqY6BIamOgSGpjoEhqM1WgJPlAkruT3JXk2iQnJTk7ya4ke5Ncl2T16Hvi\n2N479p/V8Q1Imh+LDpQka4E/ATZW1a8CJwCXAR8FrqqqVwFPAleMl1wBPDnarxr9JB1Dpp3yrAJe\nnGQV8BLgYeBNwA1j/3bgkrG+aWwz9l+YJFO+v6Q5suhAqaoDwMeAh5gEydPAHuCpqjo4uu0H1o71\ntcC+8dqDo//phx83yZYku5PsXmxtkpbHNFOeU5mcdZwNvAI4Gbho2oKqaltVbayqjdMeS9JsTTPl\neTPwnap6rKp+AtwIvA5YM6ZAAOuAA2P9ALAeYOw/BfjeFO8vac5MEygPAecnecm4FnIhcA9wG3Dp\n6LMZuGms7xjbjP23VlVN8f6S5kym+T+d5CPAbwMHgTuA9zK5VvJl4LTR9jtV9aMkJwFfBM4FngAu\nq6oHXuD4Bo609PZ0XWKYKlCWmoEizURboHinrKQ2BoqkNgaKpDYGiqQ2BoqkNgaKpDYGiqQ2Boqk\nNgaKpDYGiqQ2BoqkNgaKpDYGiqQ2BoqkNgaKpDYGiqQ2BoqkNgaKpDYGiqQ2BoqkNgaKpDYGiqQ2\nBoqkNgaKpDYGiqQ2BoqkNgaKpDYGiqQ2BoqkNgaKpDYGiqQ2BoqkNgaKpDYGiqQ2BoqkNi8YKEk+\nl+TRJHctaDstyS1J7h9fTx3tSfKpJHuT3JnkvAWv2Tz6359k89J8O5KW05Gcofw9cNFhbVuBnVW1\nAdg5tgHeBmwYyxbgapgEEPBh4LXAa4APHwohSceOFwyUqvo34InDmjcB28f6duCSBe1fqImvA2uS\nnAn8JnBLVT1RVU8Ct/DzISVphVu1yNedUVUPj/VHgDPG+lpg34J++0fb87X/nCRbmJzdAPwIuOu5\n+s2plwOPL3cRR2gl1Qorq96VVCvAq7sOtNhAeUZVVZLqKGYcbxuwDSDJ7qra2HXspbaS6l1JtcLK\nqncl1QqTeruOtdhPeb47pjKMr4+O9gPA+gX91o2252uXdAxZbKDsAA59UrMZuGlB+3vGpz3nA0+P\nqdHXgLcmOXVcjH3raJN0DHnBKU+Sa4E3Ai9Psp/JpzV/DVyf5ArgQeCdo/tXgYuBvcAPgcsBquqJ\nJH8F3D76/WVVHX6h97lsO/JvZS6spHpXUq2wsupdSbVCY72parv8Iek4552yktoYKJLazG2gJLko\nyX3jNv6tL/yKJa9nfZLbktyT5O4k7xvtR/0YwgxrPiHJHUluHttnJ9k1arouyerRfuLY3jv2n7UM\nta5JckOSbya5N8kFcz62Hxg/B3cluTbJSfMyvsv6uExVzd0CnAB8G3glsBr4b+CcZa7pTOC8sf4y\n4FvAOcDfAFtH+1bgo2P9YuCfgQDnA7uWoeYPAv8A3Dy2rwcuG+ufBn5/rP8B8Omxfhlw3TLUuh14\n71hfDayZ17FlclPmd4AXLxjX352X8QXeAJwH3LWg7ajGEjgNeGB8PXWsn/qC7z3rH5wjHJALgK8t\n2L4SuHK56zqsxpuAtwD3AWeOtjOB+8b6Z4B3Lej/TL8Z1beOyXNWbwJuHj8wjwOrDh9jJh/hXzDW\nV41+mWGtp4z/oDmsfV7H9tCd36eN8bqZyeMlczO+wFmHBcpRjSXwLuAzC9p/pt/zLfM65TniW/WX\nwzhlPRfYxdE/hjArnwA+BPx0bJ8OPFVVB5+jnmdqHfufHv1n5WzgMeDzY4r22SQnM6djW1UHgI8B\nDwEPMxmvPczv+MISPi6z0LwGytxK8lLgK8D7q+r7C/fVJMqX/XP4JG8HHq2qPctdyxFaxeQU/eqq\nOhf4Ac8+wQ7Mz9gCjOsPm5gE4SuAk1lBD7su5VjOa6DM5a36SV7EJEy+VFU3juajfQxhFl4HvCPJ\n/wBfZjLt+SSTp78P3cy4sJ5nah37TwG+N6NaYfLbb39V7RrbNzAJmHkcW4A3A9+pqseq6ifAjUzG\nfF7HF2b0uMy8BsrtwIZx1Xw1kwtZO5azoCQBrgHuraqPL9h1tI8hLLmqurKq1lXVWUzG7taqejdw\nG3Dp89R66Hu4dPSf2dlAVT0C7Ety6KnXC4F7mMOxHR4Czk/ykvFzcajeuRzf56hh6R6XmdWFrEVc\nVLqYyScp3wb+Yg7qeT2T08Q7gf8ay8VM5sI7gfuBfwVOG/0D/N2o/xvAxmWq+408+ynPK4H/YPJo\nxD8CJ472k8b23rH/lctQ568Du8f4/hOTTxbmdmyBjwDfZPLnNb4InDgv4wtcy+Tazk+YnP1dsZix\nBH5v1LwXuPxI3ttb7yW1mdcpj6QVyECR1MZAkdTGQJHUxkCR1MZAkdTGQJHU5v8AEGEroKpe8I8A\nAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fad023f6c88>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"draw_img =draw_boxes(img, boxes, 10)\n",
"draw_img = draw_verts(draw_img, vertices, 10)\n",
"plt.imshow(draw_img)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"new_img, new_boxes, new_vertices = random_rotation_with_boxes(img, boxes, 180, row_axis=0, col_axis=1, channel_axis=2)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fad02223c88>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fad5c2e8780>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"draw_img = draw_boxes(new_img, new_boxes, 10)\n",
"draw_img = draw_verts(draw_img, new_vertices, 10)\n",
"plt.imshow(draw_img)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"new_img, new_boxes, new_vertices = random_zoom_with_boxes(img, boxes, (0.5,1.5), row_axis=0, col_axis=1, channel_axis=2)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fad022c3b70>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fad5c30add8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"draw_img = draw_boxes(new_img, new_boxes, 10)\n",
"draw_img = draw_verts(draw_img, new_vertices, 10)\n",
"plt.imshow(draw_img)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1, 0],\n",
" [0, 2]])"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = np.array([[1,0],[0,2]])\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[2, 0],\n",
" [0, 1]])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[::-1, ::-1]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0.4, 0.4, 0.6, 0.6],\n",
" [ 0.3, 0.1, 0.4, 0.2]])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"boxes"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment