Exo 4

parent 0976200c
This diff is collapsed.
{
"cells": [],
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Keypoints distance analysis"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Load and prepare data from json"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"import json\n",
"import numpy as np\n",
"\n",
"with open('autob_coco_test.json') as f:\n",
" js_gt = json.load(f)\n",
" \n",
"with open('keypoints_out_SBL_autob_test-repo.json') as f:\n",
" js_dt = json.load(f)\n",
"\n",
"dt_ids = np.array([an['image_id'] for an in js_dt])\n",
"dt_kps = np.array([[an[\"keypoints\"][0::3], an[\"keypoints\"][1::3]] for an in js_dt])\n",
"dt_kps = dt_kps.swapaxes(1, 2)\n",
"\n",
"gt_dict = dict([an['image_id'], an['keypoints']] for an in js_gt['annotations'])\n",
"gt_kps = np.array([[gt_dict[id][0::3], gt_dict[id][1::3]] for id in dt_ids])\n",
"gt_kps = gt_kps.swapaxes(1, 2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compute distances d2 defined as $d^2(kp) = (x_{dt}(kp) - x_{gt}(kp))^2 + (y_{dt}(kp) - y_{gt}(kp))^2$"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"d2 = np.sum((gt_kps - dt_kps)**2, axis=2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Preserve only distance with actual annotation ($x$ or $y$ $>0$)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"d2_nnz = d2[gt_kps[:,:,0] * gt_kps[:,:,1]> 0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Analysis"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compute stats"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"mean:3666.890575143888, std:11206.164522261512\n",
"min:0.000885009765625, median:446.74806213378906, max:280277.30667792447\n"
]
}
],
"source": [
"print(f'mean:{d2_nnz.mean()}, std:{np.std(d2_nnz, ddof=1)}')\n",
"print(f'min:{d2_nnz.min()}, median:{np.median(d2_nnz)}, max:{d2_nnz.max()}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Disp histogram"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"\n",
"plt.hist(d2_nnz, bins=20, histtype='bar', ec='black')\n",
"plt.gca().set_yscale(\"log\")\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
......@@ -16,10 +161,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment