diff --git "a/MakingGraphsAccessible.ipynb" "b/MakingGraphsAccessible.ipynb" --- "a/MakingGraphsAccessible.ipynb" +++ "b/MakingGraphsAccessible.ipynb" @@ -12,23 +12,24 @@ "### - [Requirements](#Requirements_)\n", "### - [Imports](#Imports_)\n", "### - [Globals](#Globals_)\n", + "### - [Utils](#Utils_)\n", "## [Data](#Data_)\n", "### - [Annotation structure](#Annotation_structure_)\n", "### - [Data exploration](#Data_exploration_)\n", "### - [Data splits](#Data_splits_)\n", "### - [Expected model output format](#Expected_model_output_format_)\n", + "### - [Metrics](#Metrics_)\n", "### - [Dataset](#Dataset_)\n", "## [Model](#Model_)\n", "### - [Add task specific tokens](#Add_task_specific_tokens_)\n", "### - [Add dataset specific tokens](#Add_dataset_specific_tokens_)\n", + "### - [Predicting](#Predicting_)\n", "### - [Dataloader](#Dataloader_)\n", "### - [Lightning module](#Lightning_module_)\n", - "### - [Metrics](#Metrics_)\n", - "## [Training](#Training_)\n", "### - [Callbacks](#Callbacks_)\n", + "## [Training](#Training_)\n", "## [Results](#Results_)\n", - "### - [Predicting](#Predicting_)\n", - "### - [Interface](#Interface_)" + "### - [Gradio interface](#Gradio_interface_)" ] }, { @@ -62,9 +63,14 @@ "id": "965d48df", "metadata": {}, "source": [ + "- Add wandb logs: metrics, images, text\n", + "- Create separate training script\n", + "- Train\n", + "- Get familiar with transformers library: main classes, how to work with config\n", + "- Do more research, check out notebooks in kaggle\n", "- Check out dataset https://chartinfo.github.io/toolsanddata.html\n", "- Try segmentation -> classification -> parsing pipeline\n", - "- For inference, check out https://pytorch.org/serve/" + "- Make predicting faster, check out https://pytorch.org/serve/" ] }, { @@ -93,329 +99,6 @@ "## Setup " ] }, - { - "cell_type": "markdown", - "id": "94236632", - "metadata": {}, - "source": [ - "### Requirements \n", - "\n", - "
\n", - " Python requirements\n", - "\n", - "```\n", - "absl-py==1.4.0\n", - "aenum==3.1.11\n", - "aiofiles==23.1.0\n", - "aiohttp==3.8.4\n", - "aiosignal==1.3.1\n", - "altair==4.2.2\n", - "antlr4-python3-runtime==4.9.3\n", - "anyio==3.6.2\n", - "appdirs==1.4.4\n", - "appnope==0.1.3\n", - "argon2-cffi==21.3.0\n", - "argon2-cffi-bindings==21.2.0\n", - "arrow==1.2.3\n", - "astroid==2.15.0\n", - "asttokens==2.2.1\n", - "async-timeout==4.0.2\n", - "attrs==22.2.0\n", - "auto-sklearn==0.15.0\n", - "backcall==0.2.0\n", - "beautifulsoup4==4.12.0\n", - "black==23.1.0\n", - "bleach==6.0.0\n", - "blis==0.7.9\n", - "botocore==1.29.100\n", - "cachetools==5.3.0\n", - "catalogue==2.0.8\n", - "catboost==1.1.1\n", - "certifi==2022.12.7\n", - "cffi==1.15.1\n", - "charset-normalizer==3.1.0\n", - "click==8.1.3\n", - "cloudpickle==2.2.1\n", - "cmake==3.26.0\n", - "colorama==0.4.6\n", - "comm==0.1.2\n", - "ConfigSpace==0.4.21\n", - "contourpy==1.0.7\n", - "cycler==0.11.0\n", - "cymem==2.0.7\n", - "Cython==0.29.33\n", - "dask==2023.3.2\n", - "datasets==2.11.0\n", - "debugpy==1.6.6\n", - "decorator==5.1.1\n", - "defusedxml==0.7.1\n", - "Deprecated==1.2.13\n", - "dill==0.3.6\n", - "distlib==0.3.6\n", - "distributed==2023.3.2\n", - "distro==1.8.0\n", - "docker-pycreds==0.4.0\n", - "einops==0.6.0\n", - "emcee==3.1.4\n", - "entrypoints==0.4\n", - "exceptiongroup==1.1.1\n", - "executing==1.2.0\n", - "fastapi==0.95.1\n", - "fastcore==1.5.28\n", - "fastdownload==0.0.7\n", - "fastjsonschema==2.16.3\n", - "fastprogress==1.0.3\n", - "ffmpy==0.3.0\n", - "filelock==3.10.0\n", - "flaky==3.7.0\n", - "fonttools==4.39.2\n", - "fqdn==1.5.1\n", - "frozenlist==1.3.3\n", - "fsspec==2023.3.0\n", - "future==0.18.3\n", - "gitdb==4.0.10\n", - "GitPython==3.1.31\n", - "google-auth==2.16.3\n", - "google-auth-oauthlib==0.4.6\n", - "gradio==3.27.0\n", - "gradio_client==0.1.3\n", - "graphviz==0.20.1\n", - "grpcio==1.53.0\n", - "h11==0.14.0\n", - "HeapDict==1.0.1\n", - "httpcore==0.17.0\n", - "httpx==0.24.0\n", - "huggingface-hub==0.13.3\n", - "idna==3.4\n", - "imageio==2.27.0\n", - "imgaug==0.4.0\n", - "importlib-metadata==6.1.0\n", - "iniconfig==2.0.0\n", - "ipykernel==6.21.3\n", - "ipython==8.11.0\n", - "ipython-genutils==0.2.0\n", - "ipywidgets==8.0.4\n", - "isoduration==20.11.0\n", - "isort==5.12.0\n", - "jedi==0.17.2\n", - "Jinja2==3.1.2\n", - "jmespath==1.0.1\n", - "joblib==1.2.0\n", - "jsonpointer==2.3\n", - "jsonschema==4.17.3\n", - "jupyter==1.0.0\n", - "jupyter-console==6.6.3\n", - "jupyter-contrib-core==0.4.2\n", - "jupyter-events==0.6.3\n", - "jupyter-highlight-selected-word==0.2.0\n", - "jupyter-latex-envs==1.4.6\n", - "jupyter-tabnine==1.2.3\n", - "jupyter_client==8.0.3\n", - "jupyter_core==5.3.0\n", - "jupyter_server==2.5.0\n", - "jupyter_server_terminals==0.4.4\n", - "jupyterlab-pygments==0.2.2\n", - "jupyterlab-widgets==3.0.5\n", - "kaggle==1.5.13\n", - "kiwisolver==1.4.4\n", - "langcodes==3.3.0\n", - "lazy-object-proxy==1.9.0\n", - "lazy_loader==0.2\n", - "liac-arff==2.5.0\n", - "lightgbm==3.3.5\n", - "lightning-utilities==0.8.0\n", - "linkify-it-py==2.0.0\n", - "lit==16.0.0\n", - "llvmlite==0.39.1\n", - "locket==1.0.0\n", - "lockfile==0.12.2\n", - "lxml==4.9.2\n", - "Markdown==3.4.3\n", - "markdown-it-py==2.2.0\n", - "MarkupSafe==2.1.2\n", - "matplotlib==3.7.1\n", - "matplotlib-inline==0.1.6\n", - "mccabe==0.7.0\n", - "mdit-py-plugins==0.3.3\n", - "mdurl==0.1.2\n", - "mistune==2.0.5\n", - "model-index==0.1.11\n", - "more-itertools==9.1.0\n", - "mpmath==1.3.0\n", - "msgpack==1.0.5\n", - "multidict==6.0.4\n", - "multiprocess==0.70.14\n", - "murmurhash==1.0.9\n", - "mypy-extensions==1.0.0\n", - "nb-black==1.0.7\n", - "nbclassic==0.5.3\n", - "nbclient==0.7.2\n", - "nbconvert==7.2.10\n", - "nbformat==5.7.3\n", - "nest-asyncio==1.5.6\n", - "networkx==2.8.8\n", - "nltk==3.8.1\n", - "notebook==6.5.3\n", - "notebook_shim==0.2.2\n", - "nptyping==2.4.1\n", - "numba==0.56.4\n", - "numpy==1.23.5\n", - "nvidia-cublas-cu11==11.10.3.66\n", - "nvidia-cuda-cupti-cu11==11.7.101\n", - "nvidia-cuda-nvrtc-cu11==11.7.99\n", - "nvidia-cuda-runtime-cu11==11.7.99\n", - "nvidia-cudnn-cu11==8.5.0.96\n", - "nvidia-cufft-cu11==10.9.0.58\n", - "nvidia-curand-cu11==10.2.10.91\n", - "nvidia-cusolver-cu11==11.4.0.1\n", - "nvidia-cusparse-cu11==11.7.4.91\n", - "nvidia-nccl-cu11==2.14.3\n", - "nvidia-nvtx-cu11==11.7.91\n", - "oauthlib==3.2.2\n", - "omegaconf==2.2.3\n", - "opencv-python==4.7.0.72\n", - "ordered-set==4.1.0\n", - "orjson==3.8.10\n", - "packaging==23.0\n", - "pandas==1.5.3\n", - "pandocfilters==1.5.0\n", - "parso==0.7.1\n", - "partd==1.3.0\n", - "pathspec==0.11.1\n", - "pathtools==0.1.2\n", - "pathy==0.10.1\n", - "patsy==0.5.3\n", - "pexpect==4.8.0\n", - "pickleshare==0.7.5\n", - "Pillow==9.4.0\n", - "platformdirs==3.1.1\n", - "plotly==5.13.1\n", - "pluggy==1.0.0\n", - "preshed==3.0.8\n", - "prometheus-client==0.16.0\n", - "prompt-toolkit==3.0.38\n", - "protobuf==3.20.3\n", - "psutil==5.9.4\n", - "ptyprocess==0.7.0\n", - "pure-eval==0.2.2\n", - "py4j==0.10.9.7\n", - "pyarrow==11.0.0\n", - "pyasn1==0.4.8\n", - "pyasn1-modules==0.2.8\n", - "pycparser==2.21\n", - "pydantic==1.10.7\n", - "pyDeprecate==0.3.2\n", - "pydub==0.25.1\n", - "Pygments==2.14.0\n", - "pylint==2.17.0\n", - "pynisher==0.6.4\n", - "pyparsing==3.0.9\n", - "pyrfr==0.8.3\n", - "pyrsistent==0.19.3\n", - "PySocks==1.7.1\n", - "pytesseract==0.3.10\n", - "pytest==7.2.2\n", - "python-dateutil==2.8.2\n", - "python-json-logger==2.0.7\n", - "python-jsonrpc-server==0.4.0\n", - "python-language-server==0.36.2\n", - "python-multipart==0.0.6\n", - "python-slugify==8.0.1\n", - "pytorch-lightning==2.0.0\n", - "pytz==2022.7.1\n", - "PyWavelets==1.4.1\n", - "PyYAML==6.0\n", - "pyzmq==25.0.2\n", - "qtconsole==5.4.1\n", - "QtPy==2.3.0\n", - "ray==2.2.0\n", - "regex==2023.3.23\n", - "requests==2.28.2\n", - "requests-oauthlib==1.3.1\n", - "requests-unixsocket==0.3.0\n", - "responses==0.18.0\n", - "rfc3339-validator==0.1.4\n", - "rfc3986-validator==0.1.1\n", - "rsa==4.9\n", - "scikit-image==0.20.0\n", - "scikit-learn==0.24.2\n", - "scipy==1.10.1\n", - "semantic-version==2.10.0\n", - "Send2Trash==1.8.0\n", - "sentencepiece==0.1.97\n", - "sentry-sdk==1.17.0\n", - "setproctitle==1.3.2\n", - "shapely==2.0.1\n", - "six==1.16.0\n", - "smac==1.2\n", - "smart-open==6.3.0\n", - "smmap==5.0.0\n", - "sniffio==1.3.0\n", - "sortedcontainers==2.4.0\n", - "soupsieve==2.4\n", - "spacy-legacy==3.0.12\n", - "spacy-loggers==1.0.4\n", - "srsly==2.4.6\n", - "stack-data==0.6.2\n", - "starlette==0.26.1\n", - "sympy==1.11.1\n", - "tabulate==0.9.0\n", - "tblib==1.7.0\n", - "tenacity==8.2.2\n", - "tensorboard==2.12.0\n", - "tensorboard-data-server==0.7.0\n", - "tensorboard-plugin-wit==1.8.1\n", - "tensorboardX==2.6\n", - "termcolor==2.2.0\n", - "terminado==0.17.1\n", - "testpath==0.6.0\n", - "text-unidecode==1.3\n", - "threadpoolctl==3.1.0\n", - "tifffile==2023.3.21\n", - "tinycss2==1.2.1\n", - "tokenizers==0.13.2\n", - "tomli==2.0.1\n", - "tomlkit==0.11.6\n", - "toolz==0.12.0\n", - "torch==2.0.0\n", - "torchdata==0.6.0\n", - "torchmetrics==0.11.4\n", - "torchtext==0.15.1\n", - "torchvision==0.15.1\n", - "tornado==6.2\n", - "tqdm==4.65.0\n", - "traitlets==5.9.0\n", - "transformers==4.26.1\n", - "trash-cli==0.23.2.13.2\n", - "triton==2.0.0\n", - "typer==0.7.0\n", - "typing==3.7.4.3\n", - "typing_extensions==4.5.0\n", - "uc-micro-py==1.0.1\n", - "ujson==5.7.0\n", - "uri-template==1.2.0\n", - "urllib3==1.26.15\n", - "uvicorn==0.21.1\n", - "virtualenv==20.21.0\n", - "wandb==0.14.2\n", - "wasabi==1.1.1\n", - "wcwidth==0.2.6\n", - "webcolors==1.12\n", - "webencodings==0.5.1\n", - "websocket-client==1.5.1\n", - "websockets==11.0.1\n", - "Werkzeug==2.2.3\n", - "widgetsnbextension==4.0.5\n", - "wrapt==1.15.0\n", - "xgboost==1.7.4\n", - "xxhash==3.2.0\n", - "yarl==1.8.2\n", - "zict==2.2.0\n", - "zipp==3.15.0\n", - "```\n", - "
" - ] - }, { "cell_type": "markdown", "id": "47af4f6b", @@ -426,26 +109,23 @@ }, { "cell_type": "code", - "execution_count": 254, + "execution_count": 2, "id": "8ccdc3b0", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-27T13:03:49.524541Z", + "start_time": "2023-04-27T13:03:29.372899Z" + } + }, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The nb_black extension is already loaded. To reload it, use:\n", - " %reload_ext nb_black\n" - ] - }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 254;\n", - " var nbb_unformatted_code = \"%load_ext nb_black\\n%matplotlib inline\\n\\n\\nimport collections\\nimport dataclasses\\nimport datasets\\nimport einops\\nimport enum\\nimport gradio\\nimport glob\\nimport IPython\\nimport imageio\\nimport json\\nimport functools\\nimport matplotlib.animation\\nimport matplotlib.pyplot as plt\\nimport numpy as np\\nimport os\\nimport PIL\\nimport pandas as pd\\nimport pprint\\nimport pytorch_lightning as pl\\nimport re\\nimport reprlib\\nimport torch\\nimport torchvision\\nimport tqdm.autonotebook\\nimport transformers\\nimport types\\nfrom typing import Literal\\nimport wandb\";\n", - " var nbb_formatted_code = \"%load_ext nb_black\\n%matplotlib inline\\n\\n\\nimport collections\\nimport dataclasses\\nimport datasets\\nimport einops\\nimport enum\\nimport gradio\\nimport glob\\nimport IPython\\nimport imageio\\nimport json\\nimport functools\\nimport matplotlib.animation\\nimport matplotlib.pyplot as plt\\nimport numpy as np\\nimport os\\nimport PIL\\nimport pandas as pd\\nimport pprint\\nimport pytorch_lightning as pl\\nimport re\\nimport reprlib\\nimport torch\\nimport torchvision\\nimport tqdm.autonotebook\\nimport transformers\\nimport types\\nfrom typing import Literal\\nimport wandb\";\n", + " var nbb_cell_id = 2;\n", + " var nbb_unformatted_code = \"%load_ext nb_black\\n%matplotlib inline\\n\\n\\nimport collections\\nimport dataclasses\\nimport datasets\\nimport einops\\nimport enum\\nimport gradio\\nimport glob\\nimport IPython\\nimport imageio\\nimport json\\nimport functools\\nimport matplotlib.animation\\nimport matplotlib.pyplot as plt\\nimport numpy as np\\nimport os\\nimport PIL\\nimport pandas as pd\\nimport pickle\\nimport pprint\\nimport pytorch_lightning as pl\\nimport rapidfuzz\\nimport re\\nimport reprlib\\nimport sklearn.metrics\\nimport torch\\nimport torchvision\\nimport tqdm.autonotebook\\nimport transformers\\nimport types\\nfrom typing import Callable, Literal\\nimport wandb\";\n", + " var nbb_formatted_code = \"%load_ext nb_black\\n%matplotlib inline\\n\\n\\nimport collections\\nimport dataclasses\\nimport datasets\\nimport einops\\nimport enum\\nimport gradio\\nimport glob\\nimport IPython\\nimport imageio\\nimport json\\nimport functools\\nimport matplotlib.animation\\nimport matplotlib.pyplot as plt\\nimport numpy as np\\nimport os\\nimport PIL\\nimport pandas as pd\\nimport pickle\\nimport pprint\\nimport pytorch_lightning as pl\\nimport rapidfuzz\\nimport re\\nimport reprlib\\nimport sklearn.metrics\\nimport torch\\nimport torchvision\\nimport tqdm.autonotebook\\nimport transformers\\nimport types\\nfrom typing import Callable, Literal\\nimport wandb\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -488,19 +168,43 @@ "import os\n", "import PIL\n", "import pandas as pd\n", + "import pickle\n", "import pprint\n", "import pytorch_lightning as pl\n", + "import rapidfuzz\n", "import re\n", "import reprlib\n", + "import sklearn.metrics\n", "import torch\n", "import torchvision\n", "import tqdm.autonotebook\n", "import transformers\n", "import types\n", - "from typing import Literal\n", + "from typing import Callable, Literal\n", "import wandb" ] }, + { + "cell_type": "markdown", + "id": "2b711a53", + "metadata": {}, + "source": [ + "### Requirements" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ad8e0f9f", + "metadata": {}, + "outputs": [], + "source": [ + "def pip_freeze_requirements():\n", + " !pip freeze > requirements.txt\n", + " \n", + "#pip_freeze_requirements()" + ] + }, { "cell_type": "markdown", "id": "77b39d61", @@ -511,18 +215,23 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "db1722f2", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:30.754713Z", + "start_time": "2023-04-18T15:47:30.740063Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 3;\n", - " var nbb_unformatted_code = \"COMPETITION = \\\"benetech-making-graphs-accessible\\\"\\nDEBUG: bool = True\\nDATA = types.SimpleNamespace()\\nTOKEN = types.SimpleNamespace()\\nCONFIG = types.SimpleNamespace()\\nMODEL = types.SimpleNamespace()\\nTRAINING = types.SimpleNamespace()\";\n", - " var nbb_formatted_code = \"COMPETITION = \\\"benetech-making-graphs-accessible\\\"\\nDEBUG: bool = True\\nDATA = types.SimpleNamespace()\\nTOKEN = types.SimpleNamespace()\\nCONFIG = types.SimpleNamespace()\\nMODEL = types.SimpleNamespace()\\nTRAINING = types.SimpleNamespace()\";\n", + " var nbb_cell_id = 2;\n", + " var nbb_unformatted_code = \"COMPETITION = \\\"benetech-making-graphs-accessible\\\"\\nDEBUG: bool = False\\nDATA = types.SimpleNamespace()\\nTOKEN = types.SimpleNamespace()\\nCONFIG = types.SimpleNamespace()\\nMODEL = types.SimpleNamespace()\\nTRAINING = types.SimpleNamespace()\";\n", + " var nbb_formatted_code = \"COMPETITION = \\\"benetech-making-graphs-accessible\\\"\\nDEBUG: bool = False\\nDATA = types.SimpleNamespace()\\nTOKEN = types.SimpleNamespace()\\nCONFIG = types.SimpleNamespace()\\nMODEL = types.SimpleNamespace()\\nTRAINING = types.SimpleNamespace()\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -545,7 +254,7 @@ ], "source": [ "COMPETITION = \"benetech-making-graphs-accessible\"\n", - "DEBUG: bool = True\n", + "DEBUG: bool = False\n", "DATA = types.SimpleNamespace()\n", "TOKEN = types.SimpleNamespace()\n", "CONFIG = types.SimpleNamespace()\n", @@ -563,18 +272,23 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "c2aefef2", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:30.801463Z", + "start_time": "2023-04-18T15:47:30.758086Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 4;\n", - " var nbb_unformatted_code = \"def make_new_markdown_section_with_link(section, header=\\\"##\\\", do_print=True):\\n section_id = section.replace(\\\" \\\", \\\"_\\\") + \\\"_\\\"\\n section_link = f\\\"{header} [{section}](#{section_id})\\\"\\n section_header = f\\\"{header} {section} \\\"\\n if do_print:\\n print(section_link + \\\"\\\\n\\\" + section_header)\\n return section_link, section_header\\n\\n\\ndef make_several_sections(\\n section_names=(\\n \\\"Description\\\",\\n \\\"Imports\\\",\\n \\\"Globals\\\",\\n \\\"Setup\\\",\\n \\\"Data\\\",\\n \\\"Data exploration\\\",\\n \\\"Model\\\",\\n \\\"Training\\\",\\n \\\"Results\\\",\\n )\\n):\\n links, headers = zip(\\n *[\\n make_new_markdown_section_with_link(sn, do_print=False)\\n for sn in section_names\\n ]\\n )\\n print(\\\"\\\\n\\\".join(links + (\\\"\\\",) + headers))\";\n", - " var nbb_formatted_code = \"def make_new_markdown_section_with_link(section, header=\\\"##\\\", do_print=True):\\n section_id = section.replace(\\\" \\\", \\\"_\\\") + \\\"_\\\"\\n section_link = f\\\"{header} [{section}](#{section_id})\\\"\\n section_header = f\\\"{header} {section} \\\"\\n if do_print:\\n print(section_link + \\\"\\\\n\\\" + section_header)\\n return section_link, section_header\\n\\n\\ndef make_several_sections(\\n section_names=(\\n \\\"Description\\\",\\n \\\"Imports\\\",\\n \\\"Globals\\\",\\n \\\"Setup\\\",\\n \\\"Data\\\",\\n \\\"Data exploration\\\",\\n \\\"Model\\\",\\n \\\"Training\\\",\\n \\\"Results\\\",\\n )\\n):\\n links, headers = zip(\\n *[\\n make_new_markdown_section_with_link(sn, do_print=False)\\n for sn in section_names\\n ]\\n )\\n print(\\\"\\\\n\\\".join(links + (\\\"\\\",) + headers))\";\n", + " var nbb_cell_id = 3;\n", + " var nbb_unformatted_code = \"def make_new_markdown_section_with_link(section, header=\\\"##\\\", do_print=True):\\n section_id = section.replace(\\\" \\\", \\\"_\\\") + \\\"_\\\"\\n section_link = f\\\"{header} [{section}](#{section_id})\\\"\\n section_header = f\\\"{header} {section} \\\"\\n if do_print:\\n print(section_link + \\\"\\\\n\\\" + section_header)\\n return section_link, section_header\\n\\n\\ndef make_several_sections(\\n section_names=(\\n \\\"Description\\\",\\n \\\"Imports\\\",\\n \\\"Globals\\\",\\n \\\"Setup\\\",\\n \\\"Data\\\",\\n \\\"Data exploration\\\",\\n \\\"Model\\\",\\n \\\"Training\\\",\\n \\\"Results\\\",\\n )\\n):\\n links, headers = zip(\\n *[\\n make_new_markdown_section_with_link(sn, do_print=False)\\n for sn in section_names\\n ]\\n )\\n print(\\\"\\\\n\\\".join(links + (\\\"\\\",) + headers))\\n\\n\\ndef print_python_libraries_requirements():\\n requirements = !pip freeze\\n requirements = \\\"\\\\n\\\".join(requirements)\\n requirements = (\\n f\\\"
\\\\n\\\"\\n f\\\"\\\\t Python requirements \\\\n\\\\n\\\"\\n f\\\"```\\\\n\\\"\\n f\\\"{requirements}\\\\n\\\"\\n f\\\"```\\\\n\\\"\\n f\\\"
\\\"\\n )\\n print(requirements)\";\n", + " var nbb_formatted_code = \"def make_new_markdown_section_with_link(section, header=\\\"##\\\", do_print=True):\\n section_id = section.replace(\\\" \\\", \\\"_\\\") + \\\"_\\\"\\n section_link = f\\\"{header} [{section}](#{section_id})\\\"\\n section_header = f\\\"{header} {section} \\\"\\n if do_print:\\n print(section_link + \\\"\\\\n\\\" + section_header)\\n return section_link, section_header\\n\\n\\ndef make_several_sections(\\n section_names=(\\n \\\"Description\\\",\\n \\\"Imports\\\",\\n \\\"Globals\\\",\\n \\\"Setup\\\",\\n \\\"Data\\\",\\n \\\"Data exploration\\\",\\n \\\"Model\\\",\\n \\\"Training\\\",\\n \\\"Results\\\",\\n )\\n):\\n links, headers = zip(\\n *[\\n make_new_markdown_section_with_link(sn, do_print=False)\\n for sn in section_names\\n ]\\n )\\n print(\\\"\\\\n\\\".join(links + (\\\"\\\",) + headers))\\n\\n\\ndef print_python_libraries_requirements():\\n requirements = !pip freeze\\n requirements = \\\"\\\\n\\\".join(requirements)\\n requirements = (\\n f\\\"
\\\\n\\\"\\n f\\\"\\\\t Python requirements \\\\n\\\\n\\\"\\n f\\\"```\\\\n\\\"\\n f\\\"{requirements}\\\\n\\\"\\n f\\\"```\\\\n\\\"\\n f\\\"
\\\"\\n )\\n print(requirements)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -624,7 +338,7 @@ " for sn in section_names\n", " ]\n", " )\n", - " print(\"\\n\".join(links + (\"\",) + headers))" + " print(\"\\n\".join(links + (\"\",) + headers))\n" ] }, { @@ -637,16 +351,21 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "1e7c72a6", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:30.847062Z", + "start_time": "2023-04-18T15:47:30.804015Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 5;\n", + " var nbb_cell_id = 4;\n", " var nbb_unformatted_code = \"def mkdir(path, error_if_exists=False):\\n !mkdir {\\\"-p\\\" if not error_if_exists else \\\"\\\"} {path}\\n\\n\\ndef unzip(zip_path, save_path=None, delete_zip=False):\\n !unzip {zip_path} {\\\"-d \\\"+ save_path if save_path else \\\"\\\"}\\n if delete_zip:\\n for path in glob.glob(zip_path):\\n if path.endswith(\\\".zip\\\"):\\n !trash {path}\\n\\n\\ndef unzip_to_data_and_delete():\\n unzip(\\\"data/*\\\", \\\"data\\\", delete_zip=True)\";\n", " var nbb_formatted_code = \"def mkdir(path, error_if_exists=False):\\n !mkdir {\\\"-p\\\" if not error_if_exists else \\\"\\\"} {path}\\n\\n\\ndef unzip(zip_path, save_path=None, delete_zip=False):\\n !unzip {zip_path} {\\\"-d \\\"+ save_path if save_path else \\\"\\\"}\\n if delete_zip:\\n for path in glob.glob(zip_path):\\n if path.endswith(\\\".zip\\\"):\\n !trash {path}\\n\\n\\ndef unzip_to_data_and_delete():\\n unzip(\\\"data/*\\\", \\\"data\\\", delete_zip=True)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", @@ -696,16 +415,21 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "aae473b0", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:30.868185Z", + "start_time": "2023-04-18T15:47:30.851313Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 6;\n", + " var nbb_cell_id = 5;\n", " var nbb_unformatted_code = \"def kaggle_competitions_search(search_term):\\n !kaggle competitions list -s {search_term}\\n\\n\\ndef kaggle_competitions_files(competition):\\n !kaggle competitions files {competition}\\n\\n\\ndef kaggle_competitions_download(competition, save_path=\\\"data\\\", filename=None):\\n mkdir(save_path)\\n !kaggle competitions download -p {save_path} {\\\"-f \\\" + filename if filename else \\\"\\\"} {competition}\\n\\n\\ndef kaggle_competitions_submit(competition, filename, message=\\\"submit\\\"):\\n !kaggle competitions submit -f {filename} -m {message} {competition}\\n\\n\\ndef kaggle_competitions_submissions(competition):\\n !kaggle competitions submissions {competition}\";\n", " var nbb_formatted_code = \"def kaggle_competitions_search(search_term):\\n !kaggle competitions list -s {search_term}\\n\\n\\ndef kaggle_competitions_files(competition):\\n !kaggle competitions files {competition}\\n\\n\\ndef kaggle_competitions_download(competition, save_path=\\\"data\\\", filename=None):\\n mkdir(save_path)\\n !kaggle competitions download -p {save_path} {\\\"-f \\\" + filename if filename else \\\"\\\"} {competition}\\n\\n\\ndef kaggle_competitions_submit(competition, filename, message=\\\"submit\\\"):\\n !kaggle competitions submit -f {filename} -m {message} {competition}\\n\\n\\ndef kaggle_competitions_submissions(competition):\\n !kaggle competitions submissions {competition}\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", @@ -752,17 +476,22 @@ }, { "cell_type": "markdown", - "id": "04f5009a", + "id": "0fdfe95e", "metadata": {}, "source": [ - "### Environment variables " + "### Gpu server" ] }, { "cell_type": "code", "execution_count": 7, - "id": "18964650", - "metadata": {}, + "id": "f5ba27be", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:30.967413Z", + "start_time": "2023-04-18T15:47:30.909020Z" + } + }, "outputs": [ { "data": { @@ -770,8 +499,8 @@ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 7;\n", - " var nbb_unformatted_code = \"def set_tokenizers_parallelism(enable: bool):\\n os.environ[\\\"TOKENIZERS_PARALLELISM\\\"] = \\\"true\\\" if enable else \\\"false\\\"\\n\\n\\ndef set_torch_device_order_pci_bus():\\n os.environ[\\\"CUDA_DEVICE_ORDER\\\"] = \\\"PCI_BUS_ID\\\"\\n\\n\\nset_tokenizers_parallelism(False)\\nset_torch_device_order_pci_bus()\";\n", - " var nbb_formatted_code = \"def set_tokenizers_parallelism(enable: bool):\\n os.environ[\\\"TOKENIZERS_PARALLELISM\\\"] = \\\"true\\\" if enable else \\\"false\\\"\\n\\n\\ndef set_torch_device_order_pci_bus():\\n os.environ[\\\"CUDA_DEVICE_ORDER\\\"] = \\\"PCI_BUS_ID\\\"\\n\\n\\nset_tokenizers_parallelism(False)\\nset_torch_device_order_pci_bus()\";\n", + " var nbb_unformatted_code = \"def get_shad_server_username_and_telegram_id_pairs(\\n copy_pasted_table: str or None = None,\\n) -> list[str, str]:\\n table_url = \\\"https://docs.google.com/spreadsheets/u/1/d/e/2PACX-1vRNGT6OeI7zKVFzYPoqmTPh1jCfeVjRLSvFziVgRleyFTOHi1GU39ERo_UixTGcgydG7QcurnSmHgSW/pubhtml?gid=1404550339&single=true\\\"\\n\\n if copy_pasted_table is not None:\\n table = copy_pasted_table\\n else:\\n home = os.environ[\\\"HOME\\\"]\\n table = open(f\\\"{home}/shad_server_username_to_telegram.txt\\\").read()\\n\\n shad_server_username_and_telegram_id_pairs = []\\n for row in table.splitlines():\\n if row.count(\\\"\\\\t\\\") == 0:\\n continue\\n cols = row.split(\\\"\\\\t\\\")\\n shad_server_username = cols[-2]\\n telegram_id = cols[-1]\\n shad_server_username_and_telegram_id_pairs.append(\\n (shad_server_username, telegram_id)\\n )\\n\\n return shad_server_username_and_telegram_id_pairs\\n\\n\\ndef get_nvidia_smi_pid_column():\\n nvidia_smi_pid_column = !nvidia-smi | awk '{print $5}'\\n return nvidia_smi_pid_column\\n\\n\\ndef get_pid_username(pid: int) -> str:\\n username = !ps -o uname= -p {pid}\\n return username[0]\\n\\n\\ndef get_usernames_using_gpu() -> list[str]:\\n nvidia_smi_pid_column = get_nvidia_smi_pid_column()\\n pids_using_gpu = []\\n for row in nvidia_smi_pid_column[::-1]:\\n if row == \\\"PID\\\":\\n break\\n try:\\n pid = int(row)\\n except ValueError:\\n continue\\n pids_using_gpu.append(int(pid))\\n\\n usernames_using_gpu = [get_pid_username(pid) for pid in pids_using_gpu]\\n usernames_using_gpu = list(set(usernames_using_gpu))\\n return usernames_using_gpu\\n\\n\\ndef print_telegram_usernames_using_gpu(table: str or None = None):\\n server_to_telegram = dict(get_shad_server_username_and_telegram_id_pairs(table))\\n usernames_using_gpu = get_usernames_using_gpu()\\n\\n telegram_usernames_using_gpu = []\\n server_usernames_with_unknown_telegram_id = []\\n for username in usernames_using_gpu:\\n if username in server_to_telegram:\\n telegram_usernames_using_gpu.append(server_to_telegram[username])\\n else:\\n server_usernames_with_unknown_telegram_id.append(username)\\n\\n print(\\\"Telegram id of users using gpu:\\\")\\n print(\\\"\\\\n\\\".join(telegram_usernames_using_gpu))\\n\\n if server_usernames_with_unknown_telegram_id:\\n print(\\\"Telegram id is unknown for users:\\\")\\n print(\\\"\\\\n\\\".join(server_usernames_with_unknown_telegram_id))\";\n", + " var nbb_formatted_code = \"def get_shad_server_username_and_telegram_id_pairs(\\n copy_pasted_table: str or None = None,\\n) -> list[str, str]:\\n table_url = \\\"https://docs.google.com/spreadsheets/u/1/d/e/2PACX-1vRNGT6OeI7zKVFzYPoqmTPh1jCfeVjRLSvFziVgRleyFTOHi1GU39ERo_UixTGcgydG7QcurnSmHgSW/pubhtml?gid=1404550339&single=true\\\"\\n\\n if copy_pasted_table is not None:\\n table = copy_pasted_table\\n else:\\n home = os.environ[\\\"HOME\\\"]\\n table = open(f\\\"{home}/shad_server_username_to_telegram.txt\\\").read()\\n\\n shad_server_username_and_telegram_id_pairs = []\\n for row in table.splitlines():\\n if row.count(\\\"\\\\t\\\") == 0:\\n continue\\n cols = row.split(\\\"\\\\t\\\")\\n shad_server_username = cols[-2]\\n telegram_id = cols[-1]\\n shad_server_username_and_telegram_id_pairs.append(\\n (shad_server_username, telegram_id)\\n )\\n\\n return shad_server_username_and_telegram_id_pairs\\n\\n\\ndef get_nvidia_smi_pid_column():\\n nvidia_smi_pid_column = !nvidia-smi | awk '{print $5}'\\n return nvidia_smi_pid_column\\n\\n\\ndef get_pid_username(pid: int) -> str:\\n username = !ps -o uname= -p {pid}\\n return username[0]\\n\\n\\ndef get_usernames_using_gpu() -> list[str]:\\n nvidia_smi_pid_column = get_nvidia_smi_pid_column()\\n pids_using_gpu = []\\n for row in nvidia_smi_pid_column[::-1]:\\n if row == \\\"PID\\\":\\n break\\n try:\\n pid = int(row)\\n except ValueError:\\n continue\\n pids_using_gpu.append(int(pid))\\n\\n usernames_using_gpu = [get_pid_username(pid) for pid in pids_using_gpu]\\n usernames_using_gpu = list(set(usernames_using_gpu))\\n return usernames_using_gpu\\n\\n\\ndef print_telegram_usernames_using_gpu(table: str or None = None):\\n server_to_telegram = dict(get_shad_server_username_and_telegram_id_pairs(table))\\n usernames_using_gpu = get_usernames_using_gpu()\\n\\n telegram_usernames_using_gpu = []\\n server_usernames_with_unknown_telegram_id = []\\n for username in usernames_using_gpu:\\n if username in server_to_telegram:\\n telegram_usernames_using_gpu.append(server_to_telegram[username])\\n else:\\n server_usernames_with_unknown_telegram_id.append(username)\\n\\n print(\\\"Telegram id of users using gpu:\\\")\\n print(\\\"\\\\n\\\".join(telegram_usernames_using_gpu))\\n\\n if server_usernames_with_unknown_telegram_id:\\n print(\\\"Telegram id is unknown for users:\\\")\\n print(\\\"\\\\n\\\".join(server_usernames_with_unknown_telegram_id))\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -793,40 +522,105 @@ } ], "source": [ - "def set_tokenizers_parallelism(enable: bool):\n", - " os.environ[\"TOKENIZERS_PARALLELISM\"] = \"true\" if enable else \"false\"\n", + "def get_shad_server_username_and_telegram_id_pairs(\n", + " copy_pasted_table: str or None = None,\n", + ") -> list[str, str]:\n", + " table_url = \"https://docs.google.com/spreadsheets/u/1/d/e/2PACX-1vRNGT6OeI7zKVFzYPoqmTPh1jCfeVjRLSvFziVgRleyFTOHi1GU39ERo_UixTGcgydG7QcurnSmHgSW/pubhtml?gid=1404550339&single=true\"\n", + "\n", + " if copy_pasted_table is not None:\n", + " table = copy_pasted_table\n", + " else:\n", + " home = os.environ[\"HOME\"]\n", + " table = open(f\"{home}/shad_server_username_to_telegram.txt\").read()\n", "\n", + " shad_server_username_and_telegram_id_pairs = []\n", + " for row in table.splitlines():\n", + " if row.count(\"\\t\") == 0:\n", + " continue\n", + " cols = row.split(\"\\t\")\n", + " shad_server_username = cols[-2]\n", + " telegram_id = cols[-1]\n", + " shad_server_username_and_telegram_id_pairs.append(\n", + " (shad_server_username, telegram_id)\n", + " )\n", "\n", - "def set_torch_device_order_pci_bus():\n", - " os.environ[\"CUDA_DEVICE_ORDER\"] = \"PCI_BUS_ID\"\n", + " return shad_server_username_and_telegram_id_pairs\n", "\n", "\n", - "set_tokenizers_parallelism(False)\n", - "set_torch_device_order_pci_bus()" + "def get_nvidia_smi_pid_column():\n", + " nvidia_smi_pid_column = !nvidia-smi | awk '{print $5}'\n", + " return nvidia_smi_pid_column\n", + "\n", + "\n", + "def get_pid_username(pid: int) -> str:\n", + " username = !ps -o uname= -p {pid}\n", + " return username[0]\n", + "\n", + "\n", + "def get_usernames_using_gpu() -> list[str]:\n", + " nvidia_smi_pid_column = get_nvidia_smi_pid_column()\n", + " pids_using_gpu = []\n", + " for row in nvidia_smi_pid_column[::-1]:\n", + " if row == \"PID\":\n", + " break\n", + " try:\n", + " pid = int(row)\n", + " except ValueError:\n", + " continue\n", + " pids_using_gpu.append(int(pid))\n", + "\n", + " usernames_using_gpu = [get_pid_username(pid) for pid in pids_using_gpu]\n", + " usernames_using_gpu = list(set(usernames_using_gpu))\n", + " return usernames_using_gpu\n", + "\n", + "\n", + "def print_telegram_usernames_using_gpu(table: str or None = None):\n", + " server_to_telegram = dict(get_shad_server_username_and_telegram_id_pairs(table))\n", + " usernames_using_gpu = get_usernames_using_gpu()\n", + "\n", + " telegram_usernames_using_gpu = []\n", + " server_usernames_with_unknown_telegram_id = []\n", + " for username in usernames_using_gpu:\n", + " if username in server_to_telegram:\n", + " telegram_usernames_using_gpu.append(server_to_telegram[username])\n", + " else:\n", + " server_usernames_with_unknown_telegram_id.append(username)\n", + "\n", + " print(\"Telegram id of users using gpu:\")\n", + " print(\"\\n\".join(telegram_usernames_using_gpu))\n", + "\n", + " if server_usernames_with_unknown_telegram_id:\n", + " print(\"Telegram id is unknown for users:\")\n", + " print(\"\\n\".join(server_usernames_with_unknown_telegram_id))" ] }, { "cell_type": "markdown", - "id": "cdf2b470", + "id": "a5626f18", "metadata": {}, "source": [ - "## Data " + "### Environment variables " ] }, { "cell_type": "code", - "execution_count": 8, - "id": "098e77ae", - "metadata": {}, + "execution_count": 6, + "id": "e496647d", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:30.899947Z", + "start_time": "2023-04-18T15:47:30.872176Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 8;\n", - " var nbb_unformatted_code = \"if not os.path.exists(\\\"data\\\"):\\n kaggle_competitions_download(COMPETITION)\\n unzip_to_data_and_delete()\";\n", - " var nbb_formatted_code = \"if not os.path.exists(\\\"data\\\"):\\n kaggle_competitions_download(COMPETITION)\\n unzip_to_data_and_delete()\";\n", + " var nbb_cell_id = 6;\n", + " var nbb_unformatted_code = \"def set_tokenizers_parallelism(enable: bool):\\n os.environ[\\\"TOKENIZERS_PARALLELISM\\\"] = \\\"true\\\" if enable else \\\"false\\\"\\n\\n\\ndef set_torch_device_order_pci_bus():\\n os.environ[\\\"CUDA_DEVICE_ORDER\\\"] = \\\"PCI_BUS_ID\\\"\\n\\n\\nset_tokenizers_parallelism(False)\\nset_torch_device_order_pci_bus()\";\n", + " var nbb_formatted_code = \"def set_tokenizers_parallelism(enable: bool):\\n os.environ[\\\"TOKENIZERS_PARALLELISM\\\"] = \\\"true\\\" if enable else \\\"false\\\"\\n\\n\\ndef set_torch_device_order_pci_bus():\\n os.environ[\\\"CUDA_DEVICE_ORDER\\\"] = \\\"PCI_BUS_ID\\\"\\n\\n\\nset_tokenizers_parallelism(False)\\nset_torch_device_order_pci_bus()\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -848,25 +642,45 @@ } ], "source": [ - "if not os.path.exists(\"data\"):\n", - " kaggle_competitions_download(COMPETITION)\n", - " unzip_to_data_and_delete()" + "def set_tokenizers_parallelism(enable: bool):\n", + " os.environ[\"TOKENIZERS_PARALLELISM\"] = \"true\" if enable else \"false\"\n", + "\n", + "\n", + "def set_torch_device_order_pci_bus():\n", + " os.environ[\"CUDA_DEVICE_ORDER\"] = \"PCI_BUS_ID\"\n", + "\n", + "\n", + "set_tokenizers_parallelism(False)\n", + "set_torch_device_order_pci_bus()" ] }, { - "cell_type": "code", - "execution_count": 9, - "id": "011094f0", + "cell_type": "markdown", + "id": "202c992a", "metadata": {}, + "source": [ + "### Utils " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "7a52ce27", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-25T19:29:59.305379Z", + "start_time": "2023-04-25T19:29:59.169804Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 9;\n", - " var nbb_unformatted_code = \"def path_to_dict(path, print_only_last_dirname=False):\\n dirpath, dirnames, filenames = next(os.walk(path))\\n path_contents = filenames\\n\\n for dirname in dirnames:\\n full_dirname = os.path.join(path, dirname)\\n path_contents.append(path_to_dict(full_dirname, print_only_last_dirname=True))\\n\\n if print_only_last_dirname:\\n path = os.path.split(path)[-1]\\n\\n return {path: path_contents}\\n\\n\\ndef pprint_path_contents(path):\\n path_dict = path_to_dict(path)\\n short_path_repr = reprlib.repr(path_dict)\\n short_path_dict = eval(short_path_repr)\\n string = pprint.pformat(short_path_dict).replace(\\\"Ellipsis\\\", \\\"...\\\")\\n print(string)\";\n", - " var nbb_formatted_code = \"def path_to_dict(path, print_only_last_dirname=False):\\n dirpath, dirnames, filenames = next(os.walk(path))\\n path_contents = filenames\\n\\n for dirname in dirnames:\\n full_dirname = os.path.join(path, dirname)\\n path_contents.append(path_to_dict(full_dirname, print_only_last_dirname=True))\\n\\n if print_only_last_dirname:\\n path = os.path.split(path)[-1]\\n\\n return {path: path_contents}\\n\\n\\ndef pprint_path_contents(path):\\n path_dict = path_to_dict(path)\\n short_path_repr = reprlib.repr(path_dict)\\n short_path_dict = eval(short_path_repr)\\n string = pprint.pformat(short_path_dict).replace(\\\"Ellipsis\\\", \\\"...\\\")\\n print(string)\";\n", + " var nbb_cell_id = 17;\n", + " var nbb_unformatted_code = \"def path_to_dict(path, print_only_last_dirname=False):\\n dirpath, dirnames, filenames = next(os.walk(path))\\n path_contents = filenames\\n\\n for dirname in dirnames:\\n full_dirname = os.path.join(path, dirname)\\n path_contents.append(path_to_dict(full_dirname, print_only_last_dirname=True))\\n\\n if print_only_last_dirname:\\n path = os.path.split(path)[-1]\\n\\n return {path: path_contents}\\n\\n\\ndef pprint_path_contents(path):\\n path_dict = path_to_dict(path)\\n short_path_repr = reprlib.repr(path_dict)\\n short_path_dict = eval(short_path_repr)\\n string = pprint.pformat(short_path_dict).replace(\\\"Ellipsis\\\", \\\"...\\\")\\n print(string)\\n \\n \\ndef load_pickle_or_build_object_and_save(pickle_path:str, build_object: Callable[[], \\\"T\\\"]) -> \\\"T\\\":\\n if not os.path.exists(pickle_path):\\n pickle.dump(build_object(), open(pickle_path, \\\"wb\\\"))\\n else:\\n print(f\\\"Reusing object {pickle_path}.\\\")\\n return pickle.load(open(pickle_path, \\\"rb\\\"))\";\n", + " var nbb_formatted_code = \"def path_to_dict(path, print_only_last_dirname=False):\\n dirpath, dirnames, filenames = next(os.walk(path))\\n path_contents = filenames\\n\\n for dirname in dirnames:\\n full_dirname = os.path.join(path, dirname)\\n path_contents.append(path_to_dict(full_dirname, print_only_last_dirname=True))\\n\\n if print_only_last_dirname:\\n path = os.path.split(path)[-1]\\n\\n return {path: path_contents}\\n\\n\\ndef pprint_path_contents(path):\\n path_dict = path_to_dict(path)\\n short_path_repr = reprlib.repr(path_dict)\\n short_path_dict = eval(short_path_repr)\\n string = pprint.pformat(short_path_dict).replace(\\\"Ellipsis\\\", \\\"...\\\")\\n print(string)\\n\\n\\ndef load_pickle_or_build_object_and_save(\\n pickle_path: str, build_object: Callable[[], \\\"T\\\"]\\n) -> \\\"T\\\":\\n if not os.path.exists(pickle_path):\\n pickle.dump(build_object(), open(pickle_path, \\\"wb\\\"))\\n else:\\n print(f\\\"Reusing object {pickle_path}.\\\")\\n return pickle.load(open(pickle_path, \\\"rb\\\"))\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -907,14 +721,82 @@ " short_path_repr = reprlib.repr(path_dict)\n", " short_path_dict = eval(short_path_repr)\n", " string = pprint.pformat(short_path_dict).replace(\"Ellipsis\", \"...\")\n", - " print(string)" + " print(string)\n", + "\n", + "\n", + "def load_pickle_or_build_object_and_save(\n", + " pickle_path: str, build_object: Callable[[], \"T\"]\n", + ") -> \"T\":\n", + " if not os.path.exists(pickle_path):\n", + " pickle.dump(build_object(), open(pickle_path, \"wb\"))\n", + " else:\n", + " print(f\"Reusing object {pickle_path}.\")\n", + " return pickle.load(open(pickle_path, \"rb\"))" + ] + }, + { + "cell_type": "markdown", + "id": "cdf2b470", + "metadata": {}, + "source": [ + "## Data " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "098e77ae", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:30.981098Z", + "start_time": "2023-04-18T15:47:30.971522Z" + } + }, + "outputs": [ + { + "data": { + "application/javascript": [ + "\n", + " setTimeout(function() {\n", + " var nbb_cell_id = 8;\n", + " var nbb_unformatted_code = \"if not os.path.exists(\\\"data\\\"):\\n kaggle_competitions_download(COMPETITION)\\n unzip_to_data_and_delete()\";\n", + " var nbb_formatted_code = \"if not os.path.exists(\\\"data\\\"):\\n kaggle_competitions_download(COMPETITION)\\n unzip_to_data_and_delete()\";\n", + " var nbb_cells = Jupyter.notebook.get_cells();\n", + " for (var i = 0; i < nbb_cells.length; ++i) {\n", + " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", + " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", + " nbb_cells[i].set_text(nbb_formatted_code);\n", + " }\n", + " break;\n", + " }\n", + " }\n", + " }, 500);\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "if not os.path.exists(\"data\"):\n", + " kaggle_competitions_download(COMPETITION)\n", + " unzip_to_data_and_delete()" ] }, { "cell_type": "code", "execution_count": 10, "id": "1c7232a4", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:31.219671Z", + "start_time": "2023-04-18T15:47:31.028004Z" + } + }, "outputs": [ { "name": "stdout", @@ -976,18 +858,23 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 8, "id": "c0a85e8a", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-27T13:04:21.517594Z", + "start_time": "2023-04-27T13:04:21.491793Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 11;\n", - " var nbb_unformatted_code = \"@functools.cache\\ndef load_train_image_ids() -> list[str]:\\n train_image_ids = [i.replace(\\\".jpg\\\", \\\"\\\") for i in os.listdir(\\\"data/train/images\\\")]\\n return train_image_ids[: 1000 if DEBUG else None]\\n\\n\\n@functools.cache\\ndef load_test_image_ids() -> list[str]:\\n return [i.replace(\\\".jpg\\\", \\\"\\\") for i in os.listdir(\\\"data/test/images\\\")]\\n\\n\\ndef load_image_annotation(image_id: str) -> dict:\\n return json.load(open(f\\\"data/train/annotations/{image_id}.json\\\"))\\n\\n\\ndef load_image(image_id: str) -> np.ndarray:\\n return imageio.v3.imread(open(f\\\"data/train/images/{image_id}.jpg\\\", \\\"rb\\\"))\";\n", - " var nbb_formatted_code = \"@functools.cache\\ndef load_train_image_ids() -> list[str]:\\n train_image_ids = [i.replace(\\\".jpg\\\", \\\"\\\") for i in os.listdir(\\\"data/train/images\\\")]\\n return train_image_ids[: 1000 if DEBUG else None]\\n\\n\\n@functools.cache\\ndef load_test_image_ids() -> list[str]:\\n return [i.replace(\\\".jpg\\\", \\\"\\\") for i in os.listdir(\\\"data/test/images\\\")]\\n\\n\\ndef load_image_annotation(image_id: str) -> dict:\\n return json.load(open(f\\\"data/train/annotations/{image_id}.json\\\"))\\n\\n\\ndef load_image(image_id: str) -> np.ndarray:\\n return imageio.v3.imread(open(f\\\"data/train/images/{image_id}.jpg\\\", \\\"rb\\\"))\";\n", + " var nbb_cell_id = 8;\n", + " var nbb_unformatted_code = \"@functools.cache\\ndef load_train_image_ids() -> list[str]:\\n train_image_ids = [i.replace(\\\".jpg\\\", \\\"\\\") for i in os.listdir(\\\"data/train/images\\\")]\\n return train_image_ids[: 1000 if DEBUG else None]\\n\\n\\n@functools.cache\\ndef load_test_image_ids() -> list[str]:\\n return [i.replace(\\\".jpg\\\", \\\"\\\") for i in os.listdir(\\\"data/test/images\\\")]\\n\\n\\n@functools.cache\\ndef load_image_annotation(image_id: str) -> dict:\\n return json.load(open(f\\\"data/train/annotations/{image_id}.json\\\"))\\n\\n\\ndef load_image(image_id: str) -> np.ndarray:\\n return imageio.v3.imread(open(f\\\"data/train/images/{image_id}.jpg\\\", \\\"rb\\\"))\";\n", + " var nbb_formatted_code = \"@functools.cache\\ndef load_train_image_ids() -> list[str]:\\n train_image_ids = [i.replace(\\\".jpg\\\", \\\"\\\") for i in os.listdir(\\\"data/train/images\\\")]\\n return train_image_ids[: 1000 if DEBUG else None]\\n\\n\\n@functools.cache\\ndef load_test_image_ids() -> list[str]:\\n return [i.replace(\\\".jpg\\\", \\\"\\\") for i in os.listdir(\\\"data/test/images\\\")]\\n\\n\\n@functools.cache\\ndef load_image_annotation(image_id: str) -> dict:\\n return json.load(open(f\\\"data/train/annotations/{image_id}.json\\\"))\\n\\n\\ndef load_image(image_id: str) -> np.ndarray:\\n return imageio.v3.imread(open(f\\\"data/train/images/{image_id}.jpg\\\", \\\"rb\\\"))\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -1020,6 +907,7 @@ " return [i.replace(\".jpg\", \"\") for i in os.listdir(\"data/test/images\")]\n", "\n", "\n", + "@functools.cache\n", "def load_image_annotation(image_id: str) -> dict:\n", " return json.load(open(f\"data/train/annotations/{image_id}.json\"))\n", "\n", @@ -1040,7 +928,12 @@ "cell_type": "code", "execution_count": 12, "id": "1e98517b", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:31.349287Z", + "start_time": "2023-04-18T15:47:31.250789Z" + } + }, "outputs": [ { "data": { @@ -1048,8 +941,8 @@ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 12;\n", - " var nbb_unformatted_code = \"class Source(enum.Enum):\\n generated = \\\"generated\\\"\\n extracted = \\\"extracted\\\"\\n\\n\\nclass ChartType(enum.Enum):\\n dot = \\\"dot\\\"\\n horizontal_bar = \\\"horizontal_bar\\\"\\n vertical_bar = \\\"vertical_bar\\\"\\n line = \\\"line\\\"\\n scatter = \\\"scatter\\\"\\n\\n\\n@dataclasses.dataclass\\nclass PlotBoundingBox:\\n height: int\\n width: int\\n x0: int\\n y0: int\\n\\n def get_bounds(self):\\n xs = [self.x0, self.x0 + self.width, self.x0 + self.width, self.x0, self.x0]\\n ys = [self.y0, self.y0, self.y0 + self.height, self.y0 + self.height, self.y0]\\n return xs, ys\\n\\n\\n@dataclasses.dataclass\\nclass DataPoint:\\n x: float or str\\n y: float or str\\n\\n\\nclass TextRole(enum.Enum):\\n axis_title = \\\"axis_title\\\"\\n chart_title = \\\"chart_title\\\"\\n legend_label = \\\"legend_label\\\"\\n tick_grouping = \\\"tick_grouping\\\"\\n tick_label = \\\"tick_label\\\"\\n other = \\\"other\\\"\\n\\n\\n@dataclasses.dataclass\\nclass Polygon:\\n x0: int\\n x1: int\\n x2: int\\n x3: int\\n y0: int\\n y1: int\\n y2: int\\n y3: int\\n\\n def get_bounds(self):\\n xs = [\\n self.x0,\\n self.x1,\\n self.x2,\\n self.x3,\\n self.x0,\\n ]\\n ys = [\\n self.y0,\\n self.y1,\\n self.y2,\\n self.y3,\\n self.y0,\\n ]\\n return xs, ys\\n\\n\\n@dataclasses.dataclass\\nclass Text:\\n id: int\\n polygon: Polygon\\n role: TextRole\\n text: str\\n\\n def __post_init__(self):\\n self.polygon = Polygon(**self.polygon)\\n self.role = TextRole(self.role)\\n\\n\\nclass ValuesType(enum.Enum):\\n categorical = \\\"categorical\\\"\\n numerical = \\\"numerical\\\"\\n\\n\\n@dataclasses.dataclass\\nclass Tick:\\n id: int\\n x: int\\n y: int\\n\\n\\nclass TickType(enum.Enum):\\n markers = \\\"markers\\\"\\n separators = \\\"separators\\\"\\n\\n\\n@dataclasses.dataclass\\nclass Axis:\\n values_type: ValuesType\\n tick_type: TickType\\n ticks: list[Tick]\\n\\n def __post_init__(self):\\n self.values_type = ValuesType(self.values_type)\\n self.tick_type = TickType(self.tick_type)\\n self.ticks = [\\n Tick(id=kw[\\\"id\\\"], x=kw[\\\"tick_pt\\\"][\\\"x\\\"], y=kw[\\\"tick_pt\\\"][\\\"y\\\"])\\n for kw in self.ticks\\n ]\\n\\n def get_bounds(self):\\n min_x = min(tick.x for tick in self.ticks)\\n max_x = max(tick.x for tick in self.ticks)\\n min_y = min(tick.y for tick in self.ticks)\\n max_y = max(tick.y for tick in self.ticks)\\n xs = [min_x, max_x, max_x, min_x, min_x]\\n ys = [min_y, min_y, max_y, max_y, min_y]\\n return xs, ys\\n\\n\\ndef convert_dashes_to_underscores_in_key_names(dictionary):\\n return {k.replace(\\\"-\\\", \\\"_\\\"): v for k, v in dictionary.items()}\\n\\n\\n@dataclasses.dataclass\\nclass Axes:\\n x_axis: Axis\\n y_axis: Axis\\n\\n def __post_init__(self):\\n self.x_axis = Axis(**convert_dashes_to_underscores_in_key_names(self.x_axis))\\n self.y_axis = Axis(**convert_dashes_to_underscores_in_key_names(self.y_axis))\\n\\n\\ndef preprocess_numerical_value(value):\\n value = float(value)\\n value = 0 if np.isnan(value) else value\\n return value\\n\\n\\ndef preprocess_value(value, value_type: ValuesType):\\n if value_type == ValuesType.numerical:\\n return preprocess_numerical_value(value)\\n else:\\n return str(value)\\n\\n\\n@dataclasses.dataclass\\nclass Annotation:\\n source: Source\\n chart_type: ChartType\\n plot_bb: PlotBoundingBox\\n text: list[Text]\\n axes: Axes\\n data_series: list[DataPoint]\\n\\n def __post_init__(self):\\n self.source = Source(self.source)\\n self.chart_type = ChartType(self.chart_type)\\n self.plot_bb = PlotBoundingBox(**self.plot_bb)\\n self.text = [Text(**kw) for kw in self.text]\\n self.axes = Axes(**convert_dashes_to_underscores_in_key_names(self.axes))\\n self.data_series = [DataPoint(**kw) for kw in self.data_series]\\n\\n for i in range(len(self.data_series)):\\n self.data_series[i].x = preprocess_value(\\n self.data_series[i].x, self.axes.x_axis.values_type\\n )\\n self.data_series[i].y = preprocess_value(\\n self.data_series[i].y, self.axes.y_axis.values_type\\n )\\n\\n @staticmethod\\n def from_dict_with_dashes(kwargs):\\n return Annotation(**convert_dashes_to_underscores_in_key_names(kwargs))\\n\\n def get_text_by_role(self, text_role: TextRole) -> list[Text]:\\n return [t for t in self.text if t.role == text_role]\\n\\n\\n@dataclasses.dataclass\\nclass AnnotatedImage:\\n id: str\\n image: np.ndarray\\n annotation: Annotation\";\n", - " var nbb_formatted_code = \"class Source(enum.Enum):\\n generated = \\\"generated\\\"\\n extracted = \\\"extracted\\\"\\n\\n\\nclass ChartType(enum.Enum):\\n dot = \\\"dot\\\"\\n horizontal_bar = \\\"horizontal_bar\\\"\\n vertical_bar = \\\"vertical_bar\\\"\\n line = \\\"line\\\"\\n scatter = \\\"scatter\\\"\\n\\n\\n@dataclasses.dataclass\\nclass PlotBoundingBox:\\n height: int\\n width: int\\n x0: int\\n y0: int\\n\\n def get_bounds(self):\\n xs = [self.x0, self.x0 + self.width, self.x0 + self.width, self.x0, self.x0]\\n ys = [self.y0, self.y0, self.y0 + self.height, self.y0 + self.height, self.y0]\\n return xs, ys\\n\\n\\n@dataclasses.dataclass\\nclass DataPoint:\\n x: float or str\\n y: float or str\\n\\n\\nclass TextRole(enum.Enum):\\n axis_title = \\\"axis_title\\\"\\n chart_title = \\\"chart_title\\\"\\n legend_label = \\\"legend_label\\\"\\n tick_grouping = \\\"tick_grouping\\\"\\n tick_label = \\\"tick_label\\\"\\n other = \\\"other\\\"\\n\\n\\n@dataclasses.dataclass\\nclass Polygon:\\n x0: int\\n x1: int\\n x2: int\\n x3: int\\n y0: int\\n y1: int\\n y2: int\\n y3: int\\n\\n def get_bounds(self):\\n xs = [\\n self.x0,\\n self.x1,\\n self.x2,\\n self.x3,\\n self.x0,\\n ]\\n ys = [\\n self.y0,\\n self.y1,\\n self.y2,\\n self.y3,\\n self.y0,\\n ]\\n return xs, ys\\n\\n\\n@dataclasses.dataclass\\nclass Text:\\n id: int\\n polygon: Polygon\\n role: TextRole\\n text: str\\n\\n def __post_init__(self):\\n self.polygon = Polygon(**self.polygon)\\n self.role = TextRole(self.role)\\n\\n\\nclass ValuesType(enum.Enum):\\n categorical = \\\"categorical\\\"\\n numerical = \\\"numerical\\\"\\n\\n\\n@dataclasses.dataclass\\nclass Tick:\\n id: int\\n x: int\\n y: int\\n\\n\\nclass TickType(enum.Enum):\\n markers = \\\"markers\\\"\\n separators = \\\"separators\\\"\\n\\n\\n@dataclasses.dataclass\\nclass Axis:\\n values_type: ValuesType\\n tick_type: TickType\\n ticks: list[Tick]\\n\\n def __post_init__(self):\\n self.values_type = ValuesType(self.values_type)\\n self.tick_type = TickType(self.tick_type)\\n self.ticks = [\\n Tick(id=kw[\\\"id\\\"], x=kw[\\\"tick_pt\\\"][\\\"x\\\"], y=kw[\\\"tick_pt\\\"][\\\"y\\\"])\\n for kw in self.ticks\\n ]\\n\\n def get_bounds(self):\\n min_x = min(tick.x for tick in self.ticks)\\n max_x = max(tick.x for tick in self.ticks)\\n min_y = min(tick.y for tick in self.ticks)\\n max_y = max(tick.y for tick in self.ticks)\\n xs = [min_x, max_x, max_x, min_x, min_x]\\n ys = [min_y, min_y, max_y, max_y, min_y]\\n return xs, ys\\n\\n\\ndef convert_dashes_to_underscores_in_key_names(dictionary):\\n return {k.replace(\\\"-\\\", \\\"_\\\"): v for k, v in dictionary.items()}\\n\\n\\n@dataclasses.dataclass\\nclass Axes:\\n x_axis: Axis\\n y_axis: Axis\\n\\n def __post_init__(self):\\n self.x_axis = Axis(**convert_dashes_to_underscores_in_key_names(self.x_axis))\\n self.y_axis = Axis(**convert_dashes_to_underscores_in_key_names(self.y_axis))\\n\\n\\ndef preprocess_numerical_value(value):\\n value = float(value)\\n value = 0 if np.isnan(value) else value\\n return value\\n\\n\\ndef preprocess_value(value, value_type: ValuesType):\\n if value_type == ValuesType.numerical:\\n return preprocess_numerical_value(value)\\n else:\\n return str(value)\\n\\n\\n@dataclasses.dataclass\\nclass Annotation:\\n source: Source\\n chart_type: ChartType\\n plot_bb: PlotBoundingBox\\n text: list[Text]\\n axes: Axes\\n data_series: list[DataPoint]\\n\\n def __post_init__(self):\\n self.source = Source(self.source)\\n self.chart_type = ChartType(self.chart_type)\\n self.plot_bb = PlotBoundingBox(**self.plot_bb)\\n self.text = [Text(**kw) for kw in self.text]\\n self.axes = Axes(**convert_dashes_to_underscores_in_key_names(self.axes))\\n self.data_series = [DataPoint(**kw) for kw in self.data_series]\\n\\n for i in range(len(self.data_series)):\\n self.data_series[i].x = preprocess_value(\\n self.data_series[i].x, self.axes.x_axis.values_type\\n )\\n self.data_series[i].y = preprocess_value(\\n self.data_series[i].y, self.axes.y_axis.values_type\\n )\\n\\n @staticmethod\\n def from_dict_with_dashes(kwargs):\\n return Annotation(**convert_dashes_to_underscores_in_key_names(kwargs))\\n\\n def get_text_by_role(self, text_role: TextRole) -> list[Text]:\\n return [t for t in self.text if t.role == text_role]\\n\\n\\n@dataclasses.dataclass\\nclass AnnotatedImage:\\n id: str\\n image: np.ndarray\\n annotation: Annotation\";\n", + " var nbb_unformatted_code = \"class Source(enum.Enum):\\n generated = \\\"generated\\\"\\n extracted = \\\"extracted\\\"\\n\\n\\nclass ChartType(enum.Enum):\\n dot = \\\"dot\\\"\\n horizontal_bar = \\\"horizontal_bar\\\"\\n vertical_bar = \\\"vertical_bar\\\"\\n line = \\\"line\\\"\\n scatter = \\\"scatter\\\"\\n\\n\\n@dataclasses.dataclass\\nclass PlotBoundingBox:\\n height: int\\n width: int\\n x0: int\\n y0: int\\n\\n def get_bounds(self):\\n xs = [self.x0, self.x0 + self.width, self.x0 + self.width, self.x0, self.x0]\\n ys = [self.y0, self.y0, self.y0 + self.height, self.y0 + self.height, self.y0]\\n return xs, ys\\n\\n\\n@dataclasses.dataclass\\nclass DataPoint:\\n x: float or str\\n y: float or str\\n\\n\\nclass TextRole(enum.Enum):\\n axis_title = \\\"axis_title\\\"\\n chart_title = \\\"chart_title\\\"\\n legend_label = \\\"legend_label\\\"\\n tick_grouping = \\\"tick_grouping\\\"\\n tick_label = \\\"tick_label\\\"\\n other = \\\"other\\\"\\n\\n\\n@dataclasses.dataclass\\nclass Polygon:\\n x0: int\\n x1: int\\n x2: int\\n x3: int\\n y0: int\\n y1: int\\n y2: int\\n y3: int\\n\\n def get_bounds(self):\\n xs = [\\n self.x0,\\n self.x1,\\n self.x2,\\n self.x3,\\n self.x0,\\n ]\\n ys = [\\n self.y0,\\n self.y1,\\n self.y2,\\n self.y3,\\n self.y0,\\n ]\\n return xs, ys\\n\\n\\n@dataclasses.dataclass\\nclass Text:\\n id: int\\n polygon: Polygon\\n role: TextRole\\n text: str\\n\\n def __post_init__(self):\\n self.polygon = Polygon(**self.polygon)\\n self.role = TextRole(self.role)\\n\\n\\nclass ValuesType(enum.Enum):\\n categorical = \\\"categorical\\\"\\n numerical = \\\"numerical\\\"\\n\\n\\n@dataclasses.dataclass\\nclass Tick:\\n id: int\\n x: int\\n y: int\\n\\n\\nclass TickType(enum.Enum):\\n markers = \\\"markers\\\"\\n separators = \\\"separators\\\"\\n\\n\\n@dataclasses.dataclass\\nclass Axis:\\n values_type: ValuesType\\n tick_type: TickType\\n ticks: list[Tick]\\n\\n def __post_init__(self):\\n self.values_type = ValuesType(self.values_type)\\n self.tick_type = TickType(self.tick_type)\\n self.ticks = [\\n Tick(id=kw[\\\"id\\\"], x=kw[\\\"tick_pt\\\"][\\\"x\\\"], y=kw[\\\"tick_pt\\\"][\\\"y\\\"])\\n for kw in self.ticks\\n ]\\n\\n def get_bounds(self):\\n min_x = min(tick.x for tick in self.ticks)\\n max_x = max(tick.x for tick in self.ticks)\\n min_y = min(tick.y for tick in self.ticks)\\n max_y = max(tick.y for tick in self.ticks)\\n xs = [min_x, max_x, max_x, min_x, min_x]\\n ys = [min_y, min_y, max_y, max_y, min_y]\\n return xs, ys\\n\\n\\ndef convert_dashes_to_underscores_in_key_names(dictionary):\\n return {k.replace(\\\"-\\\", \\\"_\\\"): v for k, v in dictionary.items()}\\n\\n\\n@dataclasses.dataclass\\nclass Axes:\\n x_axis: Axis\\n y_axis: Axis\\n\\n def __post_init__(self):\\n self.x_axis = Axis(**convert_dashes_to_underscores_in_key_names(self.x_axis))\\n self.y_axis = Axis(**convert_dashes_to_underscores_in_key_names(self.y_axis))\\n\\n\\ndef preprocess_numerical_value(value):\\n value = float(value)\\n value = 0 if np.isnan(value) else value\\n return value\\n\\n\\ndef preprocess_value(value, value_type: ValuesType):\\n if value_type == ValuesType.numerical:\\n return preprocess_numerical_value(value)\\n else:\\n return str(value)\\n\\n\\n@dataclasses.dataclass\\nclass Annotation:\\n source: Source\\n chart_type: ChartType\\n plot_bb: PlotBoundingBox\\n text: list[Text]\\n axes: Axes\\n data_series: list[DataPoint]\\n\\n def __post_init__(self):\\n self.source = Source(self.source)\\n self.chart_type = ChartType(self.chart_type)\\n self.plot_bb = PlotBoundingBox(**self.plot_bb)\\n self.text = [Text(**kw) for kw in self.text]\\n self.axes = Axes(**convert_dashes_to_underscores_in_key_names(self.axes))\\n self.data_series = [DataPoint(**kw) for kw in self.data_series]\\n\\n for i in range(len(self.data_series)):\\n self.data_series[i].x = preprocess_value(\\n self.data_series[i].x, self.axes.x_axis.values_type\\n )\\n self.data_series[i].y = preprocess_value(\\n self.data_series[i].y, self.axes.y_axis.values_type\\n )\\n\\n @staticmethod\\n def from_dict_with_dashes(kwargs):\\n return Annotation(**convert_dashes_to_underscores_in_key_names(kwargs))\\n\\n @staticmethod\\n def from_image_index(image_index: int):\\n image_id = load_train_image_ids()[image_index]\\n return Annotation.from_dict_with_dashes(load_image_annotation(image_id))\\n\\n def get_text_by_role(self, text_role: TextRole) -> list[Text]:\\n return [t for t in self.text if t.role == text_role]\\n\\n\\n@dataclasses.dataclass\\nclass AnnotatedImage:\\n id: str\\n image: np.ndarray\\n annotation: Annotation\\n\\n @staticmethod\\n def from_image_id(image_id: str):\\n return AnnotatedImage(\\n id=image_id,\\n image=load_image(image_id),\\n annotation=Annotation.from_dict_with_dashes(\\n load_image_annotation(image_id)\\n ),\\n )\\n\\n @staticmethod\\n def from_image_index(image_index: int):\\n return AnnotatedImage.from_image_id(load_train_image_ids()[image_index])\\n\\n\\ndef generate_annotated_images():\\n for image_id in tqdm.autonotebook.tqdm(\\n load_train_image_ids(), \\\"Iterating over annotated images\\\"\\n ):\\n yield AnnotatedImage.from_image_id(image_id)\";\n", + " var nbb_formatted_code = \"class Source(enum.Enum):\\n generated = \\\"generated\\\"\\n extracted = \\\"extracted\\\"\\n\\n\\nclass ChartType(enum.Enum):\\n dot = \\\"dot\\\"\\n horizontal_bar = \\\"horizontal_bar\\\"\\n vertical_bar = \\\"vertical_bar\\\"\\n line = \\\"line\\\"\\n scatter = \\\"scatter\\\"\\n\\n\\n@dataclasses.dataclass\\nclass PlotBoundingBox:\\n height: int\\n width: int\\n x0: int\\n y0: int\\n\\n def get_bounds(self):\\n xs = [self.x0, self.x0 + self.width, self.x0 + self.width, self.x0, self.x0]\\n ys = [self.y0, self.y0, self.y0 + self.height, self.y0 + self.height, self.y0]\\n return xs, ys\\n\\n\\n@dataclasses.dataclass\\nclass DataPoint:\\n x: float or str\\n y: float or str\\n\\n\\nclass TextRole(enum.Enum):\\n axis_title = \\\"axis_title\\\"\\n chart_title = \\\"chart_title\\\"\\n legend_label = \\\"legend_label\\\"\\n tick_grouping = \\\"tick_grouping\\\"\\n tick_label = \\\"tick_label\\\"\\n other = \\\"other\\\"\\n\\n\\n@dataclasses.dataclass\\nclass Polygon:\\n x0: int\\n x1: int\\n x2: int\\n x3: int\\n y0: int\\n y1: int\\n y2: int\\n y3: int\\n\\n def get_bounds(self):\\n xs = [\\n self.x0,\\n self.x1,\\n self.x2,\\n self.x3,\\n self.x0,\\n ]\\n ys = [\\n self.y0,\\n self.y1,\\n self.y2,\\n self.y3,\\n self.y0,\\n ]\\n return xs, ys\\n\\n\\n@dataclasses.dataclass\\nclass Text:\\n id: int\\n polygon: Polygon\\n role: TextRole\\n text: str\\n\\n def __post_init__(self):\\n self.polygon = Polygon(**self.polygon)\\n self.role = TextRole(self.role)\\n\\n\\nclass ValuesType(enum.Enum):\\n categorical = \\\"categorical\\\"\\n numerical = \\\"numerical\\\"\\n\\n\\n@dataclasses.dataclass\\nclass Tick:\\n id: int\\n x: int\\n y: int\\n\\n\\nclass TickType(enum.Enum):\\n markers = \\\"markers\\\"\\n separators = \\\"separators\\\"\\n\\n\\n@dataclasses.dataclass\\nclass Axis:\\n values_type: ValuesType\\n tick_type: TickType\\n ticks: list[Tick]\\n\\n def __post_init__(self):\\n self.values_type = ValuesType(self.values_type)\\n self.tick_type = TickType(self.tick_type)\\n self.ticks = [\\n Tick(id=kw[\\\"id\\\"], x=kw[\\\"tick_pt\\\"][\\\"x\\\"], y=kw[\\\"tick_pt\\\"][\\\"y\\\"])\\n for kw in self.ticks\\n ]\\n\\n def get_bounds(self):\\n min_x = min(tick.x for tick in self.ticks)\\n max_x = max(tick.x for tick in self.ticks)\\n min_y = min(tick.y for tick in self.ticks)\\n max_y = max(tick.y for tick in self.ticks)\\n xs = [min_x, max_x, max_x, min_x, min_x]\\n ys = [min_y, min_y, max_y, max_y, min_y]\\n return xs, ys\\n\\n\\ndef convert_dashes_to_underscores_in_key_names(dictionary):\\n return {k.replace(\\\"-\\\", \\\"_\\\"): v for k, v in dictionary.items()}\\n\\n\\n@dataclasses.dataclass\\nclass Axes:\\n x_axis: Axis\\n y_axis: Axis\\n\\n def __post_init__(self):\\n self.x_axis = Axis(**convert_dashes_to_underscores_in_key_names(self.x_axis))\\n self.y_axis = Axis(**convert_dashes_to_underscores_in_key_names(self.y_axis))\\n\\n\\ndef preprocess_numerical_value(value):\\n value = float(value)\\n value = 0 if np.isnan(value) else value\\n return value\\n\\n\\ndef preprocess_value(value, value_type: ValuesType):\\n if value_type == ValuesType.numerical:\\n return preprocess_numerical_value(value)\\n else:\\n return str(value)\\n\\n\\n@dataclasses.dataclass\\nclass Annotation:\\n source: Source\\n chart_type: ChartType\\n plot_bb: PlotBoundingBox\\n text: list[Text]\\n axes: Axes\\n data_series: list[DataPoint]\\n\\n def __post_init__(self):\\n self.source = Source(self.source)\\n self.chart_type = ChartType(self.chart_type)\\n self.plot_bb = PlotBoundingBox(**self.plot_bb)\\n self.text = [Text(**kw) for kw in self.text]\\n self.axes = Axes(**convert_dashes_to_underscores_in_key_names(self.axes))\\n self.data_series = [DataPoint(**kw) for kw in self.data_series]\\n\\n for i in range(len(self.data_series)):\\n self.data_series[i].x = preprocess_value(\\n self.data_series[i].x, self.axes.x_axis.values_type\\n )\\n self.data_series[i].y = preprocess_value(\\n self.data_series[i].y, self.axes.y_axis.values_type\\n )\\n\\n @staticmethod\\n def from_dict_with_dashes(kwargs):\\n return Annotation(**convert_dashes_to_underscores_in_key_names(kwargs))\\n\\n @staticmethod\\n def from_image_index(image_index: int):\\n image_id = load_train_image_ids()[image_index]\\n return Annotation.from_dict_with_dashes(load_image_annotation(image_id))\\n\\n def get_text_by_role(self, text_role: TextRole) -> list[Text]:\\n return [t for t in self.text if t.role == text_role]\\n\\n\\n@dataclasses.dataclass\\nclass AnnotatedImage:\\n id: str\\n image: np.ndarray\\n annotation: Annotation\\n\\n @staticmethod\\n def from_image_id(image_id: str):\\n return AnnotatedImage(\\n id=image_id,\\n image=load_image(image_id),\\n annotation=Annotation.from_dict_with_dashes(\\n load_image_annotation(image_id)\\n ),\\n )\\n\\n @staticmethod\\n def from_image_index(image_index: int):\\n return AnnotatedImage.from_image_id(load_train_image_ids()[image_index])\\n\\n\\ndef generate_annotated_images():\\n for image_id in tqdm.autonotebook.tqdm(\\n load_train_image_ids(), \\\"Iterating over annotated images\\\"\\n ):\\n yield AnnotatedImage.from_image_id(image_id)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -1250,6 +1143,11 @@ " def from_dict_with_dashes(kwargs):\n", " return Annotation(**convert_dashes_to_underscores_in_key_names(kwargs))\n", "\n", + " @staticmethod\n", + " def from_image_index(image_index: int):\n", + " image_id = load_train_image_ids()[image_index]\n", + " return Annotation.from_dict_with_dashes(load_image_annotation(image_id))\n", + "\n", " def get_text_by_role(self, text_role: TextRole) -> list[Text]:\n", " return [t for t in self.text if t.role == text_role]\n", "\n", @@ -1258,14 +1156,48 @@ "class AnnotatedImage:\n", " id: str\n", " image: np.ndarray\n", - " annotation: Annotation" + " annotation: Annotation\n", + "\n", + " @staticmethod\n", + " def from_image_id(image_id: str):\n", + " return AnnotatedImage(\n", + " id=image_id,\n", + " image=load_image(image_id),\n", + " annotation=Annotation.from_dict_with_dashes(\n", + " load_image_annotation(image_id)\n", + " ),\n", + " )\n", + "\n", + " @staticmethod\n", + " def from_image_index(image_index: int):\n", + " return AnnotatedImage.from_image_id(load_train_image_ids()[image_index])\n", + "\n", + "\n", + "def generate_annotated_images():\n", + " for image_id in tqdm.autonotebook.tqdm(\n", + " load_train_image_ids(), \"Iterating over annotated images\"\n", + " ):\n", + " yield AnnotatedImage.from_image_id(image_id)" + ] + }, + { + "cell_type": "markdown", + "id": "dad819b2", + "metadata": {}, + "source": [ + "### Data exploration " ] }, { "cell_type": "code", "execution_count": 13, - "id": "bd47811f", - "metadata": {}, + "id": "f165119d", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:31.364012Z", + "start_time": "2023-04-18T15:47:31.352168Z" + } + }, "outputs": [ { "data": { @@ -1273,8 +1205,8 @@ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 13;\n", - " var nbb_unformatted_code = \"def load_annotated_images(image_ids):\\n annotated_images = []\\n for image_id in tqdm.autonotebook.tqdm(\\n image_ids, desc=\\\"Loading images and annotations\\\"\\n ):\\n annotated_images.append(\\n AnnotatedImage(\\n id=image_id,\\n image=load_image(image_id),\\n annotation=Annotation.from_dict_with_dashes(\\n load_image_annotation(image_id)\\n ),\\n )\\n )\\n return annotated_images\";\n", - " var nbb_formatted_code = \"def load_annotated_images(image_ids):\\n annotated_images = []\\n for image_id in tqdm.autonotebook.tqdm(\\n image_ids, desc=\\\"Loading images and annotations\\\"\\n ):\\n annotated_images.append(\\n AnnotatedImage(\\n id=image_id,\\n image=load_image(image_id),\\n annotation=Annotation.from_dict_with_dashes(\\n load_image_annotation(image_id)\\n ),\\n )\\n )\\n return annotated_images\";\n", + " var nbb_unformatted_code = \"def are_there_nan_values_in_axis_data():\\n for annotated_image in generate_annotated_images():\\n for datapoint in annotated_image.annotation.data_series:\\n for value in [datapoint.x, datapoint.y]:\\n if not isinstance(value, str) and np.isnan(value):\\n return True\\n return False\";\n", + " var nbb_formatted_code = \"def are_there_nan_values_in_axis_data():\\n for annotated_image in generate_annotated_images():\\n for datapoint in annotated_image.annotation.data_series:\\n for value in [datapoint.x, datapoint.y]:\\n if not isinstance(value, str) and np.isnan(value):\\n return True\\n return False\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -1296,51 +1228,34 @@ } ], "source": [ - "def load_annotated_images(image_ids):\n", - " annotated_images = []\n", - " for image_id in tqdm.autonotebook.tqdm(\n", - " image_ids, desc=\"Loading images and annotations\"\n", - " ):\n", - " annotated_images.append(\n", - " AnnotatedImage(\n", - " id=image_id,\n", - " image=load_image(image_id),\n", - " annotation=Annotation.from_dict_with_dashes(\n", - " load_image_annotation(image_id)\n", - " ),\n", - " )\n", - " )\n", - " return annotated_images" + "def are_there_nan_values_in_axis_data():\n", + " for annotated_image in generate_annotated_images():\n", + " for datapoint in annotated_image.annotation.data_series:\n", + " for value in [datapoint.x, datapoint.y]:\n", + " if not isinstance(value, str) and np.isnan(value):\n", + " return True\n", + " return False" ] }, { "cell_type": "code", "execution_count": 14, - "id": "6ef5dc1b", - "metadata": {}, + "id": "3ff0494b", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:31.396949Z", + "start_time": "2023-04-18T15:47:31.376901Z" + } + }, "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "e7a82f0bc0a04be6af05921510b1acfa", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Loading images and annotations: 0%| | 0/1000 [00:00" + "if DEBUG:\n", + " print(are_there_nan_values_in_axis_data())" ] }, { "cell_type": "code", "execution_count": 15, - "id": "f165119d", - "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "\n", - " setTimeout(function() {\n", - " var nbb_cell_id = 15;\n", - " var nbb_unformatted_code = \"def are_there_nan_values_in_axis_data():\\n for annotated_image in DATA.annotated_images:\\n for datapoint in annotated_image.annotation.data_series:\\n for value in [datapoint.x, datapoint.y]:\\n if not isinstance(value, str) and np.isnan(value):\\n return True\\n return False\";\n", - " var nbb_formatted_code = \"def are_there_nan_values_in_axis_data():\\n for annotated_image in DATA.annotated_images:\\n for datapoint in annotated_image.annotation.data_series:\\n for value in [datapoint.x, datapoint.y]:\\n if not isinstance(value, str) and np.isnan(value):\\n return True\\n return False\";\n", - " var nbb_cells = Jupyter.notebook.get_cells();\n", - " for (var i = 0; i < nbb_cells.length; ++i) {\n", - " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", - " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", - " nbb_cells[i].set_text(nbb_formatted_code);\n", - " }\n", - " break;\n", - " }\n", - " }\n", - " }, 500);\n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def are_there_nan_values_in_axis_data():\n", - " for annotated_image in DATA.annotated_images:\n", - " for datapoint in annotated_image.annotation.data_series:\n", - " for value in [datapoint.x, datapoint.y]:\n", - " if not isinstance(value, str) and np.isnan(value):\n", - " return True\n", - " return False" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "3ff0494b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "False\n" - ] - }, - { - "data": { - "application/javascript": [ - "\n", - " setTimeout(function() {\n", - " var nbb_cell_id = 16;\n", - " var nbb_unformatted_code = \"print(are_there_nan_values_in_axis_data())\";\n", - " var nbb_formatted_code = \"print(are_there_nan_values_in_axis_data())\";\n", - " var nbb_cells = Jupyter.notebook.get_cells();\n", - " for (var i = 0; i < nbb_cells.length; ++i) {\n", - " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", - " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", - " nbb_cells[i].set_text(nbb_formatted_code);\n", - " }\n", - " break;\n", - " }\n", - " }\n", - " }, 500);\n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "print(are_there_nan_values_in_axis_data())" - ] - }, - { - "cell_type": "code", - "execution_count": 17, "id": "21b4baa0", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:31.426840Z", + "start_time": "2023-04-18T15:47:31.399796Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 17;\n", - " var nbb_unformatted_code = \"def get_image(image_index: int) -> np.ndarray:\\n return DATA.annotated_images[image_index].image\\n\\n\\ndef build_random_image_animation(n_images=100, fps=1, figsize=(6, 4)):\\n image_indices = np.random.permutation(len(DATA.annotated_images))[:n_images]\\n first_image = get_image(image_indices[0])\\n\\n fig, ax = plt.subplots(figsize=figsize)\\n frame = plt.imshow(first_image)\\n plt.axis(\\\"off\\\")\\n plt.close()\\n\\n def animate(frame_index):\\n image_index = image_indices[frame_index]\\n image = get_image(image_index)\\n frame.set_data(image)\\n\\n return matplotlib.animation.FuncAnimation(\\n fig=fig,\\n func=animate,\\n frames=len(image_indices),\\n interval=int(1000 / fps),\\n )\";\n", - " var nbb_formatted_code = \"def get_image(image_index: int) -> np.ndarray:\\n return DATA.annotated_images[image_index].image\\n\\n\\ndef build_random_image_animation(n_images=100, fps=1, figsize=(6, 4)):\\n image_indices = np.random.permutation(len(DATA.annotated_images))[:n_images]\\n first_image = get_image(image_indices[0])\\n\\n fig, ax = plt.subplots(figsize=figsize)\\n frame = plt.imshow(first_image)\\n plt.axis(\\\"off\\\")\\n plt.close()\\n\\n def animate(frame_index):\\n image_index = image_indices[frame_index]\\n image = get_image(image_index)\\n frame.set_data(image)\\n\\n return matplotlib.animation.FuncAnimation(\\n fig=fig,\\n func=animate,\\n frames=len(image_indices),\\n interval=int(1000 / fps),\\n )\";\n", + " var nbb_cell_id = 15;\n", + " var nbb_unformatted_code = \"def get_image(image_index: int) -> np.ndarray:\\n return load_image(load_train_image_ids()[image_index])\\n\\n\\ndef build_random_image_animation(n_images=100, fps=1, figsize=(6, 4)):\\n image_indices = np.random.permutation(len(load_train_image_ids()))[:n_images]\\n first_image = get_image(image_indices[0])\\n\\n fig, ax = plt.subplots(figsize=figsize)\\n frame = plt.imshow(first_image)\\n plt.axis(\\\"off\\\")\\n plt.close()\\n\\n def animate(frame_index):\\n image_index = image_indices[frame_index]\\n image = get_image(image_index)\\n frame.set_data(image)\\n\\n return matplotlib.animation.FuncAnimation(\\n fig=fig,\\n func=animate,\\n frames=len(image_indices),\\n interval=int(1000 / fps),\\n )\";\n", + " var nbb_formatted_code = \"def get_image(image_index: int) -> np.ndarray:\\n return load_image(load_train_image_ids()[image_index])\\n\\n\\ndef build_random_image_animation(n_images=100, fps=1, figsize=(6, 4)):\\n image_indices = np.random.permutation(len(load_train_image_ids()))[:n_images]\\n first_image = get_image(image_indices[0])\\n\\n fig, ax = plt.subplots(figsize=figsize)\\n frame = plt.imshow(first_image)\\n plt.axis(\\\"off\\\")\\n plt.close()\\n\\n def animate(frame_index):\\n image_index = image_indices[frame_index]\\n image = get_image(image_index)\\n frame.set_data(image)\\n\\n return matplotlib.animation.FuncAnimation(\\n fig=fig,\\n func=animate,\\n frames=len(image_indices),\\n interval=int(1000 / fps),\\n )\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -1498,11 +1322,11 @@ ], "source": [ "def get_image(image_index: int) -> np.ndarray:\n", - " return DATA.annotated_images[image_index].image\n", + " return load_image(load_train_image_ids()[image_index])\n", "\n", "\n", "def build_random_image_animation(n_images=100, fps=1, figsize=(6, 4)):\n", - " image_indices = np.random.permutation(len(DATA.annotated_images))[:n_images]\n", + " image_indices = np.random.permutation(len(load_train_image_ids()))[:n_images]\n", " first_image = get_image(image_indices[0])\n", "\n", " fig, ax = plt.subplots(figsize=figsize)\n", @@ -1525,15 +1349,20 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 16, "id": "0d592d35", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:38.818101Z", + "start_time": "2023-04-18T15:47:31.431284Z" + } + }, "outputs": [ { "data": { "text/html": [ "" @@ -23616,7 +22911,7 @@ "" ] }, - "execution_count": 18, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, @@ -23625,7 +22920,7 @@ "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 18;\n", + " var nbb_cell_id = 16;\n", " var nbb_unformatted_code = \"IPython.display.HTML(build_random_image_animation().to_html5_video())\";\n", " var nbb_formatted_code = \"IPython.display.HTML(build_random_image_animation().to_html5_video())\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", @@ -23654,122 +22949,23 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 17, "id": "edf90004", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:38.868611Z", + "start_time": "2023-04-18T15:47:38.832024Z" + } + }, "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
widthheightchannel
count1000.0000001000.0000001000.0
mean509.395000320.9220003.0
std88.52735282.2170030.0
min433.000000211.0000003.0
25%470.000000278.0000003.0
50%489.500000293.0000003.0
75%506.000000326.2500003.0
max1280.000000880.0000003.0
\n", - "
" - ], - "text/plain": [ - " width height channel\n", - "count 1000.000000 1000.000000 1000.0\n", - "mean 509.395000 320.922000 3.0\n", - "std 88.527352 82.217003 0.0\n", - "min 433.000000 211.000000 3.0\n", - "25% 470.000000 278.000000 3.0\n", - "50% 489.500000 293.000000 3.0\n", - "75% 506.000000 326.250000 3.0\n", - "max 1280.000000 880.000000 3.0" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAMWCAYAAAAgRDUeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACuxElEQVR4nOzdeXzU1b3/8ffMZJZMkklIyMomCLJoFAsaolQtQsJSq5Vfq5YqLlerBavSotLrwqJiua1rUWvrBXsLtbWtVpEiERWqhIBUlEURBQWBLCRkncz+/f1BM2VMwADJTDK8no+bR2bO93y/33Pmk3KPnznfc0yGYRgCAAAAAAAAosgc6wYAAAAAAADg5ENSCgAAAAAAAFFHUgoAAAAAAABRR1IKAAAAAAAAUUdSCgAAAAAAAFFHUgoAAAAAAABRR1IKAAAAAAAAUUdSCgAAAAAAAFFHUgoAAAAAAABRR1IKADrI7NmzZTKZdODAgVg3BQAA4IS9/fbbMplMevvtt7+27kUXXaSLLrqoXde96KKLdMYZZ5xY4wDEBZJSAE7Y4sWLZTKZ9N5778W6KQAAAPi3P//5zzKZTHrppZdaHTvrrLNkMpn01ltvtTrWt29fnXfeeSd073379mn27NnatGnTCV0HQHwjKQUAAAAAcWj06NGSpHfeeSeivL6+Xlu2bFFCQoLefffdiGN79uzRnj17NHr0aF1wwQVqbm7WBRdccMz33rdvn+bMmUNSCsBRJcS6AQAAAACAjpeXl6f+/fu3SkqVlpbKMAx973vfa3Ws5f3o0aNlNpvlcDii1l4AJx9mSgHoFNdee62Sk5O1e/duffvb31ZycrJ69eqlhQsXSpI2b96sMWPGKCkpSf369dPSpUsjzq+pqdHPfvYz5efnKzk5WS6XSxMmTNAHH3zQ6l5ffPGFvvOd7ygpKUlZWVm644479Prrr7e5BkJZWZnGjx+v1NRUOZ1OXXjhha2+ITySJ598UqeffrqcTqd69OihkSNHtmq3JNXW1uraa69VWlqaUlNTdd1118ntdkfUWbRokcaMGaOsrCzZ7XYNGzZMTz/9dKtrnXLKKfr2t7+tlStXavjw4XI4HBo2bJj+9re/tXnf22+/XX369JHdbtfAgQP1i1/8QqFQKKLeCy+8oBEjRiglJUUul0v5+fl6/PHH2/UZAACA7mX06NF6//331dzcHC579913dfrpp2vChAlat25dxFjh3Xfflclk0vnnn3/ENaWeffZZnXrqqUpMTNS5556rf/7znxHH3377bZ1zzjmSpOuuu04mk0kmk0mLFy+OqLdt2zZ961vfktPpVK9evbRgwYKO7TyALo+kFIBOEwwGNWHCBPXp00cLFizQKaecounTp2vx4sUaP368Ro4cqV/84hdKSUnRNddco127doXP3blzp15++WV9+9vf1iOPPKKZM2dq8+bNuvDCC7Vv375wvaamJo0ZM0ZvvPGGfvKTn+i///u/tXbtWt11112t2vPmm2/qggsuUH19ve6//3499NBDqq2t1ZgxY7R+/fqj9uW3v/2tfvKTn2jYsGF67LHHNGfOHA0fPlxlZWWt6n7/+99XQ0OD5s+fr+9///tavHix5syZE1Hn6aefVr9+/fTzn/9cv/rVr9SnTx/9+Mc/DiftDrdjxw5dccUVmjBhgubPn6+EhAR973vfU0lJSbiO2+3WhRdeqD/84Q+65ppr9MQTT+j888/XrFmzNGPGjHC9kpISXXXVVerRo4d+8Ytf6OGHH9ZFF13U7sQcAADoXkaPHi2/3x8xZnn33Xd13nnn6bzzzlNdXZ22bNkScWzIkCHKyMho83rPPfecfvSjHyknJ0cLFizQ+eefr+985zvas2dPuM7QoUM1d+5cSdJNN92k//u//9P//d//RTwGePDgQY0fP15nnXWWfvWrX2nIkCG666679I9//KOjPwIAXZkBACdo0aJFhiRjw4YN4bKpU6cakoyHHnooXHbw4EEjMTHRMJlMxgsvvBAu//jjjw1Jxv333x8u83g8RjAYjLjPrl27DLvdbsydOzdc9qtf/cqQZLz88svhsubmZmPIkCGGJOOtt94yDMMwQqGQMWjQIKO4uNgIhULhum632+jfv78xbty4o/bx0ksvNU4//fSj1rn//vsNScb1118fUf7d737XyMjIiChzu92tzi8uLjYGDBgQUdavXz9DkvHXv/41XFZXV2fk5uYaZ599drhs3rx5RlJSkvHJJ59EnH/33XcbFovF2L17t2EYhnHbbbcZLpfLCAQCR+0LAACID1u3bjUkGfPmzTMMwzD8fr+RlJRkPP/884ZhGEZ2draxcOFCwzAMo76+3rBYLMaNN95oGIZhvPXWWxHjKZ/PZ2RlZRnDhw83vF5v+B7PPvusIcm48MILw2UbNmwwJBmLFi1q1aYLL7zQkGT8/ve/D5d5vV4jJyfHmDx5ckd2H0AXx0wpAJ3qv/7rv8Kv09LSNHjwYCUlJen73/9+uHzw4MFKS0vTzp07w2V2u11m86F/ooLBoKqrq5WcnKzBgwfrX//6V7jeihUr1KtXL33nO98JlzkcDt14440R7di0aZN27NihH/zgB6qurtaBAwd04MABNTU16eKLL9aaNWtaPeZ2uLS0NH355ZfasGHD1/b55ptvjnj/zW9+U9XV1aqvrw+XJSYmhl/X1dXpwIEDuvDCC7Vz507V1dVFnJ+Xl6fvfve74fcul0vXXHON3n//fZWXl0uSXnzxRX3zm99Ujx49wn07cOCAxo4dq2AwqDVr1oT70dTUFDHLCgAAxK+hQ4cqIyMjvFbUBx98oKampvDueuedd154xnRpaamCwWB4gfSveu+991RZWambb75ZNpstXH7ttdcqNTX1mNqVnJysH/7wh+H3NptN5557bsR4EED8Y6FzAJ3G4XAoMzMzoiw1NVW9e/eWyWRqVX7w4MHw+1AopMcff1xPPfWUdu3apWAwGD52+HTyL774Qqeeemqr6w0cODDi/Y4dOyRJU6dOPWJ76+rq1KNHjzaP3XXXXXrjjTd07rnnauDAgSoqKtIPfvADnX/++a3q9u3bN+J9yzUPHjwol8sl6dDU+Pvvv1+lpaWt1puqq6uLGNgNHDiwVf9OO+00SdLnn3+unJwc7dixQx9++GGrz7tFZWWlJOnHP/6x/vznP2vChAnq1auXioqK9P3vf1/jx48/4ucCAAC6L5PJpPPOOy/8Bdy7776rrKys8FjpvPPO069//WtJCienjpSU+uKLLyRJgwYNiii3Wq0aMGDAMbWrrfFgjx499OGHHx7TdQB0bySlAHQai8VyTOWGYYRfP/TQQ7r33nt1/fXXa968eUpPT5fZbNbtt99+1BlNR9Jyzv/8z/9o+PDhbdZJTk4+4vlDhw7V9u3btWzZMq1YsUJ//etf9dRTT+m+++5rtV7U1/Xvs88+08UXX6whQ4bokUceUZ8+fWSz2bR8+XI9+uijx92/cePG6c4772zzeEsSKysrS5s2bdLrr7+uf/zjH/rHP/6hRYsW6ZprrtHzzz9/zPcFAABd3+jRo/Xqq69q8+bN4fWkWpx33nmaOXOm9u7dq3feeUd5eXnHnGA6Hu0ZDwKIfySlAHRJf/nLX/Stb31Lzz33XER5bW2tevbsGX7fr18/bdu2TYZhRHzb9umnn0acd+qpp0o69Ojb2LFjj6tNSUlJuuKKK3TFFVfI5/Pp8ssv14MPPqhZs2Yd03bJr776qrxer1555ZWIWVVvvfVWm/U//fTTVv375JNPJB3anU861L/GxsZ29c1ms+mSSy7RJZdcolAopB//+Mf6zW9+o3vvvbfVDDMAAND9tcx8euedd/Tuu+/q9ttvDx8bMWKE7Ha73n77bZWVlWnixIlHvE6/fv0kHZqBPmbMmHC53+/Xrl27dNZZZ4XLvjoLCgDawppSALoki8XS6puyF198UXv37o0oKy4u1t69e/XKK6+Eyzwej377299G1BsxYoROPfVU/fKXv1RjY2Or+1VVVR21PdXV1RHvbTabhg0bJsMw5Pf729WnFi3fDB7ev7q6Oi1atKjN+vv27dNLL70Ufl9fX6/f//73Gj58uHJyciQd2vGvtLRUr7/+eqvza2trFQgE2uyH2WzWmWeeKUnyer3H1A8AANA9jBw5Ug6HQ0uWLNHevXsjZkrZ7XZ94xvf0MKFC9XU1HTER/darpOZmalnnnlGPp8vXL548WLV1tZG1E1KSpKkVuUAcDhmSgHokr797W9r7ty5uu6663Teeedp8+bNWrJkSavp5D/60Y/061//WldddZVuu+025ebmasmSJeGZSy3f0pnNZv3ud7/ThAkTdPrpp+u6665Tr169tHfvXr311ltyuVx69dVXj9ieoqIi5eTk6Pzzz1d2drY++ugj/frXv9akSZOUkpJyTH0rKioKz1b60Y9+pMbGRv32t79VVlaW9u/f36r+aaedphtuuEEbNmxQdna2/vd//1cVFRURSayZM2fqlVde0be//W1de+21GjFihJqamrR582b95S9/0eeff66ePXvqv/7rv1RTU6MxY8aod+/e+uKLL/Tkk09q+PDhGjp06DH1AwAAdA82m03nnHOO/vnPf8put2vEiBERx8877zz96le/knTk9aSkQ2tHPfDAA/rRj36kMWPG6IorrtCuXbu0aNGiVmO0U089VWlpaXrmmWeUkpKipKQkFRQUqH///h3fQQDdFjOlAHRJP//5z/XTn/5Ur7/+um677Tb961//0muvvaY+ffpE1EtOTtabb76pMWPG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2dqyZYueeeYZTZ06tdPuO2vWLM2YMSP8vr6+Xn369FFRUZFcLpekQ994lpSUaNy4cbJarZ3WFnQu4hgfiGN8II7xgTi2rWXWNQAAANovpkmp3NxcDRs2LKJs6NCh+utf/ypJysnJkSRVVFQoNzc3XKeiokLDhw8P16msrIy4RiAQUE1NTfj8r7Lb7bLb7a3KrVZrqwF2W2XofohjfCCO8YE4xgfiGInPAgAA4NjFdPe9888/X9u3b48o++STT9SvXz9JhxY9z8nJ0apVq8LH6+vrVVZWpsLCQklSYWGhamtrtXHjxnCdN998U6FQSAUFBVHoRXzy+IOqafLJ4w/GuikAAAAAACAOHVdSau7cuW2undDc3Ky5c+e2+zp33HGH1q1bp4ceekiffvqpli5dqmeffVbTpk2TJJlMJt1+++164IEH9Morr2jz5s265pprlJeXp8suu0zSoZlV48eP14033qj169fr3Xff1fTp03XllVey895x2lvbrOWb92vZB/u0fPN+7a1tjnWTAAAAAABAnDmupNScOXPU2NjYqtztdre5gPiRnHPOOXrppZf0xz/+UWeccYbmzZunxx57TFOmTAnXufPOO3Xrrbfqpptu0jnnnKPGxkatWLFCDocjXGfJkiUaMmSILr74Yk2cOFGjR4/Ws88+ezxdO+l5/EGV7axWnduv9CSb6tx+le2sZsYUAAAAAADoUMe1ppRhGDKZTK3KP/jgA6Wnpx/Ttb797W/r29/+9hGPm0wmzZ0796gzsNLT07V06dJjui/a5vYF1egJKDPFLofVoswUu2qafGr2BeWwWmLdPAAAAAAAECeOKSnVo0cPmUwmmUwmnXbaaRGJqWAwqMbGRt18880d3khEj9NmUbIjQVUNXmWm2FXV4FWq06pEGwkpAAAAAADQcY4pKfXYY4/JMAxdf/31mjNnjlJTU8PHbDabTjnllPAC5OieHFaLCgZkqGxntWqafEp1WlUwIINZUgAAAAAAoEMdU1Jq6tSpkg7tinfeeeex/XGc6pWWqIn5uWr2BZVos5CQAgAAAAAAHe641pS68MILFQqF9Mknn6iyslKhUCji+AUXXNAhjUPsOKwkowAAAAAAQOc5rqTUunXr9IMf/EBffPGFDMOIOGYymRQMslMbAAAAAAAAjuy4klI333yzRo4cqddee025ublt7sQHAAAA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Oaandkc6O+m2j5qhongBc4t4OZFhPUgM05JLSYCIjgOzfn/043ucwGFAWMPA8/l4zAPWZ33Wd73Xm6V+ffH5ri87EqEUsMO6/fbb071796xdu7Yytnr16lRXV2fYsGHN5q4Po/r27ZvFixenR48erT7P5MmTc8QRR2ylqgEAAHYOQilghzV8+PCsXr06zz77bGXsF7/4Rerq6jJ37ty8/fbblfHHHnssAwYMyAEHHJC6urpUVVW1RckAAAA7DaEUsMM64IAD0rdv38yaNasyNmvWrHzyk5/MoEGD8tRTTzUbHz58+EY/vjd16tQMGDAgXbt2zemnn57XX3+92b4pU6bkV7/6VaqqqlJVVZWpU6dW9v/lL3/J6aefnq5du2a//fbLvffeuy0vGQAAoN0QSgE7tOHDh+exxx6rbD/22GMZNmxYjj/++Mr4W2+9lblz52b48OEbHD937tycf/75mTBhQubNm5fhw4fnhhtuqOw/88wzc9lll+Xggw/O4sWLs3jx4px55pmV/VOmTMmnPvWpPP/88znllFMyduzYLF++fBteMQAAQPsglAJ2aMOHD89//ud/Zu3atXnjjTfyy1/+Mscff3yOO+64ygqqOXPmpKGhYaOh1De+8Y2cdNJJufzyy7P//vvnC1/4QkaNGlXZ36VLl3Tr1i2dOnVKXV1d6urq0qVLl8r+8847L2effXYGDx6cm266KatXr87TTz+9za8bAABgeyeUAnZow4YNy5tvvplnnnkmv/jFL7L//vtnjz32yPHHH195rtSsWbOyzz77ZMCAARsc/9vf/jZDhw5tNlZfX9/q8x922GGV3++6666pra3NsmXLtvyCAAAAdhCd2roAgG1p8ODB2WuvvfLYY4/lr3/9a44//vgkSb9+/dK/f/88+eSTeeyxx/Lxj398m5y/urq62XZVVVWampq2ybkAAADaEyulgB3e+geYz5o1K8OGDauMH3fccXnggQfy9NNPb/Sje0ly4IEHZu7cuc3G3v2A9CTp3Llz1q1bt9XrBgAA2JEJpYAd3vDhw/PEE09k3rx5lZVSSXL88cfnf/7P/5l33nnnPUOpL3zhC5kxY0a+9rWv5cUXX8z/+B//IzNmzGg2Z++9986iRYsyb968/OUvf0lDQ8M2vR4AAIAdgVAK2OENHz48b731VgYPHpw+ffpUxo8//vi88cYb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lAIAAACgdEIpAAAAAErXpqHUzTffnA996EPp3r17evfundNOOy0LFixoNmfYsGGpqqpq9nPRRRc1m/PKK69k9OjR6dq1a3r37p0vfelLWbt2bZmXAgAAAMBmaNMHnc+ePTvjx4/Phz70oaxduzZXXXVVRo4cmd/85jfZddddK/MuuOCCXHfddZXtrl27Vn6/bt26jB49OnV1dXnyySezePHi/MM//EOqq6tz0003lXo9AAAAALROm4ZSM2bMaLY9derU9O7dO88991yOO+64ynjXrl1TV1e30dd46KGH8pvf/CYPP/xw+vTpkyOOOCLXX399rrjiikyePDmdO3feptcAAAAAwOZr01Dq761cuTJJ0qtXr2bjd955Z37wgx+krq4up556aq6++urKaqk5c+bk0EMPTZ8+fSrzR40alXHjxuWFF17IkUceucF5Ghoa0tDQUNletWpVkqSxsTGNjY2bXff6Y7bk2PaipmPRqnkb68HO0J/3Q382TY9apj8t05+W6c+mtaZH+gcAsPmqiqJoXdqwjTU1NeUTn/hEVqxYkSeeeKIy/p3vfCcDBw5Mv3798vzzz+eKK67IMccck7vuuitJcuGFF+YPf/hDHnzwwcoxa9asya677pr7778/J5988gbnmjx5cqZMmbLB+LRp05p9NBAAoDXWrFmTT3/601m5cmVqa2vbuhwAgHZhu1kpNX78+MyfP79ZIJX8LXRa79BDD03fvn1zwgkn5KWXXsq+++67ReeaNGlSJk6cWNletWpV+vfvn5EjR27RG8nGxsbMnDkzJ554Yqqrq7eopu3dIZMf3PSkJPMnj9pgbGfoz/uhP5umRy3Tn5bpT8v0Z9Na06P1q64BAGi97SKUmjBhQqZPn57HH388e+21V4tzhw4dmiRZuHBh9t1339TV1eXpp59uNmfp0qVJ8p7PoaqpqUlNTc0G49XV1e/rDfn7PX571rCuqlXzWrr+Hbk/W4P+bJoetUx/WqY/LdOfTWupR3oHALD5OrTlyYuiyIQJE3L33Xfn0UcfzaBBgzZ5zLx585Ikffv2TZLU19fn17/+dZYtW1aZM3PmzNTW1uaggw7aJnUDAAAA8P606Uqp8ePHZ9q0afnZz36W7t27Z8mSJUmSHj16pEuXLnnppZcybdq0nHLKKdltt93y/PPP59JLL81xxx2Xww47LEkycuTIHHTQQTnnnHPy1a9+NUuWLMlXvvKVjB8/fqOroQAAAABoe226Uuq2227LypUrM2zYsPTt27fy8+Mf/zhJ0rlz5zz88MMZOXJkhgwZkssuuyxjxozJz3/+88prdOzYMdOnT0/Hjh1TX1+fz3zmM/mHf/iHXHfddW11WQAAAABsQpuulNrUF//1798/s2fP3uTrDBw4MPfff//WKgsAAACAbaxNV0oBAAAAsHMSSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQujYNpW6++eZ86EMfSvfu3dO7d++cdtppWbBgQbM5b7/9dsaPH5/ddtst3bp1y5gxY7J06dJmc1555ZWMHj06Xbt2Te/evfOlL30pa9euLfNSAAAAANgMbRpKzZ49O+PHj89TTz2VmTNnprGxMSNHjsybb75ZmXPppZfm5z//eX76059m9uzZee2113LGGWdU9q9bty6jR4/OO++8kyeffDLf//73M3Xq1FxzzTVtcUkAAAAAtEKntjz5jBkzmm1PnTo1vXv3znPPPZfjjjsuK1euzPe+971MmzYtH//4x5Mkd9xxRw488MA89dRTOfbYY/PQQw/lN7/5TR5++OH06dMnRxxxRK6//vpcccUVmTx5cjp37twWlwYAAABAC7arZ0qtXLkySdKrV68kyXPPPZfGxsaMGDGiMmfIkCEZMGBA5syZkySZM2dODj300PTp06cyZ9SoUVm1alVeeOGFEqsHAAAAoLXadKXUuzU1NeWSSy7JRz7ykRxyyCFJkiVLlqRz587p2bNns7l9+vTJkiVLKnPeHUit379+38Y0NDSkoaGhsr1q1aokSWNjYxobGze79vXHbMmx7UVNx6JV8zbWg52hP++H/myaHrVMf1qmPy3Tn01rTY/0DwBg8203odT48eMzf/78PPHEE9v8XDfffHOmTJmywfhDDz2Url27bvHrzpw58/2UtV376jGtm3f//fe/574duT9bg/5smh61TH9apj8t059Na6lHa9asKbESAIAdw3YRSk2YMCHTp0/P448/nr322qsyXldXl3feeScrVqxotlpq6dKlqaurq8x5+umnm73e+m/nWz/n702aNCkTJ06sbK9atSr9+/fPyJEjU1tbu9n1NzY2ZubMmTnxxBNTXV292ce3B4dMfrBV8+ZPHrXB2M7Qn/dDfzZNj1qmPy3Tn5bpz6a1pkfrV10DANB6bRpKFUWRz3/+87n77rsza9asDBo0qNn+o446KtXV1XnkkUcyZsyYJMmCBQvyyiuvpL6+PklSX1+fG2+8McuWLUvv3r2T/O1vMmtra3PQQQdt9Lw1NTWpqanZYLy6uvp9vSF/v8dvzxrWVbVqXkvXvyP3Z2vQn03To5bpT8v0p2X6s2kt9UjvAAA2X5uGUuPHj8+0adPys5/9LN27d688A6pHjx7p0qVLevTokfPPPz8TJ05Mr169Ultbm89//vOpr6/PsccemyQZOXJkDjrooJxzzjn56le/miVLluQrX/lKxo8fv9HgCQAAAIC216ah1G233ZYkGTZsWLPxO+64I+edd16S5F//9V/ToUOHjBkzJg0NDRk1alS+/e1vV+Z27Ngx06dPz7hx41JfX59dd9015557bq677rqyLgMAAACAzdTmH9/blF122SW33nprbr311vecM3DgwBYfsA0AAADA9qVDWxcAAAAAwM5HKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJSuU1sXQNva+8r72roEAAAAYCdkpRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApevU1gWwY9n7yvs2GKvpWOSrxySHTH4wDeuq8vIto9ugMgAAAGB7YqUUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKUTSgEAAABQOqEUAAAAAKVr01Dq8ccfz6mnnpp+/fqlqqoq99xzT7P95513Xqqqqpr9nHTSSc3mLF++PGPHjk1tbW169uyZ888/P6tXry7xKgAAAADYXG0aSr355ps5/PDDc+utt77nnJNOOimLFy+u/Pzwhz9stn/s2LF54YUXMnPmzEyfPj2PP/54Lrzwwm1dOgAAAADvQ6e2PPnJJ5+ck08+ucU5NTU1qaur2+i+3/72t5kxY0aeeeaZHH300UmSb33rWznllFPyta99Lf369dvqNQMAAADw/rVpKNUas2bNSu/evfOBD3wgH//4x3PDDTdkt912S5LMmTMnPXv2rARSSTJixIh06NAhc+fOzemnn77R12xoaEhDQ0Nle9WqVUmSxsbGNDY2bnaN64/ZkmPbWk3HYtufo0PR7Nf22KdtqT3fP2XRo5bpT8v0p2X6s2mt6ZH+AQBsvqqiKLZ9KtEKVVVVufvuu3PaaadVxn70ox+la9euGTRoUF566aVcddVV6datW+bMmZOOHTvmpptuyve///0sWLCg2Wv17t07U6ZMybhx4zZ6rsmTJ2fKlCkbjE+bNi1du3bdqtcFAOz41qxZk09/+tNZuXJlamtr27ocAIB2YbteKXXWWWdVfn/ooYfmsMMOy7777ptZs2blhBNO2OLXnTRpUiZOnFjZXrVqVfr375+RI0du0RvJxsbGzJw5MyeeeGKqq6u3uK62cMjkB7f5OWo6FLn+6KZc/WyHNDRVZf7kUdv8nO1Je75/yqJHLdOflulPy/Rn01rTo/WrrgEAaL3tOpT6e/vss0923333LFy4MCeccELq6uqybNmyZnPWrl2b5cuXv+dzqJK/PaeqpqZmg/Hq6ur39Yb8/R7fFhrWVZV3rqaqNKyranc9Kkt7vH/Kpkct05+W6U/L9GfTWuqR3gEAbL42/fa9zfXHP/4xr7/+evr27Zskqa+vz4oVK/Lcc89V5jz66KNpamrK0KFD26pMAAAAADahTVdKrV69OgsXLqxsL1q0KPPmzUuvXr3Sq1evTJkyJWPGjEldXV1eeumlXH755Rk8eHBGjfrbx78OPPDAnHTSSbngggty++23p7GxMRMmTMhZZ53lm/cAAAAAtmNtulLq2WefzZFHHpkjjzwySTJx4sQceeSRueaaa9KxY8c8//zz+cQnPpH9998/559/fo466qj84he/aPbRuzvvvDNDhgzJCSeckFNOOSUf/ehH853vfKetLgkAAACAVmjTlVLDhg1LS1/+9+CDm34Id69evTJt2rStWRYAAAAA21i7eqYUAAAAADsGoRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFA6oRQAAAAApRNKAQAAAFC6Ng2lHn/88Zx66qnp169fqqqqcs899zTbXxRFrrnmmvTt2zddunTJiBEj8uKLLzabs3z58owdOza1tbXp2bNnzj///KxevbrEqwAAAABgc7VpKPXmm2/m8MMPz6233rrR/V/96lfzzW9+M7fffnvmzp2bXXfdNaNGjcrbb79dmTN27Ni88MILmTlzZqZPn57HH388F154YVmXAAAAAMAW6NSWJz/55JNz8sknb3RfURT5+te/nq985Sv55Cc/mST53//7f6dPnz655557ctZZZ+W3v/1tZsyYkWeeeSZHH310kuRb3/pWTjnllHzta19Lv379SrsWAAAAAFqvTUOplixatChLlizJiBEj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yJo1TenU2CHrmqraupztzhFfvitfObIpR3z5rjS00J+5k07Yauds7f04+Is/2XrnfD/H/t091Nq62qJnr7/++lY759CbH2nVvCe+eNwm/x20M9vYv6Pb4s9ze9Wa/4Zt77b1n2drevTGG28kSYqi2KJzAADsjKqKdv7u6bXXXsuee+6ZJ598MvX19ZXxyy+/PLNnz87cuXM3OGby5MmZMmVKmWUCADuBV199NXvttVdblwEA0C60+5VSW2LSpEmZOHFiZbupqSnLly/PbrvtlqqqzV/Js2rVqvTv3z+vvvpqamtrt2apOwT9aZn+bJoetUx/WqY/LdOfTWtNj4qiyBtvvJF+/fqVXB0AQPvV7kOp3XffPR07dszSpUubjS9dujR1dXUbPaampiY1NTXNxnr27Pm+a6mtrfWGvgX60zL92TQ9apn+tEx/WqY/m7apHvXo0aPEagAA2r8ObV3A+9W5c+ccddRReeSR//fslaampjzyyCPNPs4HAAAAwPaj3a+USpKJEyfm3HPPzdFHH51jjjkmX//61/Pmm29Wvo0PAAAAgO3LDhFKnXnmmfnzn/+ca665JkuWLMkRRxyRGTNmpE+fPqWcv6amJtdee+0GHwnkb/SnZfqzaXrUMv1pmf60TH82TY8AALaNdv/tewAAAAC0P+3+mVIAAAAAtD9CKQAAAABKJ5QCAAAAoHRCKQAAAABKJ5R6DzfffHM+9KEPpXv37undu3dOO+20LFiwoNmct99+O+PHj89uu+2Wbt26ZcyYMVm6dGmzOa+88kpGjx6drl27pnfv3vnSl76UtWvXlnkp28Rtt92Www47LLW1tamtrU19fX0eeOCByv6duTcbc8stt6SqqiqXXHJJZWxn79HkyZNTVVXV7GfIkCGV/Tt7f5LkT3/6Uz7zmc9kt912S5cuXXLooYfm2WefrewviiLXXHNN+vbtmy5dumTEiBF58cUXm73G8uXLM3bs2NTW1qZnz545//zzs3r16rIvZavbe++9N7h/qqqqMn78+CTun3Xr1uXqq6/OoEGD0qVLl+y77765/vrr8+7vNtmZ758keeONN3LJJZdk4MCB6dKlSz784Q/nmWeeqezf2fsDAFCKgo0aNWpUcccddxTz588v5s2bV5xyyinFgAEDitWrV1fmXHTRRUX//v2LRx55pHj22WeLY489tvjwhz9c2b927drikEMOKUaMGFH88pe/LO6///5i9913LyZNmtQWl7RV3XvvvcV9991X/O53vysWLFhQXHXVVUV1dXUxf/78oih27t78vaeffrrYe++9i8MOO6y4+OKLK+M7e4+uvfba4uCDDy4WL15c+fnzn/9c2b+z92f58uXFwIEDi/POO6+YO3du8fvf/7548MEHi4ULF1bm3HLLLUWPHj2Ke+65p/jVr35VfOITnygGDRpUvPXWW5U5J510UnH44YcXTz31VPGLX/yiGDx4cHH22We3xSVtVcuWLWt278ycObNIUjz22GNFUbh/brzxxmK33XYrpk+fXixatKj46U9/WnTr1q34xje+UZmzM98/RVEUn/rUp4qDDjqomD17dvHiiy8W1157bVFbW1v88Y9/LIpCfwAAyiCUaqVly5YVSYrZs2cXRVEUK1asKKqrq4uf/vSnlTm//e1viyTFnDlziqIoivvvv7/o0KFDsWTJksqc2267raitrS0aGhrKvYASfOADHyj+7d/+TW/e5Y033ij222+/YubMmcXxxx9fCaX06G+h1OGHH77RffpTFFdccUXx0Y9+9D33NzU1FXV1dcU//dM/VcZWrFhR1NTUFD/84Q+LoiiK3/zmN0WS4plnnqnMeeCBB4qqqqriT3/607Yrvg1cfPHFxb777ls0NTW5f4qiGD16dPG5z32u2dgZZ5xRjB07tigK98+aNWuKjh07FtOnT282/sEPfrD48pe/vNP3BwCgLD6+10orV65MkvTq1StJ8txzz6WxsTEjRoyozBkyZEgGDBiQOXPmJEnmzJmTQw89NH369KnMGTVqVFatWpUXXnihxOq3rXXr1uVHP/pR3nzzzdTX1+vNu4wfPz6jR49u1ovE/bPeiy++mH79+mWfffbJ2LFj88orryTRnyS59957c/TRR+e//tf/mt69e+fII4/Md7/73cr+RYsWZcmSJc161KNHjwwdOrRZj3r27Jmjjz66MmfEiBHp0KFD5s6dW97FbGPvvPNOfvCDH+Rzn/tcqqqq3D9JPvzhD+eRRx7J7373uyTJr371qzzxxBM5+eSTk7h/1q5dm3Xr1mWXXXZpNt6lS5c88cQTO31/AADK0qmtC2gPmpqacskll+QjH/lIDjnkkCTJkiVL0rlz5/Ts2bPZ3D59+mTJkiWVOe/+H571+9fva+9+/etfp76+Pm+//Xa6deuWu+++OwcddFDmzZu30/cmSX70ox/l//7f/9vsGSXruX+SoUOHZurUqTnggAOyePHiTJkyJR/72Mcyf/58/Uny+9//PrfddlsmTpyYq666Ks8880y+8IUvpHPnzjn33HMr17ixHry7R7179262v1OnTunVq9cO0aP17rnnnqxYsSLnnXdeEv98JcmVV16ZVatWZciQIenYsWPWrVuXG2+8MWPHjk2Snf7+6d69e+rr63P99dfnwAMPTJ8+ffLDH/4wc+bMyeDBg3f6/gAAlEUo1Qrjx4/P/Pnz88QTT7R1KduVAw44IPPmzcvKlSvzH//xHzn33HMze/bsti5ru/Dqq6/m4osvzsyZMzf4m3j+Zv2KjSQ57LDDMnTo0AwcODA/+clP0qVLlzasbPvQ1NSUo48+OjfddFOS5Mgjj8z8+fNz++2359xzz23j6rYv3/ve93LyySenX79+bV3KduMnP/lJ7rzzzkybNi0HH3xw5s2bl0suuST9+vVz//z//v3f/z2f+9znsueee6Zjx4754Ac/mLPPPjvPPfdcW5cGALDT8PG9TZgwYUKmT5+exx57LHvttVdlvK6uLu+8805WrFjRbP7SpUtTV1dXmfP33/a0fnv9nPasc+fOGTx4cI466qjcfPPNOfzww/ONb3xDb/K3j58tW7YsH/zgB9OpU6d06tQps2fPzje/+c106tQpffr02el79Pd69uyZ/fffPwsXLnQPJenbt28OOuigZmMHHnhg5SOO669xYz14d4+WLVvWbP/atWuzfPnyHaJHSfKHP/whDz/8cP7xH/+xMub+Sb70pS/lyiuvzFlnnZVDDz0055xzTi699NLcfPPNSdw/SbLvvvtm9uzZWb16dV599dU8/fTTaWxszD777KM/AAAlEUq9h6IoMmHChNx999159NFHM2jQoGb7jzrqqFRXV+eRRx6pjC1YsCCvvPJK6uvrkyT19fX59a9/3exN68yZM1NbW7vB/2zuCJqamtLQ0KA3SU444YT8+te/zrx58yo/Rx99dMaOHVv5/c7eo7+3evXqvPTSS+nbt697KMlHPvKRLFiwoNnY7373uwwcODBJMmjQoNTV1TXr0apVqzJ37txmPVqxYkWzlR+PPvpompqaMnTo0BKuYtu744470rt374wePboy5v5J1qxZkw4dmv8nvmPHjmlqakri/nm3XXfdNX379s1f//rXPPjgg/nkJz+pPwAAZWnrJ61vr8aNG1f06NGjmDVrVrOvHV+zZk1lzkUXXVQMGDCgePTRR4tnn322qK+vL+rr6yv713/l+MiRI4t58+YVM2bMKPbYY48d4ivHr7zyymL27NnFokWLiueff7648sori6qqquKhhx4qimLn7s17efe37xWFHl122WXFrFmzikWLFhX/+Z//WYwYMaLYfffdi2XLlhVFoT9PP/100alTp+LGG28sXnzxxeLOO+8sunbtWvzgBz+ozLnllluKnj17Fj/72c+K559/vvjkJz+50a+sP/LII4u5c+cWTzzxRLHffvvtMF9Zv27dumLAgAHFFVdcscG+nf3+Offcc4s999yzmD59erFo0aLirrvuKnbffffi8ssvr8zZ2e+fGTNmFA888EDx+9//vnjooYeKww8/vBg6dGjxzjvvFEWhPwAAZRBKvYckG/254447KnPeeuut4r/9t/9WfOADHyi6du1anH766cXixYubvc7LL79cnHzyyUWXLl2K3XffvbjsssuKxsbGkq9m6/vc5z5XDBw4sOjcuXOxxx57FCeccEIlkCqKnbs37+XvQ6mdvUdnnnlm0bdv36Jz587FnnvuWZx55pnFwoULK/t39v4URVH8/Oc/Lw455JCipqamGDJkSPGd73yn2f6mpqbi6quvLvr06VPU1NQUJ5xwQrFgwYJmc15//fXi7LPPLrp161bU1tYWn/3sZ4s33nijzMvYZh588MEiyQbXXBTun1WrVhUXX3xxMWDAgGKXXXYp9tlnn+LLX/5y0dDQUJmzs98/P/7xj4t99tmn6Ny5c1FXV1eMHz++WLFiRWX/zt4fAIAyVBVFUbThQi0AAAAAdkKeKQUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJROKAUAAABA6YRSAAAAAJTu/wMpoWxkEBKzbgAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 19;\n", - " var nbb_unformatted_code = \"def visualize_image_stats(figsize=(12, 8)):\\n image_shapes = [ai.image.shape for ai in DATA.annotated_images]\\n\\n fig, axes = plt.subplots(nrows=2, ncols=2, figsize=figsize)\\n\\n height, width, channel = zip(*image_shapes)\\n\\n IPython.display.display(\\n pd.DataFrame(dict(width=width, height=height, channel=channel)).describe()\\n )\\n\\n plt.sca(axes[0][0])\\n plt.title(\\\"Image shapes\\\")\\n plt.xlabel(\\\"Width\\\")\\n plt.ylabel(\\\"Height\\\")\\n plt.scatter(\\n width,\\n height,\\n marker=\\\".\\\",\\n alpha=0.3,\\n )\\n plt.grid()\\n\\n plt.sca(axes[0][1])\\n plt.title(\\\"Width\\\")\\n plt.hist(width, bins=50)\\n plt.grid()\\n\\n plt.sca(axes[1][0])\\n plt.title(\\\"Height\\\")\\n plt.hist(height, bins=50)\\n plt.grid()\\n\\n plt.sca(axes[1][1])\\n plt.axis(\\\"off\\\")\\n\\n plt.tight_layout()\\n\\n\\nvisualize_image_stats()\";\n", - " var nbb_formatted_code = \"def visualize_image_stats(figsize=(12, 8)):\\n image_shapes = [ai.image.shape for ai in DATA.annotated_images]\\n\\n fig, axes = plt.subplots(nrows=2, ncols=2, figsize=figsize)\\n\\n height, width, channel = zip(*image_shapes)\\n\\n IPython.display.display(\\n pd.DataFrame(dict(width=width, height=height, channel=channel)).describe()\\n )\\n\\n plt.sca(axes[0][0])\\n plt.title(\\\"Image shapes\\\")\\n plt.xlabel(\\\"Width\\\")\\n plt.ylabel(\\\"Height\\\")\\n plt.scatter(\\n width,\\n height,\\n marker=\\\".\\\",\\n alpha=0.3,\\n )\\n plt.grid()\\n\\n plt.sca(axes[0][1])\\n plt.title(\\\"Width\\\")\\n plt.hist(width, bins=50)\\n plt.grid()\\n\\n plt.sca(axes[1][0])\\n plt.title(\\\"Height\\\")\\n plt.hist(height, bins=50)\\n plt.grid()\\n\\n plt.sca(axes[1][1])\\n plt.axis(\\\"off\\\")\\n\\n plt.tight_layout()\\n\\n\\nvisualize_image_stats()\";\n", + " var nbb_cell_id = 17;\n", + " var nbb_unformatted_code = \"def visualize_image_stats(figsize=(12, 8)):\\n image_shapes = [ai.image.shape for ai in generate_annotated_images()]\\n\\n fig, axes = plt.subplots(nrows=2, ncols=2, figsize=figsize)\\n\\n height, width, channel = zip(*image_shapes)\\n\\n IPython.display.display(\\n pd.DataFrame(dict(width=width, height=height, channel=channel)).describe()\\n )\\n\\n plt.sca(axes[0][0])\\n plt.title(\\\"Image shapes\\\")\\n plt.xlabel(\\\"Width\\\")\\n plt.ylabel(\\\"Height\\\")\\n plt.scatter(\\n width,\\n height,\\n marker=\\\".\\\",\\n alpha=0.3,\\n )\\n plt.grid()\\n\\n plt.sca(axes[0][1])\\n plt.title(\\\"Width\\\")\\n plt.hist(width, bins=50)\\n plt.grid()\\n\\n plt.sca(axes[1][0])\\n plt.title(\\\"Height\\\")\\n plt.hist(height, bins=50)\\n plt.grid()\\n\\n plt.sca(axes[1][1])\\n plt.axis(\\\"off\\\")\\n\\n plt.tight_layout()\";\n", + " var nbb_formatted_code = \"def visualize_image_stats(figsize=(12, 8)):\\n image_shapes = [ai.image.shape for ai in generate_annotated_images()]\\n\\n fig, axes = plt.subplots(nrows=2, ncols=2, figsize=figsize)\\n\\n height, width, channel = zip(*image_shapes)\\n\\n IPython.display.display(\\n pd.DataFrame(dict(width=width, height=height, channel=channel)).describe()\\n )\\n\\n plt.sca(axes[0][0])\\n plt.title(\\\"Image shapes\\\")\\n plt.xlabel(\\\"Width\\\")\\n plt.ylabel(\\\"Height\\\")\\n plt.scatter(\\n width,\\n height,\\n marker=\\\".\\\",\\n alpha=0.3,\\n )\\n plt.grid()\\n\\n plt.sca(axes[0][1])\\n plt.title(\\\"Width\\\")\\n plt.hist(width, bins=50)\\n plt.grid()\\n\\n plt.sca(axes[1][0])\\n plt.title(\\\"Height\\\")\\n plt.hist(height, bins=50)\\n plt.grid()\\n\\n plt.sca(axes[1][1])\\n plt.axis(\\\"off\\\")\\n\\n plt.tight_layout()\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -23792,7 +22988,7 @@ ], "source": [ "def visualize_image_stats(figsize=(12, 8)):\n", - " image_shapes = [ai.image.shape for ai in DATA.annotated_images]\n", + " image_shapes = [ai.image.shape for ai in generate_annotated_images()]\n", "\n", " fig, axes = plt.subplots(nrows=2, ncols=2, figsize=figsize)\n", "\n", @@ -23827,24 +23023,70 @@ " plt.sca(axes[1][1])\n", " plt.axis(\"off\")\n", "\n", - " plt.tight_layout()\n", - "\n", - "\n", - "visualize_image_stats()" + " plt.tight_layout()" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 18, + "id": "f385dc34", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:38.879630Z", + "start_time": "2023-04-18T15:47:38.875047Z" + } + }, + "outputs": [ + { + "data": { + "application/javascript": [ + "\n", + " setTimeout(function() {\n", + " var nbb_cell_id = 18;\n", + " var nbb_unformatted_code = \"if DEBUG:\\n visualize_image_stats()\";\n", + " var nbb_formatted_code = \"if DEBUG:\\n visualize_image_stats()\";\n", + " var nbb_cells = Jupyter.notebook.get_cells();\n", + " for (var i = 0; i < nbb_cells.length; ++i) {\n", + " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", + " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", + " nbb_cells[i].set_text(nbb_formatted_code);\n", + " }\n", + " break;\n", + " }\n", + " }\n", + " }, 500);\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "if DEBUG:\n", + " visualize_image_stats()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, "id": "c068b2ac", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:38.900221Z", + "start_time": "2023-04-18T15:47:38.881375Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 20;\n", + " var nbb_cell_id = 19;\n", " var nbb_unformatted_code = \"CONFIG.image_width = 720\\nCONFIG.image_height = 512\";\n", " var nbb_formatted_code = \"CONFIG.image_width = 720\\nCONFIG.image_height = 512\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", @@ -23874,18 +23116,23 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "id": "24f7f000", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:38.943528Z", + "start_time": "2023-04-18T15:47:38.902282Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 21;\n", - " var nbb_unformatted_code = \"def plot_image_with_annotations(image_index, show_categorical_data=True):\\n annotated_image = DATA.annotated_images[image_index]\\n annotation = annotated_image.annotation\\n image = annotated_image.image\\n plt.subplots(figsize=(8, 6))\\n plt.imshow(image)\\n\\n if show_categorical_data:\\n IPython.display.display(\\n pd.Series(\\n dict(\\n source=annotation.source.value,\\n chart_type=annotation.chart_type.value,\\n x_values_type=annotation.axes.x_axis.values_type.value,\\n y_values_type=annotation.axes.y_axis.values_type.value,\\n x_tick_type=annotation.axes.x_axis.tick_type.value,\\n y_tick_type=annotation.axes.y_axis.tick_type.value,\\n )\\n )\\n )\\n\\n plt.plot(*annotation.plot_bb.get_bounds(), c=\\\"red\\\", label=\\\"bounding_box\\\")\\n\\n plt.scatter(\\n *list(zip(*[[tick.x, tick.y] for tick in annotation.axes.x_axis.ticks])),\\n label=\\\"x_ticks\\\"\\n )\\n plt.scatter(\\n *list(zip(*[[tick.x, tick.y] for tick in annotation.axes.y_axis.ticks])),\\n label=\\\"y_ticks\\\"\\n )\\n\\n text_role_colors = dict(zip(TextRole, plt.cm.Accent.colors))\\n seen_roles = set()\\n for i, text in enumerate(annotation.text):\\n xs = [\\n text.polygon.x0,\\n text.polygon.x1,\\n text.polygon.x2,\\n text.polygon.x3,\\n text.polygon.x0,\\n ]\\n ys = [\\n text.polygon.y0,\\n text.polygon.y1,\\n text.polygon.y2,\\n text.polygon.y3,\\n text.polygon.y0,\\n ]\\n plt.plot(\\n xs,\\n ys,\\n c=text_role_colors[text.role],\\n label=text.role.value if text.role not in seen_roles else None,\\n )\\n seen_roles.add(text.role)\\n\\n plt.legend(bbox_to_anchor=(1.04, 1), loc=\\\"upper left\\\")\";\n", - " var nbb_formatted_code = \"def plot_image_with_annotations(image_index, show_categorical_data=True):\\n annotated_image = DATA.annotated_images[image_index]\\n annotation = annotated_image.annotation\\n image = annotated_image.image\\n plt.subplots(figsize=(8, 6))\\n plt.imshow(image)\\n\\n if show_categorical_data:\\n IPython.display.display(\\n pd.Series(\\n dict(\\n source=annotation.source.value,\\n chart_type=annotation.chart_type.value,\\n x_values_type=annotation.axes.x_axis.values_type.value,\\n y_values_type=annotation.axes.y_axis.values_type.value,\\n x_tick_type=annotation.axes.x_axis.tick_type.value,\\n y_tick_type=annotation.axes.y_axis.tick_type.value,\\n )\\n )\\n )\\n\\n plt.plot(*annotation.plot_bb.get_bounds(), c=\\\"red\\\", label=\\\"bounding_box\\\")\\n\\n plt.scatter(\\n *list(zip(*[[tick.x, tick.y] for tick in annotation.axes.x_axis.ticks])),\\n label=\\\"x_ticks\\\"\\n )\\n plt.scatter(\\n *list(zip(*[[tick.x, tick.y] for tick in annotation.axes.y_axis.ticks])),\\n label=\\\"y_ticks\\\"\\n )\\n\\n text_role_colors = dict(zip(TextRole, plt.cm.Accent.colors))\\n seen_roles = set()\\n for i, text in enumerate(annotation.text):\\n xs = [\\n text.polygon.x0,\\n text.polygon.x1,\\n text.polygon.x2,\\n text.polygon.x3,\\n text.polygon.x0,\\n ]\\n ys = [\\n text.polygon.y0,\\n text.polygon.y1,\\n text.polygon.y2,\\n text.polygon.y3,\\n text.polygon.y0,\\n ]\\n plt.plot(\\n xs,\\n ys,\\n c=text_role_colors[text.role],\\n label=text.role.value if text.role not in seen_roles else None,\\n )\\n seen_roles.add(text.role)\\n\\n plt.legend(bbox_to_anchor=(1.04, 1), loc=\\\"upper left\\\")\";\n", + " var nbb_cell_id = 20;\n", + " var nbb_unformatted_code = \"def plot_image_with_annotations(image_id: str, show_categorical_data=True):\\n annotated_image = AnnotatedImage.from_image_id(image_id)\\n annotation = annotated_image.annotation\\n image = annotated_image.image\\n plt.subplots(figsize=(8, 6))\\n plt.imshow(image)\\n\\n if show_categorical_data:\\n IPython.display.display(\\n pd.Series(\\n dict(\\n source=annotation.source.value,\\n chart_type=annotation.chart_type.value,\\n x_values_type=annotation.axes.x_axis.values_type.value,\\n y_values_type=annotation.axes.y_axis.values_type.value,\\n x_tick_type=annotation.axes.x_axis.tick_type.value,\\n y_tick_type=annotation.axes.y_axis.tick_type.value,\\n )\\n )\\n )\\n\\n plt.plot(*annotation.plot_bb.get_bounds(), c=\\\"red\\\", label=\\\"bounding_box\\\")\\n\\n plt.scatter(\\n *list(zip(*[[tick.x, tick.y] for tick in annotation.axes.x_axis.ticks])),\\n label=\\\"x_ticks\\\"\\n )\\n plt.scatter(\\n *list(zip(*[[tick.x, tick.y] for tick in annotation.axes.y_axis.ticks])),\\n label=\\\"y_ticks\\\"\\n )\\n\\n text_role_colors = dict(zip(TextRole, plt.cm.Accent.colors))\\n seen_roles = set()\\n for i, text in enumerate(annotation.text):\\n xs = [\\n text.polygon.x0,\\n text.polygon.x1,\\n text.polygon.x2,\\n text.polygon.x3,\\n text.polygon.x0,\\n ]\\n ys = [\\n text.polygon.y0,\\n text.polygon.y1,\\n text.polygon.y2,\\n text.polygon.y3,\\n text.polygon.y0,\\n ]\\n plt.plot(\\n xs,\\n ys,\\n c=text_role_colors[text.role],\\n label=text.role.value if text.role not in seen_roles else None,\\n )\\n seen_roles.add(text.role)\\n\\n plt.legend(bbox_to_anchor=(1.04, 1), loc=\\\"upper left\\\")\";\n", + " var nbb_formatted_code = \"def plot_image_with_annotations(image_id: str, show_categorical_data=True):\\n annotated_image = AnnotatedImage.from_image_id(image_id)\\n annotation = annotated_image.annotation\\n image = annotated_image.image\\n plt.subplots(figsize=(8, 6))\\n plt.imshow(image)\\n\\n if show_categorical_data:\\n IPython.display.display(\\n pd.Series(\\n dict(\\n source=annotation.source.value,\\n chart_type=annotation.chart_type.value,\\n x_values_type=annotation.axes.x_axis.values_type.value,\\n y_values_type=annotation.axes.y_axis.values_type.value,\\n x_tick_type=annotation.axes.x_axis.tick_type.value,\\n y_tick_type=annotation.axes.y_axis.tick_type.value,\\n )\\n )\\n )\\n\\n plt.plot(*annotation.plot_bb.get_bounds(), c=\\\"red\\\", label=\\\"bounding_box\\\")\\n\\n plt.scatter(\\n *list(zip(*[[tick.x, tick.y] for tick in annotation.axes.x_axis.ticks])),\\n label=\\\"x_ticks\\\"\\n )\\n plt.scatter(\\n *list(zip(*[[tick.x, tick.y] for tick in annotation.axes.y_axis.ticks])),\\n label=\\\"y_ticks\\\"\\n )\\n\\n text_role_colors = dict(zip(TextRole, plt.cm.Accent.colors))\\n seen_roles = set()\\n for i, text in enumerate(annotation.text):\\n xs = [\\n text.polygon.x0,\\n text.polygon.x1,\\n text.polygon.x2,\\n text.polygon.x3,\\n text.polygon.x0,\\n ]\\n ys = [\\n text.polygon.y0,\\n text.polygon.y1,\\n text.polygon.y2,\\n text.polygon.y3,\\n text.polygon.y0,\\n ]\\n plt.plot(\\n xs,\\n ys,\\n c=text_role_colors[text.role],\\n label=text.role.value if text.role not in seen_roles else None,\\n )\\n seen_roles.add(text.role)\\n\\n plt.legend(bbox_to_anchor=(1.04, 1), loc=\\\"upper left\\\")\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -23907,8 +23154,8 @@ } ], "source": [ - "def plot_image_with_annotations(image_index, show_categorical_data=True):\n", - " annotated_image = DATA.annotated_images[image_index]\n", + "def plot_image_with_annotations(image_id: str, show_categorical_data=True):\n", + " annotated_image = AnnotatedImage.from_image_id(image_id)\n", " annotation = annotated_image.annotation\n", " image = annotated_image.image\n", " plt.subplots(figsize=(8, 6))\n", @@ -23969,19 +23216,24 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "id": "a54cc20e", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:39.579100Z", + "start_time": "2023-04-18T15:47:38.949939Z" + } + }, "outputs": [ { "data": { "text/plain": [ - "source generated\n", - "chart_type vertical_bar\n", - "x_values_type categorical\n", - "y_values_type numerical\n", - "x_tick_type markers\n", - "y_tick_type markers\n", + "source generated\n", + "chart_type line\n", + "x_values_type categorical\n", + "y_values_type numerical\n", + "x_tick_type markers\n", + "y_tick_type markers\n", "dtype: object" ] }, @@ -23990,7 +23242,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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pQU8nsM65Omnn+aaa65h6dKlfPbZZ/zwhz+kuLiY6667jquvvpqNGzcyc+ZM0tLSuPPOOznnnHNYs2bNAXNUdsRHH31Et27d+Oijj9i0aROXXHIJQ4YM4brrrgOSCtiuXbv46KOPsNls3HTTTVRXH9qV/e677+bhhx+mZ8+e3H333Vx66aVs2rQJVVVZuHAh119/PQ8++CDnnXcec+bM4Ze//OVh9c2mTZt45ZVXeOutt2hqauKaa67hJz/5Cc8//zwAf/rTn/j973/PE088wdChQ/nXv/7Feeedx1dffUXPnj15+umnGThwII8++ig333wz119/PQUFBfzqV786rHp0hIgWKDjq+Lw+/H4/dXV1PPjgg/zqV7/ijTfeYPfu3aiqSjwep7q6mjfeeIN77rmHhx9+mGAwSFpa2n5JPkOhEO+99x733HMPjzzyiJWQ04xQBcnIW08//TQvvPACmzZtIjMzE4fDYVlsnE4nK1as4IEHHqCxsdFa9aioqCAtLQ2v14vL5bJWYXVd59lnn+Wpp55i1apVxGIx/vnPf/Lcc8/x+eefoygKGRkZrFu3jn/+85+8++67lsWrsLCQhoYG3n33XR566CFLQLHZbMRiMSoqKvjLX/5CRUUFXq+XnJwcK8nuX//6V55++mnWrVtH3759KS8v56mnnuL+++/nlVdeQZZlXC4XTz/9NO+++y47duwgMzOTQCDA8uXL+fe//82///1vSyAbOnQo8Xic2bNnc/vtt/Pggw/S0NBAPB5n06ZN/PWvf+XNN9+krKwMWZbZvHkz27Zts5I0m6vpdrudmpoann76aV566SWWLVtGIpHgoYce4uc//zlz5syxNuqb1idVVampqeHf//439913H0uXLqW+vt7KCZZIJHj55Zf58MMP2blzJ+vWreOvf/0r69evp6amhoqKCl566SXLErd06VL+8Y9/UFlZSXZ2Ns3NzezevZva2lrcbnebwACRSIQdO3bwy1/+EpfLxahRo+jXrx9Op9OKKhiPx2loaOCll17igQceYPHixTQ2NlpR3yBpkWlsbGTdunX84Q9/YNWqVfj9fvLy8mhoaOB///d/ee6559ixY4e18r948WL+9a9/sXHjRpxOJ926daOqqsqyHrWPzJeKYRh8/PHHPPbYY9Z4L1++nN/85je88847LFq0iOeeew673c7ixYt54YUXmDVrFolEgtmzZ/P+++9bCRAhuSK6ZMkS/vCHP3D//fezYsUKwuEwhmFY99DOnTt57LHHmD59Oi+88ALr168nEAjQ1NTE66+/zrvvvsvGjRsJBAL4/X4+/PBD/vnPf/Kf//yHvLw8xo0bR05ODp9//jkPP/wwt99+O/Pnz6elpcWK7pdIJFi0aBF/+MMfeO6551i1apXVv2Y9duzYwX333ce2bduora3lww8/5P777+c3v/kNiUSCvLw8S6G///77qaqqYuDAgYwYMYL09HTefvtt7r77bp544gk+++wzq43vvPMO//73v1m2bFmrNTSp/GzdupXq6mqysrIYOHAg27Zt46WXXuK1115j48aNVgCJpUuX8sorr/Dqq6/Sr18/YrEYmzZtYu/evWRlZVFXV8eTTz7Je++9R319PQMHDqRXr140Nzfz2GOPccMNN3D//fej67q1wNTY2Mjf/vY3a/U2NccTJPN6VVdX8+GHH/LYY4+xZcsWZFnG6/XiaFVU//73v/Pzn/+cxx57jE8++QRILnosXLiQ999/n88//7yNJTl1zum6zkMPPcTvf/975s1LKryvv/46t912G2+88QbNzc1WNMlIJMKKFStYsGCBFW3xL3/5C7/5zW949tlnreAgplW6srKSf/7zn9xwww28+OKLbN261XquqqpKJBJh1apVzJs3zzqfubr9r3/9q00UT4Hgv4GioiL++Mc/0rt3by677DJ++tOf8sc//tFSqv7xj39wyimnMHjwYJ5//nl27tzJG2+8cVjXCAQC/PnPf6ZPnz5MmTKFc889l7lz5wKwYcMG3n33XZ588klOPvlkhg8fzj//+U/C4fAhz3vHHXdw7rnn0qtXL+699162bdvGpk2bAHjssceYPHkyd9xxB7169eInP/kJkydPPqx6RyIRnnnmGYYMGcKpp57KY489xksvvcTu3bsBePjhh7nzzjv53ve+R+/evXnwwQfbBAgpKCjgiSee4Be/+AV33XUXs2bN4rnnnmsTxOrrIixXgqOOrut4vV569uzJwIED2bBhA0uXLqVHjx5cccUVyLLMxx9/zMqVK2lpacHr9dKnTx/LjclckQmFQixbtox169ZRV1fHkiVL+PLLL+nevTs+n89yAystLcXlcpGWlka/fv3aJMy12WxkZ2czZMgQPvroI8rLyzn99NO54IIL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q6Opqcmy3rW0tDBnzhxmzJhBcXExP//5z2loSOaKqqqqsqyPkUiEl19+mQULFpCZmcmzzz5r7S2srq5uzdFm58ILL7TCyZsWH/O+NlMyxGIxqqqqLEWroaGBzz//nEWLFrF06VJOPvlkcnNzOf/886mtreXXv/41sVjMciU0iUaj1gLI8uXLrYiOkHTLVlWVDRs20K9fP8ujoKSkhLPPPptXXnmF1157jZKSEi677DLeeust/H4/V155pRWK3bTcmvn1FEWhqqrKssgD1vlefvllXn31VcrKyvj+97/PO++8g81m4wc/+EEyDPzxtWVDIPjWmDdvnvX3448/vt/3gUCAZ5555qDnuP766/dTFv7nf/7H+nvGjBn7HWNG0zPJy8vbL9DEFVdc0eZ96qJraWnpfhZx01U6leuuu84K926+79Gjx4Ebk8L06dOZPn06AD/+8Y87LCPLMvfccw/33HPPft+ZLpOp2Gw2Pvvss05d/1AI5Upw1Nm5cyc7duxg+PDh1n6WzMxMJk6cyN69ezn33HPx+/189dVX7N27l7PPPpt4PG5FvQqFQnzyySd0796djRs3UlhYaK229unTx0qyunnzZoqKili8eDFlZWXous6GDRt49dVXWbVqFSUlJWRlZbF792727t3LSSedZG3yb2xsJDs7m/LycmtjvbmCPHLkSE455RS2b9/OwoUL2bVrF+eddx4jRoyge/fuloWosLCQK6+8kq+++orm5mZeffVVy3Wnd+/e9O/f33JfamlpYfv27Xz11VcMGTKErVu3sm7dOkt4vfDCC3G5XGzbto01a9ZQV1dHbm4uNpvNChSgaRqffPKJFWq+pqaGVatWkZOTw5YtW/B4PGRkZFBRUcHixYuJRCKWwHrOOedYfsuVlZVUVVVRWlqK0+nknXfeYffu3QSDQStCnLmvxrRuLFu2jJ49e1ruV6qqcscdd7BkyRI2bdrE559/zrhx41i5cqXl/22ueHfr1o2srCxKSkoIBoNs2LCBYcOG0a1bN8v9qrq6mvLycurr69mzZw+lpaWkpaVRU1PDunXrsNvtDBgwgA0bNjBz5ky++uorvF4vQ4cOBZLuSqn7fcwoiYsXL8blclFWVkZaWhorV65EVVVUVaW6utoKo+52uykoKEBRFD766CNKSkrIz89n4MCB/OhHP+LZZ59l1apV1NXVWfvu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xAg8Hg8PPPDAQY9xuVx4vV5UVT2oG+ALL7zA3r17WbZsGRkZGQD06NFjv3KLFi1iypQp3H333dx+++3W55WVlUybNo2BAwcCUF5e/nWaeMIi3AIFAoFAIBAIBIIUqpsPrFh9nXJfh4cffphEIsG///1vnn/+eRwOxxE574oVKxg6dKilWHVEZWUlZ511Fr/61a/aKFYAN910E/fddx9jx47lnnvu4csvvzwi9TpREMqVQCAQCAQCgUCQQo7PeUTLfR02b97Mrl270HWdrVu3HrHzulyuQ5bJzs5m1KhRvPjiizQ1NbX57tprr2XLli1cccUVrFq1ihEjRvDYY48dsfp1dYRyJRAIBAKBQCAQpDCqLINuficH2k0lkYwaOKrswNafb0IsFuPyyy/nkksu4Te/+Q3XXnst1dXVhzzObrejadpBywwaNIgVK1ZQV1d3wDIul4u3334bp9PJxIkTaW5ubvN9UVER119/Pa+//jq33347Tz75ZOca9l+AUK4EAoFAIBAIBIIUFFninqn9APZTsMz390zt963lu7r77rtpbGzk0Ucf5c4776RXr1784Ac/OORxpaWlVFRUsGLFCmpqaohGo/uVufTSS8nLy+OCCy5g4cKFbNmyhddee41PP/20TTmPx8M777yDqqpMnjyZlpYWAG655Rbee+89Kioq+OKLL/joo4/o27fvkWn4CYBQrgQCgUAgEAgEgnZMGtCNxy8fRp6/retfnt/J45cP+9byXM2bN49HHnmEZ599lrS0NGRZ5tlnn2XBggU8/vjjBz122rRpTJo0idNPP53s7GxefPHF/crY7Xbef/99cnJyOOeccxg4cCC//e1vURRlv7Jer5d3330XwzA499xzCQaDaJrGDTfcQN++fZk0aRK9evXir3/96xFrf1dHMgyjoyiTxzVNTU34/X4aGxtJS0s71tURCAQCgUAgELTjWMtrkUiEiooKysrKcDq//t4oTTdYWlFHdXOEHF/SFfDbslgJjk8OZy6JUOwCgUAgEAgEAsEBUGTpWwm3LjgxEW6BAoFAIBAIBAJBF6B///54vd4OX88///yxrp4AYbkSCAQCgUAgEAi6BLNmzSIej3f4XW5u7lGujaAjhHIlEAgEAoFAIBB0AUpKSo51FQSHQLgFCgQCgUAgEAgEAsERQChXAoFAIBAIBAKBQHAEEMqVQCAQ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WUE3jK6xIdoMh2cY6MFgUshwu5G83n0/vBzfClaqgijJMoamYbQG5iCRwAiHk24UHg90RrnSTeVKB1knObrmXquks1/yExnJkNocbJDcm9E+CMYRR1UxotHkNd1uDDOgQOo+nuN4zCC5388wjOQeA/O9JGHoOno8nhyvLtAOjGSAG3O/Dq37dwxdT+7x07TkfGjde2W43fvanLIgJRlG19hzBcn2JRLoLheGzZYcq1blytprdrwLuCl7rJCSSx+GYYCmJdvldoPHg3SAzd5dDl1Hd7mSY2WOV/u9Vl1h7pmYSknqeLndSDZbl2vHfvvddB0UBSMex3A4kveY4JjhdDq58847+fnPf47dbmfs2LHs3buXr7766qCugiY9e/bk1VdfZdGiRQQCAf7whz+wZ8+eTilXpaWlzJ07l7Fjx+JwOKxcVQcrX1FRwYoVKygsLMTn8+23qJyTk4PL5WL27NlWTIL2gS98Ph933HEHt956K7quM27cOBobG1m4cCFpaWnW3rOuwHH+S3RwUlfAUv83icViRCIR0tLSLPPp8OHDufHGG/n+979Pjx49qKurO6yoRZIktXE/dDocnHvuuRQWFiLLMm63m6uvvpohQ4bgdrvJz89n/PjxZGdn09LSwimnnMIFF1zAyJEjD31dWYFJDwLJsNxt2m5aJCY9gKzaukykvc7UsSu049tDom28ddN+tW+HgmFFB9SSL8ks03qGb0HLah/lrP0YHc+KcEccKAR5V5l7lnLU+n/79rQfj9Rynfn8eKV9G81XV6k/dL0+/6akjlNH37WPbHk80r5++y3qpnx2PLfDpH1bBMcnv/zlL7n99tv51a9+Rd++fbnkkkuorq7u1LH/+7//y7Bhw5g4cSKnnXYaeXl5nU4K/Pvf/54PPviAoqKiTu11mjZtGpMmTeL0008nOzt7v5DvkIys/eijj/LEE0+Qn5/P+eef3+G5fvOb3/DLX/6SBx54gL59+zJp0iTeeecdK5R7V6HLW64OhiRJBINB3G43gUAATdMoKyvD5/Phcrks14vUkL6HIhqNkkgxOMUSBuNOPZ1gKIQsy7haV1JjCYNINILT42PYiJPo038QNlXFZrNZriHxzlhd+50H332auqeuJYvmfZ+n5RM7416UXueitj7cD6cdx5r2wmH7EL3Hu7DeXqD75oK63Loqqre68rULmY0C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", "text/plain": [ "
" ] @@ -24003,9 +23255,9 @@ "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 22;\n", - " var nbb_unformatted_code = \"plot_image_with_annotations(np.random.choice(len(DATA.annotated_images)))\";\n", - " var nbb_formatted_code = \"plot_image_with_annotations(np.random.choice(len(DATA.annotated_images)))\";\n", + " var nbb_cell_id = 21;\n", + " var nbb_unformatted_code = \"plot_image_with_annotations(np.random.choice(load_train_image_ids()))\";\n", + " var nbb_formatted_code = \"plot_image_with_annotations(np.random.choice(load_train_image_ids()))\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -24027,7 +23279,7 @@ } ], "source": [ - "plot_image_with_annotations(np.random.choice(len(DATA.annotated_images)))" + "plot_image_with_annotations(np.random.choice(load_train_image_ids()))" ] }, { @@ -24040,18 +23292,23 @@ }, { "cell_type": "code", - "execution_count": 303, + "execution_count": 22, "id": "7b2e2e49", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:39.606668Z", + "start_time": "2023-04-18T15:47:39.581401Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 303;\n", - " var nbb_unformatted_code = \"def split_train_indices_by_source():\\n extracted_image_indices = []\\n generated_image_indices = []\\n for i, annotated_image in enumerate(DATA.annotated_images):\\n if annotated_image.annotation.source == Source.extracted:\\n extracted_image_indices.append(i)\\n else:\\n generated_image_indices.append(i)\\n return extracted_image_indices, generated_image_indices\\n\\ndef get_train_val_split_indices(val_fraction=0.1, seed=42):\\n np.random.seed(42)\\n val_size = int(len(load_train_image_ids()) * val_fraction)\\n\\n extracted_image_indices, generated_image_indices = split_train_indices_by_source()\\n extracted_image_indices = np.random.permutation(extracted_image_indices)\\n generated_image_indices = np.random.permutation(generated_image_indices)\\n\\n val_indices = extracted_image_indices[:val_size]\\n n_generated_images_in_val = val_size - len(val_indices)\\n val_indices = np.concatenate(\\n [val_indices, generated_image_indices[:n_generated_images_in_val]]\\n )\\n\\n train_indices = generated_image_indices[n_generated_images_in_val:]\\n\\n assert len(set(train_indices) | set(val_indices)) == len(load_train_image_ids())\\n assert len(val_indices) == val_size\\n assert len(set(train_indices) & set(val_indices)) == 0\\n\\n return train_indices, val_indices\";\n", - " var nbb_formatted_code = \"def split_train_indices_by_source():\\n extracted_image_indices = []\\n generated_image_indices = []\\n for i, annotated_image in enumerate(DATA.annotated_images):\\n if annotated_image.annotation.source == Source.extracted:\\n extracted_image_indices.append(i)\\n else:\\n generated_image_indices.append(i)\\n return extracted_image_indices, generated_image_indices\\n\\n\\ndef get_train_val_split_indices(val_fraction=0.1, seed=42):\\n np.random.seed(42)\\n val_size = int(len(load_train_image_ids()) * val_fraction)\\n\\n extracted_image_indices, generated_image_indices = split_train_indices_by_source()\\n extracted_image_indices = np.random.permutation(extracted_image_indices)\\n generated_image_indices = np.random.permutation(generated_image_indices)\\n\\n val_indices = extracted_image_indices[:val_size]\\n n_generated_images_in_val = val_size - len(val_indices)\\n val_indices = np.concatenate(\\n [val_indices, generated_image_indices[:n_generated_images_in_val]]\\n )\\n\\n train_indices = generated_image_indices[n_generated_images_in_val:]\\n\\n assert len(set(train_indices) | set(val_indices)) == len(load_train_image_ids())\\n assert len(val_indices) == val_size\\n assert len(set(train_indices) & set(val_indices)) == 0\\n\\n return train_indices, val_indices\";\n", + " var nbb_cell_id = 22;\n", + " var nbb_unformatted_code = \"def split_train_indices_by_source():\\n extracted_image_indices = []\\n generated_image_indices = []\\n for i, annotated_image in enumerate(generate_annotated_images()):\\n if annotated_image.annotation.source == Source.extracted:\\n extracted_image_indices.append(i)\\n else:\\n generated_image_indices.append(i)\\n return extracted_image_indices, generated_image_indices\\n\\n\\ndef get_train_val_split_indices(val_fraction=0.1, seed=42):\\n np.random.seed(42)\\n val_size = int(len(load_train_image_ids()) * val_fraction)\\n\\n extracted_image_indices, generated_image_indices = split_train_indices_by_source()\\n extracted_image_indices = np.random.permutation(extracted_image_indices)\\n generated_image_indices = np.random.permutation(generated_image_indices)\\n\\n val_indices = extracted_image_indices[:val_size]\\n n_generated_images_in_val = val_size - len(val_indices)\\n val_indices = np.concatenate(\\n [val_indices, generated_image_indices[:n_generated_images_in_val]]\\n )\\n\\n train_indices = generated_image_indices[n_generated_images_in_val:]\\n\\n assert len(set(train_indices) | set(val_indices)) == len(load_train_image_ids())\\n assert len(val_indices) == val_size\\n assert len(set(train_indices) & set(val_indices)) == 0\\n\\n return train_indices, val_indices\";\n", + " var nbb_formatted_code = \"def split_train_indices_by_source():\\n extracted_image_indices = []\\n generated_image_indices = []\\n for i, annotated_image in enumerate(generate_annotated_images()):\\n if annotated_image.annotation.source == Source.extracted:\\n extracted_image_indices.append(i)\\n else:\\n generated_image_indices.append(i)\\n return extracted_image_indices, generated_image_indices\\n\\n\\ndef get_train_val_split_indices(val_fraction=0.1, seed=42):\\n np.random.seed(42)\\n val_size = int(len(load_train_image_ids()) * val_fraction)\\n\\n extracted_image_indices, generated_image_indices = split_train_indices_by_source()\\n extracted_image_indices = np.random.permutation(extracted_image_indices)\\n generated_image_indices = np.random.permutation(generated_image_indices)\\n\\n val_indices = extracted_image_indices[:val_size]\\n n_generated_images_in_val = val_size - len(val_indices)\\n val_indices = np.concatenate(\\n [val_indices, generated_image_indices[:n_generated_images_in_val]]\\n )\\n\\n train_indices = generated_image_indices[n_generated_images_in_val:]\\n\\n assert len(set(train_indices) | set(val_indices)) == len(load_train_image_ids())\\n assert len(val_indices) == val_size\\n assert len(set(train_indices) & set(val_indices)) == 0\\n\\n return train_indices, val_indices\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -24076,7 +23333,7 @@ "def split_train_indices_by_source():\n", " extracted_image_indices = []\n", " generated_image_indices = []\n", - " for i, annotated_image in enumerate(DATA.annotated_images):\n", + " for i, annotated_image in enumerate(generate_annotated_images()):\n", " if annotated_image.annotation.source == Source.extracted:\n", " extracted_image_indices.append(i)\n", " else:\n", @@ -24109,18 +23366,30 @@ }, { "cell_type": "code", - "execution_count": 25, - "id": "3a83e270", - "metadata": {}, + "execution_count": 23, + "id": "5ae948ff", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:39.648756Z", + "start_time": "2023-04-18T15:47:39.608585Z" + } + }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reusing split indices.\n" + ] + }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 25;\n", - " var nbb_unformatted_code = \"CONFIG.val_fraction = 0.1\\nCONFIG.seed = 42\\nDATA.train_indices, DATA.val_indices = get_train_val_split_indices(\\n CONFIG.val_fraction, CONFIG.seed\\n)\";\n", - " var nbb_formatted_code = \"CONFIG.val_fraction = 0.1\\nCONFIG.seed = 42\\nDATA.train_indices, DATA.val_indices = get_train_val_split_indices(\\n CONFIG.val_fraction, CONFIG.seed\\n)\";\n", + " var nbb_cell_id = 23;\n", + " var nbb_unformatted_code = \"CONFIG.val_fraction = 0.1\\nCONFIG.seed = 42\\nCONFIG.train_indices_path = \\\"train_indices.pickle\\\"\\nCONFIG.val_indices_path = \\\"val_indices.pickle\\\"\\n\\nif os.path.exists(CONFIG.train_indices_path) and os.path.exists(\\n CONFIG.val_indices_path\\n):\\n DATA.train_indices = pickle.load(open(CONFIG.train_indices_path, \\\"rb\\\"))\\n DATA.val_indices = pickle.load(open(CONFIG.val_indices_path, \\\"rb\\\"))\\n print(\\\"Reusing split indices.\\\")\\nelse:\\n DATA.train_indices = (\\n DATA.train_indices,\\n DATA.val_indices,\\n ) = get_train_val_split_indices(CONFIG.val_fraction, CONFIG.seed)\\n pickle.dump(DATA.train_indices, open(CONFIG.train_indices_path, \\\"wb\\\"))\\n pickle.dump(DATA.val_indices, open(CONFIG.val_indices_path, \\\"wb\\\"))\";\n", + " var nbb_formatted_code = \"CONFIG.val_fraction = 0.1\\nCONFIG.seed = 42\\nCONFIG.train_indices_path = \\\"train_indices.pickle\\\"\\nCONFIG.val_indices_path = \\\"val_indices.pickle\\\"\\n\\nif os.path.exists(CONFIG.train_indices_path) and os.path.exists(\\n CONFIG.val_indices_path\\n):\\n DATA.train_indices = pickle.load(open(CONFIG.train_indices_path, \\\"rb\\\"))\\n DATA.val_indices = pickle.load(open(CONFIG.val_indices_path, \\\"rb\\\"))\\n print(\\\"Reusing split indices.\\\")\\nelse:\\n DATA.train_indices = (\\n DATA.train_indices,\\n DATA.val_indices,\\n ) = get_train_val_split_indices(CONFIG.val_fraction, CONFIG.seed)\\n pickle.dump(DATA.train_indices, open(CONFIG.train_indices_path, \\\"wb\\\"))\\n pickle.dump(DATA.val_indices, open(CONFIG.val_indices_path, \\\"wb\\\"))\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -24144,8 +23413,11 @@ "source": [ "CONFIG.val_fraction = 0.1\n", "CONFIG.seed = 42\n", - "DATA.train_indices, DATA.val_indices = get_train_val_split_indices(\n", - " CONFIG.val_fraction, CONFIG.seed\n", + "CONFIG.train_val_indices_path = \"data/train_val_indices.pickle\"\n", + "\n", + "DATA.train_indices, DATA.val_indices = load_pickle_or_build_object_and_save(\n", + " CONFIG.train_val_indices_path,\n", + " lambda : get_train_val_split_indices(CONFIG.val_fraction, CONFIG.seed)\n", ")" ] }, @@ -24159,9 +23431,14 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 24, "id": "52e5fc7e", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:39.678486Z", + "start_time": "2023-04-18T15:47:39.650465Z" + } + }, "outputs": [ { "data": { @@ -24226,7 +23503,7 @@ "3 007a18eb4e09_y 0.0;1.0 vertical_bar" ] }, - "execution_count": 26, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, @@ -24235,7 +23512,7 @@ "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 26;\n", + " var nbb_cell_id = 24;\n", " var nbb_unformatted_code = \"pd.read_csv(\\\"data/sample_submission.csv\\\").head(4)\";\n", " var nbb_formatted_code = \"pd.read_csv(\\\"data/sample_submission.csv\\\").head(4)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", @@ -24272,16 +23549,21 @@ }, { "cell_type": "code", - "execution_count": 166, + "execution_count": 25, "id": "6d209989", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:39.708025Z", + "start_time": "2023-04-18T15:47:39.680130Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 166;\n", + " var nbb_cell_id = 25;\n", " var nbb_unformatted_code = \"def to_token_str(value: str or enum.Enum):\\n string = value.name if isinstance(value, enum.Enum) else value\\n if re.fullmatch(\\\"<.*>\\\", string):\\n return string\\n else:\\n return f\\\"<{string}>\\\"\\n\\n\\nTOKEN.benetech_prompt = to_token_str(\\\"benetech_prompt\\\")\\nTOKEN.benetech_prompt_end = to_token_str(\\\"/benetech_prompt\\\")\\n\\nfor chart_type in ChartType:\\n setattr(TOKEN, chart_type.name, to_token_str(chart_type))\\n\\nfor values_type in ValuesType:\\n setattr(TOKEN, values_type.name, to_token_str(values_type))\\n\\nTOKEN.x_start = to_token_str(\\\"x_start\\\")\\nTOKEN.y_start = to_token_str(\\\"y_start\\\")\\nTOKEN.value_separator = to_token_str(\\\";\\\")\";\n", " var nbb_formatted_code = \"def to_token_str(value: str or enum.Enum):\\n string = value.name if isinstance(value, enum.Enum) else value\\n if re.fullmatch(\\\"<.*>\\\", string):\\n return string\\n else:\\n return f\\\"<{string}>\\\"\\n\\n\\nTOKEN.benetech_prompt = to_token_str(\\\"benetech_prompt\\\")\\nTOKEN.benetech_prompt_end = to_token_str(\\\"/benetech_prompt\\\")\\n\\nfor chart_type in ChartType:\\n setattr(TOKEN, chart_type.name, to_token_str(chart_type))\\n\\nfor values_type in ValuesType:\\n setattr(TOKEN, values_type.name, to_token_str(values_type))\\n\\nTOKEN.x_start = to_token_str(\\\"x_start\\\")\\nTOKEN.y_start = to_token_str(\\\"y_start\\\")\\nTOKEN.value_separator = to_token_str(\\\";\\\")\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", @@ -24329,18 +23611,23 @@ }, { "cell_type": "code", - "execution_count": 225, + "execution_count": 26, "id": "6a100c8e", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:39.743966Z", + "start_time": "2023-04-18T15:47:39.722826Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 225;\n", - " var nbb_unformatted_code = \"def compute_numeric_data_loss_due_to_string_conversion():\\n squared_error = 0\\n n_numeric_values = 0\\n for annotated_image in DATA.annotated_images:\\n annotation = annotated_image.annotation\\n for axis, data in zip(\\n [annotation.axes.x_axis, annotation.axes.y_axis],\\n [\\n [dp.x for dp in annotation.data_series],\\n [dp.y for dp in annotation.data_series],\\n ],\\n ):\\n if axis.values_type == ValuesType.numerical:\\n string = convert_axis_data_to_string(data, ValuesType.numerical)\\n reconverted_data = convert_string_to_axis_data(\\n string, ValuesType.numerical\\n )\\n squared_error += (\\n (np.array(data) - np.array(reconverted_data)) ** 2\\n ).sum()\\n n_numeric_values += len(data)\\n\\n mse = squared_error**0.5 / n_numeric_values\\n return mse\";\n", - " var nbb_formatted_code = \"def compute_numeric_data_loss_due_to_string_conversion():\\n squared_error = 0\\n n_numeric_values = 0\\n for annotated_image in DATA.annotated_images:\\n annotation = annotated_image.annotation\\n for axis, data in zip(\\n [annotation.axes.x_axis, annotation.axes.y_axis],\\n [\\n [dp.x for dp in annotation.data_series],\\n [dp.y for dp in annotation.data_series],\\n ],\\n ):\\n if axis.values_type == ValuesType.numerical:\\n string = convert_axis_data_to_string(data, ValuesType.numerical)\\n reconverted_data = convert_string_to_axis_data(\\n string, ValuesType.numerical\\n )\\n squared_error += (\\n (np.array(data) - np.array(reconverted_data)) ** 2\\n ).sum()\\n n_numeric_values += len(data)\\n\\n mse = squared_error**0.5 / n_numeric_values\\n return mse\";\n", + " var nbb_cell_id = 26;\n", + " var nbb_unformatted_code = \"CONFIG.float_scientific_notation_string_precision = 5\\n\\n\\ndef convert_number_to_scientific_string(value: int or float) -> str:\\n return f\\\"{value:.{CONFIG.float_scientific_notation_string_precision}e}\\\"\\n\\n\\ndef convert_axis_data_to_string(\\n axis_data: list[str or float], values_type: ValuesType\\n) -> str:\\n formatted_axis_data = []\\n for value in axis_data:\\n if values_type == ValuesType.numerical:\\n value = convert_number_to_scientific_string(value)\\n formatted_axis_data.append(value)\\n return TOKEN.value_separator.join(formatted_axis_data)\\n\\n\\ndef convert_string_to_axis_data(string, values_type: ValuesType):\\n data = string.split(TOKEN.value_separator)\\n if values_type == ValuesType.numerical:\\n data = [float(i) for i in data]\\n return data\\n\\n\\ndef compute_numeric_data_loss_due_to_string_conversion():\\n squared_error = 0\\n n_numeric_values = 0\\n for annotated_image in generate_annotated_images():\\n annotation = annotated_image.annotation\\n for axis, data in zip(\\n [annotation.axes.x_axis, annotation.axes.y_axis],\\n [\\n [dp.x for dp in annotation.data_series],\\n [dp.y for dp in annotation.data_series],\\n ],\\n ):\\n if axis.values_type == ValuesType.numerical:\\n string = convert_axis_data_to_string(data, ValuesType.numerical)\\n reconverted_data = convert_string_to_axis_data(\\n string, ValuesType.numerical\\n )\\n squared_error += (\\n (np.array(data) - np.array(reconverted_data)) ** 2\\n ).sum()\\n n_numeric_values += len(data)\\n\\n mse = squared_error**0.5 / n_numeric_values\\n return mse\";\n", + " var nbb_formatted_code = \"CONFIG.float_scientific_notation_string_precision = 5\\n\\n\\ndef convert_number_to_scientific_string(value: int or float) -> str:\\n return f\\\"{value:.{CONFIG.float_scientific_notation_string_precision}e}\\\"\\n\\n\\ndef convert_axis_data_to_string(\\n axis_data: list[str or float], values_type: ValuesType\\n) -> str:\\n formatted_axis_data = []\\n for value in axis_data:\\n if values_type == ValuesType.numerical:\\n value = convert_number_to_scientific_string(value)\\n formatted_axis_data.append(value)\\n return TOKEN.value_separator.join(formatted_axis_data)\\n\\n\\ndef convert_string_to_axis_data(string, values_type: ValuesType):\\n data = string.split(TOKEN.value_separator)\\n if values_type == ValuesType.numerical:\\n data = [float(i) for i in data]\\n return data\\n\\n\\ndef compute_numeric_data_loss_due_to_string_conversion():\\n squared_error = 0\\n n_numeric_values = 0\\n for annotated_image in generate_annotated_images():\\n annotation = annotated_image.annotation\\n for axis, data in zip(\\n [annotation.axes.x_axis, annotation.axes.y_axis],\\n [\\n [dp.x for dp in annotation.data_series],\\n [dp.y for dp in annotation.data_series],\\n ],\\n ):\\n if axis.values_type == ValuesType.numerical:\\n string = convert_axis_data_to_string(data, ValuesType.numerical)\\n reconverted_data = convert_string_to_axis_data(\\n string, ValuesType.numerical\\n )\\n squared_error += (\\n (np.array(data) - np.array(reconverted_data)) ** 2\\n ).sum()\\n n_numeric_values += len(data)\\n\\n mse = squared_error**0.5 / n_numeric_values\\n return mse\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -24386,10 +23673,11 @@ " data = [float(i) for i in data]\n", " return data\n", "\n", + "\n", "def compute_numeric_data_loss_due_to_string_conversion():\n", " squared_error = 0\n", " n_numeric_values = 0\n", - " for annotated_image in DATA.annotated_images:\n", + " for annotated_image in generate_annotated_images():\n", " annotation = annotated_image.annotation\n", " for axis, data in zip(\n", " [annotation.axes.x_axis, annotation.axes.y_axis],\n", @@ -24414,25 +23702,23 @@ }, { "cell_type": "code", - "execution_count": 226, + "execution_count": 27, "id": "e5ae33b0", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:39.782581Z", + "start_time": "2023-04-18T15:47:39.750579Z" + } + }, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.4810869511837585\n" - ] - }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 226;\n", - " var nbb_unformatted_code = \"print(compute_numeric_data_loss_due_to_string_conversion())\";\n", - " var nbb_formatted_code = \"print(compute_numeric_data_loss_due_to_string_conversion())\";\n", + " var nbb_cell_id = 27;\n", + " var nbb_unformatted_code = \"if DEBUG:\\n print(compute_numeric_data_loss_due_to_string_conversion())\";\n", + " var nbb_formatted_code = \"if DEBUG:\\n print(compute_numeric_data_loss_due_to_string_conversion())\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -24454,23 +23740,29 @@ } ], "source": [ - "print(compute_numeric_data_loss_due_to_string_conversion())" + "if DEBUG:\n", + " print(compute_numeric_data_loss_due_to_string_conversion())" ] }, { "cell_type": "code", - "execution_count": 219, + "execution_count": 28, "id": "46dff28d", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:39.858163Z", + "start_time": "2023-04-18T15:47:39.785386Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 219;\n", - " var nbb_unformatted_code = \"CONFIG.float_scientific_notation_string_precision = 5\\n\\n\\ndef convert_number_to_scientific_string(value: int or float) -> str:\\n return f\\\"{value:.{CONFIG.float_scientific_notation_string_precision}e}\\\"\\n\\n\\ndef convert_axis_data_to_string(\\n axis_data: list[str or float], values_type: ValuesType\\n) -> str:\\n formatted_axis_data = []\\n for value in axis_data:\\n if values_type == ValuesType.numerical:\\n value = convert_number_to_scientific_string(value)\\n formatted_axis_data.append(value)\\n return TOKEN.value_separator.join(formatted_axis_data)\\n\\n\\ndef convert_string_to_axis_data(string, values_type: ValuesType):\\n data = string.split(TOKEN.value_separator)\\n if values_type == ValuesType.numerical:\\n data = [float(i) for i in data]\\n return data\\n\\n\\n@dataclasses.dataclass\\nclass BenetechOutput:\\n chart_type: ChartType\\n x_values_type: ValuesType\\n y_values_type: ValuesType\\n x_data: list[str or float]\\n y_data: list[str or float]\\n\\n def __post_init__(self):\\n self.chart_type = ChartType(self.chart_type)\\n self.x_values_type = ValuesType(self.x_values_type)\\n self.y_values_type = ValuesType(self.y_values_type)\\n assert isinstance(self.x_data, list)\\n assert isinstance(self.y_data, list)\\n\\n def to_string(self):\\n return self.format_strings(\\n chart_type=self.chart_type,\\n x_values_type=self.x_values_type,\\n y_values_type=self.y_values_type,\\n x_data=convert_axis_data_to_string(self.x_data, self.x_values_type),\\n y_data=convert_axis_data_to_string(self.y_data, self.y_values_type),\\n )\\n\\n @staticmethod\\n def format_strings(*, chart_type, x_values_type, y_values_type, x_data, y_data):\\n chart_type = to_token_str(chart_type)\\n x_values_type = to_token_str(x_values_type)\\n y_values_type = to_token_str(y_values_type)\\n return (\\n f\\\"{TOKEN.benetech_prompt}{chart_type}\\\"\\n f\\\"{TOKEN.x_start}{x_values_type}{x_data}\\\"\\n f\\\"{TOKEN.y_start}{y_values_type}{y_data}\\\"\\n f\\\"{TOKEN.benetech_prompt_end}\\\"\\n )\\n\\n @staticmethod\\n def get_string_pattern():\\n field_names = [field.name for field in dataclasses.fields(BenetechOutput)]\\n pattern = BenetechOutput.format_strings(\\n **{field_name: f\\\"(?P<{field_name}>.*?)\\\" for field_name in field_names}\\n )\\n return pattern\\n \\n @staticmethod\\n def does_string_match_expected_pattern(string):\\n return bool(re.fullmatch(BenetechOutput.get_string_pattern(), string))\\n \\n @staticmethod\\n def from_string(string):\\n fullmatch = re.fullmatch(BenetechOutput.get_string_pattern(), string)\\n benetech_kwargs = fullmatch.groupdict()\\n benetech_kwargs[\\\"chart_type\\\"] = ChartType(benetech_kwargs[\\\"chart_type\\\"])\\n benetech_kwargs[\\\"x_values_type\\\"] = ValuesType(benetech_kwargs[\\\"x_values_type\\\"])\\n benetech_kwargs[\\\"y_values_type\\\"] = ValuesType(benetech_kwargs[\\\"y_values_type\\\"])\\n benetech_kwargs[\\\"x_data\\\"] = convert_string_to_axis_data(\\n benetech_kwargs[\\\"x_data\\\"], benetech_kwargs[\\\"x_values_type\\\"]\\n )\\n benetech_kwargs[\\\"y_data\\\"] = convert_string_to_axis_data(\\n benetech_kwargs[\\\"y_data\\\"], benetech_kwargs[\\\"y_values_type\\\"]\\n )\\n return BenetechOutput(**benetech_kwargs)\\n\\n\\ndef get_annotation_ground_truth_str(annotation: Annotation):\\n benetech_output = BenetechOutput(\\n chart_type=annotation.chart_type,\\n x_values_type=annotation.axes.x_axis.values_type,\\n x_data=[dp.x for dp in annotation.data_series],\\n y_values_type=annotation.axes.y_axis.values_type,\\n y_data=[dp.y for dp in annotation.data_series],\\n )\\n return benetech_output.to_string()\";\n", - " var nbb_formatted_code = \"CONFIG.float_scientific_notation_string_precision = 5\\n\\n\\ndef convert_number_to_scientific_string(value: int or float) -> str:\\n return f\\\"{value:.{CONFIG.float_scientific_notation_string_precision}e}\\\"\\n\\n\\ndef convert_axis_data_to_string(\\n axis_data: list[str or float], values_type: ValuesType\\n) -> str:\\n formatted_axis_data = []\\n for value in axis_data:\\n if values_type == ValuesType.numerical:\\n value = convert_number_to_scientific_string(value)\\n formatted_axis_data.append(value)\\n return TOKEN.value_separator.join(formatted_axis_data)\\n\\n\\ndef convert_string_to_axis_data(string, values_type: ValuesType):\\n data = string.split(TOKEN.value_separator)\\n if values_type == ValuesType.numerical:\\n data = [float(i) for i in data]\\n return data\\n\\n\\n@dataclasses.dataclass\\nclass BenetechOutput:\\n chart_type: ChartType\\n x_values_type: ValuesType\\n y_values_type: ValuesType\\n x_data: list[str or float]\\n y_data: list[str or float]\\n\\n def __post_init__(self):\\n self.chart_type = ChartType(self.chart_type)\\n self.x_values_type = ValuesType(self.x_values_type)\\n self.y_values_type = ValuesType(self.y_values_type)\\n assert isinstance(self.x_data, list)\\n assert isinstance(self.y_data, list)\\n\\n def to_string(self):\\n return self.format_strings(\\n chart_type=self.chart_type,\\n x_values_type=self.x_values_type,\\n y_values_type=self.y_values_type,\\n x_data=convert_axis_data_to_string(self.x_data, self.x_values_type),\\n y_data=convert_axis_data_to_string(self.y_data, self.y_values_type),\\n )\\n\\n @staticmethod\\n def format_strings(*, chart_type, x_values_type, y_values_type, x_data, y_data):\\n chart_type = to_token_str(chart_type)\\n x_values_type = to_token_str(x_values_type)\\n y_values_type = to_token_str(y_values_type)\\n return (\\n f\\\"{TOKEN.benetech_prompt}{chart_type}\\\"\\n f\\\"{TOKEN.x_start}{x_values_type}{x_data}\\\"\\n f\\\"{TOKEN.y_start}{y_values_type}{y_data}\\\"\\n f\\\"{TOKEN.benetech_prompt_end}\\\"\\n )\\n\\n @staticmethod\\n def get_string_pattern():\\n field_names = [field.name for field in dataclasses.fields(BenetechOutput)]\\n pattern = BenetechOutput.format_strings(\\n **{field_name: f\\\"(?P<{field_name}>.*?)\\\" for field_name in field_names}\\n )\\n return pattern\\n\\n @staticmethod\\n def does_string_match_expected_pattern(string):\\n return bool(re.fullmatch(BenetechOutput.get_string_pattern(), string))\\n\\n @staticmethod\\n def from_string(string):\\n fullmatch = re.fullmatch(BenetechOutput.get_string_pattern(), string)\\n benetech_kwargs = fullmatch.groupdict()\\n benetech_kwargs[\\\"chart_type\\\"] = ChartType(benetech_kwargs[\\\"chart_type\\\"])\\n benetech_kwargs[\\\"x_values_type\\\"] = ValuesType(benetech_kwargs[\\\"x_values_type\\\"])\\n benetech_kwargs[\\\"y_values_type\\\"] = ValuesType(benetech_kwargs[\\\"y_values_type\\\"])\\n benetech_kwargs[\\\"x_data\\\"] = convert_string_to_axis_data(\\n benetech_kwargs[\\\"x_data\\\"], benetech_kwargs[\\\"x_values_type\\\"]\\n )\\n benetech_kwargs[\\\"y_data\\\"] = convert_string_to_axis_data(\\n benetech_kwargs[\\\"y_data\\\"], benetech_kwargs[\\\"y_values_type\\\"]\\n )\\n return BenetechOutput(**benetech_kwargs)\\n\\n\\ndef get_annotation_ground_truth_str(annotation: Annotation):\\n benetech_output = BenetechOutput(\\n chart_type=annotation.chart_type,\\n x_values_type=annotation.axes.x_axis.values_type,\\n x_data=[dp.x for dp in annotation.data_series],\\n y_values_type=annotation.axes.y_axis.values_type,\\n y_data=[dp.y for dp in annotation.data_series],\\n )\\n return benetech_output.to_string()\";\n", + " var nbb_cell_id = 28;\n", + " var nbb_unformatted_code = \"@dataclasses.dataclass\\nclass BenetechOutput:\\n chart_type: ChartType\\n x_values_type: ValuesType\\n y_values_type: ValuesType\\n x_data: list[str or float]\\n y_data: list[str or float]\\n\\n def __post_init__(self):\\n self.chart_type = ChartType(self.chart_type)\\n self.x_values_type = ValuesType(self.x_values_type)\\n self.y_values_type = ValuesType(self.y_values_type)\\n assert isinstance(self.x_data, list)\\n assert isinstance(self.y_data, list)\\n\\n def get_main_characteristics(self):\\n return (\\n self.chart_type,\\n self.x_values_type,\\n self.y_values_type,\\n len(self.x_data),\\n len(self.y_data),\\n )\\n\\n @staticmethod\\n def from_annotation(annotation: Annotation):\\n return BenetechOutput(\\n chart_type=annotation.chart_type,\\n x_values_type=annotation.axes.x_axis.values_type,\\n y_values_type=annotation.axes.y_axis.values_type,\\n x_data=[dp.x for dp in annotation.data_series],\\n y_data=[dp.y for dp in annotation.data_series],\\n )\\n\\n def to_string(self):\\n return self.format_strings(\\n chart_type=self.chart_type,\\n x_values_type=self.x_values_type,\\n y_values_type=self.y_values_type,\\n x_data=convert_axis_data_to_string(self.x_data, self.x_values_type),\\n y_data=convert_axis_data_to_string(self.y_data, self.y_values_type),\\n )\\n\\n @staticmethod\\n def format_strings(*, chart_type, x_values_type, y_values_type, x_data, y_data):\\n chart_type = to_token_str(chart_type)\\n x_values_type = to_token_str(x_values_type)\\n y_values_type = to_token_str(y_values_type)\\n return (\\n f\\\"{TOKEN.benetech_prompt}{chart_type}\\\"\\n f\\\"{TOKEN.x_start}{x_values_type}{x_data}\\\"\\n f\\\"{TOKEN.y_start}{y_values_type}{y_data}\\\"\\n f\\\"{TOKEN.benetech_prompt_end}\\\"\\n )\\n\\n @staticmethod\\n def get_string_pattern():\\n field_names = [field.name for field in dataclasses.fields(BenetechOutput)]\\n pattern = BenetechOutput.format_strings(\\n **{field_name: f\\\"(?P<{field_name}>.*?)\\\" for field_name in field_names}\\n )\\n return pattern\\n\\n @staticmethod\\n def does_string_match_expected_pattern(string):\\n return bool(re.fullmatch(BenetechOutput.get_string_pattern(), string))\\n\\n @staticmethod\\n def from_string(string):\\n fullmatch = re.fullmatch(BenetechOutput.get_string_pattern(), string)\\n benetech_kwargs = fullmatch.groupdict()\\n benetech_kwargs[\\\"chart_type\\\"] = ChartType(benetech_kwargs[\\\"chart_type\\\"])\\n benetech_kwargs[\\\"x_values_type\\\"] = ValuesType(benetech_kwargs[\\\"x_values_type\\\"])\\n benetech_kwargs[\\\"y_values_type\\\"] = ValuesType(benetech_kwargs[\\\"y_values_type\\\"])\\n benetech_kwargs[\\\"x_data\\\"] = convert_string_to_axis_data(\\n benetech_kwargs[\\\"x_data\\\"], benetech_kwargs[\\\"x_values_type\\\"]\\n )\\n benetech_kwargs[\\\"y_data\\\"] = convert_string_to_axis_data(\\n benetech_kwargs[\\\"y_data\\\"], benetech_kwargs[\\\"y_values_type\\\"]\\n )\\n return BenetechOutput(**benetech_kwargs)\\n\\n\\ndef get_annotation_ground_truth_str(annotation: Annotation):\\n benetech_output = BenetechOutput(\\n chart_type=annotation.chart_type,\\n x_values_type=annotation.axes.x_axis.values_type,\\n x_data=[dp.x for dp in annotation.data_series],\\n y_values_type=annotation.axes.y_axis.values_type,\\n y_data=[dp.y for dp in annotation.data_series],\\n )\\n return benetech_output.to_string()\\n\\n\\ndef get_annotation_ground_truth_str_from_image_index(image_index: int) -> str:\\n return get_annotation_ground_truth_str(Annotation.from_image_index(0))\";\n", + " var nbb_formatted_code = \"@dataclasses.dataclass\\nclass BenetechOutput:\\n chart_type: ChartType\\n x_values_type: ValuesType\\n y_values_type: ValuesType\\n x_data: list[str or float]\\n y_data: list[str or float]\\n\\n def __post_init__(self):\\n self.chart_type = ChartType(self.chart_type)\\n self.x_values_type = ValuesType(self.x_values_type)\\n self.y_values_type = ValuesType(self.y_values_type)\\n assert isinstance(self.x_data, list)\\n assert isinstance(self.y_data, list)\\n\\n def get_main_characteristics(self):\\n return (\\n self.chart_type,\\n self.x_values_type,\\n self.y_values_type,\\n len(self.x_data),\\n len(self.y_data),\\n )\\n\\n @staticmethod\\n def from_annotation(annotation: Annotation):\\n return BenetechOutput(\\n chart_type=annotation.chart_type,\\n x_values_type=annotation.axes.x_axis.values_type,\\n y_values_type=annotation.axes.y_axis.values_type,\\n x_data=[dp.x for dp in annotation.data_series],\\n y_data=[dp.y for dp in annotation.data_series],\\n )\\n\\n def to_string(self):\\n return self.format_strings(\\n chart_type=self.chart_type,\\n x_values_type=self.x_values_type,\\n y_values_type=self.y_values_type,\\n x_data=convert_axis_data_to_string(self.x_data, self.x_values_type),\\n y_data=convert_axis_data_to_string(self.y_data, self.y_values_type),\\n )\\n\\n @staticmethod\\n def format_strings(*, chart_type, x_values_type, y_values_type, x_data, y_data):\\n chart_type = to_token_str(chart_type)\\n x_values_type = to_token_str(x_values_type)\\n y_values_type = to_token_str(y_values_type)\\n return (\\n f\\\"{TOKEN.benetech_prompt}{chart_type}\\\"\\n f\\\"{TOKEN.x_start}{x_values_type}{x_data}\\\"\\n f\\\"{TOKEN.y_start}{y_values_type}{y_data}\\\"\\n f\\\"{TOKEN.benetech_prompt_end}\\\"\\n )\\n\\n @staticmethod\\n def get_string_pattern():\\n field_names = [field.name for field in dataclasses.fields(BenetechOutput)]\\n pattern = BenetechOutput.format_strings(\\n **{field_name: f\\\"(?P<{field_name}>.*?)\\\" for field_name in field_names}\\n )\\n return pattern\\n\\n @staticmethod\\n def does_string_match_expected_pattern(string):\\n return bool(re.fullmatch(BenetechOutput.get_string_pattern(), string))\\n\\n @staticmethod\\n def from_string(string):\\n fullmatch = re.fullmatch(BenetechOutput.get_string_pattern(), string)\\n benetech_kwargs = fullmatch.groupdict()\\n benetech_kwargs[\\\"chart_type\\\"] = ChartType(benetech_kwargs[\\\"chart_type\\\"])\\n benetech_kwargs[\\\"x_values_type\\\"] = ValuesType(benetech_kwargs[\\\"x_values_type\\\"])\\n benetech_kwargs[\\\"y_values_type\\\"] = ValuesType(benetech_kwargs[\\\"y_values_type\\\"])\\n benetech_kwargs[\\\"x_data\\\"] = convert_string_to_axis_data(\\n benetech_kwargs[\\\"x_data\\\"], benetech_kwargs[\\\"x_values_type\\\"]\\n )\\n benetech_kwargs[\\\"y_data\\\"] = convert_string_to_axis_data(\\n benetech_kwargs[\\\"y_data\\\"], benetech_kwargs[\\\"y_values_type\\\"]\\n )\\n return BenetechOutput(**benetech_kwargs)\\n\\n\\ndef get_annotation_ground_truth_str(annotation: Annotation):\\n benetech_output = BenetechOutput(\\n chart_type=annotation.chart_type,\\n x_values_type=annotation.axes.x_axis.values_type,\\n x_data=[dp.x for dp in annotation.data_series],\\n y_values_type=annotation.axes.y_axis.values_type,\\n y_data=[dp.y for dp in annotation.data_series],\\n )\\n return benetech_output.to_string()\\n\\n\\ndef get_annotation_ground_truth_str_from_image_index(image_index: int) -> str:\\n return get_annotation_ground_truth_str(Annotation.from_image_index(0))\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -24507,6 +23799,25 @@ " assert isinstance(self.x_data, list)\n", " assert isinstance(self.y_data, list)\n", "\n", + " def get_main_characteristics(self):\n", + " return (\n", + " self.chart_type,\n", + " self.x_values_type,\n", + " self.y_values_type,\n", + " len(self.x_data),\n", + " len(self.y_data),\n", + " )\n", + "\n", + " @staticmethod\n", + " def from_annotation(annotation: Annotation):\n", + " return BenetechOutput(\n", + " chart_type=annotation.chart_type,\n", + " x_values_type=annotation.axes.x_axis.values_type,\n", + " y_values_type=annotation.axes.y_axis.values_type,\n", + " x_data=[dp.x for dp in annotation.data_series],\n", + " y_data=[dp.y for dp in annotation.data_series],\n", + " )\n", + "\n", " def to_string(self):\n", " return self.format_strings(\n", " chart_type=self.chart_type,\n", @@ -24564,38 +23875,32 @@ " y_values_type=annotation.axes.y_axis.values_type,\n", " y_data=[dp.y for dp in annotation.data_series],\n", " )\n", - " return benetech_output.to_string()" + " return benetech_output.to_string()\n", + "\n", + "\n", + "def get_annotation_ground_truth_str_from_image_index(image_index: int) -> str:\n", + " return get_annotation_ground_truth_str(Annotation.from_image_index(image_index))" ] }, { "cell_type": "code", - "execution_count": 244, + "execution_count": 29, "id": "8342617b", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:39.881898Z", + "start_time": "2023-04-18T15:47:39.861073Z" + } + }, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "<(?P.*?)><(?P.*?)>(?P.*?)<(?P.*?)>(?P.*?) \n", - "\n", - "1-10<;>11-20<;>21-30<;>31-40<;>41-50<;>51-521.00000e+00<;>3.00000e+00<;>7.00000e+00<;>2.00000e+00<;>8.00000e+00<;>4.00000e+00 \n", - "\n", - "BenetechOutput(chart_type=,\n", - " x_values_type=,\n", - " y_values_type=,\n", - " x_data=['1-10', '11-20', '21-30', '31-40', '41-50', '51-52'],\n", - " y_data=[1.0, 3.0, 7.0, 2.0, 8.0, 4.0])\n" - ] - }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 244;\n", - " var nbb_unformatted_code = \"if DEBUG:\\n print(BenetechOutput.get_string_pattern(), \\\"\\\\n\\\")\\n print(get_annotation_ground_truth_str(DATA.annotated_images[0].annotation), \\\"\\\\n\\\")\\n pprint.pprint(\\n BenetechOutput.from_string(\\n get_annotation_ground_truth_str(DATA.annotated_images[0].annotation)\\n )\\n )\";\n", - " var nbb_formatted_code = \"if DEBUG:\\n print(BenetechOutput.get_string_pattern(), \\\"\\\\n\\\")\\n print(get_annotation_ground_truth_str(DATA.annotated_images[0].annotation), \\\"\\\\n\\\")\\n pprint.pprint(\\n BenetechOutput.from_string(\\n get_annotation_ground_truth_str(DATA.annotated_images[0].annotation)\\n )\\n )\";\n", + " var nbb_cell_id = 29;\n", + " var nbb_unformatted_code = \"if DEBUG:\\n print(BenetechOutput.get_string_pattern(), \\\"\\\\n\\\")\\n print(\\n get_annotation_ground_truth_str(AnnotatedImage.from_image_index(0).annotation),\\n \\\"\\\\n\\\",\\n )\\n pprint.pprint(\\n BenetechOutput.from_string(get_annotation_ground_truth_str_from_image_index(0))\\n )\\n pprint.pprint(BenetechOutput.from_annotation(Annotation.from_image_index(0)))\";\n", + " var nbb_formatted_code = \"if DEBUG:\\n print(BenetechOutput.get_string_pattern(), \\\"\\\\n\\\")\\n print(\\n get_annotation_ground_truth_str(AnnotatedImage.from_image_index(0).annotation),\\n \\\"\\\\n\\\",\\n )\\n pprint.pprint(\\n BenetechOutput.from_string(get_annotation_ground_truth_str_from_image_index(0))\\n )\\n pprint.pprint(BenetechOutput.from_annotation(Annotation.from_image_index(0)))\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -24619,12 +23924,111 @@ "source": [ "if DEBUG:\n", " print(BenetechOutput.get_string_pattern(), \"\\n\")\n", - " print(get_annotation_ground_truth_str(DATA.annotated_images[0].annotation), \"\\n\")\n", + " print(\n", + " get_annotation_ground_truth_str(AnnotatedImage.from_image_index(0).annotation),\n", + " \"\\n\",\n", + " )\n", " pprint.pprint(\n", - " BenetechOutput.from_string(\n", - " get_annotation_ground_truth_str(DATA.annotated_images[0].annotation)\n", - " )\n", - " )" + " BenetechOutput.from_string(get_annotation_ground_truth_str_from_image_index(0))\n", + " )\n", + " pprint.pprint(BenetechOutput.from_annotation(Annotation.from_image_index(0)))" + ] + }, + { + "cell_type": "markdown", + "id": "3368ace9", + "metadata": {}, + "source": [ + "### Metrics " + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "3901ad2f", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:39.926904Z", + "start_time": "2023-04-18T15:47:39.883983Z" + } + }, + "outputs": [ + { + "data": { + "application/javascript": [ + "\n", + " setTimeout(function() {\n", + " var nbb_cell_id = 30;\n", + " var nbb_unformatted_code = \"def normalized_rmse(expected: list[float], predicted: list[float]) -> float:\\n return (1 - sklearn.metrics.r2_score(expected, predicted)) ** 0.5\\n\\n\\ndef normalized_levenshtein_distance(expected: list[str], predicted: list[str]) -> float:\\n total_distance = 0\\n for e, p in zip(expected, predicted):\\n total_distance += rapidfuzz.distance.Levenshtein.distance(e, p)\\n total_length = np.sum([len(e) for e in expected])\\n return total_distance / total_length\\n\\n\\ndef sigmoid(x):\\n return 1 / (1 + np.exp(-x))\\n\\n\\ndef positive_loss_to_score(x):\\n return 2 * sigmoid(-x)\\n\\n\\ndef score_axis_values(values_type, expected, predicted):\\n if values_type == ValuesType.numerical:\\n loss = normalized_rmse(expected, predicted)\\n else:\\n loss = normalized_levenshtein_distance(expected, predicted)\\n return positive_loss_to_score(loss)\\n\\n\\ndef benetech_score(expected: BenetechOutput, predicted: BenetechOutput) -> float:\\n if expected.get_main_characteristics() != predicted.get_main_characteristics():\\n return 0\\n x_score = score_axis_values(\\n expected.x_values_type, expected.x_data, predicted.x_data\\n )\\n y_score = score_axis_values(\\n expected.y_values_type, expected.y_data, predicted.y_data\\n )\\n return (x_score + y_score) / 2\\n\\n\\ndef benetech_score_string_prediction(expected_data_index: int, predicted_string: str):\\n if not BenetechOutput.does_string_match_expected_pattern(predicted_string):\\n return 0\\n expected_annotation = Annotation.from_image_index(expected_data_index)\\n expected_output = BenetechOutput.from_annotation(expected_annotation)\\n predicted_output = BenetechOutput.from_string(predicted_string)\\n return benetech_score(expected_output, predicted_output)\";\n", + " var nbb_formatted_code = \"def normalized_rmse(expected: list[float], predicted: list[float]) -> float:\\n return (1 - sklearn.metrics.r2_score(expected, predicted)) ** 0.5\\n\\n\\ndef normalized_levenshtein_distance(expected: list[str], predicted: list[str]) -> float:\\n total_distance = 0\\n for e, p in zip(expected, predicted):\\n total_distance += rapidfuzz.distance.Levenshtein.distance(e, p)\\n total_length = np.sum([len(e) for e in expected])\\n return total_distance / total_length\\n\\n\\ndef sigmoid(x):\\n return 1 / (1 + np.exp(-x))\\n\\n\\ndef positive_loss_to_score(x):\\n return 2 * sigmoid(-x)\\n\\n\\ndef score_axis_values(values_type, expected, predicted):\\n if values_type == ValuesType.numerical:\\n loss = normalized_rmse(expected, predicted)\\n else:\\n loss = normalized_levenshtein_distance(expected, predicted)\\n return positive_loss_to_score(loss)\\n\\n\\ndef benetech_score(expected: BenetechOutput, predicted: BenetechOutput) -> float:\\n if expected.get_main_characteristics() != predicted.get_main_characteristics():\\n return 0\\n x_score = score_axis_values(\\n expected.x_values_type, expected.x_data, predicted.x_data\\n )\\n y_score = score_axis_values(\\n expected.y_values_type, expected.y_data, predicted.y_data\\n )\\n return (x_score + y_score) / 2\\n\\n\\ndef benetech_score_string_prediction(expected_data_index: int, predicted_string: str):\\n if not BenetechOutput.does_string_match_expected_pattern(predicted_string):\\n return 0\\n expected_annotation = Annotation.from_image_index(expected_data_index)\\n expected_output = BenetechOutput.from_annotation(expected_annotation)\\n predicted_output = BenetechOutput.from_string(predicted_string)\\n return benetech_score(expected_output, predicted_output)\";\n", + " var nbb_cells = Jupyter.notebook.get_cells();\n", + " for (var i = 0; i < nbb_cells.length; ++i) {\n", + " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", + " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", + " nbb_cells[i].set_text(nbb_formatted_code);\n", + " }\n", + " break;\n", + " }\n", + " }\n", + " }, 500);\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def normalized_rmse(expected: list[float], predicted: list[float]) -> float:\n", + " return (1 - sklearn.metrics.r2_score(expected, predicted)) ** 0.5\n", + "\n", + "\n", + "def normalized_levenshtein_distance(expected: list[str], predicted: list[str]) -> float:\n", + " total_distance = 0\n", + " for e, p in zip(expected, predicted):\n", + " total_distance += rapidfuzz.distance.Levenshtein.distance(e, p)\n", + " total_length = np.sum([len(e) for e in expected])\n", + " return total_distance / total_length\n", + "\n", + "\n", + "def sigmoid(x):\n", + " return 1 / (1 + np.exp(-x))\n", + "\n", + "\n", + "def positive_loss_to_score(x):\n", + " return 2 * sigmoid(-x)\n", + "\n", + "\n", + "def score_axis_values(values_type, expected, predicted):\n", + " if values_type == ValuesType.numerical:\n", + " loss = normalized_rmse(expected, predicted)\n", + " else:\n", + " loss = normalized_levenshtein_distance(expected, predicted)\n", + " return positive_loss_to_score(loss)\n", + "\n", + "\n", + "def benetech_score(expected: BenetechOutput, predicted: BenetechOutput) -> float:\n", + " if expected.get_main_characteristics() != predicted.get_main_characteristics():\n", + " return 0\n", + " x_score = score_axis_values(\n", + " expected.x_values_type, expected.x_data, predicted.x_data\n", + " )\n", + " y_score = score_axis_values(\n", + " expected.y_values_type, expected.y_data, predicted.y_data\n", + " )\n", + " return (x_score + y_score) / 2\n", + "\n", + "\n", + "def benetech_score_string_prediction(expected_data_index: int, predicted_string: str):\n", + " if not BenetechOutput.does_string_match_expected_pattern(predicted_string):\n", + " return 0\n", + " expected_annotation = Annotation.from_image_index(expected_data_index)\n", + " expected_output = BenetechOutput.from_annotation(expected_annotation)\n", + " predicted_output = BenetechOutput.from_string(predicted_string)\n", + " return benetech_score(expected_output, predicted_output)" ] }, { @@ -24637,18 +24041,37 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, + "id": "2f874683", + "metadata": { + "ExecuteTime": { + "start_time": "2023-04-19T11:32:23.159Z" + } + }, + "outputs": [], + "source": [ + "1" + ] + }, + { + "cell_type": "code", + "execution_count": 31, "id": "e532ac55", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:39.990566Z", + "start_time": "2023-04-18T15:47:39.933447Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 32;\n", - " var nbb_unformatted_code = \"@dataclasses.dataclass\\nclass DataItem:\\n image: torch.FloatTensor\\n target_string: str\\n data_index: int\\n\\n def __post_init__(self):\\n if DEBUG:\\n shape = einops.parse_shape(self.image, \\\"channel height width\\\")\\n assert shape[\\\"channel\\\"] == 3, \\\"Image is expected to have 3 channels.\\\"\\n\\n\\nclass Dataset(torch.utils.data.Dataset):\\n def __init__(self, split: Literal[\\\"train\\\", \\\"val\\\", \\\"complete\\\"]):\\n super().__init__()\\n match split:\\n case \\\"train\\\":\\n self.indices = DATA.train_indices\\n case \\\"val\\\":\\n self.indices = DATA.val_indices\\n case \\\"complete\\\":\\n self.indices = np.arange(len(DATA.annotated_images))\\n case _:\\n raise ValueError(f\\\"Unknown split {split}.\\\")\\n self.to_tensor = torchvision.transforms.ToTensor()\\n\\n def __len__(self):\\n return len(self.indices)\\n\\n def __getitem__(self, idx: int) -> DataItem:\\n data_index = self.indices[idx]\\n annotated_image = DATA.annotated_images[data_index]\\n\\n image = annotated_image.image\\n image = self.to_tensor(image)\\n\\n target_string = get_annotation_ground_truth_str(annotated_image.annotation)\\n\\n return DataItem(image=image, target_string=target_string, data_index=data_index)\";\n", - " var nbb_formatted_code = \"@dataclasses.dataclass\\nclass DataItem:\\n image: torch.FloatTensor\\n target_string: str\\n data_index: int\\n\\n def __post_init__(self):\\n if DEBUG:\\n shape = einops.parse_shape(self.image, \\\"channel height width\\\")\\n assert shape[\\\"channel\\\"] == 3, \\\"Image is expected to have 3 channels.\\\"\\n\\n\\nclass Dataset(torch.utils.data.Dataset):\\n def __init__(self, split: Literal[\\\"train\\\", \\\"val\\\", \\\"complete\\\"]):\\n super().__init__()\\n match split:\\n case \\\"train\\\":\\n self.indices = DATA.train_indices\\n case \\\"val\\\":\\n self.indices = DATA.val_indices\\n case \\\"complete\\\":\\n self.indices = np.arange(len(DATA.annotated_images))\\n case _:\\n raise ValueError(f\\\"Unknown split {split}.\\\")\\n self.to_tensor = torchvision.transforms.ToTensor()\\n\\n def __len__(self):\\n return len(self.indices)\\n\\n def __getitem__(self, idx: int) -> DataItem:\\n data_index = self.indices[idx]\\n annotated_image = DATA.annotated_images[data_index]\\n\\n image = annotated_image.image\\n image = self.to_tensor(image)\\n\\n target_string = get_annotation_ground_truth_str(annotated_image.annotation)\\n\\n return DataItem(image=image, target_string=target_string, data_index=data_index)\";\n", + " var nbb_cell_id = 31;\n", + " var nbb_unformatted_code = \"@dataclasses.dataclass\\nclass DataItem:\\n image: torch.FloatTensor\\n target_string: str\\n data_index: int\\n\\n def __post_init__(self):\\n shape = einops.parse_shape(self.image, \\\"channel height width\\\")\\n assert shape[\\\"channel\\\"] == 3, \\\"Image is expected to have 3 channels.\\\"\\n\\n\\nclass Dataset(torch.utils.data.Dataset):\\n def __init__(self, split: Literal[\\\"train\\\", \\\"val\\\", \\\"complete\\\"]):\\n super().__init__()\\n match split:\\n case \\\"train\\\":\\n self.indices = DATA.train_indices\\n case \\\"val\\\":\\n self.indices = DATA.val_indices\\n case \\\"complete\\\":\\n self.indices = np.arange(len(load_train_image_ids()))\\n case _:\\n raise ValueError(f\\\"Unknown split {split}.\\\")\\n self.to_tensor = torchvision.transforms.ToTensor()\\n\\n def __len__(self):\\n return len(self.indices)\\n\\n def __getitem__(self, idx: int) -> DataItem:\\n data_index = self.indices[idx]\\n\\n annotated_image = AnnotatedImage.from_image_index(data_index)\\n\\n image = annotated_image.image\\n image = self.to_tensor(image)\\n\\n target_string = get_annotation_ground_truth_str(annotated_image.annotation)\\n\\n return DataItem(image=image, target_string=target_string, data_index=data_index)\";\n", + " var nbb_formatted_code = \"@dataclasses.dataclass\\nclass DataItem:\\n image: torch.FloatTensor\\n target_string: str\\n data_index: int\\n\\n def __post_init__(self):\\n shape = einops.parse_shape(self.image, \\\"channel height width\\\")\\n assert shape[\\\"channel\\\"] == 3, \\\"Image is expected to have 3 channels.\\\"\\n\\n\\nclass Dataset(torch.utils.data.Dataset):\\n def __init__(self, split: Literal[\\\"train\\\", \\\"val\\\", \\\"complete\\\"]):\\n super().__init__()\\n match split:\\n case \\\"train\\\":\\n self.indices = DATA.train_indices\\n case \\\"val\\\":\\n self.indices = DATA.val_indices\\n case \\\"complete\\\":\\n self.indices = np.arange(len(load_train_image_ids()))\\n case _:\\n raise ValueError(f\\\"Unknown split {split}.\\\")\\n self.to_tensor = torchvision.transforms.ToTensor()\\n\\n def __len__(self):\\n return len(self.indices)\\n\\n def __getitem__(self, idx: int) -> DataItem:\\n data_index = self.indices[idx]\\n\\n annotated_image = AnnotatedImage.from_image_index(data_index)\\n\\n image = annotated_image.image\\n image = self.to_tensor(image)\\n\\n target_string = get_annotation_ground_truth_str(annotated_image.annotation)\\n\\n return DataItem(image=image, target_string=target_string, data_index=data_index)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -24677,9 +24100,8 @@ " data_index: int\n", "\n", " def __post_init__(self):\n", - " if DEBUG:\n", - " shape = einops.parse_shape(self.image, \"channel height width\")\n", - " assert shape[\"channel\"] == 3, \"Image is expected to have 3 channels.\"\n", + " shape = einops.parse_shape(self.image, \"channel height width\")\n", + " assert shape[\"channel\"] == 3, \"Image is expected to have 3 channels.\"\n", "\n", "\n", "class Dataset(torch.utils.data.Dataset):\n", @@ -24691,7 +24113,7 @@ " case \"val\":\n", " self.indices = DATA.val_indices\n", " case \"complete\":\n", - " self.indices = np.arange(len(DATA.annotated_images))\n", + " self.indices = np.arange(len(load_train_image_ids()))\n", " case _:\n", " raise ValueError(f\"Unknown split {split}.\")\n", " self.to_tensor = torchvision.transforms.ToTensor()\n", @@ -24701,7 +24123,8 @@ "\n", " def __getitem__(self, idx: int) -> DataItem:\n", " data_index = self.indices[idx]\n", - " annotated_image = DATA.annotated_images[data_index]\n", + "\n", + " annotated_image = AnnotatedImage.from_image_index(data_index)\n", "\n", " image = annotated_image.image\n", " image = self.to_tensor(image)\n", @@ -24713,16 +24136,21 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 32, "id": "0ccf561f", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:40.023555Z", + "start_time": "2023-04-18T15:47:39.992916Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 33;\n", + " var nbb_cell_id = 32;\n", " var nbb_unformatted_code = \"DATA.train_dataset = Dataset(\\\"train\\\")\\nDATA.val_dataset = Dataset(\\\"val\\\")\\nDATA.complete_dataset = Dataset(\\\"complete\\\")\";\n", " var nbb_formatted_code = \"DATA.train_dataset = Dataset(\\\"train\\\")\\nDATA.val_dataset = Dataset(\\\"val\\\")\\nDATA.complete_dataset = Dataset(\\\"complete\\\")\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", @@ -24753,33 +24181,38 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 33, "id": "773d4fcc", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:40.136084Z", + "start_time": "2023-04-18T15:47:40.031292Z" + } + }, "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/torchvision/transforms/functional.py:152: UserWarning: The given NumPy array is not writable, and PyTorch does not support non-writable tensors. This means writing to this tensor will result in undefined behavior. You may want to copy the array to protect its data or make it writable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at ../torch/csrc/utils/tensor_numpy.cpp:206.)\n", - " img = torch.from_numpy(pic.transpose((2, 0, 1))).contiguous()\n" + "16<;>17<;>18<;>19<;>20<;>21<;>22<;>23<;>24<;>25<;>26<;>27<;>28<;>29<;>303.79953e+02<;>4.12642e+02<;>3.82075e+02<;>3.69340e+02<;>2.86557e+02<;>2.65330e+02<;>2.35613e+02<;>2.56840e+02<;>1.99528e+02<;>1.95283e+02<;>2.12264e+02<;>1.88915e+02<;>1.91038e+02<;>1.94434e+02<;>2.18632e+02\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Asia, Central<;>Australia<;>Australia & New Zealand<;>Austria<;>Azerbaijan<;>Bahamas<;>Bahrain<;>Bangladesh<;>Barbados<;>Belarus5.90418e+06<;>2.21288e+06<;>4.33664e+06<;>8.17963e+06<;>8.58416e+06<;>6.35927e+06<;>7.87624e+06<;>8.93812e+06<;>5.29739e+06<;>8.48303e+06\n" + "/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/torchvision/transforms/functional.py:152: UserWarning: The given NumPy array is not writable, and PyTorch does not support non-writable tensors. This means writing to this tensor will result in undefined behavior. You may want to copy the array to protect its data or make it writable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at ../torch/csrc/utils/tensor_numpy.cpp:206.)\n", + " img = torch.from_numpy(pic.transpose((2, 0, 1))).contiguous()\n" ] }, { "data": { - "image/png": "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kD6f7/jx4+fPn5dIJFKpVK1W5+fnV1RUtLW1ffDBB7W1tcuWLWNZtqWl5eGHH54xYwbDMCdOnKitrYVsUV9fv379+sHBwebm5hdeeKG8vHz58uVisfjTTz+dM2dOWVnZ+++/X1VVtXr16r6+voULF950001fBoPDpS0+1xFRjxZslHq9HhulrKxs8+bNW7ZsKSwsdLlcra2ter3+oYceWrhwoVwuT01N3bx583333adWq7Oysr7zne/cfPPNKSkp06ZNY1l248aNmZmZK1euXLNmjd/vt9lsALKYTKbc3Nzs7GysXCAQaGtr+/TTTyHXEEK8Xu+//uu/LlmyJBwOr1mz5qGHHsrPz8/Pz58xY4bL5br//vsff/zxm2++Gf6NCxcuLF68eMOGDfn5+dQngHZgDz116tSJEyekUmkoFKqtrXU4HE8//bRCoQgEAk6n87333quuru7s7IRXauvWrY8++mhZWdmuXbvg8oIxEXZnnU4HbY4QMmvWrIcffjgjI2P//v1isXj//v25ubl33HHHkSNH3G53UlLSo48+unLlyjNnzoTD4cbGRoVC8d3vfnfPnj0Wi4VOO66HSCRiMBiWL1/+5JNPpqWlpaenP/7448uXLzcYDO+9915VVdWjjz766KOPlpSUvPTSS729vYSQhQsXPvXUUxUVFSKR6LHHHnv44YfhjyKENDY2btu27dy5c5Cq0tLSioqKDAZDYWFhXl4eIQSYIZzbJUuWBIPB22+/feHChadPn7ZarUNDQ88999yqVasee+yxLVu2nD59+pNPPrHZbNOmTVu0aJFUKv3Wt75lMBgOHTqk1+uXL19uNBrnz58/a9asG2+8sby8fNGiRQsWLEhLSxOJRGvWrBGJRGKxmFqNRkdHT548+d5773k8nmAwqFKp5s2bd/vtt8+YMUMikaxYseLuu+++6aabKioqGIYBH/R4PC+99NL8+fO/+c1vrl27tqam5uDBg+np6Rs2bFi8ePE777zT399fVFR04403VlRUEELC4XB6ejrE7ccee6ygoODYsWN+v3/WrFm33357bm4u1KbMzMzFixfPmDFDo9HwPH/bbbcpFIq5c+fee++9kUjk5MmThJAlS5YYDIbS0tJvf/vbixYtOnjwYFdXF5j++fPn77rrrrvuuqu0tPT111/v7+/nOA5K25kzZ95///26ujqYU/Lz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c3NdLteuXbsgtMJm/S//8i8HDx584YUXzpw5YzQaDx065HK5Vq9e7fF4/H7/W2+9dd99923btm3NmjVyuTw/P//dd9/dtm1bbm6uRqMBBkij0ZSVlW3atKmkpAQqvNvtrqura2tr+9GPfvTqq68qlcrKysq33377xRdfLC8vT0lJ6ejoOHHixEcfffTTn/40GAyuXLmys7Pz+9//PqzbHo/nzJkzJ06cgFiNncrzfG1tbV9fX29vb0NDQygUkkqlq1evTk5O3rp16759+1paWu64445Zs2YB3tfZ2QlRrrm52e12Dw4Onjt3rrOzc9asWTk5OQUFBQMDAx999FF/f//58+c1Gk1/f//BgwfffvvtY8eODQ8PI1Svra1taGiovr4erE2j0Sxbtmz58uU1NTXbt28/cOBARUXFwoULcenW19f39vbW1dXhRhSLxUqlctq0afv27du/f//Jkydx6brd7p6enkAgcOLEiW3btr311ls1NTU2m+3o0aNpaWmrV69etGgRy7InTpyor69HSGtDQ4PP5+vo6LBYLF6vt62tzeFwtLW1OZ3OGTNm3HnnnTU1Nbt37/7ss8/Ky8srKipGRkbOnDlz8OBBh8OxZMmSO++8E2ZHgLHAiPv6+t5///3a2tpZs2bNmTMHQjT2KjQtl8tFCEEA28mTJ3meb29vh7Q7bdo0k8l0/vz53t7e4eHh0tLSe+655/Tp0y+88ILf71+1apVCofj4448PHTrU19f3wAMPpKenB4PBjz/+2OPxLF68OC8vLy8vr7u7+/33329raztw4IDBYKiqqtq/f79Go7n55pthXJZIJNXV1UeOHKmoqMjOzjaZTIODg59++qnNZrv55puLioreeOONrVu3Hj16VK1WAxLT0dExOjrq8Xh27dq1Z8+eXbt2QXcMh8Pz58+/++6729raMFGjo6M6nc7tdg8PD587dw4R0k8++STDMD/60Y/OnTtnNptvvfXWmpqampqavXv3ZmdnL1myJBQKqdXqBQsWtLe3f/jhh7DLwXxntVq9Xu/+/fvdbjf0yLNnz549exaSrxAdKETQX236KqDKSBQmglACmESB37JarZWVlSkpKT6fr6enp6enR6VSzZ07F9N95swZBF+mpaVlZ2e73e62tja73a5QKIqLi1tbW3mez83NhSjncDiamprsdvu0adNUKlVPT49arQYo4ty5cyMjI7Nnz0anbre7ublZr9enpqampKS4XK7BwUGbzWaz2bKyspxOZ0VFhVwu7+/vh+WxvLxcoVA0NzcfPnz43nvvpeDcTz/9tLi4eHh4eNasWXK5/Ny5c8XFxXSjHDlyRKlUpqampqenAxxWXV2tUChKS0tJNNwAYHgK5AT4DDwoNTU1MzMTMKPOzk6xWJyVlcXzPGRMp9NZVFQENbmpqcnpdM6fPx/oS1j3FAoFBMnR0VEY0YaHh5VKpdFozMjIQEc+n6+mpoZhmNzc3PT0dGi4oVAIMwmL86xZszDtfr+/srIyEAi0tLTYbDaNRlNUVNTe3s4wzOjoKG6j/Pz8pKQkcMmGhgan05mcnGwwGGBfAg6/rq4OgQmlpaXQTpxOZ0NDg16vd7vd06dPh0McBtna2lo4TouLiyGCtbW1+Xw+aFEDAwOzZ89WKBTHjx83Go0VFRXnzp1zu91SqbSgoABggJaWFgTRFRcXh8Phzs7O0dFRs9msUCigmnz22WcIT8/JyVGpVCMjI42NjVqtdvbs2ZgQq9Wq1+uxUl1dXVarla5URkYGNCqr1Wqz2bB7U1JScnJyKLqgra1tYGAAcSJ+v3/27NkajebChQtwhxYUFKSmpp44cQJQv8zMTKvVeu7cOYlEYjAY4ITAhWG325ctW2axWDo6Onw+X1JSUklJyZkzZ2jcnV6vBxwTNDQ01NDQUFpaajabT5w4kZqaOjg4mJ+fD3taZ2enw+FwuVx6vX7mzJnBYHBgYMBmswENDfvJkiVLiAAv39vb29XVBXZZXl6OSTh16hQcyNj5p06dysnJAW4MErfH45k3bx4FUPI8f+zYMY7jzGZzVlaWQqHo7+/v6+vzeDxmsxnvSwh5/fXXs7OzARmiUM6YsMarTvxXgmDlRDIUpMOg+VD4Mak9+IuzaeC/YGQQZj9BCw6HA8+Mjo7Sh/HB4/HAicHzPNx0+J7m40A7LpcrEk3tQQnpZuj3/f39vb29vCBxCQimRv7iFDYjIyM0twh9GEln8GFwcJA+zEXz19BkIjSDCf5EzJ4wkQoAqnQA9MuYn/CCpDmYq1AoNDIyMvaHPM/DXhwzCfQbZIHBZNIJp2uE96KdYolh1xNm7aEvSF8WaFZ8SVeNJgCir0xHCLMDH00uM3bV6PM00xDah53R7/fTpYeRFI/RTYL0OhT6PTQ0hAdop6FQCA2i62AwOHa0tOuRkRG32438TTEjpJNvt9vpD30+X0SQbIi2RseML/FbMFxhsh5KHMfZbDZoHvjGarXygkRRMasgnEbh3g6Hw1hT7DcumnuI0sDAAFrw+Xx0S3u9XjowDBIjdLlcdJzU7YHBCDdJV1cXz/NQbfmLE/oIxzYFdN1zXuxUmvgqHA4D+IJ59Hg8YArhaF4rPnqu8FmYvosS3B3g4/RLujBgwZc8ln6/H/Z+/Dk2cxKiEuiX9KTx0e2LTGk4xngpyol4nrfb7fRPmqcKOCdewJtATqfT4/HQk0CvIpi5ecHW53k+GAzS44onBwYGhE1h8MJG6EiEm154ydntdnxPnwRzwb/0soxJHEXPP02URb8X3p0gLArah//K5/PFsNRQKERZAL3YaMKq0MVJ2nw+H14WZLFYrFYrfk7fIiJIu8WP2Ql2u50uMRqnD7vdbrqLhIm78F50pXgBs8OE063odruBwRD2ThN3YWKxz8PhMN0YQi5J+b5wCTAA4fUAOAcdDH13+is8CZaH39J7K2YfWq1Wuky4YtE+HqM7ih4Wr9crnF66D10uF21ZeK8Lzy/N9DZ2qwgnf2hoKKbTmEWZArruIylo3AEhBPomtGDArW02G3xNCoVi3bp1NAzx+PHjbW1tEonklltuQZoCj8ezb98+juO8Xm9qaqrX650xY4ZOpzty5AjcXDk5OW1tbRzHqVSqRYsWweEbiUQ+/vjjcDg8b968/Px8gP+RlAD4mLlz5zqdzv379yOmbuHChQ0NDQMDA/PmzRsdHe3t7RWLxfAHzps3T61Wq9Xqzs7OqqqqnJycadOmJScna7Vamj0EiC6RSFReXp6VlQV41uDgYG1trdfrnTZtGhR2q9UKgOSiRYuKioqcTmckErlw4cLZs2fnzZuXk5Ozbds2+LXcbvfatWsB59yzZw8c+nfcccc777wjFouXLFliMpmampqam5vT0tKmT59+5syZCxcuINpNoVAAvnrgwAHAh0OhUGVlZWZmJuLTaOxDS0tLQUFBW1tbW1sbbAU8z0cikdWrV1+4cKG/v59hGL1ebzabT58+DZv1zJkzlUrl8ePHOzs7pVJpTk4OIMCBQKCqqgqa7OrVq3t7e9vb2+fNm6fVavfs2cPzfFFRkdlsBljQYDDgdkHOBJZljx075nK50tPTKysr+/v7jx07lpSUNHPmzNOnTyO4QKfTsSy7atUq+Nzdbvfhw4dnzJiRlZWVnJw8ODgoFouTkpJgS0GyjpGREbPZTKNXeZ6vrq4GP0Vmg4KCgvnz58OUMTAw4HA4UlJSFi1aRAiBxWNgYABZLLxeb1pa2qxZs0wmE42uRKYYsD+YL+12++rVqwE/wMzbbLYjR47Y7faMjAzg7VasWAEtfvv27cD8rF27Fofl7NmzAwMDQ0ND8PLPnDmzrKyMBiufO3eurq4OHkhgCisrK9vb2y9cuCAWi6dPn464O4VCMWPGDKlUCsuG2Wz2eDwlJSUzZ86Ezn769OmGhgaDwTB37ly5XL5//36GYZYuXbpv3z7waDgMN2/ebLfb1Wo1AkptNltKSgo8Nz09PUePHgVI1GazAXyNSUOQ5+7duzmOW7hwISL9rFbr0aNHAQuRSqVtbW3V1dUlJSXTpk2DZZ/mwYBJhHIPXOoqlWoqc5hd9x42CualnxHkHgqFCgoKPv7447q6uvLy8o8++ujll1+G2/fZZ58dGBhYunSpwWD405/+BIARAIPp6ek7duwYHh5OT09vb2/Hbnj77bdZlk1PTx8dHd26daterwccSiwW//GPfzQajXPmzNm7dy/QTt3d3Vu3bs3Kylq0aBFUS4RRPfPMM5FIRKvVdnd3Dw4O5ubmTps27dixY/v376+srCwqKhodHZVIJD09Pa+//nplZSUh5PTp03CL+f1+hULx2muvdXR0zJs3b8GCBXv37q2qqiKEHDp06Lnnnlu8ePHChQurq6v//Oc/y2Sy1NRUlUpVW1v785//HN75oaGhX//61+fOndNoNMi++Nprr1VWVjqdzu9///sulwtWwhdeeCEpKQn2x23btv3iF78YHh7OzMwcHh7WarXIQrBjxw6RSFRWVoZwXqVSaTabf/e73yH06Be/+AXOA9guz/OHDh1qb2+XyWQdHR3Z2dmBQOAvf/lLcnKy2Wxub2+fOXPmwYMH9+/fn5OTYzabDx06VF1dnZ2drVQq33nnndOnT1dUVMyaNWvPnj3btm0DeMtgMLzyyitgkWB5EonkvffeGx0dReBTV1cXcELhcPj48eMvvfQStordbi8rK9uzZ89///d/19XVGQwGSHYGg2HGjBm7du1qb283Go21tbX/9V//5Xa7z507t2PHjqVLl9bX13d0dHAc984777zxxhvQTGFA93q9ZrOZj6aOA5oKnq6tW7fa7faCgoKOjg5CSHV19c6dO9PS0pYtW3b69OkPPviARGNq8/PzW1padu3aNWPGjJGRETBTQMh//vOfAzyOxG8cx/3v//6vXC43mUwQMtxut1arhUtq9+7dcrm8vLzcYDC43W4sqM/nA5f/1a9+BXRXZmZmVVXVzp07586d63K5fv/738Pyy3EcYotnzpx55syZHTt2lJSUQB83Go3bt29vaWnJzc0Vi8U7d+50Op1paWkmk6muru7w4cOlpaWFhYVgYWBnubm5R44cefvtt4F1AVzH4XDk5+e///77g4ODCxcuzMvL6+3tpfHKPT09v/vd7wBcw0EWiUQvv/yyXC6fM2fO7373u7feeotEE635/f66urq33nrrT3/6E8zlL7zwwrZt21544QXEcO/cuXPPnj3/8z//A9zkiy+++PDDDz/99NPCYBBIbGKx+JJJfK4qXfecdzwCKlOhUOTn5+fl5cGMqNFojh07tmfPnrKysoKCgvXr1x87duyjjz7iOC4/P3/FihWIn5HJZEDkaLVao9GYnZ2dnZ0NZEx6enpGRgYCPXmel0qlZ86cKSkpeeKJJ0KhUHp6+sqVKwFTT0tLmzdvHuz3X//61++99979+/d/9tlnwWDwgQcegESG6LWMjAzEufFR21YkErnhhhtWrFgBaJparf7444+3bds2b9683NzcrKysRx99dNmyZSMjI/v378cNX1RUpNPpqqurOzo6GIbJzs5evHixQqGoqakBZnbOnDlmsxmoZESOcByXlJSUkZGBXAHFxcXZ2dkA561evfqRRx5xuVx/+ctfII+XlJQAK63T6XJycpRK5dy5cwEVSEpKMhqNMplsyZIlN91006uvvkoR7IFA4OjRo4sWLVIoFIg3g2MnKSlp9uzZM2fO1Gq1M2fOBCsBNColJcVsNjudTnjGi4qK8vLyNBrNgQMHLBYLbsesrCyHw5GWlmY2m+GOhynQYDBUVFQgZgnZghAb3dbW5na79Xq9SqVau3bt8uXL//SnPzEMs2jRoqVLlyLVlt/vLykpqaysnDt3bnt7e1tbGyFkYGBAqVQ++OCDFRUVTqdz9erVdXV19fX1UBd4nkcMCJgLz/McxxUUFGzYsAHgKolEMn/+/I0bN9rt9ldeeUWpVCKWffr06du2bevu7tbr9UuWLJk1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1NGjR5966qm9e/fGxcUNHTqUELJhw4aKior4+PjGxkZkJPv6+tJR2FFvt4dG9Ws/P7+SkpKvv/46NTXVaDT27du3c+fOxcXFiYmJ7hVJoKC1XVCyADQ7eqvr16+vrKycPn16+/btCSEVFRUhISHwj9PiGG7MS6PRwMynFVtOnjx57NgxpLHGxMQcOnRo27Ztr7/+enx8PH5Cs10QWKM97VsLuL+uX7/+73//mxDyv//9j8vlyuXyv/71r4WFhSjxMX36dDBD2KlfxC0CDIXT6czJyTl06BAhJDo6et68eQaDYfv27ZWVlS+88AKsdbefI854vFwwvLA4cKeIxeKtW7eWl5dPmTKlffv24K7gv2hV5Z74oyo2/aS0tPTMmTMajQY5L+np6X5+fp988snrr7/esWNHsI8IIfX19WFhYWg015bKea3Fn1bnFQgEvXv31mq1y5cvr66uJoTI5fLs7Gz0f4U6jL2LuuOtvT7EqFKppJ2uwblZs2ZNaWmpyWRq167dkCFD9uzZYzAYunfvTt9MKnbd8/Niakql8oknnggJCRk6dChYuk6nc+bMmf369bNYLD179pw1a5avry8l1RNC6Kvr3lkL6hIKmRNC4uPjExISjh8/npmZ2blzZy6X2759e5SMstvtbtgQxJUbCmmLyjjod/DDDz9s2rSpsbERGVzIxCOEULFL6767AYfDAVY1La508eLFS5cu/fWvf42Li/vggw9qamoyMjLGjBmTk5NDXKtHCz+inIJ7Yler1fr4+AwdOlQqla5evXr16tUSieSJJ57o16/f559/Pnbs2AULFsyYMQPFRdlF3dpSRg51R51O57lz55577rl33nmnrKysoqLC19c3KysrNTUV1frJb4XRWgAcNfhbIBDAe3P27Nkff/zxnXfeuXz5clZWVmJi4vLly4uKimi5W+Kq3kDc2qJsUjO07I4dO6anp6vV6h9//HHUqFF9+vRp164d0vTR/QtfRuFdp9Pp5+fXli7urcWfVvIqFIq4uLi33367rKxs1apVCxYsWLNmTUpKSmxsLLIkfXx8kFfjHmkXsenc3Nw9e/agKyqfzx84cODMmTM/++yz0tJS1Mf597//HRQUpNVqbTYbzn/8HDVw3ROCer1+zJgxHTp04PP5SqXSarWi2rdarR4wYMCsWbN69+4NHyJCCmw1kGlDTTL8isPh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", + "image/png": "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bwRBsGXLlpmZGTEapGn6/e9/f2Zmxjl33333bdiw4dy5cwcOHNi/f//evXtFt5KpYseOHePj41EUvfLKK3v27Ll8+fJzzz3X6XR27NjxxBNPAPjFL35x+fLl6enpBx980Hv/93//99bap59++plnnsnzfG5uTuaVp59+ulKpHDp06JVXXtm1a9eXv/xleUhWVlZWV1dlmXz58uVDhw7VarXl5eXFxcX77rtPbkEYhp1Op1qtHj9+fHZ2Ns/z999//8EHH4yiqFqtXr58+S//8i+JaN++ffv37z979uwHH3xw6NChr33ta3Ecj4yMPPvss977b3/729bakydPHjt2rNlsPvLII7t37263288//3yv15ucnPz85z/PzIcPH87zfHFx8atf/Wq9Xn/zzTcfffTRMAzffPPNhx9+GMCBAweeffbZL3zhC3L6R48eff3119euXfu5z30uTdMXX3xxdHR0w4YNYRi++OKLp0+fTtP0mWeeOXfu3LFjxyqVyuOPPy5OlGq1KsI0y7If/vCH69evz/N8/fr1O3bskLlw7dq1W7duTZLkueeeE33wxIkTv/d7v7dr167Lly8fP3587969o6Oj27dv37t377/9t/9WVIRDhw79m3/zb5xzb7/99uLiYpqmcRwfP378tdde27x589LSUq1We+WVV7rdbhAEX/nKV2q12vvvv//SSy9prb/0pS/JUO90OqdOnTp69Giz2fy93/u92dnZM2fOvP3220R09OjRP/zDP2w0Gq+99tr8/Hyz2Xz88ce3bdvWbrcrlcrExMTo6OjRo0dF0H/5y1+enJx8//33jx8/LhLwnnvuOXDgwE9/+tM4jnfv3n3q1Klt27bV6/W/+7u/+/rXvy7X+atf/eq5c+d+/vOfh2H4hS98AcCxY8fm5uYuXrw4Njb2zDPPdLvd119/fXV1VSk1OTn5uc99TuxdtVpNjDY7d+6cnp7OskyW4IXzA8DU1BSAwsizY8eOIAief/75jRs3rlmzRhZG1Wp19+7dRFRY/J577rn9+/dPTU2988471Wp1fHz86NGjrVZreXn5C1/4wrp16+bn5//f//t/nU7n0Ucfveeee86ePXvo0KFms/nUU0/Nzs7+r//1v+ShKExYdxOfeS1ejC0ACn/j2NgYMydJsrq6+vTTT4vy3ul0Nm3a1Ov1Lly4sH79+qmpqXa7ffbs2Z/97GeVSuX3f//3f/rTn4r6cOHChb/+679es2bNmjVrlpeXZe0fhuFbb73VbDYPHTqUZZksTpMk+eCDD7TWIoW99z/5yU82bty4Y8eOWq32wQcfMPPy8rJYMEVfSNP0zJkzxph169bJTDM1NbV27dqNGzdOTEzEcVyr1ZRShw8f3rNnz2OPPTY+Pv7mm2+KOWX//v333HOPWELEQp2maZ7n8sx0Oh0ZuDt27Ni/f/+ZM2dOnz4N4P7779++ffupU6dWVlbGx8e3bdv2zDPP/N7v/Z448URVPHv27KVLl5aWlg4ePPinf/qnDz74YK/Xu3z5sth5RkdHjxw5orVuNpsnT54cGRmpVqvvvvuuKOxi5TfGPPXUU/Pz85cvX/7ggw8qlcq2bdtk8Z4kyXe+852HHnrowIED1trl5eULFy5897vfnZqamp2d/au/+qtKpfLkk08uLi7W63WZ6iYmJi5evNhqtX7yk59ore+9997169cDyPN806ZNs7Oz8/PzrVaLmU+fPi3rlVOnTokR5uWXX/7X//pfb9q0CcC777576NCh73znO6dPn261WpOTk9u2bRNrwLp167Zs2XLvvfc+88wzzWbztddeazQae/fujePYObdmzZrFxcV2u52m6dzc3PHjx0dHR/M8f+utt2SMaa3FJnDhwoWxsbENGzaImWvz5s1Jkjz66KPnz593zk1NTTnnnn/++d27d4+OjspgkM9u2bJFjHUANm/evHfv3kcffbTRaPzoRz+q1+uPPPIIgJ///Odi1mDmp59+WlTvXq9Xq9U2btz4pS996YknnhArx9zcXK1W27NnT6/X27Bhw9mzZ0+ePLl169bp6ekLFy6ISUprvbq6ury8PD09/cgjj8RxfPr06cXFxUOHDo2Pj8/NzZ07d65arW7dunXHjh379u3bsGFDkiTnzp3r9Xqvv/76+fPn5+fnz5w5A+BnP/vZl7/85dnZ2R/96EcLCwuiPt9zzz0yqczPz7/77rtr1qyZnp4+ffq0LExFgz558uTLL7/8wgsv/NVf/dX/+T//B4CM/5MnT/7N3/zNz372M3moz507J1oaEa2urh47dmz//v0AlFLPPffcyMjIAw88IEu0wnl74MCB1dXVN954o1qtViqVd999d8OGDbVa7dVXX83zfGxs7Mknn5yenj569GiapisrK6dOnfrmN785PT39q1/9anFx8cknn5yamhp28N41fOZFfCHflVKycKvVauPj4wcOHGDmxx9/PIqiF154YXR0NI7j5eXlX/7yl2IeXV1d3bBhw9zc3NGjR3/84x+vXbtWDNbW2pWVlc2bN4vZTnxBGzduHBsbO3LkSJZlO3bsmJqaEiODiJj169evX7++Wq1evHhxenr6nnvuWbdunegR3W5XhLIcahiG3W53y5YtDzzwgJjaiWhycnLDhg3ValUe+CRJTp48GcfxzMzMpk2bxONUqVREWRYrikiiwne6sLAwMjIyOTkpOqw8h5OTk+fOnfvBD36wsLDw3nvvidtQvMHLy8tRFMVxvGXLlv37909OTiqlRkZGNm/e/P3vf/+dd94ZGRlZs2ZN4TEWa3gURUqpe++9d+vWreJxLe4CEc3Ozk5OTr766qtHjhzZuXNnlmXLy8ui8j/77LOvvfba8ePH8zyfnp42xvzlX/7lhQsXWq3WF7/4xZWVlYMHD4pR6K233rp48eKZM2def/11MVOsXbt2586ds7Ozcl+2bNkiBtw0TQs7sljJxCu4du3a//k//+fZs2dFPB05cuT73//+pk2bVlZWxOhfq9XEztNoNCYmJrrdbqPR2Lx589zc3PPPPx9F0cjIyPnz52Vqj+NYZp377rtv165d4qwDIJaKN998880337z//vujKBKbkkzbFy9eDIJADu/ChQsnTpx49NFHxfIg5ngikigvCdEZGRmRPQDo9Xpyvhs3bkySpNFoVCqVTZs2iRFG7ppcqJdffvmHP/zh4uJir9e7ePHisWPHVlZWxOKfJMnzzz//3nvvXbp0SXytMl2Njo7WarXJycm1a9fmeb68vNzr9V566aWLFy9qrZlZvJSNRmNyclLMO+fPn5+bm9u1a9e5c+eOHj26Y8cO7/3777//13/916dOnbr//vvjOH755ZcPHTr05ptvikVL/M/79++XhaPMZCKOjTF79+79sz/7sy9/+cvtdvvixYvW2q9//evf/va3H3nkkfn5+aWlpeeee+71118/c+aMBPAcP358YmJi586dSZKcOXPm2LFjZ8+efeedd959912xpIVh+OSTT3Y6nePHjzNzpVKRpdu5c+dWVlYajYYx5sCBA6+99trBgwePHTsWRZG1dmpqSsyhMvsePXr0yJEjcpHvMj7zIl6MazKSRORVq9XZ2VlZ/o+Njc3MzDz77LPbtm0Tn9WWLVu+853v/Mmf/MnDDz+slFpeXn7wwQf/5b/8l3/8x38sBtnZ2dmpqannn3++2+3WarVWqyWxKGvXrv3FL36RZZnYSSToIoqiKIq896J0JEly+fJlcauKEBHREwTBe++9J/pX4bZdXl42xkhM4fAUFYZhvV6XmEgMAhDb7bYsewuLsLgEJiYmmPnYsWNibh4ZGXn00Ue/8Y1vPPnkkyMjI++99966deu++MUvrl27VpYdQRBMT0+Pj48751ZXV0UHb7fb4pp7/PHH//RP/3RhYeHnP/85M0dR1Ov15ufnK5VKp9MpvI7ingIgdobV1VVZNu3cufPgwYMLCwtbtmyJ41gcG2+//fbmzZu/9a1viRlqzZo1jz766De/+c1f/epXQRBs27btj//4j1ut1vPPPy+LgF27dj3wwAPinpVv995fvnzZGLNmzZrC/CphG9VqVV5IUAeAP/qjP/qjP/qj119//ezZs1NTU/fff/+/+lf/6tFHH926dasIRwnKlPCMbrcbRREzP/jgg//oH/2jLMt+8YtftFotmXHF35tlmbW21+vJPZUxBmB1dfXixYujo6NiApLoLJnj33777W3btgVBcP78+b/927/9whe+sHHjRgkBSJJkdHR0fn7+9OnTjUZjdHRUa62UWl1dbTabci/m5+clSLTw7sr8J9+Spunly5fPnDmzd+/eP//zPxeD0o4dO1qt1tmzZ3fs2LG0tBSG4e7du7/97W9/5zvf2bVrlzGmML6LNyXPcwn03LBhw5o1ax555JE//MM//NKXvlSv140xYpcnoscff/zMmTPvvPPOV7/6VVnNPPXUU51OZ3R09Lvf/e4/+Sf/ZPPmzSMjIxMTE/fff/+/+Bf/4k//9E/Hx8dlsHU6HTHHi6Ig11wpJXOb6AfiClZKtVqtLMuSJJmYmHjggQf+8T/+xzJxinSWh1drPTMz893vfnf37t1yDBMTE+LulkX5888/v2XLFpHpDz/88AMPPPDP/tk/e+KJJ1qt1vHjxx955JE//uM/loA0sb5KxM709PQf/dEf1Wq1X/3qV3elOf4zb4sX3UdGjDh2vPcPP/zwX//1Xz/66KMSwTYyMtJoNJRSMzMz991333/7b/+tWq3u379fa/3Nb37z8OHDr7766p49e3bu3LlmzRpjzDe+8Y1f/OIXhw8f3rdv3+zsrChTX/rSl374wx9+4xvfGBsbE48TgIceeuiFF174r//1v+7duzcIgu9973s/+tGPXnzxxS1btnz3u9/13m/fvv3w4cNvv/32mjVrZChLnKK1dvv27UmSaK03bNhw5syZV1555cEHHwTgnHvqqad++tOf/sVf/IVS6vd///clik5sBUWUxerq6qZNm/7H//gfYRiOj4//wR/8ATN/7Wtfe+GFFw4dOnTffffFcbxv374f/vCH//2//3fRRiuVyszMzFtvvRUEwb59+6anp8VIun79+kqlkmXZCy+8cPr06V27dt17773izxQBNDExIY/E+vXrFxcXJyYmtmzZIgFzAEQPbTQaMkHed999IkaNMVNTU7t27XrxxRer1eq6deuyLPvggw/eeOMNsYqKcamwKU9PT1cqlZ/97GdEJDGjX//611944YX/9J/+0+OPP26MWb9+PRFJuNvU1FSv19u3b98LL7ywtLQkcUHOub/5m79ZWFjYtm2bRMKdP3/+P//n/zw1NfXFL34xSZJ77rnn4MGDWZZ98Ytf3LJly2uvvXby5ElZfh0+fDiO461bt0qcZZqmmzdv7vV6Sqn169dLmKys3gDkef7SSy8dPnx4fHz8hz/84fbt2++7777HH3/88OHDL7300vbt27/2ta9lWfbLX/5yeXn5Zz/72dmzZx944IE4jp955pkf/OAHKysrW7duffDBB8XYdebMmV27dol2+cwzzzz33HOvvfba5OSkyNMNGzZIdKN49aMo6na7mzdvfv7559M0FYl2/Pjx7du3r1279uDBg0EQ7N27d/v27d///ver1eo999wzMTEhQ4iZJyYmjh8/fvDgwe3btz/44IPdbveLX/zij3/840ajMTs7++STT9ZqtdHR0R/84AfPPPPM1NTUnj17Wq3W2rVrx8bGxA3OzF/5ylf+7//9v2EYShzXU0899fLLL/+X//JfpqenxRY/MzMjMn12dlbid0Ux2rJlS7PZ/I//8T8GQfDkk0/W63XRxy9dujQ9Pf2Vr3yFmcfGxnq9nqwqTp06NTExsWvXLlkcABATXKfTKUKfu93u6Ojozp07jx079vDDD+d5vn379vfff/8nP/lJHMf79+/ftWvXzMzMT3/6UwDyGMZxLLapmZmZM2fOvPjii81m87HHHiusvncTn/m4+GEkrUN+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ZVleunRpf39/ZWUlhPDTn/60ruuFhQURKcvyl2mB+Q05ZVlOJpMUBGWM+du//dvJZPLEE0+0Wq0vfOELJ0+enE6nP/vZz65fv556bNKbIvL4fsvMZVkOh0PnnPf+0qVLCwsLp06dUtW9vT1mvnv37pUrV77//e+HEB5T1ExNGzOfXYBZzMWrr746mUw+97nPJRdEr9e7evVqt9tdXFxMX0zFEtFjulaScmqE9M7Ozs54PF5fX7fWptspbt++fenSJVX9qH7/JUh5DwG8+eabdV33ej0i+uY3v/nCCy/84Ac/uHnz5ng8TgM8jfHHFJWaPfWcEMJoNNrf3x8MBjHGd999N80ladxtb2/XdZ00z/y7xpjHl//Rlvm4j/p3DWttURQpsw0zj0ajqqqGw2G32xWRtbW1L3/5y9/+9rfrut7d3f0VVEbqOnVd48BOz/M8hHD9+vVkdc4zLvzC1AupgzJzutKk3W632+2VlZV+v3/58uVXXnnlz//8z//Vv/pXzPyf/tN/+rj1nGurdrs9z/PTbrf//t//+9/97nefeuqphYUFY0yWZan+jyon9bw02Ky16aEGg8G///f/Psuy73znO1mWVVV1586dNK2mcZ7GajYLFcJjsmKk6xtTa7z33ntJuxVFkfpxmgjnIzD9xMfCe//aa68x81e/+tWUvrQsy5///OdFUZw4cWI6nU6n0/F4nASaBPFQxuMxDqmMqqq2trb29/d///d/n5nH47Ex5nOf+9xzzz3Xbrd//OMf/wr1BHD37t26rs+fP3/y5MmyLK9evVpVVZrpr1y5Mp1OvfcxxsFg8KhyiqJg5iQm55wxxnt///790Wj01a9+dXl5GUCn0/na17729NNPr6ys3L17NzV1it1Ks9Rj6umcS5doArh58+bOzs7S0lKyotrt9vnz57/yla9cuHChqqp09eajypl3EiKy1iY9FWO8devWcDh85plnTpw4QUTj8Xh7e/utt9564oknUjcQESJSVVV9zBBLnYqZe72eqr7zzjtXr149efLk0tJSCOF73/ve2bNn/8W/+Bd/8id/8vLLL29ubv4C8TxACKHVar311lsbGxvf/e53z5w5E2N88skn/9k/+2fPPfdcr9dbW1sTkWQ6PKaeVVXFGK21zrk0ha+trX3uc5/7xje+8a1vfeuHP/xhWZZziahqnierX1IL4GBe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Y8U3HKax4hs+VWKMrVbr+eef/zf/5t9MJhPn3CuvvHL9+nUcnBkGME+wg0Pp1dL5ID1ILDMcDtOZrDRbzL+enODpfBYO8selTJDpdVVV8zeTvfz1r399fX09qcUXXnjh3r17VVXt7u7+23/7b2/evKmq3vv/8l/+SzqNhQMjOmnYVLf04vjx4y+//HJStekD6X/T0Zt5ysCqqkaj0fb29okTJ1LaHAA3btz467/+6xhjr9e7ceOGiKRknIcDIlM58xN2L7/88iuvvKKqt27dev7551Ma0bQHm35IRObJ1OYNO5lMUsuISPr8JyLmhr8zNFZ8w6dKMjNDCBcuXLh06dIf/MEfdLvd+/fvV1WV8gsePXr0/v377XY7z/PXXnvt+PHj77zzzsrKypNPPvnmm2/2+/2vf/3rd+/eHY1Gw+Hw5z//eafT+frXv15V1c7OztWrV9vt9tNPP720tPSTn/xka2ur1Wo9++yzS0tL6ZjrpUuXNjc38zxfWlp66qmnnn/++Rs3brz++usXLlzodrvW2iNHjuzu7uZ5vrm5ubS0dPXq1S996UtbW1spsd10On311VevXLnyzDPPPPPMM9baq1ev/uQnP1lbW3v22WdXV1e73e6xY8feeuutnZ2d73znOykNZ8rhtbOz471fWlq6ePHiO++8c/ny5fX1dVXt9/ve++vXr1+6dGl5efnixYvj8fj9999PiYyeeeaZbre7vb396quvpkTZX/nKV9KscOzYsatXr+7v79+4cePIkSNEtLOzc/PmTSI6c+bMwsLCZDJ5+eWXAayvrz/zzDO3bt3a2NgAsLa2dvTo0fRE+CVOjTb8VtNY8Q2fNiLS7XaffvrpjY2N27dvp/Ooxpjbt28nc/v69eubm5vW2mvXrm1vb//+7//+22+/fenSpeeeey5lQzt+/Pje3t69e/e++c1vDofDN954w3v/zjvvfPnLXw4hvPHGG/v7+2+++Wa32/3a1762tLSUcldcvnz5vffeO3/+/IULF956663RaHTmzJnTp08vLCwsLS2l46zLy8vXrl2bTCbb29tPP/10yuC2u7t7/PjxPM+vX79urf0n/+SfDIfDW7duvfXWW++8884/+kf/aH19/fnnnwcwnU4vXbp09+7d5Hfqdrv9fv/9999/++23z507d+HChevXr29tbZ09e/bYsWNnz549derU4uLi2tra+vr6+vr6mTNnUqBRnucrKyt37twZDAbj8fjSpUsXL168cOHC7u5uMsyrqjp37tyRI0f+83/+z9ba73znO/fu3Xv33XeXlpa63e5LL73UarX29/e/9a1vfetb3/rpT3+6u7sbQvibv/mbxcXFdrv9EQ/S/8x5goa/4zQqvuFTJYUettvthYWFM2fOXLlyJeXjTcGCc+98VVXp1oWnnnpqaWmp3++fP39+eXk55XWp6/rYsWMpT3en0xkOh5cuXRqPx/v7+1mWbW1tOedSJu6Ui6Yoiv39/StXrpw6derUqVNHjhxptVqDwaDdbrdarWPHjuEgjcGZM2f6/f7+/n5Zlk899dTa2tqdO3fu379/6tQpY8zbb789Go3efffde/fu3bp1K93YcO3atdu3b4vIdDqNMV66dGkymTz77LMArLXD4fD69esLCwvHjx8/ceLEsWPHtre3UwD+PPFROi3V6/XSlUxZlp04cWJ1dbXf76ccudeuXdvc3Ew5RCeTiao651qt1qlTp8bjccoRXZblPBf8/fv3U4zN9vb2zZs3U2PWdX3kyJFz586trq6m+SxlwU05W36TfaLhk6RR8Q2fKikNy9bWFoAvf/nLIvLaa6+lizuS7gYwv9cmub/LslTVxcXFFEbS6/V2d3eTwz0pu/mGZLql4cyZM8nPM51O51nv51nSAHjv0ywSY9zY2Eh+j+l0SkStVmt5eTn5uNM27M9+9rN79+6trKykuccYc/Lkya985SsXL15cXFx0zq2trT3zzDPf/va3p9NpuhGpqqq9vT0chD8mBZp8+ul3U16dZErP1f3hjdxkVrdara2tLVVttVqLi4udTuepp57q9/sp5yKAxcXFLMvS1WPpopI8z8+fP//FL35xa2vr9u3bKVM8DvYhFhYWUqOl382yzFqb/GafZh9o+DRpVHzDp0pSxykJbVEUZ8+eTTnTsyxbWVm5ffv29evXU5rZyWTS6XS2trbSZRc3btwwxqyurm5ubq6srIzH4x//+Mfb29shhMXFxS996Uv9fj8Z/ulCuJT5uSiK5EMviuLJJ5+8fv36tWvX7t+/H0JYX19P92Mk3ZplWZpasix7++23U+Ly48ePb21ttdvt9Mnz58+n5LSpcFXd399PN/wZYxYXF621586dO3v27Isvvri9vd1qtZxzp06d2tnZuXPnzq1bt7a2tk6ePLm8vKyqw+Ewaduk9IfD4euvv54yV9d17b1fXV01xjjnTp482e/3u93u2bNn03VmAFIO6nTPooisrKykzxPR0aNHrbUpUeXZs2dTM6Zmn581O5wBoonA+QzTHH1q+FRJauXFF1+8ePFi2mn8/ve/f/bs2bNnz25ubl67dq3T6Xjv2+322bNn33777fPnz2dZduPGjV6vt7S09P7772dZdvTo0UuXLnW73XfffffEiRNPPfXUdDqdTCZvvPFGv98/duzY+vr622+/vbCwsLi4mPLxhhCKorh06dJoNCqKYmlp6fz583fu3Ll58+aXv/zldMtrMrfTxXJPP/108gv95Cc/OX369KlTpwDs7++/9957b7/99tNPP/3FL36Rme/du/fCCy8sLS2dOnXq/PnzP/vZz86cObO0tPTTn/709OnTx48fT4mLk/cmzUbPPPPM3t7erVu3nnzyyflNZFVVpcovLi5ubGwcO3ZseXl5e3u7qqqlpaXNzc0f//jHa2trx44dm98ulNIIJ/97URSLi4u3b99OVwM+9dRTx48f393dfe2119IlYufOnUsem6effjr9YgpPevwVYA2/7WiThqzhUyYlMEgZ80MI89sekgoeDoftdjsFHaZE6smTcDg/1zxj8Efu9Dgchz4/KJQs2ZSefp7ZP2nz+aUx6YvpMx9JR6yqaTHxkbTsODC98zz/iCP7cDVS+u/5D6WfSHn800MlV3gK7U9W+Tzbe0rvnq6zmBee4oIO508+fAI21XxnZyetEpLnKpU8r8A8Rdqj6tzwWaJR8Q0NDQ2fWZoEBg0NDQ2fZRoV39DQ0PCZpVHxDQ0NDZ9ZGhXf0NDQ8JmlUfENDQ0Nn1kaFd/Q0NDwmaVR8Q0NDQ2fWRoV39DQ0PCZpVHxDQ0NDZ9ZGhXf0NDQ8JmlUfENDQ0Nn1kaFd/Q0NDwmaVR8Q0NDQ2fWRoV39DQ0PCZ5f8P2Pqo0QpbnhkAAAAASUVORK5CYII=", "text/plain": [ - "" + "" ] }, - "execution_count": 34, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" }, @@ -24788,7 +24221,7 @@ "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 34;\n", + " var nbb_cell_id = 33;\n", " var nbb_unformatted_code = \"print(DATA.train_dataset[0].target_string)\\ntorchvision.transforms.functional.to_pil_image(DATA.train_dataset[0].image)\";\n", " var nbb_formatted_code = \"print(DATA.train_dataset[0].target_string)\\ntorchvision.transforms.functional.to_pil_image(DATA.train_dataset[0].image)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", @@ -24826,25 +24259,23 @@ }, { "cell_type": "code", - "execution_count": 35, - "id": "5257aba3", - "metadata": {}, + "execution_count": 4, + "id": "b44db7e4", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-19T11:35:49.248446Z", + "start_time": "2023-04-19T11:35:49.165590Z" + } + }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Could not find image processor class in the image processor config or the model config. Loading based on pattern matching with the model's feature extractor configuration.\n" - ] - }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 35;\n", - " var nbb_unformatted_code = \"CONFIG.pretrained_model_name = \\\"naver-clova-ix/donut-base\\\"\\nCONFIG.encoder_decoder_config = transformers.VisionEncoderDecoderConfig.from_pretrained(\\n CONFIG.pretrained_model_name\\n)\\nCONFIG.encoder_decoder_config.encoder.image_size = (\\n CONFIG.image_width,\\n CONFIG.image_height,\\n)\\n\\nMODEL.donut_processor = transformers.DonutProcessor.from_pretrained(\\n CONFIG.pretrained_model_name\\n)\\nMODEL.donut_processor.image_processor.size = dict(\\n width=CONFIG.image_width, height=CONFIG.image_height\\n)\\nMODEL.donut_processor.image_processor.do_align_long_axis = False\\nMODEL.tokenizer = MODEL.donut_processor.tokenizer\\nMODEL.encoder_decoder = transformers.VisionEncoderDecoderModel.from_pretrained(\\n CONFIG.pretrained_model_name, config=CONFIG.encoder_decoder_config\\n)\\n\\nCONFIG.encoder_decoder_config.pad_token_id = MODEL.tokenizer.pad_token_id\\nCONFIG.encoder_decoder_config.decoder_start_token_id = (\\n MODEL.tokenizer.convert_tokens_to_ids(TOKEN.benetech_prompt)\\n)\\nCONFIG.encoder_decoder_config.bos_token_id = (\\n CONFIG.encoder_decoder_config.decoder_start_token_id\\n)\";\n", - " var nbb_formatted_code = \"CONFIG.pretrained_model_name = \\\"naver-clova-ix/donut-base\\\"\\nCONFIG.encoder_decoder_config = transformers.VisionEncoderDecoderConfig.from_pretrained(\\n CONFIG.pretrained_model_name\\n)\\nCONFIG.encoder_decoder_config.encoder.image_size = (\\n CONFIG.image_width,\\n CONFIG.image_height,\\n)\\n\\nMODEL.donut_processor = transformers.DonutProcessor.from_pretrained(\\n CONFIG.pretrained_model_name\\n)\\nMODEL.donut_processor.image_processor.size = dict(\\n width=CONFIG.image_width, height=CONFIG.image_height\\n)\\nMODEL.donut_processor.image_processor.do_align_long_axis = False\\nMODEL.tokenizer = MODEL.donut_processor.tokenizer\\nMODEL.encoder_decoder = transformers.VisionEncoderDecoderModel.from_pretrained(\\n CONFIG.pretrained_model_name, config=CONFIG.encoder_decoder_config\\n)\\n\\nCONFIG.encoder_decoder_config.pad_token_id = MODEL.tokenizer.pad_token_id\\nCONFIG.encoder_decoder_config.decoder_start_token_id = (\\n MODEL.tokenizer.convert_tokens_to_ids(TOKEN.benetech_prompt)\\n)\\nCONFIG.encoder_decoder_config.bos_token_id = (\\n CONFIG.encoder_decoder_config.decoder_start_token_id\\n)\";\n", + " var nbb_cell_id = 4;\n", + " var nbb_unformatted_code = \"transformers.processing_utils.ProcessorMixin?\";\n", + " var nbb_formatted_code = \"transformers.processing_utils.ProcessorMixin?\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -24866,60 +24297,38 @@ } ], "source": [ - "CONFIG.pretrained_model_name = \"naver-clova-ix/donut-base\"\n", - "CONFIG.encoder_decoder_config = transformers.VisionEncoderDecoderConfig.from_pretrained(\n", - " CONFIG.pretrained_model_name\n", - ")\n", - "CONFIG.encoder_decoder_config.encoder.image_size = (\n", - " CONFIG.image_width,\n", - " CONFIG.image_height,\n", - ")\n", - "\n", - "MODEL.donut_processor = transformers.DonutProcessor.from_pretrained(\n", - " CONFIG.pretrained_model_name\n", - ")\n", - "MODEL.donut_processor.image_processor.size = dict(\n", - " width=CONFIG.image_width, height=CONFIG.image_height\n", - ")\n", - "MODEL.donut_processor.image_processor.do_align_long_axis = False\n", - "MODEL.tokenizer = MODEL.donut_processor.tokenizer\n", - "MODEL.encoder_decoder = transformers.VisionEncoderDecoderModel.from_pretrained(\n", - " CONFIG.pretrained_model_name, config=CONFIG.encoder_decoder_config\n", - ")\n", - "\n", - "CONFIG.encoder_decoder_config.pad_token_id = MODEL.tokenizer.pad_token_id\n", - "CONFIG.encoder_decoder_config.decoder_start_token_id = (\n", - " MODEL.tokenizer.convert_tokens_to_ids(TOKEN.benetech_prompt)\n", - ")\n", - "CONFIG.encoder_decoder_config.bos_token_id = (\n", - " CONFIG.encoder_decoder_config.decoder_start_token_id\n", - ")\n", - "CONFIG.encoder_decoder_config.eos_token_id = MODEL.tokenizer.convert_tokens_to_ids(TOKEN.benetech_prompt_end)\n", - "MODEL.tokenizer.eos_token_id = CONFIG.encoder_decoder_config.eos_token_id" + "transformers.processing_utils.ProcessorMixin?" ] }, { - "cell_type": "markdown", - "id": "d40f590d", + "cell_type": "code", + "execution_count": null, + "id": "954300a4", "metadata": {}, + "outputs": [], "source": [ - "### Add task specific tokens " + "transformers.VisionEncoderDecoderModel.to" ] }, { "cell_type": "code", - "execution_count": 36, - "id": "42516577", - "metadata": {}, + "execution_count": 12, + "id": "7ce37bda", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-19T11:39:30.070268Z", + "start_time": "2023-04-19T11:39:22.652334Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 36;\n", - " var nbb_unformatted_code = \"def add_unknown_tokens_to_tokenizer(unknown_tokens: list[str]):\\n assert set(unknown_tokens) == set(unknown_tokens) - set(\\n MODEL.tokenizer.vocab.keys()\\n ), \\\"Tokens are not unknown.\\\"\\n\\n MODEL.tokenizer.add_tokens(unknown_tokens)\\n MODEL.encoder_decoder.decoder.resize_token_embeddings(len(MODEL.tokenizer))\";\n", - " var nbb_formatted_code = \"def add_unknown_tokens_to_tokenizer(unknown_tokens: list[str]):\\n assert set(unknown_tokens) == set(unknown_tokens) - set(\\n MODEL.tokenizer.vocab.keys()\\n ), \\\"Tokens are not unknown.\\\"\\n\\n MODEL.tokenizer.add_tokens(unknown_tokens)\\n MODEL.encoder_decoder.decoder.resize_token_embeddings(len(MODEL.tokenizer))\";\n", + " var nbb_cell_id = 12;\n", + " var nbb_unformatted_code = \"de = transformers.VisionEncoderDecoderModel.from_pretrained(\\n \\\"naver-clova-ix/donut-base\\\"\\n)\";\n", + " var nbb_formatted_code = \"de = transformers.VisionEncoderDecoderModel.from_pretrained(\\\"naver-clova-ix/donut-base\\\")\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -24941,29 +24350,37 @@ } ], "source": [ - "def add_unknown_tokens_to_tokenizer(unknown_tokens: list[str]):\n", - " assert set(unknown_tokens) == set(unknown_tokens) - set(\n", - " MODEL.tokenizer.vocab.keys()\n", - " ), \"Tokens are not unknown.\"\n", - "\n", - " MODEL.tokenizer.add_tokens(unknown_tokens)\n", - " MODEL.encoder_decoder.decoder.resize_token_embeddings(len(MODEL.tokenizer))" + "de = transformers.VisionEncoderDecoderModel.from_pretrained(\n", + " \"naver-clova-ix/donut-base\"\n", + ")" ] }, { "cell_type": "code", - "execution_count": 37, - "id": "81a93859", - "metadata": {}, + "execution_count": 9, + "id": "d7dfcf78", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-19T11:38:51.404917Z", + "start_time": "2023-04-19T11:38:50.578616Z" + } + }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Could not find image processor class in the image processor config or the model config. Loading based on pattern matching with the model's feature extractor configuration.\n" + ] + }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 37;\n", - " var nbb_unformatted_code = \"add_unknown_tokens_to_tokenizer(list(TOKEN.__dict__.values()))\";\n", - " var nbb_formatted_code = \"add_unknown_tokens_to_tokenizer(list(TOKEN.__dict__.values()))\";\n", + " var nbb_cell_id = 9;\n", + " var nbb_unformatted_code = \"donut_processor = transformers.DonutProcessor.from_pretrained(\\n \\\"naver-clova-ix/donut-base\\\"\\n)\";\n", + " var nbb_formatted_code = \"donut_processor = transformers.DonutProcessor.from_pretrained(\\n \\\"naver-clova-ix/donut-base\\\"\\n)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -24985,31 +24402,37 @@ } ], "source": [ - "add_unknown_tokens_to_tokenizer(list(TOKEN.__dict__.values()))" - ] - }, - { - "cell_type": "markdown", - "id": "8070590a", - "metadata": {}, - "source": [ - "### Add dataset specific tokens " + "donut_processor = transformers.DonutProcessor.from_pretrained(\n", + " \"naver-clova-ix/donut-base\"\n", + ")" ] }, { "cell_type": "code", - "execution_count": 38, - "id": "fe319b38", - "metadata": {}, + "execution_count": 34, + "id": "5257aba3", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:51.142992Z", + "start_time": "2023-04-18T15:47:40.137637Z" + } + }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Could not find image processor class in the image processor config or the model config. Loading based on pattern matching with the model's feature extractor configuration.\n" + ] + }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 38;\n", - " var nbb_unformatted_code = \"def find_unknown_tokens_for_tokenizer() -> collections.Counter:\\n unknown_tokens_counter = collections.Counter()\\n\\n for annotated_image in tqdm.autonotebook.tqdm(\\n DATA.annotated_images, \\\"Tokenizing train data\\\"\\n ):\\n ground_truth = get_annotation_ground_truth_str(annotated_image.annotation)\\n\\n input_ids = MODEL.tokenizer(ground_truth).input_ids\\n tokens = MODEL.tokenizer.tokenize(ground_truth, add_special_tokens=True)\\n\\n for token_id, token in zip(input_ids, tokens, strict=True):\\n if token_id == MODEL.tokenizer.unk_token_id:\\n unknown_tokens_counter.update([token])\\n\\n return unknown_tokens_counter\";\n", - " var nbb_formatted_code = \"def find_unknown_tokens_for_tokenizer() -> collections.Counter:\\n unknown_tokens_counter = collections.Counter()\\n\\n for annotated_image in tqdm.autonotebook.tqdm(\\n DATA.annotated_images, \\\"Tokenizing train data\\\"\\n ):\\n ground_truth = get_annotation_ground_truth_str(annotated_image.annotation)\\n\\n input_ids = MODEL.tokenizer(ground_truth).input_ids\\n tokens = MODEL.tokenizer.tokenize(ground_truth, add_special_tokens=True)\\n\\n for token_id, token in zip(input_ids, tokens, strict=True):\\n if token_id == MODEL.tokenizer.unk_token_id:\\n unknown_tokens_counter.update([token])\\n\\n return unknown_tokens_counter\";\n", + " var nbb_cell_id = 34;\n", + " var nbb_unformatted_code = \"CONFIG.pretrained_model_name = \\\"naver-clova-ix/donut-base\\\"\\nCONFIG.encoder_decoder_config = transformers.VisionEncoderDecoderConfig.from_pretrained(\\n CONFIG.pretrained_model_name\\n)\\nCONFIG.encoder_decoder_config.encoder.image_size = (\\n CONFIG.image_width,\\n CONFIG.image_height,\\n)\\n\\nMODEL.donut_processor = transformers.DonutProcessor.from_pretrained(\\n CONFIG.pretrained_model_name\\n)\\nMODEL.donut_processor.image_processor.size = dict(\\n width=CONFIG.image_width, height=CONFIG.image_height\\n)\\nMODEL.donut_processor.image_processor.do_align_long_axis = False\\nMODEL.tokenizer = MODEL.donut_processor.tokenizer\\nMODEL.encoder_decoder = transformers.VisionEncoderDecoderModel.from_pretrained(\\n CONFIG.pretrained_model_name, config=CONFIG.encoder_decoder_config\\n)\\n\\nCONFIG.encoder_decoder_config.pad_token_id = MODEL.tokenizer.pad_token_id\\nCONFIG.encoder_decoder_config.decoder_start_token_id = (\\n MODEL.tokenizer.convert_tokens_to_ids(TOKEN.benetech_prompt)\\n)\\nCONFIG.encoder_decoder_config.bos_token_id = (\\n CONFIG.encoder_decoder_config.decoder_start_token_id\\n)\\nCONFIG.encoder_decoder_config.eos_token_id = MODEL.tokenizer.convert_tokens_to_ids(\\n TOKEN.benetech_prompt_end\\n)\\nMODEL.tokenizer.eos_token_id = CONFIG.encoder_decoder_config.eos_token_id\";\n", + " var nbb_formatted_code = \"CONFIG.pretrained_model_name = \\\"naver-clova-ix/donut-base\\\"\\nCONFIG.encoder_decoder_config = transformers.VisionEncoderDecoderConfig.from_pretrained(\\n CONFIG.pretrained_model_name\\n)\\nCONFIG.encoder_decoder_config.encoder.image_size = (\\n CONFIG.image_width,\\n CONFIG.image_height,\\n)\\n\\nMODEL.donut_processor = transformers.DonutProcessor.from_pretrained(\\n CONFIG.pretrained_model_name\\n)\\nMODEL.donut_processor.image_processor.size = dict(\\n width=CONFIG.image_width, height=CONFIG.image_height\\n)\\nMODEL.donut_processor.image_processor.do_align_long_axis = False\\nMODEL.tokenizer = MODEL.donut_processor.tokenizer\\nMODEL.encoder_decoder = transformers.VisionEncoderDecoderModel.from_pretrained(\\n CONFIG.pretrained_model_name, config=CONFIG.encoder_decoder_config\\n)\\n\\nCONFIG.encoder_decoder_config.pad_token_id = MODEL.tokenizer.pad_token_id\\nCONFIG.encoder_decoder_config.decoder_start_token_id = (\\n MODEL.tokenizer.convert_tokens_to_ids(TOKEN.benetech_prompt)\\n)\\nCONFIG.encoder_decoder_config.bos_token_id = (\\n CONFIG.encoder_decoder_config.decoder_start_token_id\\n)\\nCONFIG.encoder_decoder_config.eos_token_id = MODEL.tokenizer.convert_tokens_to_ids(\\n TOKEN.benetech_prompt_end\\n)\\nMODEL.tokenizer.eos_token_id = CONFIG.encoder_decoder_config.eos_token_id\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -25031,59 +24454,167 @@ } ], "source": [ - "def find_unknown_tokens_for_tokenizer() -> collections.Counter:\n", - " unknown_tokens_counter = collections.Counter()\n", + "CONFIG.pretrained_model_name = \"naver-clova-ix/donut-base\"\n", + "CONFIG.encoder_decoder_config = transformers.VisionEncoderDecoderConfig.from_pretrained(\n", + " CONFIG.pretrained_model_name\n", + ")\n", + "CONFIG.encoder_decoder_config.encoder.image_size = (\n", + " CONFIG.image_width,\n", + " CONFIG.image_height,\n", + ")\n", "\n", - " for annotated_image in tqdm.autonotebook.tqdm(\n", - " DATA.annotated_images, \"Tokenizing train data\"\n", - " ):\n", - " ground_truth = get_annotation_ground_truth_str(annotated_image.annotation)\n", + "MODEL.donut_processor = transformers.DonutProcessor.from_pretrained(\n", + " CONFIG.pretrained_model_name\n", + ")\n", + "MODEL.donut_processor.image_processor.size = dict(\n", + " width=CONFIG.image_width, height=CONFIG.image_height\n", + ")\n", + "MODEL.donut_processor.image_processor.do_align_long_axis = False\n", + "MODEL.tokenizer = MODEL.donut_processor.tokenizer\n", + "MODEL.encoder_decoder = transformers.VisionEncoderDecoderModel.from_pretrained(\n", + " CONFIG.pretrained_model_name, config=CONFIG.encoder_decoder_config\n", + ")\n", "\n", - " input_ids = MODEL.tokenizer(ground_truth).input_ids\n", - " tokens = MODEL.tokenizer.tokenize(ground_truth, add_special_tokens=True)\n", - "\n", - " for token_id, token in zip(input_ids, tokens, strict=True):\n", - " if token_id == MODEL.tokenizer.unk_token_id:\n", - " unknown_tokens_counter.update([token])\n", - "\n", - " return unknown_tokens_counter" + "CONFIG.encoder_decoder_config.pad_token_id = MODEL.tokenizer.pad_token_id\n", + "CONFIG.encoder_decoder_config.decoder_start_token_id = (\n", + " MODEL.tokenizer.convert_tokens_to_ids(TOKEN.benetech_prompt)\n", + ")\n", + "CONFIG.encoder_decoder_config.bos_token_id = (\n", + " CONFIG.encoder_decoder_config.decoder_start_token_id\n", + ")\n", + "CONFIG.encoder_decoder_config.eos_token_id = MODEL.tokenizer.convert_tokens_to_ids(\n", + " TOKEN.benetech_prompt_end\n", + ")\n", + "MODEL.tokenizer.eos_token_id = CONFIG.encoder_decoder_config.eos_token_id" ] }, { - "cell_type": "code", - "execution_count": 39, - "id": "91a5cc71", + "cell_type": "markdown", + "id": "d40f590d", "metadata": {}, + "source": [ + "### Add task specific tokens " + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "42516577", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:51.159825Z", + "start_time": "2023-04-18T15:47:51.144998Z" + } + }, "outputs": [ { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "59bf4d12bb8041a4a61562d9d7aa2048", - "version_major": 2, - "version_minor": 0 - }, + "application/javascript": [ + "\n", + " setTimeout(function() {\n", + " var nbb_cell_id = 35;\n", + " var nbb_unformatted_code = \"def add_unknown_tokens_to_tokenizer(unknown_tokens: list[str]):\\n assert set(unknown_tokens) == set(unknown_tokens) - set(\\n MODEL.tokenizer.vocab.keys()\\n ), \\\"Tokens are not unknown.\\\"\\n\\n MODEL.tokenizer.add_tokens(unknown_tokens)\\n MODEL.encoder_decoder.decoder.resize_token_embeddings(len(MODEL.tokenizer))\";\n", + " var nbb_formatted_code = \"def add_unknown_tokens_to_tokenizer(unknown_tokens: list[str]):\\n assert set(unknown_tokens) == set(unknown_tokens) - set(\\n MODEL.tokenizer.vocab.keys()\\n ), \\\"Tokens are not unknown.\\\"\\n\\n MODEL.tokenizer.add_tokens(unknown_tokens)\\n MODEL.encoder_decoder.decoder.resize_token_embeddings(len(MODEL.tokenizer))\";\n", + " var nbb_cells = Jupyter.notebook.get_cells();\n", + " for (var i = 0; i < nbb_cells.length; ++i) {\n", + " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", + " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", + " nbb_cells[i].set_text(nbb_formatted_code);\n", + " }\n", + " break;\n", + " }\n", + " }\n", + " }, 500);\n", + " " + ], "text/plain": [ - "Tokenizing train data: 0%| | 0/1000 [00:00" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "def add_unknown_tokens_to_tokenizer(unknown_tokens: list[str]):\n", + " assert set(unknown_tokens) == set(unknown_tokens) - set(\n", + " MODEL.tokenizer.vocab.keys()\n", + " ), \"Tokens are not unknown.\"\n", + "\n", + " MODEL.tokenizer.add_tokens(unknown_tokens)\n", + " MODEL.encoder_decoder.decoder.resize_token_embeddings(len(MODEL.tokenizer))" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "81a93859", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:52.651571Z", + "start_time": "2023-04-18T15:47:51.162085Z" + } + }, + "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Counter({'1': 4})\n" - ] - }, + "data": { + "application/javascript": [ + "\n", + " setTimeout(function() {\n", + " var nbb_cell_id = 36;\n", + " var nbb_unformatted_code = \"add_unknown_tokens_to_tokenizer(list(TOKEN.__dict__.values()))\";\n", + " var nbb_formatted_code = \"add_unknown_tokens_to_tokenizer(list(TOKEN.__dict__.values()))\";\n", + " var nbb_cells = Jupyter.notebook.get_cells();\n", + " for (var i = 0; i < nbb_cells.length; ++i) {\n", + " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", + " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", + " nbb_cells[i].set_text(nbb_formatted_code);\n", + " }\n", + " break;\n", + " }\n", + " }\n", + " }, 500);\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "add_unknown_tokens_to_tokenizer(list(TOKEN.__dict__.values()))" + ] + }, + { + "cell_type": "markdown", + "id": "8070590a", + "metadata": {}, + "source": [ + "### Add dataset specific tokens " + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "fe319b38", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:52.681837Z", + "start_time": "2023-04-18T15:47:52.654564Z" + } + }, + "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 39;\n", - " var nbb_unformatted_code = \"if DEBUG:\\n print(find_unknown_tokens_for_tokenizer())\";\n", - " var nbb_formatted_code = \"if DEBUG:\\n print(find_unknown_tokens_for_tokenizer())\";\n", + " var nbb_cell_id = 37;\n", + " var nbb_unformatted_code = \"def find_unknown_tokens_for_tokenizer() -> collections.Counter:\\n unknown_tokens_counter = collections.Counter()\\n\\n for annotated_image in generate_annotated_images():\\n ground_truth = get_annotation_ground_truth_str(annotated_image.annotation)\\n\\n input_ids = MODEL.tokenizer(ground_truth).input_ids\\n tokens = MODEL.tokenizer.tokenize(ground_truth, add_special_tokens=True)\\n\\n for token_id, token in zip(input_ids, tokens, strict=True):\\n if token_id == MODEL.tokenizer.unk_token_id:\\n unknown_tokens_counter.update([token])\\n\\n return unknown_tokens_counter\";\n", + " var nbb_formatted_code = \"def find_unknown_tokens_for_tokenizer() -> collections.Counter:\\n unknown_tokens_counter = collections.Counter()\\n\\n for annotated_image in generate_annotated_images():\\n ground_truth = get_annotation_ground_truth_str(annotated_image.annotation)\\n\\n input_ids = MODEL.tokenizer(ground_truth).input_ids\\n tokens = MODEL.tokenizer.tokenize(ground_truth, add_special_tokens=True)\\n\\n for token_id, token in zip(input_ids, tokens, strict=True):\\n if token_id == MODEL.tokenizer.unk_token_id:\\n unknown_tokens_counter.update([token])\\n\\n return unknown_tokens_counter\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -25105,38 +24636,85 @@ } ], "source": [ - "if DEBUG:\n", - " print(find_unknown_tokens_for_tokenizer())" + "def find_unknown_tokens_for_tokenizer() -> collections.Counter:\n", + " unknown_tokens_counter = collections.Counter()\n", + "\n", + " for annotated_image in generate_annotated_images():\n", + " ground_truth = get_annotation_ground_truth_str(annotated_image.annotation)\n", + "\n", + " input_ids = MODEL.tokenizer(ground_truth).input_ids\n", + " tokens = MODEL.tokenizer.tokenize(ground_truth, add_special_tokens=True)\n", + "\n", + " for token_id, token in zip(input_ids, tokens, strict=True):\n", + " if token_id == MODEL.tokenizer.unk_token_id:\n", + " unknown_tokens_counter.update([token])\n", + "\n", + " return unknown_tokens_counter" ] }, { "cell_type": "code", - "execution_count": 40, - "id": "72227777", - "metadata": {}, + "execution_count": 38, + "id": "91a5cc71", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:52.708844Z", + "start_time": "2023-04-18T15:47:52.687009Z" + } + }, "outputs": [ { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "09564ed83a8142979f1cebcb921eddda", - "version_major": 2, - "version_minor": 0 - }, + "application/javascript": [ + "\n", + " setTimeout(function() {\n", + " var nbb_cell_id = 38;\n", + " var nbb_unformatted_code = \"if DEBUG:\\n print(find_unknown_tokens_for_tokenizer())\";\n", + " var nbb_formatted_code = \"if DEBUG:\\n print(find_unknown_tokens_for_tokenizer())\";\n", + " var nbb_cells = Jupyter.notebook.get_cells();\n", + " for (var i = 0; i < nbb_cells.length; ++i) {\n", + " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", + " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", + " nbb_cells[i].set_text(nbb_formatted_code);\n", + " }\n", + " break;\n", + " }\n", + " }\n", + " }, 500);\n", + " " + ], "text/plain": [ - "Tokenizing train data: 0%| | 0/1000 [00:00" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "if DEBUG:\n", + " print(find_unknown_tokens_for_tokenizer())" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "02efe707", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:52.806582Z", + "start_time": "2023-04-18T15:47:52.714235Z" + } + }, + "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 40;\n", - " var nbb_unformatted_code = \"add_unknown_tokens_to_tokenizer(list(find_unknown_tokens_for_tokenizer().keys()))\";\n", - " var nbb_formatted_code = \"add_unknown_tokens_to_tokenizer(list(find_unknown_tokens_for_tokenizer().keys()))\";\n", + " var nbb_cell_id = 39;\n", + " var nbb_unformatted_code = \"CONFIG.unknown_tokens_for_tokenizer_path = \\\"unknown_tokens_for_tokenizer.pickle\\\"\\n\\nif not os.path.exists(CONFIG.unknown_tokens_for_tokenizer_path):\\n pickle.dump(\\n list(find_unknown_tokens_for_tokenizer().keys()),\\n open(CONFIG.unknown_tokens_for_tokenizer_path, \\\"wb\\\"),\\n )\\n\\nadd_unknown_tokens_to_tokenizer(\\n pickle.load(open(CONFIG.unknown_tokens_for_tokenizer_path, \\\"rb\\\"))\\n)\";\n", + " var nbb_formatted_code = \"CONFIG.unknown_tokens_for_tokenizer_path = \\\"unknown_tokens_for_tokenizer.pickle\\\"\\n\\nif not os.path.exists(CONFIG.unknown_tokens_for_tokenizer_path):\\n pickle.dump(\\n list(find_unknown_tokens_for_tokenizer().keys()),\\n open(CONFIG.unknown_tokens_for_tokenizer_path, \\\"wb\\\"),\\n )\\n\\nadd_unknown_tokens_to_tokenizer(\\n pickle.load(open(CONFIG.unknown_tokens_for_tokenizer_path, \\\"rb\\\"))\\n)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -25158,21 +24736,33 @@ } ], "source": [ - "add_unknown_tokens_to_tokenizer(list(find_unknown_tokens_for_tokenizer().keys()))" + "CONFIG.unknown_tokens_for_tokenizer_path = \"data/unknown_tokens_for_tokenizer.pickle\"\n", + "\n", + "add_unknown_tokens_to_tokenizer(\n", + " load_pickle_or_build_object_and_save(\n", + " CONFIG.unknown_tokens_for_tokenizer_path,\n", + " lambda :list(find_unknown_tokens_for_tokenizer().keys())\n", + " )\n", + ")" ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 40, "id": "2fa909a1", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:52.827973Z", + "start_time": "2023-04-18T15:47:52.817963Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 41;\n", + " var nbb_cell_id = 40;\n", " var nbb_unformatted_code = \"def compute_target_tokens_length_distribution():\\n token_lenghts = []\\n for data_item in tqdm.autonotebook.tqdm(\\n DATA.complete_dataset, desc=\\\"Encoding target strings\\\"\\n ):\\n encoding = MODEL.tokenizer(data_item.target_string)\\n token_lenghts.append(len(encoding.input_ids))\\n return token_lenghts\\n\\n\\ndef visualize_target_tokens_length_distribution():\\n token_lenghts = compute_target_tokens_length_distribution()\\n plt.hist(token_lenghts, bins=50)\\n plt.title(\\\"Token length\\\")\\n series = pd.Series(token_lenghts, name=\\\"Token length\\\").to_frame().describe()\\n IPython.display.display(series)\";\n", " var nbb_formatted_code = \"def compute_target_tokens_length_distribution():\\n token_lenghts = []\\n for data_item in tqdm.autonotebook.tqdm(\\n DATA.complete_dataset, desc=\\\"Encoding target strings\\\"\\n ):\\n encoding = MODEL.tokenizer(data_item.target_string)\\n token_lenghts.append(len(encoding.input_ids))\\n return token_lenghts\\n\\n\\ndef visualize_target_tokens_length_distribution():\\n token_lenghts = compute_target_tokens_length_distribution()\\n plt.hist(token_lenghts, bins=50)\\n plt.title(\\\"Token length\\\")\\n series = pd.Series(token_lenghts, name=\\\"Token length\\\").to_frame().describe()\\n IPython.display.display(series)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", @@ -25216,118 +24806,67 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 41, "id": "76eb6a64", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:52.870437Z", + "start_time": "2023-04-18T15:47:52.837124Z" + } + }, "outputs": [ { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "745c122bed8842eabeab4c427682656e", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Encoding target strings: 0%| | 0/1000 [00:00\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Token length
count1000.000000
mean175.588000
std104.350886
min51.000000
25%122.000000
50%143.000000
75%185.250000
max1201.000000
\n", - "" + " setTimeout(function() {\n", + " var nbb_cell_id = 41;\n", + " var nbb_unformatted_code = \"if DEBUG:\\n visualize_target_tokens_length_distribution()\";\n", + " var nbb_formatted_code = \"if DEBUG:\\n visualize_target_tokens_length_distribution()\";\n", + " var nbb_cells = Jupyter.notebook.get_cells();\n", + " for (var i = 0; i < nbb_cells.length; ++i) {\n", + " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", + " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", + " nbb_cells[i].set_text(nbb_formatted_code);\n", + " }\n", + " break;\n", + " }\n", + " }\n", + " }, 500);\n", + " " ], "text/plain": [ - " Token length\n", - "count 1000.000000\n", - "mean 175.588000\n", - "std 104.350886\n", - "min 51.000000\n", - "25% 122.000000\n", - "50% 143.000000\n", - "75% 185.250000\n", - "max 1201.000000" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGzCAYAAAAFROyYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAs2klEQVR4nO3de3SU1aH//08uZLjOxADJEEkAQQUElAYNU1Cp5BAuRalwLBQxWA4saGLFoCItolIliB6p12B7zhG1IspaghW5GMJNariIoICAoGgoMImKyQBCCMn+/eGX5+cYbolJZie8X2s9azF773mevXeG5LP2c5kwY4wRAACARcJD3QEAAICfIqAAAADrEFAAAIB1CCgAAMA6BBQAAGAdAgoAALAOAQUAAFiHgAIAAKxDQAEAANYhoABwhIWFKSMjI9TdkCT16dNHffr0CXU3zuvhhx9WWFiYvvnmm1B3BahXCChAHRcWFnZB2+rVq0Pd1TptxowZWrRoUai7AVw0IkPdAQA/z6uvvhr0+pVXXlFOTk6F8k6dOtVmt+qdGTNmaNiwYRoyZEiouwJcFAgoQB13++23B71ev369cnJyKpQDQF3CKR7gInDs2DFNmjRJCQkJcrlcuvLKK/Xkk0/qQr7M/NFHH1V4eLieffZZp2zp0qW6/vrr1aRJEzVr1kyDBg3Sjh07gt43evRoNW3aVAcOHNCQIUPUtGlTtWzZUvfee6/KysqqNI6SkhI99NBD6tChg1wulxISEnT//ferpKQkqN3pa2kWLVqkLl26yOVy6aqrrtKyZcsq7HP16tXq0aOHGjZsqPbt2+vFF190riv58f6OHTuml19+2TllNnr06KD9FBUVafTo0YqOjpbH49Gdd96p77//vkrjBMAKClDvGWN08803a9WqVRozZoyuueYaLV++XPfdd58OHDig2bNnn/W9U6dO1YwZM/Tiiy9q7Nixkn44pZSWlqbU1FQ9/vjj+v7775Wdna3evXtry5Ytatu2rfP+srIypaamKjk5WU8++aRWrFih//7v/1b79u01YcKESo2jvLxcN998s9atW6dx48apU6dO2rZtm2bPnq3PPvuswvUh69at01tvvaU//OEPatasmZ555hkNHTpU+fn5at68uSRpy5Yt6t+/v1q1aqVHHnlEZWVlmj59ulq2bBm0r1dffVX/9V//peuuu07jxo2TJLVv3z6ozW233aZ27dopKytLH330kf7nf/5HsbGxevzxxys1TgD/jwFQr6Snp5sf/9detGiRkWQeffTRoHbDhg0zYWFhZu/evU6ZJJOenm6MMWbSpEkmPDzczJ0716k/cuSIiY6ONmPHjg3al9/vNx6PJ6g8LS3NSDLTp08Patu9e3eTlJR03nHceOON5sYbb3Rev/rqqyY8PNy8//77Qe3mzJljJJl//etfQeOIiooKGtvHH39sJJlnn33WKRs8eLBp3LixOXDggFO2Z88eExkZaX7667FJkyYmLS2tQj8feughI8n8/ve/Dyr/zW9+Y5o3b37ecQI4M07xAPXckiVLFBERoT/+8Y9B5ZMmTZIxRkuXLg0qN8YoIyNDTz/9tP7xj38oLS3NqcvJyVFRUZFGjBihb775xtkiIiKUnJysVatWVTj++PHjg15ff/31+uKLLyo9jgULFqhTp07q2LFj0LFvuukmSapw7JSUlKBVjm7dusntdjvHLisr04oVKzRkyBDFx8c77Tp06KABAwZUun9nGue3336rQCBQ6X0B4BQPUO999dVXio+PV7NmzYLKT9/V89VXXwWVv/LKKzp69Kiys7M1YsSIoLo9e/ZIkhMKfsrtdge9btiwYYXTJZdccom+++67So9jz5492rlzZ4X9nVZYWBj0OjExsUKbHx+7sLBQx48fV4cOHSq0O1PZ+fz0eJdccokk6bvvvqswLwDOj4ACIEivXr20detWPffcc7rtttsUExPj1JWXl0v64ZoMr9db4b2RkcG/UiIiIqqtX+Xl5erataueeuqpM9YnJCRc0LHNBVwYXBW1fTygviOgAPVcmzZttGLFCh05ciRoFWXXrl1O/Y916NBBs2bNUp8+fdS/f3/l5uY67zt9yiQ2NlYpKSm1NAI5x/7444/Vt2/foDtsqio2NlYNGzbU3r17K9Sdqaw6jgngwnENClDPDRw4UGVlZXruueeCymfPnq2wsLAzXm/RrVs3LVmyRDt37tTgwYN1/PhxSVJqaqrcbrdmzJih0tLSCu/7+uuva2YQ+uEumQMHDujvf/97hbrjx4/r2LFjldpfRESEUlJStGjRIh08eNAp37t3b4XrciSpSZMmKioqqnS/AVQNKyhAPTd48GD96le/0p///Gd9+eWXuvrqq/Xee+/p7bff1sSJEyvcLntaz5499fbbb2vgwIEaNmyYFi1aJLfbrezsbI0aNUq/+MUvNHz4cLVs2VL5+fl699131atXrwpBqLqMGjVKb775psaPH69Vq1apV69eKisr065du/Tmm29q+fLl6tGjR6X2+fDDD+u9995Tr169NGHCBCfIdenSRVu3bg1qm5SUpBUrVuipp55SfHy82rVrp+Tk5GocIYAfI6AA9Vx4eLj++c9/atq0aXrjjTf00ksvqW3btnriiSc0adKkc773pptu0ptvvqmhQ4dq1KhRmjdvnn73u98pPj5eM2fO1BNPPKGSkhJdeumluv7663XnnXfW6DgWLVqk2bNn65VXXtHChQvVuHFjXXbZZbr77rt1xRVXVHqfSUlJWrp0qe699149+OCDSkhI0PTp07Vz507nFNhpTz31lMaNG6epU6fq+PHjSktLI6AANSjMcAUXAAQZMmSIduzY4dy1BKD2cQ0KgIva6etrTtuzZ4+WLFmiPn36hKZDACSxggLgIteqVSuNHj1al112mb766itlZ2erpKREW7Zs0eWXXx7q7gEXLa5BAXBR69+/v15//XX5/X65XC75fD7NmDGDcAKEGCsoAADAOlyDAgAArENAAQAA1qmT16CUl5fr4MGDatasGY+fBgCgjjDG6MiRI4qPj1d4+LnXSOpkQDl48GCFLwYDAAB1w/79+9W6detztqlUQMnOzlZ2dra+/PJLSdJVV12ladOmOd/lceLECU2aNEnz589XSUmJUlNT9cILLyguLs7ZR35+viZMmKBVq1apadOmSktLU1ZWVoVvQT2X019ctn//fr7GHACAOiIQCCghISHoi0vPplIBpXXr1po5c6Yuv/xyGWP08ssv65ZbbtGWLVt01VVX6Z577tG7776rBQsWyOPxKCMjQ7feeqv+9a9/SZLKyso0aNAgeb1effDBBzp06JDuuOMONWjQQDNmzLjgfpw+reN2uwkoAADUMRdyecbPvs04JiZGTzzxhIYNG6aWLVtq3rx5GjZsmKQfvs69U6dOysvLU8+ePbV06VL9+te/1sGDB51VlTlz5mjy5Mn6+uuvFRUVdUHHDAQC8ng8Ki4uJqAAAFBHVObvd5Xv4ikrK9P8+fN17Ngx+Xw+bd68WaWlpUpJSXHadOzYUYmJicrLy5Mk5eXlqWvXrkGnfFJTUxUIBLRjx46zHqukpESBQCBo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", - "text/plain": [ - "
" + "" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "if DEBUG:\n", + " visualize_target_tokens_length_distribution()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "b8a7f491", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:52.886816Z", + "start_time": "2023-04-18T15:47:52.873931Z" + } + }, + "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 42;\n", - " var nbb_unformatted_code = \"if DEBUG:\\n visualize_target_tokens_length_distribution()\";\n", - " var nbb_formatted_code = \"if DEBUG:\\n visualize_target_tokens_length_distribution()\";\n", + " var nbb_unformatted_code = \"CONFIG.encoder_decoder_config.decoder.max_length = 512\";\n", + " var nbb_formatted_code = \"CONFIG.encoder_decoder_config.decoder.max_length = 512\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -25349,15 +24888,27 @@ } ], "source": [ - "if DEBUG:\n", - " visualize_target_tokens_length_distribution()" + "CONFIG.encoder_decoder_config.decoder.max_length = 512" + ] + }, + { + "cell_type": "markdown", + "id": "c688a4a9", + "metadata": {}, + "source": [ + "### Predicting " ] }, { "cell_type": "code", "execution_count": 43, - "id": "b8a7f491", - "metadata": {}, + "id": "36672135", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:52.919334Z", + "start_time": "2023-04-18T15:47:52.888629Z" + } + }, "outputs": [ { "data": { @@ -25365,8 +24916,8 @@ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 43;\n", - " var nbb_unformatted_code = \"CONFIG.encoder_decoder_config.decoder.max_length = 512\";\n", - " var nbb_formatted_code = \"CONFIG.encoder_decoder_config.decoder.max_length = 512\";\n", + " var nbb_unformatted_code = \"def generate_token_strings(images: torch.Tensor, skip_special_tokens=True) -> list[str]:\\n decoder_output = MODEL.encoder_decoder.generate(\\n images,\\n max_length=10 if DEBUG else CONFIG.encoder_decoder_config.decoder.max_length,\\n eos_token_id=MODEL.tokenizer.eos_token_id,\\n return_dict_in_generate=True,\\n )\\n return MODEL.tokenizer.batch_decode(\\n decoder_output.sequences, skip_special_tokens=skip_special_tokens\\n )\\n\\n\\ndef predict_string(image) -> str:\\n image = MODEL.donut_processor(\\n image, random_padding=False, return_tensors=\\\"pt\\\"\\n ).pixel_values\\n string = generate_token_strings(image)[0]\\n return string\\n\\n\\ndef predict_benetech_output(image):\\n string = predict_string(image)\\n assert BenetechOutput.does_string_match_expected_pattern(string)\\n return BenetechOutput.from_string(string)\";\n", + " var nbb_formatted_code = \"def generate_token_strings(images: torch.Tensor, skip_special_tokens=True) -> list[str]:\\n decoder_output = MODEL.encoder_decoder.generate(\\n images,\\n max_length=10 if DEBUG else CONFIG.encoder_decoder_config.decoder.max_length,\\n eos_token_id=MODEL.tokenizer.eos_token_id,\\n return_dict_in_generate=True,\\n )\\n return MODEL.tokenizer.batch_decode(\\n decoder_output.sequences, skip_special_tokens=skip_special_tokens\\n )\\n\\n\\ndef predict_string(image) -> str:\\n image = MODEL.donut_processor(\\n image, random_padding=False, return_tensors=\\\"pt\\\"\\n ).pixel_values\\n string = generate_token_strings(image)[0]\\n return string\\n\\n\\ndef predict_benetech_output(image):\\n string = predict_string(image)\\n assert BenetechOutput.does_string_match_expected_pattern(string)\\n return BenetechOutput.from_string(string)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -25388,7 +24939,30 @@ } ], "source": [ - "CONFIG.encoder_decoder_config.decoder.max_length = 512" + "def generate_token_strings(images: torch.Tensor, skip_special_tokens=True) -> list[str]:\n", + " decoder_output = MODEL.encoder_decoder.generate(\n", + " images,\n", + " max_length=10 if DEBUG else CONFIG.encoder_decoder_config.decoder.max_length,\n", + " eos_token_id=MODEL.tokenizer.eos_token_id,\n", + " return_dict_in_generate=True,\n", + " )\n", + " return MODEL.tokenizer.batch_decode(\n", + " decoder_output.sequences, skip_special_tokens=skip_special_tokens\n", + " )\n", + "\n", + "\n", + "def predict_string(image) -> str:\n", + " image = MODEL.donut_processor(\n", + " image, random_padding=False, return_tensors=\"pt\"\n", + " ).pixel_values\n", + " string = generate_token_strings(image)[0]\n", + " return string\n", + "\n", + "\n", + "def predict_benetech_output(image):\n", + " string = predict_string(image)\n", + " assert BenetechOutput.does_string_match_expected_pattern(string)\n", + " return BenetechOutput.from_string(string)" ] }, { @@ -25403,7 +24977,12 @@ "cell_type": "code", "execution_count": 44, "id": "8637a86a", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:52.982298Z", + "start_time": "2023-04-18T15:47:52.921598Z" + } + }, "outputs": [ { "data": { @@ -25411,8 +24990,8 @@ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 44;\n", - " var nbb_unformatted_code = \"@dataclasses.dataclass\\nclass Batch:\\n images: torch.FloatTensor\\n labels: torch.IntTensor\\n data_indices: list[int]\\n\\n def __post_init__(self):\\n if DEBUG:\\n images_shape = einops.parse_shape(self.images, \\\"batch channel height width\\\")\\n labels_shape = einops.parse_shape(self.labels, \\\"batch label\\\")\\n assert images_shape[\\\"batch\\\"] == labels_shape[\\\"batch\\\"]\\n assert len(self.data_indices) == images_shape[\\\"batch\\\"]\\n\\n\\ndef replace_pad_token_id_with_negative_hundred_for_hf_transformers_automatic_batch_transformation(\\n token_ids,\\n):\\n token_ids[token_ids == MODEL.tokenizer.pad_token_id] = -100\\n return token_ids\\n\\n\\ndef collate_function(batch: list[DataItem], split: Literal[\\\"train\\\", \\\"val\\\"]) -> Batch:\\n images = [di.image for di in batch]\\n images = MODEL.donut_processor(\\n images, random_padding=split == \\\"train\\\", return_tensors=\\\"pt\\\"\\n ).pixel_values\\n\\n target_token_ids = MODEL.tokenizer(\\n [di.target_string for di in batch],\\n add_special_tokens=False,\\n max_length=CONFIG.encoder_decoder_config.decoder.max_length,\\n padding=\\\"max_length\\\",\\n truncation=True,\\n return_tensors=\\\"pt\\\",\\n ).input_ids\\n labels = replace_pad_token_id_with_negative_hundred_for_hf_transformers_automatic_batch_transformation(\\n target_token_ids\\n )\\n\\n data_indices = [di.data_index for di in batch]\\n\\n return Batch(images=images, labels=labels, data_indices=data_indices)\\n\\n\\nCONFIG.batch_size = 2 if DEBUG else 32\\nCONFIG.num_workers = 4\\n\\n\\ndef build_dataloader(split: Literal[\\\"train\\\", \\\"val\\\"]):\\n return torch.utils.data.DataLoader(\\n DATA.train_dataset if split == \\\"train\\\" else DATA.val_dataset,\\n batch_size=CONFIG.batch_size,\\n shuffle=split == \\\"train\\\",\\n num_workers=CONFIG.num_workers,\\n collate_fn=functools.partial(collate_function, split=split),\\n )\\n\\n\\nDATA.train_dataloader = build_dataloader(\\\"train\\\")\\nDATA.val_dataloader = build_dataloader(\\\"val\\\")\";\n", - " var nbb_formatted_code = \"@dataclasses.dataclass\\nclass Batch:\\n images: torch.FloatTensor\\n labels: torch.IntTensor\\n data_indices: list[int]\\n\\n def __post_init__(self):\\n if DEBUG:\\n images_shape = einops.parse_shape(self.images, \\\"batch channel height width\\\")\\n labels_shape = einops.parse_shape(self.labels, \\\"batch label\\\")\\n assert images_shape[\\\"batch\\\"] == labels_shape[\\\"batch\\\"]\\n assert len(self.data_indices) == images_shape[\\\"batch\\\"]\\n\\n\\ndef replace_pad_token_id_with_negative_hundred_for_hf_transformers_automatic_batch_transformation(\\n token_ids,\\n):\\n token_ids[token_ids == MODEL.tokenizer.pad_token_id] = -100\\n return token_ids\\n\\n\\ndef collate_function(batch: list[DataItem], split: Literal[\\\"train\\\", \\\"val\\\"]) -> Batch:\\n images = [di.image for di in batch]\\n images = MODEL.donut_processor(\\n images, random_padding=split == \\\"train\\\", return_tensors=\\\"pt\\\"\\n ).pixel_values\\n\\n target_token_ids = MODEL.tokenizer(\\n [di.target_string for di in batch],\\n add_special_tokens=False,\\n max_length=CONFIG.encoder_decoder_config.decoder.max_length,\\n padding=\\\"max_length\\\",\\n truncation=True,\\n return_tensors=\\\"pt\\\",\\n ).input_ids\\n labels = replace_pad_token_id_with_negative_hundred_for_hf_transformers_automatic_batch_transformation(\\n target_token_ids\\n )\\n\\n data_indices = [di.data_index for di in batch]\\n\\n return Batch(images=images, labels=labels, data_indices=data_indices)\\n\\n\\nCONFIG.batch_size = 2 if DEBUG else 32\\nCONFIG.num_workers = 4\\n\\n\\ndef build_dataloader(split: Literal[\\\"train\\\", \\\"val\\\"]):\\n return torch.utils.data.DataLoader(\\n DATA.train_dataset if split == \\\"train\\\" else DATA.val_dataset,\\n batch_size=CONFIG.batch_size,\\n shuffle=split == \\\"train\\\",\\n num_workers=CONFIG.num_workers,\\n collate_fn=functools.partial(collate_function, split=split),\\n )\\n\\n\\nDATA.train_dataloader = build_dataloader(\\\"train\\\")\\nDATA.val_dataloader = build_dataloader(\\\"val\\\")\";\n", + " var nbb_unformatted_code = \"@dataclasses.dataclass\\nclass Batch:\\n images: torch.FloatTensor\\n labels: torch.IntTensor\\n data_indices: list[int]\\n\\n def __post_init__(self):\\n if DEBUG:\\n images_shape = einops.parse_shape(self.images, \\\"batch channel height width\\\")\\n labels_shape = einops.parse_shape(self.labels, \\\"batch label\\\")\\n assert images_shape[\\\"batch\\\"] == labels_shape[\\\"batch\\\"]\\n assert len(self.data_indices) == images_shape[\\\"batch\\\"]\\n\\n\\ndef replace_pad_token_id_with_negative_hundred_for_hf_transformers_automatic_batch_transformation(\\n token_ids,\\n):\\n token_ids[token_ids == MODEL.tokenizer.pad_token_id] = -100\\n return token_ids\\n\\n\\ndef collate_function(batch: list[DataItem], split: Literal[\\\"train\\\", \\\"val\\\"]) -> Batch:\\n images = [di.image for di in batch]\\n images = MODEL.donut_processor(\\n images, random_padding=split == \\\"train\\\", return_tensors=\\\"pt\\\"\\n ).pixel_values\\n\\n target_token_ids = MODEL.tokenizer(\\n [di.target_string for di in batch],\\n add_special_tokens=False,\\n max_length=CONFIG.encoder_decoder_config.decoder.max_length,\\n padding=\\\"max_length\\\",\\n truncation=True,\\n return_tensors=\\\"pt\\\",\\n ).input_ids\\n labels = replace_pad_token_id_with_negative_hundred_for_hf_transformers_automatic_batch_transformation(\\n target_token_ids\\n )\\n\\n data_indices = [di.data_index for di in batch]\\n\\n return Batch(images=images, labels=labels, data_indices=data_indices)\\n\\n\\nCONFIG.batch_size = 2 if DEBUG else 2\\nCONFIG.num_workers = 4\\n\\n\\ndef build_dataloader(split: Literal[\\\"train\\\", \\\"val\\\"]):\\n return torch.utils.data.DataLoader(\\n DATA.train_dataset if split == \\\"train\\\" else DATA.val_dataset,\\n batch_size=CONFIG.batch_size,\\n shuffle=split == \\\"train\\\",\\n num_workers=CONFIG.num_workers,\\n collate_fn=functools.partial(collate_function, split=split),\\n )\\n\\n\\nDATA.train_dataloader = build_dataloader(\\\"train\\\")\\nDATA.val_dataloader = build_dataloader(\\\"val\\\")\";\n", + " var nbb_formatted_code = \"@dataclasses.dataclass\\nclass Batch:\\n images: torch.FloatTensor\\n labels: torch.IntTensor\\n data_indices: list[int]\\n\\n def __post_init__(self):\\n if DEBUG:\\n images_shape = einops.parse_shape(self.images, \\\"batch channel height width\\\")\\n labels_shape = einops.parse_shape(self.labels, \\\"batch label\\\")\\n assert images_shape[\\\"batch\\\"] == labels_shape[\\\"batch\\\"]\\n assert len(self.data_indices) == images_shape[\\\"batch\\\"]\\n\\n\\ndef replace_pad_token_id_with_negative_hundred_for_hf_transformers_automatic_batch_transformation(\\n token_ids,\\n):\\n token_ids[token_ids == MODEL.tokenizer.pad_token_id] = -100\\n return token_ids\\n\\n\\ndef collate_function(batch: list[DataItem], split: Literal[\\\"train\\\", \\\"val\\\"]) -> Batch:\\n images = [di.image for di in batch]\\n images = MODEL.donut_processor(\\n images, random_padding=split == \\\"train\\\", return_tensors=\\\"pt\\\"\\n ).pixel_values\\n\\n target_token_ids = MODEL.tokenizer(\\n [di.target_string for di in batch],\\n add_special_tokens=False,\\n max_length=CONFIG.encoder_decoder_config.decoder.max_length,\\n padding=\\\"max_length\\\",\\n truncation=True,\\n return_tensors=\\\"pt\\\",\\n ).input_ids\\n labels = replace_pad_token_id_with_negative_hundred_for_hf_transformers_automatic_batch_transformation(\\n target_token_ids\\n )\\n\\n data_indices = [di.data_index for di in batch]\\n\\n return Batch(images=images, labels=labels, data_indices=data_indices)\\n\\n\\nCONFIG.batch_size = 2 if DEBUG else 2\\nCONFIG.num_workers = 4\\n\\n\\ndef build_dataloader(split: Literal[\\\"train\\\", \\\"val\\\"]):\\n return torch.utils.data.DataLoader(\\n DATA.train_dataset if split == \\\"train\\\" else DATA.val_dataset,\\n batch_size=CONFIG.batch_size,\\n shuffle=split == \\\"train\\\",\\n num_workers=CONFIG.num_workers,\\n collate_fn=functools.partial(collate_function, split=split),\\n )\\n\\n\\nDATA.train_dataloader = build_dataloader(\\\"train\\\")\\nDATA.val_dataloader = build_dataloader(\\\"val\\\")\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -25478,7 +25057,7 @@ " return Batch(images=images, labels=labels, data_indices=data_indices)\n", "\n", "\n", - "CONFIG.batch_size = 2 if DEBUG else 32\n", + "CONFIG.batch_size = 2 if DEBUG else 2\n", "CONFIG.num_workers = 4\n", "\n", "\n", @@ -25500,7 +25079,12 @@ "cell_type": "code", "execution_count": 45, "id": "bf389ff2", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:53.034897Z", + "start_time": "2023-04-18T15:47:52.984707Z" + } + }, "outputs": [ { "data": { @@ -25546,36 +25130,13 @@ "cell_type": "code", "execution_count": 46, "id": "0eb3fed2", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:53.076744Z", + "start_time": "2023-04-18T15:47:53.037941Z" + } + }, "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "78c165d1e7044dd98d18e2fd0c7566d7", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Iterating over val dataloader: 0%| | 0/50 [00:00" + "### Callbacks " ] }, { "cell_type": "code", "execution_count": 48, - "id": "a04524e0", - "metadata": {}, + "id": "441e54bb", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:53.157826Z", + "start_time": "2023-04-18T15:47:53.125547Z" + } + }, "outputs": [ { "data": { @@ -25699,8 +25270,8 @@ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 48;\n", - " var nbb_unformatted_code = \"def generate_token_strings(images: torch.Tensor, skip_special_tokens=True) -> list[str]:\\n decoder_output = MODEL.encoder_decoder.generate(\\n images,\\n max_length=10 if DEBUG else CONFIG.encoder_decoder_config.decoder.max_length,\\n return_dict_in_generate=True,\\n )\\n return MODEL.tokenizer.batch_decode(\\n decoder_output.sequences, skip_special_tokens=skip_special_tokens\\n )\\n\\n\\nclass MetricsCallback(pl.callbacks.Callback):\\n def on_validation_batch_start(\\n self, trainer, pl_module, batch: Batch, batch_idx, dataloader_idx=0\\n ):\\n annotated_images = [DATA.annotated_images[i] for i in batch.data_indices]\\n ground_truth_strings = [\\n get_annotation_ground_truth_str(ai.annotation) for ai in annotated_images\\n ]\\n predicted_strings = generate_token_strings(batch.images)\\n\\n strings_dataframe = pd.DataFrame(\\n dict(ground_truth=ground_truth_strings, predicted=predicted_strings)\\n )\\n wandb.log(dict(strings=wandb.Table(dataframe=strings_dataframe)))\";\n", - " var nbb_formatted_code = \"def generate_token_strings(images: torch.Tensor, skip_special_tokens=True) -> list[str]:\\n decoder_output = MODEL.encoder_decoder.generate(\\n images,\\n max_length=10 if DEBUG else CONFIG.encoder_decoder_config.decoder.max_length,\\n return_dict_in_generate=True,\\n )\\n return MODEL.tokenizer.batch_decode(\\n decoder_output.sequences, skip_special_tokens=skip_special_tokens\\n )\\n\\n\\nclass MetricsCallback(pl.callbacks.Callback):\\n def on_validation_batch_start(\\n self, trainer, pl_module, batch: Batch, batch_idx, dataloader_idx=0\\n ):\\n annotated_images = [DATA.annotated_images[i] for i in batch.data_indices]\\n ground_truth_strings = [\\n get_annotation_ground_truth_str(ai.annotation) for ai in annotated_images\\n ]\\n predicted_strings = generate_token_strings(batch.images)\\n\\n strings_dataframe = pd.DataFrame(\\n dict(ground_truth=ground_truth_strings, predicted=predicted_strings)\\n )\\n wandb.log(dict(strings=wandb.Table(dataframe=strings_dataframe)))\";\n", + " var nbb_unformatted_code = \"class MetricsCallback(pl.callbacks.Callback):\\n def on_validation_batch_start(\\n self, trainer, pl_module, batch: Batch, batch_idx, dataloader_idx=0\\n ):\\n predicted_strings = generate_token_strings(images=batch.images)\\n\\n for expected_data_index, predicted_string in zip(\\n batch.data_indices, predicted_strings, strict=True\\n ):\\n benetech_score = benetech_score_string_prediction(\\n expected_data_index=expected_data_index,\\n predicted_string=predicted_string,\\n )\\n wandb.log(dict(benetech_score=benetech_score))\\n\\n ground_truth_strings = [\\n get_annotation_ground_truth_str_from_image_index(i)\\n for i in batch.data_indices\\n ]\\n string_ids = [load_train_image_ids()[i] for i in batch.data_indices]\\n strings_dataframe = pd.DataFrame(\\n dict(\\n string_ids=string_ids,\\n ground_truth=ground_truth_strings,\\n predicted=predicted_strings,\\n )\\n )\\n wandb.log(dict(strings=wandb.Table(dataframe=strings_dataframe)))\\n\\n\\nclass TransformersCheckpointIO(pl.plugins.CheckpointIO):\\n def save_checkpoint(self, checkpoint, path, storage_options=None):\\n MODEL.donut_processor.save_pretrained(path)\\n MODEL.encoder_decoder.save_pretrained(path)\\n\\n def load_checkpoint(self, path, storage_options=None):\\n pass\\n\\n def remove_checkpoint(self, path):\\n pass\";\n", + " var nbb_formatted_code = \"class MetricsCallback(pl.callbacks.Callback):\\n def on_validation_batch_start(\\n self, trainer, pl_module, batch: Batch, batch_idx, dataloader_idx=0\\n ):\\n predicted_strings = generate_token_strings(images=batch.images)\\n\\n for expected_data_index, predicted_string in zip(\\n batch.data_indices, predicted_strings, strict=True\\n ):\\n benetech_score = benetech_score_string_prediction(\\n expected_data_index=expected_data_index,\\n predicted_string=predicted_string,\\n )\\n wandb.log(dict(benetech_score=benetech_score))\\n\\n ground_truth_strings = [\\n get_annotation_ground_truth_str_from_image_index(i)\\n for i in batch.data_indices\\n ]\\n string_ids = [load_train_image_ids()[i] for i in batch.data_indices]\\n strings_dataframe = pd.DataFrame(\\n dict(\\n string_ids=string_ids,\\n ground_truth=ground_truth_strings,\\n predicted=predicted_strings,\\n )\\n )\\n wandb.log(dict(strings=wandb.Table(dataframe=strings_dataframe)))\\n\\n\\nclass TransformersCheckpointIO(pl.plugins.CheckpointIO):\\n def save_checkpoint(self, checkpoint, path, storage_options=None):\\n MODEL.donut_processor.save_pretrained(path)\\n MODEL.encoder_decoder.save_pretrained(path)\\n\\n def load_checkpoint(self, path, storage_options=None):\\n pass\\n\\n def remove_checkpoint(self, path):\\n pass\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -25722,115 +25293,142 @@ } ], "source": [ - "def generate_token_strings(images: torch.Tensor, skip_special_tokens=True) -> list[str]:\n", - " decoder_output = MODEL.encoder_decoder.generate(\n", - " images,\n", - " max_length=10 if DEBUG else CONFIG.encoder_decoder_config.decoder.max_length,\n", - " eos_token_id=MODEL.tokenizer.eos_token_id,\n", - " return_dict_in_generate=True,\n", - " )\n", - " return MODEL.tokenizer.batch_decode(\n", - " decoder_output.sequences, skip_special_tokens=skip_special_tokens\n", - " )" + "class MetricsCallback(pl.callbacks.Callback):\n", + " def on_validation_batch_start(\n", + " self, trainer, pl_module, batch: Batch, batch_idx, dataloader_idx=0\n", + " ):\n", + " predicted_strings = generate_token_strings(images=batch.images)\n", + "\n", + " for expected_data_index, predicted_string in zip(\n", + " batch.data_indices, predicted_strings, strict=True\n", + " ):\n", + " benetech_score = benetech_score_string_prediction(\n", + " expected_data_index=expected_data_index,\n", + " predicted_string=predicted_string,\n", + " )\n", + " wandb.log(dict(benetech_score=benetech_score))\n", + "\n", + " ground_truth_strings = [\n", + " get_annotation_ground_truth_str_from_image_index(i)\n", + " for i in batch.data_indices\n", + " ]\n", + " string_ids = [load_train_image_ids()[i] for i in batch.data_indices]\n", + " strings_dataframe = pd.DataFrame(\n", + " dict(\n", + " string_ids=string_ids,\n", + " ground_truth=ground_truth_strings,\n", + " predicted=predicted_strings,\n", + " )\n", + " )\n", + " wandb.log(dict(strings=wandb.Table(dataframe=strings_dataframe)))\n", + "\n", + "\n", + "class TransformersCheckpointIO(pl.plugins.CheckpointIO):\n", + " def save_checkpoint(self, checkpoint, path, storage_options=None):\n", + " MODEL.donut_processor.save_pretrained(path)\n", + " MODEL.encoder_decoder.save_pretrained(path)\n", + "\n", + " def load_checkpoint(self, path, storage_options=None):\n", + " pass\n", + "\n", + " def remove_checkpoint(self, path):\n", + " pass" ] }, { "cell_type": "markdown", - "id": "874a8e16", + "id": "7ef3f395", "metadata": {}, "source": [ "## Training " ] }, - { - "cell_type": "markdown", - "id": "b375ad12", - "metadata": {}, - "source": [ - "### Callbacks " - ] - }, { "cell_type": "code", - "execution_count": 315, - "id": "441e54bb", - "metadata": {}, + "execution_count": 49, + "id": "3d12b673", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T15:47:57.593057Z", + "start_time": "2023-04-18T15:47:53.160392Z" + } + }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33mdkoshman\u001b[0m. Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n" + ] + }, + { + "data": { + "text/html": [ + "Tracking run with wandb version 0.14.2" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Run data is saved locally in training/wandb/run-20230418_154756-56t9l4jj" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Syncing run young-forest-7 to Weights & Biases (docs)
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { - "application/javascript": [ - "\n", - " setTimeout(function() {\n", - " var nbb_cell_id = 315;\n", - " var nbb_unformatted_code = \"class MetricsCallback(pl.callbacks.Callback):\\n def on_validation_batch_start(\\n self, trainer, pl_module, batch: Batch, batch_idx, dataloader_idx=0\\n ):\\n annotated_images = [DATA.annotated_images[i] for i in batch.data_indices]\\n ground_truth_strings = [\\n get_annotation_ground_truth_str(ai.annotation) for ai in annotated_images\\n ]\\n predicted_strings = generate_token_strings(batch.images)\\n\\n strings_dataframe = pd.DataFrame(\\n dict(ground_truth=ground_truth_strings, predicted=predicted_strings)\\n )\\n wandb.log(dict(strings=wandb.Table(dataframe=strings_dataframe)))\\n\\n\\nclass TransformersCheckpointIO(pl.plugins.CheckpointIO):\\n def save_checkpoint(self, checkpoint, path, storage_options=None):\\n MODEL.donut_processor.save_pretrained(path)\\n MODEL.encoder_decoder.save_pretrained(path)\\n \\n def load_checkpoint(self, path, storage_options=None):\\n pass\\n\\n def remove_checkpoint(self, path):\\n pass\";\n", - " var nbb_formatted_code = \"class MetricsCallback(pl.callbacks.Callback):\\n def on_validation_batch_start(\\n self, trainer, pl_module, batch: Batch, batch_idx, dataloader_idx=0\\n ):\\n annotated_images = [DATA.annotated_images[i] for i in batch.data_indices]\\n ground_truth_strings = [\\n get_annotation_ground_truth_str(ai.annotation) for ai in annotated_images\\n ]\\n predicted_strings = generate_token_strings(batch.images)\\n\\n strings_dataframe = pd.DataFrame(\\n dict(ground_truth=ground_truth_strings, predicted=predicted_strings)\\n )\\n wandb.log(dict(strings=wandb.Table(dataframe=strings_dataframe)))\\n\\n\\nclass TransformersCheckpointIO(pl.plugins.CheckpointIO):\\n def save_checkpoint(self, checkpoint, path, storage_options=None):\\n MODEL.donut_processor.save_pretrained(path)\\n MODEL.encoder_decoder.save_pretrained(path)\\n\\n def load_checkpoint(self, path, storage_options=None):\\n pass\\n\\n def remove_checkpoint(self, path):\\n pass\";\n", - " var nbb_cells = Jupyter.notebook.get_cells();\n", - " for (var i = 0; i < nbb_cells.length; ++i) {\n", - " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", - " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", - " nbb_cells[i].set_text(nbb_formatted_code);\n", - " }\n", - " break;\n", - " }\n", - " }\n", - " }, 500);\n", - " " + "text/html": [ + " View project at https://wandb.ai/dkoshman/MakingGraphsAccessible" ], "text/plain": [ - "" + "" ] }, "metadata": {}, "output_type": "display_data" - } - ], - "source": [ - "class MetricsCallback(pl.callbacks.Callback):\n", - " def on_validation_batch_start(\n", - " self, trainer, pl_module, batch: Batch, batch_idx, dataloader_idx=0\n", - " ):\n", - " annotated_images = [DATA.annotated_images[i] for i in batch.data_indices]\n", - " ground_truth_strings = [\n", - " get_annotation_ground_truth_str(ai.annotation) for ai in annotated_images\n", - " ]\n", - " predicted_strings = generate_token_strings(batch.images)\n", - "\n", - " strings_dataframe = pd.DataFrame(\n", - " dict(ground_truth=ground_truth_strings, predicted=predicted_strings)\n", - " )\n", - " wandb.log(dict(strings=wandb.Table(dataframe=strings_dataframe)))\n", - "\n", - "\n", - "class TransformersCheckpointIO(pl.plugins.CheckpointIO):\n", - " def save_checkpoint(self, checkpoint, path, storage_options=None):\n", - " MODEL.donut_processor.save_pretrained(path)\n", - " MODEL.encoder_decoder.save_pretrained(path)\n", - "\n", - " def load_checkpoint(self, path, storage_options=None):\n", - " pass\n", - "\n", - " def remove_checkpoint(self, path):\n", - " pass" - ] - }, - { - "cell_type": "code", - "execution_count": 316, - "id": "3d12b673", - "metadata": {}, - "outputs": [ + }, + { + "data": { + "text/html": [ + " View run at https://wandb.ai/dkoshman/MakingGraphsAccessible/runs/56t9l4jj" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stderr", "output_type": "stream", "text": [ - "/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/loggers/wandb.py:395: UserWarning: There is a wandb run already in progress and newly created instances of `WandbLogger` will reuse this run. If this is not desired, call `wandb.finish()` before instantiating `WandbLogger`.\n", - " rank_zero_warn(\n", - "GPU available: True (cuda), used: False\n", + "GPU available: True (cuda), used: True\n", "TPU available: False, using: 0 TPU cores\n", "IPU available: False, using: 0 IPUs\n", - "HPU available: False, using: 0 HPUs\n", - "/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/trainer/setup.py:176: PossibleUserWarning: GPU available but not used. Set `accelerator` and `devices` using `Trainer(accelerator='gpu', devices=6)`.\n", - " rank_zero_warn(\n" + "HPU available: False, using: 0 HPUs\n" ] }, { @@ -25838,9 +25436,9 @@ "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 316;\n", - " var nbb_unformatted_code = \"TRAINING.accelerator = \\\"cpu\\\" if DEBUG else \\\"gpu\\\"\\nTRAINING.devices = \\\"auto\\\" if TRAINING.accelerator == \\\"cpu\\\" else [5]\\nTRAINING.directory = \\\"training\\\"\\nTRAINING.save_top_k_checkpoints = 3\\nTRAINING.wandb_project_name = \\\"MakingGraphsAccessible\\\"\\nTRAINING.limit_train_batches = 2 if DEBUG else None\\nTRAINING.limit_val_batches = 2 if DEBUG else 0.1\\n\\nTRAINING.model_checkpoint = pl.callbacks.ModelCheckpoint(\\n dirpath=TRAINING.directory,\\n monitor=\\\"val_loss\\\",\\n save_top_k=TRAINING.save_top_k_checkpoints,\\n)\\n\\nTRAINING.logger = pl.loggers.WandbLogger(\\n project=TRAINING.wandb_project_name, save_dir=TRAINING.directory\\n)\\n\\nTRAINING.trainer = pl.Trainer(\\n accelerator=TRAINING.accelerator,\\n devices=TRAINING.devices,\\n plugins=[TransformersCheckpointIO()],\\n callbacks=[TRAINING.model_checkpoint, MetricsCallback()],\\n logger=TRAINING.logger,\\n limit_train_batches=TRAINING.limit_train_batches,\\n limit_val_batches=TRAINING.limit_val_batches,\\n)\";\n", - " var nbb_formatted_code = \"TRAINING.accelerator = \\\"cpu\\\" if DEBUG else \\\"gpu\\\"\\nTRAINING.devices = \\\"auto\\\" if TRAINING.accelerator == \\\"cpu\\\" else [5]\\nTRAINING.directory = \\\"training\\\"\\nTRAINING.save_top_k_checkpoints = 3\\nTRAINING.wandb_project_name = \\\"MakingGraphsAccessible\\\"\\nTRAINING.limit_train_batches = 2 if DEBUG else None\\nTRAINING.limit_val_batches = 2 if DEBUG else 0.1\\n\\nTRAINING.model_checkpoint = pl.callbacks.ModelCheckpoint(\\n dirpath=TRAINING.directory,\\n monitor=\\\"val_loss\\\",\\n save_top_k=TRAINING.save_top_k_checkpoints,\\n)\\n\\nTRAINING.logger = pl.loggers.WandbLogger(\\n project=TRAINING.wandb_project_name, save_dir=TRAINING.directory\\n)\\n\\nTRAINING.trainer = pl.Trainer(\\n accelerator=TRAINING.accelerator,\\n devices=TRAINING.devices,\\n plugins=[TransformersCheckpointIO()],\\n callbacks=[TRAINING.model_checkpoint, MetricsCallback()],\\n logger=TRAINING.logger,\\n limit_train_batches=TRAINING.limit_train_batches,\\n limit_val_batches=TRAINING.limit_val_batches,\\n)\";\n", + " var nbb_cell_id = 49;\n", + " var nbb_unformatted_code = \"TRAINING.accelerator = \\\"cpu\\\" if DEBUG else \\\"gpu\\\"\\nTRAINING.devices = \\\"auto\\\" if TRAINING.accelerator == \\\"cpu\\\" else [3]\\nTRAINING.directory = \\\"training\\\"\\nTRAINING.save_top_k_checkpoints = 3\\nTRAINING.wandb_project_name = \\\"MakingGraphsAccessible\\\"\\nTRAINING.limit_train_batches = 2 if DEBUG else None\\nTRAINING.limit_val_batches = 2 if DEBUG else 0.1\\n\\nTRAINING.model_checkpoint = pl.callbacks.ModelCheckpoint(\\n dirpath=TRAINING.directory,\\n monitor=\\\"val_loss\\\",\\n save_top_k=TRAINING.save_top_k_checkpoints,\\n)\\n\\nTRAINING.logger = pl.loggers.WandbLogger(\\n project=TRAINING.wandb_project_name, save_dir=TRAINING.directory\\n)\\n\\nTRAINING.trainer = pl.Trainer(\\n accelerator=TRAINING.accelerator,\\n devices=TRAINING.devices,\\n plugins=[TransformersCheckpointIO()],\\n callbacks=[TRAINING.model_checkpoint, MetricsCallback()],\\n logger=TRAINING.logger,\\n limit_train_batches=TRAINING.limit_train_batches,\\n limit_val_batches=TRAINING.limit_val_batches,\\n)\";\n", + " var nbb_formatted_code = \"TRAINING.accelerator = \\\"cpu\\\" if DEBUG else \\\"gpu\\\"\\nTRAINING.devices = \\\"auto\\\" if TRAINING.accelerator == \\\"cpu\\\" else [3]\\nTRAINING.directory = \\\"training\\\"\\nTRAINING.save_top_k_checkpoints = 3\\nTRAINING.wandb_project_name = \\\"MakingGraphsAccessible\\\"\\nTRAINING.limit_train_batches = 2 if DEBUG else None\\nTRAINING.limit_val_batches = 2 if DEBUG else 0.1\\n\\nTRAINING.model_checkpoint = pl.callbacks.ModelCheckpoint(\\n dirpath=TRAINING.directory,\\n monitor=\\\"val_loss\\\",\\n save_top_k=TRAINING.save_top_k_checkpoints,\\n)\\n\\nTRAINING.logger = pl.loggers.WandbLogger(\\n project=TRAINING.wandb_project_name, save_dir=TRAINING.directory\\n)\\n\\nTRAINING.trainer = pl.Trainer(\\n accelerator=TRAINING.accelerator,\\n devices=TRAINING.devices,\\n plugins=[TransformersCheckpointIO()],\\n callbacks=[TRAINING.model_checkpoint, MetricsCallback()],\\n logger=TRAINING.logger,\\n limit_train_batches=TRAINING.limit_train_batches,\\n limit_val_batches=TRAINING.limit_val_batches,\\n)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -25863,7 +25461,7 @@ ], "source": [ "TRAINING.accelerator = \"cpu\" if DEBUG else \"gpu\"\n", - "TRAINING.devices = \"auto\" if TRAINING.accelerator == \"cpu\" else [5]\n", + "TRAINING.devices = \"auto\" if TRAINING.accelerator == \"cpu\" else [3]\n", "TRAINING.directory = \"training\"\n", "TRAINING.save_top_k_checkpoints = 3\n", "TRAINING.wandb_project_name = \"MakingGraphsAccessible\"\n", @@ -25893,9 +25491,15 @@ }, { "cell_type": "code", - "execution_count": 317, + "execution_count": 50, "id": "5c883d58", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T19:50:57.849222Z", + "start_time": "2023-04-18T15:47:57.598224Z" + }, + "collapsed": true + }, "outputs": [ { "name": "stderr", @@ -25903,8 +25507,10 @@ "text": [ "/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/loops/utilities.py:70: PossibleUserWarning: `max_epochs` was not set. Setting it to 1000 epochs. To train without an epoch limit, set `max_epochs=-1`.\n", " rank_zero_warn(\n", + "You are using a CUDA device ('NVIDIA GeForce RTX 3060') that has Tensor Cores. To properly utilize them, you should set `torch.set_float32_matmul_precision('medium' | 'high')` which will trade-off precision for performance. For more details, read https://pytorch.org/docs/stable/generated/torch.set_float32_matmul_precision.html#torch.set_float32_matmul_precision\n", "/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py:612: UserWarning: Checkpoint directory /home/dkkoshman/YSDA/machine_learning/transformers/MakingGraphsAccessible/training exists and is not empty.\n", " rank_zero_warn(f\"Checkpoint directory {dirpath} exists and is not empty.\")\n", + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1,2,3,4,5]\n", "\n", " | Name | Type | Params\n", "----------------------------------------------------\n", @@ -25913,7 +25519,7 @@ "201 M Trainable params\n", "0 Non-trainable params\n", "201 M Total params\n", - "807.461 Total estimated model params size (MB)\n" + "807.457 Total estimated model params size (MB)\n" ] }, { @@ -25934,16 +25540,16 @@ "name": "stderr", "output_type": "stream", "text": [ + "/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/transformers/generation/utils.py:1186: UserWarning: You have modified the pretrained model configuration to control generation. This is a deprecated strategy to control generation and will be removed soon, in a future version. Please use a generation configuration file (see https://huggingface.co/docs/transformers/main_classes/text_generation)\n", + " warnings.warn(\n", "/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/utilities/data.py:77: UserWarning: Trying to infer the `batch_size` from an ambiguous collection. The batch size we found is 2. To avoid any miscalculations, use `self.log(..., batch_size=batch_size)`.\n", - " warning_cache.warn(\n", - "/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/loops/fit_loop.py:280: PossibleUserWarning: The number of training batches (2) is smaller than the logging interval Trainer(log_every_n_steps=50). Set a lower value for log_every_n_steps if you want to see logs for the training epoch.\n", - " rank_zero_warn(\n" + " warning_cache.warn(\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "998bc66bc47b4576b9d78ced2aba32f0", + "model_id": "12adc4c9f9eb4cd095ac4dce87c500ae", "version_major": 2, "version_minor": 0 }, @@ -25957,35 +25563,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Validation: 0it [00:00, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Validation: 0it [00:00, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "", + "model_id": "9bf5111de98f4c3893eb5ac0597331e7", "version_major": 2, "version_minor": 0 }, @@ -25997,11 +25575,32 @@ "output_type": "display_data" }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/trainer/call.py:54: UserWarning: Detected KeyboardInterrupt, attempting graceful shutdown...\n", - " rank_zero_warn(\"Detected KeyboardInterrupt, attempting graceful shutdown...\")\n" + "ename": "ValueError", + "evalue": "could not convert string to float: ' 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[50], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mTRAINING\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrainer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mMODEL\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlightning_module\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrain_dataloaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mDATA\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrain_dataloader\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[43m \u001b[49m\u001b[43mval_dataloaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mDATA\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mval_dataloader\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 5\u001b[0m \u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/trainer/trainer.py:520\u001b[0m, in \u001b[0;36mTrainer.fit\u001b[0;34m(self, model, train_dataloaders, val_dataloaders, datamodule, ckpt_path)\u001b[0m\n\u001b[1;32m 518\u001b[0m model \u001b[38;5;241m=\u001b[39m _maybe_unwrap_optimized(model)\n\u001b[1;32m 519\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstrategy\u001b[38;5;241m.\u001b[39m_lightning_module \u001b[38;5;241m=\u001b[39m model\n\u001b[0;32m--> 520\u001b[0m \u001b[43mcall\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_and_handle_interrupt\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 521\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_fit_impl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtrain_dataloaders\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mval_dataloaders\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdatamodule\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mckpt_path\u001b[49m\n\u001b[1;32m 522\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/trainer/call.py:44\u001b[0m, in \u001b[0;36m_call_and_handle_interrupt\u001b[0;34m(trainer, trainer_fn, *args, **kwargs)\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m trainer\u001b[38;5;241m.\u001b[39mstrategy\u001b[38;5;241m.\u001b[39mlauncher\u001b[38;5;241m.\u001b[39mlaunch(trainer_fn, \u001b[38;5;241m*\u001b[39margs, trainer\u001b[38;5;241m=\u001b[39mtrainer, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m---> 44\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mtrainer_fn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 46\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m _TunerExitException:\n\u001b[1;32m 47\u001b[0m _call_teardown_hook(trainer)\n", + "File \u001b[0;32m~/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/trainer/trainer.py:559\u001b[0m, in \u001b[0;36mTrainer._fit_impl\u001b[0;34m(self, model, train_dataloaders, val_dataloaders, datamodule, ckpt_path)\u001b[0m\n\u001b[1;32m 549\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data_connector\u001b[38;5;241m.\u001b[39mattach_data(\n\u001b[1;32m 550\u001b[0m model, train_dataloaders\u001b[38;5;241m=\u001b[39mtrain_dataloaders, val_dataloaders\u001b[38;5;241m=\u001b[39mval_dataloaders, datamodule\u001b[38;5;241m=\u001b[39mdatamodule\n\u001b[1;32m 551\u001b[0m )\n\u001b[1;32m 553\u001b[0m ckpt_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_checkpoint_connector\u001b[38;5;241m.\u001b[39m_select_ckpt_path(\n\u001b[1;32m 554\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate\u001b[38;5;241m.\u001b[39mfn,\n\u001b[1;32m 555\u001b[0m ckpt_path,\n\u001b[1;32m 556\u001b[0m model_provided\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 557\u001b[0m model_connected\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlightning_module \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 558\u001b[0m )\n\u001b[0;32m--> 559\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mckpt_path\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mckpt_path\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 561\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate\u001b[38;5;241m.\u001b[39mstopped\n\u001b[1;32m 562\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtraining \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n", + "File \u001b[0;32m~/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/trainer/trainer.py:935\u001b[0m, in \u001b[0;36mTrainer._run\u001b[0;34m(self, model, ckpt_path)\u001b[0m\n\u001b[1;32m 930\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_signal_connector\u001b[38;5;241m.\u001b[39mregister_signal_handlers()\n\u001b[1;32m 932\u001b[0m \u001b[38;5;66;03m# ----------------------------\u001b[39;00m\n\u001b[1;32m 933\u001b[0m \u001b[38;5;66;03m# RUN THE TRAINER\u001b[39;00m\n\u001b[1;32m 934\u001b[0m \u001b[38;5;66;03m# ----------------------------\u001b[39;00m\n\u001b[0;32m--> 935\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run_stage\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 937\u001b[0m \u001b[38;5;66;03m# ----------------------------\u001b[39;00m\n\u001b[1;32m 938\u001b[0m \u001b[38;5;66;03m# POST-Training CLEAN UP\u001b[39;00m\n\u001b[1;32m 939\u001b[0m \u001b[38;5;66;03m# ----------------------------\u001b[39;00m\n\u001b[1;32m 940\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m: trainer tearing down\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/trainer/trainer.py:978\u001b[0m, in \u001b[0;36mTrainer._run_stage\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 976\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_run_sanity_check()\n\u001b[1;32m 977\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m torch\u001b[38;5;241m.\u001b[39mautograd\u001b[38;5;241m.\u001b[39mset_detect_anomaly(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_detect_anomaly):\n\u001b[0;32m--> 978\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit_loop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 979\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 980\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mUnexpected state \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/loops/fit_loop.py:201\u001b[0m, in \u001b[0;36m_FitLoop.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 199\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 200\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mon_advance_start()\n\u001b[0;32m--> 201\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43madvance\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 202\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mon_advance_end()\n\u001b[1;32m 203\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_restarting \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n", + "File \u001b[0;32m~/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/loops/fit_loop.py:354\u001b[0m, in \u001b[0;36m_FitLoop.advance\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 352\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data_fetcher\u001b[38;5;241m.\u001b[39msetup(combined_loader)\n\u001b[1;32m 353\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtrainer\u001b[38;5;241m.\u001b[39mprofiler\u001b[38;5;241m.\u001b[39mprofile(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_training_epoch\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[0;32m--> 354\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mepoch_loop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_data_fetcher\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/loops/training_epoch_loop.py:134\u001b[0m, in \u001b[0;36m_TrainingEpochLoop.run\u001b[0;34m(self, data_fetcher)\u001b[0m\n\u001b[1;32m 132\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 133\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39madvance(data_fetcher)\n\u001b[0;32m--> 134\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mon_advance_end\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 135\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_restarting \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m:\n", + "File \u001b[0;32m~/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/loops/training_epoch_loop.py:248\u001b[0m, in \u001b[0;36m_TrainingEpochLoop.on_advance_end\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 246\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m should_check_val:\n\u001b[1;32m 247\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtrainer\u001b[38;5;241m.\u001b[39mvalidating \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 248\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mval_loop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 249\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtrainer\u001b[38;5;241m.\u001b[39mtraining \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 251\u001b[0m \u001b[38;5;66;03m# update plateau LR scheduler after metrics are logged\u001b[39;00m\n", + "File \u001b[0;32m~/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/loops/utilities.py:174\u001b[0m, in \u001b[0;36m_no_grad_context.._decorator\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 172\u001b[0m context_manager \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mno_grad\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m context_manager():\n\u001b[0;32m--> 174\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mloop_run\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/loops/evaluation_loop.py:115\u001b[0m, in \u001b[0;36m_EvaluationLoop.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 113\u001b[0m previous_dataloader_idx \u001b[38;5;241m=\u001b[39m dataloader_idx\n\u001b[1;32m 114\u001b[0m \u001b[38;5;66;03m# run step hooks\u001b[39;00m\n\u001b[0;32m--> 115\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_evaluation_step\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbatch\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbatch_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdataloader_idx\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 116\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m:\n\u001b[1;32m 117\u001b[0m \u001b[38;5;66;03m# this needs to wrap the `*_step` call too (not just `next`) for `dataloader_iter` support\u001b[39;00m\n\u001b[1;32m 118\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "File \u001b[0;32m~/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/loops/evaluation_loop.py:369\u001b[0m, in \u001b[0;36m_EvaluationLoop._evaluation_step\u001b[0;34m(self, batch, batch_idx, dataloader_idx)\u001b[0m\n\u001b[1;32m 366\u001b[0m trainer\u001b[38;5;241m.\u001b[39m_logger_connector\u001b[38;5;241m.\u001b[39mon_batch_start(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mstep_kwargs)\n\u001b[1;32m 368\u001b[0m hook_name \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mon_test_batch_start\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m trainer\u001b[38;5;241m.\u001b[39mtesting \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mon_validation_batch_start\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m--> 369\u001b[0m \u001b[43mcall\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_callback_hooks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtrainer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhook_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mstep_kwargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalues\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 370\u001b[0m call\u001b[38;5;241m.\u001b[39m_call_lightning_module_hook(trainer, hook_name, \u001b[38;5;241m*\u001b[39mstep_kwargs\u001b[38;5;241m.\u001b[39mvalues())\n\u001b[1;32m 372\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbatch_progress\u001b[38;5;241m.\u001b[39mincrement_started()\n", + "File \u001b[0;32m~/YSDA/python3.10/lib/python3.10/site-packages/pytorch_lightning/trainer/call.py:190\u001b[0m, in \u001b[0;36m_call_callback_hooks\u001b[0;34m(trainer, hook_name, monitoring_callbacks, *args, **kwargs)\u001b[0m\n\u001b[1;32m 188\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m callable(fn):\n\u001b[1;32m 189\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m trainer\u001b[38;5;241m.\u001b[39mprofiler\u001b[38;5;241m.\u001b[39mprofile(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m[Callback]\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mcallback\u001b[38;5;241m.\u001b[39mstate_key\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mhook_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m):\n\u001b[0;32m--> 190\u001b[0m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtrainer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtrainer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlightning_module\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 192\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m pl_module:\n\u001b[1;32m 193\u001b[0m \u001b[38;5;66;03m# restore current_fx when nested context\u001b[39;00m\n\u001b[1;32m 194\u001b[0m pl_module\u001b[38;5;241m.\u001b[39m_current_fx_name \u001b[38;5;241m=\u001b[39m prev_fx_name\n", + "Cell \u001b[0;32mIn[48], line 10\u001b[0m, in \u001b[0;36mMetricsCallback.on_validation_batch_start\u001b[0;34m(self, trainer, pl_module, batch, batch_idx, dataloader_idx)\u001b[0m\n\u001b[1;32m 5\u001b[0m predicted_strings \u001b[38;5;241m=\u001b[39m generate_token_strings(images\u001b[38;5;241m=\u001b[39mbatch\u001b[38;5;241m.\u001b[39mimages)\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m expected_data_index, predicted_string \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(\n\u001b[1;32m 8\u001b[0m batch\u001b[38;5;241m.\u001b[39mdata_indices, predicted_strings, strict\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 9\u001b[0m ):\n\u001b[0;32m---> 10\u001b[0m benetech_score \u001b[38;5;241m=\u001b[39m \u001b[43mbenetech_score_string_prediction\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 11\u001b[0m \u001b[43m \u001b[49m\u001b[43mexpected_data_index\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mexpected_data_index\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 12\u001b[0m \u001b[43m \u001b[49m\u001b[43mpredicted_string\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpredicted_string\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 14\u001b[0m wandb\u001b[38;5;241m.\u001b[39mlog(\u001b[38;5;28mdict\u001b[39m(benetech_score\u001b[38;5;241m=\u001b[39mbenetech_score))\n\u001b[1;32m 16\u001b[0m ground_truth_strings \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 17\u001b[0m get_annotation_ground_truth_str_from_image_index(i)\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m batch\u001b[38;5;241m.\u001b[39mdata_indices\n\u001b[1;32m 19\u001b[0m ]\n", + "Cell \u001b[0;32mIn[30], line 46\u001b[0m, in \u001b[0;36mbenetech_score_string_prediction\u001b[0;34m(expected_data_index, predicted_string)\u001b[0m\n\u001b[1;32m 44\u001b[0m expected_annotation \u001b[38;5;241m=\u001b[39m Annotation\u001b[38;5;241m.\u001b[39mfrom_image_index(expected_data_index)\n\u001b[1;32m 45\u001b[0m expected_output \u001b[38;5;241m=\u001b[39m BenetechOutput\u001b[38;5;241m.\u001b[39mfrom_annotation(expected_annotation)\n\u001b[0;32m---> 46\u001b[0m predicted_output \u001b[38;5;241m=\u001b[39m \u001b[43mBenetechOutput\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_string\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpredicted_string\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m benetech_score(expected_output, predicted_output)\n", + "Cell \u001b[0;32mIn[28], line 78\u001b[0m, in \u001b[0;36mBenetechOutput.from_string\u001b[0;34m(string)\u001b[0m\n\u001b[1;32m 74\u001b[0m benetech_kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124my_values_type\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m ValuesType(benetech_kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124my_values_type\u001b[39m\u001b[38;5;124m\"\u001b[39m])\n\u001b[1;32m 75\u001b[0m benetech_kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mx_data\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m convert_string_to_axis_data(\n\u001b[1;32m 76\u001b[0m benetech_kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mx_data\u001b[39m\u001b[38;5;124m\"\u001b[39m], benetech_kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mx_values_type\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 77\u001b[0m )\n\u001b[0;32m---> 78\u001b[0m benetech_kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124my_data\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[43mconvert_string_to_axis_data\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 79\u001b[0m \u001b[43m \u001b[49m\u001b[43mbenetech_kwargs\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43my_data\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbenetech_kwargs\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43my_values_type\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[1;32m 80\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 81\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m BenetechOutput(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mbenetech_kwargs)\n", + "Cell \u001b[0;32mIn[26], line 22\u001b[0m, in \u001b[0;36mconvert_string_to_axis_data\u001b[0;34m(string, values_type)\u001b[0m\n\u001b[1;32m 20\u001b[0m data \u001b[38;5;241m=\u001b[39m string\u001b[38;5;241m.\u001b[39msplit(TOKEN\u001b[38;5;241m.\u001b[39mvalue_separator)\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m values_type \u001b[38;5;241m==\u001b[39m ValuesType\u001b[38;5;241m.\u001b[39mnumerical:\n\u001b[0;32m---> 22\u001b[0m data \u001b[38;5;241m=\u001b[39m [\u001b[38;5;28mfloat\u001b[39m(i) \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m data]\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m data\n", + "Cell \u001b[0;32mIn[26], line 22\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 20\u001b[0m data \u001b[38;5;241m=\u001b[39m string\u001b[38;5;241m.\u001b[39msplit(TOKEN\u001b[38;5;241m.\u001b[39mvalue_separator)\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m values_type \u001b[38;5;241m==\u001b[39m ValuesType\u001b[38;5;241m.\u001b[39mnumerical:\n\u001b[0;32m---> 22\u001b[0m data \u001b[38;5;241m=\u001b[39m [\u001b[38;5;28;43mfloat\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mi\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m data]\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m data\n", + "\u001b[0;31mValueError\u001b[0m: could not convert string to float: ' 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01 3.44975e-01'" ] }, { @@ -26009,7 +25608,7 @@ "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 317;\n", + " var nbb_cell_id = 50;\n", " var nbb_unformatted_code = \"TRAINING.trainer.fit(\\n model=MODEL.lightning_module,\\n train_dataloaders=DATA.train_dataloader,\\n val_dataloaders=DATA.val_dataloader,\\n)\";\n", " var nbb_formatted_code = \"TRAINING.trainer.fit(\\n model=MODEL.lightning_module,\\n train_dataloaders=DATA.train_dataloader,\\n val_dataloaders=DATA.val_dataloader,\\n)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", @@ -26044,7 +25643,12 @@ "cell_type": "code", "execution_count": null, "id": "32541868", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T19:50:57.857936Z", + "start_time": "2023-04-18T19:50:57.857925Z" + } + }, "outputs": [], "source": [ "TRAINING.trainer.validate(model=MODEL.lightning_module, dataloaders=DATA.val_dataloader)" @@ -26060,123 +25664,83 @@ }, { "cell_type": "markdown", - "id": "286e7d23", + "id": "509c9eae", "metadata": {}, "source": [ - "### Predicting " + "### Gradio interface " ] }, { "cell_type": "code", - "execution_count": 292, - "id": "e073230c", - "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "\n", - " setTimeout(function() {\n", - " var nbb_cell_id = 292;\n", - " var nbb_unformatted_code = \"def predict_string(image) -> str:\\n image = MODEL.donut_processor(\\n image, random_padding=False, return_tensors=\\\"pt\\\"\\n ).pixel_values\\n string = generate_token_strings(image)[0]\\n return string\\n\\n\\ndef predict_benetech_output(image):\\n string = predict_string(image)\\n assert BenetechOutput.does_string_match_expected_pattern(string)\\n return BenetechOutput.from_string(string)\";\n", - " var nbb_formatted_code = \"def predict_string(image) -> str:\\n image = MODEL.donut_processor(\\n image, random_padding=False, return_tensors=\\\"pt\\\"\\n ).pixel_values\\n string = generate_token_strings(image)[0]\\n return string\\n\\n\\ndef predict_benetech_output(image):\\n string = predict_string(image)\\n assert BenetechOutput.does_string_match_expected_pattern(string)\\n return BenetechOutput.from_string(string)\";\n", - " var nbb_cells = Jupyter.notebook.get_cells();\n", - " for (var i = 0; i < nbb_cells.length; ++i) {\n", - " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", - " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", - " nbb_cells[i].set_text(nbb_formatted_code);\n", - " }\n", - " break;\n", - " }\n", - " }\n", - " }, 500);\n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" + "execution_count": null, + "id": "2b569259", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T19:50:57.859236Z", + "start_time": "2023-04-18T19:50:57.859226Z" } - ], + }, + "outputs": [], "source": [ - "def predict_string(image) -> str:\n", - " image = MODEL.donut_processor(\n", - " image, random_padding=False, return_tensors=\"pt\"\n", - " ).pixel_values\n", - " string = generate_token_strings(image)[0]\n", - " return string\n", - "\n", - "\n", - "def predict_benetech_output(image):\n", - " string = predict_string(image)\n", - " assert BenetechOutput.does_string_match_expected_pattern(string)\n", - " return BenetechOutput.from_string(string)" + "checkpoint_path = \"training/epoch=0-step=2-v1.ckpt\"\n", + "MODEL.donut_processor = MODEL.donut_processor.from_pretrained(checkpoint_path)\n", + "MODEL.encoder_decoder = MODEL.encoder_decoder.from_pretrained(checkpoint_path)" ] }, { - "cell_type": "markdown", - "id": "509c9eae", - "metadata": {}, + "cell_type": "code", + "execution_count": null, + "id": "6eeea089", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T19:50:57.860310Z", + "start_time": "2023-04-18T19:50:57.860301Z" + } + }, + "outputs": [], "source": [ - "### Interface " + "interface = gradio.Interface(\n", + " fn=predict_string,\n", + " inputs=gradio.Image(type=\"pil\"),\n", + " outputs=gradio.Text(),\n", + " examples=\"examples\",\n", + ")" ] }, { "cell_type": "code", - "execution_count": 324, - "id": "2b569259", - "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "\n", - " setTimeout(function() {\n", - " var nbb_cell_id = 324;\n", - " var nbb_unformatted_code = \"checkpoint_path = \\\"training/epoch=0-step=2-v1.ckpt\\\"\\nMODEL.donut_processor = MODEL.donut_processor.from_pretrained(checkpoint_path)\\nMODEL.encoder_decoder = MODEL.encoder_decoder.from_pretrained(checkpoint_path)\";\n", - " var nbb_formatted_code = \"checkpoint_path = \\\"training/epoch=0-step=2-v1.ckpt\\\"\\nMODEL.donut_processor = MODEL.donut_processor.from_pretrained(checkpoint_path)\\nMODEL.encoder_decoder = MODEL.encoder_decoder.from_pretrained(checkpoint_path)\";\n", - " var nbb_cells = Jupyter.notebook.get_cells();\n", - " for (var i = 0; i < nbb_cells.length; ++i) {\n", - " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", - " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", - " nbb_cells[i].set_text(nbb_formatted_code);\n", - " }\n", - " break;\n", - " }\n", - " }\n", - " }, 500);\n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" + "execution_count": null, + "id": "39d1e3d8", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-18T19:50:57.861631Z", + "start_time": "2023-04-18T19:50:57.861618Z" } - ], + }, + "outputs": [], "source": [ - "checkpoint_path = \"training/epoch=0-step=2-v1.ckpt\"\n", - "MODEL.donut_processor = MODEL.donut_processor.from_pretrained(checkpoint_path)\n", - "MODEL.encoder_decoder = MODEL.encoder_decoder.from_pretrained(checkpoint_path)" + "interface.launch(share=True)" ] }, { "cell_type": "code", - "execution_count": 325, - "id": "6eeea089", - "metadata": {}, + "execution_count": 4, + "id": "80124073", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-27T13:03:57.218129Z", + "start_time": "2023-04-27T13:03:57.048661Z" + } + }, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 325;\n", - " var nbb_unformatted_code = \"interface = gradio.Interface(\\n fn=predict_string,\\n inputs=gradio.Image(type=\\\"pil\\\"),\\n outputs=gradio.Text(),\\n examples=\\\"examples\\\",\\n)\";\n", - " var nbb_formatted_code = \"interface = gradio.Interface(\\n fn=predict_string,\\n inputs=gradio.Image(type=\\\"pil\\\"),\\n outputs=gradio.Text(),\\n examples=\\\"examples\\\",\\n)\";\n", + " var nbb_cell_id = 4;\n", + " var nbb_unformatted_code = \"import functools\\n\\nimport gradio\\n\\nfrom config import CONFIG\\nfrom model import (\\n predict_string,\\n build_model,\\n)\";\n", + " var nbb_formatted_code = \"import functools\\n\\nimport gradio\\n\\nfrom config import CONFIG\\nfrom model import (\\n predict_string,\\n build_model,\\n)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -26198,58 +25762,43 @@ } ], "source": [ - "interface = gradio.Interface(\n", - " fn=predict_string,\n", - " inputs=gradio.Image(type=\"pil\"),\n", - " outputs=gradio.Text(),\n", - " examples=\"examples\",\n", + "import functools\n", + "\n", + "import gradio\n", + "\n", + "from config import CONFIG\n", + "from model import (\n", + " predict_string,\n", + " build_model,\n", ")" ] }, { "cell_type": "code", - "execution_count": 326, - "id": "39d1e3d8", - "metadata": {}, + "execution_count": 5, + "id": "575edbbe", + "metadata": { + "ExecuteTime": { + "end_time": "2023-04-27T13:04:07.359118Z", + "start_time": "2023-04-27T13:03:58.074214Z" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Running on local URL: http://127.0.0.1:7861\n", - "Running on public URL: https://aaee610c568b59982a.gradio.live\n", - "\n", - "This share link expires in 72 hours. For free permanent hosting and GPU upgrades (NEW!), check out Spaces: https://huggingface.co/spaces\n" + "Reusing object data/unknown_tokens_for_tokenizer.pickle.\n" ] }, - { - "data": { - "text/html": [ - "
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [] - }, - "execution_count": 326, - "metadata": {}, - "output_type": "execute_result" - }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", - " var nbb_cell_id = 326;\n", - " var nbb_unformatted_code = \"interface.launch(share=True)\";\n", - " var nbb_formatted_code = \"interface.launch(share=True)\";\n", + " var nbb_cell_id = 5;\n", + " var nbb_unformatted_code = \"config = CONFIG\\nconfig.pretrained_model_name = \\\"training/epoch=2-step=163563.ckpt/\\\"\\nmodel = build_model(config)\";\n", + " var nbb_formatted_code = \"config = CONFIG\\nconfig.pretrained_model_name = \\\"training/epoch=2-step=163563.ckpt/\\\"\\nmodel = build_model(config)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", @@ -26268,43 +25817,13 @@ }, "metadata": {}, "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Traceback (most recent call last):\n", - " File \"/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/gradio/routes.py\", line 401, in run_predict\n", - " output = await app.get_blocks().process_api(\n", - " File \"/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/gradio/blocks.py\", line 1302, in process_api\n", - " result = await self.call_function(\n", - " File \"/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/gradio/blocks.py\", line 1025, in call_function\n", - " prediction = await anyio.to_thread.run_sync(\n", - " File \"/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/anyio/to_thread.py\", line 31, in run_sync\n", - " return await get_asynclib().run_sync_in_worker_thread(\n", - " File \"/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/anyio/_backends/_asyncio.py\", line 937, in run_sync_in_worker_thread\n", - " return await future\n", - " File \"/home/dkkoshman/YSDA/python3.10/lib/python3.10/site-packages/anyio/_backends/_asyncio.py\", line 867, in run\n", - " result = context.run(func, *args)\n", - " File \"/tmp/ipykernel_3467358/2235758188.py\", line 5, in predict_string\n", - " string = generate_token_strings(image)[0]\n", - " File \"/tmp/ipykernel_3467358/2881104263.py\", line 2, in generate_token_strings\n", - " decoder_output = MODEL.encoder_decoder.generate(\n", - "AttributeError: 'DonutProcessor' object has no attribute 'generate'\n" - ] } ], "source": [ - "interface.launch(share=True)" + "config = CONFIG\n", + "config.pretrained_model_name = \"training/epoch=2-step=163563.ckpt/\"\n", + "model = build_model(config)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3b156ea1", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": {