alphapose-feedback/find_diffs.ipynb

681 lines
4.3 MiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%config Application.log_level='INFO'"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import heapq\n",
"import json\n",
"from pathlib import Path\n",
"import pickle\n",
"import shutil\n",
"import numpy as np\n",
"\n",
"\n",
"import tqdm\n",
"from loop_alphapose_training import run_cmd, Iteration\n",
"import logging\n",
"import coloredlogs\n",
"from PIL import Image"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from pycocotools.coco import COCO"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"logger = logging.getLogger(__name__)\n",
"coloredlogs.install(level=logging.INFO)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def diff_keypoints(ann1, ann2) -> float:\n",
" if ann1 is None or ann2 is None:\n",
" return None\n",
" return np.linalg.norm(np.array(ann1['keypoints']) - np.array(ann2['keypoints']))\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def diff_bbox(bbox1, bbox2) -> float:\n",
" return np.linalg.norm(np.array(bbox1)-np.array(bbox2))\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"def match_annotations(anns1: list[dict], anns2: list[dict]) -> list[tuple]:\n",
" # both 1 simple case:\n",
" if len(anns1) == 1 and len(anns2) == 1:\n",
" return [(anns1[0], anns2[0])]\n",
" \n",
" if len(anns2) == 0:\n",
" return [(ann1, None) for ann1 in anns1]\n",
" \n",
" if len(anns1) == 0:\n",
" return [(None, ann2) for ann2 in anns2]\n",
"\n",
" matches = []\n",
" # TODO this loop is biased towards the first item in anns1, idaelly\n",
" # we first calculate the diffs between all annotations, and sort that.\n",
" # but this is quicker and perhaps fine for our purpose\n",
" for ann1 in anns1:\n",
" if len(anns2) == 0: # this can have happended in the loop\n",
" matches.append((ann1, None))\n",
" else:\n",
" diffs = np.array([diff_bbox(ann1['bbox'], ann2['bbox']) for ann2 in anns2])\n",
" match = anns2.pop(diffs.argmin())\n",
" matches.append((ann1, match))\n",
" \n",
" matches.extend([(None, ann2) for ann2 in anns2])\n",
" return matches\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loading annotations into memory...\n",
"Done (t=6.85s)\n",
"creating index...\n",
"index created!\n"
]
}
],
"source": [
"original_path = Path('data/coco/annotations/person_keypoints_train2017.json')\n",
"\n",
"coco_orig = COCO(original_path)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"def find_most_different_annotations(coco_orig: COCO, iteration: Iteration, n: int = 10) -> tuple[int, float, dict, dict]:\n",
" iteration_path = iteration.merged_results_path('train')\n",
" coco_iter = COCO(iteration_path)\n",
" \n",
" matched_annotations = []\n",
" for img_id, img in tqdm.tqdm(coco_orig.imgs.items()):\n",
" anns_iter = [coco_iter.anns[ann_id] for ann_id in coco_iter.getAnnIds(imgIds = img_id)]\n",
" anns_orig = [coco_orig.anns[ann_id] for ann_id in coco_orig.getAnnIds(imgIds = img_id)]\n",
" matched_annotations.extend([(img_id, ann1, ann2) for ann1, ann2 in match_annotations(anns_orig, anns_iter)])\n",
" \n",
" match_losses = []\n",
" skipped_empty, skipped_kp = 0, 0\n",
" for img_id, ann1, ann2 in tqdm.tqdm(matched_annotations):\n",
" if ann1 is None or ann2 is None:\n",
" # todo: we later want to store these somewhere else\n",
" logger.debug(f'skipping hallucination or removal in {img_id}')\n",
" skipped_empty+=1\n",
" continue\n",
" if ann1['num_keypoints'] < 3:\n",
" logger.debug(f'skipping small number of keypoints in {img_id}')\n",
" skipped_kp+=1\n",
" continue\n",
" match_losses.append((img_id, diff_keypoints(ann1, ann2), ann1, ann2))\n",
"\n",
" logger.info(f'Skipped {skipped_empty} hallucinations or removals')\n",
" logger.info(f'Skipped {skipped_kp} annotations with small nr of keypoints')\n",
"\n",
" return heapq.nlargest(n, match_losses, key=lambda ml: ml[1])\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"def copy_annotation_matches_to_path(path: Path, results: list[int, float, dict, dict]):\n",
" largest_diff_files = [Path('data/coco/train2017/') / coco_orig.imgs[img_id]['file_name'] for img_id, diff, ann1, ann2 in results]\n",
"\n",
" display(Image.open(largest_diff_files[0]))\n",
" for source in largest_diff_files:\n",
" fn = source.name\n",
" dest = path / fn\n",
" logger.info(f\"Copy {source} -> {dest}\")\n",
" shutil.copy(source, dest)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loading annotations into memory...\n",
"Done (t=10.50s)\n",
"creating index...\n",
"index created!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 118287/118287 [00:10<00:00, 11610.27it/s]\n",
"100%|██████████| 355665/355665 [00:02<00:00, 134386.96it/s]\n",
"2023-03-08 13:21:59 suspicion __main__[3180558] INFO Skipped 104988 hallucinations or removals\n",
"2023-03-08 13:21:59 suspicion __main__[3180558] INFO Skipped 111450 annotations with small nr of keypoints\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=630x640>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-03-08 13:22:00 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000189780.jpg -> data/test_imgs/000000189780.jpg\n",
"2023-03-08 13:22:00 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000337976.jpg -> data/test_imgs/000000337976.jpg\n",
"2023-03-08 13:22:00 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000006140.jpg -> data/test_imgs/000000006140.jpg\n",
"2023-03-08 13:22:00 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000225392.jpg -> data/test_imgs/000000225392.jpg\n",
"2023-03-08 13:22:00 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000225645.jpg -> data/test_imgs/000000225645.jpg\n",
"2023-03-08 13:22:00 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000479125.jpg -> data/test_imgs/000000479125.jpg\n",
"2023-03-08 13:22:00 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000523173.jpg -> data/test_imgs/000000523173.jpg\n",
"2023-03-08 13:22:00 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000543742.jpg -> data/test_imgs/000000543742.jpg\n",
"2023-03-08 13:22:00 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000523173.jpg -> data/test_imgs/000000523173.jpg\n",
"2023-03-08 13:22:00 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000183602.jpg -> data/test_imgs/000000183602.jpg\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"loading annotations into memory...\n",
"Done (t=9.13s)\n",
"creating index...\n",
"index created!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 118287/118287 [00:09<00:00, 12570.82it/s]\n",
"100%|██████████| 343354/343354 [00:02<00:00, 131424.31it/s]\n",
"2023-03-08 13:22:21 suspicion __main__[3180558] INFO Skipped 97111 hallucinations or removals\n",
"2023-03-08 13:22:21 suspicion __main__[3180558] INFO Skipped 108204 annotations with small nr of keypoints\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=630x640>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-03-08 13:22:22 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000189780.jpg -> data/test_imgs/000000189780.jpg\n",
"2023-03-08 13:22:22 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000337976.jpg -> data/test_imgs/000000337976.jpg\n",
"2023-03-08 13:22:22 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000225645.jpg -> data/test_imgs/000000225645.jpg\n",
"2023-03-08 13:22:22 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000225392.jpg -> data/test_imgs/000000225392.jpg\n",
"2023-03-08 13:22:22 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000008285.jpg -> data/test_imgs/000000008285.jpg\n",
"2023-03-08 13:22:22 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000195826.jpg -> data/test_imgs/000000195826.jpg\n",
"2023-03-08 13:22:22 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000179926.jpg -> data/test_imgs/000000179926.jpg\n",
"2023-03-08 13:22:22 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000045537.jpg -> data/test_imgs/000000045537.jpg\n",
"2023-03-08 13:22:22 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000093133.jpg -> data/test_imgs/000000093133.jpg\n",
"2023-03-08 13:22:22 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000479125.jpg -> data/test_imgs/000000479125.jpg\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"loading annotations into memory...\n",
"Done (t=8.94s)\n",
"creating index...\n",
"index created!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 118287/118287 [00:09<00:00, 12998.82it/s]\n",
"100%|██████████| 339755/339755 [00:01<00:00, 248451.97it/s]\n",
"2023-03-08 13:22:42 suspicion __main__[3180558] INFO Skipped 100474 hallucinations or removals\n",
"2023-03-08 13:22:42 suspicion __main__[3180558] INFO Skipped 105948 annotations with small nr of keypoints\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAKACAIAAACe/aKqAAAA3WlDQ1BJQ0MgUHJvZmlsZQAAeJxjYGDscXRxcmUSYGDIzSspcg9yjIyIjFJgP8/AxiDEwMtgwaCQmFxc4BgQ4MMABHn5eakMGODbNQZGEH1ZF2QWpjxewJpcUFQCpA8AsUpKanEykH4CxAXlJQVAccYQIFskKRvMzgCxs0OCnIHsGiCbryS1AqSXQSNZU8HQ0tJSwTElPylVIbiyuCQ1t1jBMy9ZjwFqJgiIuhf1FGcn5iQq6CqkJ+bmJioY6liQ6F6CABR+ENa3nZBwufQdIYYAyaVFZVAmI+NZBgYAx5M1zbYAY8sAAQAASURBVHicjP15kOVndd+PP5/lbn3Xvrf3ZVZptKN9FwIhgTBiMRgs7EqsYJu4bEPFSVU2J8Epf8vGSaVciU3hxHYMMZgYIoxBrBJgCQSS0EgarbNPz/S+3bVv3/Wz/P54cY6fnrGrfvePqZ7uez/383me85zlfd7nHOfGG28sFArNZvPll18uFou9Xm9+fn5sbKxUKj333HMzMzOlUun111/PZDKu66bT6TiOPc/b2dkJw3BkZCSVSiWTyWaz2Wq1+Gu/308mk8PhMI7jXC4XRVG32x0Oh8Ph0PO8kZGRIAgcxwnDMAxD13W5YCKR2N3dTSaTxpg4jqMocl03DEPP8waDwXA4zGazvu93Op3rr7/+woUL3W53cnJyeXk5n89zteFwWKlU4jje2trK5/OtVuuyyy7b2dkZDAbcoe/7g8FA37x///7V1dUgCFKpVBzHcRwHQeB5nuu6/JBIJPhsPp/vdrtxHBtjuIfx8XGW5brrrvv93//9n//5n08kEul0empqand31/f9VCq1sbExGAwmJycbjUapVOKp2+12IpHwfX9kZGR3dzebzcZxXKvVut1uPp8fGxsbDAY7OzvGmFKp5DhOq9VKJBKJRKLb7Waz2Xq9HgRBMpl0HCeKoiiK2u12v9/P5/PJZDKKomQymUwm4zje3t72ff+yyy7rdDrb29uJROLUqVOf/vSnH3nkkf/9v//3H/7hHxYKhc3NTd/3u92u53lBEERRNDk5OTc3l8lk3njjjW63y/qzGsaYfr+fTqd7vZ7v++l0mrU6fPhwr9c7ffp0Mpk8dOjQ8ePHPc+75ZZbfvCDH+Tz+TAMubFisdhsNoMgyGazu7u7nuelUilkwBjDwhpjEokE8uM4Dj/X6/V0Ol2pVBKJRKPRGB8f73a7IyMjjuPMz88vLy8fOHDg6NGjqVQKASsWi4VCYWdnZ3t7u9VqZTIZ1opfquDp73k03/cTiUQcx9zt+vq667oIpOu6bNPo6GgURYPBII7jRCJRKBQWFxcR10QikUwme71eNpvl9lzX9TzP8zzHcXZ3d4fy6vf709PTW1tbuVxud3c3l8u12+2RkZFGozEyMjI5OTkcDjkUvu/n8/nBYJDNZvv9PkfJvmwYhlEUZTKZRCKhCxgEQSaTGRkZmZ6eXlhYcBwnjmPHcbgrLhtFURAEnCnHcTY2Nh588MGf/dmf/c3f/M1sNjsyMhKGIVLnOE4QBJz0fr+/u7u7u7t7+PDh7e3tH/3oRw899BBX27dv39bWFjvrOE4ymez3+67rsomdTqdQKHD0+CWL7DgOt40gJRIJ1rzb7SL/zWYTteB5HpvLyWUX6vV6KpWKoqjVag0Gg8FggMCcOHHCGDM1NVWtVsvlcjqdzmazjUbD9/1sNnvq1Kn5+fkwDE+fPh0EwV133XXu3Llz585VKpXJycl2u33q1KkjR45ks9mtra1Wq3XNNddUKpV2u53JZDgpbCJ3zmMaY6IoKpVKw+GQ41+pVMIw7PV6IyMjnU4njuPBYJBKpRzH4Z45p2hUz/N839/d3XVdN5fLDQaDH/3oR9ddd91VV101GAxYMZaL1WbfE4lEKpVC6w6HQzbLGMM3sp4c6l6vh2AgOSiifr/PkqbTaXYtlUp1u91EIsExQbCR9sFgwJqjsQeDged5mUym1+vt7u5ub29HUfTGG28Mh8Orr7660WgsLCyMjo4iPHyLMabX62FoPM+Loggln06nWUNVMmEYoo2NMUgvd8It8Rs+y3/5qyrnZDLJQXBdFwuCtAdB4LpuFEWcL9QOB+0f/CJuyXEc/ZN+F2IchqH9Tg6m7/voRtd1h8MhYukPBoOzZ8/edNNNi4uL9Xo9mUyeO3cOu3jkyJGlpaVz584Vi8XhcBiGYafTyWaziURiZGSEc+J53vLyMgeSA2CM6Xa7fHG32+UJOQC+77M6qFEWmmcYDAbcKP9FlI0xCBkGnr+iN+v1OlKLDCHonU6HT7FtZ8+enZiY6PV6m5ubY2Nj3W632Wwmk8kgCKampur1eqfTQVl3Oh1VsuxKKpXifjKZDMceaUD7h2HYaDSMMXNzc5/4xCcwcu12+/Tp057nqfQkEgnP87rdLh9H6HkQFGiv1xsMBrlcbmNjo9frDYdDvJNUKtXv9/v9PsZ1e3s7CAIkSdUNJjaVSnU6nWazmUql0uk0MmSMKRaL/X5/cXExm82mUqlms5nJZD796U//3M/93C233JJMJsMwLJVKjUaj3++HYVgsFg8ePFitVs+cOXPgwIFarcZtsCB8O+eT+89msxsbG77vP/300+zCcDh86aWXOp3O3Xff/dprr4VhiCZCUhcXF9Ep/BKHBgHgyt1ul+OhizAYDEZGRvihVCqhX1BhzWZzZGTk5MmTvu9fccUVr7/++tjYmOu6hUIBCZmZmeHRCoUCC9VoNFKpVK1WwwJtb28Xi0XkM5VK+b7PIceKpNNpx3FyuRxi3Ol02u325uYmtoeD1Gg00DXZbLbT6fR6PZ4ikUhw/pvNZrvdHg6Hejg5e/V6HYE3xmxtbWEm0VwYSBSoKkfUAbqVb0wkErlcDtckkUiw43wklUr1er0bbrjh3LlzOzs7uVwO+4qd5gShsvGWcA3vueeeZ555pl6vz83NsSlYRA411+TAIrrcYa/XGx8fz2QyS0tLqVSq3W5z2DlBWOUwDLPZLOKhQjsYDFgxtFWtVkPj81fHcdDsunRRFGHPXnnllcFgcNddd3W73WPHjuXz+XvvvXdzc3Nra2tycnJ8fHxrayuO42KxeP3117/22mvpdHp0dPTVV1/N5XJooZ2dnV6vt7a2ls1mP/zhD1955ZWu666srBSLxenp6Z2dnQsXLhw6dGhsbGx1dbVer9900025XO7kyZNPPvnkI488gobBz8YYoEY54L1eD4fp6NGj9Xr93nvvbTQarusiZthRnj0Mw52dHZaaXZ6amnJdt91ub21tLS4uHjx48PTp07yHPRodHeUwjo6OsvWq91g6XPZms8mdIBKDwWB0dJQzxaUQxVwu12q1OGie56FquDestYooKhq3oNlscmB7vR7nhZih0Wi0Wq3JyUnHcdbX1/GW+DqEE1PkeR4BQBAE/KbT6SBd3LNt6viBFyrC/iWCYYzB8eLEoSv4K64bGhiHhvfv7u6ih1UFsYYqZkEQ+L6vrr9+qVpf28CXSiVkG7+QHzBMekh9XNQf/ehHV1999fr6+vr6eiqVWl5enpiYQDL4AiwTJwE9i5tGpMJFWHecCHVJWDh+5syw1phnXR3UFq4B6ubSZ0OLnTt37m1ve5u6rv1+H8dNfaVkMknga4xZXFwsFAr5fB5hJRTgyhrXdrtdVpagja/DZUMQWTL0EefqwoUL+/btm5yc/N73vtfr9crlcrPZNMZkMhkWJ5/Pdzod7qfdbo+Pj2Ny9KFWVlaSyST33Gw2R0dHq9VqvV6fnJzM5/PD4bDX6/V6PU4jsSDRLQui/2azWaz7zs4OBwnZTafTIyMjURQtLy9jGlOp1CuvvPLss8/ec889b33rWz/1qU/t27cvmUyOjo5WKpVCoXDixInt7e2DBw+y2nipfLDf76P6uRNjzNLSEs+IVev3+8ToR44c8X1/eXm5VCqpsxJFEUhANpvlzvHY+JN6lITU6XQaw2yMSafTpVJpfX2d/c1kMnEct1qtXq/X7XaLxWK9Xj916tT111+PzTh16hT4yuu
"text/plain": [
"<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=630x640>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-03-08 13:22:42 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000189780.jpg -> data/test_imgs/000000189780.jpg\n",
"2023-03-08 13:22:42 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000183602.jpg -> data/test_imgs/000000183602.jpg\n",
"2023-03-08 13:22:42 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000225392.jpg -> data/test_imgs/000000225392.jpg\n",
"2023-03-08 13:22:42 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000179926.jpg -> data/test_imgs/000000179926.jpg\n",
"2023-03-08 13:22:42 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000045537.jpg -> data/test_imgs/000000045537.jpg\n",
"2023-03-08 13:22:42 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000479125.jpg -> data/test_imgs/000000479125.jpg\n",
"2023-03-08 13:22:42 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000410350.jpg -> data/test_imgs/000000410350.jpg\n",
"2023-03-08 13:22:42 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000398753.jpg -> data/test_imgs/000000398753.jpg\n",
"2023-03-08 13:22:42 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000264309.jpg -> data/test_imgs/000000264309.jpg\n",
"2023-03-08 13:22:42 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000300198.jpg -> data/test_imgs/000000300198.jpg\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"loading annotations into memory...\n",
"Done (t=10.16s)\n",
"creating index...\n",
"index created!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 118287/118287 [00:09<00:00, 12374.62it/s]\n",
"100%|██████████| 342772/342772 [00:01<00:00, 261823.19it/s]\n",
"2023-03-08 13:23:03 suspicion __main__[3180558] INFO Skipped 103395 hallucinations or removals\n",
"2023-03-08 13:23:03 suspicion __main__[3180558] INFO Skipped 106622 annotations with small nr of keypoints\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=630x640>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-03-08 13:23:04 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000189780.jpg -> data/test_imgs/000000189780.jpg\n",
"2023-03-08 13:23:04 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000183602.jpg -> data/test_imgs/000000183602.jpg\n",
"2023-03-08 13:23:04 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000143482.jpg -> data/test_imgs/000000143482.jpg\n",
"2023-03-08 13:23:04 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000303520.jpg -> data/test_imgs/000000303520.jpg\n",
"2023-03-08 13:23:04 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000497312.jpg -> data/test_imgs/000000497312.jpg\n",
"2023-03-08 13:23:04 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000187435.jpg -> data/test_imgs/000000187435.jpg\n",
"2023-03-08 13:23:04 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000225392.jpg -> data/test_imgs/000000225392.jpg\n",
"2023-03-08 13:23:04 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000479125.jpg -> data/test_imgs/000000479125.jpg\n",
"2023-03-08 13:23:04 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000179926.jpg -> data/test_imgs/000000179926.jpg\n",
"2023-03-08 13:23:04 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000045537.jpg -> data/test_imgs/000000045537.jpg\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"loading annotations into memory...\n",
"Done (t=9.26s)\n",
"creating index...\n",
"index created!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 118287/118287 [00:10<00:00, 11191.88it/s]\n",
"100%|██████████| 343968/343968 [00:01<00:00, 235993.38it/s]\n",
"2023-03-08 13:23:25 suspicion __main__[3180558] INFO Skipped 104021 hallucinations or removals\n",
"2023-03-08 13:23:25 suspicion __main__[3180558] INFO Skipped 107046 annotations with small nr of keypoints\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=630x640>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-03-08 13:23:26 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000189780.jpg -> data/test_imgs/000000189780.jpg\n",
"2023-03-08 13:23:26 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000183602.jpg -> data/test_imgs/000000183602.jpg\n",
"2023-03-08 13:23:26 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000523173.jpg -> data/test_imgs/000000523173.jpg\n",
"2023-03-08 13:23:26 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000143482.jpg -> data/test_imgs/000000143482.jpg\n",
"2023-03-08 13:23:26 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000225392.jpg -> data/test_imgs/000000225392.jpg\n",
"2023-03-08 13:23:26 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000479125.jpg -> data/test_imgs/000000479125.jpg\n",
"2023-03-08 13:23:26 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000179926.jpg -> data/test_imgs/000000179926.jpg\n",
"2023-03-08 13:23:26 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000187435.jpg -> data/test_imgs/000000187435.jpg\n",
"2023-03-08 13:23:26 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000465404.jpg -> data/test_imgs/000000465404.jpg\n",
"2023-03-08 13:23:26 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000090324.jpg -> data/test_imgs/000000090324.jpg\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"loading annotations into memory...\n",
"Done (t=9.46s)\n",
"creating index...\n",
"index created!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 118287/118287 [00:09<00:00, 12689.26it/s]\n",
"100%|██████████| 345965/345965 [00:02<00:00, 143958.13it/s]\n",
"2023-03-08 13:23:47 suspicion __main__[3180558] INFO Skipped 104710 hallucinations or removals\n",
"2023-03-08 13:23:47 suspicion __main__[3180558] INFO Skipped 107645 annotations with small nr of keypoints\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAKACAIAAACe/aKqAAAA3WlDQ1BJQ0MgUHJvZmlsZQAAeJxjYGDscXRxcmUSYGDIzSspcg9yjIyIjFJgP8/AxiDEwMtgwaCQmFxc4BgQ4MMABHn5eakMGODbNQZGEH1ZF2QWpjxewJpcUFQCpA8AsUpKanEykH4CxAXlJQVAccYQIFskKRvMzgCxs0OCnIHsGiCbryS1AqSXQSNZU8HQ0tJSwTElPylVIbiyuCQ1t1jBMy9ZjwFqJgiIuhf1FGcn5iQq6CqkJ+bmJioY6liQ6F6CABR+ENa3nZBwufQdIYYAyaVFZVAmI+NZBgYAx5M1zbYAY8sAAQAASURBVHicjP15kOVndd+PP5/lbn3Xvrf3ZVZptKN9FwIhgTBiMRgs7EqsYJu4bEPFSVU2J8Epf8vGSaVciU3hxHYMMZgYIoxBrBJgCQSS0EgarbNPz/S+3bVv3/Wz/P54cY6fnrGrfvePqZ7uez/383me85zlfd7nHOfGG28sFArNZvPll18uFou9Xm9+fn5sbKxUKj333HMzMzOlUun111/PZDKu66bT6TiOPc/b2dkJw3BkZCSVSiWTyWaz2Wq1+Gu/308mk8PhMI7jXC4XRVG32x0Oh8Ph0PO8kZGRIAgcxwnDMAxD13W5YCKR2N3dTSaTxpg4jqMocl03DEPP8waDwXA4zGazvu93Op3rr7/+woUL3W53cnJyeXk5n89zteFwWKlU4jje2trK5/OtVuuyyy7b2dkZDAbcoe/7g8FA37x///7V1dUgCFKpVBzHcRwHQeB5nuu6/JBIJPhsPp/vdrtxHBtjuIfx8XGW5brrrvv93//9n//5n08kEul0empqand31/f9VCq1sbExGAwmJycbjUapVOKp2+12IpHwfX9kZGR3dzebzcZxXKvVut1uPp8fGxsbDAY7OzvGmFKp5DhOq9VKJBKJRKLb7Waz2Xq9HgRBMpl0HCeKoiiK2u12v9/P5/PJZDKKomQymUwm4zje3t72ff+yyy7rdDrb29uJROLUqVOf/vSnH3nkkf/9v//3H/7hHxYKhc3NTd/3u92u53lBEERRNDk5OTc3l8lk3njjjW63y/qzGsaYfr+fTqd7vZ7v++l0mrU6fPhwr9c7ffp0Mpk8dOjQ8ePHPc+75ZZbfvCDH+Tz+TAMubFisdhsNoMgyGazu7u7nuelUilkwBjDwhpjEokE8uM4Dj/X6/V0Ol2pVBKJRKPRGB8f73a7IyMjjuPMz88vLy8fOHDg6NGjqVQKASsWi4VCYWdnZ3t7u9VqZTIZ1opfquDp73k03/cTiUQcx9zt+vq667oIpOu6bNPo6GgURYPBII7jRCJRKBQWFxcR10QikUwme71eNpvl9lzX9TzP8zzHcXZ3d4fy6vf709PTW1tbuVxud3c3l8u12+2RkZFGozEyMjI5OTkcDjkUvu/n8/nBYJDNZvv9PkfJvmwYhlEUZTKZRCKhCxgEQSaTGRkZmZ6eXlhYcBwnjmPHcbgrLhtFURAEnCnHcTY2Nh588MGf/dmf/c3f/M1sNjsyMhKGIVLnOE4QBJz0fr+/u7u7u7t7+PDh7e3tH/3oRw899BBX27dv39bWFjvrOE4ymez3+67rsomdTqdQKHD0+CWL7DgOt40gJRIJ1rzb7SL/zWYTteB5HpvLyWUX6vV6KpWKoqjVag0Gg8FggMCcOHHCGDM1NVWtVsvlcjqdzmazjUbD9/1sNnvq1Kn5+fkwDE+fPh0EwV133XXu3Llz585VKpXJycl2u33q1KkjR45ks9mtra1Wq3XNNddUKpV2u53JZDgpbCJ3zmMaY6IoKpVKw+GQ41+pVMIw7PV6IyMjnU4njuPBYJBKpRzH4Z45p2hUz/N839/d3XVdN5fLDQaDH/3oR9ddd91VV101GAxYMZaL1WbfE4lEKpVC6w6HQzbLGMM3sp4c6l6vh2AgOSiifr/PkqbTaXYtlUp1u91EIsExQbCR9sFgwJqjsQeDged5mUym1+vt7u5ub29HUfTGG28Mh8Orr7660WgsLCyMjo4iPHyLMabX62FoPM+Loggln06nWUNVMmEYoo2NMUgvd8It8Rs+y3/5qyrnZDLJQXBdFwuCtAdB4LpuFEWcL9QOB+0f/CJuyXEc/ZN+F2IchqH9Tg6m7/voRtd1h8MhYukPBoOzZ8/edNNNi4uL9Xo9mUyeO3cOu3jkyJGlpaVz584Vi8XhcBiGYafTyWaziURiZGSEc+J53vLyMgeSA2CM6Xa7fHG32+UJOQC+77M6qFEWmmcYDAbcKP9FlI0xCBkGnr+iN+v1OlKLDCHonU6HT7FtZ8+enZiY6PV6m5ubY2Nj3W632Wwmk8kgCKampur1eqfTQVl3Oh1VsuxKKpXifjKZDMceaUD7h2HYaDSMMXNzc5/4xCcwcu12+/Tp057nqfQkEgnP87rdLh9H6HkQFGiv1xsMBrlcbmNjo9frDYdDvJNUKtXv9/v9PsZ1e3s7CAIkSdUNJjaVSnU6nWazmUql0uk0MmSMKRaL/X5/cXExm82mUqlms5nJZD796U//3M/93C233JJMJsMwLJVKjUaj3++HYVgsFg8ePFitVs+cOXPgwIFarcZtsCB8O+eT+89msxsbG77vP/300+zCcDh86aWXOp3O3Xff/dprr4VhiCZCUhcXF9Ep/BKHBgHgyt1ul+OhizAYDEZGRvihVCqhX1BhzWZzZGTk5MmTvu9fccUVr7/++tjYmOu6hUIBCZmZmeHRCoUCC9VoNFKpVK1WwwJtb28Xi0XkM5VK+b7PIceKpNNpx3FyuRxi3Ol02u325uYmtoeD1Gg00DXZbLbT6fR6PZ4ikUhw/pvNZrvdHg6Hejg5e/V6HYE3xmxtbWEm0VwYSBSoKkfUAbqVb0wkErlcDtckkUiw43wklUr1er0bbrjh3LlzOzs7uVwO+4qd5gShsvGWcA3vueeeZ555pl6vz83NsSlYRA411+TAIrrcYa/XGx8fz2QyS0tLqVSq3W5z2DlBWOUwDLPZLOKhQjsYDFgxtFWtVkPj81fHcdDsunRRFGHPXnnllcFgcNddd3W73WPHjuXz+XvvvXdzc3Nra2tycnJ8fHxrayuO42KxeP3117/22mvpdHp0dPTVV1/N5XJooZ2dnV6vt7a2ls1mP/zhD1955ZWu666srBSLxenp6Z2dnQsXLhw6dGhsbGx1dbVer9900025XO7kyZNPPvnkI488gobBz8YYoEY54L1eD4fp6NGj9Xr93nvvbTQarusiZthRnj0Mw52dHZaaXZ6amnJdt91ub21tLS4uHjx48PTp07yHPRodHeUwjo6OsvWq91g6XPZms8mdIBKDwWB0dJQzxaUQxVwu12q1OGie56FquDestYooKhq3oNlscmB7vR7nhZih0Wi0Wq3JyUnHcdbX1/GW+DqEE1PkeR4BQBAE/KbT6SBd3LNt6viBFyrC/iWCYYzB8eLEoSv4K64bGhiHhvfv7u6ih1UFsYYqZkEQ+L6vrr9+qVpf28CXSiVkG7+QHzBMekh9XNQf/ehHV1999fr6+vr6eiqVWl5enpiYQDL4AiwTJwE9i5tGpMJFWHecCHVJWDh+5syw1phnXR3UFq4B6ubSZ0OLnTt37m1ve5u6rv1+H8dNfaVkMknga4xZXFwsFAr5fB5hJRTgyhrXdrtdVpagja/DZUMQWTL0EefqwoUL+/btm5yc/N73vtfr9crlcrPZNMZkMhkWJ5/Pdzod7qfdbo+Pj2Ny9KFWVlaSyST33Gw2R0dHq9VqvV6fnJzM5/PD4bDX6/V6PU4jsSDRLQui/2azWaz7zs4OBwnZTafTIyMjURQtLy9jGlOp1CuvvPLss8/ec889b33rWz/1qU/t27cvmUyOjo5WKpVCoXDixInt7e2DBw+y2nipfLDf76P6uRNjzNLSEs+IVev3+8ToR44c8X1/eXm5VCqpsxJFEUhANpvlzvHY+JN6lITU6XQaw2yMSafTpVJpfX2d/c1kMnEct1qtXq/X7XaLxWK9Xj916tT111+PzTh16hT4yuu
"text/plain": [
"<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=630x640>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-03-08 13:23:48 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000189780.jpg -> data/test_imgs/000000189780.jpg\n",
"2023-03-08 13:23:48 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000523173.jpg -> data/test_imgs/000000523173.jpg\n",
"2023-03-08 13:23:48 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000183602.jpg -> data/test_imgs/000000183602.jpg\n",
"2023-03-08 13:23:48 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000225392.jpg -> data/test_imgs/000000225392.jpg\n",
"2023-03-08 13:23:48 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000479125.jpg -> data/test_imgs/000000479125.jpg\n",
"2023-03-08 13:23:48 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000187435.jpg -> data/test_imgs/000000187435.jpg\n",
"2023-03-08 13:23:48 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000337976.jpg -> data/test_imgs/000000337976.jpg\n",
"2023-03-08 13:23:48 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000179926.jpg -> data/test_imgs/000000179926.jpg\n",
"2023-03-08 13:23:48 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000443653.jpg -> data/test_imgs/000000443653.jpg\n",
"2023-03-08 13:23:48 suspicion __main__[3180558] INFO Copy data/coco/train2017/000000532644.jpg -> data/test_imgs/000000532644.jpg\n"
]
}
],
"source": [
"i = 0\n",
"while True:\n",
" i+=1\n",
" iteration = Iteration(i)\n",
" if not iteration.merged_results_path('train').exists():\n",
" break\n",
" results = find_most_different_annotations(coco_orig, iteration, 10)\n",
" copy_annotation_matches_to_path(Path('./data/test_imgs/'), results)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000189780.jpg -> data/test_imgs/000000189780.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000337976.jpg -> data/test_imgs/000000337976.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000225645.jpg -> data/test_imgs/000000225645.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000225392.jpg -> data/test_imgs/000000225392.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000008285.jpg -> data/test_imgs/000000008285.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000195826.jpg -> data/test_imgs/000000195826.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000179926.jpg -> data/test_imgs/000000179926.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000045537.jpg -> data/test_imgs/000000045537.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000093133.jpg -> data/test_imgs/000000093133.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000479125.jpg -> data/test_imgs/000000479125.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000300198.jpg -> data/test_imgs/000000300198.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000523173.jpg -> data/test_imgs/000000523173.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000209126.jpg -> data/test_imgs/000000209126.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000398753.jpg -> data/test_imgs/000000398753.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000523173.jpg -> data/test_imgs/000000523173.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000532644.jpg -> data/test_imgs/000000532644.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000381433.jpg -> data/test_imgs/000000381433.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000340247.jpg -> data/test_imgs/000000340247.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000057641.jpg -> data/test_imgs/000000057641.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000289752.jpg -> data/test_imgs/000000289752.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000160255.jpg -> data/test_imgs/000000160255.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000233817.jpg -> data/test_imgs/000000233817.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000006140.jpg -> data/test_imgs/000000006140.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000423349.jpg -> data/test_imgs/000000423349.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000264309.jpg -> data/test_imgs/000000264309.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000525163.jpg -> data/test_imgs/000000525163.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000069809.jpg -> data/test_imgs/000000069809.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000314849.jpg -> data/test_imgs/000000314849.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000410350.jpg -> data/test_imgs/000000410350.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000255910.jpg -> data/test_imgs/000000255910.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000116326.jpg -> data/test_imgs/000000116326.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000181118.jpg -> data/test_imgs/000000181118.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000183602.jpg -> data/test_imgs/000000183602.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000300198.jpg -> data/test_imgs/000000300198.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000539180.jpg -> data/test_imgs/000000539180.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000566051.jpg -> data/test_imgs/000000566051.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000315092.jpg -> data/test_imgs/000000315092.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000011265.jpg -> data/test_imgs/000000011265.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000477149.jpg -> data/test_imgs/000000477149.jpg\n",
"2023-03-08 12:23:41 suspicion __main__[3131215] INFO Copy data/coco/train2017/000000355786.jpg -> data/test_imgs/000000355786.jpg\n"
]
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def main():\n",
" # original_path = Path('data/coco/annotations/person_keypoints_train2017.json')\n",
" \n",
" \n",
" # tmp_name = Path('/tmp/orig.pcl')\n",
" # if tmp_name.exists():\n",
" # logger.info(f\"load pickle {tmp_name}\")\n",
" # with tmp_name.open('rb') as fp:\n",
" # original_annotations = pickle.load(fp)\n",
" # else:\n",
" # logger.info(f\"load {original_path}\")\n",
" # with original_path.open('r') as fp:\n",
" # original_data = json.load(fp)\n",
"\n",
" # logger.info(f\"\\tparse keypoints to numpy\")\n",
"\n",
" # original_annotations = {}\n",
" # for ann in tqdm.tqdm(original_data['annotations']):\n",
" # if ann['image_id'] not in original_annotations:\n",
" # original_annotations[ann['image_id']] = []\n",
" # ann['keypoints'] = np.array(ann['keypoints'])\n",
"\n",
" # original_annotations[ann['image_id']].append(ann)\n",
"\n",
" # with tmp_name.open('wb') as fp:\n",
" # pickle.dump(original_annotations, fp)\n",
" \n",
" i = 0\n",
" annotation_losses = {}\n",
" while True:\n",
" i+=1\n",
" # iteration = Iteration(i)\n",
" # annotation_losses[iteration.nr] = []\n",
" # path = iteration.merged_results_path('train')\n",
" # logger.info(f\"load {path}\")\n",
" # with path.open('r') as fp:\n",
" # iter_data = json.load(fp)\n",
"\n",
" # iteration_annotations = {}\n",
" # matched_annotations = []\n",
" # for ann in tqdm.tqdm(iter_data['annotations']):\n",
" # # assert iter_data['images'][ann['image_id']]['file_name'] == original_data['images'][ann['image_id']]['file_name']\n",
" # if ann['image_id'] not in iteration_annotations:\n",
" # iteration_annotations[ann['image_id']] = []\n",
" \n",
" # iteration_annotations[ann['image_id']].append(ann)\n",
"\n",
" # for image_id, annotations in tqdm.tqdm(original_annotations.items()):\n",
" # if image_id not in iteration_annotations:\n",
" # img_annotations = []\n",
" # else:\n",
" # img_annotations = iteration_annotations[image_id]\n",
"\n",
" # matched_annotations.extend([(image_id, ann1, ann2) for ann1, ann2 in match_annotations(annotations, img_annotations)])\n",
" \n",
" # # clear some memory\n",
" # iteration_annotations = None\n",
"\n",
" # match_losses = []\n",
" # skipped = 0\n",
" # for image_id, ann1, ann2 in tqdm.tqdm(matched_annotations):\n",
" # if ann1 is None or ann2 is None:\n",
" # # todo: we later want to store these somewhere else\n",
" # logger.debug(f'skipping hallucination or removal in {image_id}')\n",
" # skipped+=1\n",
" # continue\n",
"\n",
" # match_losses.append((image_id, diff_keypoints(ann1, ann2), ann1, ann2))\n",
" \n",
" logger.info(f'Skipped {skipped} hallucinations or removals')\n",
"\n",
" largest = heapq.nlargest(20, match_losses, key=lambda ml: ml[1])\n",
" with open(f'diffs_iter{iteration.nr}.json', 'w') as fp:\n",
" for j, large in enumerate(largest):\n",
" largest[j][2]['keypoints'] = large[2]['keypoints'].tolist() if type(large[2]['keypoints']) == np.ndarray else large[2]['keypoints']\n",
" largest[j][3]['keypoints'] = large[3]['keypoints'].tolist() if type(large[3]['keypoints']) == np.ndarray else large[3]['keypoints']\n",
"\n",
" json.dump(largest, fp)\n",
" \n",
" filenames = [(iter_data['images'][img_id], diff, ann1, ann2) for img_id, diff, ann1, ann2 in largest]\n",
" with open(f'diffs_iter{iteration.nr}_files.json', 'w') as fp:\n",
"\n",
" for j, fn in enumerate(filenames):\n",
" filenames[j][2]['keypoints'] = fn[2]['keypoints'].tolist()\n",
" filenames[j][3]['keypoints'] = fn[3]['keypoints'].tolist()\n",
" json.dump(filenames, fp)\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"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.10.4"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "87b53699fddc42f2422085cd66d337a22277b6b5824c9db1afd4c61728f7b588"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}