master-thesis/classification/evaluation/eval-train-yolo.ipynb

622 lines
93 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "c0727442",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"import numpy as np\n",
"import seaborn as sns\n",
"from helpers import set_size"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "38305602",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>epoch</th>\n",
" <th>mem</th>\n",
" <th>train/box_loss</th>\n",
" <th>train/obj_loss</th>\n",
" <th>train/cls_loss</th>\n",
" <th>total</th>\n",
" <th>target</th>\n",
" <th>img_size</th>\n",
" <th>precision</th>\n",
" <th>recall</th>\n",
" <th>mAP_0.5</th>\n",
" <th>mAP_0.5:0.95</th>\n",
" <th>val/box_loss</th>\n",
" <th>val/obj_loss</th>\n",
" <th>val/cls_loss</th>\n",
" <th>f1</th>\n",
" <th>fitness</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0/299</td>\n",
" <td>7.49G</td>\n",
" <td>0.04468</td>\n",
" <td>0.01796</td>\n",
" <td>0</td>\n",
" <td>0.06264</td>\n",
" <td>87</td>\n",
" <td>640</td>\n",
" <td>0.7777</td>\n",
" <td>0.6004</td>\n",
" <td>0.7016</td>\n",
" <td>0.5741</td>\n",
" <td>0.04719</td>\n",
" <td>0.007429</td>\n",
" <td>0</td>\n",
" <td>0.677645</td>\n",
" <td>0.58685</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1/299</td>\n",
" <td>5.66G</td>\n",
" <td>0.03713</td>\n",
" <td>0.01763</td>\n",
" <td>0</td>\n",
" <td>0.05476</td>\n",
" <td>87</td>\n",
" <td>640</td>\n",
" <td>0.7596</td>\n",
" <td>0.5931</td>\n",
" <td>0.6851</td>\n",
" <td>0.5284</td>\n",
" <td>0.04633</td>\n",
" <td>0.007840</td>\n",
" <td>0</td>\n",
" <td>0.666103</td>\n",
" <td>0.54407</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2/299</td>\n",
" <td>5.9G</td>\n",
" <td>0.03728</td>\n",
" <td>0.01787</td>\n",
" <td>0</td>\n",
" <td>0.05515</td>\n",
" <td>64</td>\n",
" <td>640</td>\n",
" <td>0.7899</td>\n",
" <td>0.5904</td>\n",
" <td>0.6901</td>\n",
" <td>0.5618</td>\n",
" <td>0.04848</td>\n",
" <td>0.007925</td>\n",
" <td>0</td>\n",
" <td>0.675733</td>\n",
" <td>0.57463</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3/299</td>\n",
" <td>5.87G</td>\n",
" <td>0.03721</td>\n",
" <td>0.01785</td>\n",
" <td>0</td>\n",
" <td>0.05507</td>\n",
" <td>128</td>\n",
" <td>640</td>\n",
" <td>0.7593</td>\n",
" <td>0.5991</td>\n",
" <td>0.6911</td>\n",
" <td>0.5547</td>\n",
" <td>0.04522</td>\n",
" <td>0.007872</td>\n",
" <td>0</td>\n",
" <td>0.669754</td>\n",
" <td>0.56834</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4/299</td>\n",
" <td>5.9G</td>\n",
" <td>0.03695</td>\n",
" <td>0.01766</td>\n",
" <td>0</td>\n",
" <td>0.05461</td>\n",
" <td>39</td>\n",
" <td>640</td>\n",
" <td>0.7454</td>\n",
" <td>0.6202</td>\n",
" <td>0.7018</td>\n",
" <td>0.5798</td>\n",
" <td>0.04608</td>\n",
" <td>0.007888</td>\n",
" <td>0</td>\n",
" <td>0.677061</td>\n",
" <td>0.59200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>295</th>\n",
" <td>295/299</td>\n",
" <td>5.91G</td>\n",
" <td>0.02877</td>\n",
" <td>0.01319</td>\n",
" <td>0</td>\n",
" <td>0.04196</td>\n",
" <td>46</td>\n",
" <td>640</td>\n",
" <td>0.6611</td>\n",
" <td>0.6464</td>\n",
" <td>0.6605</td>\n",
" <td>0.5391</td>\n",
" <td>0.04283</td>\n",
" <td>0.009531</td>\n",
" <td>0</td>\n",
" <td>0.653667</td>\n",
" <td>0.55124</td>\n",
" </tr>\n",
" <tr>\n",
" <th>296</th>\n",
" <td>296/299</td>\n",
" <td>5.86G</td>\n",
" <td>0.02869</td>\n",
" <td>0.01313</td>\n",
" <td>0</td>\n",
" <td>0.04182</td>\n",
" <td>35</td>\n",
" <td>640</td>\n",
" <td>0.6792</td>\n",
" <td>0.6322</td>\n",
" <td>0.6616</td>\n",
" <td>0.5396</td>\n",
" <td>0.04283</td>\n",
" <td>0.009532</td>\n",
" <td>0</td>\n",
" <td>0.654858</td>\n",
" <td>0.55180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>297</th>\n",
" <td>297/299</td>\n",
" <td>5.91G</td>\n",
" <td>0.02872</td>\n",
" <td>0.01319</td>\n",
" <td>0</td>\n",
" <td>0.04191</td>\n",
" <td>98</td>\n",
" <td>640</td>\n",
" <td>0.7010</td>\n",
" <td>0.6163</td>\n",
" <td>0.6619</td>\n",
" <td>0.5394</td>\n",
" <td>0.04282</td>\n",
" <td>0.009539</td>\n",
" <td>0</td>\n",
" <td>0.655927</td>\n",
" <td>0.55165</td>\n",
" </tr>\n",
" <tr>\n",
" <th>298</th>\n",
" <td>298/299</td>\n",
" <td>5.92G</td>\n",
" <td>0.02870</td>\n",
" <td>0.01315</td>\n",
" <td>0</td>\n",
" <td>0.04185</td>\n",
" <td>47</td>\n",
" <td>640</td>\n",
" <td>0.6962</td>\n",
" <td>0.6193</td>\n",
" <td>0.6637</td>\n",
" <td>0.5406</td>\n",
" <td>0.04284</td>\n",
" <td>0.009546</td>\n",
" <td>0</td>\n",
" <td>0.655502</td>\n",
" <td>0.55291</td>\n",
" </tr>\n",
" <tr>\n",
" <th>299</th>\n",
" <td>299/299</td>\n",
" <td>5.9G</td>\n",
" <td>0.02875</td>\n",
" <td>0.01319</td>\n",
" <td>0</td>\n",
" <td>0.04195</td>\n",
" <td>44</td>\n",
" <td>640</td>\n",
" <td>0.6892</td>\n",
" <td>0.6242</td>\n",
" <td>0.6642</td>\n",
" <td>0.5413</td>\n",
" <td>0.04285</td>\n",
" <td>0.009554</td>\n",
" <td>0</td>\n",
" <td>0.655092</td>\n",
" <td>0.55359</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>300 rows × 17 columns</p>\n",
"</div>"
],
"text/plain": [
" epoch mem train/box_loss train/obj_loss train/cls_loss total \\\n",
"0 0/299 7.49G 0.04468 0.01796 0 0.06264 \n",
"1 1/299 5.66G 0.03713 0.01763 0 0.05476 \n",
"2 2/299 5.9G 0.03728 0.01787 0 0.05515 \n",
"3 3/299 5.87G 0.03721 0.01785 0 0.05507 \n",
"4 4/299 5.9G 0.03695 0.01766 0 0.05461 \n",
".. ... ... ... ... ... ... \n",
"295 295/299 5.91G 0.02877 0.01319 0 0.04196 \n",
"296 296/299 5.86G 0.02869 0.01313 0 0.04182 \n",
"297 297/299 5.91G 0.02872 0.01319 0 0.04191 \n",
"298 298/299 5.92G 0.02870 0.01315 0 0.04185 \n",
"299 299/299 5.9G 0.02875 0.01319 0 0.04195 \n",
"\n",
" target img_size precision recall mAP_0.5 mAP_0.5:0.95 val/box_loss \\\n",
"0 87 640 0.7777 0.6004 0.7016 0.5741 0.04719 \n",
"1 87 640 0.7596 0.5931 0.6851 0.5284 0.04633 \n",
"2 64 640 0.7899 0.5904 0.6901 0.5618 0.04848 \n",
"3 128 640 0.7593 0.5991 0.6911 0.5547 0.04522 \n",
"4 39 640 0.7454 0.6202 0.7018 0.5798 0.04608 \n",
".. ... ... ... ... ... ... ... \n",
"295 46 640 0.6611 0.6464 0.6605 0.5391 0.04283 \n",
"296 35 640 0.6792 0.6322 0.6616 0.5396 0.04283 \n",
"297 98 640 0.7010 0.6163 0.6619 0.5394 0.04282 \n",
"298 47 640 0.6962 0.6193 0.6637 0.5406 0.04284 \n",
"299 44 640 0.6892 0.6242 0.6642 0.5413 0.04285 \n",
"\n",
" val/obj_loss val/cls_loss f1 fitness \n",
"0 0.007429 0 0.677645 0.58685 \n",
"1 0.007840 0 0.666103 0.54407 \n",
"2 0.007925 0 0.675733 0.57463 \n",
"3 0.007872 0 0.669754 0.56834 \n",
"4 0.007888 0 0.677061 0.59200 \n",
".. ... ... ... ... \n",
"295 0.009531 0 0.653667 0.55124 \n",
"296 0.009532 0 0.654858 0.55180 \n",
"297 0.009539 0 0.655927 0.55165 \n",
"298 0.009546 0 0.655502 0.55291 \n",
"299 0.009554 0 0.655092 0.55359 \n",
"\n",
"[300 rows x 17 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../../classification/yolo-second-run/runs/train/yolov7-custom7/results.txt',\n",
" delimiter=',',\n",
" names=['epoch', 'mem', 'train/box_loss', 'train/obj_loss', 'train/cls_loss', 'total', 'target', 'img_size', 'precision', 'recall', 'mAP_0.5', 'mAP_0.5:0.95', 'val/box_loss', 'val/obj_loss', 'val/cls_loss'])\n",
"df['f1'] = 2 * np.divide(df['precision'] * df['recall'],\n",
" df['precision'] + df['recall'])\n",
"df['fitness'] = 0.1 * df['mAP_0.5'] + 0.9 * df['mAP_0.5:0.95']\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "f2a956f0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>epoch</th>\n",
" <th>metric</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>precision</td>\n",
" <td>0.7777</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>precision</td>\n",
" <td>0.7596</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>precision</td>\n",
" <td>0.7899</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>precision</td>\n",
" <td>0.7593</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>precision</td>\n",
" <td>0.7454</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>595</th>\n",
" <td>295</td>\n",
" <td>recall</td>\n",
" <td>0.6464</td>\n",
" </tr>\n",
" <tr>\n",
" <th>596</th>\n",
" <td>296</td>\n",
" <td>recall</td>\n",
" <td>0.6322</td>\n",
" </tr>\n",
" <tr>\n",
" <th>597</th>\n",
" <td>297</td>\n",
" <td>recall</td>\n",
" <td>0.6163</td>\n",
" </tr>\n",
" <tr>\n",
" <th>598</th>\n",
" <td>298</td>\n",
" <td>recall</td>\n",
" <td>0.6193</td>\n",
" </tr>\n",
" <tr>\n",
" <th>599</th>\n",
" <td>299</td>\n",
" <td>recall</td>\n",
" <td>0.6242</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>600 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" epoch metric value\n",
"0 0 precision 0.7777\n",
"1 1 precision 0.7596\n",
"2 2 precision 0.7899\n",
"3 3 precision 0.7593\n",
"4 4 precision 0.7454\n",
".. ... ... ...\n",
"595 295 recall 0.6464\n",
"596 296 recall 0.6322\n",
"597 297 recall 0.6163\n",
"598 298 recall 0.6193\n",
"599 299 recall 0.6242\n",
"\n",
"[600 rows x 3 columns]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = df.loc[:,~df.columns.isin(['mem', 'train/cls_loss', 'total', 'target', 'img_size', 'val/cls_loss'])]\n",
"df['epoch'] = df.index\n",
"df_aranged = df[['epoch', 'precision', 'recall']]\n",
"df_aranged = df_aranged.melt(id_vars=['epoch'], var_name='metric', value_name='value') # df is your dataframe\n",
"df_aranged"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "e04f6713",
"metadata": {},
"outputs": [],
"source": [
"width = 418\n",
"sns.set_theme(style='whitegrid',\n",
" rc={'text.usetex': True, 'font.family': 'serif', 'axes.labelsize': 10,\n",
" 'font.size': 10, 'legend.fontsize': 8,\n",
" 'xtick.labelsize': 8, 'ytick.labelsize': 8})"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "65aca46f",
"metadata": {},
"outputs": [],
"source": [
"fig_save_dir = '../../thesis/graphics/'"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "4a69582e",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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/bfk5uaKiMjNmzclMzNTKScrK0s6deokUVFRxarT3dSrV08AyF9//aU8t3LlSlGpVHLz5s0C10lMTJTr16/LpEmTxMvLS5555hkBINu2bZPp06fLxYsXy6RuZrNZsrKyCnwtLS1Nfv75Z6lSpYps3rxZREQiIyNlzpw5snr1ajGbzQWuFxoaKgDk3LlzYjab5fPPP5c2bdpIenq6XLhwoVj127p1q4waNUpSUlLyvTZx4kRxc3OT1157TdLT06VJkybi6ekp06dPF7PZLAcPHpRff/21WNuzxc2bN2Xjxo3K4xs3buRbxtbvO3s2cOBAmTRpkmRlZUl8fHyBy1y/fl169+4thw8fFhGRf/75R3766SdZtWqVjBw5UkTyviceeeQR8ff3L3A/KC6z2Sw//PCDvPjii9KhQwer13bu3CkAJDIyUvz9/eW5554TEZG//vpLAMjBgwdLvX0RkXfeeUe8vb3l4sWLcuHCBVmxYoWI5LVHVlaWpKWlyQsvvCAvvfSS5OTkSP369aV27dpy4MAByc7OFo1GI1999VW+cstrvytOPqiUv9yVJeCYTCZZtmyZDBs2LN9rubm5cvToUcnOzi6vahapsPonJiYKAFmwYIGsX79eRowYIbt27ZLjx4/L1atXS71NS9vduHFDTp06pbzWsWNHefnll2XIkCHKhzU5OVm++OILMRgMRZZd0I9UamqqvP/++/L7779bPZ+bmys7duyQgIAAiY2NlVWrVomDg4NERETIqFGjRKVSydatW6VXr16ycOFCq7Jnz54tHTt2lEuXLsmBAwdEJC9MLFy4UA4dOlSidrnTRx99JABk/fr1ynNpaWmybt06cXd3l99++03Wr18vAKR3795y/PhxqVevnjzzzDNiMpnk999/l4yMDGnfvr3UrFlTzp49KxMmTJCdO3cWuL3k5ORCf+Rvd+HCBdm/f7/o9XoZM2aMaDQaGT9+vLRo0aLIdS9evCguLi7y6quvyrZt2+TPP/8ss4ATHx8vXbp0kTFjxhT4elpamnz55ZcCQJ566im5du2auLm5iaenpyxfvlxycnKslr9+/bps2bJFUlNTBYDMmjVLtmzZIgBk1KhRcuvWrWLXcePGjeLg4CCurq5y4sQJMZvNkpiYKL/99pukpKSITqdTlk1PT5fTp09LWlqa+Pv7CwDp1q2bLF26VN59912rcmNiYmTixImSkZFRrPqcPn1aPvnkEwEgzz77rGzbtk18fX3l6NGjVss96AHn1q1b4ubmJu+8844MGDBAHn/8casDIxGRuLg4adCggVSrVk3OnDkjIiJjxoyR5s2by2+//Wb1/XX+/Hnx9fWVjz/+uFT1SkxMlOeee04ASGhoqOzfv9/q9fT0dJk0aZK0aNFC6tSpI2fPnhWRvO+q6dOnFxrUimvatGl3fS+WOn7++edy/vx5eeWVV6w+871795b//Oc/+dZjwClEZQk4w4YNkxEjRihH4xaXL1+WOnXqCADlB7Ioubm5sn79ejlx4oSkpqaKiMipU6fkyJEjsmnTJsnKypLz58/L3r17Cw0hsbGxcu3aNWVdPz8/Wbt2rXJkuGHDBrlx44bs2rVL6tatK9evX5dvv/1WXFxcxNfXVwDIF198YVN9C2NpO71eLw8//LDUqlVLcnNzJSsrS27duqUcAahUKvnzzz9l3LhxAkDGjRtXaJnp6enSt29fadu2rdI2Fq+++qp4eHhIWFiYzJs3T+nh+PbbbwWAtG/fXv7++28BIE2bNlUC58mTJ5WelMIMHjxYHn74YTGbzbJly5Yy7XVasmRJvqMsS9slJSVJenq6JCcny/r166V27dqybNkyadGihbz00kvy66+/iqurqyxZskQuXbokLVq0kBUrVggAefLJJ5XysrOzZcqUKZKVlSUdO3aU9u3by6RJkwqt09dffy1fffWVmM1meeKJJ8TJyUneeustERGbf/AtX6qbNm2SunXrWgWc3NxcCQ0NlTlz5hS7vUaOHCm1atWSDz74QCZPnpzv9aioKNmxY4ecOHFCMjIyxGw2S1RUlNy4cUOOHDki27ZtU5ZNSEiQ5s2bS+3atSUlJUX2798vGRkZEhcXJ9OmTSt23W6XlJQk69atE5G8XlIAUr9+fUlPTy90ndmzZ8vPP/8sOTk58vnnnwsAGTBggIiIvPDCCwJA3njjjWIfLD377LOi0WhkypQp0qhRIzl79qy0bt1a6tWrZ/Udcvt+l5ubK2azWdatWycxMTElaAFrd37G/v33X3n//ffl9ddfl3nz5pW6/LIQFxcnzZo1k9OnT8vevXsFgKxatUq6dOkizz77rHz//fdy8+ZNeeWVV0Sv1yvrrV69WgCIWq3O17N74sQJMZlMkpiYWOJ6zZo1Szw8PGTYsGECQC5fvlzgcufPn5fk5GSr565fvy579+61aTvx8fHy6aefKj3Ftzt16pRVr3FBLl26JMePHy/09e+++04ee+yxfN8hDDiFqMiAc+vWLdm9e7cYDAbx9vaWd955R2rVqiU//PCDssy4cePE3d1dAMj8+fOV53/55Rd5/vnn8x1BiYhs375dGe4CIFevXpXXX39deXz48GGZOXOmABBXV1er4GQymeStt95Sjl7j4+PF0dFRWrRoITNmzBAASvf5hAkTRMS6NyQuLk5Onz4tDz30kPKDVtq2mzx5slStWlW2bt0qx48fFwDy+OOPS0pKimRmZsr06dPl7Nmzcu3aNfnwww9l5syZ+crKzc2Vixcvyu+//y5eXl6i0Wjk+PHj8sUXX8jChQvl77//loEDB8qKFStEp9MJANm4caNMnz5d4uLiZPfu3cqH9p9//in2kMOvv/4qAGTu3Lni7Owsc+fOLVXb3M5sNufrwi5sv7M8NplMYjabpUuXLvLUU08pXzyWcL1+/Xp55513lMdLliwRlUolhw8fll9//VU6d+4sPXv2lEuXLuUbqjh37pw0btxY+aK+ePGiGI3GEr+/5ORkqVevnkyfPl12794tR48elUOHDom7u7tUqVLFarhr3759RYbHXbt2yaZNm2TdunUCwOoIccuWLeLk5CQDBgyQtLQ0mThxogBQjmhHjx4tDRs2VPb5GTNmSIMGDeT06dNKXbt06SILFiywqZfLFjk5ObJs2TL54YcfitWDZTabJTw8XBk+fuedd2TlypWyc+dO+f77720u5+rVq+Lk5CRLliyxev7ixYsye/Zsqx+ztLQ00Wq10r17d7l27ZoMHDhQCd979uyx2ldOnDghe/bskdTU1Hz77+0Hebt375adO3fKa6+9JlOnThUREa1WK9WrV5fmzZtL586dRaPR2Px+bJWamiq//PJLsdbJycmx+rt/8skncvToUQkPD5e2bdsWGlD1er0sXLhQABTYw7Ft2zZxcXG560FuTEyMnD17VtLS0qx6u0VEHnnkERk4cKCkp6fLzJkzi/V5/Oyzz0SlUsmKFSvk8uXL8uKLLxbaS/7+++8LADGbzVY91N988434+/vL8OHDbd5uQSxtaxle3r17t4wdO1Zu3brFgFOQigo4ERER4ujoKF5eXpKUlCRdu3aV2NhYqVu3rnzwwQciknfU7O/v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ydlb2125cgV79uyBv78/ateuXa7bsre2u5fYdiXHtiu58mq7M2fO2LyszQFHo9EgLCxMeZyUlKQMRxmNRnh7ewPIm6vj7e0NjUYDnU4Hb2/vQoPQ3ahUKnh4eBR7veJwd3cv923YK7ZdydlL27m5uSn/3qv3Yy9tVxHYdiXHtiu5sm47W4engGIEHLVajV69eimngYeGhiqv9e/fH5s3b4bBYMC4ceOU541GI06dOmVzZYiIiIjKQrHm4BQ25LRjxw4AeWdO8bRwIiIiqmi8kjERERHZHQYcIiIisjsMOERERGR3GHCIiIjI7jDgEBERkd1hwCEiIiK7w4BDREREdocBh4iIiOwOAw4RERHZHQYcIiIisjsMOERERGR3GHCIiIjI7jDgEBERkd1hwCEiIiK7w4BDREREdocBh4iIiOwOAw4RERHZHQYcIiIisjsMOERERGR3GHCIiIjI7jDgEBERkd1hwCEiIiK7w4BDREREdocBh4iIiOwOAw4RERHZHQYcIiIisjsMOERERGR3GHCIiIjI7jDgEBERkd1hwCEiIiK7w4BDREREdocBh4iIiOwOAw4RERHZHQYcIiIisjsMOERERGR3GHCIiIjI7jDgEBERkd1hwCEiIiK7w4BDREREdocBh4iIiOwOAw4RERHZHQYcIiIisjsMOERERGR3GHCIiIjI7jDgEBERkd1hwCEiIiK7w4BDREREdsepOAtHR0cDAAwGA9RqNTQaTYmWISIiIipPNvfg6PV6aLVaBAUFITg4GOHh4SVahoiIiKi82RxwtFotvLy8lMdeXl7QarXFXoaIiIiovNk8RJWYmAhfX1/lsa+vL4xGY7GXsUVOTg5EBMeOHSv2urYQEQDA6dOnoVKpymUb9optV3L21nYmkwldunTB5cuXce3atXLdlr213b3Etis5tl3JlVfb5eTk2Fxesebg3MlgMJTJMneyVL68diiVSgUXF5dyKdvese1Kzt7azsnJCVWrVr0n27K3truX2HYlx7YrufJqO5VKVfYBx8/Pz6o3JjU1FWq1utjL2OLxxx8v9jpEREREFjbPwdFoNIiNjVUeJyUlKWdIWULN3ZYhIiIiuldUYhkos8Htp4D7+PggKCgIANCtWzds3rwZ3t7ehS5DREREdK8UK+AQERER3Q94JWMiIiKyOww4REREZHcYcIiIiMjuMOAQERGR3WHAISIiIrvDgENERER2hwGHiIiI7A4DDhEREdmdUt1s8350+5WW1Wo1byVRhLFjx2LkyJEAgMjISEyYMAEA27EgRqMRERERAICQkBDl+cLaim34fwprO+5/tomOjobBYIBOp0NQUFCR+xjb7/8U1nbc92wTHR0NtVqNuLg4AEBwcLDyPFDB+548QBITE+XDDz9UHr/66qsVWJv7Q79+/eSJJ56QV199VQwGg4iwHQsTFRUlc+bMkeXLlyvPFdZWbENrBbWdCPc/W8TFxUlUVJSIiBgMBnniiSdEhPueLQprOxHue7YwGAzSr18/5f8feughEak8+94DNUSl1Wrh5eWlPPby8oJWq63AGlV+oaGhOHjwIFatWgVvb28AbMfCBAUFwc/Pz+q5wtqKbWitoLYDuP/ZwmAwKO/f29sbPj4+0Ol03PdsUFjbAdz3bOHt7Y3NmzcDAPR6vdIbU1n2vQdqiCoxMRG+vr7KY19fX+VO6FQwy93hDQYDgLzuR7aj7QprK7ahbbj/FU2j0Vh18xsMBgQEBCAyMpL7XhEKazuA+15xREREYO/evVi0aBGAyvO990AFnIJYdl4qmGXcGci7a3zPnj0LXI7taLvC2optmB/3v+KZOnUqZs6cWejr3PcKd2fbcd+zXXBwMNRqNebOnYsZM2YUuExF7HsP1BDVnV3gqampUKvVFVSbyi86OhphYWHKY29vb+j1erZjMRTWVmzDonH/K57o6GhoNBoEBQUB4L5XHHe2Hfc921l6YDQaDaKioqDVaivNvvdABRyNRqN0OwJAUlLSAz8D/m7UajU6dOigPDYajQgICGA7FkNhbcU2LBr3P9tptVp4e3sjKCgIOp1OmQ/Bfa9oBbUd9z3bREREYNmyZcpjHx8f+Pj4VJp9TyUiUm6lV0K3n6Lm4+OjJHYqmKW9YmNjMWDAACVtsx3z02q12LBhA27evIng4GCro0Egf1uxDf9PUW3H/a9wer0e/fv3Vx4bjUacOnUKAPe9otjSdtz3Cmc0GpWAuHfvXvj6+iqXeagM+94DF3CIiIjI/j1QQ1RERET0YGDAISIiIrvDgENERER2hwGHiIiI7A4DDhEREdkdBhwiIiKyOww4RGQ3tFot+vfvj4iIiIquChFVMAYcIrIbGo0G7du3r+hqEFElwIBDRHbl9rsVE9GDiwGHiIiI7I5TRVeAiOyfVquFTqeDWq1GbGwsJkyYAK1Wi6lTpyo34TMYDNDpdBg/fjy8vb0BADqdDlqtFmq1Gnq9HkFBQco9gfR6PTZs2IBWrVrBYDCgZ8+eynqWe+To9Xrs3bsXixcvrrD3TkQVgwGHiMqVXq/H3LlzsXnzZgB5N9kLDw9HSEgIevToAV9fX6sb8Y0bNw6rVq1S1lu1apVSVv/+/bF69WoAwPDhw7F582Z4e3sjLCwMERERyo3+YmNjrW76p9PpEBAQcA/fNRFVNAYcIipXGzZsgI+PD7RarfJcbGys8v+WXhcACAoKwrhx42A0GrFhwwa0bNnSqqwGDRogKioKAKBWq5V1R44cabVcq1atlP/38vKCwWAouzdERPcFBhwiKnctW7aERqNRHgcHB5eqPKPRCC8vL+Xx7SGJiAjgJGMiKme9evVCTEyM1XO39+YYjUbl/6Ojo6HRaODt7V3gesePH0fPnj0RFBSE48ePF1omEZFKRKSiK0FE9k2r1WLv3r3K0JElxISFheHmzZsICgqC0WhEbGwsRo4cqfTI3Dk5uVevXspcmoLK1Ov1+PDDDwEAM2fOVObxtGzZEhMmTFAmKBOR/WPAIaIKExYWBj8/v1IPWRER3YlDVERERGR3GHCIqEJotVrExMQop3ETEZUlDlERERGR3WEPDhEREdkdBhwiIiKyOww4REREZHcYcIiIiMjuMOAQERGR3WHAISIiIrvDgENERER2hwGHiIiI7A4DDhEREdmd/wfjvW6Cfyzi1QAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 578.387x357.463 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1, 1, figsize=set_size(width, subplots=(1,1)))\n",
"sns.lineplot(x='epoch', y='value', style='metric', dashes=[\"\", (2,1)], data=df_aranged,\n",
" color='black', linewidth=1)\n",
"ax.set_ylim([0, 1])\n",
"ax.set_xticks(np.arange(0, 350, 50))\n",
"ax.set_ylabel('')\n",
"ax.axvline(133, 0, 1, lw=1, color='grey')\n",
"fig.tight_layout()\n",
"fig.savefig(fig_save_dir + 'precision_recall.pdf', format='pdf', bbox_inches='tight')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "bc5a84dd",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAACoCAYAAADtjJScAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAqKElEQVR4nO3dfVBU570H8O8i77LLEiWGhEVNjClvURsSy+pMU2N1YXInSmvWZhJrTMSkvQkzV5w00+gU8XrnRuxU722skBetN62rN9zEtuxqrE1qOBhNYyusxLcEORAkvsBZkHc49w9nT0VZ2F3YF85+PzOOnrPPOb/nHPTxt895zvNoZFmWQURERKQiYYGuABEREdFYY4JDREREqsMEh4iIiFSHCQ4RERGpDhMcIiIiUh0mOERERKQ6THCIiIhIdZjgEBERkeowwSEiIiLVCQ90BYiIfMFmswEAJEmCwWCA0Wh0u4zD4YDFYgEArF692qNzElFwYA8OEamOKIoQBAEmkwlmsxllZWUelREEAa2trR6fk4iCR0j24Jw8eRKyLCMiIiLQVSEal3p7e6HRaDBnzpxAV2VIgiBAq9Uq21qtFoIgDOpxGa6MyWSCJElwOBwendMdbH+IvOdJ2xOSCY4syxhpjVFZltHb24uIiAhoNBo/1Uzd8QcGBuBwOKDT6RAWNnznYSCvX433fqzjB/savfX19dDr9cq2Xq8flKy4W2Y05V1xtj89PT0eH0veGRgYQGdnJ2JiYkZse0g9QjLBcX5zyszMdFmmo6MDtbW1mDFjBmJjY/1VNVXHb2pqwvvvv4/8/HwkJSX5Pb671Hjvxzp+dXW1n2s1epIkjUmZ0ZQHbrQ/sixjxowZLst0dnairq4O06ZNQ0xMjMcxRiuQ8X0Ru7m5Gb/97W+xYsUKTJkyxe/xPRHK8d2Jff78ebe/+IVkgkNE6paSkjKod6W1tRUGg8HjMqMpPxyNRuNW8hoTExOQJDcY4o9l7OjoaOV3d88Zyvc+0PGHi+1Jrzb76ohIdYxG46BepoaGhkFvSI1UxtNzElHwYQ8OEamOwWBAbm4ubDYbJElCfn6+8lleXh7Ky8uHLSMIAiorK9HW1gaDwQCTyTRseSIKPkxwiEiVTCbTkPsPHz48Yhmj0Thk74yr8kQUfPiIioiIiFSHCQ4RERGpDhMcIiIiUh0mOERERKQ6THCIiIhIdZjgEBERkeowwSEiIiLVYYJDREREqsMEh4iIiAKuu7t7TM/HBIeIiIgC4uuvv8aePXuwZMkSJCYmoqqqaszOzaUaiIiIyK+OHDmCF198EWfPngUAzJo1C1u3bsXDDz88ZjECkuDYbDYAgCRJMBgMQ675MlyZsrIyGAwGAFwbhoiIaDyQZRkHDhzA7t278Yc//AHz58/Ha6+9BpPJhMTERHR0dKC2tnbM4vn9EZUoihAEASaTCWazGWVlZR6VefbZZ2E2m2EymVBaWurPqhMREZGHZFnGwYMHMX/+fCxZsgT19fXYsGEDDh48iGeeeQaJiYk+iev3HhxBEKDVapVtrVYLQRAG9dC4KhMfH6/st9vtKC8v91/FiYiIyCMNDQ1YtWoVPvzwQ2RlZeHgwYNYtGiRX2L7PcGpr6+HXq9XtvV6PRwOh1tlRFFEQ0MDRFEEAGzYsAEbN270qh6yLKOjo8Pl552dnYN+9zc1xu/q6lJ+H+7e+yq+u9R478c6vizL0Gg0/qoSEY0zX375JcrKyvCb3/wGsbGx+OMf/4jc3Fy/thtBMchYkiS3yjgcDsTHxyM9PR0AUFNTA7vdrmx7ore3161nfXV1dR6feyypKb7z5/zVV1/h2rVrfo/vKTXde1/Ej4yM9E9FiGhc+d///V88++yziIyMxI9+9CNs2rQJd9xxh9/r4fcEJyUlZVCPTWtrqzJgeKQyDodjUNn4+HiIouhVghMREYEZM2a4/LyzsxN1dXWYNm0aYmJiPD7/aKkxfnNzM44ePYrp06djypQpfo/vLjXe+7GOf/78eZ/Xo6SkBFOnToXJZEJBQQF0Oh1yc3P91r1NRJ7p6OjA+vXr8ctf/hJmsxlvvvkm4uLiAlYfvyc4RqMRW7ZsUbYbGhqU8TcOhwM6nc5lGYfDAYvFouwXRXHIN7DcodFoEBsbO2K5mJgYt8r5ipriR0dHK7+7e85AXr+a7v1Yx/dHN3NmZiYWL16MN998E+np6Vi7di327dvn87hE5BlZlrFjxw4UFxfjypUr+NWvfoWXX3454I+x/Z7gGAwG5ObmwmazQZIk5OfnK5/l5eWhvLzcZRmdTgez2QyLxQKHw4HCwkLodDp/XwIR+YHz37bVasWmTZsA3Oi1JaLg0d3djZ/+9Kd466238OMf/xgbNmzAvffeG+hqAQjQGBxXc9ccPnx4xDKc94YoNDhfJhBFEampqRBF8bYXEogocP7yl7/AbDbj6tWr+O1vf4tnnnkm0FUahEs1EFFQysnJwenTp/Hee++hvb0d+/btY4JDFCTOnz+PJUuWIDMzE6dOnQq65AYIkreoiIhutXPnTkydOhUJCQl4+eWXodVqkZmZGehqEYW8y5cvY8mSJZgyZQrKy8uD9tExe3CIKChlZmZi2bJl2Lt3L9LT07Ft2za0trYGulpEIW337t2477770NzcjA8++CBokxuACQ4RBambBxnn5uYC4CBjokD6z//8T6xcuRJ5eXmorq5GampqoKs0LK8fUXGOCiLyJQ4yJgoex44dw89//nO8+uqr2Lx5c6Cr4xavExzOUUFEvpSTkwOLxYL33nsPbW1tsFgsSEhIcPt4m80G4MYM2gaDYcg5s1yVcbXfYrEoE4wajUavJhklGk9kWcb+/fuRn5+Phx9+GEVFRYGuktu8fkTF7mMi8iWtVovly5fj2LFjsNlseOGFF/Dcc8+5dawoihAEASaTCWazGWVlZW6XcbXfbrejsrISJpMJq1evRklJydhdLFEQ6uvrw9NPPw2z2YxFixbBarUiIiIi0NVym9cJjiiKqKqqYvcxEfmEKIpYsWIFPvnkE3zyySfIy8tza/04ABAEAVqtVtnWarUQBMGtMsPtv3VZGbvd7s2lEQU9WZaxatUq7Nu3D7/73e9gsVgGLYI9Hnj9iConJwf79u0bNEfFeLt4Igpehw4dQnl5+aB9W7dudWtgY319/aD2SK/X3/YFzFUZV/sNBgOqq6uV/aIoer0WnizL6OjocPn5eFhRfjzF7urqUn4f7r77Kr4ngiW+xWLBnj178Oabb+KJJ57wS33cuXZZlt1eAsLrBIdzVBCRLyUnJ9+2LyMjw+vzOVez96aMJEkwm82oqKiAw+FATU0NAHi9VExvb69bvVHBvqL8eInt/Ll+9dVXuHbtmt/jeyOQ8U+ePIlXXnkF3/ve9zB79my3e07HykjXHhkZ6dZ5OMiYiIKS8y2qmzU0NLh1bEpKyqAem9bW1tseLw1XxtX+7du3w263IyMjAzqdzuuEKyIiAjNmzHD5+XhYUX48xW5ubsbRo0cxffp0TJkyxe/xPRGo+LIsw2q1YufOnTh8+DBmzZqFsrIyJCUl+a0O7lz7+fPn3T6f1wkOF8IjIl8yGo1YtWqV8ghIEAQUFha6feyWLVuU7YaGBuVNKIfDAZ1O57KMKIpD7nc4HHjttdewfft2iKKoJDne0Gg0bq0UH8wryo+n2NHR0crv7p4zlO59d3c38vLyUFFRgdmzZ2PTpk0oKChAXFycX+Lfarhr92SFcq8THM5RQUS+lJaWhqKiIlgsFgBAcXEx0tLS3DrWYDAgNzcXNpsNkiQhPz9f+SwvLw/l5eUuy7jar9PpMG/ePNhsNoiiiI0bN47xFRP5X2NjI/Lz83H48GG8//77WLhwIb744guEhY3/eYBHNch4NHNUEBGNxGAwDOq1qa2tdXv2VJPJNOT+w4cPj1jG1X6z2exWbKJgt3//fuzYsQPHjx9HXFwc3nvvPTz++OMjDsIeT7xOcJxzVFitVgDACy+8ELDuLCIa//bv3z/s55IkwWq14r333vNTjYjUp7e3F2vXrsV//dd/4dFHH8VPfvITvPrqq6rsoBjVI6qCggJl8F1ZWRm2bdsW9GtTEFFw+v3vf69MGuqKLMt+qg2RekiShL/+9a/YunUrzp49i8uXL+PXv/41XnzxRY/GtIw3Xic4o5mjgojoVuvWrUN2dvawZYZaboGIBmtubsann36Kuro67Nq1CydPngQAZGdn4+mnn8aTTz6JrKysANfS97xOcMZ6jgoiCm0jJTcA3B5kTBSKrl69is2bN+ONN95AV1cXIiIisGDBAuzZswcZGRmYNWuWqntsbjXqt6hu5u4cFeOFLMv40Y9+hFdffRXf+c53Al0dIiKiIQmCgOeffx6NjY145ZVXsHr1aiQlJanibShveZ3gjGaOivFCkiQcOHAAjY2N+OyzzwJdHSIiokE+//xzrF27Fh999BFSU1Nx/PhxPPDAA4GuVlDwOrVzzlEhyzJkWUZxcbFbXczjiXPGxJsX3iMiIgq0/v5+bN68GQ899BCamppQXl6OmpoaJjc38boHBxjdHBXB7sKFC3jhhRcAABMnTgxwbYiIKJR1dnaivr4edXV1ePfdd3HkyBE0NjZi3bp1+Pd//3dEREQEuopBx+0EJ9TmqLh5EHV7e3sAa0JERKGmra0NV69eRV9fH44fP46CggI0NzcDAL71rW9h2bJlMJvNmDt3bkgNHPaE2wlOqM1RERUVhQULFuDIkSP4+OOPsWnTJphMppB4tY4oGDQ0NChfNNra2iAIAtLT04d8g5NILerr67Flyxb83//9H3p6epT9CxYswK9//WtMmzYN3/72t5nUuMHtBCcU56h4/fXXUV5ejs2bN2P9+vVYv349Ll26NOJqtEQ0elVVVVi2bBmAG+PgFi9ejP379yv7iNREkiQUFhbi3XffhUajwc9+9jMYjUaEhYXhgQcegMFgYFLjIbcTnFCdo+LW8TdPPPEE/vSnP2HSpEkBqhGRerW1tcFqtUKj0aCysvK2z2tqapjgkOrY7XY89dRTuHjxIl566SU8/vjjeOihhwK6mrkajGqQcSh48cUXsXDhQpw6dQo9PT0oLCzEihUr8Morr2DevHmYMGFCoKtIpBparRbZ2dkoKytDfX39bY+jnn/++QDVjGhs1dXV4cSJE9i1axcqKiowffp0VFZWYvr06aitrQ109VSBCc4IoqKi8Mgjj+CRRx4BANxzzz348Y9/jO9+97vQ6XRIS0vDAw88gPDwcMiyjOTkZEyZMgVRUVGYPn06pk+fjvj4eMTFxSEyMjLAV0MU/AwGAzZu3IiqqirVTT1BoaO9vR01NTXQarU4d+4crl69iu7ubvT19WHPnj3K3Gr33HMP9uzZgx/+8IeIjo5W1WregcYEx0NPPPEELl26hJMnT+Ljjz/G6dOncebMGWU+IKvVim+++QYDAwODBl1HRUVh1qxZyMrKQlZWFmJjY9Hb24v+/n7IsoyJEyciPj4eAKDX69Hb26uqQdtEnsrIyMBbb70Fs9mMuLg4VFVVITMzE3FxcYGuGpFLVqsVP/nJT1BXV3fbZ+Hh4ejr64PJZMLu3buxaNEi3HnnnSE927AvMcHxQnR0NLKzs11+u5RlGT09Paivr8eXX34JSZJw6dIlfPbZZ/jzn/+MN954w604EyZMwNy5c3Hvvfdi0qRJmDx5MqKiotDS0oLOzk50d3ejq6sL3d3d0Gq1mDZtGlJSUqDT6dDT0wNZlhEXF4e4uDhMnDgRcXFxiIqKQlRUFBITEzlgjQAAPT09kCQJ/f396O/vD5rn/larFS0tLcp2dnY2Dh06hEWLFgWwVkRDO3nyJLZv345du3Zh8eLF2LRpE+6//35cv35daZvDwsLQ3t7OyWP9xOsE56233sJzzz034r5QpNFoEBUVhfvvvx/333//bZ9fv34dAwMDCA8PR3h4uLKvtbUVsixDkiS0tbWhoqICZ86cwcWLF/H555/jypUr6OzsxKRJkxAbG6skK1FRUZAkCfv27Rv0H8JwdDqd8jgtOTkZ06dPR0xMjNKz9PXXX+PChQvo7+9He3s77rzzTqSmpqKzsxPt7e2Ij4/H1KlTodfrER0djZiYmEH1iY6ORkJCAiZPnqxcI/mWLMtoa2tDT08P4uLi0NfXh9raWvztb3/DxYsXcf36daVsW1sbLl68iLq6Oly8eBEDAwPKZzk5OSguLg7EJQyi1+vx5JNPBroaRApZlnH58mVMmjQJEyZMQG1tLc6cOYNDhw5hx44dSEpKwo4dO7BmzRqXXyCZ3PiP1//z7N27V+k6BoCDBw+itLSUCY4bhpoZWa/XQ6/XK9sdHR2IjY1FamqqR9+o29vb0dbWhsjISGg0GrS3t+P69eu4fv062tvb0d3djY6ODpw9exZff/01mpubceHCBfz5z39WPgsPD8ekSZMwceJEJCcn4+6774Yoivj444+VHqGWlhY0Njaiv79/2PpoNBpMmjQJCQkJCA8Ph9lsxvLly9HY2IiOjg5ERkYq54yOjsbkyZMxZcoUREdHo6WlBYmJiYiMjMTAwICSFCYlJaGlpQUnTpxAU1MTtFotdDod7rrrLjz44IOYPHkyJk+ejMjISLS2tt72q6WlBQ6HAzqdDgkJCYiLi0NCQgL6+voAAPHx8bh+/Tp6e3txzz33YNKkSYiJifGqx6upqQlXrlzB+fPncfbsWZw9exbnzp3D9evXERYWBo1Gg5aWFoSHh6O/vx+TJ0/GXXfdhfDwcOj1ekRERGDatGmIi4tDV1cXIiMjIcuyci1tbW1obW3FuXPncObMmSGf34eHhyM5OXlQwxobG4upU6ciKysLM2bMQGJiopJwz5gxAw6Hw+NrHWunTp2C0Wgc9EiqurqaPTjkV/39/fjoo49w7Ngx/PGPf8SxY8dw9913K4OCgRu97SUlJSgoKOAXuiDi9U/CbDbDarUiIyMDFRUVqK+vx+rVq8eybuQFZ7LgdMcdd3h1no6ODmXpDVcJVn9/Pzo7O5Vf3d3dyq+uri5cu3YNzc3N+Oabb3Dt2jXo9Xr09/dj9uzZ+M53voPY2Fj09PQoSVl3dzcuX76Ms2fPor29HT09PcpbamFhYQgLC0N3dzcuXboErVaLhx56CBkZGWhvb4fD4cCRI0dQWlo6ZNIVHh6OhIQEJZHU6XT48ssv0draivb2dly7dg0REREYGBhAZ2fnbccnJCQgKysLaWlpGBgYQEdHB7q7u9Ha2gqdTgeNRqM8LnRe/+XLl/HFF18o59DpdJg5cyZmzpwJrVYLWZbR39+P+Ph4JXm7fPky6urq0NTUhJiYGMiyjN27d6OrqwvR0dHo7u6GRqNRrsWZ3GVlZeHpp59GcnIyIiMjldm3Z86ciQcffBDR0dEe/eyDIcExm81YunQpUlJSoNVqcfr0aRQVFQW6WhQCZFnG8ePHUV5ejn379qG5uRl6vR4ZGRl4++238fnnn0MURezevRuPPvooACAlJSWwlabbeJ3gPP/882hra0NeXh7S09Oxbds2t4+12WwAbkxsZDAYhpwgcKQyNpsNOp1OdZMLjicTJky4LaEaTlNTE0pLS/Gzn/0MSUlJw5YdLsGSZdllb8rAwAAkScKVK1fQ09OjJDSxsbFu9cAMDAzg6tWr+PTTT6HT6dDR0YGrV6/iyy+/xIkTJ3Do0CGEh4cjNjYWERER0Ov1aGhoUB5LRkdHK4/tMjMz8Ytf/AIGgwH33Xcf7rzzTrfqcOu133q9w12/mhgMBpSXl8NqtcLhcGDt2rUwGAyBrhaNI01NTTh27JjSs1lXV4euri6kpKQMmuJDlmXU19fjH//4B44fP44//OEPOHXqFO6++2489dRTWL58OR5++GHl392zzz4bkOshz3id4CxatAharRbbtm2DVqvFvn370NbWNuIjKlEUIQgCNm7cCODGX5Rbk5SRyjgcDpSWliI/P9/b6tM4Ntx/7mFhYUhISEBCQoJX5w4LC8PEiRORlJTk8eNBX7n1ekMhuXGyWCyoqanBr371K1RVVSmPFIluJcsympqa0NjYiL///e9466238OmnnwIAkpKSsGbNGvzgBz9AU1MT7r33XsyaNQstLS1oa2tDe3s7zpw5AwCYNGkSUlNTsW/fPuTl5XGus3HM6wQnLi4Ou3btUp7rx8fH4wc/+MGICY4gCIPGAmi1WgiCMCiBGamM1WpFTk6Ot1UnonGgpKQEKSkpyr97vkVFt+rt7cUHH3yAr776Ch999BEqKioA3PgSsHjxYvz+97/H/PnzcfHiRRw+fBhvvPEGIiMj8e677+LKlSuYMGECUlJSEBkZiddffx3f/va3kZCQgC+++AKpqalMbsY5rxMc5yhx5yrjOTk5bo3Bqa+vHzSYVq/X3/a8f7gydrsdRqNReYTlLVmWh51QyTkOY6jxGP6gxvhdXV3K7yNNZhXI61fjvR/r+P54TJaZmYnFixejqqrKp3FofDl79iyOHj2KU6dO4X/+539w7do15dHwf//3f2P27NmYOXMmEhMTlWOcicrcuXORlJQ07MLRnGhPPbxOcNLS0rBixQrlmXhZWZlH43BuJkmS22VEUYTJZPIqzs16e3vdmg57qMma/ElN8Z0/w6+++grXrl3ze3xPqene+yK+r2fmbmhouG0f36JSv97eXhw/fhyVlZX47LPPcOHCBTQ2NuLOO++EXq/HX//6V3R3d0Ov12PNmjV46qmnkJGRAQCcMI8G8TrBOXToEMrLywft27p1K1JTU4c9LiUlZVCPTWtr620DB12VKSsrg8FggM1mQ3V1NURRhMFgQHp6usf1j4iIwIwZM1x+3tnZibq6OkybNg0xMTEen3+01Bi/ubkZR48exfTp00dckT2Q16/Gez/W8c+fP+/zeqSlpSEvLw8JCQkQBAGCIKCwsNDnccn/WltbYbPZ8MEHH8BqtSpfhtLT0zFr1izMnz9feSvztddew9q1axEdHR1S49HIc14nOLcuggdAyaKHYzQasWXLFmW7oaFBecbunJvEVZmbx+lUV1cjMzPTq+QGuPGM1p0BpM7J7wJFTfGdrypHR0e7fc5AXr+a7v1Yx/fHfyzZ2dnYtm0bLBYLZFlGcXEx0tLSfB6XfOcvf/kLjhw5gm+++QYXLlzAxYsXIcsyLl68iL6+PsyZMwf/+q//irS0NDz++OPQ6XSBrjKNY14nOKIo3rZvqC7lWxkMBuTm5sJms0GSpEFvQuXl5aG8vHzYMsCNQchVVVUQRRHp6el8dZRIpQwGg9e9NqOZjmKk/U5j8bhcrZwDgC9cuICpU6eioqICe/bsQWJiInQ6HTIzM7FkyRKEhYUhJSUF//Iv/4KUlBRlmgROmEej5fXfIKPRiFWrVik9KJ50H7tqFA4fPjxiGWfsWx+PEdH49txzz+H5559X1nj7/ve/73LCwYyMDBQVFQ3ZkwyMbjoKV/sdDgdEUVReptiwYYNfE5w9e/Zg//79uO+++1BSUhKUb/j09/fj5MmT+NOf/oSysjI0NjYiNjYWHR0dSElJwW9+8xvk5+fz0RL5xagGGRcVFcFisQAAu4+JaFQWL148qDc2OztbSTJuJYoiDh486HJaitFMRyGKostjLRYLjEYj0tPTR7WmkDdvcW7cuFEZ+/Too4/i+9//vtfxR+Lpm3y1tbXYvn07Dhw4gNbWVkycOBHLli3DmjVrkJGRgatXrypvNY10zlB+gzPU44/1G5yj6gM0GAx44YUXAICTbxHRqNy6sOa6detclrVYLMNO5jia6SiGO7awsFCZvX3Xrl0jX5QLnrzF+c0330AQBJw/fx4lJSV444038MMf/hAzZ87EggULcOXKFTz22GOYM2eO1/UZLj5w4z+VkydPor6+Hh0dHejr68MjjzyCS5cu4YMPPsDRo0eRmJiIZcuWYe7cuUhPT0dERAQAKBPoXblyxavYY2G8vcEZ6vHH6g1OrxOctrY2FBQUQBAEaDQaGI1GbNu2jYkOEY0JZw+Jc12tm9uWmycAdJcn01G42l9dXY3y8nKUlJRg5cqVXj8q9+QtzmeeeUZJhp566ik8+uij2LNnDz799FPs2LEDCQkJ2L9/PzZu3IiCgoIxefzjjO9wOHDq1CkcOHAAR44cAQBERUUBALZv3w4ASE1Nxc6dO/Hkk0+OydQBofwGZ6jHH+s3OL1OcHbu3InVq1fj7bffBgCcPn0aVqsVy5Yt8/aURESK4b5E3drbc6vRTEcBYMj9NpsN8+bNQ3p6Ot555x1s2LDhtsde7nLnLc76+nocOHBgUE9PUlISkpKS8NBDDwG4sXbawMAA1q9fj5///Of43e9+h9LS0lGt0dfX14eTJ0+iqKgIH374IcLDw5Geno73338fixcvhizL6O7uRm1tLZKTk5GcnOyTMTWh/AZnqMcfqzc4vZ4VKTMzUxkMCNwYk+PtK9tERLdyfon64osvUFtbi7Vr18Jqtbp1rNFoRHV1tbJ963QUw5VxtV+SJMTHxw+KcfP2WPvlL3/pcgySU1hYGMLDw/Ef//EfOHr0KKKiojBv3jwsWLAAH374IXp6etyOd+nSJRQVFeHee+/F/PnzIQgC3n77bbS3t+Pvf/87nnjiCURHRyMmJgZ6vR7Z2dkwGAwcMExBy+senKHmJ+CcBUQ0Vob6EuWu0UxH4Wq/2WxGWVkZampqANxYf8+XX+qcj+aAG4+Fbp4bbCjz589XVsJ+6aWXsGjRIkyePBk//elPsXDhQnzrW98CcGMtv6ioKNx1113Q6XS4dOkSSktLUVFRgYiICJjNZixfvhyxsbGYPXu28kiKaLxxO8E5dOjQoO3KykqcPn1aSWocDgcMBoPL1zaJiDwx2i9Ro5mOwtV+d9bbGwsDAwM4e/as8ibZwoUL3TpuwoQJWLJkCXJycnD69Gls374dRUVFKCoqGva49PR0bN68Gc8++ywSEhKUuWiIxjO3E5wtW7bAaDQqA/+0Wi1aWlrQ0tKilGltbeU6MUTkFX6J+idJktDR0aH0vngqKioKc+bMwTvvvIOtW7fi3LlzaGpqQmdnJ7773e8iIiICLS0tkCQJEydORGpqKh81keq4neBs3LhxUHcxEdFY4peof3LO1TJx4sRRn+uOO+7A3Llzb9t/82rbRGrkdoLD5IaIfIlfov5pqFfjicgzXOyDiILCUMlNe3u78uZUTk5OyPyH7+zBCeRrwkTjndeviRMR+ZIoilixYgU++eQTfPLJJ8jLywuZga/swSEaPfbgEFFQOnTo0G0zBW/duhWpqakBqpH/XL9+HcDYjMEhClXswSGioDTU21IZGRkBqIn/ORMcPqIi8h4THCIKSqIo3ravoaEhADXxP/bgEI0eH1ERUVAyGo1YtWqVMluwIAgoLCwMcK38o6OjA5GRkQgPZxNN5C324BBRUEpLS0NRURFkWYYsyyguLg6Z18jb29sDspI0kZrw6wERBS2DwRAyvTY36+joYIJDNErswSEiCjLt7e0cYEw0SkxwiIiCTEdHB6KjowNdDaJxjQkOEVGQ4RgcotHjGBwioiDz4IMPQq/XB7oaROMaExwioiDzb//2byGzLAWRr/ARFREREakOExwiIiJSHSY4REREpDpMcIiIiEh1mOAQERGR6jDBISIiItVhgkNERESqwwSHiIiIVIcJDhEREakOExwiIiJSnYAs1WCz2QAAkiTBYDDAaDS6XcZms0GSJNjtdphMpiGPJSIabTsz1P6XX34ZmzZtgk6n88clENEo+L0HRxRFCIIAk8kEs9mMsrIyt8vY7XYAgNlsRmFhIQoKCvxadyIaH0bTzgy3/+DBg3jsscfw8MMP44EHHhjyvEQUHPzegyMIArRarbKt1WohCMKgb1euyjg/M5lM0Ol0iI+Ph91uR3p6ukd16O3thSzLOHXqlMsysiwDAM6dOweNRuPR+ceCGuP39/fje9/7Hi5duoTLly/7Pb671Hjvxzp+b29vQOrmrtG0M6Ioumx/Tpw4ofTeWCwWmM1mj+vG9sf/scdL2xPq8ce67fF7glNfXw+9Xq9s6/V6OBwOt8rc+khKkiSPkxsAys0Z7iZpNBpERkZ6fO6xosb44eHhSEhICFh8d6nx3o91fI1GE9QJzmjameHaHyeLxYKcnByv6sb2x/+xx0vbE+rxx7rtCcgYnFtJkuRxmQ0bNqC4uNireHPmzPHqOCIav7xpZ4baL4oiHA6H1+Nw2P4Q+Yffx+CkpKQM2m5tbYXBYPCojM1mg9FoHPSNiojIaTTtzEjH7t2716ueYyLyL78nOEajEdXV1cp2Q0OD8tjJ2YU8XBlBEKDT6WAymWC32yGKoh9rT0TjwWjameGOBYCDBw/eliwRUfDRyM5RPX508yuY8fHxSk/MwoULUV5eDp1ON2QZURSRl5ennMfhcODMmTP+rj4RjQPetjPDHQsAeXl52LVrF18VJwpyAUlwiIiIiHyJMxkTERGR6jDBISIiItVhgkNERESqwwSHiIiIVIcJDhEREakOExwiIiJSHSY4REREpDpMcIiIiEh1gmKxzWB080ymBoNh0FTtvvDyyy9jzZo1AICKigqsW7fOp/VwOBywWCwAgNWrVyv7XcUb63q4iu/P+2Cz2SBJEux2+6CV6v1xD1zF9tf122w2GAwG1NTUAADMZvOwcfz97yGUBeJeh1L7E+ptz3DxVdf+yHSb+vp6ef369cr2ypUrfR5z6dKlclZWlrxy5UpZkiSf18Nqtcqvv/66XFpaquxzFc8X9Rgqviz77z7U1NTIVqtVlmVZliRJzsrKGjbWWNbBVWxZ9s/1S5IkL126VPnzzJkzh40TiH8PoSpQ9zqU2p9QbnuGiy/L6mt/+IhqCIIgQKvVKttarRaCIPg0Zn5+Pk6cOIF33nlHWePGl/UwmUy3rZrsKp4v6jFUfMB/90GSJOUcOp0O8fHxsNvtfrkHrmID/rl+nU6H8vJyAIAoioMWsvXXz5+GFqh7HUrtTyi3PcPFB9TX/vAR1RDq6+uh1+uVbb1er6xA7CvO1YslSQJwo8vO3/VwFc+f9fDXfXCuGu0kSRLS09NRUVHh83vgKjbg378HFosFlZWV2LZtG4Dg+PmHukDda7Y/odH2DBcfUF/7wwTHTc4fuK84n3UCN1Y7zsnJCUg93I3nq3oE4j5s2LABxcXFLj/35T24NbY/r99sNsNgMKCkpAQbN270KI6//x6GMn/ca7Y/odf2DBVfbe0PH1EN4dbuy9bWVhgMBp/Fs9ls2LJli7Kt0+kgiqLf6+Eqnr/qEYj7YLPZYDQaYTKZAPj3Htwa25/X7/wGZDQaYbVaIQhCwH/+5P+2B2D7A4Re2zNUfDW2P0xwhmA0GpWuOgBoaGjw6ZsMBoMB8+bNU7YdDgfS09P9Xg9X8fxVD3/fB0EQoNPpYDKZYLfblefB/rgHQ8X21/VbLBbs3LlT2Y6Pj0d8fHzAf/7k/7YHYPsDhFbb4yq+GtsfjSzLstc1VbGbX0uLj49Xslxfx6uursby5cuVDNVX9RAEAXv37kVbWxvMZvOgLH6oeGNdj5Hi+/o+iKKIvLw8ZdvhcODMmTPDxhqrOrgT25fX73A4lAausrISer1eeV3WXz9/ci0Q9zqU2p9Qbnvcja+W9ocJDhEREakOH1ERERGR6jDBISIiItVhgkNERESqwwSHiIiIVIcJDhEREakOExwiIiJSHSY4NK4JgoC8vDxYLJZAV4WIQgjbnuDHBIfGNaPRiOzs7EBXg4hCDNue4McEh8a9m1eaJSLyF7Y9wY0JDhEREalOeKArQOokCALsdjsMBgOqq6uxbt06CIKADRs2KAuoSZIEu92OwsJC6HQ6AIDdbocgCDAYDBBFESaTSVkPRRRF7N27F5mZmZAkCTk5OcpxzvVNRFFEZWUltm/fHrBrJ6LAYdtDCplojNXX18tLly5Vtvfu3SuXlpbKsizLr7/+uvJnWZZlq9Uqr1y5UjnO+WenpUuXypIkyZIkyY899pgsSdJt5yktLZVfeukl5ZiVK1fKNTU1vrk4IgpabHvoZuzBoTG3d+9exMfHQxAEZd/Ny907v/kAgMlkQkFBARwOB/bu3Yu0tLRB50pOTobVagUAGAwG5dg1a9YMKpeZman8WavVQpKksbsgIhoX2PbQzZjgkE+kpaXBaDQq22azeVTnczgc0Gq1yvbNDRURkRPbHnLiIGMac7m5uaiqqhq07+ZvVA6HQ/mzzWaD0WiETqcb8rjTp08jJycHJpMJp0+fdnlOIiK2PXQzjSzLcqArQeojCAIqKyuV7ltnQ7Jlyxa0tbXBZDLB4XCguroaa9asUb4V3TpAMDc3F+np6S7PKYoi1q9fDwAoLi6GKIooKSlBWloa1q1bpwwSJKLQwLaHnJjgkF9t2bIFKSkpo+42JiLyBNue0MNHVERERKQ6THDIbwRBQFVVFWw2G+x2e6CrQ0Qhgm1PaOIjKiIiIlId9uAQERGR6jDBISIiItVhgkNERESqwwSHiIiIVIcJDhEREakOExwiIiJSHSY4REREpDpMcIiIiEh1/h9GaxAUuXZgzgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 578.387x178.731 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1, 2, figsize=set_size(width, subplots=(1,2)))\n",
"sns.lineplot(x=df.index, y='val/box_loss', data=df, ax=ax[0], color='black', linewidth=1)\n",
"sns.lineplot(x=df.index, y='val/obj_loss', data=df, ax=ax[1], color='black', linewidth=1)\n",
"ax[0].set_ylim([0.02, 0.07])\n",
"ax[0].set_xticks(np.arange(0, 350, 50))\n",
"ax[0].set_xlabel('epoch')\n",
"ax[0].set_ylabel('box loss')\n",
"ax[0].axvline(133, 0, 1, lw=1, color='grey')\n",
"\n",
"ax[1].set_ylim([0.007, 0.01])\n",
"ax[1].set_xticks(np.arange(0, 350, 50))\n",
"ax[1].set_xlabel('epoch')\n",
"ax[1].set_ylabel('object loss')\n",
"ax[1].axvline(133, 0, 1, lw=1, color='grey')\n",
"\n",
"fig.tight_layout()\n",
"fig.savefig(fig_save_dir + 'val_box_obj_loss.pdf', format='pdf', bbox_inches='tight')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "fe9b6f1c",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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wQLExMRg3LhxuPfeexEfH4/w8PBKt7Fx40Y0bNgQFosFe/bswffff48GDeT90b/tttuwcuVKPProo5g7dy5mzpwp6/aJSAF1jiMuiCMIth577DHRtGlT0b17d+Hv7y/UarXw9/cXeXl5tdpeffVj5MiRIjg4WEycOFEEBgaK1q1bi6NHj9Z6ewcPHhR33323ACBuu+02YTQabb5fXl4u7rzzTgFABAYGivj4eHH33XcLLy8v8dprr9XotZYuXSr8/PxE69atRceOHUW7du3EpUuXal27EEKsWLFCABDe3t6iXbt2wmKxCCGEWLt2rdi6dasQQoj9+/cLtVotGjRoIJo3by4efvjham+/JiMIFV5++WWhVqvFhQsX/nY5V/+ZkRv7YYv9sMXTHEkRxcXF+Oqrr+Dv74+9e/di/fr1yMnJwY4dO9CyZUuly7OxYMEC9O7dGzt37sSYMWPg7++PHj164NChQ5UuL4Socls5OTno0aMH/Pz8sH79ekRERKB///42dxb96aefcPr0aXz44YeYPn06zp49i169emHnzp146aWXalT76NGjsW7dOtx55504dOgQPvvss0pHLGpiwoQJOHfuHI4dO4Y///wTkydPRm5uLp588kkMGjQIEydOxKOPPoqoqCg89NBD+PPPPzF//vw6veatPP300ygrK8P69evr9XWIqP7xEIOH2759O4qKipCZmYlWrVrZ3Irb2bRt2xaff/659PjixYvo378/Bg4ciJSUFERGRqJ///44cOAAZsyYgX379mHw4MFYvHgxgoODbba1atUqNG7cGFlZWWjcuDEGDx6MBx98EEOHDsWPP/6Idu3aYdOmTQgMDMSECROgVqvx6quv1qn+li1bYsuWLSgoKMCdd95Zp21VaNasGZo1a4bly5fjsccew88//4ygoCBMnDgR69atQ4cOHfDuu++idevWyM3NRfv27WV53aoEBwejf//+WLt2LSZNmlTlcr/++iuuXr1ar7UQUd1wBMHDbdq0CaGhoQgLC3PqcFCZ2267DVu2bEFoaChmzZqF2NhYNG7cGF26dMHp06cxbdo07NixA8OGDUNJSYm0nhACGzduxCOPPCLNYWjUqBE2bNiAJk2aYPDgwbhw4QI2bdqE2NhYqNVq2Wr29vaWLRzcKDExEZMmTcLRo0fx/PPP4/XXX0dubi4yMzMRGhoK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bdoUf/31F5o3by776zubG/tB17lSTxo1aiR9ra+aXakfjlDf/fj3v/+NgQMH4vPPP8eVK1cwdOhQtGjRot5er664f9iSox81CYYODwharRaDBw+GwWCAxWJBcnKy9L34+HhkZGQgIiJCOhUyJycHaWlpAK6PJPTo0QMGgwFmsxlz5sxxdPnVVlZWBgA2kxQBoEWLFvjrr784SZGIHK5///7o0qULxo8fD+D6odx+/fohMjISr732msLVkbNRZA5CbGxspc9v27bNbpmbl01MTKy/wmRUcdWymwNC8+bN8csvv/BCSUTkcCqVCsuWLcOOHTsQHx+PDz74AEajEfPnz0dSUhLCw8OVLpGciFNMUnRHVQWEiuE8jiAQkRI6duyIjh07AgDeeOMNXLlyBc2bN8eaNWs4ikA2nPtcFxf2dwFBrVbzuBoROYWGDRti5MiRWLt2LcrLy5Uuh5wIA0I9qQgI3t7eNs/369cPI0eOdOoZxETkWUaPHo3c3FxkZ2crXQo5EQaEelLVCMLAgQOxZs0aJUoiIqpUz5490axZM2zatEnpUsiJMCDUk6oCAhGRs/Hy8kJcXBw2b96sdCnkRBgQ6klVpzkSETmjwYMHIycnB2azWelSyEkwIMjg4MGDmDp1qs0EH44gEJErGThwILy9vZGZmal0KeQkGBBkcOTIEfz44482t1JlQCAiV9KkSRN0794dW7ZsUboUchIMCDKouDMaRxCIyJX17NkTP/74o9JlkJNgQJABAwIRuYMuXbrg9OnTyMvLU7oUcgIMCDKoCAgVExMBBgQicj1du3YFAOzevVvhSsgZMCDIoOJiSJWNINx8oSQiImd15513olWrVtizZ4/SpZATYECQAQ8xEJG76Nq1K0cQCAADgiwqCwi8DgIRuaKuXbti3759KCkpUboUUhgDggw4gkBE7mL48OG4cuUKlixZonQppDAGBBlU3HiJAYGIXF1oaCj+8Y9/YP78+bhw4YLS5ZCCGBBkUDGCIISQnmNAICJXNXPmTABAamqqwpWQkhgQZMDTHInIndxxxx146623kJaWBoPBoHQ5pBAGBBnwNEcicjfjx4/HwIEDMW3aNJs/fshzMCDIoKpJiiqVSvoeEZErUalUmDdvHn799Vds3LgRW7duxblz55QuixyIn14yqCog8PACEbmyLl26oE+fPpgwYQIGDRqE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0xxvu+02BgQiIpm1a9eOAcGBeCVFmdx4mmOTJk0A8DoIRERyYkBwLAYEmdw4ghATE4POnTvjjjvuULosIiK3UREQeNMmx2BAkMmNIwjt27fHnj174O/vr3RZRERuo127drh8+TL++usvpUvxCAwIMrnxbo68giIRkfzatWsHADzM4CAMCDK58RADAwIRkfzuuusuAAwIjsKAIJMbT3NkQCAikl9AQACaNWtWo4v9UO0xIMhEpVJBCMGAQERUjzp37oxvvvlG6TI8AgOCTG6cpMiAQERUP0aNGgWj0YiTJ08qXYrbY0CQiUqlQllZGYQQDAhERPXkkUcegZ+fH9atW6d0KW6PAUEmXl5eKC0tBQAGBCKietK4cWMMGzaMAcEBGBBkolKpGBCIiBxg8ODBOHToEC5duqR0KW6NAUEmXl5euHr1KgAGBCKi+tSpUycAwP79+xWuxL0xIMjEy8sL165dA8CAQERUn9q3b4+AgAAGhHrGgCATzkEgInIMLy8vxMTEYN++fUqX4tYYEGTCgEBE5Dj333+/NIIghOB8hHrAgCATTlIkInKcTp064eTJk7hw4QI+/PBDNG/eHLt371a6LLfCgCATzkEgInKczp07AwC++uorLFq0CKWlpUhISMDevXtRXl6ucHXugQFBJhxBICJynNDQUIwYMQLJyck4efIk1q9fj2vXrqFLly5ISEhQujy3wIAgE57mSETkWB9++CFuv/129OjRA8OHD8fJkyexePFirF+/Hr/88ovS5bk8BgSZcJIiEZFjNW3aFPv378eXX34JAPDx8cFTTz2FkJAQLFq0SNni3AADgkw4B4GIyPFatmyJpk2bSo/VajWmT5+OdevW4ezZswpW5voYEGTCEQQiIucwZswYqFQqpKenK12KS2NAkAknKRIROYfbbrsNDz30ENasWaN0KS6NAUEmHEEgInIeo0ePxr59+3D06FGlS3FZDAgyUalUnINAROQkHnroIQQEBGDDhg1Kl+KyGBBk4uX1f61kQCAiUlajRo0QExPDGzrVAQOCTBgQiIicS3R0NH7++Wely3BZDAgyYUAgInIu0dHROHHiBCwWi9KluCQGBJkwIBAROZfo6GgAwMGDBxWuxDU1UOJFDQYDAMBisUCr1UKn09ktM23aNEyePBkAsHnzZqSmpkrfW758ObRaLQAgNjbWARXfmkql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\n",
"text/plain": [
"<Figure size 578.387x357.463 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1, 1, figsize=set_size(width, subplots=(1,1)))\n",
"ax = sns.lineplot(x=df.index, y='fitness', data=df, color='black', linewidth=1)\n",
"ax.axvline(133, 0, 1, lw=1, color='grey')\n",
"ax.set_xlabel('epoch')\n",
"df['fitness'].max()\n",
"fig.savefig(fig_save_dir + 'model_fitness.pdf', format='pdf', bbox_inches='tight')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.15"
}
},
"nbformat": 4,
"nbformat_minor": 5
}